Skip to content

Commit 4f226fd

Browse files
authored
Try to fix the i2c scan command line utility (#42)
* Try to fix the i2c scan command line utility * Show the default * Expand cli tests to also test i2c_scan help * Update
1 parent d76da9f commit 4f226fd

3 files changed

Lines changed: 64 additions & 12 deletions

File tree

.github/workflows/test.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@ jobs:
3333
run: pylint teensytoany
3434
- name: isort
3535
run: isort --check-only .
36-
- name: teensytoany_programmer
37-
run: teensytoany_programmer --help
36+
- name: cli
37+
run: |
38+
teensytoany_programmer --help
39+
teensytoany_i2c_scan --help
3840
- name: Test with tox
3941
run: tox

HISTORY.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# History
22

3+
## 0.10.1 (2025-05-27)
4+
5+
* Attempt to fix i2c command line utility by correctly initializing the I2C bus.
6+
37
## 0.10.0 (2025-05-26)
48

59
* Provide an i2c scan capabilities through the python api as well as a command

teensytoany/i2c_scan.py

Lines changed: 56 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,30 +5,69 @@
55

66

77
@click.command(epilog=f"Version {teensytoany.__version__}")
8-
@click.option('--serial-number', '-s', type=str, default=None,
9-
help='Serial number of the Teensy device.')
10-
@click.option('--interface', '-i', type=int, default=0,
11-
help='I2C interface to use (0 for I2C, 1 for I2C1).')
12-
@click.option('--seven-bit-mode', '-7', is_flag=True, default=False,
13-
help='Report addresses in 7-bit mode instead of 8-bit mode.')
14-
@click.option('--verbose', is_flag=True, default=False,
15-
help='Report in verbose mode, print out all pinged addresses.')
8+
@click.option(
9+
'--serial-number', '-s',
10+
type=str,
11+
default=None,
12+
show_default=False,
13+
help='Serial number of the Teensy device.'
14+
)
15+
@click.option(
16+
'--interface',
17+
'-i',
18+
type=int,
19+
default=0,
20+
show_default=True,
21+
help='I2C interface to use (0 for I2C, 1 for I2C1).'
22+
)
23+
@click.option(
24+
'--seven-bit-mode',
25+
'-7',
26+
is_flag=True,
27+
default=False,
28+
help=(
29+
'Report addresses in 7-bit mode instead of 8-bit mode. '
30+
'By default, addresses are reported in 8-bit mode.'
31+
),
32+
)
33+
@click.option(
34+
'--baud-rate',
35+
type=int,
36+
default=100_100,
37+
show_default=True,
38+
help='Baud rate for the I2C bus.',
39+
)
40+
@click.option(
41+
'--verbose',
42+
is_flag=True,
43+
default=False,
44+
help='Report in verbose mode, print out all pinged addresses.',
45+
)
1646
@click.version_option(teensytoany.__version__)
1747
def main(
1848
serial_number=None,
1949
interface=0,
2050
seven_bit_mode=False,
51+
baud_rate=100_100,
2152
verbose=False,
2253
):
2354
i2c_scan(
2455
serial_number=serial_number,
2556
interface=interface,
57+
baud_rate=baud_rate,
2658
seven_bit_mode=seven_bit_mode,
2759
verbose=verbose,
2860
)
2961

3062

31-
def _scan_and_print(teensy, interface, seven_bit_mode, verbose):
63+
def _scan_and_print(teensy, interface, baud_rate, seven_bit_mode, verbose):
64+
if interface == 0:
65+
teensy.i2c_init(baud_rate=baud_rate)
66+
elif interface == 1:
67+
teensy.i2c_1_init(baud_rate=baud_rate)
68+
else:
69+
raise ValueError(f"Unknown interface {interface}. Must be 0 or 1")
70+
3271
for address_7bit in range(1, 128):
3372
address = address_7bit << 1
3473
try:
@@ -49,12 +88,19 @@ def _scan_and_print(teensy, interface, seven_bit_mode, verbose):
4988
# pass
5089

5190

52-
def i2c_scan(serial_number=None, interface=0, seven_bit_mode=False, verbose=False):
91+
def i2c_scan(
92+
serial_number=None,
93+
interface=0,
94+
baud_rate=100_100,
95+
seven_bit_mode=False,
96+
verbose=False,
97+
):
5398
teensy = TeensyToAny(serial_number=serial_number)
5499
try:
55100
_scan_and_print(
56101
teensy,
57102
interface=interface,
103+
baud_rate=baud_rate,
58104
seven_bit_mode=seven_bit_mode,
59105
verbose=verbose,
60106
)

0 commit comments

Comments
 (0)