diff --git a/README.md b/README.md index 82e328e..e56770b 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ that will resolve with a duplex stream for the port. ```php $serial = new SerialFactory(); $serial->open("/dev/ttyUSB0", 115200) - ->then(...); + ->then(function (DuplexStreamInterface $stream) { ... }); ``` You may find that you need line buffering, in which case you should wrap the stream in a @@ -28,36 +28,34 @@ event whenever a matching prompt is detected, and with `$bufferOutput` you will an `output` event with all the `line`s emitted since the last `prompt`. ```php -$serial->open("/dev/ttyUSB0", 115200) - ->then(function (DuplexStreamInterface $stream) { - // Wrap our stream and use '#> ' as the prompt pattern. - $shell = new LineBufferedDuplexStream($stream, promptPattern: '/\#\> /', bufferOutput:true); - // Prepare the commands to execute, in order - $commands = [ - 'set first="value"', - 'set second="something"', - 'apply', - ]; - // Execute the next command once we get a prompt - $shell->on("prompt", function () use ($shell, &$commands) { - $command = array_shift($commands); - if (!$command) { - // Closing the wrapper closes the stream - $shell->close(); - return; - } - echo "# \e[1m".$command."\e[0m\n"; - $shell->write($command."\n"); - }); - // Receives each complete line - $shell->on("line", function ($line) { - // ... - }); - // Receives all the output lines from the last command. - $shell->on("output", function(array $lines) { - // ... - }); - // write "config" to our fictive device to enable config mode - $shell->write("config\n"); - }); +// Wrap our stream and use '#> ' as the prompt pattern. +$shell = new LineBufferedDuplexStream($stream, promptPattern: '/\#\> /', bufferOutput:true); + +// Prepare the commands to execute, in order. These are the commands you would use +// on an OpenWRT router to configure the WiFi password for the "main" WiFi interface. +$commands = [ + 'uci set wireless.main.key="pennyisafreeloader"', + 'uci commit wireless', + 'wifi restart', +]; + +// Execute the next command once we get a prompt +$shell->on("prompt", function () use ($shell, &$commands) { + $command = array_shift($commands); + if (!$command) { + // Closing the wrapper closes the stream + $shell->close(); + return; + } + echo $command."\n"; + $shell->write($command."\n"); +}); + +// Receives all the output lines from the last command. +$shell->on("output", function(array $lines) { + echo " ".join("\n ",$lines)."\n"; +}); + +// write "echo" to the shell on our fictive device to get a fresh prompt +$shell->write("echo\n"); ```