denko 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (627) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/build_avr.yml +61 -0
  3. data/.github/workflows/build_esp32.yml +58 -0
  4. data/.github/workflows/build_esp8266.yml +57 -0
  5. data/.github/workflows/build_megaavr.yml +61 -0
  6. data/.github/workflows/build_rp2040.yml +61 -0
  7. data/.github/workflows/build_sam3x.yml +59 -0
  8. data/.github/workflows/build_samd.yml +61 -0
  9. data/.github/workflows/ruby.yml +47 -0
  10. data/.gitignore +24 -0
  11. data/.gitmodules +3 -0
  12. data/.vscode/settings.json +5 -0
  13. data/.vscode/tasks.json +20 -0
  14. data/CHANGELOG.md +466 -0
  15. data/DEPS_CLI.md +80 -0
  16. data/DEPS_IDE.md +120 -0
  17. data/Gemfile +4 -0
  18. data/HARDWARE.md +195 -0
  19. data/LICENSE +22 -0
  20. data/README.md +152 -0
  21. data/Rakefile +11 -0
  22. data/bin/denko +22 -0
  23. data/build +27 -0
  24. data/denko.gemspec +47 -0
  25. data/examples/advanced/rotary_encoder_mac_volume.rb +48 -0
  26. data/examples/advanced/ssd1306_time_temp_rh.rb +48 -0
  27. data/examples/analog_io/ads1118.rb +74 -0
  28. data/examples/analog_io/dac_loopback.rb +32 -0
  29. data/examples/analog_io/input.rb +52 -0
  30. data/examples/connection/tcp.rb +34 -0
  31. data/examples/digital_io/rotary_encoder.rb +26 -0
  32. data/examples/display/hd44780.png +0 -0
  33. data/examples/display/hd44780.rb +39 -0
  34. data/examples/display/ssd1306.rb +40 -0
  35. data/examples/display/ssd1306_s2_pico.rb +29 -0
  36. data/examples/eeprom/built_in.rb +32 -0
  37. data/examples/i2c/search.rb +53 -0
  38. data/examples/led/apa102_bounce.rb +33 -0
  39. data/examples/led/apa102_breathe.rb +45 -0
  40. data/examples/led/builtin_blink.rb +12 -0
  41. data/examples/led/seven_segment_char_echo.rb +15 -0
  42. data/examples/led/ws2812_bounce.rb +32 -0
  43. data/examples/led/ws2812_builtin_blink.rb +21 -0
  44. data/examples/motor/l298.rb +43 -0
  45. data/examples/motor/servo.rb +16 -0
  46. data/examples/motor/stepper.png +0 -0
  47. data/examples/motor/stepper.rb +43 -0
  48. data/examples/pulse_io/buzzer.rb +30 -0
  49. data/examples/pulse_io/ir_transmitter.rb +55 -0
  50. data/examples/rtc/ds3231.rb +48 -0
  51. data/examples/sensor/aht10.rb +15 -0
  52. data/examples/sensor/aht20.rb +15 -0
  53. data/examples/sensor/bme280.rb +75 -0
  54. data/examples/sensor/dht.rb +24 -0
  55. data/examples/sensor/ds18b20.rb +58 -0
  56. data/examples/sensor/htu21d.rb +54 -0
  57. data/examples/sensor/htu31d.rb +31 -0
  58. data/examples/spi/input_register.rb +50 -0
  59. data/examples/spi/output_register.rb +49 -0
  60. data/examples/spi/ssd_through_register.rb +40 -0
  61. data/examples/spi/two_registers.rb +46 -0
  62. data/examples/uart/bit_bang_read.rb +16 -0
  63. data/examples/uart/bit_bang_write.rb +16 -0
  64. data/examples/uart/board_passthrough.rb +34 -0
  65. data/examples/uart/hardware_loopback.rb +16 -0
  66. data/lib/denko/analog_io/ads1118.rb +182 -0
  67. data/lib/denko/analog_io/input.rb +79 -0
  68. data/lib/denko/analog_io/output.rb +20 -0
  69. data/lib/denko/analog_io/potentiometer.rb +15 -0
  70. data/lib/denko/analog_io/sensor.rb +6 -0
  71. data/lib/denko/analog_io.rb +9 -0
  72. data/lib/denko/behaviors/board_proxy.rb +23 -0
  73. data/lib/denko/behaviors/bus_controller.rb +11 -0
  74. data/lib/denko/behaviors/bus_controller_addressed.rb +15 -0
  75. data/lib/denko/behaviors/bus_peripheral.rb +21 -0
  76. data/lib/denko/behaviors/bus_peripheral_addressed.rb +15 -0
  77. data/lib/denko/behaviors/callbacks.rb +67 -0
  78. data/lib/denko/behaviors/component.rb +48 -0
  79. data/lib/denko/behaviors/input_pin.rb +24 -0
  80. data/lib/denko/behaviors/listener.rb +22 -0
  81. data/lib/denko/behaviors/multi_pin.rb +72 -0
  82. data/lib/denko/behaviors/output_pin.rb +13 -0
  83. data/lib/denko/behaviors/poller.rb +31 -0
  84. data/lib/denko/behaviors/reader.rb +49 -0
  85. data/lib/denko/behaviors/single_pin.rb +26 -0
  86. data/lib/denko/behaviors/state.rb +24 -0
  87. data/lib/denko/behaviors/subcomponents.rb +35 -0
  88. data/lib/denko/behaviors/threaded.rb +54 -0
  89. data/lib/denko/behaviors.rb +26 -0
  90. data/lib/denko/board/core.rb +151 -0
  91. data/lib/denko/board/eeprom.rb +20 -0
  92. data/lib/denko/board/i2c.rb +68 -0
  93. data/lib/denko/board/infrared.rb +18 -0
  94. data/lib/denko/board/led_array.rb +18 -0
  95. data/lib/denko/board/map.rb +46 -0
  96. data/lib/denko/board/message_pack.rb +7 -0
  97. data/lib/denko/board/one_wire.rb +34 -0
  98. data/lib/denko/board/pulse.rb +26 -0
  99. data/lib/denko/board/servo.rb +22 -0
  100. data/lib/denko/board/spi.rb +65 -0
  101. data/lib/denko/board/spi_bit_bang.rb +41 -0
  102. data/lib/denko/board/tone.rb +23 -0
  103. data/lib/denko/board/uart.rb +42 -0
  104. data/lib/denko/board/uart_bit_bang.rb +33 -0
  105. data/lib/denko/board.rb +104 -0
  106. data/lib/denko/connection/base.rb +75 -0
  107. data/lib/denko/connection/board_uart.rb +36 -0
  108. data/lib/denko/connection/flow_control.rb +153 -0
  109. data/lib/denko/connection/handshake.rb +60 -0
  110. data/lib/denko/connection/serial.rb +90 -0
  111. data/lib/denko/connection/tcp.rb +44 -0
  112. data/lib/denko/connection.rb +10 -0
  113. data/lib/denko/digital_io/button.rb +8 -0
  114. data/lib/denko/digital_io/input.rb +44 -0
  115. data/lib/denko/digital_io/output.rb +47 -0
  116. data/lib/denko/digital_io/relay.rb +6 -0
  117. data/lib/denko/digital_io/rotary_encoder.rb +107 -0
  118. data/lib/denko/digital_io.rb +9 -0
  119. data/lib/denko/display/canvas.rb +282 -0
  120. data/lib/denko/display/hd44780.rb +266 -0
  121. data/lib/denko/display/ssd1306.rb +179 -0
  122. data/lib/denko/display.rb +7 -0
  123. data/lib/denko/eeprom/built_in.rb +69 -0
  124. data/lib/denko/eeprom.rb +5 -0
  125. data/lib/denko/fonts.rb +106 -0
  126. data/lib/denko/i2c/bus.rb +52 -0
  127. data/lib/denko/i2c/peripheral.rb +38 -0
  128. data/lib/denko/i2c.rb +6 -0
  129. data/lib/denko/led/apa102.rb +87 -0
  130. data/lib/denko/led/base.rb +12 -0
  131. data/lib/denko/led/rgb.rb +38 -0
  132. data/lib/denko/led/seven_segment.rb +111 -0
  133. data/lib/denko/led/ws2812.rb +48 -0
  134. data/lib/denko/led.rb +13 -0
  135. data/lib/denko/message.rb +92 -0
  136. data/lib/denko/motor/l298.rb +49 -0
  137. data/lib/denko/motor/servo.rb +51 -0
  138. data/lib/denko/motor/stepper.rb +71 -0
  139. data/lib/denko/motor.rb +7 -0
  140. data/lib/denko/one_wire/bus.rb +61 -0
  141. data/lib/denko/one_wire/bus_enumeration.rb +88 -0
  142. data/lib/denko/one_wire/constants.rb +17 -0
  143. data/lib/denko/one_wire/helper.rb +33 -0
  144. data/lib/denko/one_wire/peripheral.rb +62 -0
  145. data/lib/denko/one_wire.rb +9 -0
  146. data/lib/denko/pulse_io/buzzer.rb +25 -0
  147. data/lib/denko/pulse_io/ir_transmitter.rb +22 -0
  148. data/lib/denko/pulse_io/pwm_output.rb +34 -0
  149. data/lib/denko/pulse_io.rb +7 -0
  150. data/lib/denko/rtc/ds3231.rb +48 -0
  151. data/lib/denko/rtc.rb +5 -0
  152. data/lib/denko/sensor/aht.rb +165 -0
  153. data/lib/denko/sensor/bme280.rb +366 -0
  154. data/lib/denko/sensor/dht.rb +43 -0
  155. data/lib/denko/sensor/ds18b20.rb +74 -0
  156. data/lib/denko/sensor/htu21d.rb +168 -0
  157. data/lib/denko/sensor/htu31d.rb +187 -0
  158. data/lib/denko/sensor/virtual.rb +42 -0
  159. data/lib/denko/sensor.rb +13 -0
  160. data/lib/denko/spi/base_register.rb +37 -0
  161. data/lib/denko/spi/bit_bang.rb +74 -0
  162. data/lib/denko/spi/bus.rb +44 -0
  163. data/lib/denko/spi/input_register.rb +130 -0
  164. data/lib/denko/spi/output_register.rb +67 -0
  165. data/lib/denko/spi/peripheral.rb +43 -0
  166. data/lib/denko/spi.rb +10 -0
  167. data/lib/denko/uart/bit_bang.rb +69 -0
  168. data/lib/denko/uart/hardware.rb +65 -0
  169. data/lib/denko/uart.rb +6 -0
  170. data/lib/denko/version.rb +3 -0
  171. data/lib/denko.rb +39 -0
  172. data/lib/denko_cli/generator.rb +171 -0
  173. data/lib/denko_cli/helper.rb +29 -0
  174. data/lib/denko_cli/missing_files.txt +20 -0
  175. data/lib/denko_cli/packages.rb +101 -0
  176. data/lib/denko_cli/parser.rb +73 -0
  177. data/lib/denko_cli/targets.rb +30 -0
  178. data/lib/denko_cli/targets.txt +113 -0
  179. data/lib/denko_cli/usage.txt +34 -0
  180. data/lib/denko_cli.rb +18 -0
  181. data/src/denko_ethernet.ino +78 -0
  182. data/src/denko_serial.ino +41 -0
  183. data/src/denko_wifi.ino +157 -0
  184. data/src/lib/Denko.cpp +330 -0
  185. data/src/lib/Denko.h +259 -0
  186. data/src/lib/DenkoCoreIO.cpp +322 -0
  187. data/src/lib/DenkoDefines.h +116 -0
  188. data/src/lib/DenkoEEPROM.cpp +64 -0
  189. data/src/lib/DenkoI2C.cpp +155 -0
  190. data/src/lib/DenkoIROut.cpp +33 -0
  191. data/src/lib/DenkoIROutESP.cpp +26 -0
  192. data/src/lib/DenkoLEDArray.cpp +49 -0
  193. data/src/lib/DenkoOneWire.cpp +156 -0
  194. data/src/lib/DenkoPulseInput.cpp +57 -0
  195. data/src/lib/DenkoSPI.cpp +165 -0
  196. data/src/lib/DenkoSPIBB.cpp +156 -0
  197. data/src/lib/DenkoServo.cpp +83 -0
  198. data/src/lib/DenkoTone.cpp +25 -0
  199. data/src/lib/DenkoUART.cpp +118 -0
  200. data/src/lib/DenkoUARTBB.cpp +62 -0
  201. data/target.yml +3 -0
  202. data/test/analog_io/input_test.rb +38 -0
  203. data/test/analog_io/output_test.rb +26 -0
  204. data/test/analog_io/potentiometer_test.rb +62 -0
  205. data/test/behaviors/board_proxy_test.rb +24 -0
  206. data/test/behaviors/bus_controller_addressed_test.rb +40 -0
  207. data/test/behaviors/bus_controller_test.rb +28 -0
  208. data/test/behaviors/bus_peripheral_addressed.rb +44 -0
  209. data/test/behaviors/bus_peripheral_test.rb +39 -0
  210. data/test/behaviors/callbacks_test.rb +118 -0
  211. data/test/behaviors/component_test.rb +56 -0
  212. data/test/behaviors/input_pin_test.rb +42 -0
  213. data/test/behaviors/listener_test.rb +60 -0
  214. data/test/behaviors/multi_pin_test.rb +70 -0
  215. data/test/behaviors/output_pin_test.rb +27 -0
  216. data/test/behaviors/poller_test.rb +64 -0
  217. data/test/behaviors/reader_test.rb +68 -0
  218. data/test/behaviors/single_pin_test.rb +41 -0
  219. data/test/behaviors/subcomponents_test.rb +75 -0
  220. data/test/behaviors/threaded_test.rb +98 -0
  221. data/test/board/board_test.rb +130 -0
  222. data/test/board/core_test.rb +182 -0
  223. data/test/board/eeprom_test.rb +34 -0
  224. data/test/board/helper_test.rb +38 -0
  225. data/test/board/i2c_test.rb +114 -0
  226. data/test/board/infrared_test.rb +37 -0
  227. data/test/board/message_test.rb +54 -0
  228. data/test/board/one_wire_test.rb +69 -0
  229. data/test/board/pulse_test.rb +51 -0
  230. data/test/board/servo_test.rb +47 -0
  231. data/test/board/spi_test.rb +97 -0
  232. data/test/board/tone_test.rb +42 -0
  233. data/test/connection/serial_test.rb +172 -0
  234. data/test/connection/tcp_test.rb +37 -0
  235. data/test/digital_io/input_test.rb +65 -0
  236. data/test/digital_io/output_test.rb +64 -0
  237. data/test/digital_io/rotary_encoder_test.rb +99 -0
  238. data/test/display/hd44780_test.rb +23 -0
  239. data/test/eeprom/built_in_test.rb +61 -0
  240. data/test/i2c/bus_test.rb +66 -0
  241. data/test/i2c/peripheral_test.rb +50 -0
  242. data/test/led/base_test.rb +24 -0
  243. data/test/led/rgb_test.rb +64 -0
  244. data/test/led/seven_segment_test.rb +86 -0
  245. data/test/motor/servo_test.rb +62 -0
  246. data/test/motor/stepper_test.rb +51 -0
  247. data/test/one_wire/bus_enumerator_test.rb +134 -0
  248. data/test/one_wire/bus_test.rb +142 -0
  249. data/test/one_wire/helper_test.rb +18 -0
  250. data/test/one_wire/peripheral_test.rb +158 -0
  251. data/test/pulse_io/buzzer_test.rb +48 -0
  252. data/test/pulse_io/ir_transmitter_test.rb +38 -0
  253. data/test/pulse_io/pwm_output_test.rb +72 -0
  254. data/test/rtc/ds3231_test.rb +55 -0
  255. data/test/sensor/dht_test.rb +64 -0
  256. data/test/sensor/ds18b20_test.rb +107 -0
  257. data/test/spi/base_register_test.rb +34 -0
  258. data/test/spi/bus_test.rb +76 -0
  259. data/test/spi/input_register_test.rb +140 -0
  260. data/test/spi/output_register_test.rb +93 -0
  261. data/test/test_helper.rb +223 -0
  262. data/test/uart/bitbang_test.rb +37 -0
  263. data/tutorial/01-led/led.fzz +0 -0
  264. data/tutorial/01-led/led.pdf +0 -0
  265. data/tutorial/01-led/led.rb +73 -0
  266. data/tutorial/02-button/button.fzz +0 -0
  267. data/tutorial/02-button/button.pdf +0 -0
  268. data/tutorial/02-button/button.rb +64 -0
  269. data/tutorial/03-potentiometer/potentiometer.fzz +0 -0
  270. data/tutorial/03-potentiometer/potentiometer.pdf +0 -0
  271. data/tutorial/03-potentiometer/potentiometer.rb +62 -0
  272. data/tutorial/04-pwm_led/pwm_led.fzz +0 -0
  273. data/tutorial/04-pwm_led/pwm_led.pdf +0 -0
  274. data/tutorial/04-pwm_led/pwm_led.rb +66 -0
  275. data/tutorial/05-rgb_led/rgb_led.fzz +0 -0
  276. data/tutorial/05-rgb_led/rgb_led.pdf +0 -0
  277. data/tutorial/05-rgb_led/rgb_led.rb +58 -0
  278. data/tutorial/05-rgb_led/rgb_mapping.rb +76 -0
  279. data/vendor/board-maps/.gitignore +56 -0
  280. data/vendor/board-maps/.gitmodules +21 -0
  281. data/vendor/board-maps/BoardMap.h +1364 -0
  282. data/vendor/board-maps/README.md +51 -0
  283. data/vendor/board-maps/lib/boards_parser.rb +66 -0
  284. data/vendor/board-maps/lib/header_parser.rb +164 -0
  285. data/vendor/board-maps/run.rb +47 -0
  286. data/vendor/board-maps/yaml/0XCB_HELIOS.yml +48 -0
  287. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S2.yml +25 -0
  288. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S2_REVTFT.yml +25 -0
  289. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S2_TFT.yml +27 -0
  290. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S3.yml +29 -0
  291. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S3_NOPSRAM.yml +29 -0
  292. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S3_REVTFT.yml +25 -0
  293. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S3_TFT.yml +27 -0
  294. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32_V2.yml +30 -0
  295. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040.yml +48 -0
  296. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_CAN.yml +48 -0
  297. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_DVI.yml +48 -0
  298. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_PROP_MAKER.yml +48 -0
  299. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_RFM.yml +48 -0
  300. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_SCORPIO.yml +48 -0
  301. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_THINKINK.yml +48 -0
  302. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_USB_HOST.yml +48 -0
  303. data/vendor/board-maps/yaml/ADAFRUIT_ITSYBITSY_ESP32.yml +24 -0
  304. data/vendor/board-maps/yaml/ADAFRUIT_ITSYBITSY_RP2040.yml +48 -0
  305. data/vendor/board-maps/yaml/ADAFRUIT_KB2040_RP2040.yml +48 -0
  306. data/vendor/board-maps/yaml/ADAFRUIT_MACROPAD_RP2040.yml +48 -0
  307. data/vendor/board-maps/yaml/ADAFRUIT_MATRIXPORTAL_ESP32S3.yml +16 -0
  308. data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32C3.yml +12 -0
  309. data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32S2.yml +22 -0
  310. data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32S3_NOPSRAM.yml +20 -0
  311. data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32_PICO.yml +27 -0
  312. data/vendor/board-maps/yaml/ADAFRUIT_QTPY_RP2040.yml +48 -0
  313. data/vendor/board-maps/yaml/ADAFRUIT_STEMMAFRIEND_RP2040.yml +48 -0
  314. data/vendor/board-maps/yaml/ADAFRUIT_TRINKEYQT_RP2040.yml +48 -0
  315. data/vendor/board-maps/yaml/ALKS.yml +34 -0
  316. data/vendor/board-maps/yaml/AMPERKA_WIFI_SLOT.yml +16 -0
  317. data/vendor/board-maps/yaml/AVR_ADK.yml +24 -0
  318. data/vendor/board-maps/yaml/AVR_BT.yml +16 -0
  319. data/vendor/board-maps/yaml/AVR_CIRCUITPLAY.yml +14 -0
  320. data/vendor/board-maps/yaml/AVR_DUEMILANOVE.yml +16 -0
  321. data/vendor/board-maps/yaml/AVR_ESPLORA.yml +20 -0
  322. data/vendor/board-maps/yaml/AVR_ETHERNET.yml +16 -0
  323. data/vendor/board-maps/yaml/AVR_FIO.yml +16 -0
  324. data/vendor/board-maps/yaml/AVR_GEMMA.yml +6 -0
  325. data/vendor/board-maps/yaml/AVR_INDUSTRIAL101.yml +20 -0
  326. data/vendor/board-maps/yaml/AVR_LEONARDO.yml +20 -0
  327. data/vendor/board-maps/yaml/AVR_LEONARDO_ETH.yml +20 -0
  328. data/vendor/board-maps/yaml/AVR_LILYPAD.yml +16 -0
  329. data/vendor/board-maps/yaml/AVR_LILYPAD_USB.yml +20 -0
  330. data/vendor/board-maps/yaml/AVR_LININO_ONE.yml +20 -0
  331. data/vendor/board-maps/yaml/AVR_MEGA.yml +24 -0
  332. data/vendor/board-maps/yaml/AVR_MEGA2560.yml +24 -0
  333. data/vendor/board-maps/yaml/AVR_MICRO.yml +20 -0
  334. data/vendor/board-maps/yaml/AVR_MINI.yml +16 -0
  335. data/vendor/board-maps/yaml/AVR_NANO.yml +16 -0
  336. data/vendor/board-maps/yaml/AVR_NANO_EVERY.yml +22 -0
  337. data/vendor/board-maps/yaml/AVR_NG.yml +16 -0
  338. data/vendor/board-maps/yaml/AVR_PRO.yml +16 -0
  339. data/vendor/board-maps/yaml/AVR_ROBOT_CONTROL.yml +22 -0
  340. data/vendor/board-maps/yaml/AVR_ROBOT_MOTOR.yml +19 -0
  341. data/vendor/board-maps/yaml/AVR_UNO.yml +16 -0
  342. data/vendor/board-maps/yaml/AVR_UNO_WIFI_DEV_ED.yml +16 -0
  343. data/vendor/board-maps/yaml/AVR_UNO_WIFI_REV2.yml +22 -0
  344. data/vendor/board-maps/yaml/AVR_YUN.yml +20 -0
  345. data/vendor/board-maps/yaml/AVR_YUNMINI.yml +20 -0
  346. data/vendor/board-maps/yaml/AirM2M_CORE_ESP32C3.yml +14 -0
  347. data/vendor/board-maps/yaml/BEE_DATA_LOGGER.yml +39 -0
  348. data/vendor/board-maps/yaml/BPI_BIT.yml +9 -0
  349. data/vendor/board-maps/yaml/BPI_LEAF_S3.yml +31 -0
  350. data/vendor/board-maps/yaml/BRIDGETEK_IDM2040-7A.yml +48 -0
  351. data/vendor/board-maps/yaml/BeeMotionS3.yml +40 -0
  352. data/vendor/board-maps/yaml/Bee_Motion.yml +27 -0
  353. data/vendor/board-maps/yaml/Bee_Motion_Mini.yml +1 -0
  354. data/vendor/board-maps/yaml/Bee_S3.yml +38 -0
  355. data/vendor/board-maps/yaml/CHALLENGER_2040_LORA_RP2040.yml +39 -0
  356. data/vendor/board-maps/yaml/CHALLENGER_2040_LTE_RP2040.yml +38 -0
  357. data/vendor/board-maps/yaml/CHALLENGER_2040_NFC_RP2040.yml +32 -0
  358. data/vendor/board-maps/yaml/CHALLENGER_2040_SDRTC_RP2040.yml +36 -0
  359. data/vendor/board-maps/yaml/CHALLENGER_2040_SUBGHZ_RP2040.yml +39 -0
  360. data/vendor/board-maps/yaml/CHALLENGER_2040_UWB_RP2040.yml +39 -0
  361. data/vendor/board-maps/yaml/CHALLENGER_2040_WIFI_BLE_RP2040.yml +42 -0
  362. data/vendor/board-maps/yaml/CHALLENGER_2040_WIFI_RP2040.yml +38 -0
  363. data/vendor/board-maps/yaml/CHALLENGER_NB_2040_WIFI_RP2040.yml +38 -0
  364. data/vendor/board-maps/yaml/CRABIK_SLOT_ESP32_S3.yml +19 -0
  365. data/vendor/board-maps/yaml/CYTRON_MAKER_FEATHER_AIOT_S3.yml +26 -0
  366. data/vendor/board-maps/yaml/CYTRON_MAKER_NANO_RP2040.yml +48 -0
  367. data/vendor/board-maps/yaml/CYTRON_MAKER_PI_RP2040.yml +48 -0
  368. data/vendor/board-maps/yaml/CoreESP32.yml +49 -0
  369. data/vendor/board-maps/yaml/D1_MINI32.yml +36 -0
  370. data/vendor/board-maps/yaml/D1_UNO32.yml +28 -0
  371. data/vendor/board-maps/yaml/DATANOISETV_PICOADK.yml +48 -0
  372. data/vendor/board-maps/yaml/DENKY.yml +26 -0
  373. data/vendor/board-maps/yaml/DENKY_PICOV3.yml +26 -0
  374. data/vendor/board-maps/yaml/DENKY_WROOM32.yml +26 -0
  375. data/vendor/board-maps/yaml/DEPARTMENT_OF_ALCHEMY_MINIMAIN_ESP32S2.yml +26 -0
  376. data/vendor/board-maps/yaml/DFROBOT_BEETLE_ESP32_C3.yml +14 -0
  377. data/vendor/board-maps/yaml/DFROBOT_BEETLE_RP2040.yml +48 -0
  378. data/vendor/board-maps/yaml/DFROBOT_FIREBEETLE_2_ESP32E.yml +44 -0
  379. data/vendor/board-maps/yaml/DFROBOT_FIREBEETLE_2_ESP32S3.yml +38 -0
  380. data/vendor/board-maps/yaml/DFROBOT_ROMEO_ESP32S3.yml +7 -0
  381. data/vendor/board-maps/yaml/DPU_ESP32.yml +26 -0
  382. data/vendor/board-maps/yaml/DYDK.yml +38 -0
  383. data/vendor/board-maps/yaml/DYDK1A.yml +37 -0
  384. data/vendor/board-maps/yaml/DYDK1Av2.yml +45 -0
  385. data/vendor/board-maps/yaml/DYG.yml +20 -0
  386. data/vendor/board-maps/yaml/DYM.yml +40 -0
  387. data/vendor/board-maps/yaml/DYMv2.yml +39 -0
  388. data/vendor/board-maps/yaml/D_Duino_32.yml +29 -0
  389. data/vendor/board-maps/yaml/ELECTRONICCATS_HUNTERCAT_NFC.yml +44 -0
  390. data/vendor/board-maps/yaml/ESP320.yml +8 -0
  391. data/vendor/board-maps/yaml/ESP32C3_DEV.yml +14 -0
  392. data/vendor/board-maps/yaml/ESP32C3_M1_I_KIT.yml +13 -0
  393. data/vendor/board-maps/yaml/ESP32S2_DEV.yml +33 -0
  394. data/vendor/board-maps/yaml/ESP32S2_THING_PLUS.yml +34 -0
  395. data/vendor/board-maps/yaml/ESP32S2_USB.yml +33 -0
  396. data/vendor/board-maps/yaml/ESP32S3_CAM_LCD.yml +7 -0
  397. data/vendor/board-maps/yaml/ESP32S3_DEV.yml +38 -0
  398. data/vendor/board-maps/yaml/ESP32_DEV.yml +26 -0
  399. data/vendor/board-maps/yaml/ESP32_DEVKIT_LIPO.yml +26 -0
  400. data/vendor/board-maps/yaml/ESP32_EVB.yml +7 -0
  401. data/vendor/board-maps/yaml/ESP32_GATEWAY.yml +13 -0
  402. data/vendor/board-maps/yaml/ESP32_GATEWAY_C.yml +13 -0
  403. data/vendor/board-maps/yaml/ESP32_GATEWAY_E.yml +13 -0
  404. data/vendor/board-maps/yaml/ESP32_GATEWAY_F.yml +13 -0
  405. data/vendor/board-maps/yaml/ESP32_IOT_REDBOARD.yml +27 -0
  406. data/vendor/board-maps/yaml/ESP32_MICROMOD.yml +24 -0
  407. data/vendor/board-maps/yaml/ESP32_PICO.yml +26 -0
  408. data/vendor/board-maps/yaml/ESP32_POE.yml +7 -0
  409. data/vendor/board-maps/yaml/ESP32_POE_ISO.yml +7 -0
  410. data/vendor/board-maps/yaml/ESP32_S3_BOX.yml +16 -0
  411. data/vendor/board-maps/yaml/ESP32_S3_USB_OTG.yml +11 -0
  412. data/vendor/board-maps/yaml/ESP32_THING.yml +27 -0
  413. data/vendor/board-maps/yaml/ESP32_THING_PLUS.yml +30 -0
  414. data/vendor/board-maps/yaml/ESP32_THING_PLUS_C.yml +30 -0
  415. data/vendor/board-maps/yaml/ESP32_WROOM_DA.yml +26 -0
  416. data/vendor/board-maps/yaml/ESP32_WROVER_KIT.yml +26 -0
  417. data/vendor/board-maps/yaml/ESP8266_ADAFRUIT_HUZZAH.yml +9 -0
  418. data/vendor/board-maps/yaml/ESP8266_AGRUMINO_LEMON_V4.yml +8 -0
  419. data/vendor/board-maps/yaml/ESP8266_ARDUINO_PRIMO.yml +7 -0
  420. data/vendor/board-maps/yaml/ESP8266_ARDUINO_STAR_OTTO.yml +7 -0
  421. data/vendor/board-maps/yaml/ESP8266_ARDUINO_UNOWIFI.yml +9 -0
  422. data/vendor/board-maps/yaml/ESP8266_ESP01.yml +9 -0
  423. data/vendor/board-maps/yaml/ESP8266_ESP07.yml +20 -0
  424. data/vendor/board-maps/yaml/ESP8266_ESP12.yml +20 -0
  425. data/vendor/board-maps/yaml/ESP8266_ESP13.yml +17 -0
  426. data/vendor/board-maps/yaml/ESP8266_ESP210.yml +9 -0
  427. data/vendor/board-maps/yaml/ESP8266_ESPECTRO_CORE.yml +9 -0
  428. data/vendor/board-maps/yaml/ESP8266_ESPINO_ESP12.yml +9 -0
  429. data/vendor/board-maps/yaml/ESP8266_ESPINO_ESP13.yml +9 -0
  430. data/vendor/board-maps/yaml/ESP8266_ESPRESSO_LITE_V1.yml +9 -0
  431. data/vendor/board-maps/yaml/ESP8266_ESPRESSO_LITE_V2.yml +9 -0
  432. data/vendor/board-maps/yaml/ESP8266_GENERIC.yml +9 -0
  433. data/vendor/board-maps/yaml/ESP8266_INVENT_ONE.yml +22 -0
  434. data/vendor/board-maps/yaml/ESP8266_NODEMCU_ESP12.yml +20 -0
  435. data/vendor/board-maps/yaml/ESP8266_NODEMCU_ESP12E.yml +20 -0
  436. data/vendor/board-maps/yaml/ESP8266_OAK.yml +9 -0
  437. data/vendor/board-maps/yaml/ESP8266_PHOENIX_V1.yml +9 -0
  438. data/vendor/board-maps/yaml/ESP8266_PHOENIX_V2.yml +9 -0
  439. data/vendor/board-maps/yaml/ESP8266_SCHIRMILABS_EDUINO_WIFI.yml +25 -0
  440. data/vendor/board-maps/yaml/ESP8266_SONOFF_BASIC.yml +9 -0
  441. data/vendor/board-maps/yaml/ESP8266_SONOFF_S20.yml +9 -0
  442. data/vendor/board-maps/yaml/ESP8266_SONOFF_SV.yml +9 -0
  443. data/vendor/board-maps/yaml/ESP8266_SONOFF_TH.yml +9 -0
  444. data/vendor/board-maps/yaml/ESP8266_THING.yml +9 -0
  445. data/vendor/board-maps/yaml/ESP8266_THING_DEV.yml +9 -0
  446. data/vendor/board-maps/yaml/ESP8266_WEMOS_D1MINI.yml +18 -0
  447. data/vendor/board-maps/yaml/ESP8266_WEMOS_D1MINILITE.yml +18 -0
  448. data/vendor/board-maps/yaml/ESP8266_WEMOS_D1MINIPRO.yml +18 -0
  449. data/vendor/board-maps/yaml/ESP8266_WEMOS_D1R1.yml +25 -0
  450. data/vendor/board-maps/yaml/ESP8266_WEMOS_D1WROOM02.yml +18 -0
  451. data/vendor/board-maps/yaml/ESP8266_WIO_LINK.yml +9 -0
  452. data/vendor/board-maps/yaml/ESP8266_XINABOX_CW01.yml +9 -0
  453. data/vendor/board-maps/yaml/ESPECTRO32.yml +27 -0
  454. data/vendor/board-maps/yaml/ESPea32.yml +27 -0
  455. data/vendor/board-maps/yaml/ESPino32.yml +27 -0
  456. data/vendor/board-maps/yaml/ET-Board.yml +26 -0
  457. data/vendor/board-maps/yaml/EXTREMEELEXTRONICS_RC2040.yml +46 -0
  458. data/vendor/board-maps/yaml/Edgebox-ESP-100.yml +7 -0
  459. data/vendor/board-maps/yaml/FEATHERS2.yml +33 -0
  460. data/vendor/board-maps/yaml/FEATHERS2NEO.yml +30 -0
  461. data/vendor/board-maps/yaml/FEATHERS3.yml +29 -0
  462. data/vendor/board-maps/yaml/FEATHER_ESP32.yml +28 -0
  463. data/vendor/board-maps/yaml/FLYBOARD2040_CORE.yml +48 -0
  464. data/vendor/board-maps/yaml/FRANZININHO_WIFI.yml +33 -0
  465. data/vendor/board-maps/yaml/FRANZININHO_WIFI_MSC.yml +33 -0
  466. data/vendor/board-maps/yaml/FROG_ESP32.yml +26 -0
  467. data/vendor/board-maps/yaml/FUNHOUSE_ESP32S2.yml +22 -0
  468. data/vendor/board-maps/yaml/GEN4_IOD.yml +9 -0
  469. data/vendor/board-maps/yaml/GENERIC_RP2040.yml +48 -0
  470. data/vendor/board-maps/yaml/HEALTHYPI_4.yml +27 -0
  471. data/vendor/board-maps/yaml/HONEYLEMON.yml +27 -0
  472. data/vendor/board-maps/yaml/HORNBILL_ESP32_DEV.yml +27 -0
  473. data/vendor/board-maps/yaml/HORNBILL_ESP32_MINIMA.yml +16 -0
  474. data/vendor/board-maps/yaml/ILABS_2040_RPICO32_RP2040.yml +47 -0
  475. data/vendor/board-maps/yaml/IMBRIOS_LOGSENS_V1P1.yml +19 -0
  476. data/vendor/board-maps/yaml/INTOROBOT_ESP32_DEV.yml +34 -0
  477. data/vendor/board-maps/yaml/LILYGO_T_DISPLAY_S3.yml +26 -0
  478. data/vendor/board-maps/yaml/LOLIN32.yml +27 -0
  479. data/vendor/board-maps/yaml/LOLIN32_LITE.yml +27 -0
  480. data/vendor/board-maps/yaml/LOLIN_C3_MINI.yml +14 -0
  481. data/vendor/board-maps/yaml/LOLIN_D32.yml +27 -0
  482. data/vendor/board-maps/yaml/LOLIN_D32_PRO.yml +27 -0
  483. data/vendor/board-maps/yaml/LOLIN_S2_MINI.yml +34 -0
  484. data/vendor/board-maps/yaml/LOLIN_S2_PICO.yml +34 -0
  485. data/vendor/board-maps/yaml/LOLIN_S3.yml +32 -0
  486. data/vendor/board-maps/yaml/LOLIN_S3_MINI.yml +32 -0
  487. data/vendor/board-maps/yaml/LOLIN_S3_PRO.yml +32 -0
  488. data/vendor/board-maps/yaml/Lion_Bit_Dev_Board.yml +18 -0
  489. data/vendor/board-maps/yaml/LoPy.yml +27 -0
  490. data/vendor/board-maps/yaml/LoPy4.yml +27 -0
  491. data/vendor/board-maps/yaml/M5STACK_CORES3.yml +8 -0
  492. data/vendor/board-maps/yaml/M5STACK_Core2.yml +9 -0
  493. data/vendor/board-maps/yaml/M5STACK_FIRE.yml +10 -0
  494. data/vendor/board-maps/yaml/M5Stack-Timer-CAM.yml +10 -0
  495. data/vendor/board-maps/yaml/M5Stack_ATOM.yml +10 -0
  496. data/vendor/board-maps/yaml/M5Stack_ATOMS3.yml +7 -0
  497. data/vendor/board-maps/yaml/M5Stack_CoreInk.yml +9 -0
  498. data/vendor/board-maps/yaml/M5Stack_Core_ESP32.yml +10 -0
  499. data/vendor/board-maps/yaml/M5Stack_Station.yml +10 -0
  500. data/vendor/board-maps/yaml/M5Stick_C.yml +10 -0
  501. data/vendor/board-maps/yaml/MAGTAG29_ESP32S2.yml +21 -0
  502. data/vendor/board-maps/yaml/MELOPERO_COOKIE_RP2040.yml +48 -0
  503. data/vendor/board-maps/yaml/MELOPERO_SHAKE_RP2040.yml +48 -0
  504. data/vendor/board-maps/yaml/METRO_ESP32S2.yml +34 -0
  505. data/vendor/board-maps/yaml/MGBOT_IOTIK32A.yml +27 -0
  506. data/vendor/board-maps/yaml/MGBOT_IOTIK32B.yml +27 -0
  507. data/vendor/board-maps/yaml/MH_ET_LIVE_ESP32DEVKIT.yml +27 -0
  508. data/vendor/board-maps/yaml/MH_ET_LIVE_ESP32MINIKIT.yml +27 -0
  509. data/vendor/board-maps/yaml/MICROS2.yml +34 -0
  510. data/vendor/board-maps/yaml/MOD_WIFI_ESP8266.yml +9 -0
  511. data/vendor/board-maps/yaml/Metro.yml +8 -0
  512. data/vendor/board-maps/yaml/NANO32.yml +27 -0
  513. data/vendor/board-maps/yaml/NANO_RP2040_CONNECT.yml +35 -0
  514. data/vendor/board-maps/yaml/NEBULAS3.yml +33 -0
  515. data/vendor/board-maps/yaml/NEKOSYSTEMS_BL2040_MINI.yml +48 -0
  516. data/vendor/board-maps/yaml/NULLBITS_BIT_C_PRO.yml +48 -0
  517. data/vendor/board-maps/yaml/Node32s.yml +27 -0
  518. data/vendor/board-maps/yaml/NodeMCU_32S.yml +27 -0
  519. data/vendor/board-maps/yaml/ODROID_ESP32.yml +10 -0
  520. data/vendor/board-maps/yaml/ONEHORSE_ESP32_DEV.yml +24 -0
  521. data/vendor/board-maps/yaml/OROCA_EDUBOT.yml +33 -0
  522. data/vendor/board-maps/yaml/PIMORONI_PGA2040.yml +48 -0
  523. data/vendor/board-maps/yaml/PROS3.yml +28 -0
  524. data/vendor/board-maps/yaml/PYCOM_GPY.yml +27 -0
  525. data/vendor/board-maps/yaml/Piranha.yml +16 -0
  526. data/vendor/board-maps/yaml/Pocket32.yml +27 -0
  527. data/vendor/board-maps/yaml/QUANTUM.yml +26 -0
  528. data/vendor/board-maps/yaml/RASPBERRY_PI_PICO.yml +48 -0
  529. data/vendor/board-maps/yaml/RASPBERRY_PI_PICO_W.yml +48 -0
  530. data/vendor/board-maps/yaml/REDPILL_ESP32S3.yml +32 -0
  531. data/vendor/board-maps/yaml/RMP.yml +33 -0
  532. data/vendor/board-maps/yaml/SAMD_CIRCUITPLAYGROUND_EXPRESS.yml +12 -0
  533. data/vendor/board-maps/yaml/SAMD_MKR1000.yml +20 -0
  534. data/vendor/board-maps/yaml/SAMD_MKRFox1200.yml +19 -0
  535. data/vendor/board-maps/yaml/SAMD_MKRGSM1400.yml +15 -0
  536. data/vendor/board-maps/yaml/SAMD_MKRNB1500.yml +15 -0
  537. data/vendor/board-maps/yaml/SAMD_MKRVIDOR4000.yml +19 -0
  538. data/vendor/board-maps/yaml/SAMD_MKRWAN1300.yml +18 -0
  539. data/vendor/board-maps/yaml/SAMD_MKRWAN1310.yml +18 -0
  540. data/vendor/board-maps/yaml/SAMD_MKRWIFI1010.yml +19 -0
  541. data/vendor/board-maps/yaml/SAMD_MKRZERO.yml +19 -0
  542. data/vendor/board-maps/yaml/SAMD_NANO_33_IOT.yml +13 -0
  543. data/vendor/board-maps/yaml/SAMD_TIAN.yml +15 -0
  544. data/vendor/board-maps/yaml/SAMD_ZERO.yml +14 -0
  545. data/vendor/board-maps/yaml/SAM_DUE.yml +26 -0
  546. data/vendor/board-maps/yaml/SAM_ZERO.yml +15 -0
  547. data/vendor/board-maps/yaml/SEEED_INDICATOR_RP2040.yml +47 -0
  548. data/vendor/board-maps/yaml/SEEED_XIAO_RP2040.yml +29 -0
  549. data/vendor/board-maps/yaml/SOLDERPARTY_RP2040_STAMP.yml +48 -0
  550. data/vendor/board-maps/yaml/SONOFF_DUALR3.yml +26 -0
  551. data/vendor/board-maps/yaml/SPARKFUN_PROMICRO_RP2040.yml +48 -0
  552. data/vendor/board-maps/yaml/SPARKFUN_THINGPLUS_RP2040.yml +48 -0
  553. data/vendor/board-maps/yaml/STAMP_S3.yml +4 -0
  554. data/vendor/board-maps/yaml/TAMC_TERMOD_S3.yml +31 -0
  555. data/vendor/board-maps/yaml/TBEAM_USE_RADIO_SX1262.yml +23 -0
  556. data/vendor/board-maps/yaml/TBEAM_USE_RADIO_SX1268.yml +23 -0
  557. data/vendor/board-maps/yaml/TBEAM_USE_RADIO_SX1276.yml +23 -0
  558. data/vendor/board-maps/yaml/TBEAM_USE_RADIO_SX1278.yml +23 -0
  559. data/vendor/board-maps/yaml/TBEAM_USE_RADIO_SX1280.yml +23 -0
  560. data/vendor/board-maps/yaml/TBeam.yml +23 -0
  561. data/vendor/board-maps/yaml/TINYPICO.yml +26 -0
  562. data/vendor/board-maps/yaml/TINYS2.yml +33 -0
  563. data/vendor/board-maps/yaml/TINYS3.yml +25 -0
  564. data/vendor/board-maps/yaml/TTGO-T-OI-PLUS_DEV.yml +11 -0
  565. data/vendor/board-maps/yaml/TTGO_LoRa32_V1.yml +28 -0
  566. data/vendor/board-maps/yaml/TTGO_LoRa32_V2.yml +28 -0
  567. data/vendor/board-maps/yaml/TTGO_LoRa32_v21new.yml +28 -0
  568. data/vendor/board-maps/yaml/TTGO_T1.yml +27 -0
  569. data/vendor/board-maps/yaml/TTGO_T7_V13_Mini32.yml +27 -0
  570. data/vendor/board-maps/yaml/TTGO_T7_V14_Mini32.yml +27 -0
  571. data/vendor/board-maps/yaml/TWATCH_2020_V1.yml +10 -0
  572. data/vendor/board-maps/yaml/TWATCH_2020_V2.yml +10 -0
  573. data/vendor/board-maps/yaml/TWATCH_2020_V3.yml +10 -0
  574. data/vendor/board-maps/yaml/TWATCH_BASE.yml +10 -0
  575. data/vendor/board-maps/yaml/TWatch.yml +10 -0
  576. data/vendor/board-maps/yaml/Trueverit_ESP32_Universal_IoT_Driver.yml +18 -0
  577. data/vendor/board-maps/yaml/Trueverit_ESP32_Universal_IoT_Driver_MK_II.yml +18 -0
  578. data/vendor/board-maps/yaml/UBLOX_NINA_W10.yml +48 -0
  579. data/vendor/board-maps/yaml/UBLOX_NORA_W10.yml +43 -0
  580. data/vendor/board-maps/yaml/UPESY_RP2040_DEVKIT.yml +48 -0
  581. data/vendor/board-maps/yaml/VALTRACK_V4_MFW_ESP32_C3.yml +23 -0
  582. data/vendor/board-maps/yaml/VALTRACK_V4_VTS_ESP32_C3.yml +23 -0
  583. data/vendor/board-maps/yaml/VIYALAB_MIZU_RP2040.yml +48 -0
  584. data/vendor/board-maps/yaml/WATCHY.yml +7 -0
  585. data/vendor/board-maps/yaml/WATCHY_V10.yml +7 -0
  586. data/vendor/board-maps/yaml/WATCHY_V15.yml +7 -0
  587. data/vendor/board-maps/yaml/WATCHY_V20.yml +7 -0
  588. data/vendor/board-maps/yaml/WAVESHARE_RP2040_LCD_0_96.yml +47 -0
  589. data/vendor/board-maps/yaml/WAVESHARE_RP2040_LCD_1_28.yml +47 -0
  590. data/vendor/board-maps/yaml/WAVESHARE_RP2040_ONE.yml +47 -0
  591. data/vendor/board-maps/yaml/WAVESHARE_RP2040_PLUS.yml +48 -0
  592. data/vendor/board-maps/yaml/WAVESHARE_RP2040_ZERO.yml +47 -0
  593. data/vendor/board-maps/yaml/WESP32.yml +17 -0
  594. data/vendor/board-maps/yaml/WIDORA_AIR.yml +34 -0
  595. data/vendor/board-maps/yaml/WIFIDUINO_ESP8266.yml +23 -0
  596. data/vendor/board-maps/yaml/WIFINFO.yml +20 -0
  597. data/vendor/board-maps/yaml/WIPY3.yml +27 -0
  598. data/vendor/board-maps/yaml/WIZNET_5100S_EVB_PICO.yml +48 -0
  599. data/vendor/board-maps/yaml/WIZNET_5500_EVB_PICO.yml +48 -0
  600. data/vendor/board-maps/yaml/WIZNET_WIZFI360_EVB_PICO.yml +48 -0
  601. data/vendor/board-maps/yaml/WT32_ETH01.yml +8 -0
  602. data/vendor/board-maps/yaml/WiFiduino32S3.yml +27 -0
  603. data/vendor/board-maps/yaml/WiFiduinoV2.yml +27 -0
  604. data/vendor/board-maps/yaml/Wifiduino32.yml +40 -0
  605. data/vendor/board-maps/yaml/XIAO_ESP32C3.yml +22 -0
  606. data/vendor/board-maps/yaml/XIAO_ESP32S3.yml +36 -0
  607. data/vendor/board-maps/yaml/YD_RP2040.yml +48 -0
  608. data/vendor/board-maps/yaml/atmegazero_esp32s2.yml +30 -0
  609. data/vendor/board-maps/yaml/connaxio_espoir.yml +18 -0
  610. data/vendor/board-maps/yaml/esp32vn_iot_uno.yml +22 -0
  611. data/vendor/board-maps/yaml/fm_devkit.yml +15 -0
  612. data/vendor/board-maps/yaml/heltec_wifi_32_lora_V3.yml +31 -0
  613. data/vendor/board-maps/yaml/heltec_wifi_kit_32.yml +28 -0
  614. data/vendor/board-maps/yaml/heltec_wifi_kit_32_V3.yml +32 -0
  615. data/vendor/board-maps/yaml/heltec_wifi_lora_32.yml +27 -0
  616. data/vendor/board-maps/yaml/heltec_wifi_lora_32_V2.yml +27 -0
  617. data/vendor/board-maps/yaml/heltec_wireless_stick.yml +27 -0
  618. data/vendor/board-maps/yaml/heltec_wireless_stick_LITE.yml +27 -0
  619. data/vendor/board-maps/yaml/openkb.yml +27 -0
  620. data/vendor/board-maps/yaml/roboheart_hercules.yml +17 -0
  621. data/vendor/board-maps/yaml/sensesiot_weizen.yml +26 -0
  622. data/vendor/board-maps/yaml/uPesy_WROOM.yml +27 -0
  623. data/vendor/board-maps/yaml/uPesy_WROVER.yml +27 -0
  624. data/vendor/board-maps/yaml/unphone8.yml +32 -0
  625. data/vendor/board-maps/yaml/unphone9.yml +32 -0
  626. data/vendor/board-maps/yaml/wifi_kit_8.yml +15 -0
  627. metadata +800 -0
data/src/lib/Denko.cpp ADDED
@@ -0,0 +1,330 @@
1
+ /*
2
+ Library for denko ruby gem.
3
+ */
4
+ #include "Denko.h"
5
+ #include "BoardMap.h"
6
+
7
+ Denko::Denko(){
8
+ messageFragments[0] = cmdStr;
9
+ messageFragments[1] = pinStr;
10
+ messageFragments[2] = valStr;
11
+ messageFragments[3] = auxMsg;
12
+ resetState();
13
+ }
14
+
15
+ void Denko::rxNotify() {
16
+ stream->print("Rx:");
17
+ stream->print(rxBytes);
18
+ stream->print("\n");
19
+ rxBytes = 0;
20
+ }
21
+
22
+ void Denko::sendHalt() {
23
+ stream->print("Hlt");
24
+ stream->print("\n");
25
+ }
26
+
27
+ // CMD = 92
28
+ // Expose this for diagnostics and testing.
29
+ void Denko::sendReady() {
30
+ stream->print("Rdy");
31
+ stream->print("\n");
32
+ }
33
+
34
+ void Denko::run(){
35
+ while(stream->available()) {
36
+ parse(stream->read());
37
+ rxBytes ++;
38
+ // Acknowledge when we've received half as many bytes as the serial buffer.
39
+ if (rxBytes >= rxNotifyLimit) rxNotify();
40
+ }
41
+
42
+ #ifdef DENKO_UARTS
43
+ uartUpdateListeners();
44
+ #endif
45
+
46
+ #ifdef DENKO_UART_BB
47
+ uartBBUpdateListener();
48
+ #endif
49
+
50
+ // Run denko's listeners.
51
+ updateListeners();
52
+ }
53
+
54
+ void Denko::parse(byte c) {
55
+ if ((c == '\n') || (c == '\\')) {
56
+ // If last char was a \, this \ or \n is escaped.
57
+ if(escaping){
58
+ append(c);
59
+ escaping = false;
60
+ }
61
+
62
+ // If EOL, process and reset.
63
+ else if (c == '\n'){
64
+ append('\0');
65
+ if ((fragmentIndex > 0) || (charIndex > 1)) process();
66
+ fragmentIndex = 0;
67
+ charIndex = 0;
68
+ }
69
+
70
+ // Backslash is the escape character.
71
+ else if (c == '\\') escaping = true;
72
+ }
73
+
74
+ // If fragment delimiter, terminate current fragment and move to next.
75
+ // Unless we're in the auxillary message fragment, then just append.
76
+ else if (c == '.') {
77
+ if (fragmentIndex < 3) {
78
+ escaping = false;
79
+ append('\0');
80
+ fragmentIndex++;
81
+ charIndex = 0;
82
+ } else {
83
+ append(c);
84
+ }
85
+ }
86
+
87
+ // Else just append the character.
88
+ else {
89
+ escaping = false;
90
+ append(c);
91
+ }
92
+ }
93
+
94
+ void Denko::append(byte c) {
95
+ messageFragments[fragmentIndex][charIndex] = c;
96
+ charIndex++;
97
+ }
98
+
99
+ void Denko::process() {
100
+ cmd = atoi((char *)cmdStr);
101
+ pin = atoi((char *)pinStr);
102
+ val = atoi((char *)valStr);
103
+
104
+ // Call the command.
105
+ switch(cmd) {
106
+ // Implemented in DenkoCoreIO.cpp
107
+ case 0: setMode (pin, val); break;
108
+ case 1: dWrite (pin, val, false); break;
109
+ case 2: dRead (pin); break;
110
+ case 3: pwmWrite (pin, val, false); break;
111
+ case 4: dacWrite (pin, val, false); break;
112
+ case 5: aRead (pin); break;
113
+ case 6: setListener (pin, val, auxMsg[0], auxMsg[1], false); break;
114
+
115
+ // Implemented in DenkoEEPROM.cpp
116
+ #ifdef EEPROM_PRESENT
117
+ case 7: eepromRead (); break;
118
+ case 8: eepromWrite (); break;
119
+ #endif
120
+
121
+ // Implemented in DenkoPulseInput.cpp
122
+ case 9: pulseRead (); break;
123
+
124
+ // Implemented in DenkoServo.cpp
125
+ #ifdef DENKO_SERVO
126
+ case 10: servoToggle (); break;
127
+ case 11: servoWrite (); break;
128
+ #endif
129
+
130
+ // Implemented in DenkoSerialBB.cpp
131
+ #ifdef DENKO_UART_BB
132
+ case 12: uartBBSetup (); break;
133
+ case 13: uartBBWrite (); break;
134
+ #endif
135
+
136
+ // Implemented in DenkoUART.cpp
137
+ #ifdef DENKO_UARTS
138
+ case 14: uartSetup (); break;
139
+ case 15: uartWrite (); break;
140
+ #endif
141
+
142
+ // Implemented in DenkoIROut.cpp
143
+ #ifdef DENKO_IR_OUT
144
+ case 16: irSend (); break;
145
+ #endif
146
+
147
+ // Implemented in DenkoTone.cpp
148
+ #ifdef DENKO_TONE
149
+ case 17: tone (); break;
150
+ case 18: noTone (); break;
151
+ #endif
152
+
153
+ // Implemented in DenkoAddressableLED.cppp
154
+ #ifdef DENKO_LED_ARRAY
155
+ case 19: showLEDArray (); //cmd = 19
156
+ #endif
157
+
158
+ // Implemented in DenkoSPIBB.cpp
159
+ #ifdef DENKO_SPI_BB
160
+ case 21: spiBBtransfer (auxMsg[3], auxMsg[4], auxMsg[5], pin, auxMsg[0], auxMsg[1], auxMsg[2], &auxMsg[7]); break;
161
+ case 22: spiBBaddListener (); break;
162
+ #endif
163
+
164
+ // Implemented in DenkoSPI.cpp
165
+ #ifdef DENKO_SPI
166
+ case 26: {
167
+ // Do this since RP2040 crashes with reinterpet_cast of uint32_t.
168
+ uint32_t clockRate = (uint32_t)auxMsg[3];
169
+ clockRate |= (uint32_t)auxMsg[4] << 8;
170
+ clockRate |= (uint32_t)auxMsg[5] << 16;
171
+ clockRate |= (uint32_t)auxMsg[6] << 24;
172
+ spiTransfer(clockRate, pin, auxMsg[0], auxMsg[1], auxMsg[2], &auxMsg[7]); break;
173
+ }
174
+ case 27: spiAddListener (); break;
175
+ #endif
176
+
177
+ // Implemented in DenkoSPI.cpp
178
+ #if defined(DENKO_SPI) || defined(DENKO_SPI_BB)
179
+ case 28: spiRemoveListener(); break;
180
+ #endif
181
+
182
+ // Implemented in DenkoI2C.cpp
183
+ #ifdef DENKO_I2C
184
+ case 33: i2cSearch (); break;
185
+ case 34: i2cWrite (); break;
186
+ case 35: i2cRead (); break;
187
+ #endif
188
+
189
+ // Implemented in DenkoOneWire.cpp
190
+ #ifdef DENKO_ONE_WIRE
191
+ case 41: owReset (); break;
192
+ case 42: owSearch (); break;
193
+ case 43: owWrite (); break;
194
+ case 44: owRead (); break;
195
+ #endif
196
+
197
+ // Implemented in this file.
198
+ case 90: handshake (); break;
199
+ case 91: resetState (); break;
200
+ case 92: sendReady (); break;
201
+ case 95: setRegisterDivider (); break;
202
+ case 96: setAnalogWriteResolution (); break;
203
+ case 97: setAnalogReadResolution (); break;
204
+ case 99: microDelay(*reinterpret_cast<uint16_t*>(auxMsg)); break;
205
+
206
+ // Should send a "feature not implemented" message as default.
207
+ default: break;
208
+ }
209
+ }
210
+
211
+ //
212
+ // Every 1000 microseconds count a tick and call the listeners.
213
+ // Each core listener has its own divider, so it can read every
214
+ // 1, 2, 4, 8, 16, 32, 64 or 128 ticks, independent of the others.
215
+ //
216
+ // Register listeners are still on a global divider for now.
217
+ // Analog and register listeners always send values even if not changed.
218
+ // Digital listeners only send values on change.
219
+ //
220
+ void Denko::updateListeners() {
221
+ currentTime = micros();
222
+ timeDiff = currentTime - lastTime;
223
+
224
+ if (timeDiff > 999) {
225
+ // Add a tick for every 1000us passed.
226
+ tickCount = tickCount + (timeDiff / 1000);
227
+
228
+ // lastTime for next run is currentTime offset by remainder.
229
+ lastTime = currentTime - (timeDiff % 1000);
230
+
231
+ updateCoreListeners();
232
+
233
+ // SPI register Listeners
234
+ #if defined(DENKO_SPI) || defined(DENKO_SPI_BB)
235
+ if (tickCount % registerDivider == 0) spiUpdateListeners();
236
+ #endif
237
+ }
238
+ }
239
+
240
+ // CMD = 90
241
+ void Denko::handshake() {
242
+ // Reset the I2C interface.
243
+ // Some boards (like the ESP32-S2) behave badly without this.
244
+ #ifdef DENKO_I2C
245
+ i2cEnd();
246
+ #endif
247
+
248
+ // Reset all the state variables.
249
+ resetState();
250
+
251
+ // Reset this so we never send Rx along with ACK:
252
+ rxBytes = 0;
253
+
254
+ // First handshake value is BOARD_MAP if set.
255
+ stream->print("ACK:");
256
+ #ifdef BOARD_MAP
257
+ stream->print(BOARD_MAP);
258
+ #endif
259
+
260
+ // Second is DENKO_VERSION.
261
+ stream->print(',');
262
+ #ifdef DENKO_VERSION
263
+ stream->print(DENKO_VERSION);
264
+ #endif
265
+
266
+ // Third is AUX_SIZE.
267
+ stream->print(',');
268
+ stream->print(AUX_SIZE);
269
+
270
+ // Fourth is EEPROM size in bytes. None on Due or Zero.
271
+ stream->print(',');
272
+ #if defined(EEPROM_EMULATED)
273
+ stream->print(EMULATED_EEPROM_LENGTH);
274
+ #elif defined(EEPROM_PRESENT)
275
+ stream->print(EEPROM.length());
276
+ #else
277
+ stream->print('0');
278
+ #endif
279
+
280
+ // End
281
+ stream->print('\n');
282
+ }
283
+
284
+ // CMD = 91
285
+ void Denko::resetState() {
286
+ clearCoreListeners();
287
+ #if defined(DENKO_SPI) || defined(DENKO_SPI_BB)
288
+ spiClearListeners();
289
+ #endif
290
+ #ifdef ESP32
291
+ clearLedcChannels();
292
+ #endif
293
+ registerDivider = 8; // Update register listeners every ~8ms.
294
+ fragmentIndex = 0;
295
+ charIndex = 0;
296
+ tickCount = 0;
297
+ lastTime = micros();
298
+ }
299
+
300
+ // CMD = 95
301
+ // Set the register read divider. Powers of 2 up to 128 are valid.
302
+ void Denko::setRegisterDivider() {
303
+ registerDivider = val;
304
+ }
305
+
306
+ // CMD = 96
307
+ // Set the analog write resolution.
308
+ void Denko::setAnalogWriteResolution() {
309
+ #ifdef WRITE_RESOLUTION_SETTER
310
+ analogWriteResolution(val);
311
+ #endif
312
+ }
313
+
314
+ // CMD = 97
315
+ // Set the analog read resolution.
316
+ void Denko::setAnalogReadResolution() {
317
+ #ifdef READ_RESOLUTION_SETTER
318
+ analogReadResolution(val);
319
+ #endif
320
+ }
321
+
322
+ // CMD = 99
323
+ // Use a different blocking microsecond delay on different platforms.
324
+ void Denko::microDelay(uint32_t microseconds){
325
+ #if defined(ESP32)
326
+ ets_delay_us(microseconds);
327
+ #else
328
+ delayMicroseconds(microseconds);
329
+ #endif
330
+ }
data/src/lib/Denko.h ADDED
@@ -0,0 +1,259 @@
1
+ /*
2
+ Library for denko ruby gem.
3
+ */
4
+ #include <Arduino.h>
5
+ #include "DenkoDefines.h"
6
+
7
+ class Denko {
8
+ public:
9
+ Denko();
10
+ void run();
11
+
12
+ // Expect main sketch to pass a reference to a Stream-like object for IO.
13
+ // Store it and call ->print, ->write, ->available, ->read etc. on it.
14
+ Stream* stream;
15
+
16
+ // Callback hooks for local logic (defined in main sketch) based on listeners.
17
+ // These should be used if:
18
+ // 1) a round-trip to the remote client is too slow, or
19
+ // 2) something needs to happen regardless of remote client connection.
20
+ // Eg. Instant feedback from a smart light switch.
21
+ void (*digitalListenCallback)(byte p, byte v);
22
+ void (*analogListenCallback)(byte p, int v);
23
+
24
+ // Core IO API Functions
25
+ // Functions with a cmd value can be called through the remote API.
26
+ //
27
+ // This subset is made public to allow use by local listener callbacks.
28
+ // Reading and writing through the denko library can help maintain
29
+ // consistency and notify the remote client of local actions automatically.
30
+ //
31
+ void setMode (byte p, byte m); //cmd = 0
32
+ void dWrite (byte p, byte v, boolean echo=true); //cmd = 1
33
+ byte dRead (byte p); //cmd = 2
34
+ void pwmWrite (byte p, int v, boolean echo=true); //cmd = 3
35
+ void dacWrite (byte p, int v, boolean echo=true); //cmd = 4
36
+ int aRead (byte p); //cmd = 5
37
+ void setListener (byte p, boolean enabled, byte analog, byte exponent, boolean local=true); //cmd = 6
38
+
39
+ // Read value of micros() every loop.
40
+ unsigned long currentTime;
41
+
42
+ // Counts 1ms ticks based on currentTime. Rolls over every 256ms.
43
+ byte tickCount;
44
+
45
+ private:
46
+ //
47
+ // Main loop listen functions.
48
+ //
49
+ void updateListeners ();
50
+ void updateCoreListeners ();
51
+ void analogListenerUpdate (byte index);
52
+ void digitalListenerUpdate (byte index);
53
+ void clearCoreListeners ();
54
+ void findLastActiveListener();
55
+
56
+ //
57
+ // Tanslating aWrite to ledcWrite for PWM out on the ESP32.
58
+ //
59
+ // Track which pin is assigned to each LEDC channel.
60
+ // Byte 0 = enabled or disabled
61
+ // Byte 1 = pin number attached to that channel
62
+ //
63
+ #ifdef ESP32
64
+ byte ledcPins[LEDC_CHANNEL_COUNT][2];
65
+ byte ledcChannel(byte p);
66
+ byte assignLEDC(byte channel, byte pin);
67
+ void releaseLEDC(byte p);
68
+ void clearLedcChannels();
69
+ #endif
70
+
71
+ //
72
+ // Store listeners as a 2 dimensional array where each gets 2 bytes:
73
+ //
74
+ // byte 0, bit 7 : 1 = enabled, 0 = disabled
75
+ // byte 0, bit 6 : 1 = analog, 0 = digital
76
+ // byte 0, bit 5 : digital listener state storage
77
+ // byte 0, bit 4 : local flag (remote client cannot modify listener if set)
78
+ // byte 0, bit 3 : unused
79
+ // byte 0, bits 2-0: timing divider exponent (2^0 through 2^7)
80
+ //
81
+ // byte 1 : pin number
82
+ //
83
+ byte listeners [PIN_COUNT][2];
84
+
85
+ // Track the highest number listener that's active.
86
+ byte lastActiveListener;
87
+ // Map 2's exponents for dividers to save time.
88
+ const byte dividerMap[8] = {1, 2, 4, 8, 16, 32, 64, 128};
89
+
90
+ // Response func for features following the pin:value pattern.
91
+ void coreResponse(int p, int v);
92
+
93
+ // Functions with a cmd value can be called through the remote API.
94
+ // EEPROM Access
95
+ void eepromRead (); //cmd = 7
96
+ void eepromWrite (); //cmd = 8
97
+
98
+ // Included Libraries
99
+ void pulseRead (); //cmd = 9
100
+ void servoToggle (); //cmd = 10
101
+ void servoWrite (); //cmd = 11
102
+ void handleSerial (); //cmd = 12
103
+
104
+ // Single Bit Bang UART
105
+ #ifdef DENKO_UART_BB
106
+ SoftwareSerial uartBB = SoftwareSerial(10,11);
107
+ uint8_t uartBBTx;
108
+ uint8_t uartBBRx;
109
+ bool uartBBListen = false;
110
+
111
+ void uartBBBegin (uint32_t baud);
112
+ void uartBBEnd ();
113
+ void uartBBSetup (); //cmd = 12
114
+ void uartBBWrite (); //cmd = 13
115
+ void uartBBUpdateListener ();
116
+ #endif
117
+
118
+ // Up to 3 extra hardware UARTs
119
+ #ifdef DENKO_UARTS
120
+ HardwareSerial* uarts[DENKO_UARTS+1];
121
+ bool uartListenStates[DENKO_UARTS+1];
122
+ byte uartRxPins[DENKO_UARTS+1];
123
+
124
+ void uartBegin (uint8_t index, uint32_t baud);
125
+ void uartEnd (uint8_t index);
126
+ void uartSetup (); //cmd = 14
127
+ void uartWrite (); //cmd = 15
128
+ void uartUpdateListeners ();
129
+ #endif
130
+
131
+ void irSend (); //cmd = 16
132
+ void tone (); //cmd = 17
133
+ void noTone (); //cmd = 18
134
+ void showLEDArray (); //cmd = 19
135
+
136
+ // Bit Bang SPI
137
+ void spiBBtransfer (uint8_t clock, uint8_t input, uint8_t output, uint8_t select, uint8_t settings,
138
+ uint8_t rLength, uint8_t wLength, byte *data); //cmd = 21
139
+ byte spiBBtransferByte (uint8_t clock, uint8_t input, uint8_t output, uint8_t select,
140
+ uint8_t mode, uint8_t bitOrder, byte data);
141
+ void spiBBaddListener (); //cmd = 22
142
+ void spiBBreadListener (uint8_t i);
143
+
144
+ // Hardware SPI
145
+ void spiBegin (byte settings, uint32_t clockRate);
146
+ void spiEnd ();
147
+ void spiTransfer (uint32_t clockRate, uint8_t select, uint8_t settings, uint8_t rLength, uint8_t wLength, byte *data); //cmd = 26
148
+ void spiAddListener (); //cmd = 27
149
+ void spiReadListener (uint8_t i);
150
+
151
+ // SPI Listeners (both hardware and bit bang)
152
+ void spiRemoveListener (); //cmd = 28
153
+ void spiUpdateListeners ();
154
+ void spiClearListeners ();
155
+
156
+ // I2C
157
+ void i2cBegin ();
158
+ void i2cEnd ();
159
+ void i2cSetSpeed (uint8_t code);
160
+ void i2cSearch (); //cmd = 33
161
+ void i2cWrite (); //cmd = 34
162
+ void i2cRead (); //cmd = 35
163
+ void i2cTransfer (); //cmd = 36
164
+
165
+ // One Wire
166
+ void owReset (); //cmd = 41
167
+ void owSearch (); //cmd = 42
168
+ void owWrite (); //cmd = 43
169
+ void owRead (); //cmd = 44
170
+ void owWriteBit (byte b);
171
+ byte owReadBit ();
172
+
173
+ //
174
+ // Board level timings, resolutions and reset.
175
+ //
176
+ void handshake (); //cmd = 90
177
+ void resetState (); //cmd = 91
178
+ void setRegisterDivider (); //cmd = 97
179
+ void setAnalogWriteResolution (); //cmd = 96
180
+ void setAnalogReadResolution (); //cmd = 97
181
+ void microDelay(uint32_t microseconds); //cmd = 99, Platform specific microsecond delay
182
+ unsigned long lastTime;
183
+ unsigned long timeDiff;
184
+ byte registerDivider;
185
+
186
+ //
187
+ // Main loop input functions.
188
+ //
189
+ void parse(byte c);
190
+ void process();
191
+
192
+ // Parser state storage and utility functions.
193
+ byte *messageFragments[4];
194
+ byte fragmentIndex;
195
+ int charIndex;
196
+ boolean escaping;
197
+ void append(byte c);
198
+
199
+ // Parsed message storage.
200
+ byte cmdStr[4]; byte cmd;
201
+ byte pinStr[4]; byte pin;
202
+ byte valStr[4]; byte val;
203
+ byte auxMsg[AUX_SIZE];
204
+
205
+ //
206
+ // Flow control stuff.
207
+ //
208
+ // Notify the computer when the board has received half a serial buffer of bytes.
209
+ //
210
+ void rxNotify();
211
+ uint8_t rxBytes = 0;
212
+ //
213
+ // ESP32 uses a 128 byte FIFO buffer for UART Rx. Notify every 63 bytes instead of 32
214
+ // so serial over native USB performs better.
215
+ //
216
+ // Using 63 instead of 64 since the ATmega32u4 (Leonardo) is limited to 63.
217
+ //
218
+ #ifdef ESP32
219
+ uint8_t rxNotifyLimit = 63;
220
+ #else
221
+ uint8_t rxNotifyLimit = 32;
222
+ #endif
223
+
224
+ //
225
+ // Tell the computer to halt or resume sending data to the board.
226
+ //
227
+ // Only use these if running a function on the board that disables interrupts for
228
+ // longer than a single serial character (~85us at 115,200 baud).
229
+ //
230
+ // If the function was initiated by the computer (eg. writing to a WS2812 strip), do
231
+ // not call sendHalt(). The computer should have halted transmission itself after sending
232
+ // the WS2812 command. Only call sendReady() after data is written out to the strip.
233
+ //
234
+ // If the function was initiated on the board (eg. New IR input triggered by an interrupt),
235
+ // call sendHalt() as soon as possible, then call sendReady() when done.
236
+ //
237
+ // sendReady() is also exposed through the API for diagnostics and testing.
238
+ //
239
+ void sendHalt();
240
+ void sendReady(); // cmd = 92
241
+
242
+ //
243
+ // Shared SPI listeners that can be used by either hardware or bit bang SPI.
244
+ //
245
+ #if defined(DENKO_SPI) || defined(DENKO_SPI_BB)
246
+ // How many SPI lsiteners.
247
+ #define SPI_LISTENER_COUNT 4
248
+
249
+ // How to store a SPI listener.
250
+ struct SpiListener{
251
+ uint32_t clock; // Clock rate if hardware SPI. If bit bang: bits[0..7] = clock pin, bits [8..15] = input pin.
252
+ uint8_t select; // Select pin.
253
+ uint8_t settings; // Settings mask as given in request.
254
+ uint8_t length; // Read length as given in request.
255
+ uint8_t enabled; // 0 = disabled, 1 = hardware, 2 = bit bang.
256
+ };
257
+ SpiListener spiListeners[SPI_LISTENER_COUNT];
258
+ #endif
259
+ };