static void HandleGatewayStatusChanged(string gatewayIP, dwg_port_status_value[] PortsStatus) { Console.WriteLine("STS CHANGED: gw {0}", gatewayIP); for(int i = 0; i < PortsStatus.Length; i++) Console.WriteLine("Port#{0}: {1}", i, Enum.GetName(typeof(dwg_port_status_value), (dwg_port_status_value) PortsStatus[i])); }
static unsafe void smsgw_status_changed(IntPtr gwIpPtr, IntPtr statusPtr) { str_t gwIP = (str_t) Marshal.PtrToStructure(gwIpPtr, typeof(str_t)); string gw = strToString(gwIP); dwg_ports_status *status = (dwg_ports_status *) statusPtr; dwg_port_status_value[] ports_status = new dwg_port_status_value[status->size]; _ports = new Port[status->size]; _isGwConnected = true; for(int i = 0; i < status->size; i++) { ports_status[i] = (dwg_port_status_value) status->status_array[i].status; _ports[i] = new Port(); _ports[i].Status = ports_status[i]; } _gwIP = strToString(gwIP); _numberOfPorts = ports_status.Length; if (Gateway.StatusChanged != null) Gateway.StatusChanged(gw, ports_status); if (_gatewayPorts.ContainsKey(gw)) _gatewayPorts[gw] = ports_status; else _gatewayPorts.Add(gw, ports_status); }