Пример #1
0
        private void DoCoreInit()
        {
            CoreInitCommand  cmd  = new CoreInitCommand(PacketBoundryFlagEnum.CompleteMessageOrLastSegment);
            CoreInitResponse resp = new CoreInitResponse(PacketBoundryFlagEnum.CompleteMessageOrLastSegment);

            SendCommand(cmd, resp);
            if (resp.Status != ReponseCode.STATUS_OK)
            {
                throw new Exception("CoreInitResponse returned error:" + resp.Status);
            }
        }
Пример #2
0
        private void NCICoreConfig()
        {
#if NXP_CORE_CONF
            if (NxpNci_CORE_CONF.Length != 0)
            {
                NxpNci_HostTransceive(NxpNci_CORE_CONF, ref Answer, ref AnswerSize);
                if ((Answer[0] != 0x40) || (Answer[1] != 0x02) || (Answer[3] != 0x00) || (Answer[4] != 0x00))
                {
                    return(NXPNCI_ERROR);
                }
            }
#endif

#if NXP_CORE_CONF_EXTN
            if (NxpNci_CORE_CONF_EXTN.Length != 0)
            {
                NxpNci_HostTransceive(NxpNci_CORE_CONF_EXTN, ref Answer, ref AnswerSize);
                if ((Answer[0] != 0x40) || (Answer[1] != 0x02) || (Answer[3] != 0x00) || (Answer[4] != 0x00))
                {
                    return(NXPNCI_ERROR);
                }
            }
#endif

#if NXP_CORE_STANDBY
            if (NxpNci_CORE_STANDBY.Length != 0)
            {
                NxpNci_HostTransceive(NxpNci_CORE_STANDBY, ref Answer, ref AnswerSize);
                if ((Answer[0] != 0x4F) || (Answer[1] != 0x00) || (Answer[3] != 0x00))
                {
                    return(NXPNCI_ERROR);
                }
            }
#endif

#if NXP_RF_CONF
            CoreSetConfigCommand  cmd   = new CoreSetConfigCommand(PacketBoundryFlagEnum.CompleteMessageOrLastSegment);
            CoreSetConfigResponse resp1 = new CoreSetConfigResponse(PacketBoundryFlagEnum.CompleteMessageOrLastSegment);
            byte configLength           = 0;
            if (NfcControllerGeneration == NCIVersionEnum.NCIVERSION1)
            {
                configLength = (byte)NCIConfig.NxpNci_RF_CONF_1stGen.Length;
                if (configLength > 0)
                {
                    cmd.deserialize(NCIConfig.NxpNci_RF_CONF_1stGen);
                }
            }
            else
            {
                configLength = (byte)NCIConfig.NxpNci_RF_CONF_2ndGen.Length;
                if (configLength > 0)
                {
                    cmd.deserialize(NCIConfig.NxpNci_RF_CONF_2ndGen);
                }
            }
            if (configLength != 0)
            {
                SendCommand(cmd, resp1);
                //if ((Answer[0] != 0x40) || (Answer[1] != 0x02) || (Answer[3] != 0x00) || (Answer[4] != 0x00)) return NXPNCI_ERROR;
                if (resp1.Status != ReponseCode.STATUS_OK ||
                    resp1.OpcodeIdentifier != OpcodeCoreIdentifierEnum.CORE_SET_CONFIG_CMD ||
                    resp1.GroupIdentifier != GroupIdentifierEnum.NCI_Core ||
                    resp1.MessageType != PacketTypeEnum.ControlResponse ||
                    resp1.PacketBoundryFlag != PacketBoundryFlagEnum.CompleteMessageOrLastSegment ||
                    resp1.getPLL() != 0)
                {
                    throw new Exception("CoreSetConfigResponse returned error:" + resp1.Status);
                }

                /* Reset the NFC Controller to insure RF settings apply */
                CoreResetResponse resp2 = new CoreResetResponse(PacketBoundryFlagEnum.CompleteMessageOrLastSegment);
                SendCommand(new CoreResetCommand(PacketBoundryFlagEnum.CompleteMessageOrLastSegment, ResetCommandTypeEnum.RESET_CONFIG), resp2);
                //if ((Answer[0] != 0x40) || (Answer[1] != 0x00) || (Answer[3] != 0x00)) return NXPNCI_ERROR;
                if (resp2.Status != ReponseCode.STATUS_OK ||
                    resp2.OpcodeIdentifier != OpcodeCoreIdentifierEnum.CORE_RESET_CMD ||
                    resp2.GroupIdentifier != GroupIdentifierEnum.NCI_Core ||
                    resp2.MessageType != PacketTypeEnum.ControlResponse ||
                    resp2.PacketBoundryFlag != PacketBoundryFlagEnum.CompleteMessageOrLastSegment)
                {
                    throw new Exception("CoreResetCommand returned error:" + resp2.Status);
                }

                CoreInitResponse resp3 = new CoreInitResponse(PacketBoundryFlagEnum.CompleteMessageOrLastSegment);
                SendCommand(new CoreInitCommand(PacketBoundryFlagEnum.CompleteMessageOrLastSegment), resp3);
                //if ((Answer[0] != 0x40) || (Answer[1] != 0x01) || (Answer[3] != 0x00)) return NXPNCI_ERROR;
                if (resp3.Status != ReponseCode.STATUS_OK ||
                    resp3.OpcodeIdentifier != OpcodeCoreIdentifierEnum.CORE_INIT_CMD ||
                    resp3.GroupIdentifier != GroupIdentifierEnum.NCI_Core ||
                    resp3.MessageType != PacketTypeEnum.ControlResponse ||
                    resp3.PacketBoundryFlag != PacketBoundryFlagEnum.CompleteMessageOrLastSegment)
                {
                    throw new Exception("CoreInitResponse returned error:" + resp3.Status);
                }
            }
#endif
        }