denko 0.13.5 → 0.14.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.
- checksums.yaml +4 -4
- data/.github/workflows/{build_avr.yml → build_atmega_avr.yml} +18 -18
- data/.github/workflows/{build_megaavr.yml → build_atmega_megaavr.yml} +18 -18
- data/.github/workflows/{build_sam3x.yml → build_atsam3x.yml} +17 -17
- data/.github/workflows/{build_samd.yml → build_atsamd21.yml} +18 -18
- data/.github/workflows/build_esp32.yml +17 -17
- data/.github/workflows/build_esp32c3.yml +57 -0
- data/.github/workflows/build_esp32c6.yml +57 -0
- data/.github/workflows/build_esp32h2.yml +56 -0
- data/.github/workflows/build_esp32s2.yml +57 -0
- data/.github/workflows/build_esp32s3.yml +57 -0
- data/.github/workflows/build_esp8266.yml +15 -15
- data/.github/workflows/build_ra4m1.yml +16 -16
- data/.github/workflows/build_rp2040.yml +17 -16
- data/.github/workflows/ruby.yml +20 -20
- data/CHANGELOG.md +195 -11
- data/DEPS_CLI.md +9 -9
- data/DEPS_IDE.md +17 -18
- data/HARDWARE.md +50 -51
- data/README.md +61 -53
- data/Rakefile +1 -1
- data/benchmarks/analog_listen.rb +49 -0
- data/benchmarks/digital_write.rb +28 -0
- data/benchmarks/i2c_ssd1306_refresh.rb +13 -6
- data/build +1 -1
- data/denko.gemspec +5 -2
- data/examples/advanced/{m5_env.rb → m5_env3.rb} +12 -14
- data/examples/advanced/rotary_encoder_mac_volume.rb +18 -13
- data/examples/advanced/ssd1306_time_temp_rh.rb +8 -13
- data/examples/analog_io/ads1100.rb +48 -0
- data/examples/analog_io/ads1115.rb +2 -2
- data/examples/analog_io/ads1118.rb +3 -11
- data/examples/analog_io/input.rb +17 -16
- data/examples/analog_io/input_smoothing.rb +27 -0
- data/examples/analog_io/potentiometer.rb +31 -0
- data/examples/connection/binary_echo.rb +34 -0
- data/examples/connection/tcp.rb +12 -27
- data/examples/digital_io/button.rb +7 -3
- data/examples/digital_io/relay.rb +17 -0
- data/examples/digital_io/rotary_encoder.rb +21 -11
- data/examples/display/hd44780.rb +13 -5
- data/examples/display/ssd1306.rb +20 -17
- data/examples/display/ssd1306_s2_pico.rb +2 -2
- data/examples/i2c/search.rb +10 -26
- data/examples/led/apa102_bounce.rb +3 -4
- data/examples/led/apa102_fade.rb +44 -0
- data/examples/led/builtin_blink.rb +3 -1
- data/examples/led/builtin_fade.rb +19 -0
- data/examples/led/rgb_led.rb +31 -0
- data/examples/led/seven_segment_char_echo.rb +4 -2
- data/examples/led/ws2812_bounce.rb +5 -7
- data/examples/led/ws2812_builtin_blink.rb +3 -2
- data/examples/led/ws2812_fade.rb +43 -0
- data/examples/motor/l298.rb +10 -8
- data/examples/motor/servo.rb +4 -3
- data/examples/motor/stepper.rb +13 -13
- data/examples/one_wire/search.rb +32 -0
- data/examples/pulse_io/buzzer.rb +8 -3
- data/examples/pulse_io/ir_output.rb +51 -0
- data/examples/pulse_io/pwm_output.rb +30 -0
- data/examples/rtc/ds3231.rb +18 -35
- data/examples/sensor/aht10.rb +4 -6
- data/examples/sensor/aht20.rb +4 -6
- data/examples/sensor/bme280.rb +4 -4
- data/examples/sensor/bmp180.rb +9 -5
- data/examples/sensor/dht.rb +20 -15
- data/examples/sensor/ds18b20.rb +20 -21
- data/examples/sensor/generic_pir.rb +4 -2
- data/examples/sensor/hcsr04.rb +5 -2
- data/examples/sensor/htu21d.rb +9 -20
- data/examples/sensor/htu31d.rb +7 -9
- data/examples/sensor/neat_tph_readings.rb +15 -9
- data/examples/sensor/qmp6988.rb +5 -7
- data/examples/sensor/rcwl9620.rb +3 -3
- data/examples/sensor/sht3x.rb +4 -6
- data/examples/spi/bitbang_loopback.rb +46 -0
- data/examples/spi/input_register.rb +9 -19
- data/examples/spi/output_register.rb +9 -17
- data/examples/spi/ssd_through_registers.rb +28 -0
- data/examples/spi/two_registers.rb +18 -24
- data/examples/uart/bit_bang_demo.rb +25 -0
- data/examples/uart/board_passthrough.rb +19 -13
- data/examples/uart/hardware_loopback.rb +1 -1
- data/lib/denko/analog_io/ads1100.rb +127 -0
- data/lib/denko/analog_io/ads1115.rb +8 -25
- data/lib/denko/analog_io/ads1118.rb +10 -25
- data/lib/denko/analog_io/ads111x.rb +25 -11
- data/lib/denko/analog_io/input.rb +29 -55
- data/lib/denko/analog_io/input_helper.rb +42 -0
- data/lib/denko/analog_io/output.rb +5 -5
- data/lib/denko/analog_io/potentiometer.rb +6 -8
- data/lib/denko/analog_io.rb +2 -1
- data/lib/denko/behaviors/board_proxy.rb +13 -1
- data/lib/denko/behaviors/bus_controller.rb +1 -0
- data/lib/denko/behaviors/bus_controller_addressed.rb +1 -0
- data/lib/denko/behaviors/bus_peripheral.rb +3 -4
- data/lib/denko/behaviors/bus_peripheral_addressed.rb +8 -6
- data/lib/denko/behaviors/callbacks.rb +9 -7
- data/lib/denko/behaviors/component.rb +16 -14
- data/lib/denko/behaviors/input_pin.rb +14 -15
- data/lib/denko/behaviors/lifecycle.rb +51 -0
- data/lib/denko/behaviors/multi_pin.rb +22 -18
- data/lib/denko/behaviors/output_pin.rb +9 -4
- data/lib/denko/behaviors/single_pin.rb +1 -0
- data/lib/denko/behaviors/state.rb +15 -9
- data/lib/denko/behaviors/subcomponents.rb +72 -12
- data/lib/denko/behaviors.rb +2 -1
- data/lib/denko/board/core.rb +36 -18
- data/lib/denko/board/i2c.rb +14 -14
- data/lib/denko/board/i2c_bit_bang.rb +49 -0
- data/lib/denko/board/infrared.rb +6 -6
- data/lib/denko/board/led_array.rb +6 -5
- data/lib/denko/board/spi.rb +15 -10
- data/lib/denko/board/spi_bit_bang.rb +9 -7
- data/lib/denko/board.rb +35 -33
- data/lib/denko/connection/binary_echo.rb +17 -0
- data/lib/denko/connection/flow_control.rb +11 -15
- data/lib/denko/connection/handshake.rb +2 -0
- data/lib/denko/digital_io/button.rb +4 -0
- data/lib/denko/digital_io/c_bit_bang.rb +15 -0
- data/lib/denko/digital_io/input.rb +4 -5
- data/lib/denko/digital_io/output.rb +7 -6
- data/lib/denko/digital_io/relay.rb +2 -0
- data/lib/denko/digital_io/rotary_encoder.rb +78 -60
- data/lib/denko/digital_io.rb +1 -0
- data/lib/denko/display/hd44780.rb +136 -93
- data/lib/denko/display/sh1106.rb +42 -0
- data/lib/denko/display/ssd1306.rb +105 -45
- data/lib/denko/display.rb +1 -0
- data/lib/denko/eeprom/built_in.rb +19 -16
- data/lib/denko/i2c/bit_bang.rb +31 -0
- data/lib/denko/i2c/bus.rb +8 -36
- data/lib/denko/i2c/bus_common.rb +45 -0
- data/lib/denko/i2c/peripheral.rb +28 -19
- data/lib/denko/i2c.rb +2 -0
- data/lib/denko/led/apa102.rb +43 -29
- data/lib/denko/led/base.rb +8 -2
- data/lib/denko/led/rgb.rb +5 -7
- data/lib/denko/led/seven_segment.rb +24 -9
- data/lib/denko/led/ws2812.rb +10 -7
- data/lib/denko/message.rb +5 -0
- data/lib/denko/motor/l298.rb +11 -10
- data/lib/denko/motor/servo.rb +22 -10
- data/lib/denko/motor/stepper.rb +11 -14
- data/lib/denko/mutex_stub.rb +7 -0
- data/lib/denko/one_wire/bus.rb +9 -5
- data/lib/denko/one_wire/peripheral.rb +0 -3
- data/lib/denko/pulse_io/buzzer.rb +9 -3
- data/lib/denko/pulse_io/{ir_transmitter.rb → ir_output.rb} +9 -4
- data/lib/denko/pulse_io/pwm_output.rb +69 -15
- data/lib/denko/pulse_io.rb +3 -3
- data/lib/denko/rtc/ds3231.rb +11 -13
- data/lib/denko/sensor/aht.rb +22 -21
- data/lib/denko/sensor/bme280.rb +60 -63
- data/lib/denko/sensor/bmp180.rb +41 -38
- data/lib/denko/sensor/dht.rb +22 -5
- data/lib/denko/sensor/ds18b20.rb +40 -34
- data/lib/denko/sensor/hcsr04.rb +7 -5
- data/lib/denko/sensor/helper.rb +37 -0
- data/lib/denko/sensor/htu21d.rb +44 -55
- data/lib/denko/sensor/htu31d.rb +32 -33
- data/lib/denko/sensor/qmp6988.rb +25 -23
- data/lib/denko/sensor/rcwl9620.rb +2 -5
- data/lib/denko/sensor/sht3x.rb +23 -21
- data/lib/denko/sensor.rb +1 -2
- data/lib/denko/spi/base_register.rb +22 -22
- data/lib/denko/spi/bit_bang.rb +17 -51
- data/lib/denko/spi/bus.rb +15 -29
- data/lib/denko/spi/bus_common.rb +36 -0
- data/lib/denko/spi/input_register.rb +36 -30
- data/lib/denko/spi/output_register.rb +25 -40
- data/lib/denko/spi/peripheral.rb +93 -24
- data/lib/denko/spi.rb +6 -1
- data/lib/denko/uart/bit_bang.rb +5 -3
- data/lib/denko/uart/hardware.rb +9 -8
- data/lib/denko/version.rb +1 -1
- data/lib/denko.rb +10 -0
- data/lib/denko_cli/generator.rb +2 -2
- data/lib/denko_cli/packages.rb +8 -10
- data/lib/denko_cli/targets.rb +8 -8
- data/lib/denko_cli/targets.txt +4 -4
- data/lib/denko_cli/usage.txt +1 -1
- data/src/denko_ethernet.ino +0 -14
- data/src/denko_serial.ino +0 -14
- data/src/denko_wifi.ino +6 -15
- data/src/lib/Denko.cpp +39 -3
- data/src/lib/Denko.h +42 -26
- data/src/lib/DenkoCoreIO.cpp +60 -103
- data/src/lib/DenkoDefines.h +36 -31
- data/src/lib/DenkoI2C.cpp +54 -45
- data/src/lib/DenkoI2CBB.cpp +238 -0
- data/src/lib/DenkoIROut.cpp +12 -7
- data/src/lib/DenkoLEDArray.cpp +36 -13
- data/src/lib/DenkoSPI.cpp +6 -5
- data/src/lib/DenkoSPIBB.cpp +7 -6
- data/target.yml +37 -2
- data/test/analog_io/potentiometer_test.rb +10 -10
- data/test/behaviors/board_proxy_test.rb +1 -1
- data/test/behaviors/callbacks_test.rb +11 -3
- data/test/behaviors/component_test.rb +17 -9
- data/test/behaviors/input_pin_test.rb +14 -9
- data/test/behaviors/multi_pin_test.rb +14 -4
- data/test/behaviors/output_pin_test.rb +11 -8
- data/test/behaviors/poller_test.rb +1 -0
- data/test/behaviors/reader_test.rb +3 -2
- data/test/behaviors/subcomponents_test.rb +22 -2
- data/test/board/core_test.rb +15 -11
- data/test/board/i2c_test.rb +39 -33
- data/test/board/infrared_test.rb +1 -1
- data/test/board/message_test.rb +17 -11
- data/test/board/spi_test.rb +21 -21
- data/test/digital_io/button_test.rb +15 -0
- data/test/digital_io/relay_test.rb +18 -0
- data/test/digital_io/rotary_encoder_test.rb +80 -60
- data/test/eeprom/built_in_test.rb +9 -9
- data/test/i2c/bus_test.rb +30 -14
- data/test/i2c/peripheral_test.rb +36 -17
- data/test/led/base_test.rb +2 -1
- data/test/led/rgb_test.rb +6 -6
- data/test/led/seven_segment_test.rb +7 -7
- data/test/motor/servo_test.rb +1 -1
- data/test/motor/stepper_test.rb +2 -2
- data/test/one_wire/bus_test.rb +1 -0
- data/test/pulse_io/buzzer_test.rb +7 -4
- data/test/pulse_io/{ir_transmitter_test.rb → ir_output_test.rb} +10 -10
- data/test/pulse_io/pwm_output_test.rb +74 -18
- data/test/rtc/ds3231_test.rb +11 -13
- data/test/sensor/dht_test.rb +1 -1
- data/test/sensor/ds18b20_test.rb +4 -8
- data/test/spi/bus_test.rb +7 -7
- data/test/spi/input_register_test.rb +15 -15
- data/test/spi/output_register_test.rb +10 -28
- data/test/spi/peripheral_multi_pin_test.rb +53 -0
- data/test/spi/peripheral_single_pin_test.rb +48 -0
- data/test/test_helper.rb +36 -33
- data/tutorial/02-button/button.rb +5 -4
- data/tutorial/03-potentiometer/potentiometer.rb +9 -5
- data/tutorial/04-pwm_led/pwm_led.rb +14 -16
- data/tutorial/05-rgb_led/rgb_led.rb +6 -6
- data/tutorial/05-rgb_led/rgb_mapping.rb +11 -11
- data/vendor/board-maps/.gitignore +56 -0
- data/vendor/board-maps/.gitmodules +24 -0
- data/vendor/board-maps/BoardMap.h +1852 -0
- data/vendor/board-maps/README.md +52 -0
- data/vendor/board-maps/lib/boards_parser.rb +66 -0
- data/vendor/board-maps/lib/header_parser.rb +199 -0
- data/vendor/board-maps/run.rb +57 -0
- data/vendor/board-maps/yaml/0XCB_HELIOS.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_CAMERA_ESP32S3.yml +11 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32C6.yml +15 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S2.yml +25 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S2_REVTFT.yml +25 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S2_TFT.yml +27 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S3.yml +34 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S3_NOPSRAM.yml +34 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S3_REVTFT.yml +25 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S3_TFT.yml +27 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32_V2.yml +34 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_ADALOGGER.yml +44 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_CAN.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_DVI.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_PROP_MAKER.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_RFM.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_SCORPIO.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_THINKINK.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_USB_HOST.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_ITSYBITSY_ESP32.yml +24 -0
- data/vendor/board-maps/yaml/ADAFRUIT_ITSYBITSY_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_KB2040_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_MACROPAD_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_MATRIXPORTAL_ESP32S3.yml +16 -0
- data/vendor/board-maps/yaml/ADAFRUIT_METRO_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32C3.yml +13 -0
- data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32S2.yml +23 -0
- data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32S3_N4R2.yml +21 -0
- data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32S3_NOPSRAM.yml +21 -0
- data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32_PICO.yml +29 -0
- data/vendor/board-maps/yaml/ADAFRUIT_QTPY_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_STEMMAFRIEND_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_TRINKEYQT_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/ALKS.yml +34 -0
- data/vendor/board-maps/yaml/AMKEN_BB.yml +48 -0
- data/vendor/board-maps/yaml/AMKEN_ES.yml +48 -0
- data/vendor/board-maps/yaml/AMKEN_REVELOP.yml +48 -0
- data/vendor/board-maps/yaml/AMKEN_REVELOP_PLUS.yml +48 -0
- data/vendor/board-maps/yaml/AMPERKA_WIFI_SLOT.yml +16 -0
- data/vendor/board-maps/yaml/ARTRONSHOP_RP2_NANO.yml +32 -0
- data/vendor/board-maps/yaml/ASL_CAN_X2.yml +41 -0
- data/vendor/board-maps/yaml/ATD143_S3.yml +41 -0
- data/vendor/board-maps/yaml/AVENTEN_S3_SYNC.yml +38 -0
- data/vendor/board-maps/yaml/AVR_ADK.yml +24 -0
- data/vendor/board-maps/yaml/AVR_BT.yml +16 -0
- data/vendor/board-maps/yaml/AVR_CIRCUITPLAY.yml +14 -0
- data/vendor/board-maps/yaml/AVR_DUEMILANOVE.yml +16 -0
- data/vendor/board-maps/yaml/AVR_ESPLORA.yml +20 -0
- data/vendor/board-maps/yaml/AVR_ETHERNET.yml +16 -0
- data/vendor/board-maps/yaml/AVR_FIO.yml +16 -0
- data/vendor/board-maps/yaml/AVR_GEMMA.yml +6 -0
- data/vendor/board-maps/yaml/AVR_INDUSTRIAL101.yml +20 -0
- data/vendor/board-maps/yaml/AVR_LEONARDO.yml +20 -0
- data/vendor/board-maps/yaml/AVR_LEONARDO_ETH.yml +20 -0
- data/vendor/board-maps/yaml/AVR_LILYPAD.yml +16 -0
- data/vendor/board-maps/yaml/AVR_LILYPAD_USB.yml +20 -0
- data/vendor/board-maps/yaml/AVR_LININO_ONE.yml +20 -0
- data/vendor/board-maps/yaml/AVR_MEGA.yml +24 -0
- data/vendor/board-maps/yaml/AVR_MEGA2560.yml +24 -0
- data/vendor/board-maps/yaml/AVR_MICRO.yml +20 -0
- data/vendor/board-maps/yaml/AVR_MINI.yml +16 -0
- data/vendor/board-maps/yaml/AVR_NANO.yml +16 -0
- data/vendor/board-maps/yaml/AVR_NANO_EVERY.yml +22 -0
- data/vendor/board-maps/yaml/AVR_NG.yml +16 -0
- data/vendor/board-maps/yaml/AVR_PRO.yml +16 -0
- data/vendor/board-maps/yaml/AVR_ROBOT_CONTROL.yml +22 -0
- data/vendor/board-maps/yaml/AVR_ROBOT_MOTOR.yml +19 -0
- data/vendor/board-maps/yaml/AVR_UNO.yml +16 -0
- data/vendor/board-maps/yaml/AVR_UNO_WIFI_DEV_ED.yml +16 -0
- data/vendor/board-maps/yaml/AVR_UNO_WIFI_REV2.yml +22 -0
- data/vendor/board-maps/yaml/AVR_YUN.yml +20 -0
- data/vendor/board-maps/yaml/AVR_YUNMINI.yml +20 -0
- data/vendor/board-maps/yaml/AirM2M_CORE_ESP32C3.yml +14 -0
- data/vendor/board-maps/yaml/BEE_DATA_LOGGER.yml +39 -0
- data/vendor/board-maps/yaml/BLING.yml +25 -0
- data/vendor/board-maps/yaml/BPI_BIT.yml +9 -0
- data/vendor/board-maps/yaml/BPI_LEAF_S3.yml +42 -0
- data/vendor/board-maps/yaml/BRIDGETEK_IDM2040_43A.yml +48 -0
- data/vendor/board-maps/yaml/BRIDGETEK_IDM2040_7A.yml +48 -0
- data/vendor/board-maps/yaml/BeeMotionS3.yml +45 -0
- data/vendor/board-maps/yaml/Bee_Motion.yml +30 -0
- data/vendor/board-maps/yaml/Bee_Motion_Mini.yml +13 -0
- data/vendor/board-maps/yaml/Bee_S3.yml +38 -0
- data/vendor/board-maps/yaml/Breadstick_Raspberry.yml +31 -0
- data/vendor/board-maps/yaml/CHALLENGER_2040_LORA_RP2040.yml +39 -0
- data/vendor/board-maps/yaml/CHALLENGER_2040_LTE_RP2040.yml +38 -0
- data/vendor/board-maps/yaml/CHALLENGER_2040_NFC_RP2040.yml +32 -0
- data/vendor/board-maps/yaml/CHALLENGER_2040_SDRTC_RP2040.yml +36 -0
- data/vendor/board-maps/yaml/CHALLENGER_2040_SUBGHZ_RP2040.yml +39 -0
- data/vendor/board-maps/yaml/CHALLENGER_2040_UWB_RP2040.yml +39 -0
- data/vendor/board-maps/yaml/CHALLENGER_2040_WIFI6_BLE_RP2040.yml +42 -0
- data/vendor/board-maps/yaml/CHALLENGER_2040_WIFI_BLE_RP2040.yml +42 -0
- data/vendor/board-maps/yaml/CHALLENGER_2040_WIFI_RP2040.yml +38 -0
- data/vendor/board-maps/yaml/CHALLENGER_NB_2040_WIFI_RP2040.yml +38 -0
- data/vendor/board-maps/yaml/CONNECTIVITY_2040_LTE_WIFI_BLE_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/CRABIK_SLOT_ESP32_S3.yml +19 -0
- data/vendor/board-maps/yaml/CYTRON_MAKER_FEATHER_AIOT_S3.yml +29 -0
- data/vendor/board-maps/yaml/CYTRON_MAKER_NANO_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/CYTRON_MAKER_PI_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/CYTRON_MAKER_UNO_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/CoreESP32.yml +53 -0
- data/vendor/board-maps/yaml/D1_MINI32.yml +45 -0
- data/vendor/board-maps/yaml/D1_UNO32.yml +28 -0
- data/vendor/board-maps/yaml/DATANOISETV_PICOADK.yml +48 -0
- data/vendor/board-maps/yaml/DEGZ_SUIBO_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/DENKY.yml +35 -0
- data/vendor/board-maps/yaml/DENKY_PICOV3.yml +35 -0
- data/vendor/board-maps/yaml/DENKY_WROOM32.yml +35 -0
- data/vendor/board-maps/yaml/DEPARTMENT_OF_ALCHEMY_MINIMAIN_ESP32S2.yml +26 -0
- data/vendor/board-maps/yaml/DFROBOT_BEETLE_ESP32C6.yml +8 -0
- data/vendor/board-maps/yaml/DFROBOT_BEETLE_ESP32_C3.yml +14 -0
- data/vendor/board-maps/yaml/DFROBOT_BEETLE_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/DFROBOT_FIREBEETLE_2_ESP32C6.yml +20 -0
- data/vendor/board-maps/yaml/DFROBOT_FIREBEETLE_2_ESP32E.yml +49 -0
- data/vendor/board-maps/yaml/DFROBOT_FIREBEETLE_2_ESP32S3.yml +38 -0
- data/vendor/board-maps/yaml/DFROBOT_FIREBEETLE_ESP32.yml +46 -0
- data/vendor/board-maps/yaml/DFROBOT_ROMEO_ESP32S3.yml +7 -0
- data/vendor/board-maps/yaml/DPTECHNICS_WALTER.yml +39 -0
- data/vendor/board-maps/yaml/DPU_ESP32.yml +35 -0
- data/vendor/board-maps/yaml/DYDK.yml +38 -0
- data/vendor/board-maps/yaml/DYDK1A.yml +37 -0
- data/vendor/board-maps/yaml/DYDK1Av2.yml +45 -0
- data/vendor/board-maps/yaml/DYG.yml +20 -0
- data/vendor/board-maps/yaml/DYM.yml +40 -0
- data/vendor/board-maps/yaml/DYMv2.yml +39 -0
- data/vendor/board-maps/yaml/D_Duino_32.yml +37 -0
- data/vendor/board-maps/yaml/ELECROW_CROWPANEL_7.yml +8 -0
- data/vendor/board-maps/yaml/ELECTRONICCATS_HUNTERCAT_NFC.yml +44 -0
- data/vendor/board-maps/yaml/ESP320.yml +8 -0
- data/vendor/board-maps/yaml/ESP32C2_DEV.yml +12 -0
- data/vendor/board-maps/yaml/ESP32C3_DEV.yml +14 -0
- data/vendor/board-maps/yaml/ESP32C3_DEVKIT_LIPO.yml +14 -0
- data/vendor/board-maps/yaml/ESP32C3_M1_I_KIT.yml +13 -0
- data/vendor/board-maps/yaml/ESP32C6_DEV.yml +15 -0
- data/vendor/board-maps/yaml/ESP32C6_EVB.yml +15 -0
- data/vendor/board-maps/yaml/ESP32C6_QWIIC_POCKET.yml +15 -0
- data/vendor/board-maps/yaml/ESP32C6_THING_PLUS.yml +15 -0
- data/vendor/board-maps/yaml/ESP32H2_DEV.yml +13 -0
- data/vendor/board-maps/yaml/ESP32H2_DEVKIT_LIPO.yml +13 -0
- data/vendor/board-maps/yaml/ESP32S2_DEV.yml +44 -0
- data/vendor/board-maps/yaml/ESP32S2_DEVKIT_LIPO.yml +44 -0
- data/vendor/board-maps/yaml/ESP32S2_DEVKIT_LIPO_USB.yml +44 -0
- data/vendor/board-maps/yaml/ESP32S2_THING_PLUS.yml +44 -0
- data/vendor/board-maps/yaml/ESP32S2_USB.yml +43 -0
- data/vendor/board-maps/yaml/ESP32S3_CAM_LCD.yml +7 -0
- data/vendor/board-maps/yaml/ESP32S3_DEV.yml +38 -0
- data/vendor/board-maps/yaml/ESP32S3_DEVKIT_LIPO.yml +42 -0
- data/vendor/board-maps/yaml/ESP32S3_POWERFEATHER.yml +22 -0
- data/vendor/board-maps/yaml/ESP32_DEV.yml +35 -0
- data/vendor/board-maps/yaml/ESP32_DEVKIT_LIPO.yml +35 -0
- data/vendor/board-maps/yaml/ESP32_EVB.yml +7 -0
- data/vendor/board-maps/yaml/ESP32_GATEWAY.yml +13 -0
- data/vendor/board-maps/yaml/ESP32_GATEWAY_C.yml +13 -0
- data/vendor/board-maps/yaml/ESP32_GATEWAY_E.yml +13 -0
- data/vendor/board-maps/yaml/ESP32_GATEWAY_F.yml +13 -0
- data/vendor/board-maps/yaml/ESP32_IOT_REDBOARD.yml +36 -0
- data/vendor/board-maps/yaml/ESP32_MICROMOD.yml +24 -0
- data/vendor/board-maps/yaml/ESP32_PICO.yml +35 -0
- data/vendor/board-maps/yaml/ESP32_POE.yml +7 -0
- data/vendor/board-maps/yaml/ESP32_POE_ISO.yml +7 -0
- data/vendor/board-maps/yaml/ESP32_S3R8N16.yml +3 -0
- data/vendor/board-maps/yaml/ESP32_S3_BOX.yml +19 -0
- data/vendor/board-maps/yaml/ESP32_S3_USB_OTG.yml +11 -0
- data/vendor/board-maps/yaml/ESP32_SBC_FABGL.yml +35 -0
- data/vendor/board-maps/yaml/ESP32_THING.yml +36 -0
- data/vendor/board-maps/yaml/ESP32_THING_PLUS.yml +33 -0
- data/vendor/board-maps/yaml/ESP32_THING_PLUS_C.yml +33 -0
- data/vendor/board-maps/yaml/ESP32_WROOM_DA.yml +35 -0
- data/vendor/board-maps/yaml/ESP32_WROVER_KIT.yml +35 -0
- data/vendor/board-maps/yaml/ESP8266_ADAFRUIT_HUZZAH.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_AGRUMINO_LEMON_V4.yml +8 -0
- data/vendor/board-maps/yaml/ESP8266_ARDUINO_PRIMO.yml +7 -0
- data/vendor/board-maps/yaml/ESP8266_ARDUINO_STAR_OTTO.yml +7 -0
- data/vendor/board-maps/yaml/ESP8266_ARDUINO_UNOWIFI.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_ESP01.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_ESP07.yml +20 -0
- data/vendor/board-maps/yaml/ESP8266_ESP12.yml +20 -0
- data/vendor/board-maps/yaml/ESP8266_ESP13.yml +17 -0
- data/vendor/board-maps/yaml/ESP8266_ESP210.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_ESPECTRO_CORE.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_ESPINO_ESP12.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_ESPINO_ESP13.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_ESPRESSO_LITE_V1.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_ESPRESSO_LITE_V2.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_GENERIC.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_INVENT_ONE.yml +22 -0
- data/vendor/board-maps/yaml/ESP8266_NODEMCU_ESP12.yml +20 -0
- data/vendor/board-maps/yaml/ESP8266_NODEMCU_ESP12E.yml +20 -0
- data/vendor/board-maps/yaml/ESP8266_OAK.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_PHOENIX_V1.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_PHOENIX_V2.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_SCHIRMILABS_EDUINO_WIFI.yml +25 -0
- data/vendor/board-maps/yaml/ESP8266_SONOFF_BASIC.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_SONOFF_S20.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_SONOFF_SV.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_SONOFF_TH.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_THING.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_THING_DEV.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_WEMOS_D1MINI.yml +18 -0
- data/vendor/board-maps/yaml/ESP8266_WEMOS_D1MINILITE.yml +18 -0
- data/vendor/board-maps/yaml/ESP8266_WEMOS_D1MINIPRO.yml +18 -0
- data/vendor/board-maps/yaml/ESP8266_WEMOS_D1R1.yml +25 -0
- data/vendor/board-maps/yaml/ESP8266_WEMOS_D1WROOM02.yml +18 -0
- data/vendor/board-maps/yaml/ESP8266_WIO_LINK.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_XINABOX_CW01.yml +9 -0
- data/vendor/board-maps/yaml/ESPECTRO32.yml +36 -0
- data/vendor/board-maps/yaml/ESPea32.yml +36 -0
- data/vendor/board-maps/yaml/ESPino32.yml +36 -0
- data/vendor/board-maps/yaml/ET-Board.yml +26 -0
- data/vendor/board-maps/yaml/EVN_ALPHA.yml +48 -0
- data/vendor/board-maps/yaml/EXTREMEELEXTRONICS_RC2040.yml +46 -0
- data/vendor/board-maps/yaml/Edgebox-ESP-100.yml +7 -0
- data/vendor/board-maps/yaml/FEATHERS2.yml +43 -0
- data/vendor/board-maps/yaml/FEATHERS2NEO.yml +31 -0
- data/vendor/board-maps/yaml/FEATHERS3.yml +32 -0
- data/vendor/board-maps/yaml/FEATHERS3NEO.yml +32 -0
- data/vendor/board-maps/yaml/FEATHER_ESP32.yml +32 -0
- data/vendor/board-maps/yaml/FLYBOARD2040_CORE.yml +48 -0
- data/vendor/board-maps/yaml/FRANZININHO_WIFI.yml +43 -0
- data/vendor/board-maps/yaml/FRANZININHO_WIFI_MSC.yml +43 -0
- data/vendor/board-maps/yaml/FROG_ESP32.yml +35 -0
- data/vendor/board-maps/yaml/FUNHOUSE_ESP32S2.yml +22 -0
- data/vendor/board-maps/yaml/GEEKBLE_ESP32C3.yml +14 -0
- data/vendor/board-maps/yaml/GEN4_IOD.yml +9 -0
- data/vendor/board-maps/yaml/GENERIC_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/HEALTHYPI_4.yml +36 -0
- data/vendor/board-maps/yaml/HELTEC_CAPSULE_SENSOR_V3.yml +43 -0
- data/vendor/board-maps/yaml/HELTEC_WIFI_LORA_32_V3.yml +42 -0
- data/vendor/board-maps/yaml/HELTEC_WIRELESS_BRIDGE.yml +8 -0
- data/vendor/board-maps/yaml/HELTEC_WIRELESS_MINI_SHELL.yml +13 -0
- data/vendor/board-maps/yaml/HELTEC_WIRELESS_PAPER.yml +42 -0
- data/vendor/board-maps/yaml/HELTEC_WIRELESS_SHELL_V3.yml +42 -0
- data/vendor/board-maps/yaml/HELTEC_WIRELESS_STICK_LITE_V3.yml +30 -0
- data/vendor/board-maps/yaml/HELTEC_WIRELESS_STICK_V3.yml +41 -0
- data/vendor/board-maps/yaml/HELTEC_WIRELESS_TRACKER.yml +41 -0
- data/vendor/board-maps/yaml/HONEYLEMON.yml +36 -0
- data/vendor/board-maps/yaml/HORNBILL_ESP32_DEV.yml +36 -0
- data/vendor/board-maps/yaml/HORNBILL_ESP32_MINIMA.yml +19 -0
- data/vendor/board-maps/yaml/HT_DE01.yml +42 -0
- data/vendor/board-maps/yaml/ILABS_2040_RPICO32_RP2040.yml +47 -0
- data/vendor/board-maps/yaml/IMBRIOS_LOGSENS_V1P1.yml +23 -0
- data/vendor/board-maps/yaml/INTOROBOT_ESP32_DEV.yml +34 -0
- data/vendor/board-maps/yaml/IOXESP32.yml +36 -0
- data/vendor/board-maps/yaml/IOXESP32PS.yml +36 -0
- data/vendor/board-maps/yaml/LILYGO_T3S3_LR1121.yml +9 -0
- data/vendor/board-maps/yaml/LILYGO_T3S3_SX1262.yml +9 -0
- data/vendor/board-maps/yaml/LILYGO_T3S3_SX1276.yml +9 -0
- data/vendor/board-maps/yaml/LILYGO_T3S3_SX1278.yml +9 -0
- data/vendor/board-maps/yaml/LILYGO_T3S3_SX1280.yml +9 -0
- data/vendor/board-maps/yaml/LILYGO_T3S3_SX1280PA.yml +8 -0
- data/vendor/board-maps/yaml/LILYGO_T_DISPLAY.yml +35 -0
- data/vendor/board-maps/yaml/LILYGO_T_DISPLAY_S3.yml +32 -0
- data/vendor/board-maps/yaml/LILYGO_T_ETH_LITE.yml +21 -0
- data/vendor/board-maps/yaml/LIONBITS3_DEV.yml +34 -0
- data/vendor/board-maps/yaml/LOLIN32.yml +36 -0
- data/vendor/board-maps/yaml/LOLIN32_LITE.yml +36 -0
- data/vendor/board-maps/yaml/LOLIN_C3_MINI.yml +14 -0
- data/vendor/board-maps/yaml/LOLIN_C3_PICO.yml +14 -0
- data/vendor/board-maps/yaml/LOLIN_D32.yml +36 -0
- data/vendor/board-maps/yaml/LOLIN_D32_PRO.yml +36 -0
- data/vendor/board-maps/yaml/LOLIN_S2_MINI.yml +44 -0
- data/vendor/board-maps/yaml/LOLIN_S2_PICO.yml +44 -0
- data/vendor/board-maps/yaml/LOLIN_S3.yml +40 -0
- data/vendor/board-maps/yaml/LOLIN_S3_MINI.yml +40 -0
- data/vendor/board-maps/yaml/LOLIN_S3_MINI_PRO.yml +40 -0
- data/vendor/board-maps/yaml/LOLIN_S3_PRO.yml +40 -0
- data/vendor/board-maps/yaml/Lion_Bit_Dev_Board.yml +16 -0
- data/vendor/board-maps/yaml/LoPy.yml +38 -0
- data/vendor/board-maps/yaml/LoPy4.yml +38 -0
- data/vendor/board-maps/yaml/M5STACK_CAPSULE.yml +8 -0
- data/vendor/board-maps/yaml/M5STACK_CARDPUTER.yml +8 -0
- data/vendor/board-maps/yaml/M5STACK_CORE.yml +10 -0
- data/vendor/board-maps/yaml/M5STACK_CORES3.yml +8 -0
- data/vendor/board-maps/yaml/M5STACK_Core2.yml +9 -0
- data/vendor/board-maps/yaml/M5STACK_DIAL.yml +8 -0
- data/vendor/board-maps/yaml/M5STACK_FIRE.yml +9 -0
- data/vendor/board-maps/yaml/M5STACK_NANOC6.yml +17 -0
- data/vendor/board-maps/yaml/M5STACK_PAPER.yml +9 -0
- data/vendor/board-maps/yaml/M5STACK_POE_CAM.yml +5 -0
- data/vendor/board-maps/yaml/M5STACK_STAMP_C3.yml +13 -0
- data/vendor/board-maps/yaml/M5STACK_STAMP_PICO.yml +7 -0
- data/vendor/board-maps/yaml/M5STACK_STAMP_S3.yml +4 -0
- data/vendor/board-maps/yaml/M5STACK_STICKC.yml +9 -0
- data/vendor/board-maps/yaml/M5STACK_STICKC_PLUS.yml +9 -0
- data/vendor/board-maps/yaml/M5STACK_STICKC_PLUS2.yml +9 -0
- data/vendor/board-maps/yaml/M5STACK_TIMER_CAM.yml +10 -0
- data/vendor/board-maps/yaml/M5STACK_TOUGH.yml +9 -0
- data/vendor/board-maps/yaml/M5STACK_UNIT_CAM.yml +10 -0
- data/vendor/board-maps/yaml/M5STACK_UNIT_CAMS3.yml +4 -0
- data/vendor/board-maps/yaml/M5Stack_ATOM.yml +9 -0
- data/vendor/board-maps/yaml/M5Stack_ATOMS3.yml +7 -0
- data/vendor/board-maps/yaml/M5Stack_CoreInk.yml +9 -0
- data/vendor/board-maps/yaml/M5Stack_Station.yml +10 -0
- data/vendor/board-maps/yaml/MAGTAG29_ESP32S2.yml +31 -0
- data/vendor/board-maps/yaml/MAKERGO_C3_SUPERMINI.yml +14 -0
- data/vendor/board-maps/yaml/MARBLE_PICO.yml +48 -0
- data/vendor/board-maps/yaml/MELOPERO_COOKIE_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/MELOPERO_SHAKE_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/METEHOCA_AKANA_R1.yml +46 -0
- data/vendor/board-maps/yaml/METRO_ESP32S2.yml +44 -0
- data/vendor/board-maps/yaml/METRO_ESP32S3.yml +42 -0
- data/vendor/board-maps/yaml/MGBOT_IOTIK32A.yml +36 -0
- data/vendor/board-maps/yaml/MGBOT_IOTIK32B.yml +36 -0
- data/vendor/board-maps/yaml/MH_ET_LIVE_ESP32DEVKIT.yml +36 -0
- data/vendor/board-maps/yaml/MH_ET_LIVE_ESP32MINIKIT.yml +36 -0
- data/vendor/board-maps/yaml/MICROS2.yml +44 -0
- data/vendor/board-maps/yaml/MINIMA.yml +15 -0
- data/vendor/board-maps/yaml/MOD_WIFI_ESP8266.yml +9 -0
- data/vendor/board-maps/yaml/Metro.yml +8 -0
- data/vendor/board-maps/yaml/NAMINO_ARANCIO.yml +3 -0
- data/vendor/board-maps/yaml/NAMINO_BIANCO.yml +13 -0
- data/vendor/board-maps/yaml/NAMINO_ROSSO.yml +3 -0
- data/vendor/board-maps/yaml/NANO32.yml +36 -0
- data/vendor/board-maps/yaml/NANOS3.yml +25 -0
- data/vendor/board-maps/yaml/NANO_ESP32.yml +18 -0
- data/vendor/board-maps/yaml/NANO_RP2040_CONNECT.yml +35 -0
- data/vendor/board-maps/yaml/NEBULAS3.yml +32 -0
- data/vendor/board-maps/yaml/NEKOSYSTEMS_BL2040_MINI.yml +48 -0
- data/vendor/board-maps/yaml/NEWSAN_ARCHI.yml +48 -0
- data/vendor/board-maps/yaml/NOLOGO_ESP32C3_SUPER_MINI.yml +14 -0
- data/vendor/board-maps/yaml/NOLOGO_ESP32S3_PICO.yml +12 -0
- data/vendor/board-maps/yaml/NULLBITS_BIT_C_PRO.yml +48 -0
- data/vendor/board-maps/yaml/Node32s.yml +36 -0
- data/vendor/board-maps/yaml/NodeMCU_32S.yml +36 -0
- data/vendor/board-maps/yaml/ODROID_ESP32.yml +10 -0
- data/vendor/board-maps/yaml/OLIMEX_RP2040_PICO30_16MB.yml +48 -0
- data/vendor/board-maps/yaml/OLIMEX_RP2040_PICO30_2MB.yml +48 -0
- data/vendor/board-maps/yaml/ONEHORSE_ESP32_DEV.yml +34 -0
- data/vendor/board-maps/yaml/OPTA_ANALOG.yml +7 -0
- data/vendor/board-maps/yaml/OPTA_DIGITAL.yml +5 -0
- data/vendor/board-maps/yaml/OROCA_EDUBOT.yml +33 -0
- data/vendor/board-maps/yaml/PIMORONI_PGA2040.yml +48 -0
- data/vendor/board-maps/yaml/PIMORONI_PLASMA2040.yml +29 -0
- data/vendor/board-maps/yaml/PIMORONI_TINY2040.yml +44 -0
- data/vendor/board-maps/yaml/PINTRONIX_PINMAX.yml +42 -0
- data/vendor/board-maps/yaml/PORTENTA_C33.yml +28 -0
- data/vendor/board-maps/yaml/PROS3.yml +33 -0
- data/vendor/board-maps/yaml/PYCOM_GPY.yml +38 -0
- data/vendor/board-maps/yaml/Piranha.yml +22 -0
- data/vendor/board-maps/yaml/Pocket32.yml +36 -0
- data/vendor/board-maps/yaml/QUALIA_S3_RGB666.yml +15 -0
- data/vendor/board-maps/yaml/QUANTUM.yml +35 -0
- data/vendor/board-maps/yaml/RAKWIRELESS_RAK11300.yml +47 -0
- data/vendor/board-maps/yaml/RASPBERRY_PI_PICO.yml +48 -0
- data/vendor/board-maps/yaml/RASPBERRY_PI_PICO_W.yml +48 -0
- data/vendor/board-maps/yaml/REDPILL_ESP32S3.yml +41 -0
- data/vendor/board-maps/yaml/REDSCORP_RP2040_EINS.yml +35 -0
- data/vendor/board-maps/yaml/REDSCORP_RP2040_PROMINI.yml +35 -0
- data/vendor/board-maps/yaml/SAMD_CIRCUITPLAYGROUND_EXPRESS.yml +11 -0
- data/vendor/board-maps/yaml/SAMD_MKR1000.yml +20 -0
- data/vendor/board-maps/yaml/SAMD_MKRFox1200.yml +19 -0
- data/vendor/board-maps/yaml/SAMD_MKRGSM1400.yml +15 -0
- data/vendor/board-maps/yaml/SAMD_MKRNB1500.yml +15 -0
- data/vendor/board-maps/yaml/SAMD_MKRVIDOR4000.yml +19 -0
- data/vendor/board-maps/yaml/SAMD_MKRWAN1300.yml +18 -0
- data/vendor/board-maps/yaml/SAMD_MKRWAN1310.yml +18 -0
- data/vendor/board-maps/yaml/SAMD_MKRWIFI1010.yml +19 -0
- data/vendor/board-maps/yaml/SAMD_MKRZERO.yml +19 -0
- data/vendor/board-maps/yaml/SAMD_NANO_33_IOT.yml +13 -0
- data/vendor/board-maps/yaml/SAMD_TIAN.yml +15 -0
- data/vendor/board-maps/yaml/SAMD_ZERO.yml +14 -0
- data/vendor/board-maps/yaml/SAM_DUE.yml +28 -0
- data/vendor/board-maps/yaml/SAM_ZERO.yml +15 -0
- data/vendor/board-maps/yaml/SEA_PICRO.yml +48 -0
- data/vendor/board-maps/yaml/SEEED_INDICATOR_RP2040.yml +47 -0
- data/vendor/board-maps/yaml/SEEED_XIAO_RP2040.yml +29 -0
- data/vendor/board-maps/yaml/SENSEBOX_MCU_ESP32S2.yml +12 -0
- data/vendor/board-maps/yaml/SILICOGNITION_RP2040_SHIM.yml +30 -0
- data/vendor/board-maps/yaml/SOLDERPARTY_RP2040_STAMP.yml +48 -0
- data/vendor/board-maps/yaml/SONOFF_DUALR3.yml +35 -0
- data/vendor/board-maps/yaml/SPARKFUN_MICROMOD_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/SPARKFUN_PROMICRO_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/SPARKFUN_PRO_MICRO_ESP32C3.yml +24 -0
- data/vendor/board-maps/yaml/SPARKFUN_THINGPLUS_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/TAMC_TERMOD_S3.yml +41 -0
- data/vendor/board-maps/yaml/TBEAM_USE_RADIO_SX1262.yml +28 -0
- data/vendor/board-maps/yaml/TBEAM_USE_RADIO_SX1268.yml +28 -0
- data/vendor/board-maps/yaml/TBEAM_USE_RADIO_SX1276.yml +28 -0
- data/vendor/board-maps/yaml/TBEAM_USE_RADIO_SX1278.yml +28 -0
- data/vendor/board-maps/yaml/TBEAM_USE_RADIO_SX1280.yml +28 -0
- data/vendor/board-maps/yaml/TBeam.yml +28 -0
- data/vendor/board-maps/yaml/THINGPULSE_EPULSE_FEATHER.yml +31 -0
- data/vendor/board-maps/yaml/THINGPULSE_EPULSE_FEATHER_C6.yml +15 -0
- data/vendor/board-maps/yaml/TINYC6.yml +25 -0
- data/vendor/board-maps/yaml/TINYPICO.yml +35 -0
- data/vendor/board-maps/yaml/TINYS2.yml +43 -0
- data/vendor/board-maps/yaml/TINYS3.yml +25 -0
- data/vendor/board-maps/yaml/TTGO-T-OI-PLUS_DEV.yml +11 -0
- data/vendor/board-maps/yaml/TTGO_LoRa32_V1.yml +38 -0
- data/vendor/board-maps/yaml/TTGO_LoRa32_V2.yml +38 -0
- data/vendor/board-maps/yaml/TTGO_LoRa32_v21new.yml +38 -0
- data/vendor/board-maps/yaml/TTGO_T1.yml +36 -0
- data/vendor/board-maps/yaml/TTGO_T7_V13_Mini32.yml +36 -0
- data/vendor/board-maps/yaml/TTGO_T7_V14_Mini32.yml +36 -0
- data/vendor/board-maps/yaml/TWATCH_2020_V1.yml +9 -0
- data/vendor/board-maps/yaml/TWATCH_2020_V2.yml +9 -0
- data/vendor/board-maps/yaml/TWATCH_2020_V3.yml +9 -0
- data/vendor/board-maps/yaml/TWATCH_BASE.yml +9 -0
- data/vendor/board-maps/yaml/TWatch.yml +9 -0
- data/vendor/board-maps/yaml/Trueverit_ESP32_Universal_IoT_Driver.yml +18 -0
- data/vendor/board-maps/yaml/Trueverit_ESP32_Universal_IoT_Driver_MK_II.yml +18 -0
- data/vendor/board-maps/yaml/UBLOX_NINA_W10.yml +57 -0
- data/vendor/board-maps/yaml/UBLOX_NORA_W10.yml +43 -0
- data/vendor/board-maps/yaml/UNOWIFIR4.yml +17 -0
- data/vendor/board-maps/yaml/UPESY_EDU_ESP32.yml +28 -0
- data/vendor/board-maps/yaml/UPESY_ESP32C3_BASIC.yml +13 -0
- data/vendor/board-maps/yaml/UPESY_ESP32C3_MINI.yml +12 -0
- data/vendor/board-maps/yaml/UPESY_ESP32S3_BASIC.yml +42 -0
- data/vendor/board-maps/yaml/UPESY_RP2040_DEVKIT.yml +48 -0
- data/vendor/board-maps/yaml/VALTRACK_V4_MFW_ESP32_C3.yml +23 -0
- data/vendor/board-maps/yaml/VALTRACK_V4_VTS_ESP32_C3.yml +23 -0
- data/vendor/board-maps/yaml/VIRALINK_GATE32_01.yml +6 -0
- data/vendor/board-maps/yaml/VIRALINK_GATE32_11.yml +7 -0
- data/vendor/board-maps/yaml/VIYALAB_MIZU_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/WATCHY.yml +7 -0
- data/vendor/board-maps/yaml/WATCHY_V10.yml +7 -0
- data/vendor/board-maps/yaml/WATCHY_V15.yml +7 -0
- data/vendor/board-maps/yaml/WATCHY_V20.yml +7 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32S3_TOUCH_LCD_128.yml +8 -0
- data/vendor/board-maps/yaml/WAVESHARE_RP2040_LCD_0_96.yml +47 -0
- data/vendor/board-maps/yaml/WAVESHARE_RP2040_LCD_1_28.yml +47 -0
- data/vendor/board-maps/yaml/WAVESHARE_RP2040_MATRIX.yml +48 -0
- data/vendor/board-maps/yaml/WAVESHARE_RP2040_ONE.yml +48 -0
- data/vendor/board-maps/yaml/WAVESHARE_RP2040_PIZERO.yml +47 -0
- data/vendor/board-maps/yaml/WAVESHARE_RP2040_PLUS.yml +48 -0
- data/vendor/board-maps/yaml/WAVESHARE_RP2040_ZERO.yml +48 -0
- data/vendor/board-maps/yaml/WEACT_STUDIO_ESP32C3.yml +14 -0
- data/vendor/board-maps/yaml/WESP32.yml +17 -0
- data/vendor/board-maps/yaml/WIDORA_AIR.yml +34 -0
- data/vendor/board-maps/yaml/WIFIDUINO_ESP8266.yml +23 -0
- data/vendor/board-maps/yaml/WIFINFO.yml +20 -0
- data/vendor/board-maps/yaml/WIPY3.yml +38 -0
- data/vendor/board-maps/yaml/WIZNET_5100S_EVB_PICO.yml +48 -0
- data/vendor/board-maps/yaml/WIZNET_5500_EVB_PICO.yml +48 -0
- data/vendor/board-maps/yaml/WIZNET_WIZFI360_EVB_PICO.yml +48 -0
- data/vendor/board-maps/yaml/WT32_ETH01.yml +8 -0
- data/vendor/board-maps/yaml/WT32_SC01_PLUS.yml +7 -0
- data/vendor/board-maps/yaml/WiFiduino32S3.yml +27 -0
- data/vendor/board-maps/yaml/WiFiduinoV2.yml +28 -0
- data/vendor/board-maps/yaml/Wifiduino32.yml +40 -0
- data/vendor/board-maps/yaml/XIAO_ESP32C3.yml +21 -0
- data/vendor/board-maps/yaml/XIAO_ESP32C6.yml +22 -0
- data/vendor/board-maps/yaml/XIAO_ESP32S3.yml +37 -0
- data/vendor/board-maps/yaml/YD_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/atmegazero_esp32s2.yml +30 -0
- data/vendor/board-maps/yaml/connaxio_espoir.yml +24 -0
- data/vendor/board-maps/yaml/esp32vn_iot_uno.yml +31 -0
- data/vendor/board-maps/yaml/fm_devkit.yml +15 -0
- data/vendor/board-maps/yaml/heltec_wifi_kit_32.yml +38 -0
- data/vendor/board-maps/yaml/heltec_wifi_kit_32_V3.yml +42 -0
- data/vendor/board-maps/yaml/heltec_wifi_lora_32.yml +36 -0
- data/vendor/board-maps/yaml/heltec_wifi_lora_32_V2.yml +36 -0
- data/vendor/board-maps/yaml/heltec_wireless_stick.yml +36 -0
- data/vendor/board-maps/yaml/heltec_wireless_stick_LITE.yml +36 -0
- data/vendor/board-maps/yaml/openkb.yml +37 -0
- data/vendor/board-maps/yaml/roboheart_hercules.yml +26 -0
- data/vendor/board-maps/yaml/sensesiot_weizen.yml +35 -0
- data/vendor/board-maps/yaml/uPesy_WROOM.yml +36 -0
- data/vendor/board-maps/yaml/uPesy_WROVER.yml +36 -0
- data/vendor/board-maps/yaml/unphone8.yml +42 -0
- data/vendor/board-maps/yaml/unphone9.yml +50 -0
- data/vendor/board-maps/yaml/wifi_kit_8.yml +15 -0
- metadata +541 -22
- data/examples/led/apa102_breathe.rb +0 -45
- data/examples/pulse_io/ir_transmitter.rb +0 -55
- data/examples/spi/ssd_through_register.rb +0 -40
- data/examples/uart/bit_bang_read.rb +0 -16
- data/examples/uart/bit_bang_write.rb +0 -16
- data/lib/denko/analog_io/sensor.rb +0 -6
- data/lib/denko/sensor/virtual.rb +0 -42
- data/src/lib/DenkoIROutESP.cpp +0 -26
@@ -0,0 +1,238 @@
|
|
1
|
+
//
|
2
|
+
// Adds I2C bitbang functionality to the Denko class if DENKO_I2C_BB defined in DenkoDefines.h.
|
3
|
+
//
|
4
|
+
#include "Denko.h"
|
5
|
+
|
6
|
+
#ifdef DENKO_I2C_BB
|
7
|
+
|
8
|
+
void Denko::i2c_bb_delay_quarter_period() {
|
9
|
+
#ifndef __AVR__
|
10
|
+
microDelay(i2c_bb_quarter_period);
|
11
|
+
#endif
|
12
|
+
}
|
13
|
+
|
14
|
+
// Delays for timing. Not sure how necessary this is.
|
15
|
+
void Denko::i2c_bb_delay_half_period() {
|
16
|
+
#ifndef __AVR__
|
17
|
+
microDelay(i2c_bb_quarter_period*2);
|
18
|
+
#endif
|
19
|
+
}
|
20
|
+
|
21
|
+
// Can't use output mode for SDA. Toggle between input for HIGH, output for LOW.
|
22
|
+
void Denko::i2c_bb_sda_high() { pinMode(i2c_bb_sda_pin, INPUT); }
|
23
|
+
void Denko::i2c_bb_sda_low() { pinMode(i2c_bb_sda_pin, OUTPUT); }
|
24
|
+
|
25
|
+
// Matching SCL functions for readability.
|
26
|
+
void Denko::i2c_bb_scl_high() { digitalWrite(i2c_bb_scl_pin, HIGH); }
|
27
|
+
void Denko::i2c_bb_scl_low() { digitalWrite(i2c_bb_scl_pin, LOW); }
|
28
|
+
|
29
|
+
// Start condition is SDA then SCL going low, from both high.
|
30
|
+
void Denko::i2c_bb_start() {
|
31
|
+
i2c_bb_delay_quarter_period();
|
32
|
+
i2c_bb_sda_low();
|
33
|
+
i2c_bb_delay_quarter_period();
|
34
|
+
i2c_bb_scl_low();
|
35
|
+
}
|
36
|
+
|
37
|
+
// Stop condition is SDA going high, while SCL is also high.
|
38
|
+
void Denko::i2c_bb_stop() {
|
39
|
+
i2c_bb_delay_quarter_period();
|
40
|
+
i2c_bb_sda_low();
|
41
|
+
i2c_bb_delay_quarter_period();
|
42
|
+
i2c_bb_scl_high();
|
43
|
+
i2c_bb_delay_quarter_period();
|
44
|
+
i2c_bb_sda_high();
|
45
|
+
}
|
46
|
+
|
47
|
+
uint8_t Denko::i2c_bb_read_bit() {
|
48
|
+
uint8_t bit;
|
49
|
+
|
50
|
+
// Ensure SDA high before we pull SCL high.
|
51
|
+
// i2c_bb_delay_quarter_period();
|
52
|
+
i2c_bb_sda_high();
|
53
|
+
i2c_bb_delay_quarter_period();
|
54
|
+
|
55
|
+
// Pull SCL high.
|
56
|
+
i2c_bb_scl_high();
|
57
|
+
|
58
|
+
// Wait 1/4 period and sample SDA.
|
59
|
+
i2c_bb_delay_quarter_period();
|
60
|
+
bit = digitalRead(i2c_bb_sda_pin);
|
61
|
+
|
62
|
+
// Leave SCL low.
|
63
|
+
// i2c_bb_delay_quarter_period();
|
64
|
+
i2c_bb_scl_low();
|
65
|
+
|
66
|
+
return bit;
|
67
|
+
}
|
68
|
+
|
69
|
+
void Denko::i2c_bb_write_bit(uint8_t bit) {
|
70
|
+
// i2c_bb_delay_quarter_period();
|
71
|
+
// Set SDA while SCL is low.
|
72
|
+
if (bit == 0) {
|
73
|
+
i2c_bb_sda_low();
|
74
|
+
} else {
|
75
|
+
i2c_bb_sda_high();
|
76
|
+
}
|
77
|
+
// i2c_bb_delay_quarter_period();
|
78
|
+
|
79
|
+
// Pull SCL high, wait (should be half cycle), then leave it low.
|
80
|
+
i2c_bb_scl_high();
|
81
|
+
i2c_bb_delay_quarter_period();
|
82
|
+
// i2c_bb_delay_half_period();
|
83
|
+
i2c_bb_scl_low();
|
84
|
+
}
|
85
|
+
|
86
|
+
uint8_t Denko::i2c_bb_read_byte(bool ack) {
|
87
|
+
uint8_t b;
|
88
|
+
|
89
|
+
// Receive MSB first.
|
90
|
+
for (int i=7; i>=0; i--) bitWrite(b, i, i2c_bb_read_bit());
|
91
|
+
|
92
|
+
// Send ACK or NACK and return byte.
|
93
|
+
if (ack) {
|
94
|
+
i2c_bb_write_bit(0);
|
95
|
+
} else {
|
96
|
+
i2c_bb_write_bit(1);
|
97
|
+
}
|
98
|
+
return b;
|
99
|
+
}
|
100
|
+
|
101
|
+
int Denko::i2c_bb_write_byte(uint8_t data) {
|
102
|
+
// Send MSB first.
|
103
|
+
for (int i=7; i>=0; i--) i2c_bb_write_bit(bitRead(data, i));
|
104
|
+
|
105
|
+
// Return -1 for NACK, 0 for ACK.
|
106
|
+
return (i2c_bb_read_bit() == 0) ? 0 : -1;
|
107
|
+
}
|
108
|
+
|
109
|
+
void Denko::i2c_bb_init(uint8_t scl, uint8_t sda) {
|
110
|
+
// Set pins in state variables, to avoid passing them around.
|
111
|
+
i2c_bb_scl_pin = scl;
|
112
|
+
i2c_bb_sda_pin = sda;
|
113
|
+
|
114
|
+
// Ensure SCL is output, and reset both pins to high.
|
115
|
+
pinMode(i2c_bb_scl_pin, OUTPUT);
|
116
|
+
i2c_bb_stop();
|
117
|
+
}
|
118
|
+
|
119
|
+
//
|
120
|
+
// Search for I2C devices on a bit banged I2C interface.
|
121
|
+
//
|
122
|
+
// cmd = 31
|
123
|
+
// pin = SCL pin
|
124
|
+
// val = SDA pin
|
125
|
+
//
|
126
|
+
// Ask each address for a single byte to see if it exists on the bus.
|
127
|
+
//
|
128
|
+
void Denko::i2c_bb_search() {
|
129
|
+
int ack;
|
130
|
+
uint8_t addr;
|
131
|
+
|
132
|
+
// Switch our "bus" to the given pins.
|
133
|
+
i2c_bb_init((uint8_t)pin, (uint8_t)val);
|
134
|
+
|
135
|
+
// Start sending results.
|
136
|
+
stream->print(i2c_bb_sda_pin);
|
137
|
+
|
138
|
+
// If SDA is low here, nothing connected to bus. Return no results.
|
139
|
+
if (digitalRead(i2c_bb_sda_pin) == 0) {
|
140
|
+
stream->print('\n');
|
141
|
+
return;
|
142
|
+
}
|
143
|
+
|
144
|
+
// Only addresses from 0x08 to 0x77 are usable (8 to 127).
|
145
|
+
for (addr = 0x08; addr < 0x78; addr++) {
|
146
|
+
i2c_bb_start();
|
147
|
+
ack = i2c_bb_write_byte((addr << 1) & 0b11111110);
|
148
|
+
if (ack == 0) {
|
149
|
+
stream->print(':');
|
150
|
+
stream->print(addr);
|
151
|
+
}
|
152
|
+
i2c_bb_stop();
|
153
|
+
}
|
154
|
+
stream->print('\n');
|
155
|
+
}
|
156
|
+
|
157
|
+
//
|
158
|
+
// Write to an I2C device over a bit banged I2C interface.
|
159
|
+
//
|
160
|
+
// cmd = 31
|
161
|
+
// pin = SCL pin
|
162
|
+
// val = SDA pin
|
163
|
+
// auxMsg[0] = I2C settings
|
164
|
+
// Bits[7..0] = <reserved>
|
165
|
+
// auxMsg[1] = Device address in bits [6..0] + repeated start in bit 7
|
166
|
+
// auxMsg[2] = Data length to write
|
167
|
+
// auxMsg[3]+ = Data
|
168
|
+
//
|
169
|
+
void Denko::i2c_bb_write() {
|
170
|
+
// Get parameters from message.
|
171
|
+
uint8_t address = auxMsg[1] & 0b01111111;
|
172
|
+
uint8_t writeAddress = (address << 1) & 0b11111110;
|
173
|
+
uint8_t sendStop = auxMsg[1] >> 7;
|
174
|
+
uint8_t dataLength = auxMsg[2];
|
175
|
+
|
176
|
+
// Switch our "bus" to the given pins.
|
177
|
+
i2c_bb_init((uint8_t)pin, (uint8_t)val);
|
178
|
+
|
179
|
+
i2c_bb_start();
|
180
|
+
i2c_bb_write_byte(writeAddress);
|
181
|
+
for (int i=0; i<dataLength; i++) i2c_bb_write_byte(auxMsg[3+i]);
|
182
|
+
i2c_bb_stop();
|
183
|
+
}
|
184
|
+
|
185
|
+
//
|
186
|
+
// Read from an I2C device over a bit banged I2C interface.
|
187
|
+
//
|
188
|
+
// cmd = 32
|
189
|
+
// pin = SCL pin
|
190
|
+
// val = SDA pin
|
191
|
+
// auxMsg[0] = I2C settings
|
192
|
+
// Bits[7..0] = <reserved>
|
193
|
+
// auxMsg[1] = Device address in bits [6..0] + repeated start in bit 7
|
194
|
+
// auxMsg[2] = Data length to read
|
195
|
+
// auxMsg[3] = Register address length
|
196
|
+
// auxMsg[4]+ = Register address bytes if length > 0
|
197
|
+
//
|
198
|
+
void Denko::i2c_bb_read() {
|
199
|
+
// Get parameters from message.
|
200
|
+
uint8_t address = auxMsg[1] & 0b01111111;
|
201
|
+
uint8_t writeAddress = (address << 1) & 0b11111110;
|
202
|
+
uint8_t readAddress = (address << 1) | 0b00000001;
|
203
|
+
uint8_t sendStop = auxMsg[1] >> 7;
|
204
|
+
uint8_t dataLength = auxMsg[2];
|
205
|
+
|
206
|
+
// Switch our "bus" to the given pins.
|
207
|
+
i2c_bb_init((uint8_t)pin, (uint8_t)val);
|
208
|
+
|
209
|
+
// Optionally write up to a 4 byte register address before reading.
|
210
|
+
if ((auxMsg[3] > 0) && (auxMsg[3] < 5)) {
|
211
|
+
i2c_bb_start();
|
212
|
+
i2c_bb_write_byte(writeAddress);
|
213
|
+
for(int i=0; i<auxMsg[3]; i++) i2c_bb_write_byte(auxMsg[4+i]);
|
214
|
+
i2c_bb_stop();
|
215
|
+
}
|
216
|
+
|
217
|
+
// If no ACK from device, return without sending any data.
|
218
|
+
i2c_bb_start();
|
219
|
+
int ack = i2c_bb_write_byte(readAddress);
|
220
|
+
if (ack < 0) return;
|
221
|
+
|
222
|
+
// Start streaming data as if coming from the SDA pin.
|
223
|
+
stream->print(i2c_bb_sda_pin); stream->print(':');
|
224
|
+
stream->print(address); stream->print('-');
|
225
|
+
|
226
|
+
// Read and ACK for all but the last byte.
|
227
|
+
for(int i=0; i<dataLength-1; i++){
|
228
|
+
stream->print(i2c_bb_read_byte(true));
|
229
|
+
stream->print(',');
|
230
|
+
}
|
231
|
+
stream->print(i2c_bb_read_byte(false));
|
232
|
+
|
233
|
+
// Finish stream and send stop condition.
|
234
|
+
stream->print(',');
|
235
|
+
stream->print('\n');
|
236
|
+
i2c_bb_stop();
|
237
|
+
}
|
238
|
+
#endif
|
data/src/lib/DenkoIROut.cpp
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
// This file adds to the Denko class only if DENKO_IR_OUT is defined in Denko.h.
|
3
3
|
//
|
4
4
|
#include "Denko.h"
|
5
|
-
#if defined(DENKO_IR_OUT)
|
5
|
+
#if defined(DENKO_IR_OUT)
|
6
6
|
|
7
7
|
// Save memory by disabling receiver.
|
8
8
|
#undef RAW_BUFFER_LENGTH
|
@@ -20,14 +20,19 @@
|
|
20
20
|
// CMD = 16
|
21
21
|
// Send an infrared signal.
|
22
22
|
void Denko::irSend(){
|
23
|
-
//
|
24
|
-
uint16_t *pulseArray = reinterpret_cast<uint16_t *>(auxMsg + 1);
|
25
|
-
|
26
|
-
// Dynamically set the sending pin. Needs to be PWM capable.
|
23
|
+
// Change send pin per call. Must be PWM capable.
|
27
24
|
IrSender.setSendPin(pin);
|
28
25
|
|
29
|
-
// auxMsg
|
26
|
+
// Byte 2+ of auxMsg is already little-endian uint16 pulses.
|
27
|
+
//
|
28
|
+
// WARNING: This offset must always be an even number, for aligned
|
29
|
+
// memory access on the ESP8266, or it breaks.
|
30
|
+
uint16_t *pulseArray = reinterpret_cast<uint16_t *>(auxMsg + 2);
|
31
|
+
|
32
|
+
// auxMsg[0..1] contains number of pulses, also uint16.
|
33
|
+
uint16_t length = *reinterpret_cast<uint16_t *>(auxMsg);
|
34
|
+
|
30
35
|
// Val contains frequency
|
31
|
-
IrSender.sendRaw(pulseArray,
|
36
|
+
IrSender.sendRaw(pulseArray, length, val);
|
32
37
|
}
|
33
38
|
#endif
|
data/src/lib/DenkoLEDArray.cpp
CHANGED
@@ -10,6 +10,13 @@
|
|
10
10
|
//
|
11
11
|
#ifdef DENKO_LED_WS2812
|
12
12
|
#include <Adafruit_NeoPixel.h>
|
13
|
+
#ifdef ESP32
|
14
|
+
#include <esp.c>
|
15
|
+
#endif
|
16
|
+
|
17
|
+
#ifdef ARDUINO_ARCH_RP2040
|
18
|
+
Adafruit_NeoPixel ledArray;
|
19
|
+
#endif
|
13
20
|
#endif
|
14
21
|
|
15
22
|
//
|
@@ -18,24 +25,40 @@
|
|
18
25
|
//
|
19
26
|
// pin = Microcontroller pin connected to Data In pin of the LED array.
|
20
27
|
// val = Number of raw pixel data bytes to expect. Max 9999.
|
21
|
-
// auxMsg[0..3] =
|
22
|
-
// auxMsg[4
|
28
|
+
// auxMsg[0..3] = ALWAYS ZERO or ESP32 can crash if pixel bytes have certain low values. Very confusing.
|
29
|
+
// auxMsg[4..7] = Reserved for future settings.
|
30
|
+
// auxMsg[8+] = Raw pixel data, already in correct byte order (GRB, RGB, etc.).
|
31
|
+
//
|
32
|
+
#define WS2812_DATA_OFFSET 8
|
23
33
|
//
|
24
34
|
void Denko::showLEDArray() {
|
25
|
-
//
|
26
|
-
|
27
|
-
|
35
|
+
// Avoid memcpy on ESP32 by calling espShow() directly.
|
36
|
+
#ifdef ESP32
|
37
|
+
espShow(pin, &auxMsg[WS2812_DATA_OFFSET], val, true);
|
28
38
|
|
29
|
-
//
|
30
|
-
|
39
|
+
// Pre-init instance (one PIO) on Pi Pico.
|
40
|
+
#elif defined(ARDUINO_ARCH_RP2040)
|
41
|
+
ledArray.setPin(pin);
|
42
|
+
ledArray.updateLength(val);
|
43
|
+
memcpy(ledArray.getPixels(), &auxMsg[WS2812_DATA_OFFSET], val);
|
44
|
+
ledArray.show();
|
31
45
|
|
32
|
-
//
|
33
|
-
#
|
34
|
-
|
35
|
-
|
46
|
+
// Reinit and memcpy for everything else.
|
47
|
+
#else
|
48
|
+
// Setup a new LED array object.
|
49
|
+
Adafruit_NeoPixel ledArray(val, pin, NEO_GRB + NEO_KHZ800);
|
50
|
+
ledArray.begin();
|
51
|
+
|
52
|
+
// Copy LED data into the pixel buffer.
|
53
|
+
memcpy(ledArray.getPixels(), &auxMsg[WS2812_DATA_OFFSET], val);
|
36
54
|
|
37
|
-
|
38
|
-
|
55
|
+
// Let the line stay low for about 6 bytes worth of data.
|
56
|
+
// Prevents first pixel green being stuck on.
|
57
|
+
microDelay(60);
|
58
|
+
|
59
|
+
// Write the pixel buffer to the array.
|
60
|
+
ledArray.show();
|
61
|
+
#endif
|
39
62
|
|
40
63
|
// Tell the computer to resume sending data.
|
41
64
|
sendReady();
|
data/src/lib/DenkoSPI.cpp
CHANGED
@@ -84,7 +84,8 @@ void Denko::spiEnd() {
|
|
84
84
|
// val = empty
|
85
85
|
// auxMsg[0] = SPI settings
|
86
86
|
// Bit 0..1 = SPI mode
|
87
|
-
// Bit 2..
|
87
|
+
// Bit 2..5 = ** unused **
|
88
|
+
// Bit 6 = Whether to toggle select pin (1), or not (0)
|
88
89
|
// Bit 7 = Read and write bit order: MSBFIRST(1) or LSBFIRST(0)
|
89
90
|
// auxMsg[1] = read length (number of bytes)
|
90
91
|
// auxMsg[2] = write length (number of bytes)
|
@@ -100,8 +101,8 @@ void Denko::spiTransfer(uint32_t clockRate, uint8_t select, uint8_t settings, ui
|
|
100
101
|
stream->print(':');
|
101
102
|
}
|
102
103
|
|
103
|
-
// Pull select
|
104
|
-
if (
|
104
|
+
// Pull select low.
|
105
|
+
if (bitRead(settings, 6) == 1) {
|
105
106
|
pinMode(select, OUTPUT);
|
106
107
|
digitalWrite(select, LOW);
|
107
108
|
}
|
@@ -122,8 +123,8 @@ void Denko::spiTransfer(uint32_t clockRate, uint8_t select, uint8_t settings, ui
|
|
122
123
|
}
|
123
124
|
}
|
124
125
|
|
125
|
-
// Leave select high
|
126
|
-
if (
|
126
|
+
// Leave select high.
|
127
|
+
if (bitRead(settings, 6) == 1) digitalWrite(select, HIGH);
|
127
128
|
|
128
129
|
spiEnd();
|
129
130
|
}
|
data/src/lib/DenkoSPIBB.cpp
CHANGED
@@ -11,7 +11,8 @@
|
|
11
11
|
// val = empty
|
12
12
|
// auxMsg[0] = SPI settings
|
13
13
|
// Bit 0..1 = SPI mode
|
14
|
-
// Bit 2..
|
14
|
+
// Bit 2..5 = ** unused **
|
15
|
+
// Bit 6 = Whether to toggle select pin (1), or not (0)
|
15
16
|
// Bit 7 = Read and write bit order: MSBFIRST(1) or LSBFIRST(0)
|
16
17
|
// auxMsg[1] = read length (number of bytes)
|
17
18
|
// auxMsg[2] = write length (number of bytes)
|
@@ -38,7 +39,7 @@ void Denko::spiBBtransfer( uint8_t clock, uint8_t input, uint8_t output, uint8_t
|
|
38
39
|
// Set idle state of clock pin based on SPI mode.
|
39
40
|
pinMode(clock, OUTPUT);
|
40
41
|
if ((mode == 0)||(mode == 1)) digitalWrite(clock, LOW);
|
41
|
-
if ((mode == 2)||(mode == 3)) digitalWrite(clock,
|
42
|
+
if ((mode == 2)||(mode == 3)) digitalWrite(clock, HIGH);
|
42
43
|
|
43
44
|
// Stream read bytes as if coming from select pin.
|
44
45
|
if (rLength > 0) {
|
@@ -46,8 +47,8 @@ void Denko::spiBBtransfer( uint8_t clock, uint8_t input, uint8_t output, uint8_t
|
|
46
47
|
stream->print(':');
|
47
48
|
}
|
48
49
|
|
49
|
-
// Pull select
|
50
|
-
if (
|
50
|
+
// Pull select low, if needed.
|
51
|
+
if (bitRead(settings, 6) == 1) {
|
51
52
|
pinMode(select, OUTPUT);
|
52
53
|
digitalWrite(select, LOW);
|
53
54
|
}
|
@@ -68,8 +69,8 @@ void Denko::spiBBtransfer( uint8_t clock, uint8_t input, uint8_t output, uint8_t
|
|
68
69
|
}
|
69
70
|
}
|
70
71
|
|
71
|
-
// Leave select high
|
72
|
-
if (
|
72
|
+
// Leave select high.
|
73
|
+
if (bitRead(settings, 6) == 1) digitalWrite(select, HIGH);
|
73
74
|
}
|
74
75
|
|
75
76
|
//
|
data/target.yml
CHANGED
@@ -1,3 +1,38 @@
|
|
1
|
-
name:
|
1
|
+
name: atmega
|
2
2
|
fqbn: arduino:avr:uno
|
3
|
-
port: /dev/cu.
|
3
|
+
port: /dev/cu.usbmodem14501
|
4
|
+
|
5
|
+
# name: atmega
|
6
|
+
# fqbn: arduino:avr:mega
|
7
|
+
# port: /dev/cu.usbmodem14501
|
8
|
+
|
9
|
+
# name: atmega
|
10
|
+
# fqbn: arduino:avr:leonardo
|
11
|
+
# port: /dev/cu.usbmodem14501
|
12
|
+
|
13
|
+
# Uses native USB port
|
14
|
+
# name: atsam3x
|
15
|
+
# fqbn: arduino:sam:arduino_due_x
|
16
|
+
# port: /dev/cu.usbmodem14501
|
17
|
+
|
18
|
+
# Uses native USB port
|
19
|
+
# name: atsamd21
|
20
|
+
# fqbn: arduino:samd:arduino_zero_native
|
21
|
+
# port: /dev/cu.usbmodem14501
|
22
|
+
|
23
|
+
# name: esp8266
|
24
|
+
# fqbn: esp8266:esp8266:nodemcuv2
|
25
|
+
# port: /dev/cu.SLAB_USBtoUART
|
26
|
+
|
27
|
+
# name: esp32
|
28
|
+
# fqbn: esp32:esp32:esp32doit-devkit-v1
|
29
|
+
# port: /dev/cu.SLAB_USBtoUART
|
30
|
+
|
31
|
+
# Use for S3 on secondary UART port (not native USB). Native USB needs to be enabled in IDE.
|
32
|
+
# name: esp32
|
33
|
+
# fqbn: esp32:esp32:lolin_s3
|
34
|
+
# port: /dev/cu.usbmodem14501
|
35
|
+
|
36
|
+
# name: rp2040
|
37
|
+
# fqbn: rp2040:rp2040:rpipicow
|
38
|
+
# port: /dev/cu.usbmodem14501
|
@@ -17,45 +17,45 @@ class AnalogIOPotentiometerTest < Minitest::Test
|
|
17
17
|
|
18
18
|
assert part.smoothing
|
19
19
|
assert_equal 8, part.divider
|
20
|
-
assert_equal [], part.
|
20
|
+
assert_equal [], part.smoothing_set
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
def test_smoothing_on
|
24
24
|
7.times do
|
25
25
|
part.update(10)
|
26
26
|
end
|
27
27
|
part.update(50)
|
28
|
-
|
28
|
+
|
29
29
|
# 120/8 = 15
|
30
30
|
assert_equal part.state, 15
|
31
31
|
end
|
32
|
-
|
32
|
+
|
33
33
|
def test_smoothing_off
|
34
34
|
part.smoothing = false
|
35
35
|
7.times do
|
36
36
|
part.update(10)
|
37
37
|
end
|
38
38
|
part.update(50)
|
39
|
-
|
39
|
+
|
40
40
|
# Give latest value.
|
41
41
|
assert_equal part.state, 50
|
42
42
|
end
|
43
|
-
|
43
|
+
|
44
44
|
def test_on_change
|
45
45
|
mock = Minitest::Mock.new.expect(:call, nil)
|
46
|
-
|
46
|
+
|
47
47
|
# Turn off smoothing and set an initial value
|
48
48
|
part.smoothing = false
|
49
49
|
part.update(100)
|
50
|
-
|
50
|
+
|
51
51
|
# Add the callback
|
52
52
|
part.on_change { mock.call }
|
53
|
-
|
53
|
+
|
54
54
|
# Send a few updates
|
55
55
|
part.update(100)
|
56
56
|
part.update(100)
|
57
57
|
part.update(101)
|
58
|
-
|
58
|
+
|
59
59
|
# Should have only been called once.
|
60
60
|
mock.verify
|
61
61
|
end
|
@@ -27,11 +27,19 @@ class CallbacksTest < Minitest::Test
|
|
27
27
|
@part ||= CallbackComponent.new(board: board, pin: 1)
|
28
28
|
end
|
29
29
|
|
30
|
+
def callback_mutex_is_correct_class
|
31
|
+
if (RUBY_ENGINE == "ruby")
|
32
|
+
assert_equal Denko::MutexStub, part.callback_mutex.class
|
33
|
+
else
|
34
|
+
assert_equal Mutex, part.callback_mutex.class
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
30
38
|
def test_callback_mutex
|
31
39
|
callback = Proc.new{}
|
32
40
|
mock = Minitest::Mock.new
|
33
41
|
3.times {mock.expect(:call, nil)}
|
34
|
-
|
42
|
+
|
35
43
|
part.callback_mutex.stub(:synchronize, mock) do
|
36
44
|
part.callbacks
|
37
45
|
part.add_callback(:key, &callback)
|
@@ -105,7 +113,7 @@ class CallbacksTest < Minitest::Test
|
|
105
113
|
value = 0
|
106
114
|
part.add_callback { value = 1 }
|
107
115
|
part.update(nil)
|
108
|
-
assert_equal 0, value
|
116
|
+
assert_equal 0, value
|
109
117
|
end
|
110
118
|
|
111
119
|
def test_no_callbacks_with_filter_returning_nil
|
@@ -113,6 +121,6 @@ class CallbacksTest < Minitest::Test
|
|
113
121
|
value = 0
|
114
122
|
part2.add_callback { value = 1 }
|
115
123
|
part2.update("anything")
|
116
|
-
assert_equal 0, value
|
124
|
+
assert_equal 0, value
|
117
125
|
end
|
118
126
|
end
|
@@ -8,7 +8,7 @@ class ComponentTest < Minitest::Test
|
|
8
8
|
def board
|
9
9
|
@board ||= BoardMock.new
|
10
10
|
end
|
11
|
-
|
11
|
+
|
12
12
|
def part
|
13
13
|
@part ||= BaseComponent.new(board: board)
|
14
14
|
end
|
@@ -20,35 +20,43 @@ class ComponentTest < Minitest::Test
|
|
20
20
|
def test_registers_with_board
|
21
21
|
assert_equal board.components, [part]
|
22
22
|
end
|
23
|
-
|
23
|
+
|
24
24
|
def test_unregisters_with_board
|
25
25
|
part.send(:unregister)
|
26
26
|
assert_equal board.components, []
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
29
|
def test_start_with_nil_state
|
30
30
|
assert_nil BaseComponent.new(board: board).state
|
31
31
|
end
|
32
|
-
|
32
|
+
|
33
|
+
def test_state_mutex_is_correct_class
|
34
|
+
if (RUBY_ENGINE == "ruby")
|
35
|
+
assert_equal Denko::MutexStub, part.state_mutex.class
|
36
|
+
else
|
37
|
+
assert_equal Mutex, part.state_mutex.class
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
33
41
|
def test_sets_and_gets_state
|
34
42
|
part.send(:state=, 10)
|
35
43
|
assert_equal part.state, 10
|
36
44
|
end
|
37
|
-
|
45
|
+
|
38
46
|
def test_state_through_mutex
|
39
47
|
mock = Minitest::Mock.new
|
40
48
|
2.times {mock.expect(:call, nil)}
|
41
|
-
|
42
|
-
part.
|
49
|
+
|
50
|
+
part.state_mutex.stub(:synchronize, mock) do
|
43
51
|
part.state
|
44
52
|
part.send(:state=, nil)
|
45
53
|
end
|
46
54
|
mock.verify
|
47
55
|
end
|
48
|
-
|
56
|
+
|
49
57
|
def test_micro_delay
|
50
58
|
mock = Minitest::Mock.new.expect :call, nil, [1000]
|
51
|
-
|
59
|
+
|
52
60
|
board.stub(:micro_delay, mock) do
|
53
61
|
part.micro_delay(1000)
|
54
62
|
end
|
@@ -14,21 +14,26 @@ class InputPinTest < Minitest::Test
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def test_mode_and_pullup
|
17
|
+
modes = [:input, :input_pulldown, :input_pullup]
|
18
|
+
|
17
19
|
mock = Minitest::Mock.new
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
mock.expect :call, nil, [4, :input_output]
|
20
|
+
modes.each_with_index do |mode, pin|
|
21
|
+
mock.expect :call, nil, [pin+1, mode]
|
22
|
+
end
|
22
23
|
|
23
24
|
board.stub(:set_pin_mode, mock) do
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
25
|
+
modes.each_with_index do |mode, pin|
|
26
|
+
local_part = InputComponent.new(board: board, pin: pin+1, mode: mode)
|
27
|
+
assert_equal mode, local_part.mode
|
28
|
+
end
|
28
29
|
end
|
29
30
|
mock.verify
|
30
31
|
|
31
|
-
|
32
|
+
assert_raises { InputComponent.new(board: board, pin: modes.count+1, mode: :wrong_mode) }
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_debounce_time=
|
36
|
+
part.debounce_time = 1
|
32
37
|
end
|
33
38
|
|
34
39
|
def test_stop_listener
|