Creating a #PinePhone Terminal App with #LVGL and Apache #NuttX RTOS ... All shall be explained in this article
Let's start the #NuttX NSH Shell ... And send it a command via a NuttX Pipe
Article: https://lupyuen.github.io/articles/terminal?3#pipe-a-command-to-nsh-shell
Here's how we create a POSIX Pipe in Apache #NuttX RTOS
Article: https://lupyuen.github.io/articles/terminal?4#create-the-pipes
Standard I/O Streams will be inherited ... When we create a #NuttX Task
Article: https://lupyuen.github.io/articles/terminal?5#connect-the-pipes
Here's how we create a Task in Apache #NuttX RTOS
Article: https://lupyuen.github.io/articles/terminal?6#create-the-task
Checking our #NuttX plumbing by Piping a Command to NSH Shell
Article: https://lupyuen.github.io/articles/terminal?7#test-the-pipes
Reading stdout from #NuttX NSH Shell will block ... If there's nothing to read! That's why we poll() for stdout
Article: https://lupyuen.github.io/articles/terminal?7#test-the-pipes
How we poll an I/O Stream in Apache #NuttX RTOS
Article: https://lupyuen.github.io/articles/terminal?8#poll-for-nsh-output
Our #NuttX Terminal App needs to poll periodically for NSH Output ... Let's do this with an #LVGL Timer
Article: https://lupyuen.github.io/articles/terminal?9#timer-for-lvgl-terminal
#LVGL Widgets are Not Thread Safe ... So it's probably easier to do polling in our #NuttX Terminal App
Article: https://lupyuen.github.io/articles/terminal?9#timer-for-lvgl-terminal
Here's how we render the #LVGL Widgets in our #NuttX Terminal App for #PinePhone
Article: https://lupyuen.github.io/articles/terminal?10#render-terminal-with-lvgl-widgets
In our #LVGL Terminal App for #PinePhone, we render 3 LVGL Widgets: Keyboard Widget and 2 Text Area Widgets
Article: https://lupyuen.github.io/articles/terminal?10#render-terminal-with-lvgl-widgets
The #LVGL Widgets in our #PinePhone Terminal App are a little messy ... We'll clean them up with LVGL Flex Layout
Article: https://lupyuen.github.io/articles/terminal?10#render-terminal-with-lvgl-widgets
Our #PinePhone Terminal App for #NuttX looks neater ... After cleaning up with #LVGL Flex Layout
Article: https://lupyuen.github.io/articles/terminal?10#render-terminal-with-lvgl-widgets
#NuttX Terminal App for #PinePhone looks better with a Monospaced Font ... But #LVGL Keyboard needs a Proportional Font
Article: https://lupyuen.github.io/articles/terminal?11#set-terminal-font-to-monospace
Here's how we handle input from #LVGL Touchscreen Keyboard ... In our #PinePhone Terminal App for Apache #NuttX RTOS
Article: https://lupyuen.github.io/articles/terminal?12#handle-input-from-lvgl-keyboard
How we render NSH Output in our #LVGL Terminal App for Apache #NuttX RTOS
Article: https://lupyuen.github.io/articles/terminal?15#handle-output-from-nsh-shell
#LVGL Apps for #PinePhone might get too complex ... #ZigLang can help!
Article: https://lupyuen.github.io/articles/terminal?16#lvgl-programming-in-zig
Now we can run #NuttX Console Apps on #PinePhone ... Without a Serial Cable! Here's how we call the #LVGL GUI Library to create a Touchscreen Terminal App
Inside our #PinePhone Terminal for #LVGL and Apache #NuttX RTOS
Article: https://lupyuen.github.io/articles/terminal?2#lvgl-terminal-for-nuttx