private int PSoC4_IsChipNotProtected()
        {
            int    hr;
            string m_sLastError;

            //object flashProt, chipProt;
            byte[] flashProt, chipProt;
            byte[] data;

            //Chip Level Protection reliably can be read by below API (available in VIRGIN, OPEN, PROTECTED modes)
            //This API uses SROM call - to read current status of CPUSS_PROTECTION register (privileged)
            //This register contains current protection mode loaded from SFLASH during boot-up.
            hr = Programmer.PSoC4_ReadProtection(out flashProt, out chipProt, out m_sLastError);
            if (!IsSuccess(hr))
            {
                return(E_FAIL);                //consider chip as protected if any communication failure
            }
            data = chipProt as byte[];
            //Check Result
            if ((data[0] & CHIP_PROT_PROTECTED) == CHIP_PROT_PROTECTED)
            {
                m_sLastError = "Chip is in PROTECTED mode. Any access to Flash is suppressed.";
                Log.PrintLog(this, m_sLastError, LogDetailLevel.LogRelevant);
                return(E_FAIL);
            }

            return(S_OK);
        }