//////////////////////////////////////////////////////////////////////////////// // DeviceResponse // // Called whenever a message is received from ANT unless that message is a // channel event message. // // response: ANT message //////////////////////////////////////////////////////////////////////////////// protected void DeviceResponse(ANT_Response response) { switch ((ANT_ReferenceLibrary.ANTMessageID) response.responseID) { case ANT_ReferenceLibrary.ANTMessageID.STARTUP_MESG_0x6F: { Console.Write("RESET Complete, reason: "); byte ucReason = response.messageContents[0]; if(ucReason == (byte) ANT_ReferenceLibrary.StartupMessage.RESET_POR_0x00) Console.WriteLine("RESET_POR"); if(ucReason == (byte) ANT_ReferenceLibrary.StartupMessage.RESET_RST_0x01) Console.WriteLine("RESET_RST"); if(ucReason == (byte) ANT_ReferenceLibrary.StartupMessage.RESET_WDT_0x02) Console.WriteLine("RESET_WDT"); if(ucReason == (byte) ANT_ReferenceLibrary.StartupMessage.RESET_CMD_0x20) Console.WriteLine("RESET_CMD"); if(ucReason == (byte) ANT_ReferenceLibrary.StartupMessage.RESET_SYNC_0x40) Console.WriteLine("RESET_SYNC"); if(ucReason == (byte) ANT_ReferenceLibrary.StartupMessage.RESET_SUSPEND_0x80) Console.WriteLine("RESET_SUSPEND"); break; } case ANT_ReferenceLibrary.ANTMessageID.VERSION_0x3E: { Console.WriteLine("VERSION: " + new ASCIIEncoding().GetString(response.messageContents)); break; } case ANT_ReferenceLibrary.ANTMessageID.RESPONSE_EVENT_0x40: { switch (response.getMessageID()) { case ANT_ReferenceLibrary.ANTMessageID.CLOSE_CHANNEL_0x4C: { if (response.getChannelEventCode() == ANT_ReferenceLibrary.ANTEventID.CHANNEL_IN_WRONG_STATE_0x15) { foreach (SensorProcessor s in _SensorProcessors) { s.UnassignChannel(); } } break; } case ANT_ReferenceLibrary.ANTMessageID.NETWORK_KEY_0x46: case ANT_ReferenceLibrary.ANTMessageID.ASSIGN_CHANNEL_0x42: case ANT_ReferenceLibrary.ANTMessageID.CHANNEL_ID_0x51: case ANT_ReferenceLibrary.ANTMessageID.CHANNEL_RADIO_FREQ_0x45: case ANT_ReferenceLibrary.ANTMessageID.OPEN_CHANNEL_0x4B: case ANT_ReferenceLibrary.ANTMessageID.UNASSIGN_CHANNEL_0x41: { if (response.getChannelEventCode() != ANT_ReferenceLibrary.ANTEventID.RESPONSE_NO_ERROR_0x00) { Console.WriteLine(String.Format("Error {0} configuring {1}", response.getChannelEventCode(), response.getMessageID())); } break; } case ANT_ReferenceLibrary.ANTMessageID.RX_EXT_MESGS_ENABLE_0x66: { if (response.getChannelEventCode() == ANT_ReferenceLibrary.ANTEventID.INVALID_MESSAGE_0x28) { Console.WriteLine("Extended messages not supported in this ANT product"); break; } else if(response.getChannelEventCode() != ANT_ReferenceLibrary.ANTEventID.RESPONSE_NO_ERROR_0x00) { Console.WriteLine(String.Format("Error {0} configuring {1}", response.getChannelEventCode(), response.getMessageID())); break; } Console.WriteLine("Extended messages enabled"); break; } case ANT_ReferenceLibrary.ANTMessageID.REQUEST_0x4D: { if (response.getChannelEventCode() == ANT_ReferenceLibrary.ANTEventID.INVALID_MESSAGE_0x28) { Console.WriteLine("Requested message not supported in this ANT product"); break; } break; } default: { Console.WriteLine("Unhandled response " + response.getChannelEventCode() + " to message " + response.getMessageID()); break; } } break; } } }