private ReponseCode CheckDevicePresence() { CoreResetCommand cmd = new CoreResetCommand(PacketBoundryFlagEnum.CompleteMessageOrLastSegment, ResetCommandTypeEnum.RESET_CONFIG); CoreResetResponse resp = new CoreResetResponse(PacketBoundryFlagEnum.CompleteMessageOrLastSegment); SendCommand(cmd, resp); NfcControllerGeneration = resp.NCIVersion; return(resp.Status); }
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 }