pw_console: PluginMixin and plugin infrastructure

- PluginMixin class for handling plugin background tasks and
  thread startup.

- plugins.rst containing the beginnings of how to author plugins.
  As example plugins are added this doc will be fleshed out more.

- Update PwConsoleEmbed with functions to add plugins:
  - add_window_plugins
  - add_top_toolbar
  - add_bottom_toolbar

- style.py: Add named color classes so plugins can easily make use
  of the current theme colors.

- checkbox.py: Make key legends on buttons optional for plugin
  authors.

Change-Id: I05e473717bc1541a10e123d967fa2dbe2966e1cc
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/68681
Reviewed-by: Joe Ethier <jethier@google.com>
Commit-Queue: Anthony DiGirolamo <tonymd@google.com>
11 files changed
tree: 12e707d0e4b5bc53df9b7668a0f417dcdc07d89e
  1. build_overrides/
  2. docker/
  3. docs/
  4. pw_allocator/
  5. pw_analog/
  6. pw_android_toolchain/
  7. pw_arduino_build/
  8. pw_assert/
  9. pw_assert_basic/
  10. pw_assert_log/
  11. pw_base64/
  12. pw_bloat/
  13. pw_blob_store/
  14. pw_bluetooth_hci/
  15. pw_boot/
  16. pw_boot_cortex_m/
  17. pw_build/
  18. pw_build_info/
  19. pw_build_mcuxpresso/
  20. pw_bytes/
  21. pw_checksum/
  22. pw_chrono/
  23. pw_chrono_embos/
  24. pw_chrono_freertos/
  25. pw_chrono_stl/
  26. pw_chrono_threadx/
  27. pw_cli/
  28. pw_console/
  29. pw_containers/
  30. pw_cpu_exception/
  31. pw_cpu_exception_cortex_m/
  32. pw_crypto/
  33. pw_docgen/
  34. pw_doctor/
  35. pw_env_setup/
  36. pw_file/
  37. pw_function/
  38. pw_fuzzer/
  39. pw_hdlc/
  40. pw_hex_dump/
  41. pw_i2c/
  42. pw_interrupt/
  43. pw_interrupt_cortex_m/
  44. pw_kvs/
  45. pw_libc/
  46. pw_log/
  47. pw_log_basic/
  48. pw_log_null/
  49. pw_log_rpc/
  50. pw_log_tokenized/
  51. pw_malloc/
  52. pw_malloc_freelist/
  53. pw_metric/
  54. pw_minimal_cpp_stdlib/
  55. pw_module/
  56. pw_multisink/
  57. pw_package/
  58. pw_persistent_ram/
  59. pw_polyfill/
  60. pw_preprocessor/
  61. pw_presubmit/
  62. pw_protobuf/
  63. pw_protobuf_compiler/
  64. pw_random/
  65. pw_result/
  66. pw_ring_buffer/
  67. pw_router/
  68. pw_rpc/
  69. pw_snapshot/
  70. pw_software_update/
  71. pw_span/
  72. pw_status/
  73. pw_stm32cube_build/
  74. pw_stream/
  75. pw_string/
  76. pw_symbolizer/
  77. pw_sync/
  78. pw_sync_baremetal/
  79. pw_sync_embos/
  80. pw_sync_freertos/
  81. pw_sync_stl/
  82. pw_sync_threadx/
  83. pw_sys_io/
  84. pw_sys_io_arduino/
  85. pw_sys_io_baremetal_lm3s6965evb/
  86. pw_sys_io_baremetal_stm32f429/
  87. pw_sys_io_mcuxpresso/
  88. pw_sys_io_stdio/
  89. pw_system/
  90. pw_target_runner/
  91. pw_thread/
  92. pw_thread_embos/
  93. pw_thread_freertos/
  94. pw_thread_stl/
  95. pw_thread_threadx/
  96. pw_tls_client/
  97. pw_tls_client_boringssl/
  98. pw_tls_client_mbedtls/
  99. pw_tokenizer/
  100. pw_tool/
  101. pw_toolchain/
  102. pw_trace/
  103. pw_trace_tokenized/
  104. pw_transfer/
  105. pw_unit_test/
  106. pw_varint/
  107. pw_watch/
  108. pw_web_ui/
  109. pw_work_queue/
  110. targets/
  111. third_party/
  112. .bazelignore
  113. .bazelrc
  114. .clang-format
  115. .clang-tidy
  116. .eslintrc.json
  117. .gitattributes
  118. .gitignore
  119. .gn
  120. .prettierrc.js
  121. .pylintrc
  122. activate.bat
  123. AUTHORS
  124. bootstrap.bat
  125. bootstrap.sh
  126. BUILD.bazel
  127. BUILD.gn
  128. BUILDCONFIG.gn
  129. CMakeLists.txt
  130. LICENSE
  131. modules.gni
  132. OWNERS
  133. package.json
  134. PW_PLUGINS
  135. README.md
  136. tsconfig.json
  137. WORKSPACE
  138. yarn.lock
README.md

Pigweed

Pigweed is an open source collection of embedded-targeted libraries–or as we like to call them, modules. These modules are building blocks and infrastructure that enable faster and more reliable development on small-footprint MMU-less 32-bit microcontrollers like the STMicroelectronics STM32L452 or the Nordic nRF52832.

For more information please see our website: https://pigweed.dev/

Links