private void ReceiveData(IAsyncResult iar)
        {
            try
            {
                //Get the received message.
                Socket recvSock = (Socket)iar.AsyncState;
                EndPoint rEP = new IPEndPoint(IPAddress.Any, 0);
                int dataLen = recvSock.EndReceiveFrom(iar, ref rEP);

                // Copy data to a local buffer so we can start listening again asap
                byte[]  localData = new byte[dataLen];
                Array.Copy(_buffer, localData, dataLen);
                      
                //Start listening for a new message.
                IPEndPoint iEP = new IPEndPoint(IPAddress.Any, _port);
                EndPoint ep = iEP;
                _udpSocket.BeginReceiveFrom(_buffer, 0, _buffer.Length, SocketFlags.None, ref ep, ReceiveData, _udpSocket);
                
                // Handle the local data buffer now (after we restarted the listen server)
                string stringData = Encoding.UTF8.GetString(localData, 0, localData.Length);
                stringData = CleanString(stringData, true);
                
                // ------------------------------------------------------------------------------
                // Debug.WriteLine(stringData + "/" + ((System.Net.IPEndPoint)rEP).Address);
                // Result will look something like below: /192.168.1.36 IS TAGGED ON FROM REMOTEIP
                // ISCP&!1ECNTX-NR609/60128/XX/0009F013A3B6/192.168.1.36
                // ------------------------------------------------------------------------------

                                
                Device oDev = new Device();
                oDev.LoadDevice(stringData + "/" + ((System.Net.IPEndPoint)rEP).Address);

                //// Invoke Delegate Event here to return ct_Onkyo.Device object
                OnkyoDevice.Invoke(oDev);

                oDev = null;              
            }
            catch (SocketException ex)
            {
                Debug.WriteLine("Error: {0} {1}", ex.ErrorCode, ex.Message);
            }
        }
        private void OnkyoMessageHandler(Device oDevice)
        {
            try
            {
                if (OSAEObjectManager.GetObjectByName(oDevice.ModelName) == null)
                {
                    OSAEObjectManager.ObjectAdd(oDevice.ModelName, oDevice.ModelName, "ONKYO RECEIVER", "", "", true);
                    OSAEObjectPropertyManager.ObjectPropertySet(oDevice.ModelName, "IP", oDevice.IP, pName);
                    OSAEObjectPropertyManager.ObjectPropertySet(oDevice.ModelName, "Network Port", oDevice.Port.ToString(), pName);
                    OSAEObjectPropertyManager.ObjectPropertySet(oDevice.ModelName, "Communication Type", "Network", pName);

                }
                this.Log.Info(_ctr.ToString() + " - " + oDevice.Region + Environment.NewLine +
                        _ctr.ToString() + " - " + oDevice.ModelName + Environment.NewLine +
                            _ctr.ToString() + " - " + oDevice.Mac + Environment.NewLine +
                                _ctr.ToString() + " - " + oDevice.IP + Environment.NewLine +
                                    _ctr.ToString() + " - " + oDevice.Port + Environment.NewLine);
                    _ctr++;
            }
            catch (Exception ex)
            {

                this.Log.Error("Error receiver device info ", ex);
            }

        }
        private void OnkyoMessageHandler(Device oDevice)
        {
            try
            {
                if (osae.GetObjectByName(oDevice.ModelName) == null)
                {
                    osae.ObjectAdd(oDevice.ModelName, oDevice.ModelName, "ONKYO RECEIVER", "", "", true);
                    osae.ObjectPropertySet(oDevice.ModelName, "IP", oDevice.IP);
                    osae.ObjectPropertySet(oDevice.ModelName, "Network Port", oDevice.Port.ToString());
                    osae.ObjectPropertySet(oDevice.ModelName, "Communication Type", "Network");

                }
                 osae.AddToLog(_ctr.ToString() + " - " + oDevice.Region + Environment.NewLine +
                        _ctr.ToString() + " - " + oDevice.ModelName + Environment.NewLine +
                            _ctr.ToString() + " - " + oDevice.Mac + Environment.NewLine +
                                _ctr.ToString() + " - " + oDevice.IP + Environment.NewLine +
                                    _ctr.ToString() + " - " + oDevice.Port + Environment.NewLine, true);
                    _ctr++;
            }
            catch (Exception ex)
            {

                osae.AddToLog("Error receiver device info: " + ex.Message, true);
            }
        }