denko 0.14.0 → 0.15.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_atmega_avr.yml +2 -1
- data/.github/workflows/build_atmega_megaavr.yml +2 -1
- data/.github/workflows/build_atsam3x.yml +1 -0
- data/.github/workflows/build_atsamd21.yml +2 -1
- data/.github/workflows/build_esp32.yml +4 -2
- data/.github/workflows/build_esp32c3.yml +4 -3
- data/.github/workflows/build_esp32c6.yml +4 -2
- data/.github/workflows/build_esp32h2.yml +4 -2
- data/.github/workflows/build_esp32s2.yml +4 -2
- data/.github/workflows/build_esp32s3.yml +4 -2
- data/.github/workflows/build_esp8266.yml +2 -1
- data/.github/workflows/build_ra4m1.yml +1 -0
- data/.github/workflows/build_rp2040.yml +4 -3
- data/.github/workflows/ruby.yml +1 -1
- data/CHANGELOG.md +203 -0
- data/DEPS_CLI.md +16 -16
- data/DEPS_IDE.md +31 -30
- data/MICROCONTROLLERS.md +103 -0
- data/PERIPHERALS.md +178 -0
- data/README.md +28 -21
- data/denko.gemspec +6 -1
- data/lib/denko/analog_io/ads1118.rb +5 -5
- data/lib/denko/analog_io/ads111x.rb +23 -19
- data/lib/denko/analog_io/joystick.rb +87 -0
- data/lib/denko/analog_io/potentiometer.rb +1 -5
- data/lib/denko/analog_io.rb +22 -8
- data/lib/denko/behaviors/bus_controller.rb +2 -1
- data/lib/denko/behaviors/bus_peripheral.rb +1 -1
- data/lib/denko/behaviors/callbacks.rb +18 -16
- data/lib/denko/behaviors/component.rb +0 -4
- data/lib/denko/behaviors/lifecycle.rb +1 -1
- data/lib/denko/behaviors/listener.rb +9 -3
- data/lib/denko/behaviors/multi_pin.rb +4 -6
- data/lib/denko/behaviors/poller.rb +11 -2
- data/lib/denko/behaviors/reader.rb +109 -21
- data/lib/denko/behaviors/single_pin.rb +2 -4
- data/lib/denko/behaviors/state.rb +18 -13
- data/lib/denko/behaviors/threaded.rb +19 -8
- data/lib/denko/behaviors.rb +36 -23
- data/lib/denko/board/eeprom.rb +1 -1
- data/lib/denko/board/i2c.rb +1 -1
- data/lib/denko/board/i2c_bit_bang.rb +9 -5
- data/lib/denko/board/map.rb +6 -2
- data/lib/denko/board/one_wire.rb +3 -3
- data/lib/denko/board/spi.rb +30 -30
- data/lib/denko/board/spi_bit_bang.rb +8 -11
- data/lib/denko/board.rb +6 -3
- data/lib/denko/connection/flow_control.rb +1 -1
- data/lib/denko/connection/serial.rb +5 -5
- data/lib/denko/digital_io/output.rb +12 -4
- data/lib/denko/digital_io/pcf8574.rb +114 -0
- data/lib/denko/digital_io/rotary_encoder.rb +10 -6
- data/lib/denko/digital_io.rb +24 -6
- data/lib/denko/display/canvas.rb +350 -157
- data/lib/denko/display/font/bmp_5x7.rb +142 -0
- data/lib/denko/display/font/bmp_6x8.rb +142 -0
- data/lib/denko/display/font/bmp_8x16.rb +141 -0
- data/lib/denko/display/font.rb +22 -0
- data/lib/denko/display/hd44780.rb +24 -20
- data/lib/denko/display/il0373.rb +186 -0
- data/lib/denko/display/mono_oled.rb +193 -0
- data/lib/denko/display/pcd8544.rb +154 -0
- data/lib/denko/display/pixel_common.rb +83 -0
- data/lib/denko/display/sh1106.rb +17 -21
- data/lib/denko/display/sh1107.rb +10 -0
- data/lib/denko/display/spi_common.rb +35 -0
- data/lib/denko/display/spi_epaper_common.rb +30 -0
- data/lib/denko/display/ssd1306.rb +6 -228
- data/lib/denko/display/ssd1680.rb +14 -0
- data/lib/denko/display/ssd1681.rb +8 -0
- data/lib/denko/display/ssd168x.rb +227 -0
- data/lib/denko/display/st7302.rb +207 -0
- data/lib/denko/display/st7565.rb +166 -0
- data/lib/denko/display.rb +40 -4
- data/lib/denko/eeprom/at24c.rb +67 -0
- data/lib/denko/eeprom/board.rb +69 -0
- data/lib/denko/eeprom.rb +15 -1
- data/lib/denko/helpers/engine_check.rb +13 -0
- data/lib/denko/{mutex_stub.rb → helpers/mutex_stub.rb} +6 -0
- data/lib/denko/helpers.rb +6 -0
- data/lib/denko/i2c/bit_bang.rb +1 -0
- data/lib/denko/i2c/bus_common.rb +9 -4
- data/lib/denko/i2c/peripheral.rb +5 -1
- data/lib/denko/i2c.rb +17 -4
- data/lib/denko/led/apa102.rb +1 -3
- data/lib/denko/led/base.rb +5 -0
- data/lib/denko/led/rgb.rb +16 -10
- data/lib/denko/led/seven_segment.rb +1 -1
- data/lib/denko/led.rb +17 -8
- data/lib/denko/motor/{stepper.rb → a3967.rb} +1 -1
- data/lib/denko/motor/servo.rb +16 -6
- data/lib/denko/motor.rb +16 -3
- data/lib/denko/one_wire/bus.rb +20 -16
- data/lib/denko/one_wire/bus_enumerator.rb +25 -14
- data/lib/denko/one_wire/helper.rb +4 -2
- data/lib/denko/one_wire.rb +18 -5
- data/lib/denko/pulse_io/buzzer.rb +2 -6
- data/lib/denko/pulse_io/ir_output.rb +1 -5
- data/lib/denko/pulse_io/pwm_output.rb +56 -31
- data/lib/denko/pulse_io.rb +17 -3
- data/lib/denko/rtc/ds3231.rb +4 -3
- data/lib/denko/rtc.rb +14 -1
- data/lib/denko/sensor/aht.rb +16 -20
- data/lib/denko/sensor/bme280.rb +23 -36
- data/lib/denko/sensor/bmp180.rb +8 -13
- data/lib/denko/sensor/dht.rb +17 -7
- data/lib/denko/sensor/ds18b20.rb +5 -4
- data/lib/denko/sensor/hdc1080.rb +174 -0
- data/lib/denko/sensor/htu21d.rb +17 -6
- data/lib/denko/sensor/htu31d.rb +6 -5
- data/lib/denko/sensor/jsnsr04t.rb +49 -0
- data/lib/denko/sensor/qmp6988.rb +14 -30
- data/lib/denko/sensor/rcwl9620.rb +1 -0
- data/lib/denko/sensor/sht3x.rb +6 -5
- data/lib/denko/sensor/sht4x.rb +125 -0
- data/lib/denko/sensor/vl53l0x.rb +58 -0
- data/lib/denko/sensor.rb +33 -15
- data/lib/denko/spi/base_register.rb +11 -7
- data/lib/denko/spi/bus_common.rb +12 -15
- data/lib/denko/spi/input_register.rb +6 -6
- data/lib/denko/spi/output_register.rb +13 -4
- data/lib/denko/spi/peripheral.rb +82 -84
- data/lib/denko/spi.rb +20 -10
- data/lib/denko/uart/bit_bang.rb +2 -27
- data/lib/denko/uart/common.rb +33 -0
- data/lib/denko/uart/hardware.rb +1 -26
- data/lib/denko/uart.rb +16 -2
- data/lib/denko/version.rb +1 -1
- data/lib/denko.rb +22 -25
- data/lib/denko_cli/targets.rb +7 -7
- data/lib/denko_cli/targets.txt +19 -20
- data/src/lib/Denko.cpp +26 -13
- data/src/lib/Denko.h +4 -4
- data/src/lib/DenkoDefines.h +7 -26
- data/src/lib/DenkoLEDArray.cpp +1 -8
- data/src/lib/DenkoSPI.cpp +31 -29
- data/src/lib/DenkoSPIBB.cpp +12 -14
- data/test/analog_io/input_test.rb +1 -1
- data/test/analog_io/potentiometer_test.rb +2 -2
- data/test/behaviors/bus_peripheral_test.rb +4 -4
- data/test/behaviors/callbacks_test.rb +20 -10
- data/test/behaviors/component_test.rb +18 -8
- data/test/board/board_test.rb +9 -9
- data/test/board/one_wire_test.rb +25 -14
- data/test/board/spi_test.rb +31 -15
- data/test/digital_io/input_test.rb +2 -2
- data/test/display/canvas_test.rb +306 -0
- data/test/display/hd44780_test.rb +34 -7
- data/test/eeprom/board_test.rb +45 -0
- data/test/helpers/mruby_minitest.rb +95 -0
- data/test/helpers/mruby_runner.rb +13 -0
- data/test/i2c/bus_test.rb +93 -30
- data/test/i2c/peripheral_test.rb +2 -2
- data/test/led/apa102_test.rb +24 -0
- data/test/led/rgb_test.rb +4 -4
- data/test/motor/{stepper_test.rb → a3967_test.rb} +2 -2
- data/test/one_wire/bus_enumerator_test.rb +1 -1
- data/test/one_wire/bus_test.rb +42 -35
- data/test/one_wire/peripheral_test.rb +5 -17
- data/test/pulse_io/ir_output_test.rb +5 -0
- data/test/pulse_io/pwm_output_test.rb +10 -10
- data/test/rtc/ds3231_test.rb +3 -2
- data/test/sensor/dht_test.rb +11 -11
- data/test/spi/bitbang_test.rb +27 -0
- data/test/spi/bus_test.rb +19 -29
- data/test/spi/input_register_test.rb +2 -2
- data/test/spi/{peripheral_multi_pin_test.rb → peripheral_test.rb} +25 -5
- data/test/test_helper.rb +44 -124
- data/vendor/board-maps/BoardMap.h +264 -0
- data/vendor/board-maps/yaml/ALFREDO_NOU3.yml +2 -0
- data/vendor/board-maps/yaml/ATD143_S3.yml +1 -0
- data/vendor/board-maps/yaml/BHARATPI_A7672S_4G.yml +14 -0
- data/vendor/board-maps/yaml/BHARATPI_LORA.yml +14 -0
- data/vendor/board-maps/yaml/BHARATPI_NODE_WIFI.yml +14 -0
- data/vendor/board-maps/yaml/BPI_LEAF_S3.yml +0 -1
- data/vendor/board-maps/yaml/CEZERIO_DEV_ESP32C6.yml +14 -0
- data/vendor/board-maps/yaml/CEZERIO_MINI_DEV_ESP32C6.yml +12 -0
- data/vendor/board-maps/yaml/CIRCUITART_ZERO_S3.yml +71 -0
- data/vendor/board-maps/yaml/CODECELLC3.yml +13 -0
- data/vendor/board-maps/yaml/CYOBOT_V2_ESP32S3.yml +7 -0
- data/vendor/board-maps/yaml/EDGES3D.yml +25 -0
- data/vendor/board-maps/yaml/ESP32C6_DEV.yml +3 -4
- data/vendor/board-maps/yaml/ESP32C6_THING_PLUS.yml +0 -1
- data/vendor/board-maps/yaml/ESP32H2_DEV.yml +0 -1
- data/vendor/board-maps/yaml/ESP32H2_DEVKIT_LIPO.yml +0 -1
- data/vendor/board-maps/yaml/ESP32P4_DEV.yml +35 -0
- data/vendor/board-maps/yaml/ESP32S2_DEV.yml +0 -1
- data/vendor/board-maps/yaml/ESP32S2_DEVKIT_LIPO.yml +0 -1
- data/vendor/board-maps/yaml/ESP32S2_DEVKIT_LIPO_USB.yml +0 -1
- data/vendor/board-maps/yaml/ESP32_2432S028R.yml +14 -0
- data/vendor/board-maps/yaml/FEATHERS3.yml +1 -1
- data/vendor/board-maps/yaml/FRI3D_2024_ESP32S3.yml +43 -0
- data/vendor/board-maps/yaml/GEEKBLE_ESP32C3.yml +0 -1
- data/vendor/board-maps/yaml/GEEKBLE_NANO_ESP32S3.yml +25 -0
- data/vendor/board-maps/yaml/HELTEC_VISION_MASTER_E290.yml +41 -0
- data/vendor/board-maps/yaml/HELTEC_VISION_MASTER_E_213.yml +41 -0
- data/vendor/board-maps/yaml/HELTEC_VISION_MASTER_T190.yml +41 -0
- data/vendor/board-maps/yaml/HUIDU_HD_WF2.yml +5 -0
- data/vendor/board-maps/yaml/HUIDU_HD_WF4.yml +1 -0
- data/vendor/board-maps/yaml/LILYGO_LORA_CC1101.yml +6 -0
- data/vendor/board-maps/yaml/LILYGO_LORA_LR1121.yml +6 -0
- data/vendor/board-maps/yaml/LILYGO_LORA_SI4432.yml +6 -0
- data/vendor/board-maps/yaml/LILYGO_LORA_SX1262.yml +6 -0
- data/vendor/board-maps/yaml/LILYGO_LORA_SX1280.yml +6 -0
- data/vendor/board-maps/yaml/LOLIN_C3_MINI.yml +0 -1
- data/vendor/board-maps/yaml/LOLIN_C3_PICO.yml +1 -2
- data/vendor/board-maps/yaml/LoPy.yml +0 -1
- data/vendor/board-maps/yaml/LoPy4.yml +0 -1
- data/vendor/board-maps/yaml/M5STACK_DINMETER.yml +8 -0
- data/vendor/board-maps/yaml/M5STACK_FIRE.yml +1 -1
- data/vendor/board-maps/yaml/OMGS3.yml +25 -0
- data/vendor/board-maps/yaml/PCBCUPID_GLYPHC3.yml +23 -0
- data/vendor/board-maps/yaml/PCBCUPID_GLYPHC6.yml +32 -0
- data/vendor/board-maps/yaml/PCBCUPID_GLYPHH2.yml +24 -0
- data/vendor/board-maps/yaml/PYCOM_GPY.yml +0 -1
- data/vendor/board-maps/yaml/SENSEBOX_MCU_ESP32S2.yml +1 -1
- data/vendor/board-maps/yaml/SPARKFUN_ESP32S3_THING_PLUS.yml +13 -0
- data/vendor/board-maps/yaml/SPARKLEMOTIONMINI_ESP32.yml +12 -0
- data/vendor/board-maps/yaml/SPARKLEMOTIONSTICK_ESP32.yml +11 -0
- data/vendor/board-maps/yaml/SPARKLEMOTION_ESP32.yml +12 -0
- data/vendor/board-maps/yaml/SQUIXL.yml +7 -0
- data/vendor/board-maps/yaml/THINGPULSE_EPULSE_FEATHER_C6.yml +0 -1
- data/vendor/board-maps/yaml/T_LORA_PAGER.yml +6 -0
- data/vendor/board-maps/yaml/T_WATCH_S3.yml +7 -0
- data/vendor/board-maps/yaml/T_WATCH_S3_ULTRA.yml +6 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_LCD_146.yml +41 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_LCD_147.yml +41 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_LCD_169.yml +38 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_LCD_185.yml +41 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_RELAY_6CH.yml +41 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_AMOLED_143.yml +7 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_AMOLED_164.yml +7 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_AMOLED_18.yml +38 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_AMOLED_191.yml +7 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_AMOLED_241.yml +7 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_146.yml +41 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_169.yml +38 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_185.yml +41 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_185_BOX.yml +41 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_21.yml +41 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_28.yml +41 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_4.yml +36 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_43.yml +38 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_43B.yml +38 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_5.yml +38 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_5B.yml +38 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_7.yml +38 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_ZERO.yml +36 -0
- data/vendor/board-maps/yaml/WIPY3.yml +0 -1
- data/vendor/board-maps/yaml/WS_ESP32_S3_MATRIX.yml +38 -0
- data/vendor/board-maps/yaml/XIAO_ESP32S3_PLUS.yml +46 -0
- data/vendor/board-maps/yaml/YB_ESP32S3_AMP_V2.yml +28 -0
- data/vendor/board-maps/yaml/YB_ESP32S3_AMP_V3.yml +28 -0
- data/vendor/board-maps/yaml/YB_ESP32S3_ETH.yml +40 -0
- data/vendor/board-maps/yaml/mercury.yml +20 -0
- metadata +116 -101
- data/.vscode/settings.json +0 -5
- data/.vscode/tasks.json +0 -20
- data/HARDWARE.md +0 -263
- data/benchmarks/analog_listen.rb +0 -49
- data/benchmarks/digital_write.rb +0 -28
- data/benchmarks/i2c_ssd1306_refresh.rb +0 -91
- data/examples/advanced/m5_env3.rb +0 -46
- data/examples/advanced/rotary_encoder_mac_volume.rb +0 -53
- data/examples/advanced/ssd1306_time_temp_rh.rb +0 -43
- data/examples/analog_io/ads1100.rb +0 -48
- data/examples/analog_io/ads1115.rb +0 -57
- data/examples/analog_io/ads1118.rb +0 -65
- data/examples/analog_io/dac_loopback.rb +0 -34
- data/examples/analog_io/input.rb +0 -56
- data/examples/analog_io/input_smoothing.rb +0 -27
- data/examples/analog_io/potentiometer.rb +0 -31
- data/examples/connection/binary_echo.rb +0 -34
- data/examples/connection/tcp.rb +0 -19
- data/examples/digital_io/button.rb +0 -17
- data/examples/digital_io/relay.rb +0 -17
- data/examples/digital_io/rotary_encoder.rb +0 -36
- data/examples/display/hd44780.png +0 -0
- data/examples/display/hd44780.rb +0 -47
- data/examples/display/ssd1306.rb +0 -43
- data/examples/display/ssd1306_s2_pico.rb +0 -29
- data/examples/eeprom/built_in.rb +0 -32
- data/examples/i2c/search.rb +0 -39
- data/examples/led/apa102_bounce.rb +0 -32
- data/examples/led/apa102_fade.rb +0 -44
- data/examples/led/builtin_blink.rb +0 -14
- data/examples/led/builtin_fade.rb +0 -19
- data/examples/led/rgb_led.rb +0 -31
- data/examples/led/seven_segment_char_echo.rb +0 -17
- data/examples/led/ws2812_bounce.rb +0 -30
- data/examples/led/ws2812_builtin_blink.rb +0 -22
- data/examples/led/ws2812_fade.rb +0 -43
- data/examples/motor/l298.rb +0 -45
- data/examples/motor/servo.rb +0 -17
- data/examples/motor/stepper.png +0 -0
- data/examples/motor/stepper.rb +0 -43
- data/examples/one_wire/search.rb +0 -32
- data/examples/pulse_io/buzzer.rb +0 -35
- data/examples/pulse_io/ir_output.rb +0 -51
- data/examples/pulse_io/pwm_output.rb +0 -30
- data/examples/rtc/ds3231.rb +0 -31
- data/examples/sensor/aht10.rb +0 -17
- data/examples/sensor/aht20.rb +0 -17
- data/examples/sensor/bme280.rb +0 -38
- data/examples/sensor/bmp180.rb +0 -26
- data/examples/sensor/dht.rb +0 -29
- data/examples/sensor/ds18b20.rb +0 -57
- data/examples/sensor/generic_pir.rb +0 -27
- data/examples/sensor/hcsr04.rb +0 -17
- data/examples/sensor/htu21d.rb +0 -43
- data/examples/sensor/htu31d.rb +0 -33
- data/examples/sensor/neat_tph_readings.rb +0 -32
- data/examples/sensor/qmp6988.rb +0 -51
- data/examples/sensor/rcwl9620.rb +0 -15
- data/examples/sensor/sht3x.rb +0 -32
- data/examples/spi/bitbang_loopback.rb +0 -46
- data/examples/spi/input_register.rb +0 -40
- data/examples/spi/output_register.rb +0 -41
- data/examples/spi/ssd_through_registers.rb +0 -28
- data/examples/spi/two_registers.rb +0 -40
- data/examples/uart/bit_bang_demo.rb +0 -25
- data/examples/uart/board_passthrough.rb +0 -40
- data/examples/uart/hardware_loopback.rb +0 -16
- data/lib/denko/eeprom/built_in.rb +0 -72
- data/lib/denko/fonts.rb +0 -106
- data/test/eeprom/built_in_test.rb +0 -61
- data/test/spi/peripheral_single_pin_test.rb +0 -48
- data/tutorial/01-led/led.fzz +0 -0
- data/tutorial/01-led/led.pdf +0 -0
- data/tutorial/01-led/led.rb +0 -73
- data/tutorial/02-button/button.fzz +0 -0
- data/tutorial/02-button/button.pdf +0 -0
- data/tutorial/02-button/button.rb +0 -65
- data/tutorial/03-potentiometer/potentiometer.fzz +0 -0
- data/tutorial/03-potentiometer/potentiometer.pdf +0 -0
- data/tutorial/03-potentiometer/potentiometer.rb +0 -66
- data/tutorial/04-pwm_led/pwm_led.fzz +0 -0
- data/tutorial/04-pwm_led/pwm_led.pdf +0 -0
- data/tutorial/04-pwm_led/pwm_led.rb +0 -64
- data/tutorial/05-rgb_led/rgb_led.fzz +0 -0
- data/tutorial/05-rgb_led/rgb_led.pdf +0 -0
- data/tutorial/05-rgb_led/rgb_led.rb +0 -58
- data/tutorial/05-rgb_led/rgb_mapping.rb +0 -76
data/test/i2c/peripheral_test.rb
CHANGED
@@ -56,10 +56,10 @@ class I2CPeripheralTest < Minitest::Test
|
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
|
-
def
|
59
|
+
def test_read_and_repeated_start
|
60
60
|
part.i2c_repeated_start = true
|
61
61
|
|
62
|
-
board.
|
62
|
+
board.inject_component_update(part, "48-127,127,127,127,127,127")
|
63
63
|
|
64
64
|
mock = Minitest::Mock.new.expect :call, nil, [0x30, 0x03, 6, 400_000, true]
|
65
65
|
bus.stub(:read, mock) do
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require_relative '../test_helper'
|
2
|
+
|
3
|
+
class APA102Test < Minitest::Test
|
4
|
+
def board
|
5
|
+
@board ||= BoardMock.new
|
6
|
+
end
|
7
|
+
|
8
|
+
def bus
|
9
|
+
@bus ||= Denko::SPI::Bus.new(board: board)
|
10
|
+
end
|
11
|
+
|
12
|
+
def options
|
13
|
+
{ bus: bus }
|
14
|
+
end
|
15
|
+
|
16
|
+
def part
|
17
|
+
@part ||= Denko::LED::APA102.new(options)
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_added_to_bus_components
|
21
|
+
part
|
22
|
+
assert bus.components.include?(part)
|
23
|
+
end
|
24
|
+
end
|
data/test/led/rgb_test.rb
CHANGED
@@ -20,14 +20,14 @@ class RGBLEDTest < Minitest::Test
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def test_write
|
23
|
-
red_mock = Minitest::Mock.new.expect :
|
24
|
-
green_mock = Minitest::Mock.new.expect :
|
25
|
-
blue_mock = Minitest::Mock.new.expect :
|
23
|
+
red_mock = Minitest::Mock.new.expect :duty=, nil, [0]
|
24
|
+
green_mock = Minitest::Mock.new.expect :duty=, nil, [50]
|
25
|
+
blue_mock = Minitest::Mock.new.expect :duty=, nil, [0]
|
26
26
|
|
27
27
|
part.stub(:red, red_mock) do
|
28
28
|
part.stub(:green, green_mock) do
|
29
29
|
part.stub(:blue, blue_mock) do
|
30
|
-
part.write(0,
|
30
|
+
part.write(0, 50, 0)
|
31
31
|
end
|
32
32
|
end
|
33
33
|
end
|
@@ -1,12 +1,12 @@
|
|
1
1
|
require_relative '../test_helper'
|
2
2
|
|
3
|
-
class
|
3
|
+
class A3967MotorTest < Minitest::Test
|
4
4
|
def board
|
5
5
|
@board ||= BoardMock.new
|
6
6
|
end
|
7
7
|
|
8
8
|
def part
|
9
|
-
@part ||= Denko::Motor::
|
9
|
+
@part ||= Denko::Motor::A3967.new board: board,
|
10
10
|
pins: {step: 9, direction: 10}
|
11
11
|
end
|
12
12
|
|
data/test/one_wire/bus_test.rb
CHANGED
@@ -4,7 +4,7 @@ class OneWireBusTest < Minitest::Test
|
|
4
4
|
def board
|
5
5
|
@board ||= BoardMock.new
|
6
6
|
end
|
7
|
-
|
7
|
+
|
8
8
|
def part
|
9
9
|
return @part if @part
|
10
10
|
# Respond with disabled parasite power.
|
@@ -18,24 +18,25 @@ class OneWireBusTest < Minitest::Test
|
|
18
18
|
assert bus2.parasite_power
|
19
19
|
end
|
20
20
|
|
21
|
-
def
|
22
|
-
|
23
|
-
|
24
|
-
|
21
|
+
def test_read_power_supply
|
22
|
+
board.inject_component_update(part, "0")
|
23
|
+
|
24
|
+
lock_mock = Minitest::Mock.new.expect(:call, nil)
|
25
|
+
unlock_mock = Minitest::Mock.new.expect(:call, nil)
|
26
|
+
|
27
|
+
part.mutex.stub(:lock, lock_mock) do
|
28
|
+
part.mutex.stub(:unlock, unlock_mock) do
|
29
|
+
part.read_power_supply
|
30
|
+
end
|
25
31
|
end
|
26
|
-
mock.verify
|
27
|
-
end
|
28
32
|
|
29
|
-
|
30
|
-
|
33
|
+
lock_mock.verify
|
34
|
+
unlock_mock.verify
|
35
|
+
assert part.parasite_power
|
31
36
|
|
32
|
-
board.
|
37
|
+
board.inject_component_update(part, "1")
|
33
38
|
part.read_power_supply
|
34
39
|
refute part.parasite_power
|
35
|
-
|
36
|
-
board.inject_read_for_component(part, 1, "0")
|
37
|
-
part.read_power_supply
|
38
|
-
assert part.parasite_power
|
39
40
|
end
|
40
41
|
|
41
42
|
def test_read_power_supply_sends_board_commands
|
@@ -43,7 +44,7 @@ class OneWireBusTest < Minitest::Test
|
|
43
44
|
board_mock.expect(:set_pin_mode, nil, [part.pin, :output])
|
44
45
|
board_mock.expect(:low, 0)
|
45
46
|
board_mock.expect(:digital_write, nil, [part.pin, 0])
|
46
|
-
board_mock.expect(:one_wire_reset, nil, [part.pin,
|
47
|
+
board_mock.expect(:one_wire_reset, nil, [part.pin, false])
|
47
48
|
board_mock.expect(:one_wire_write, nil, [part.pin, false, [0xCC, 0xB4]])
|
48
49
|
|
49
50
|
# Stub the parasite power response from the board.
|
@@ -62,28 +63,34 @@ class OneWireBusTest < Minitest::Test
|
|
62
63
|
end
|
63
64
|
|
64
65
|
def test_device_present_in_mutex
|
65
|
-
# part.device_present calls #reset which expects a response.
|
66
|
-
board.
|
66
|
+
# part.device_present calls #reset which expects a response.
|
67
|
+
board.inject_component_update(part, "1")
|
68
|
+
|
69
|
+
lock_mock = Minitest::Mock.new.expect(:call, nil)
|
70
|
+
unlock_mock = Minitest::Mock.new.expect(:call, nil)
|
67
71
|
|
68
|
-
|
69
|
-
|
70
|
-
|
72
|
+
part.mutex.stub(:lock, lock_mock) do
|
73
|
+
part.mutex.stub(:unlock, unlock_mock) do
|
74
|
+
part.device_present
|
75
|
+
end
|
71
76
|
end
|
72
|
-
|
77
|
+
|
78
|
+
lock_mock.verify
|
79
|
+
unlock_mock.verify
|
73
80
|
end
|
74
81
|
|
75
82
|
def test_set_device_present
|
76
83
|
mock = Minitest::Mock.new
|
77
|
-
mock.expect(:call, nil, [
|
78
|
-
mock.expect(:call, nil, [
|
79
|
-
|
84
|
+
mock.expect(:call, nil, [true])
|
85
|
+
mock.expect(:call, nil, [true])
|
86
|
+
|
80
87
|
part.stub(:reset, mock) do
|
81
88
|
# Give 0 for first reading, device present
|
82
|
-
board.
|
89
|
+
board.inject_component_update(part, "0")
|
83
90
|
assert part.device_present
|
84
|
-
|
91
|
+
|
85
92
|
# Give 1 for second reading, no device
|
86
|
-
board.
|
93
|
+
board.inject_component_update(part, "1")
|
87
94
|
refute part.device_present
|
88
95
|
end
|
89
96
|
mock.verify
|
@@ -98,21 +105,21 @@ class OneWireBusTest < Minitest::Test
|
|
98
105
|
def test_reset
|
99
106
|
part
|
100
107
|
mock = Minitest::Mock.new
|
101
|
-
mock.expect :call, nil, [1,
|
102
|
-
mock.expect :call, nil, [1,
|
108
|
+
mock.expect :call, nil, [1, true]
|
109
|
+
mock.expect :call, nil, [1, false]
|
103
110
|
|
104
111
|
board.stub(:one_wire_reset, mock) do
|
105
|
-
part.reset(
|
112
|
+
part.reset(true)
|
106
113
|
part.reset
|
107
114
|
end
|
108
115
|
mock.verify
|
109
116
|
end
|
110
|
-
|
117
|
+
|
111
118
|
def test__read
|
112
119
|
part
|
113
120
|
mock = Minitest::Mock.new.expect :call, nil, [1, 4]
|
114
121
|
board.stub(:one_wire_read, mock) do
|
115
|
-
part.
|
122
|
+
part.read_nb(4)
|
116
123
|
end
|
117
124
|
mock.verify
|
118
125
|
end
|
@@ -124,16 +131,16 @@ class OneWireBusTest < Minitest::Test
|
|
124
131
|
mock.expect :call, nil, [1, true, [255, 177, 0x48]]
|
125
132
|
mock.expect :call, nil, [1, false, [255, 177, 0x55]]
|
126
133
|
mock.expect :call, nil, [1, false, [255, 177, 0x44]]
|
127
|
-
|
134
|
+
|
128
135
|
board.stub(:one_wire_write, mock) do
|
129
136
|
# Parasite power on and parasite power functions.
|
130
137
|
part.instance_variable_set(:@parasite_power, true)
|
131
138
|
part.write [255, 177, 0x44]
|
132
139
|
part.write [255, 177, 0x48]
|
133
|
-
|
140
|
+
|
134
141
|
# Parasite power on and not parasite power functions.
|
135
142
|
part.write [255, 177, 0x55]
|
136
|
-
|
143
|
+
|
137
144
|
# Parasite power off and would-be parasite power function.
|
138
145
|
part.instance_variable_set(:@parasite_power, false)
|
139
146
|
part.write [255, 177, 0x44]
|
@@ -90,10 +90,7 @@ class OneWirePeripheralTest < Minitest::Test
|
|
90
90
|
end
|
91
91
|
|
92
92
|
def test_read_scratch_is_atomic
|
93
|
-
|
94
|
-
bus
|
95
|
-
# Will read 9 bytes.
|
96
|
-
board.inject_read_for_component(bus, 1, "255,255,255,255,255,255,255,255")
|
93
|
+
board.inject_component_update(bus, "255,255,255,255,255,255,255,255")
|
97
94
|
|
98
95
|
mock = Minitest::Mock.new.expect(:call, nil)
|
99
96
|
part.stub(:atomically, mock) { part.read_scratch(9) }
|
@@ -101,10 +98,7 @@ class OneWirePeripheralTest < Minitest::Test
|
|
101
98
|
end
|
102
99
|
|
103
100
|
def test_read_scratch_matches_first
|
104
|
-
|
105
|
-
bus
|
106
|
-
# Will read 9 bytes.
|
107
|
-
board.inject_read_for_component(bus, 1, "255,255,255,255,255,255,255,255")
|
101
|
+
board.inject_component_update(bus, "255,255,255,255,255,255,255,255")
|
108
102
|
|
109
103
|
mock = Minitest::Mock.new.expect(:call, nil)
|
110
104
|
part.stub(:match, mock) { part.read_scratch(9) }
|
@@ -112,10 +106,7 @@ class OneWirePeripheralTest < Minitest::Test
|
|
112
106
|
end
|
113
107
|
|
114
108
|
def test_read_scratch_sends_the_command
|
115
|
-
|
116
|
-
bus
|
117
|
-
# Will read 9 bytes.
|
118
|
-
board.inject_read_for_component(bus, 1, "255,255,255,255,255,255,255,255")
|
109
|
+
board.inject_component_update(bus, "255,255,255,255,255,255,255,255")
|
119
110
|
|
120
111
|
mock = Minitest::Mock.new
|
121
112
|
mock.expect(:call, nil, [0xCC])
|
@@ -125,16 +116,13 @@ class OneWirePeripheralTest < Minitest::Test
|
|
125
116
|
end
|
126
117
|
|
127
118
|
def test_read_scratch_reads_bytes_from_bus
|
128
|
-
|
129
|
-
bus
|
130
|
-
# Will read 9 bytes.
|
131
|
-
board.inject_read_for_component(bus, 1, "255,255,255,255,255,255,255,255")
|
119
|
+
board.inject_component_update(bus, "255,255,255,255,255,255,255,255")
|
132
120
|
|
133
121
|
mock = Minitest::Mock.new.expect(:call, nil, [9])
|
134
122
|
bus.stub(:read, mock) { part.read_scratch(9) }
|
135
123
|
mock.verify
|
136
124
|
end
|
137
|
-
|
125
|
+
|
138
126
|
def test_write_scratch_is_atomic
|
139
127
|
mock = Minitest::Mock.new.expect(:call, nil)
|
140
128
|
part.stub(:atomically, mock) { part.write_scratch(1) }
|
@@ -9,6 +9,11 @@ class IROutPutTest < Minitest::Test
|
|
9
9
|
@part ||= Denko::PulseIO::IROutput.new(board: board, pin:1)
|
10
10
|
end
|
11
11
|
|
12
|
+
def test_does_not_set_pin_mode
|
13
|
+
refute part.params[:mode]
|
14
|
+
refute part.mode
|
15
|
+
end
|
16
|
+
|
12
17
|
def test_pulse_count_validation
|
13
18
|
assert_raises(ArgumentError) do
|
14
19
|
part.write Array.new(256) { 0 }
|
@@ -64,9 +64,9 @@ class PWMOutTest < Minitest::Test
|
|
64
64
|
part
|
65
65
|
mock = Minitest::Mock.new
|
66
66
|
if (RUBY_VERSION.split(".")[0].to_i < 3)
|
67
|
-
mock.expect :call, nil, [14, :output_pwm], {frequency: 1000, resolution: 8}
|
67
|
+
mock.expect :call, nil, [14, :output_pwm], {frequency: 1000, :period=>1000000, resolution: 8}
|
68
68
|
else
|
69
|
-
mock.expect :call, nil, [14, :output_pwm, {frequency: 1000, resolution: 8}]
|
69
|
+
mock.expect :call, nil, [14, :output_pwm, {frequency: 1000, :period=>1000000, resolution: 8}]
|
70
70
|
end
|
71
71
|
|
72
72
|
board.stub(:set_pin_mode, mock) do
|
@@ -74,16 +74,16 @@ class PWMOutTest < Minitest::Test
|
|
74
74
|
end
|
75
75
|
mock.verify
|
76
76
|
assert_equal :output_pwm, part.mode
|
77
|
-
assert_equal true, part.pwm_enabled
|
77
|
+
assert_equal true, part.pwm_enabled?
|
78
78
|
end
|
79
79
|
|
80
80
|
def test_pwm_enable_uses_stored_settings
|
81
81
|
part2
|
82
82
|
mock = Minitest::Mock.new
|
83
83
|
if (RUBY_VERSION.split(".")[0].to_i < 3)
|
84
|
-
mock.expect :call, nil, [6, :output_pwm], {frequency: 1000, resolution: 12}
|
84
|
+
mock.expect :call, nil, [6, :output_pwm], {frequency: 1000, :period=>1000000, resolution: 12}
|
85
85
|
else
|
86
|
-
mock.expect :call, nil, [6, :output_pwm, {frequency: 1000, resolution: 12}]
|
86
|
+
mock.expect :call, nil, [6, :output_pwm, {frequency: 1000, :period=>1000000, resolution: 12}]
|
87
87
|
end
|
88
88
|
|
89
89
|
board.stub(:set_pin_mode, mock) do
|
@@ -91,16 +91,16 @@ class PWMOutTest < Minitest::Test
|
|
91
91
|
end
|
92
92
|
mock.verify
|
93
93
|
assert_equal :output_pwm, part2.mode
|
94
|
-
assert_equal true, part2.pwm_enabled
|
94
|
+
assert_equal true, part2.pwm_enabled?
|
95
95
|
end
|
96
96
|
|
97
97
|
def test_pwm_enable_uses_arg_settings
|
98
98
|
part
|
99
99
|
mock = Minitest::Mock.new
|
100
100
|
if (RUBY_VERSION.split(".")[0].to_i < 3)
|
101
|
-
mock.expect :call, nil, [14, :output_pwm], {frequency: 500, resolution: 14}
|
101
|
+
mock.expect :call, nil, [14, :output_pwm], {frequency: 500, :period=>2000000, resolution: 14}
|
102
102
|
else
|
103
|
-
mock.expect :call, nil, [14, :output_pwm, {frequency: 500, resolution: 14}]
|
103
|
+
mock.expect :call, nil, [14, :output_pwm, {frequency: 500, :period=>2000000, resolution: 14}]
|
104
104
|
end
|
105
105
|
|
106
106
|
board.stub(:set_pin_mode, mock) do
|
@@ -108,7 +108,7 @@ class PWMOutTest < Minitest::Test
|
|
108
108
|
end
|
109
109
|
mock.verify
|
110
110
|
assert_equal :output_pwm, part.mode
|
111
|
-
assert_equal true, part.pwm_enabled
|
111
|
+
assert_equal true, part.pwm_enabled?
|
112
112
|
assert_equal 14, part.resolution
|
113
113
|
assert_equal 500, part.frequency
|
114
114
|
assert_equal (2**14-1), part.pwm_high
|
@@ -123,6 +123,6 @@ class PWMOutTest < Minitest::Test
|
|
123
123
|
end
|
124
124
|
mock.verify
|
125
125
|
assert_equal :output, part.mode
|
126
|
-
assert_equal false, part.pwm_enabled
|
126
|
+
assert_equal false, part.pwm_enabled?
|
127
127
|
end
|
128
128
|
end
|
data/test/rtc/ds3231_test.rb
CHANGED
@@ -34,10 +34,10 @@ class DS3231Test < Minitest::Test
|
|
34
34
|
end
|
35
35
|
|
36
36
|
def test_read
|
37
|
-
board.
|
37
|
+
board.inject_component_update(bus, "104-0,0,0,6,1,1,48")
|
38
38
|
|
39
39
|
mock = Minitest::Mock.new.expect :call, nil, [part.address, 0x00, 7, 100000, false]
|
40
|
-
bus.stub(:
|
40
|
+
bus.stub(:read_nb, mock) do
|
41
41
|
part.time
|
42
42
|
end
|
43
43
|
mock.verify
|
@@ -45,6 +45,7 @@ class DS3231Test < Minitest::Test
|
|
45
45
|
|
46
46
|
def test_pre_callback_filter
|
47
47
|
mock = Minitest::Mock.new.expect :call, nil, [Time.new(2000, 1, 1, 0, 0, 0.0)]
|
48
|
+
part.read_nb
|
48
49
|
part.stub(:update_state, mock) do
|
49
50
|
bus.send(:update, "104-0,0,0,6,1,1,48")
|
50
51
|
end
|
data/test/sensor/dht_test.rb
CHANGED
@@ -2,19 +2,19 @@ require_relative '../test_helper'
|
|
2
2
|
|
3
3
|
class DHTTest < Minitest::Test
|
4
4
|
PIN = 1
|
5
|
-
|
5
|
+
|
6
6
|
# Actual raw data from a sensor
|
7
7
|
GOOD_STRING = "14,82,77,57,26,52,26,57,26,51,32,51,26,57,26,52,72,57,26,67,72,57,26,51,27,56,72,52,77,52,77,51,26,57,72,67,26,52,26,57,26,52,26,57,26,51,31,52,26,57,72,67,26,52,26,56,72,57,26,52,26,57,72,52,77,51,72,67,72,57,72,51,32,51,26,57,26,52,72,57,72,56,72,47"
|
8
8
|
GOOD_ARRAY = [14, 82, 77, 57, 26, 52, 26, 57, 26, 51, 32, 51, 26, 57, 26, 52, 72, 57, 26, 67, 72, 57, 26, 51, 27, 56, 72, 52, 77, 52, 77, 51, 26, 57, 72, 67, 26, 52, 26, 57, 26, 52, 26, 57, 26, 51, 31, 52, 26, 57, 72, 67, 26, 52, 26, 56, 72, 57, 26, 52, 26, 57, 72, 52, 77, 51, 72, 67, 72, 57, 72, 51, 32, 51, 26, 57, 26, 52, 72, 57, 72, 56, 72, 47]
|
9
9
|
SHORT_ARRAY = [1,2,3,4,5,6]
|
10
|
-
|
10
|
+
|
11
11
|
# Make test data with a bad CRC byte (all 1s = 255).
|
12
12
|
def bad_crc
|
13
13
|
bad_crc = GOOD_ARRAY.dup
|
14
14
|
(67..82).each { |i| bad_crc[i] = 56 }
|
15
15
|
bad_crc
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
def board
|
19
19
|
@board ||= BoardMock.new
|
20
20
|
end
|
@@ -22,17 +22,17 @@ class DHTTest < Minitest::Test
|
|
22
22
|
def part
|
23
23
|
@part ||= Denko::Sensor::DHT.new(board: board, pin:PIN)
|
24
24
|
end
|
25
|
-
|
25
|
+
|
26
26
|
# It should tell the board to do a #pulse_read
|
27
27
|
def test__read
|
28
28
|
part
|
29
|
-
mock = Minitest::Mock.new.expect(:call, nil, [PIN], reset: board.low, reset_time:
|
29
|
+
mock = Minitest::Mock.new.expect(:call, nil, [PIN], reset: board.low, reset_time: 10_000, pulse_limit: 84, timeout: 100)
|
30
30
|
board.stub(:pulse_read, mock) do
|
31
|
-
part.
|
31
|
+
part.read_nb
|
32
32
|
end
|
33
33
|
mock.verify
|
34
34
|
end
|
35
|
-
|
35
|
+
|
36
36
|
# Callback pre filter should convert string of bytes to array and call #decode with it.
|
37
37
|
def test_pre_callback_filter
|
38
38
|
part
|
@@ -41,23 +41,23 @@ class DHTTest < Minitest::Test
|
|
41
41
|
part.update(GOOD_STRING)
|
42
42
|
end
|
43
43
|
end
|
44
|
-
|
44
|
+
|
45
45
|
def test_decode
|
46
46
|
# Error message in output if data is missing.
|
47
47
|
result = part.decode(SHORT_ARRAY)
|
48
48
|
assert result.keys.include? :error
|
49
49
|
assert result[:error].match(/missing/i)
|
50
|
-
|
50
|
+
|
51
51
|
# Error message in output if bad CRC.
|
52
52
|
result = part.decode(bad_crc)
|
53
53
|
assert result.keys.include? :error
|
54
54
|
assert result[:error].match(/crc/i)
|
55
|
-
|
55
|
+
|
56
56
|
# It should calculate output correctly.
|
57
57
|
result = part.decode(GOOD_ARRAY)
|
58
58
|
assert_equal result, {temperature: 29.5, humidity: 66.9}
|
59
59
|
end
|
60
|
-
|
60
|
+
|
61
61
|
def test_crc
|
62
62
|
refute part.crc(bad_crc)
|
63
63
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require_relative '../test_helper'
|
2
|
+
|
3
|
+
class TempSpiPeripheral
|
4
|
+
include Denko::SPI::Peripheral
|
5
|
+
end
|
6
|
+
|
7
|
+
class SPIBitBangTest < Minitest::Test
|
8
|
+
def board
|
9
|
+
@board ||= BoardMock.new
|
10
|
+
end
|
11
|
+
|
12
|
+
def part
|
13
|
+
@bus ||= Denko::SPI::BitBang.new(board: board, pins: {mosi: 4, miso: 5, clock: 6})
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_no_miso
|
17
|
+
no_miso = Denko::SPI::BitBang.new(board: board, pins: {mosi: 4, clock: 6})
|
18
|
+
refute no_miso.params[:pins][:input]
|
19
|
+
refute no_miso.pins[:input]
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_no_mosi
|
23
|
+
no_mosi = Denko::SPI::BitBang.new(board: board, pins: {miso: 5, clock: 6})
|
24
|
+
refute no_mosi.params[:pins][:output]
|
25
|
+
refute no_mosi.pins[:output]
|
26
|
+
end
|
27
|
+
end
|
data/test/spi/bus_test.rb
CHANGED
@@ -1,11 +1,7 @@
|
|
1
1
|
require_relative '../test_helper'
|
2
2
|
|
3
3
|
class TempSpiPeripheral
|
4
|
-
|
5
|
-
@pin = pin
|
6
|
-
end
|
7
|
-
|
8
|
-
attr_reader :pin
|
4
|
+
include Denko::SPI::Peripheral
|
9
5
|
end
|
10
6
|
|
11
7
|
class SPIBusTest < Minitest::Test
|
@@ -20,6 +16,22 @@ class SPIBusTest < Minitest::Test
|
|
20
16
|
PIN = 9
|
21
17
|
OPTIONS = { read: 2, frequency: 800000, mode: 2, bit_order: :lsbfirst }
|
22
18
|
|
19
|
+
def test_automatically_adds_and_removes_component
|
20
|
+
obj = TempSpiPeripheral.new(bus: part, pin: 1)
|
21
|
+
assert part.components.include?(obj)
|
22
|
+
|
23
|
+
part.remove_component(obj)
|
24
|
+
refute part.components.include?(obj)
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_unique_select_pins
|
28
|
+
TempSpiPeripheral.new(bus: part, pin: 1)
|
29
|
+
|
30
|
+
assert_raises do
|
31
|
+
TempSpiPeripheral.new(bus: part, pin: 1)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
23
35
|
def test_transfer
|
24
36
|
mock = Minitest::Mock.new.expect :call, nil, [5, PIN], **OPTIONS
|
25
37
|
board.stub(:spi_transfer, mock) do
|
@@ -36,7 +48,7 @@ class SPIBusTest < Minitest::Test
|
|
36
48
|
mock.verify
|
37
49
|
end
|
38
50
|
|
39
|
-
def
|
51
|
+
def test_stop_forwarded
|
40
52
|
mock = Minitest::Mock.new.expect :call, nil, [PIN]
|
41
53
|
board.stub(:spi_stop, mock) do
|
42
54
|
part.stop(PIN)
|
@@ -44,33 +56,11 @@ class SPIBusTest < Minitest::Test
|
|
44
56
|
mock.verify
|
45
57
|
end
|
46
58
|
|
47
|
-
def
|
48
|
-
obj = TempSpiPeripheral.new(1)
|
49
|
-
part.add_component(obj)
|
50
|
-
assert board.components.include?(obj)
|
51
|
-
|
52
|
-
part.remove_component(obj)
|
53
|
-
refute board.components.include?(obj)
|
54
|
-
end
|
55
|
-
|
56
|
-
def test_set_pin_mode
|
59
|
+
def test_set_pin_mode_forwarded
|
57
60
|
mock = Minitest::Mock.new.expect :call, nil, [9, :output]
|
58
61
|
board.stub(:set_pin_mode, mock) do
|
59
62
|
part.set_pin_mode(9, :output)
|
60
63
|
end
|
61
64
|
mock.verify
|
62
65
|
end
|
63
|
-
|
64
|
-
def test_unique_select_pins
|
65
|
-
part.add_component TempSpiPeripheral.new(1)
|
66
|
-
|
67
|
-
assert_raises do
|
68
|
-
part.add_component TempSpiPeripheral.new(1)
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
def test_no_select_pin
|
73
|
-
part.add_component TempSpiPeripheral.new(nil)
|
74
|
-
assert_empty part.components
|
75
|
-
end
|
76
66
|
end
|
@@ -130,10 +130,10 @@ class InputRegisterTest < Minitest::Test
|
|
130
130
|
refute part.any_listening
|
131
131
|
end
|
132
132
|
|
133
|
-
def
|
133
|
+
def test_gets_reads_through_select
|
134
134
|
mock = Minitest::Mock.new.expect :call, nil, ["127,255"]
|
135
135
|
part.stub(:update, mock) do
|
136
|
-
board.update("#{part.pin}:127,255")
|
136
|
+
board.update("#{part.select.pin}:127,255")
|
137
137
|
end
|
138
138
|
mock.verify
|
139
139
|
end
|
@@ -1,18 +1,22 @@
|
|
1
1
|
require_relative '../test_helper'
|
2
2
|
|
3
|
-
class
|
4
|
-
include Denko::SPI::Peripheral
|
3
|
+
class SPITester
|
4
|
+
include Denko::SPI::Peripheral
|
5
5
|
|
6
6
|
def initialize_pins(options={})
|
7
7
|
super(options)
|
8
|
-
proxy_pin :other_pin, Denko::DigitalIO::Output
|
8
|
+
proxy_pin :other_pin, Denko::DigitalIO::Output
|
9
9
|
end
|
10
10
|
|
11
11
|
def some_callback(data)
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
-
class
|
15
|
+
class SPITesterSingle
|
16
|
+
include Denko::SPI::Peripheral
|
17
|
+
end
|
18
|
+
|
19
|
+
class SPIPeripheralTest < Minitest::Test
|
16
20
|
def board
|
17
21
|
@board ||= BoardMock.new
|
18
22
|
end
|
@@ -26,7 +30,7 @@ class SPIPeripheralMultiPinTest < Minitest::Test
|
|
26
30
|
end
|
27
31
|
|
28
32
|
def part
|
29
|
-
@part ||=
|
33
|
+
@part ||= SPITester.new(options)
|
30
34
|
end
|
31
35
|
|
32
36
|
def test_string_data_converts_to_bytes_for_callbacks
|
@@ -50,4 +54,20 @@ class SPIPeripheralMultiPinTest < Minitest::Test
|
|
50
54
|
end
|
51
55
|
mock.verify
|
52
56
|
end
|
57
|
+
|
58
|
+
def test_allows_pin_alone
|
59
|
+
part2 = SPITesterSingle.new(bus: bus, pin: 5)
|
60
|
+
assert bus.components.include?(part2)
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_subcomponents_attach_to_board_not_bus
|
64
|
+
part
|
65
|
+
assert board, part.select.board
|
66
|
+
assert board, part.other_pin.board
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_added_to_bus
|
70
|
+
part
|
71
|
+
assert bus.components.include?(part)
|
72
|
+
end
|
53
73
|
end
|