Crates
The Figure 1 shows a simplified view of the dependency graph between the crates of the project.
The smolphone/os workspace contains most of the crates that are libraries, drivers, and demos.
At the base of the graph are the libraries:
smolphone_dictprovides efficient dictionary lookup and parsing for the DICT format.smolphone_fsoffers a file system abstraction and implements it for the Rust’sstd::fsmodule andembedded-sdmmccrate.smolphne_graphicsprovides a framework for creating and rendering a graphical user interface.smolphone_wrenis a safe wrapper around the Wren virtual machine. Wren is a scripting language used to write applications’ logics.smolphone_wren_modulesexposes some SmolPhone libraries as Wren modules that can be accessed in a Wren script.
The smolphone_sharp_memory_lcd and smolphone_tca8418_keypad crates are divers for the display and the keypad used by the SmolPhone Device.
smolphone_apps provides applications such as a dictionary application.
It defines the application logics and the user interface.
smolphone_examples and the crates of the smolphone/device workspace depends on the smolphone_apps crate and set up the runtime.
smolphone_examples relies on the embedded-graphics simulator which in turn relies on SDL.