private void action_ReqStatus() { //The managed library has a function to request status that returns a ChannelStatus object threadSafePrintLine("Requesting Device 0 Status", textBox_Display); try { ANT_ChannelStatus chStatus = device0.getChannel(0).requestStatus(500); //Not all device types return a complete device status, so some of these fields may be inaccurate threadSafePrintLine("Device 0 Channel 0 Status: " + chStatus.BasicStatus + ", Network Number: " + chStatus.networkNumber + ", Type: " + chStatus.ChannelType, textBox_Display); } catch (Exception) { threadSafePrintLine("Requesting Device 0 Status Failed", textBox_Display); } //If present, request device 1 status too if (device1 != null) { threadSafePrintLine("Requesting Device 1 Status", textBox_Display); try { ANT_ChannelStatus chStatus = device1.getChannel(0).requestStatus(500); //Not all device types return a complete device status, so some of these fields may be inaccurate threadSafePrintLine("Device 1 Channel 0 Status: " + chStatus.BasicStatus + ", Network Number: " + chStatus.networkNumber + ", Type: " + chStatus.ChannelType, textBox_Display); } catch (Exception) { threadSafePrintLine("Requesting Device 1 Status Failed", textBox_Display); } } }
private void configureBroadcastChannel() { ANT_ChannelStatus antChannelStatus = this.antfsBroadcastChannel.requestStatus(this.deviceChannel); if (antChannelStatus.BasicStatus == ANT_ReferenceLibrary.BasicChannelStatusCode.TRACKING_0x3) { return; } if (antChannelStatus.BasicStatus == ANT_ReferenceLibrary.BasicChannelStatusCode.UNASSIGNED_0x0 && !this.antfsBroadcastChannel.assignChannel(ANT_ReferenceLibrary.ChannelType.BASE_Slave_Receive_0x00, this.deviceNumber, this.deviceChannel)) { Debug.LogError("Error assigning channel"); } else if (!this.antDevice.setNetworkKey(this.deviceNumber, this.KEY, this.deviceChannel)) { Debug.LogError("Unable to set ANT network key"); } else { //if ((int)(ushort)this.antDevice.getSerialNumber () == 0); if (!this.antfsBroadcastChannel.setChannelID(this.deviceNumber, false, this.deviceType, (byte)5, 500U)) { Debug.LogError("Error configuring channel ID"); } else if (!this.antfsBroadcastChannel.setChannelFreq(this.deviceRfFreq, 500U)) { Debug.LogError("Error configuring radio frequency"); } else if (!this.antfsBroadcastChannel.setChannelPeriod(this.periodDivisor, 500U)) { Debug.LogError("Error configuring channel period"); } else if (!this.antfsBroadcastChannel.openChannel(this.deviceChannel)) { Debug.LogError("Failed to open the channel"); } else { Debug.LogError("ANT-FS Broadcast channel open"); } } }
//////////////////////////////////////////////////////////////////////////////// // Start // // Start the demo program. // // ucChannelType_: ANT Channel Type. 0 = Master, 1 = Slave // If not specified, 2 is passed in as invalid. //////////////////////////////////////////////////////////////////////////////// static void Start(byte ucChannelType_) { byte ucChannelType = ucChannelType_; bDone = false; bDisplay = true; bBroadcasting = false; PrintMenu(); // If a channel type has not been set at the command line, // prompt the user to specify one now do { if (ucChannelType == CHANNEL_TYPE_INVALID) { Console.WriteLine("Channel Type? (Master = 0, Slave = 1)"); try { ucChannelType = byte.Parse(Console.ReadLine()); } catch (Exception) { ucChannelType = CHANNEL_TYPE_INVALID; } } if (ucChannelType == 0) { channelType = ANT_ReferenceLibrary.ChannelType.BASE_Master_Transmit_0x10; } else if (ucChannelType == 1) { channelType = ANT_ReferenceLibrary.ChannelType.BASE_Slave_Receive_0x00; } else { ucChannelType = CHANNEL_TYPE_INVALID; Console.WriteLine("Error: Invalid channel type"); } } while (ucChannelType == CHANNEL_TYPE_INVALID); try { ConfigureANT(); while (!bDone) { string command = Console.ReadLine(); switch (command) { case "M": case "m": { PrintMenu(); break; } case "Q": case "q": { // Quit Console.WriteLine("Closing Channel"); bBroadcasting = false; channel0.closeChannel(); break; } case "A": case "a": { // Send Acknowledged Data byte[] myTxBuffer = { 1, 2, 3, 4, 5, 6, 7, 8 }; channel0.sendAcknowledgedData(myTxBuffer); break; } case "B": case "b": { // Send Burst Data (10 packets) byte[] myTxBuffer = new byte[8 * 10]; for (byte i = 0; i < 8 * 10; i++) { myTxBuffer[i] = i; } channel0.sendBurstTransfer(myTxBuffer); break; } case "R": case "r": { // Reset the system and start over the test ConfigureANT(); break; } case "C": case "c": { // Request capabilities ANT_DeviceCapabilities devCapab = device0.getDeviceCapabilities(500); Console.Write(devCapab.printCapabilities() + Environment.NewLine); break; } case "V": case "v": { // Request version // As this is not available in all ANT parts, we should not wait for a response, so // we do not specify a timeout // The response - if available - will be processed in DeviceResponse device0.requestMessage(ANT_ReferenceLibrary.RequestMessageID.VERSION_0x3E); break; } case "S": case "s": { // Request channel status ANT_ChannelStatus chStatus = channel0.requestStatus(500); string[] allStatus = { "STATUS_UNASSIGNED_CHANNEL", "STATUS_ASSIGNED_CHANNEL", "STATUS_SEARCHING_CHANNEL", "STATUS_TRACKING_CHANNEL" }; Console.WriteLine("STATUS: " + allStatus[(int)chStatus.BasicStatus]); break; } case "I": case "i": { // Request channel ID ANT_Response respChID = device0.requestMessageAndResponse(ANT_ReferenceLibrary.RequestMessageID.CHANNEL_ID_0x51, 500); ushort usDeviceNumber = (ushort)((respChID.messageContents[2] << 8) + respChID.messageContents[1]); byte ucDeviceType = respChID.messageContents[3]; byte ucTransmissionType = respChID.messageContents[4]; Console.WriteLine("CHANNEL ID: (" + usDeviceNumber.ToString() + "," + ucDeviceType.ToString() + "," + ucTransmissionType.ToString() + ")"); break; } case "D": case "d": { bDisplay = !bDisplay; break; } case "U": case "u": { // Print out information about the device we are connected to Console.WriteLine("USB Device Description"); // Retrieve info Console.WriteLine(String.Format(" VID: 0x{0:x}", device0.getDeviceUSBVID())); Console.WriteLine(String.Format(" PID: 0x{0:x}", device0.getDeviceUSBPID())); Console.WriteLine(String.Format(" Product Description: {0}", device0.getDeviceUSBInfo().printProductDescription())); Console.WriteLine(String.Format(" Serial String: {0}", device0.getDeviceUSBInfo().printSerialString())); break; } default: { break; } } System.Threading.Thread.Sleep(0); } // Clean up ANT Console.WriteLine("Disconnecting module..."); ANT_Device.shutdownDeviceInstance(ref device0); // Close down the device completely and completely shut down all communication Console.WriteLine("Demo has completed successfully!"); return; } catch (Exception ex) { throw new Exception("Demo failed: " + ex.Message + Environment.NewLine); } }