SHOW:
|
|
- or go back to the newest paste.
1 | # from #beagle on Freenode | |
2 | ||
3 | # use | |
4 | ||
5 | # from bone_pinmux import set_pinmux_state | |
6 | # https://pastebin.com/MKtWJ8G8 | |
7 | # set_pinmux_state( 'P8_37', 'uart' ) | |
8 | # set_pinmux_state( 'P8_38', 'uart' ) | |
9 | ||
10 | from glob import glob | |
11 | from pathlib import Path | |
12 | import errno | |
13 | ||
14 | def pinmux_path( name ): | |
15 | paths = glob( '/sys/bus/platform/drivers/bone-pinmux-helper/*%s*/state' % name ) | |
16 | if len(paths) == 0: | |
17 | raise KeyError( 'Pinmux node not found: ' + name ) | |
18 | if len(paths) > 1: | |
19 | raise KeyError( 'Pinmux node ambiguous: ' + name ) | |
20 | return Path( paths[0] ) | |
21 | ||
22 | def get_pinmux_state( name ): | |
23 | return pinmux_path( name ).read_text().rstrip() | |
24 | ||
25 | def set_pinmux_state( name, state ): | |
26 | try: | |
27 | pinmux_path( name ).write_text( state ) | |
28 | except OSError as err: | |
29 | if err.errno == errno.ENODEV: | |
30 | raise ValueError( 'Invalid state for ' + name + ': ' + state ) from None | |
31 | else: | |
32 | raise |