Example #1
0
 public MessageCmd(InterfaceAddress interfaceAddr,
                   InterfaceCommand interfaceCommand, byte[] data)
     : base(interfaceAddr)
 {
     m_InterfaceCmd = interfaceCommand;
     m_Data         = data;
 }
        public override IDestination CreateDestination(InterfaceAddress nic, int port, bool isOpenExternally)
        {
            var address = nic.Address;

            address.ScopeId = 0;

            return(new TCPIPv6Destination(nic.IPv6PrefixLength, address, (uint)port, isOpenExternally));
        }
Example #3
0
        public InterfaceAddress[] GetInterfaceAddresses()
        {
            var result = new List <InterfaceAddress>();

            IntPtr ifap;

            if (getifaddrs(out ifap) != 0)
            {
                throw new SystemException("getifaddrs() failed");
            }

            try {
                var next = ifap;

                while (next != IntPtr.Zero)
                {
                    var addr = (ifaddrs)Marshal.PtrToStructure(next, typeof(ifaddrs));

                    var name = addr.ifa_name;

                    if (addr.ifa_addr != IntPtr.Zero)
                    {
                        var index = if_nametoindex(name);

                        var sockaddr = (sockaddr_in)Marshal.PtrToStructure(addr.ifa_addr, typeof(sockaddr_in));


                        if (sockaddr.sin_family == AF_INET6)
                        {
                            var nmask        = (sockaddr_in6)Marshal.PtrToStructure(addr.ifa_netmask, typeof(sockaddr_in6));
                            var prefixLength = GetIPv6PrefixLength(nmask.sin6_addr.u6_addr8);

                            var sockaddr6 = (sockaddr_in6)Marshal.PtrToStructure(addr.ifa_addr, typeof(sockaddr_in6));
                            var address   = new IPAddress(sockaddr6.sin6_addr.u6_addr8, sockaddr6.sin6_scope_id);
                            var info      = new InterfaceAddress(index, name, address, prefixLength);
                            result.Add(info);
                        }
                        else if (sockaddr.sin_family == AF_INET)
                        {
                            var netmaskaddr = (sockaddr_in)Marshal.PtrToStructure(addr.ifa_netmask, typeof(sockaddr_in));
                            var netmask     = new IPAddress(netmaskaddr.in_addr);
                            var address     = new IPAddress(sockaddr.in_addr);
                            var info        = new InterfaceAddress(index, name, address, netmask);
                            result.Add(info);
                        }
                    }
                    next = addr.ifa_next;
                }
            } finally {
                freeifaddrs(ifap);
            }

            return(result.ToArray());
        }
        public BillToBillDevice(
            string communicationPortName
            )
        {
            //configure serial port -------------
            var serialPort = CreateSerialPort();

            serialPort.PortName = communicationPortName;
            m_CommunicationPort = serialPort;
            //----------------------------------

            m_InterfaceAddress = InterfaceAddress.B2B;
            //object used for synchronize port read \ write requests
            m_PortLocker = new object();
            // device responses handler
            m_ResponseHandler = CreateResponseHandler();
        }
Example #5
0
            public static bool CheckResponseData(
                byte[] responseData, InterfaceAddress deviceInterfaceAddr)
            {
                bool ret = false;

                if (responseData.Length >= PACKET_MIN_LENGTH)
                {
                    var synch      = responseData[0];
                    var ifaceaAddr = responseData[1];
                    var packetLen  = responseData[2];
                    var calcData   = new byte[responseData.Length - 2];
                    Array.Copy(responseData, calcData, calcData.Length);
                    var checkCrc = CalculateCrc(calcData);
                    //var preCrcData = new byte[CRC_BYTE_COUNT];
                    var preCrc = new byte[CRC_BYTE_COUNT];
                    Array.Copy(
                        responseData,
                        responseData.Length - CRC_BYTE_COUNT,
                        preCrc, 0, CRC_BYTE_COUNT);
                    var crc = ((short)preCrc[1] << 8) + preCrc[0];

                    //Debug.WriteLine("CheckCrc " + checkCrc);
                    //Debug.WriteLine("My Crc " + crc);

                    if (synch == 0x2 && ifaceaAddr == (byte)deviceInterfaceAddr &&
                        checkCrc == crc && packetLen == responseData.Length)
                    {
                        ret = true;
                    }
                }
                //somtimes after reset command
                //device return wrong ack response, handle it
                else if (responseData.Length == 4)
                {
                    if (responseData[0] == SYNC &&
                        responseData[1] == (byte)deviceInterfaceAddr &&
                        responseData[2] == PACKET_MIN_LENGTH &&
                        responseData[3] == 0x00)
                    {
                        ret = true;
                    }
                }
                return(ret);
            }
Example #6
0
        /// <summary>
        /// Compares this object against the specified object.
        /// The result is {@code true} if and only if the argument is
        /// not {@code null} and it represents the same interface address as
        /// this object.
        /// <para>
        /// Two instances of {@code InterfaceAddress} represent the same
        /// address if the InetAddress, the prefix length and the broadcast are
        /// the same for both.
        ///
        /// </para>
        /// </summary>
        /// <param name="obj">   the object to compare against. </param>
        /// <returns>  {@code true} if the objects are the same;
        ///          {@code false} otherwise. </returns>
        /// <seealso cref=     java.net.InterfaceAddress#hashCode() </seealso>
        public override bool Equals(Object obj)
        {
            if (!(obj is InterfaceAddress))
            {
                return(false);
            }
            InterfaceAddress cmp = (InterfaceAddress)obj;

            if (!(Address_Renamed == null ? cmp.Address_Renamed == null : Address_Renamed.Equals(cmp.Address_Renamed)))
            {
                return(false);
            }
            if (!(Broadcast_Renamed == null ? cmp.Broadcast_Renamed == null : Broadcast_Renamed.Equals(cmp.Broadcast_Renamed)))
            {
                return(false);
            }
            if (MaskLength != cmp.MaskLength)
            {
                return(false);
            }
            return(true);
        }
Example #7
0
 public override IDestination CreateDestination(InterfaceAddress nic, int port, bool isOpenExternally)
 {
     return(new TCPIPv4Destination(nic.Address, (uint)port, isOpenExternally));
 }
Example #8
0
 public abstract IDestination CreateDestination(InterfaceAddress nic, int port, bool isOpenExternally);
Example #9
0
 public MessageBase(InterfaceAddress interfaceAddr)
 {
     m_InterfaceAddr = interfaceAddr;
 }
Example #10
0
 public MessageAck(InterfaceAddress interfaceAddr)
     : base(interfaceAddr)
 {
 }