/** * Notifies subscribed IO sample listeners that a new IO sample packet has * been received. * * @param ioSample The received IO sample. * @param remoteDevice The remote XBee device that sent the sample. * * @see com.digi.xbee.api.RemoteXBeeDevice * @see com.digi.xbee.api.io.IOSample */ private void NotifyIOSampleReceived(RemoteXBeeDevice remoteDevice, IOSample ioSample) { logger.Debug(connectionInterface.ToString() + "IO sample received."); try { lock (IOSampleReceived) { var handler = IOSampleReceived; if (handler != null) { var args = new IOSampleReceivedEventArgs(remoteDevice, ioSample); handler.GetInvocationList().AsParallel().ForAll((action) => { action.DynamicInvoke(this, args); }); } } } catch (Exception e) { logger.Error(e.Message, e); } }
/** * Class constructor. Instantiates a new * {@code IODataSampleRxIndicatorPacket} object with the given parameters. * * @param sourceAddress64 64-bit address of the sender. * @param sourceAddress16 16-bit address of the sender. * @param receiveOptions Receive options. * @param rfData Received RF data. * * @throws ArgumentException if {@code receiveOptions < 0} or * if {@code receiveOptions > 255} or * if {@code rfData.Length < 5}. * @throws ArgumentNullException if {@code sourceAddress64 == null} or * if {@code sourceAddress16 == null}. * * @see com.digi.xbee.api.models.XBeeReceiveOptions * @see com.digi.xbee.api.models.XBee16BitAddress * @see com.digi.xbee.api.models.XBee64BitAddress */ public IODataSampleRxIndicatorPacket(XBee64BitAddress sourceAddress64, XBee16BitAddress sourceAddress16, byte receiveOptions, byte[] rfData) : base(APIFrameType.IO_DATA_SAMPLE_RX_INDICATOR) { if (sourceAddress64 == null) { throw new ArgumentNullException("64-bit source address cannot be null."); } if (sourceAddress16 == null) { throw new ArgumentNullException("16-bit source address cannot be null."); } this.sourceAddress64 = sourceAddress64; this.sourceAddress16 = sourceAddress16; this.ReceiveOptions = receiveOptions; this.RFData = rfData; if (rfData != null) { IOSample = new IOSample(rfData); } else { IOSample = null; } this.logger = LogManager.GetLogger <IODataSampleRxIndicatorPacket>(); }
/// <summary> /// Class constructor. Instantiates a <see cref="IODataSampleRxIndicatorPacket"/> with the given parameters. /// </summary> /// <param name="sourceAddress64">The 64-bit address of the sender.</param> /// <param name="sourceAddress16">The 16-bit address of the sender.</param> /// <param name="receiveOptions">The receive options.</param> /// <param name="rfData">The received RF data.</param> /// <exception cref="ArgumentException">If <c><paramref name="receiveOptions"/> <![CDATA[<]]> 0</c> /// or if <c><paramref name="receiveOptions"/> <![CDATA[>]]> 255</c>.</exception> /// <exception cref="ArgumentNullException">If <paramref name="sourceAddress64"/> is <c>null</c> /// or if <paramref name="sourceAddress16"/> is <c>null</c>.</exception> /// <seealso cref="XBeeReceiveOptions"/> /// <seealso cref="XBee16BitAddress"/> /// <seealso cref="XBee64BitAddress"/> public IODataSampleRxIndicatorPacket(XBee64BitAddress sourceAddress64, XBee16BitAddress sourceAddress16, byte receiveOptions, byte[] rfData) : base(APIFrameType.IO_DATA_SAMPLE_RX_INDICATOR) { SourceAddress64 = sourceAddress64 ?? throw new ArgumentNullException("64-bit source address cannot be null."); SourceAddress16 = sourceAddress16 ?? throw new ArgumentNullException("16-bit source address cannot be null."); ReceiveOptions = receiveOptions; RFData = rfData; if (rfData != null && rfData.Length >= 5) { IOSample = new IOSample(rfData); } else { // TODO: Should we throw an exception here? IOSample = null; } logger = LogManager.GetLogger <IODataSampleRxIndicatorPacket>(); }
/** * Class constructor. Instantiates a new {@code RX16IOPacket} object with * the given parameters. * * @param sourceAddress16 16-bit address of the sender. * @param rssi Received signal strength indicator. * @param receiveOptions Bitfield indicating the receive options. * @param rfData Received RF data. * * @throws ArgumentException if {@code rssi < 0} or * if {@code rssi > 100} or * if {@code receiveOptions < 0} or * if {@code receiveOptions > 255} or * if {@code rfData.Length < 5}. * @throws ArgumentNullException if {@code sourceAddress16 == null}. * * @see com.digi.xbee.api.models.XBeeReceiveOptions * @see com.digi.xbee.api.models.XBee16BitAddress */ public RX16IOPacket(XBee16BitAddress sourceAddress16, byte rssi, byte receiveOptions, byte[] rfData) : base(APIFrameType.RX_IO_16) { Contract.Requires <ArgumentNullException>(sourceAddress16 != null, "16-bit source address cannot be null."); Contract.Requires <ArgumentOutOfRangeException>(rssi >= 0 && rssi <= 100, "RSSI value must be between 0 and 100."); this.sourceAddress16 = sourceAddress16; this.RSSI = rssi; this.ReceiveOptions = receiveOptions; this.RFData = rfData; if (rfData != null) { IOSample = new IOSample(rfData); } else { IOSample = null; } this.logger = LogManager.GetLogger <RX16IOPacket>(); }
/** * Class constructor. Instantiates a new {@code RX64IOPacket} object with * the given parameters. * * @param sourceAddress64 64-bit address of the sender. * @param rssi Received signal strength indicator. * @param receiveOptions Bitfield indicating the receive options. * @param rfData Received RF data. * * @throws ArgumentException if {@code rssi < 0} or * if {@code rssi > 100} or * if {@code receiveOptions < 0} or * if {@code receiveOptions > 255} or * if {@code rfData.Length < 5}. * @throws ArgumentNullException if {@code sourceAddress64 == null}. * * @see com.digi.xbee.api.models.XBeeReceiveOptions * @see com.digi.xbee.api.models.XBee64BitAddress */ public RX64IOPacket(XBee64BitAddress sourceAddress64, byte rssi, byte receiveOptions, byte[] rfData) : base(APIFrameType.RX_IO_64) { Contract.Requires <ArgumentNullException>(sourceAddress64 != null, "64-bit source address cannot be null."); Contract.Requires <ArgumentOutOfRangeException>(rssi >= 0 && rssi <= 100); this.SourceAddress64 = sourceAddress64; this.RSSI = rssi; this.ReceiveOptions = receiveOptions; this.RFData = rfData; if (rfData != null) { ioSample = new IOSample(rfData); } else { ioSample = null; } this.logger = LogManager.GetLogger <RX64IOPacket>(); }
/// <summary> /// Class constructor. Instantiates a new <see cref="RX64IOPacket"/> object with the /// given parameters. /// </summary> /// <param name="sourceAddress64">The 64-bit address of the sender device.</param> /// <param name="rssi">The received signal strength indicator.</param> /// <param name="receiveOptions">The bitField of receive options.</param> /// <param name="rfData">The received RF data.</param> /// <exception cref="ArgumentOutOfRangeException">If <c><paramref name="rssi"/> <![CDATA[<]]> 0</c> /// or if <c><paramref name="rssi"/> <![CDATA[>]]> 255</c>.</exception> /// <exception cref="ArgumentNullException">If <c><paramref name="sourceAddress64"/> == null</c>.</exception> /// <seealso cref="XBeeReceiveOptions"/> /// <seealso cref="XBee64BitAddress"/> public RX64IOPacket(XBee64BitAddress sourceAddress64, byte rssi, byte receiveOptions, byte[] rfData) : base(APIFrameType.RX_IO_64) { if (rssi < 0 || rssi > 255) { throw new ArgumentOutOfRangeException("RSSI value must be between 0 and 255."); } SourceAddress64 = sourceAddress64 ?? throw new ArgumentNullException("64-bit source address cannot be null."); RSSI = rssi; ReceiveOptions = receiveOptions; RFData = rfData; if (rfData != null && rfData.Length >= 5) { IoSample = new IOSample(rfData); } else { IoSample = null; } logger = LogManager.GetLogger <RX64IOPacket>(); }
//Här vill jag ha kolumn namen, och kolumnnamen vet jag redan då de ligger i koden för IOSample för att lyfta ur datan mha EF. //Detta metod är därför lite bakvänd men jag använder IOSample då ändringar i IOSample slår igenom här. public List <string> IOColumnNames_FromIOKeepTable() { try { IOSample iOSample = new IOSample(); IOColumnNamesList.Add(nameof(iOSample.Hub2Hub_KKS123_SystemVolt_Erratic)); IOColumnNamesList.Add(nameof(iOSample.Hub2Hub_KKS123_SystemVolt_Low)); IOColumnNamesList.Add(nameof(iOSample.Hub2Hub_KKS123_Retarder_LowCurrent)); IOColumnNamesList.Add(nameof(iOSample.Hub2Hub_KKS123_AuxPressure_Low)); IOColumnNamesList.Add(nameof(iOSample.Panna_flisinmatning_skruv1_Motorskydd)); IOColumnNamesList.Add(nameof(iOSample.Panna_flisinmatning_skruv1_Sakerhetsbrytare)); IOColumnNamesList.Add(nameof(iOSample.Panna_flisinmatning_skruv1_Varvtalsvakt)); IOColumnNamesList.Add(nameof(iOSample.Panna_flisinmatning_skruv1_Nodstop)); IOColumnNamesList.Add(nameof(iOSample.Panna_Fribord_flisinmating_pt1000)); IOColumnNamesList.Add(nameof(iOSample.Panna_Fribord_askutmating_pt1000)); IOColumnNamesList.Add(nameof(iOSample.Panna_Fribord_ForeBrannare_pt1000)); IOColumnNamesList.Add(nameof(iOSample.Panna_Fribord_EfterBrannare_pt1000)); IOColumnNamesList.Add(nameof(iOSample.Karlatornet_Ventilation_Franluft_HogTemp)); IOColumnNamesList.Add(nameof(iOSample.Karlatornet_Ventilation_Franluft_LagTemp)); IOColumnNamesList.Add(nameof(iOSample.Karlatornet_Brandlarm_Hiss1_Aktivt)); IOColumnNamesList.Add(nameof(iOSample.Karlatornet_Brandlarm_Hiss2_Aktivt)); IOColumnNamesList.Add(nameof(iOSample.Vestas_Verk12_Koppling_HogTemp)); IOColumnNamesList.Add(nameof(iOSample.Vestas_Verk12_Koppling_LagOljeNiva)); IOColumnNamesList.Add(nameof(iOSample.Vestas_Verk12_Koppling_TryckAvvikelse)); IOColumnNamesList.Add(nameof(iOSample.Vestas_Verk12_Vaderstation_WatchDog)); } catch (Exception ex) { Debug.WriteLine($"Exception in IOKeepTableDataAccess : IOColumnNames_FromIOKeepTable: ex.Message = " + ex.Message); Debug.WriteLine($"Exception in IOKeepTableDataAccess : IOColumnNames_FromIOKeepTable: ex.StackTrace = " + ex.StackTrace); } return(IOColumnNamesList); }
/// <summary> /// Instantiates a <see cref="IOSampleReceivedEventArgs"/> object with the provided parameters. /// </summary> /// <param name="remoteDevice">The remote XBee device.</param> /// <param name="ioSample">The IO sample.</param> public IOSampleReceivedEventArgs(RemoteXBeeDevice remoteDevice, IOSample ioSample) { RemoteDevice = remoteDevice; IOSample = ioSample; }