private void ReadInitialValues() { LowpanIdentity = new LowpanIdentity(wpanApi); LowpanCredential = new LowpanCredential(wpanApi); LowpanScanner = new LowpanScanner(wpanApi); ncpVersion = wpanApi.GetPropNcpVersion(); protocolVersion = wpanApi.GetPropProtocolVersion(); interfaceType = (SpinelProtocolType)wpanApi.GetPropInterfaceType(); vendor = wpanApi.GetPropVendorId().ToString(); capabilities = wpanApi.GetPropCaps(); supportedChannels = wpanApi.GetPhyChanSupported(); networkInterfaceState = wpanApi.GetNetIfUp(); threadStackState = wpanApi.GetNetStackUp(); netRole = (SpinelNetRole)wpanApi.GetNetRole(); extendedAddress = new HardwareAddress(wpanApi.GetMac_15_4_Laddr().bytes); hardwareAddress = new HardwareAddress(wpanApi.GetPropHwaddr().bytes); ipAddresses = NetUtilities.SpinelIPtoSystemIP(wpanApi.GetIPv6AddressTable()); ipLinkLocal = new IPAddress(wpanApi.GetIPv6LLAddr().bytes); ipMeshLocal = new IPAddress(wpanApi.GetIPv6MLAddr().bytes); lastStatus = (SpinelStatus)wpanApi.GetPropLastStatus(); }
private void PropertyChanged(uint PropertyId, object PropertyValue) { switch ((SpinelProperties)PropertyId) { case SpinelProperties.SPINEL_PROP_LAST_STATUS: lastStatus = (SpinelStatus)(uint)PropertyValue; if (OnLowpanPropertyChanged != null) { OnLowpanPropertyChanged((SpinelProperties)PropertyId); } break; case SpinelProperties.SPINEL_PROP_STREAM_NET: case SpinelProperties.SPINEL_PROP_STREAM_NET_INSECURE: byte[] ipv6frame = (byte[])PropertyValue; if (OnPacketReceived != null) { OnPacketReceived(ipv6frame); } break; case SpinelProperties.SPINEL_PROP_NET_ROLE: SpinelNetRole newRole = (SpinelNetRole)(byte)(PropertyValue); if (netRole != newRole) { netRole = newRole; if (OnLowpanPropertyChanged != null) { OnLowpanPropertyChanged((SpinelProperties)PropertyId); } } break; case SpinelProperties.SPINEL_PROP_IPV6_LL_ADDR: if (PropertyValue == null) { ipLinkLocal = null; return; } IPv6Address ipaddrLL = (IPv6Address)PropertyValue; ipLinkLocal = new IPAddress(ipaddrLL.bytes); if (OnLowpanPropertyChanged != null) { OnLowpanPropertyChanged((SpinelProperties)PropertyId); } break; case SpinelProperties.SPINEL_PROP_IPV6_ML_ADDR: if (PropertyValue == null) { ipMeshLocal = null; return; } IPv6Address ipaddrML = (IPv6Address)PropertyValue; ipMeshLocal = new IPAddress(ipaddrML.bytes); if (OnLowpanPropertyChanged != null) { OnLowpanPropertyChanged((SpinelProperties)PropertyId); } break; case SpinelProperties.SPINEL_PROP_IPV6_ADDRESS_TABLE: ipAddresses = NetUtilities.SpinelIPtoSystemIP((IPv6Address[])PropertyValue); if (OnLowpanPropertyChanged != null) { OnLowpanPropertyChanged((SpinelProperties)PropertyId); } break; case SpinelProperties.SPINEL_PROP_IPV6_MULTICAST_ADDRESS_TABLE: ipMulticastAddresses = NetUtilities.SpinelIPtoSystemIP((IPv6Address[])PropertyValue); if (OnLowpanPropertyChanged != null) { OnLowpanPropertyChanged((SpinelProperties)PropertyId); } break; } }