Captures everything needed to redeploy the two-display clock (hour on I2C 0x61, minute on I2C 0x63) on a fresh Pi: - Both systemd units (matrix0x61.service, matrix0x63.service) - Deployed Pimoroni script tree, including the local %I (12-hour) clock customization - Vendored upstream sources (ltp305-python, breakout-garden) so restore is fully offline-capable - Boot config snippet enabling I2C - install.sh that wires it all back up idempotently - Inventory doc cross-referencing every live-system path Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
52 lines
1.8 KiB
Python
52 lines
1.8 KiB
Python
import mock
|
|
|
|
|
|
def test_set_pixel(smbus):
|
|
from ltp305 import LTP305, CMD_MATRIX_L, CMD_MATRIX_R
|
|
display = LTP305()
|
|
display.set_pixel(0, 0, 1)
|
|
display.set_pixel(5, 0, 1)
|
|
display.show()
|
|
smbus.SMBus(1).write_i2c_block_data.assert_has_calls((
|
|
mock.call(display.address, CMD_MATRIX_L, [1, 0, 0, 0, 0, 0, 0, 0]),
|
|
mock.call(display.address, CMD_MATRIX_R, [1, 0, 0, 0, 0, 0, 0, 0])
|
|
))
|
|
smbus.reset_mock()
|
|
display.set_pixel(0, 0, 0)
|
|
display.set_pixel(5, 0, 0)
|
|
display.show()
|
|
smbus.SMBus(1).write_i2c_block_data.assert_has_calls((
|
|
mock.call(display.address, CMD_MATRIX_L, [0, 0, 0, 0, 0, 0, 0, 0]),
|
|
mock.call(display.address, CMD_MATRIX_R, [0, 0, 0, 0, 0, 0, 0, 0])
|
|
))
|
|
|
|
|
|
def test_set_decimal(smbus):
|
|
from ltp305 import LTP305, CMD_MATRIX_L, CMD_MATRIX_R
|
|
display = LTP305()
|
|
display.set_decimal(left=True, right=True)
|
|
display.show()
|
|
smbus.SMBus(1).write_i2c_block_data.assert_has_calls((
|
|
mock.call(display.address, CMD_MATRIX_L, [0, 0, 0, 0, 0, 0, 0, 0b01000000]),
|
|
mock.call(display.address, CMD_MATRIX_R, [0, 0, 0, 0, 0, 0, 0b10000000, 0])
|
|
))
|
|
smbus.reset_mock()
|
|
display.set_decimal(left=False, right=False)
|
|
display.show()
|
|
smbus.SMBus(1).write_i2c_block_data.assert_has_calls((
|
|
mock.call(display.address, CMD_MATRIX_L, [0, 0, 0, 0, 0, 0, 0, 0]),
|
|
mock.call(display.address, CMD_MATRIX_R, [0, 0, 0, 0, 0, 0, 0, 0])
|
|
))
|
|
|
|
|
|
def test_set_character(smbus):
|
|
from ltp305 import LTP305, CMD_MATRIX_L, CMD_MATRIX_R
|
|
display = LTP305()
|
|
display.set_character(0, "A")
|
|
display.set_character(5, "B")
|
|
display.show()
|
|
smbus.SMBus(1).write_i2c_block_data.assert_has_calls((
|
|
mock.call(display.address, CMD_MATRIX_L, [126, 17, 17, 17, 126, 0, 0, 0]),
|
|
mock.call(display.address, CMD_MATRIX_R, [15, 17, 17, 15, 17, 17, 15, 0])
|
|
))
|