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
@@ -0,0 +1,42 @@
1
+ require_relative '../test_helper'
2
+
3
+ class InputComponent
4
+ include Denko::Behaviors::InputPin
5
+ end
6
+
7
+ class InputPinTest < Minitest::Test
8
+ def board
9
+ @board ||= BoardMock.new
10
+ end
11
+
12
+ def part
13
+ @part ||= InputComponent.new(board: board, pin: 1)
14
+ end
15
+
16
+ def test_mode_and_pullup
17
+ mock = Minitest::Mock.new
18
+ mock.expect :call, nil, [1, :input]
19
+ mock.expect :call, nil, [2, :input_pulldown]
20
+ mock.expect :call, nil, [3, :input_pullup]
21
+ mock.expect :call, nil, [4, :input_output]
22
+
23
+ board.stub(:set_pin_mode, mock) do
24
+ part
25
+ InputComponent.new(board: board, pin: 2, pulldown: true)
26
+ InputComponent.new(board: board, pin: 3, pullup: true)
27
+ InputComponent.new(board: board, pin: 4, mode: :input_output)
28
+ end
29
+ mock.verify
30
+
31
+ assert_equal :input, part.mode
32
+ end
33
+
34
+ def test_stop_listener
35
+ mock = Minitest::Mock.new
36
+ mock.expect :call, nil, [1]
37
+ board.stub(:stop_listener, mock) do
38
+ part._stop_listener
39
+ end
40
+ mock.verify
41
+ end
42
+ end
@@ -0,0 +1,60 @@
1
+ require_relative '../test_helper'
2
+
3
+ class ListenerComponent
4
+ include Denko::Behaviors::Component
5
+ include Denko::Behaviors::Listener
6
+
7
+ def _listen(divider=nil); end
8
+ def _stop_listener; end
9
+ end
10
+
11
+ class ListenerTest < Minitest::Test
12
+ def board
13
+ @board ||= BoardMock.new
14
+ end
15
+
16
+ def part
17
+ @part ||= ListenerComponent.new(board: board, pin: 1)
18
+ end
19
+
20
+ def test_include_callbacks
21
+ assert_includes ListenerComponent.ancestors,
22
+ Denko::Behaviors::Callbacks
23
+ end
24
+
25
+ def test_divider_save_and_read
26
+ part.listen(4)
27
+ assert_equal part.divider, 4
28
+ end
29
+
30
+ def test_call_stop_before_listening
31
+ mock = MiniTest::Mock.new.expect :call, nil
32
+ part.stub(:stop, mock) { part.listen }
33
+ mock.verify
34
+ end
35
+
36
+ def test_call__listen
37
+ mock = MiniTest::Mock.new
38
+ mock.expect :call, nil, [nil]
39
+ mock.expect :call, nil, [32]
40
+ part.stub(:_listen, mock) do
41
+ part.listen
42
+ part.listen(32)
43
+ end
44
+ mock.verify
45
+ end
46
+
47
+ def test_call__stop_listener
48
+ mock = MiniTest::Mock.new.expect :call, nil
49
+ part.stub(:_stop_listener, mock) { part.stop }
50
+ mock.verify
51
+ end
52
+
53
+ def test_add_and_remove_callback
54
+ callback = Proc.new{}
55
+ part.listen(&callback)
56
+ assert_equal [callback], part.callbacks[:listen]
57
+ part.stop
58
+ assert_nil part.callbacks[:listen]
59
+ end
60
+ end
@@ -0,0 +1,70 @@
1
+ require_relative '../test_helper'
2
+
3
+ class MultiPinComponent
4
+ include Denko::Behaviors::MultiPin
5
+
6
+ def initialize_pins(options={})
7
+ require_pin :one
8
+ proxy_pin :two, Denko::DigitalIO::Output
9
+ proxy_pin :maybe, Denko::DigitalIO::Input, optional: true
10
+ end
11
+ end
12
+
13
+ class MultiPinTest < Minitest::Test
14
+ def board
15
+ @board ||= BoardMock.new
16
+ end
17
+
18
+ def part
19
+ @part ||= MultiPinComponent.new board: board,
20
+ pins: { one: 9, two: 10, maybe: 11 }
21
+ end
22
+
23
+ def test_validate_pins
24
+ assert_raises(ArgumentError) do
25
+ MultiPinComponent.new board: board, pins: { one: 9, maybe: 11 }
26
+ end
27
+ assert_raises(ArgumentError) do
28
+ MultiPinComponent.new board: board, pins: { two: 10, maybe: 11 }
29
+ end
30
+ MultiPinComponent.new board: board, pins: { one: 9, two:10 }
31
+ end
32
+
33
+ def test_has_nil_pin
34
+ assert_nil part.pin
35
+ end
36
+
37
+ def test_build_proxies
38
+ assert_equal Denko::DigitalIO::Output, part.proxies[:two].class
39
+ assert_equal Denko::DigitalIO::Input, part.proxies[:maybe].class
40
+ end
41
+
42
+ def attr_reader_exists_for_optional_pins
43
+ part = MultiPinComponent.new board: board, pins: { one: 9, two:10 }
44
+ assert_nil part.maybe
45
+ end
46
+
47
+ def test_proxy_reader_methods
48
+ assert_equal part.proxies[:two], part.two
49
+ assert_equal part.proxies[:maybe], part.maybe
50
+ end
51
+
52
+ def test_pins_mapped_correctly
53
+ assert_equal 10, part.two.pin
54
+ assert_equal 11, part.maybe.pin
55
+ end
56
+
57
+ def test_proxy_states
58
+ part.two.high
59
+ assert_equal({two: board.high, maybe: nil}, part.proxy_states)
60
+
61
+ part2 = MultiPinComponent.new board: board, pins: { one: 'A1', two:12 }
62
+ part2.two.low
63
+ assert_equal({two: board.low}, part2.proxy_states)
64
+ end
65
+
66
+ def test_required_but_not_proxied_pin_conversion
67
+ part = MultiPinComponent.new board: board, pins: { one: 'A0', two:10 }
68
+ assert_equal 14, part.pins[:one]
69
+ end
70
+ end
@@ -0,0 +1,27 @@
1
+ require_relative '../test_helper'
2
+
3
+ class OutputComponent
4
+ include Denko::Behaviors::OutputPin
5
+ end
6
+
7
+ class OutputPinTest < Minitest::Test
8
+ def board
9
+ @board ||= BoardMock.new
10
+ end
11
+
12
+ def part
13
+ @part ||= OutputComponent.new(board: board, pin: 1)
14
+ end
15
+
16
+ def test_set_mode
17
+ mock = Minitest::Mock.new
18
+ mock.expect :call, nil, [1, :output]
19
+
20
+ board.stub(:set_pin_mode, mock) do
21
+ part
22
+ end
23
+ mock.verify
24
+
25
+ assert_equal :output, part.mode
26
+ end
27
+ end
@@ -0,0 +1,64 @@
1
+ require_relative '../test_helper'
2
+
3
+ class PollerComponent
4
+ include Denko::Behaviors::Component
5
+ include Denko::Behaviors::Poller
6
+ def _read; end
7
+ end
8
+
9
+ class PollerTest < Minitest::Test
10
+ def board
11
+ @board ||= BoardMock.new
12
+ end
13
+
14
+ def part
15
+ @part ||= PollerComponent.new(board: board, pin: 1)
16
+ end
17
+
18
+ def inject(data, wait_for_callbacks = true)
19
+ Thread.new do
20
+ if wait_for_callbacks
21
+ while (!part.callbacks[:read]) do; sleep 0.01; end
22
+ end
23
+ loop do
24
+ sleep 0.01
25
+ part.update(data)
26
+ break unless part.callbacks[:read]
27
+ end
28
+ end
29
+ end
30
+
31
+ def test_include_callbacks_and_threaded
32
+ assert_includes PollerComponent.ancestors,
33
+ Denko::Behaviors::Callbacks
34
+
35
+ assert_includes PollerComponent.ancestors,
36
+ Denko::Behaviors::Threaded
37
+ end
38
+
39
+ def test_call_stop_before_polling
40
+ mock = MiniTest::Mock.new.expect :call, nil
41
+ part.stub(:stop, mock) { part.poll(1) }
42
+ mock.verify
43
+ end
44
+
45
+ def test_uses_threaded_loop
46
+ mock = MiniTest::Mock.new.expect :call, nil
47
+ part.stub(:threaded_loop, mock) { part.poll(1) }
48
+ mock.verify
49
+ end
50
+
51
+ def test_add_and_remove_callback
52
+ callback = Proc.new{}
53
+ part.poll(1, &callback)
54
+ assert_equal part.callbacks[:poll], [callback]
55
+ part.stop
56
+ assert_nil part.callbacks[:poll]
57
+ end
58
+
59
+ def test_stop_kills_thread
60
+ mock = MiniTest::Mock.new.expect :call, nil
61
+ part.stub(:stop_thread, mock) { part.stop }
62
+ mock.verify
63
+ end
64
+ end
@@ -0,0 +1,68 @@
1
+ require_relative '../test_helper'
2
+
3
+ class ReaderComponent
4
+ include Denko::Behaviors::Component
5
+ include Denko::Behaviors::Reader
6
+ def _read; end
7
+ end
8
+
9
+ class ReaderTest < Minitest::Test
10
+ def board
11
+ @board ||= BoardMock.new
12
+ end
13
+
14
+ def part
15
+ @part ||= ReaderComponent.new(board: board, pin: 1)
16
+ end
17
+
18
+ def inject(data, wait_for_callbacks = true)
19
+ Thread.new do
20
+ if wait_for_callbacks
21
+ while (!part.callbacks[:read]) do; sleep 0.01; end
22
+ end
23
+ loop do
24
+ sleep 0.01
25
+ part.update(data)
26
+ break unless part.callbacks[:read]
27
+ end
28
+ end
29
+
30
+ # Give the thread some to get into its loop.
31
+ sleep 0.05
32
+ end
33
+
34
+ def test_include_callbacks
35
+ assert_includes ReaderComponent.ancestors,
36
+ Denko::Behaviors::Callbacks
37
+ end
38
+
39
+ def test_read_once
40
+ mock = MiniTest::Mock.new.expect :call, nil
41
+ inject(1)
42
+
43
+ part.stub(:_read, mock) do
44
+ part.read
45
+ end
46
+ mock.verify
47
+ end
48
+
49
+ def test_return_value
50
+ inject(42)
51
+ assert_equal part.read, 42
52
+ end
53
+
54
+ def test_read_using
55
+ inject(1)
56
+ reader = MiniTest::Mock.new.expect :call, nil
57
+ part.read_using -> { reader.call }
58
+ reader.verify
59
+ end
60
+
61
+ def test_add_run_remove_callback
62
+ cb = MiniTest::Mock.new.expect :call, nil
63
+ inject(1)
64
+ part.read { cb.call }
65
+ assert_nil part.callbacks[:read]
66
+ cb.verify
67
+ end
68
+ end
@@ -0,0 +1,41 @@
1
+ require_relative '../test_helper'
2
+
3
+ class SinglePinComponent
4
+ include Denko::Behaviors::SinglePin
5
+ end
6
+
7
+ class SinglePinTest < Minitest::Test
8
+ def board
9
+ @board ||= BoardMock.new
10
+ end
11
+
12
+ def part
13
+ @part ||= SinglePinComponent.new(board: board, pin: 1)
14
+ end
15
+
16
+ def test_requires_pin
17
+ assert_raises(ArgumentError) { SinglePinComponent.new(board: board) }
18
+ end
19
+
20
+ def test_mode=
21
+ mock = Minitest::Mock.new
22
+ mock.expect :call, nil, [1, :some_mode]
23
+
24
+ board.stub(:set_pin_mode, mock) do
25
+ part.mode = :some_mode
26
+ end
27
+ mock.verify
28
+
29
+ assert_equal :some_mode, part.mode
30
+ end
31
+
32
+ def test_converts_pin_before_saving
33
+ c1 = SinglePinComponent.new(board: board, pin: :DAC0)
34
+ c2 = SinglePinComponent.new(board: board, pin: :A1)
35
+ c3 = SinglePinComponent.new(board: board, pin: :SDA)
36
+
37
+ assert_equal 14, c1.pin
38
+ assert_equal 15, c2.pin
39
+ assert_equal 20, c3.pin
40
+ end
41
+ end
@@ -0,0 +1,75 @@
1
+ require_relative '../test_helper'
2
+
3
+ class PinlessComponentMock
4
+ def stop
5
+ end
6
+ end
7
+
8
+ class SinglePinComponentMock
9
+ def pin
10
+ 1
11
+ end
12
+ end
13
+
14
+ class MultiPinComponentMock
15
+ def pin
16
+ {a: 1, b: 2}
17
+ end
18
+ end
19
+
20
+ class SubcomponentsTest < Minitest::Test
21
+ def connection
22
+ @connection ||= ConnectionMock.new
23
+ end
24
+
25
+ def board
26
+ @board ||= Denko::Board.new(connection)
27
+ end
28
+
29
+ def test_add_remove_pinless
30
+ pinless = PinlessComponentMock.new
31
+
32
+ board.add_component(pinless)
33
+ assert_equal [pinless], board.components
34
+ assert_empty board.single_pin_components
35
+
36
+ board.remove_component(pinless)
37
+ assert_empty board.components
38
+ end
39
+
40
+ def test_add_remove_single_pin
41
+ single_pin = SinglePinComponentMock.new
42
+
43
+ board.add_component(single_pin)
44
+ test_hash = {1 => single_pin}
45
+ assert_equal [single_pin], board.components
46
+ assert_equal test_hash, board.single_pin_components
47
+
48
+ board.remove_component(single_pin)
49
+ assert_empty board.components
50
+ refute board.single_pin_components[1]
51
+ end
52
+
53
+ def test_add_remove_multi_pin
54
+ multi_pin = MultiPinComponentMock.new
55
+
56
+ board.add_component(multi_pin)
57
+ assert_equal [multi_pin], board.components
58
+ assert_empty board.single_pin_components
59
+
60
+ board.remove_component(multi_pin)
61
+ assert_empty board.components
62
+ end
63
+
64
+ def test_calls_stop_on_remove
65
+ pinless = PinlessComponentMock.new
66
+ board.add_component(pinless)
67
+
68
+ mock = MiniTest::Mock.new.expect(:call, nil)
69
+ pinless.stub(:stop, mock) do
70
+ board.remove_component(pinless)
71
+ end
72
+
73
+ mock.verify
74
+ end
75
+ end
@@ -0,0 +1,98 @@
1
+ require_relative '../test_helper'
2
+
3
+ class ThreadedComponent
4
+ include Denko::Behaviors::Component
5
+ include Denko::Behaviors::Threaded
6
+ def foo(str="test")
7
+ @bar = str
8
+ end
9
+ attr_reader :bar
10
+ interrupt_with :foo
11
+ end
12
+
13
+ class ThreadedTest < Minitest::Test
14
+ def board
15
+ @board ||= BoardMock.new
16
+ end
17
+
18
+ def part
19
+ @part ||= ThreadedComponent.new(board: board, pin: 1)
20
+ end
21
+
22
+ def test_add_interrupts_using_interrupt_with
23
+ assert_equal ThreadedComponent.class_variable_get(:@@interrupts), [:foo]
24
+ end
25
+
26
+ def test_threaded_stops_threads
27
+ mock = MiniTest::Mock.new.expect :call, nil
28
+ part.stub(:stop_thread, mock) { part.threaded {} }
29
+ mock.verify
30
+ end
31
+
32
+ def test_threaded_enables_interrupts
33
+ mock = MiniTest::Mock.new.expect :call, nil
34
+ part.stub(:enable_interrupts, mock) { part.threaded {} }
35
+ mock.verify
36
+ end
37
+
38
+ def test_threaded_calls_block_given
39
+ mock = MiniTest::Mock.new.expect :call, nil
40
+ part.threaded { mock.call }
41
+ sleep 0.1 # Should find a better way to do this.
42
+ mock.verify
43
+ end
44
+
45
+ def test_thread_stored_in_instance_variable
46
+ thread = Thread.current
47
+ part.threaded {}
48
+ refute_equal(thread, part.instance_variable_get(:@thread))
49
+ end
50
+
51
+ def test_threaded_loop_calls_block_repeatedly
52
+ mock = MiniTest::Mock.new.expect(:call, nil).expect(:call, nil)
53
+ part.stub(:foo, mock) do
54
+ part.threaded_loop do
55
+ part.foo
56
+ sleep 0.05
57
+ end
58
+ sleep 0.07 # And this.
59
+ end
60
+ mock.verify
61
+ end
62
+
63
+ def test_stop_thread_kills_thread
64
+ mock = MiniTest::Mock.new.expect(:kill, nil)
65
+ part.instance_variable_set(:@thread, mock)
66
+ part.stop_thread
67
+ mock.verify
68
+ end
69
+
70
+ def test_interrupts_override_singleton_only
71
+ second_part = ThreadedComponent.new(board: BoardMock.new, pin: 2)
72
+ before_class = second_part.method(:foo)
73
+ before_instance = part.method(:foo)
74
+
75
+ part.enable_interrupts
76
+ after_class = second_part.method(:foo)
77
+ after_instance = part.method(:foo)
78
+
79
+ assert_equal before_class, after_class
80
+ refute_equal before_instance, after_instance
81
+ end
82
+
83
+ def test_original_method_called_when_interrupts_enabled
84
+ mock = MiniTest::Mock.new.expect(:call, nil, ["denko"])
85
+ part.stub(:foo, mock) do
86
+ part.enable_interrupts
87
+ part.foo("denko")
88
+ end
89
+ mock.verify
90
+ end
91
+
92
+ def test_interrupt_stops_thread
93
+ part.enable_interrupts
94
+ mock = MiniTest::Mock.new.expect :call, nil
95
+ part.stub(:stop_thread, mock) { part. foo }
96
+ mock.verify
97
+ end
98
+ end
@@ -0,0 +1,130 @@
1
+ require_relative '../test_helper'
2
+
3
+ class BoardTest < Minitest::Test
4
+ def connection
5
+ @connection ||= ConnectionMock.new
6
+ end
7
+
8
+ def board
9
+ @board ||= Denko::Board.new(connection)
10
+ end
11
+
12
+ def test_require_a_connection_object
13
+ assert_raises(Exception) { Denko::Board.new }
14
+ end
15
+
16
+ def test_starts_observing_connection
17
+ io = ConnectionMock.new
18
+ mock = MiniTest::Mock.new.expect(:call, nil, [Denko::Board])
19
+ io.stub(:add_observer, mock) do
20
+ Denko::Board.new(io)
21
+ end
22
+ mock.verify
23
+ end
24
+
25
+ def test_calls_handshake_on_connection
26
+ mock = MiniTest::Mock.new.expect(:call, Constants::ACK)
27
+ connection.stub(:handshake, mock) do
28
+ Denko::Board.new(connection)
29
+ end
30
+ mock.verify
31
+ end
32
+
33
+ def test_set_aux_limit
34
+ assert_equal 527, board.aux_limit
35
+ end
36
+
37
+ def test_set_eeprom_length
38
+ assert_equal 1024, board.eeprom_length
39
+ end
40
+
41
+ def test_set_low_high
42
+ assert_equal 0, board.low
43
+ assert_equal 1, board.high
44
+ end
45
+
46
+ def test_analog_resolution
47
+ assert_equal 255, board.analog_write_high
48
+ assert_equal 8, board.analog_write_resolution
49
+ assert_equal 1023, board.analog_read_high
50
+ assert_equal 10, board.analog_read_resolution
51
+
52
+ mock = MiniTest::Mock.new
53
+ mock.expect(:call, nil, [Denko::Message.encode(command:96, value:12)])
54
+ mock.expect(:call, nil, [Denko::Message.encode(command:97, value:12)])
55
+ board.stub(:write, mock) do
56
+ board.analog_write_resolution = 12
57
+ board.analog_read_resolution = 12
58
+ end
59
+ mock.verify
60
+
61
+ assert_equal 0, board.low
62
+ assert_equal 12, board.analog_write_resolution
63
+ assert_equal 4095, board.analog_write_high
64
+ assert_equal 12, board.analog_read_resolution
65
+ assert_equal 4095, board.analog_read_high
66
+ end
67
+
68
+ def test_eeprom
69
+ mock = MiniTest::Mock.new.expect(:call, "test eeprom", [], board: board)
70
+ Denko::EEPROM::BuiltIn.stub(:new, mock) do
71
+ board.eeprom
72
+ end
73
+ mock.verify
74
+ end
75
+
76
+ def test_write
77
+ board
78
+ mock = MiniTest::Mock.new.expect(:call, nil, ["message"])
79
+ connection.stub(:write, mock) do
80
+ board.write("message")
81
+ end
82
+ mock.verify
83
+ end
84
+
85
+ def test_update_passes_messages_to_correct_components
86
+ mock1 = MiniTest::Mock.new.expect(:update, nil, ["data"])
87
+ 3.times { mock1.expect(:pin, 1) }
88
+
89
+ # Make sure lines are split only on the first colon.
90
+ # Tests for string based pine names too.
91
+ mock2 = MiniTest::Mock.new.expect(:update, nil, ["with:colon"])
92
+ 3.times { mock2.expect(:pin, 14) }
93
+
94
+ # Special EEPROM mock.
95
+ mock3 = MiniTest::Mock.new.expect(:update, nil, ["bytes"])
96
+ 3.times { mock3.expect(:pin, 254) }
97
+
98
+ board.add_component(mock1)
99
+ board.add_component(mock2)
100
+ board.add_component(mock3)
101
+ board.update("1:data")
102
+ board.update("14:with:colon")
103
+ board.update("3:ignore")
104
+ board.update("254:bytes")
105
+ mock1.verify
106
+ mock2.verify
107
+ mock3.verify
108
+ end
109
+
110
+ def test_convert_pin
111
+ assert_equal 9, board.convert_pin(9)
112
+ assert_equal 13, board.convert_pin(:LED_BUILTIN)
113
+ assert_equal 13, board.convert_pin('13')
114
+ assert_equal 12, board.convert_pin(12.0)
115
+ assert_equal 11, board.convert_pin('11.0')
116
+ assert_equal 15, board.convert_pin('A1')
117
+ assert_equal 15, board.convert_pin(:A1)
118
+ assert_equal 14, board.convert_pin('DAC0')
119
+ end
120
+
121
+ def test_convert_pin_incorrect
122
+ assert_raises { board.convert_pin "DAC20"}
123
+ assert_raises { board.convert_pin :DAC20 }
124
+ end
125
+
126
+ def test_pin_uniqueness_for_single_pin_components
127
+ led = Denko::LED.new(board: board, pin:13)
128
+ assert_raises { Denko::Led.new(board: board, pin: 13) }
129
+ end
130
+ end