Ejemplo n.º 1
0
        /**
         * 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>();
        }
Ejemplo n.º 6
0
        /// <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;
 }