static void Main(string[] args) { if (args.Length != 1) { string[] ports = SerialPort.GetPortNames(); Console.WriteLine("COM port parameter not provided."); Console.WriteLine("Available serial ports: "); foreach (var port in ports) { Console.WriteLine(port); } Console.ReadKey(); return; } StreamUART uartStream = new StreamUART(args[0]); ncpInterface = new NcpInterface(); ncpInterface.OnLastStatusHandler += OnLastStatus; ncpInterface.OnLowpanStateChanged += OnStateChanged; try { ncpInterface.Open(uartStream); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.ReadKey(); return; } // NetworkingInterface.SetupInterface(ncpInterface); while (true) { Console.Write(">"); string line = Console.ReadLine().Trim().ToLower(); if (line == "quit" || line == "exit") { isUdpListenerRunning = false; if (threadUdpListening != null) { if (threadUdpListening.IsAlive) { threadUdpListening.Interrupt(); } threadUdpListening = null; } return; } string cmdName = line.Split(' ').First(); string[] cmdArgs = line.Split(' ').Skip(1).ToArray(); switch (cmdName) { case "help": PrintHelp(cmdArgs); break; case "reset": ncpInterface.Reset(); break; case "form": DoForm(cmdArgs); break; case "attach": DoJoin(cmdArgs, false); break; case "join": DoJoin(cmdArgs, true); break; case "ping": DoPing(cmdArgs); break; case "status": Console.WriteLine(ncpInterface.LastStatus.ToString()); break; case "protocol": Console.WriteLine(ncpInterface.ProtocolVersion); break; case "version": Console.WriteLine(ncpInterface.NcpVersion); break; case "interface": Console.WriteLine(ncpInterface.InterfaceType.ToString()); break; case "vendor": Console.WriteLine(ncpInterface.Vendor); break; case "connected": Console.WriteLine(ncpInterface.Connected.ToString()); break; case "caps": DoCaps(); break; case "networkname": DoNetworkName(cmdArgs); break; case "scan": DoScan(cmdArgs); break; case "bufferinfo": DoBufferInfo(); break; case "channel": DoChannel(cmdArgs); break; case "ipaddr": DoIPpaddr(cmdArgs); break; case "ifconfig": DoIfConfig(cmdArgs); break; case "thread": DoThread(cmdArgs); break; case "panid": DoPanId(cmdArgs); break; case "extpanid": DoXpanId(cmdArgs); break; case "state": DoState(cmdArgs); break; case "masterkey": DoMasterkey(cmdArgs); break; case "partition": Console.WriteLine(ncpInterface.PartitionId.ToString()); break; case "extaddr": Console.WriteLine(ncpInterface.ExtendedAddress.ToString()); break; case "macaddr": Console.WriteLine(ncpInterface.HardwareAddress.ToString()); break; case "udp": DoUdp(cmdArgs); break; } } }
static void Main(string[] args) { if (args.Length != 1) { string[] ports = SerialPort.GetPortNames(); Console.WriteLine("COM port parameter not provided."); Console.WriteLine("Available serial ports: "); foreach (var serialPort in ports) { Console.WriteLine(serialPort); } Console.ReadKey(); return; } StreamUART uartStream = new StreamUART(args[0]); ncpInterface = new NcpInterface(); try { ncpInterface.Open(uartStream); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.ReadKey(); return; } // NetworkingInterface.SetupInterface(ncpInterface); Console.Write("Networkname:"); string networkname = Console.ReadLine(); Console.Write("Channel:"); byte channel = Convert.ToByte(Console.ReadLine()); Console.Write("Masterkey:"); string masterkey = Console.ReadLine(); Console.Write("Panid:"); ushort panid = Convert.ToUInt16(Console.ReadLine()); Console.Write("Listener port:"); ushort port = Convert.ToUInt16(Console.ReadLine()); try { ncpInterface.Form(networkname, channel, masterkey, panid); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.ReadKey(); return; } UdpSocket receiver = new UdpSocket(); receiver.Bind(IPv6Address.IPv6Any, port); IPv6EndPoint remoteIp = null; while (true) { if (receiver.Poll(-1, SelectMode.SelectRead)) { byte[] data = receiver.Receive(ref remoteIp); string message = Encoding.ASCII.GetString(data); Console.WriteLine("\n"); Console.WriteLine("{0} bytes from {1} {2} {3}", message.Length, remoteIp.Address, remoteIp.Port, message); Console.WriteLine(">"); } } }