mirror of
https://github.com/OpenVoiceOS/OpenVoiceOS
synced 2025-02-11 01:10:46 +01:00
[RPI] Enable rpi-eeprom auto update and fixes for the sound system
This commit is contained in:
parent
1df2222ab7
commit
cf6c4c7020
@ -1,3 +0,0 @@
|
||||
[global]
|
||||
#only-binary=:all:
|
||||
extra-index-url=https://www.piwheels.org/simple
|
@ -1,717 +0,0 @@
|
||||
state.Headphones {
|
||||
control.1 {
|
||||
iface MIXER
|
||||
name 'Headphone Playback Volume'
|
||||
value 400
|
||||
comment {
|
||||
access 'read write'
|
||||
type INTEGER
|
||||
count 1
|
||||
range '-10239 - 400'
|
||||
dbmin -9999999
|
||||
dbmax 400
|
||||
dbvalue.0 400
|
||||
}
|
||||
}
|
||||
control.2 {
|
||||
iface MIXER
|
||||
name 'Headphone Playback Switch'
|
||||
value true
|
||||
comment {
|
||||
access 'read write'
|
||||
type BOOLEAN
|
||||
count 1
|
||||
}
|
||||
}
|
||||
}
|
||||
state.wm8960soundcard {
|
||||
control.1 {
|
||||
iface MIXER
|
||||
name 'Capture Volume'
|
||||
value.0 63
|
||||
value.1 63
|
||||
comment {
|
||||
access 'read write'
|
||||
type INTEGER
|
||||
count 2
|
||||
range '0 - 63'
|
||||
dbmin -1725
|
||||
dbmax 3000
|
||||
dbvalue.0 3000
|
||||
dbvalue.1 3000
|
||||
}
|
||||
}
|
||||
control.2 {
|
||||
iface MIXER
|
||||
name 'Capture Volume ZC Switch'
|
||||
value.0 0
|
||||
value.1 0
|
||||
comment {
|
||||
access 'read write'
|
||||
type INTEGER
|
||||
count 2
|
||||
range '0 - 1'
|
||||
}
|
||||
}
|
||||
control.3 {
|
||||
iface MIXER
|
||||
name 'Capture Switch'
|
||||
value.0 true
|
||||
value.1 true
|
||||
comment {
|
||||
access 'read write'
|
||||
type BOOLEAN
|
||||
count 2
|
||||
}
|
||||
}
|
||||
control.4 {
|
||||
iface MIXER
|
||||
name 'Left Input Boost Mixer LINPUT3 Volume'
|
||||
value 1
|
||||
comment {
|
||||
access 'read write'
|
||||
type INTEGER
|
||||
count 1
|
||||
range '0 - 7'
|
||||
dbmin -9999999
|
||||
dbmax 600
|
||||
dbvalue.0 -1200
|
||||
}
|
||||
}
|
||||
control.5 {
|
||||
iface MIXER
|
||||
name 'Left Input Boost Mixer LINPUT2 Volume'
|
||||
value 1
|
||||
comment {
|
||||
access 'read write'
|
||||
type INTEGER
|
||||
count 1
|
||||
range '0 - 7'
|
||||
dbmin -9999999
|
||||
dbmax 600
|
||||
dbvalue.0 -1200
|
||||
}
|
||||
}
|
||||
control.6 {
|
||||
iface MIXER
|
||||
name 'Right Input Boost Mixer RINPUT3 Volume'
|
||||
value 1
|
||||
comment {
|
||||
access 'read write'
|
||||
type INTEGER
|
||||
count 1
|
||||
range '0 - 7'
|
||||
dbmin -9999999
|
||||
dbmax 600
|
||||
dbvalue.0 -1200
|
||||
}
|
||||
}
|
||||
control.7 {
|
||||
iface MIXER
|
||||
name 'Right Input Boost Mixer RINPUT2 Volume'
|
||||
value 1
|
||||
comment {
|
||||
access 'read write'
|
||||
type INTEGER
|
||||
count 1
|
||||
range '0 - 7'
|
||||
dbmin -9999999
|
||||
dbmax 600
|
||||
dbvalue.0 -1200
|
||||
}
|
||||
}
|
||||
control.8 {
|
||||
iface MIXER
|
||||
name 'Right Input Boost Mixer RINPUT1 Volume'
|
||||
value 1
|
||||
comment {
|
||||
access 'read write'
|
||||
type INTEGER
|
||||
count 1
|
||||
range '0 - 3'
|
||||
dbmin 0
|
||||
dbmax 2900
|
||||
dbvalue.0 1300
|
||||
}
|
||||
}
|
||||
control.9 {
|
||||
iface MIXER
|
||||
name 'Left Input Boost Mixer LINPUT1 Volume'
|
||||
value 1
|
||||
comment {
|
||||
access 'read write'
|
||||
type INTEGER
|
||||
count 1
|
||||
range '0 - 3'
|
||||
dbmin 0
|
||||
dbmax 2900
|
||||
dbvalue.0 1300
|
||||
}
|
||||
}
|
||||
control.10 {
|
||||
iface MIXER
|
||||
name 'Playback Volume'
|
||||
value.0 255
|
||||
value.1 255
|
||||
comment {
|
||||
access 'read write'
|
||||
type INTEGER
|
||||
count 2
|
||||
range '0 - 255'
|
||||
dbmin -9999999
|
||||
dbmax 0
|
||||
dbvalue.0 0
|
||||
dbvalue.1 0
|
||||
}
|
||||
}
|
||||
control.11 {
|
||||
iface MIXER
|
||||
name 'Headphone Playback Volume'
|
||||
value.0 127
|
||||
value.1 127
|
||||
comment {
|
||||
access 'read write'
|
||||
type INTEGER
|
||||
count 2
|
||||
range '0 - 127'
|
||||
dbmin -9999999
|
||||
dbmax 600
|
||||
dbvalue.0 600
|
||||
dbvalue.1 600
|
||||
}
|
||||
}
|
||||
control.12 {
|
||||
iface MIXER
|
||||
name 'Headphone Playback ZC Switch'
|
||||
value.0 false
|
||||
value.1 false
|
||||
comment {
|
||||
access 'read write'
|
||||
type BOOLEAN
|
||||
count 2
|
||||
}
|
||||
}
|
||||
control.13 {
|
||||
iface MIXER
|
||||
name 'Speaker Playback Volume'
|
||||
value.0 127
|
||||
value.1 127
|
||||
comment {
|
||||
access 'read write'
|
||||
type INTEGER
|
||||
count 2
|
||||
range '0 - 127'
|
||||
dbmin -9999999
|
||||
dbmax 600
|
||||
dbvalue.0 600
|
||||
dbvalue.1 600
|
||||
}
|
||||
}
|
||||
control.14 {
|
||||
iface MIXER
|
||||
name 'Speaker Playback ZC Switch'
|
||||
value.0 false
|
||||
value.1 false
|
||||
comment {
|
||||
access 'read write'
|
||||
type BOOLEAN
|
||||
count 2
|
||||
}
|
||||
}
|
||||
control.15 {
|
||||
iface MIXER
|
||||
name 'Speaker DC Volume'
|
||||
value 5
|
||||
comment {
|
||||
access 'read write'
|
||||
type INTEGER
|
||||
count 1
|
||||
range '0 - 5'
|
||||
}
|
||||
}
|
||||
control.16 {
|
||||
iface MIXER
|
||||
name 'Speaker AC Volume'
|
||||
value 5
|
||||
comment {
|
||||
access 'read write'
|
||||
type INTEGER
|
||||
count 1
|
||||
range '0 - 5'
|
||||
}
|
||||
}
|
||||
control.17 {
|
||||
iface MIXER
|
||||
name 'PCM Playback -6dB Switch'
|
||||
value false
|
||||
comment {
|
||||
access 'read write'
|
||||
type BOOLEAN
|
||||
count 1
|
||||
}
|
||||
}
|
||||
control.18 {
|
||||
iface MIXER
|
||||
name 'ADC Polarity'
|
||||
value 'No Inversion'
|
||||
comment {
|
||||
access 'read write'
|
||||
type ENUMERATED
|
||||
count 1
|
||||
item.0 'No Inversion'
|
||||
item.1 'Left Inverted'
|
||||
item.2 'Right Inverted'
|
||||
item.3 'Stereo Inversion'
|
||||
}
|
||||
}
|
||||
control.19 {
|
||||
iface MIXER
|
||||
name 'ADC High Pass Filter Switch'
|
||||
value false
|
||||
comment {
|
||||
access 'read write'
|
||||
type BOOLEAN
|
||||
count 1
|
||||
}
|
||||
}
|
||||
control.20 {
|
||||
iface MIXER
|
||||
name 'DAC Polarity'
|
||||
value 'No Inversion'
|
||||
comment {
|
||||
access 'read write'
|
||||
type ENUMERATED
|
||||
count 1
|
||||
item.0 'No Inversion'
|
||||
item.1 'Left Inverted'
|
||||
item.2 'Right Inverted'
|
||||
item.3 'Stereo Inversion'
|
||||
}
|
||||
}
|
||||
control.21 {
|
||||
iface MIXER
|
||||
name 'DAC Deemphasis Switch'
|
||||
value false
|
||||
comment {
|
||||
access 'read write'
|
||||
type BOOLEAN
|
||||
count 1
|
||||
}
|
||||
}
|
||||
control.22 {
|
||||
iface MIXER
|
||||
name '3D Filter Upper Cut-Off'
|
||||
value High
|
||||
comment {
|
||||
access 'read write'
|
||||
type ENUMERATED
|
||||
count 1
|
||||
item.0 High
|
||||
item.1 Low
|
||||
}
|
||||
}
|
||||
control.23 {
|
||||
iface MIXER
|
||||
name '3D Filter Lower Cut-Off'
|
||||
value Low
|
||||
comment {
|
||||
access 'read write'
|
||||
type ENUMERATED
|
||||
count 1
|
||||
item.0 Low
|
||||
item.1 High
|
||||
}
|
||||
}
|
||||
control.24 {
|
||||
iface MIXER
|
||||
name '3D Volume'
|
||||
value 0
|
||||
comment {
|
||||
access 'read write'
|
||||
type INTEGER
|
||||
count 1
|
||||
range '0 - 15'
|
||||
}
|
||||
}
|
||||
control.25 {
|
||||
iface MIXER
|
||||
name '3D Switch'
|
||||
value false
|
||||
comment {
|
||||
access 'read write'
|
||||
type BOOLEAN
|
||||
count 1
|
||||
}
|
||||
}
|
||||
control.26 {
|
||||
iface MIXER
|
||||
name 'ALC Function'
|
||||
value Off
|
||||
comment {
|
||||
access 'read write'
|
||||
type ENUMERATED
|
||||
count 1
|
||||
item.0 Off
|
||||
item.1 Right
|
||||
item.2 Left
|
||||
item.3 Stereo
|
||||
}
|
||||
}
|
||||
control.27 {
|
||||
iface MIXER
|
||||
name 'ALC Max Gain'
|
||||
value 7
|
||||
comment {
|
||||
access 'read write'
|
||||
type INTEGER
|
||||
count 1
|
||||
range '0 - 7'
|
||||
}
|
||||
}
|
||||
control.28 {
|
||||
iface MIXER
|
||||
name 'ALC Target'
|
||||
value 4
|
||||
comment {
|
||||
access 'read write'
|
||||
type INTEGER
|
||||
count 1
|
||||
range '0 - 15'
|
||||
}
|
||||
}
|
||||
control.29 {
|
||||
iface MIXER
|
||||
name 'ALC Min Gain'
|
||||
value 0
|
||||
comment {
|
||||
access 'read write'
|
||||
type INTEGER
|
||||
count 1
|
||||
range '0 - 7'
|
||||
}
|
||||
}
|
||||
control.30 {
|
||||
iface MIXER
|
||||
name 'ALC Hold Time'
|
||||
value 0
|
||||
comment {
|
||||
access 'read write'
|
||||
type INTEGER
|
||||
count 1
|
||||
range '0 - 15'
|
||||
}
|
||||
}
|
||||
control.31 {
|
||||
iface MIXER
|
||||
name 'ALC Mode'
|
||||
value ALC
|
||||
comment {
|
||||
access 'read write'
|
||||
type ENUMERATED
|
||||
count 1
|
||||
item.0 ALC
|
||||
item.1 Limiter
|
||||
}
|
||||
}
|
||||
control.32 {
|
||||
iface MIXER
|
||||
name 'ALC Decay'
|
||||
value 3
|
||||
comment {
|
||||
access 'read write'
|
||||
type INTEGER
|
||||
count 1
|
||||
range '0 - 15'
|
||||
}
|
||||
}
|
||||
control.33 {
|
||||
iface MIXER
|
||||
name 'ALC Attack'
|
||||
value 2
|
||||
comment {
|
||||
access 'read write'
|
||||
type INTEGER
|
||||
count 1
|
||||
range '0 - 15'
|
||||
}
|
||||
}
|
||||
control.34 {
|
||||
iface MIXER
|
||||
name 'Noise Gate Threshold'
|
||||
value 9
|
||||
comment {
|
||||
access 'read write'
|
||||
type INTEGER
|
||||
count 1
|
||||
range '0 - 31'
|
||||
}
|
||||
}
|
||||
control.35 {
|
||||
iface MIXER
|
||||
name 'Noise Gate Switch'
|
||||
value false
|
||||
comment {
|
||||
access 'read write'
|
||||
type BOOLEAN
|
||||
count 1
|
||||
}
|
||||
}
|
||||
control.36 {
|
||||
iface MIXER
|
||||
name 'ADC PCM Capture Volume'
|
||||
value.0 195
|
||||
value.1 195
|
||||
comment {
|
||||
access 'read write'
|
||||
type INTEGER
|
||||
count 2
|
||||
range '0 - 255'
|
||||
dbmin -9999999
|
||||
dbmax 3000
|
||||
dbvalue.0 0
|
||||
dbvalue.1 0
|
||||
}
|
||||
}
|
||||
control.37 {
|
||||
iface MIXER
|
||||
name 'Left Output Mixer Boost Bypass Volume'
|
||||
value 2
|
||||
comment {
|
||||
access 'read write'
|
||||
type INTEGER
|
||||
count 1
|
||||
range '0 - 7'
|
||||
dbmin -2100
|
||||
dbmax 0
|
||||
dbvalue.0 -1500
|
||||
}
|
||||
}
|
||||
control.38 {
|
||||
iface MIXER
|
||||
name 'Left Output Mixer LINPUT3 Volume'
|
||||
value 2
|
||||
comment {
|
||||
access 'read write'
|
||||
type INTEGER
|
||||
count 1
|
||||
range '0 - 7'
|
||||
dbmin -2100
|
||||
dbmax 0
|
||||
dbvalue.0 -1500
|
||||
}
|
||||
}
|
||||
control.39 {
|
||||
iface MIXER
|
||||
name 'Right Output Mixer Boost Bypass Volume'
|
||||
value 2
|
||||
comment {
|
||||
access 'read write'
|
||||
type INTEGER
|
||||
count 1
|
||||
range '0 - 7'
|
||||
dbmin -2100
|
||||
dbmax 0
|
||||
dbvalue.0 -1500
|
||||
}
|
||||
}
|
||||
control.40 {
|
||||
iface MIXER
|
||||
name 'Right Output Mixer RINPUT3 Volume'
|
||||
value 2
|
||||
comment {
|
||||
access 'read write'
|
||||
type INTEGER
|
||||
count 1
|
||||
range '0 - 7'
|
||||
dbmin -2100
|
||||
dbmax 0
|
||||
dbvalue.0 -1500
|
||||
}
|
||||
}
|
||||
control.41 {
|
||||
iface MIXER
|
||||
name 'ADC Data Output Select'
|
||||
value 'Left Data = Left ADC; Right Data = Right ADC'
|
||||
comment {
|
||||
access 'read write'
|
||||
type ENUMERATED
|
||||
count 1
|
||||
item.0 'Left Data = Left ADC; Right Data = Right ADC'
|
||||
item.1 'Left Data = Left ADC; Right Data = Left ADC'
|
||||
item.2 'Left Data = Right ADC; Right Data = Right ADC'
|
||||
item.3 'Left Data = Right ADC; Right Data = Left ADC'
|
||||
}
|
||||
}
|
||||
control.42 {
|
||||
iface MIXER
|
||||
name 'DAC Mono Mix'
|
||||
value Stereo
|
||||
comment {
|
||||
access 'read write'
|
||||
type ENUMERATED
|
||||
count 1
|
||||
item.0 Stereo
|
||||
item.1 Mono
|
||||
}
|
||||
}
|
||||
control.43 {
|
||||
iface MIXER
|
||||
name 'Left Boost Mixer LINPUT2 Switch'
|
||||
value false
|
||||
comment {
|
||||
access 'read write'
|
||||
type BOOLEAN
|
||||
count 1
|
||||
}
|
||||
}
|
||||
control.44 {
|
||||
iface MIXER
|
||||
name 'Left Boost Mixer LINPUT3 Switch'
|
||||
value false
|
||||
comment {
|
||||
access 'read write'
|
||||
type BOOLEAN
|
||||
count 1
|
||||
}
|
||||
}
|
||||
control.45 {
|
||||
iface MIXER
|
||||
name 'Left Boost Mixer LINPUT1 Switch'
|
||||
value true
|
||||
comment {
|
||||
access 'read write'
|
||||
type BOOLEAN
|
||||
count 1
|
||||
}
|
||||
}
|
||||
control.46 {
|
||||
iface MIXER
|
||||
name 'Right Boost Mixer RINPUT2 Switch'
|
||||
value false
|
||||
comment {
|
||||
access 'read write'
|
||||
type BOOLEAN
|
||||
count 1
|
||||
}
|
||||
}
|
||||
control.47 {
|
||||
iface MIXER
|
||||
name 'Right Boost Mixer RINPUT3 Switch'
|
||||
value false
|
||||
comment {
|
||||
access 'read write'
|
||||
type BOOLEAN
|
||||
count 1
|
||||
}
|
||||
}
|
||||
control.48 {
|
||||
iface MIXER
|
||||
name 'Right Boost Mixer RINPUT1 Switch'
|
||||
value true
|
||||
comment {
|
||||
access 'read write'
|
||||
type BOOLEAN
|
||||
count 1
|
||||
}
|
||||
}
|
||||
control.49 {
|
||||
iface MIXER
|
||||
name 'Left Input Mixer Boost Switch'
|
||||
value false
|
||||
comment {
|
||||
access 'read write'
|
||||
type BOOLEAN
|
||||
count 1
|
||||
}
|
||||
}
|
||||
control.50 {
|
||||
iface MIXER
|
||||
name 'Right Input Mixer Boost Switch'
|
||||
value false
|
||||
comment {
|
||||
access 'read write'
|
||||
type BOOLEAN
|
||||
count 1
|
||||
}
|
||||
}
|
||||
control.51 {
|
||||
iface MIXER
|
||||
name 'Left Output Mixer PCM Playback Switch'
|
||||
value false
|
||||
comment {
|
||||
access 'read write'
|
||||
type BOOLEAN
|
||||
count 1
|
||||
}
|
||||
}
|
||||
control.52 {
|
||||
iface MIXER
|
||||
name 'Left Output Mixer LINPUT3 Switch'
|
||||
value false
|
||||
comment {
|
||||
access 'read write'
|
||||
type BOOLEAN
|
||||
count 1
|
||||
}
|
||||
}
|
||||
control.53 {
|
||||
iface MIXER
|
||||
name 'Left Output Mixer Boost Bypass Switch'
|
||||
value false
|
||||
comment {
|
||||
access 'read write'
|
||||
type BOOLEAN
|
||||
count 1
|
||||
}
|
||||
}
|
||||
control.54 {
|
||||
iface MIXER
|
||||
name 'Right Output Mixer PCM Playback Switch'
|
||||
value false
|
||||
comment {
|
||||
access 'read write'
|
||||
type BOOLEAN
|
||||
count 1
|
||||
}
|
||||
}
|
||||
control.55 {
|
||||
iface MIXER
|
||||
name 'Right Output Mixer RINPUT3 Switch'
|
||||
value false
|
||||
comment {
|
||||
access 'read write'
|
||||
type BOOLEAN
|
||||
count 1
|
||||
}
|
||||
}
|
||||
control.56 {
|
||||
iface MIXER
|
||||
name 'Right Output Mixer Boost Bypass Switch'
|
||||
value false
|
||||
comment {
|
||||
access 'read write'
|
||||
type BOOLEAN
|
||||
count 1
|
||||
}
|
||||
}
|
||||
control.57 {
|
||||
iface MIXER
|
||||
name 'Mono Output Mixer Left Switch'
|
||||
value false
|
||||
comment {
|
||||
access 'read write'
|
||||
type BOOLEAN
|
||||
count 1
|
||||
}
|
||||
}
|
||||
control.58 {
|
||||
iface MIXER
|
||||
name 'Mono Output Mixer Right Switch'
|
||||
value false
|
||||
comment {
|
||||
access 'read write'
|
||||
type BOOLEAN
|
||||
count 1
|
||||
}
|
||||
}
|
||||
}
|
@ -1,111 +0,0 @@
|
||||
# Versioning
|
||||
|
||||
The H3 core library adheres to [Semantic Versioning](http://semver.org/).
|
||||
H3-Py has a `major.minor.patch` version scheme. The major and minor version
|
||||
numbers of H3-Py are the major and minor version of the bound core library,
|
||||
respectively. The patch version is incremented independently of the core
|
||||
library.
|
||||
|
||||
We use [this changelog structure](http://keepachangelog.com/).
|
||||
|
||||
Because H3-Py is versioned in lockstep with the H3 core library, please
|
||||
avoid adding features or APIs which do not map onto the
|
||||
[H3 core API](https://uber.github.io/h3/#/documentation/api-reference/).
|
||||
|
||||
## Unreleased
|
||||
|
||||
- None
|
||||
|
||||
## [3.7.6] - 2022-11-23
|
||||
|
||||
- Build Python 3.11 wheels (#299)
|
||||
|
||||
## [3.7.5] - 2022-11-23
|
||||
|
||||
- BAD RELEASE
|
||||
|
||||
## [3.7.4] - 2022-04-14
|
||||
|
||||
- Website and API documentation; along with docstring cleanup.
|
||||
- Add support for linters and IDE tooling (#213)
|
||||
- Remove Py 3.5 wheel for Windows (#214)
|
||||
- Py 3.10 wheels and on more architectures (#220, #221, #223, #225)
|
||||
- Greatly reduce sdist size (#227, #229)
|
||||
|
||||
## [3.7.3] - 2021-06-12
|
||||
|
||||
- Wheels for Linux Aarch64 (#189)
|
||||
|
||||
## [3.7.2] - 2021-03-01
|
||||
|
||||
- Add vectorized h3_to_parent and h3_get_resolution (#166)
|
||||
|
||||
## [3.7.1] - 2020-12-18
|
||||
|
||||
- fix for #169: `h3_distance` error reporting (#175)
|
||||
- build Python 3.9 wheel for Mac (#175)
|
||||
- bump h3lib version to v3.7.1 (#175)
|
||||
|
||||
## [3.7.0] - 2020-10-02
|
||||
|
||||
- Add functions (#171)
|
||||
+ `cell_area`
|
||||
+ `exact_edge_length`
|
||||
+ `point_dist`
|
||||
|
||||
## [3.6.4] - 2020-07-20
|
||||
|
||||
- Add `requirements.in` for `pip-compile` usage (#157)
|
||||
- Update `h3-c` to v3.6.4 (#157)
|
||||
- Add functions:
|
||||
+ `experimental_local_ij_to_h3` (#155)
|
||||
+ `experimental_h3_to_local_ij` (#155)
|
||||
+ `h3.unstable.vect.cell_haversine` (#147)
|
||||
+ `h3.unstable.vect.geo_to_h3` (#147)
|
||||
+ Prototype v4 names under `h3.unstable.v4` (#146)
|
||||
|
||||
## [3.6.3] - 2020-06-04
|
||||
|
||||
- Add functions:
|
||||
+ `get_res0_indexes`
|
||||
+ `h3_to_center_child`
|
||||
+ `h3_get_faces`
|
||||
|
||||
## [3.6.2] - 2020-06-02
|
||||
|
||||
- Improve error reporting on `hex2int` (https://github.com/uber/h3-py/pull/127)
|
||||
- Build Linux wheels for Python 2.7
|
||||
|
||||
## [3.6.1] - 2020-05-29
|
||||
|
||||
- Switch to Cython wrapper implementation
|
||||
- Pre-built wheels on PyPI for Linux/Mac/Windows
|
||||
- Provide multiple APIs:
|
||||
+ `h3.api.basic_str`
|
||||
+ `h3.api.basic_int`
|
||||
+ `h3.api.numpy_int`
|
||||
+ `h3.api.memview_int`
|
||||
|
||||
## [3.4.3] - 2019-04-18
|
||||
|
||||
- Removed null values in k_ring_distances.
|
||||
- Support on Windows Platform
|
||||
- Fixed some install problems
|
||||
|
||||
## [3.4.2] - 2019-03-13
|
||||
|
||||
- Added h3_line support.
|
||||
|
||||
## [3.1.0] - 2018-09-06
|
||||
|
||||
### Added
|
||||
- Added h3_distance function.
|
||||
|
||||
### Changed
|
||||
- Updated the core library to v3.1.0.
|
||||
|
||||
## [3.0.0] - 2018-07-24
|
||||
|
||||
### Added
|
||||
- First public release.
|
||||
|
@ -1,33 +0,0 @@
|
||||
cmake_minimum_required(VERSION 3.7.2)
|
||||
|
||||
project(h3)
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
# Always make a release build
|
||||
set(CMAKE_BUILD_TYPE Release)
|
||||
|
||||
# Avoid building tooling we won't need for release
|
||||
# See all options with `cmake -LA` in an `h3/build` directory,
|
||||
# or at https://h3geo.org/docs/next/core-library/compilation-options/
|
||||
macro(turn_off option_name)
|
||||
set(${option_name} OFF CACHE BOOL "" FORCE)
|
||||
endmacro()
|
||||
turn_off(BUILD_ALLOC_TESTS)
|
||||
turn_off(BUILD_BENCHMARKS)
|
||||
turn_off(BUILD_FILTERS)
|
||||
turn_off(BUILD_FUZZERS)
|
||||
turn_off(BUILD_GENERATORS)
|
||||
turn_off(BUILD_TESTING)
|
||||
turn_off(ENABLE_COVERAGE)
|
||||
turn_off(ENABLE_DOCS)
|
||||
turn_off(ENABLE_FORMAT)
|
||||
turn_off(ENABLE_LIBFUZZER)
|
||||
turn_off(ENABLE_LINTING)
|
||||
|
||||
# Build the core library as static
|
||||
set(BUILD_SHARED_LIBS OFF)
|
||||
add_subdirectory(src/h3lib)
|
||||
|
||||
# Build the rest (other than the core library dependency) as shared
|
||||
set(BUILD_SHARED_LIBS ON)
|
||||
add_subdirectory(src/h3)
|
@ -1,202 +0,0 @@
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
@ -1,8 +0,0 @@
|
||||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from neon_utils.configuration_utils import create_config_from_setup_params
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(create_config_from_setup_params())
|
@ -1,8 +0,0 @@
|
||||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from nltk.cli import cli
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(cli())
|
@ -1,8 +0,0 @@
|
||||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from sj201_interface.cli import sj201_cli
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(sj201_cli())
|
@ -1,8 +0,0 @@
|
||||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from timezonefinder.command_line import main
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(main())
|
@ -1,592 +0,0 @@
|
||||
/*
|
||||
* Copyright 2016-2020 Uber Technologies, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
/** @file h3api.h
|
||||
* @brief Primary H3 core library entry points.
|
||||
*
|
||||
* This file defines the public API of the H3 library. Incompatible changes to
|
||||
* these functions require the library's major version be increased.
|
||||
*/
|
||||
|
||||
#ifndef H3API_H
|
||||
#define H3API_H
|
||||
|
||||
/*
|
||||
* Preprocessor code to support renaming (prefixing) the public API.
|
||||
* All public functions should be wrapped in H3_EXPORT so they can be
|
||||
* renamed.
|
||||
*/
|
||||
#ifdef H3_PREFIX
|
||||
#define XTJOIN(a, b) a##b
|
||||
#define TJOIN(a, b) XTJOIN(a, b)
|
||||
|
||||
/* export joins the user provided prefix with our exported function name */
|
||||
#define H3_EXPORT(name) TJOIN(H3_PREFIX, name)
|
||||
#else
|
||||
#define H3_EXPORT(name) name
|
||||
#endif
|
||||
|
||||
/* For uint64_t */
|
||||
#include <stdint.h>
|
||||
/* For size_t */
|
||||
#include <stdlib.h>
|
||||
|
||||
/*
|
||||
* H3 is compiled as C, not C++ code. `extern "C"` is needed for C++ code
|
||||
* to be able to use the library.
|
||||
*/
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/** @brief the H3Index fits within a 64-bit unsigned integer */
|
||||
typedef uint64_t H3Index;
|
||||
|
||||
/* library version numbers generated from VERSION file */
|
||||
// clang-format off
|
||||
#define H3_VERSION_MAJOR 3
|
||||
#define H3_VERSION_MINOR 7
|
||||
#define H3_VERSION_PATCH 1
|
||||
// clang-format on
|
||||
|
||||
/** Maximum number of cell boundary vertices; worst case is pentagon:
|
||||
* 5 original verts + 5 edge crossings
|
||||
*/
|
||||
#define MAX_CELL_BNDRY_VERTS 10
|
||||
|
||||
/** @struct GeoCoord
|
||||
@brief latitude/longitude in radians
|
||||
*/
|
||||
typedef struct {
|
||||
double lat; ///< latitude in radians
|
||||
double lon; ///< longitude in radians
|
||||
} GeoCoord;
|
||||
|
||||
/** @struct GeoBoundary
|
||||
@brief cell boundary in latitude/longitude
|
||||
*/
|
||||
typedef struct {
|
||||
int numVerts; ///< number of vertices
|
||||
GeoCoord verts[MAX_CELL_BNDRY_VERTS]; ///< vertices in ccw order
|
||||
} GeoBoundary;
|
||||
|
||||
/** @struct Geofence
|
||||
* @brief similar to GeoBoundary, but requires more alloc work
|
||||
*/
|
||||
typedef struct {
|
||||
int numVerts;
|
||||
GeoCoord *verts;
|
||||
} Geofence;
|
||||
|
||||
/** @struct GeoPolygon
|
||||
* @brief Simplified core of GeoJSON Polygon coordinates definition
|
||||
*/
|
||||
typedef struct {
|
||||
Geofence geofence; ///< exterior boundary of the polygon
|
||||
int numHoles; ///< number of elements in the array pointed to by holes
|
||||
Geofence *holes; ///< interior boundaries (holes) in the polygon
|
||||
} GeoPolygon;
|
||||
|
||||
/** @struct GeoMultiPolygon
|
||||
* @brief Simplified core of GeoJSON MultiPolygon coordinates definition
|
||||
*/
|
||||
typedef struct {
|
||||
int numPolygons;
|
||||
GeoPolygon *polygons;
|
||||
} GeoMultiPolygon;
|
||||
|
||||
/** @struct LinkedGeoCoord
|
||||
* @brief A coordinate node in a linked geo structure, part of a linked list
|
||||
*/
|
||||
typedef struct LinkedGeoCoord LinkedGeoCoord;
|
||||
struct LinkedGeoCoord {
|
||||
GeoCoord vertex;
|
||||
LinkedGeoCoord *next;
|
||||
};
|
||||
|
||||
/** @struct LinkedGeoLoop
|
||||
* @brief A loop node in a linked geo structure, part of a linked list
|
||||
*/
|
||||
typedef struct LinkedGeoLoop LinkedGeoLoop;
|
||||
struct LinkedGeoLoop {
|
||||
LinkedGeoCoord *first;
|
||||
LinkedGeoCoord *last;
|
||||
LinkedGeoLoop *next;
|
||||
};
|
||||
|
||||
/** @struct LinkedGeoPolygon
|
||||
* @brief A polygon node in a linked geo structure, part of a linked list.
|
||||
*/
|
||||
typedef struct LinkedGeoPolygon LinkedGeoPolygon;
|
||||
struct LinkedGeoPolygon {
|
||||
LinkedGeoLoop *first;
|
||||
LinkedGeoLoop *last;
|
||||
LinkedGeoPolygon *next;
|
||||
};
|
||||
|
||||
/** @struct CoordIJ
|
||||
* @brief IJ hexagon coordinates
|
||||
*
|
||||
* Each axis is spaced 120 degrees apart.
|
||||
*/
|
||||
typedef struct {
|
||||
int i; ///< i component
|
||||
int j; ///< j component
|
||||
} CoordIJ;
|
||||
|
||||
/** @defgroup geoToH3 geoToH3
|
||||
* Functions for geoToH3
|
||||
* @{
|
||||
*/
|
||||
/** @brief find the H3 index of the resolution res cell containing the lat/lng
|
||||
*/
|
||||
H3Index H3_EXPORT(geoToH3)(const GeoCoord *g, int res);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup h3ToGeo h3ToGeo
|
||||
* Functions for h3ToGeo
|
||||
* @{
|
||||
*/
|
||||
/** @brief find the lat/lon center point g of the cell h3 */
|
||||
void H3_EXPORT(h3ToGeo)(H3Index h3, GeoCoord *g);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup h3ToGeoBoundary h3ToGeoBoundary
|
||||
* Functions for h3ToGeoBoundary
|
||||
* @{
|
||||
*/
|
||||
/** @brief give the cell boundary in lat/lon coordinates for the cell h3 */
|
||||
void H3_EXPORT(h3ToGeoBoundary)(H3Index h3, GeoBoundary *gp);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup kRing kRing
|
||||
* Functions for kRing
|
||||
* @{
|
||||
*/
|
||||
/** @brief maximum number of hexagons in k-ring */
|
||||
int H3_EXPORT(maxKringSize)(int k);
|
||||
|
||||
/** @brief hexagons neighbors in all directions, assuming no pentagons */
|
||||
int H3_EXPORT(hexRange)(H3Index origin, int k, H3Index *out);
|
||||
/** @} */
|
||||
|
||||
/** @brief hexagons neighbors in all directions, assuming no pentagons,
|
||||
* reporting distance from origin */
|
||||
int H3_EXPORT(hexRangeDistances)(H3Index origin, int k, H3Index *out,
|
||||
int *distances);
|
||||
|
||||
/** @brief collection of hex rings sorted by ring for all given hexagons */
|
||||
int H3_EXPORT(hexRanges)(H3Index *h3Set, int length, int k, H3Index *out);
|
||||
|
||||
/** @brief hexagon neighbors in all directions */
|
||||
void H3_EXPORT(kRing)(H3Index origin, int k, H3Index *out);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup kRingDistances kRingDistances
|
||||
* Functions for kRingDistances
|
||||
* @{
|
||||
*/
|
||||
/** @brief hexagon neighbors in all directions, reporting distance from origin
|
||||
*/
|
||||
void H3_EXPORT(kRingDistances)(H3Index origin, int k, H3Index *out,
|
||||
int *distances);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup hexRing hexRing
|
||||
* Functions for hexRing
|
||||
* @{
|
||||
*/
|
||||
/** @brief hollow hexagon ring at some origin */
|
||||
int H3_EXPORT(hexRing)(H3Index origin, int k, H3Index *out);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup polyfill polyfill
|
||||
* Functions for polyfill
|
||||
* @{
|
||||
*/
|
||||
/** @brief maximum number of hexagons in the geofence */
|
||||
int H3_EXPORT(maxPolyfillSize)(const GeoPolygon *geoPolygon, int res);
|
||||
|
||||
/** @brief hexagons within the given geofence */
|
||||
void H3_EXPORT(polyfill)(const GeoPolygon *geoPolygon, int res, H3Index *out);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup h3SetToMultiPolygon h3SetToMultiPolygon
|
||||
* Functions for h3SetToMultiPolygon (currently a binding-only concept)
|
||||
* @{
|
||||
*/
|
||||
/** @brief Create a LinkedGeoPolygon from a set of contiguous hexagons */
|
||||
void H3_EXPORT(h3SetToLinkedGeo)(const H3Index *h3Set, const int numHexes,
|
||||
LinkedGeoPolygon *out);
|
||||
|
||||
/** @brief Free all memory created for a LinkedGeoPolygon */
|
||||
void H3_EXPORT(destroyLinkedPolygon)(LinkedGeoPolygon *polygon);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup degsToRads degsToRads
|
||||
* Functions for degsToRads
|
||||
* @{
|
||||
*/
|
||||
/** @brief converts degrees to radians */
|
||||
double H3_EXPORT(degsToRads)(double degrees);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup radsToDegs radsToDegs
|
||||
* Functions for radsToDegs
|
||||
* @{
|
||||
*/
|
||||
/** @brief converts radians to degrees */
|
||||
double H3_EXPORT(radsToDegs)(double radians);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup pointDist pointDist
|
||||
* Functions for pointDist
|
||||
* @{
|
||||
*/
|
||||
/** @brief "great circle distance" between pairs of GeoCoord points in radians*/
|
||||
double H3_EXPORT(pointDistRads)(const GeoCoord *a, const GeoCoord *b);
|
||||
|
||||
/** @brief "great circle distance" between pairs of GeoCoord points in
|
||||
* kilometers*/
|
||||
double H3_EXPORT(pointDistKm)(const GeoCoord *a, const GeoCoord *b);
|
||||
|
||||
/** @brief "great circle distance" between pairs of GeoCoord points in meters*/
|
||||
double H3_EXPORT(pointDistM)(const GeoCoord *a, const GeoCoord *b);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup hexArea hexArea
|
||||
* Functions for hexArea
|
||||
* @{
|
||||
*/
|
||||
/** @brief average hexagon area in square kilometers (excludes pentagons) */
|
||||
double H3_EXPORT(hexAreaKm2)(int res);
|
||||
|
||||
/** @brief average hexagon area in square meters (excludes pentagons) */
|
||||
double H3_EXPORT(hexAreaM2)(int res);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup cellArea cellArea
|
||||
* Functions for cellArea
|
||||
* @{
|
||||
*/
|
||||
/** @brief exact area for a specific cell (hexagon or pentagon) in radians^2 */
|
||||
double H3_EXPORT(cellAreaRads2)(H3Index h);
|
||||
|
||||
/** @brief exact area for a specific cell (hexagon or pentagon) in kilometers^2
|
||||
*/
|
||||
double H3_EXPORT(cellAreaKm2)(H3Index h);
|
||||
|
||||
/** @brief exact area for a specific cell (hexagon or pentagon) in meters^2 */
|
||||
double H3_EXPORT(cellAreaM2)(H3Index h);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup edgeLength edgeLength
|
||||
* Functions for edgeLength
|
||||
* @{
|
||||
*/
|
||||
/** @brief average hexagon edge length in kilometers (excludes pentagons) */
|
||||
double H3_EXPORT(edgeLengthKm)(int res);
|
||||
|
||||
/** @brief average hexagon edge length in meters (excludes pentagons) */
|
||||
double H3_EXPORT(edgeLengthM)(int res);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup exactEdgeLength exactEdgeLength
|
||||
* Functions for exactEdgeLength
|
||||
* @{
|
||||
*/
|
||||
/** @brief exact length for a specific unidirectional edge in radians*/
|
||||
double H3_EXPORT(exactEdgeLengthRads)(H3Index edge);
|
||||
|
||||
/** @brief exact length for a specific unidirectional edge in kilometers*/
|
||||
double H3_EXPORT(exactEdgeLengthKm)(H3Index edge);
|
||||
|
||||
/** @brief exact length for a specific unidirectional edge in meters*/
|
||||
double H3_EXPORT(exactEdgeLengthM)(H3Index edge);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup numHexagons numHexagons
|
||||
* Functions for numHexagons
|
||||
* @{
|
||||
*/
|
||||
/** @brief number of cells (hexagons and pentagons) for a given resolution */
|
||||
int64_t H3_EXPORT(numHexagons)(int res);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup getRes0Indexes getRes0Indexes
|
||||
* Functions for getRes0Indexes
|
||||
* @{
|
||||
*/
|
||||
/** @brief returns the number of resolution 0 cells (hexagons and pentagons) */
|
||||
int H3_EXPORT(res0IndexCount)();
|
||||
|
||||
/** @brief provides all base cells in H3Index format*/
|
||||
void H3_EXPORT(getRes0Indexes)(H3Index *out);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup getPentagonIndexes getPentagonIndexes
|
||||
* Functions for getPentagonIndexes
|
||||
* @{
|
||||
*/
|
||||
/** @brief returns the number of pentagons per resolution */
|
||||
int H3_EXPORT(pentagonIndexCount)();
|
||||
|
||||
/** @brief generates all pentagons at the specified resolution */
|
||||
void H3_EXPORT(getPentagonIndexes)(int res, H3Index *out);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup h3GetResolution h3GetResolution
|
||||
* Functions for h3GetResolution
|
||||
* @{
|
||||
*/
|
||||
/** @brief returns the resolution of the provided H3 index
|
||||
* Works on both cells and unidirectional edges. */
|
||||
int H3_EXPORT(h3GetResolution)(H3Index h);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup h3GetBaseCell h3GetBaseCell
|
||||
* Functions for h3GetBaseCell
|
||||
* @{
|
||||
*/
|
||||
/** @brief returns the base cell "number" (0 to 121) of the provided H3 cell
|
||||
*
|
||||
* Note: Technically works on H3 edges, but will return base cell of the
|
||||
* origin cell. */
|
||||
int H3_EXPORT(h3GetBaseCell)(H3Index h);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup stringToH3 stringToH3
|
||||
* Functions for stringToH3
|
||||
* @{
|
||||
*/
|
||||
/** @brief converts the canonical string format to H3Index format */
|
||||
H3Index H3_EXPORT(stringToH3)(const char *str);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup h3ToString h3ToString
|
||||
* Functions for h3ToString
|
||||
* @{
|
||||
*/
|
||||
/** @brief converts an H3Index to a canonical string */
|
||||
void H3_EXPORT(h3ToString)(H3Index h, char *str, size_t sz);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup h3IsValid h3IsValid
|
||||
* Functions for h3IsValid
|
||||
* @{
|
||||
*/
|
||||
/** @brief confirms if an H3Index is a valid cell (hexagon or pentagon)
|
||||
* In particular, returns 0 (False) for H3 unidirectional edges or invalid data
|
||||
*/
|
||||
int H3_EXPORT(h3IsValid)(H3Index h);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup h3ToParent h3ToParent
|
||||
* Functions for h3ToParent
|
||||
* @{
|
||||
*/
|
||||
/** @brief returns the parent (or grandparent, etc) hexagon of the given hexagon
|
||||
*/
|
||||
H3Index H3_EXPORT(h3ToParent)(H3Index h, int parentRes);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup h3ToChildren h3ToChildren
|
||||
* Functions for h3ToChildren
|
||||
* @{
|
||||
*/
|
||||
/** @brief determines the maximum number of children (or grandchildren, etc)
|
||||
* that could be returned for the given hexagon */
|
||||
int H3_EXPORT(maxH3ToChildrenSize)(H3Index h, int childRes);
|
||||
|
||||
/** @brief provides the children (or grandchildren, etc) of the given hexagon */
|
||||
void H3_EXPORT(h3ToChildren)(H3Index h, int childRes, H3Index *children);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup h3ToCenterChild h3ToCenterChild
|
||||
* Functions for h3ToCenterChild
|
||||
* @{
|
||||
*/
|
||||
/** @brief returns the center child of the given hexagon at the specified
|
||||
* resolution */
|
||||
H3Index H3_EXPORT(h3ToCenterChild)(H3Index h, int childRes);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup compact compact
|
||||
* Functions for compact
|
||||
* @{
|
||||
*/
|
||||
/** @brief compacts the given set of hexagons as best as possible */
|
||||
int H3_EXPORT(compact)(const H3Index *h3Set, H3Index *compactedSet,
|
||||
const int numHexes);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup uncompact uncompact
|
||||
* Functions for uncompact
|
||||
* @{
|
||||
*/
|
||||
/** @brief determines the maximum number of hexagons that could be uncompacted
|
||||
* from the compacted set */
|
||||
int H3_EXPORT(maxUncompactSize)(const H3Index *compactedSet, const int numHexes,
|
||||
const int res);
|
||||
|
||||
/** @brief uncompacts the compacted hexagon set */
|
||||
int H3_EXPORT(uncompact)(const H3Index *compactedSet, const int numHexes,
|
||||
H3Index *h3Set, const int maxHexes, const int res);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup h3IsResClassIII h3IsResClassIII
|
||||
* Functions for h3IsResClassIII
|
||||
* @{
|
||||
*/
|
||||
/** @brief determines if a hexagon is Class III (or Class II) */
|
||||
int H3_EXPORT(h3IsResClassIII)(H3Index h);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup h3IsPentagon h3IsPentagon
|
||||
* Functions for h3IsPentagon
|
||||
* @{
|
||||
*/
|
||||
/** @brief determines if an H3 cell is a pentagon */
|
||||
int H3_EXPORT(h3IsPentagon)(H3Index h);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup h3GetFaces h3GetFaces
|
||||
* Functions for h3GetFaces
|
||||
* @{
|
||||
*/
|
||||
/** @brief Max number of icosahedron faces intersected by an index */
|
||||
int H3_EXPORT(maxFaceCount)(H3Index h3);
|
||||
|
||||
/** @brief Find all icosahedron faces intersected by a given H3 index */
|
||||
void H3_EXPORT(h3GetFaces)(H3Index h3, int *out);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup h3IndexesAreNeighbors h3IndexesAreNeighbors
|
||||
* Functions for h3IndexesAreNeighbors
|
||||
* @{
|
||||
*/
|
||||
/** @brief returns whether or not the provided hexagons border */
|
||||
int H3_EXPORT(h3IndexesAreNeighbors)(H3Index origin, H3Index destination);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup getH3UnidirectionalEdge getH3UnidirectionalEdge
|
||||
* Functions for getH3UnidirectionalEdge
|
||||
* @{
|
||||
*/
|
||||
/** @brief returns the unidirectional edge H3Index for the specified origin and
|
||||
* destination */
|
||||
H3Index H3_EXPORT(getH3UnidirectionalEdge)(H3Index origin, H3Index destination);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup h3UnidirectionalEdgeIsValid h3UnidirectionalEdgeIsValid
|
||||
* Functions for h3UnidirectionalEdgeIsValid
|
||||
* @{
|
||||
*/
|
||||
/** @brief returns whether the H3Index is a valid unidirectional edge */
|
||||
int H3_EXPORT(h3UnidirectionalEdgeIsValid)(H3Index edge);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup getOriginH3IndexFromUnidirectionalEdge \
|
||||
* getOriginH3IndexFromUnidirectionalEdge
|
||||
* Functions for getOriginH3IndexFromUnidirectionalEdge
|
||||
* @{
|
||||
*/
|
||||
/** @brief Returns the origin hexagon H3Index from the unidirectional edge
|
||||
* H3Index */
|
||||
H3Index H3_EXPORT(getOriginH3IndexFromUnidirectionalEdge)(H3Index edge);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup getDestinationH3IndexFromUnidirectionalEdge \
|
||||
* getDestinationH3IndexFromUnidirectionalEdge
|
||||
* Functions for getDestinationH3IndexFromUnidirectionalEdge
|
||||
* @{
|
||||
*/
|
||||
/** @brief Returns the destination hexagon H3Index from the unidirectional edge
|
||||
* H3Index */
|
||||
H3Index H3_EXPORT(getDestinationH3IndexFromUnidirectionalEdge)(H3Index edge);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup getH3IndexesFromUnidirectionalEdge \
|
||||
* getH3IndexesFromUnidirectionalEdge
|
||||
* Functions for getH3IndexesFromUnidirectionalEdge
|
||||
* @{
|
||||
*/
|
||||
/** @brief Returns the origin and destination hexagons from the unidirectional
|
||||
* edge H3Index */
|
||||
void H3_EXPORT(getH3IndexesFromUnidirectionalEdge)(H3Index edge,
|
||||
H3Index *originDestination);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup getH3UnidirectionalEdgesFromHexagon \
|
||||
* getH3UnidirectionalEdgesFromHexagon
|
||||
* Functions for getH3UnidirectionalEdgesFromHexagon
|
||||
* @{
|
||||
*/
|
||||
/** @brief Returns the 6 (or 5 for pentagons) edges associated with the H3Index
|
||||
*/
|
||||
void H3_EXPORT(getH3UnidirectionalEdgesFromHexagon)(H3Index origin,
|
||||
H3Index *edges);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup getH3UnidirectionalEdgeBoundary getH3UnidirectionalEdgeBoundary
|
||||
* Functions for getH3UnidirectionalEdgeBoundary
|
||||
* @{
|
||||
*/
|
||||
/** @brief Returns the GeoBoundary containing the coordinates of the edge */
|
||||
void H3_EXPORT(getH3UnidirectionalEdgeBoundary)(H3Index edge, GeoBoundary *gb);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup h3Distance h3Distance
|
||||
* Functions for h3Distance
|
||||
* @{
|
||||
*/
|
||||
/** @brief Returns grid distance between two indexes */
|
||||
int H3_EXPORT(h3Distance)(H3Index origin, H3Index h3);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup h3Line h3Line
|
||||
* Functions for h3Line
|
||||
* @{
|
||||
*/
|
||||
/** @brief Number of indexes in a line connecting two indexes */
|
||||
int H3_EXPORT(h3LineSize)(H3Index start, H3Index end);
|
||||
|
||||
/** @brief Line of h3 indexes connecting two indexes */
|
||||
int H3_EXPORT(h3Line)(H3Index start, H3Index end, H3Index *out);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup experimentalH3ToLocalIj experimentalH3ToLocalIj
|
||||
* Functions for experimentalH3ToLocalIj
|
||||
* @{
|
||||
*/
|
||||
/** @brief Returns two dimensional coordinates for the given index */
|
||||
int H3_EXPORT(experimentalH3ToLocalIj)(H3Index origin, H3Index h3,
|
||||
CoordIJ *out);
|
||||
/** @} */
|
||||
|
||||
/** @defgroup experimentalLocalIjToH3 experimentalLocalIjToH3
|
||||
* Functions for experimentalLocalIjToH3
|
||||
* @{
|
||||
*/
|
||||
/** @brief Returns index for the given two dimensional coordinates */
|
||||
int H3_EXPORT(experimentalLocalIjToH3)(H3Index origin, const CoordIJ *ij,
|
||||
H3Index *out);
|
||||
/** @} */
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#endif
|
@ -1,28 +0,0 @@
|
||||
|
||||
####### Expanded from @PACKAGE_INIT@ by configure_package_config_file() #######
|
||||
####### Any changes to this file will be overwritten by the next CMake run ####
|
||||
####### The input file was Config.cmake.in ########
|
||||
|
||||
get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE)
|
||||
|
||||
macro(set_and_check _var _file)
|
||||
set(${_var} "${_file}")
|
||||
if(NOT EXISTS "${_file}")
|
||||
message(FATAL_ERROR "File or directory ${_file} referenced by variable ${_var} does not exist !")
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(check_required_components _NAME)
|
||||
foreach(comp ${${_NAME}_FIND_COMPONENTS})
|
||||
if(NOT ${_NAME}_${comp}_FOUND)
|
||||
if(${_NAME}_FIND_REQUIRED_${comp})
|
||||
set(${_NAME}_FOUND FALSE)
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
endmacro()
|
||||
|
||||
####################################################################################
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/h3Targets.cmake")
|
||||
check_required_components("h3")
|
@ -1,70 +0,0 @@
|
||||
# This is a basic version file for the Config-mode of find_package().
|
||||
# It is used by write_basic_package_version_file() as input file for configure_file()
|
||||
# to create a version-file which can be installed along a config.cmake file.
|
||||
#
|
||||
# The created file sets PACKAGE_VERSION_EXACT if the current version string and
|
||||
# the requested version string are exactly the same and it sets
|
||||
# PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version,
|
||||
# but only if the requested major version is the same as the current one.
|
||||
# The variable CVF_VERSION must be set before calling configure_file().
|
||||
|
||||
|
||||
set(PACKAGE_VERSION "3.7.1")
|
||||
|
||||
if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION)
|
||||
set(PACKAGE_VERSION_COMPATIBLE FALSE)
|
||||
else()
|
||||
|
||||
if("3.7.1" MATCHES "^([0-9]+)\\.")
|
||||
set(CVF_VERSION_MAJOR "${CMAKE_MATCH_1}")
|
||||
if(NOT CVF_VERSION_MAJOR VERSION_EQUAL 0)
|
||||
string(REGEX REPLACE "^0+" "" CVF_VERSION_MAJOR "${CVF_VERSION_MAJOR}")
|
||||
endif()
|
||||
else()
|
||||
set(CVF_VERSION_MAJOR "3.7.1")
|
||||
endif()
|
||||
|
||||
if(PACKAGE_FIND_VERSION_RANGE)
|
||||
# both endpoints of the range must have the expected major version
|
||||
math (EXPR CVF_VERSION_MAJOR_NEXT "${CVF_VERSION_MAJOR} + 1")
|
||||
if (NOT PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR
|
||||
OR ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND NOT PACKAGE_FIND_VERSION_MAX_MAJOR STREQUAL CVF_VERSION_MAJOR)
|
||||
OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND NOT PACKAGE_FIND_VERSION_MAX VERSION_LESS_EQUAL CVF_VERSION_MAJOR_NEXT)))
|
||||
set(PACKAGE_VERSION_COMPATIBLE FALSE)
|
||||
elseif(PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR
|
||||
AND ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_LESS_EQUAL PACKAGE_FIND_VERSION_MAX)
|
||||
OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION_MAX)))
|
||||
set(PACKAGE_VERSION_COMPATIBLE TRUE)
|
||||
else()
|
||||
set(PACKAGE_VERSION_COMPATIBLE FALSE)
|
||||
endif()
|
||||
else()
|
||||
if(PACKAGE_FIND_VERSION_MAJOR STREQUAL CVF_VERSION_MAJOR)
|
||||
set(PACKAGE_VERSION_COMPATIBLE TRUE)
|
||||
else()
|
||||
set(PACKAGE_VERSION_COMPATIBLE FALSE)
|
||||
endif()
|
||||
|
||||
if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION)
|
||||
set(PACKAGE_VERSION_EXACT TRUE)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
||||
# if the installed project requested no architecture check, don't perform the check
|
||||
if("FALSE")
|
||||
return()
|
||||
endif()
|
||||
|
||||
# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it:
|
||||
if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "8" STREQUAL "")
|
||||
return()
|
||||
endif()
|
||||
|
||||
# check that the installed version has the same 32/64bit-ness as the one which is currently searching:
|
||||
if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "8")
|
||||
math(EXPR installedBits "8 * 8")
|
||||
set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)")
|
||||
set(PACKAGE_VERSION_UNSUITABLE TRUE)
|
||||
endif()
|
@ -1,19 +0,0 @@
|
||||
#----------------------------------------------------------------
|
||||
# Generated CMake target import file for configuration "Release".
|
||||
#----------------------------------------------------------------
|
||||
|
||||
# Commands may need to know the format version.
|
||||
set(CMAKE_IMPORT_FILE_VERSION 1)
|
||||
|
||||
# Import target "h3::h3" for configuration "Release"
|
||||
set_property(TARGET h3::h3 APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
|
||||
set_target_properties(h3::h3 PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C"
|
||||
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/libh3.a"
|
||||
)
|
||||
|
||||
list(APPEND _cmake_import_check_targets h3::h3 )
|
||||
list(APPEND _cmake_import_check_files_for_h3::h3 "${_IMPORT_PREFIX}/lib/libh3.a" )
|
||||
|
||||
# Commands beyond this point should not need to know the version.
|
||||
set(CMAKE_IMPORT_FILE_VERSION)
|
@ -1,108 +0,0 @@
|
||||
# Generated by CMake
|
||||
|
||||
if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.8)
|
||||
message(FATAL_ERROR "CMake >= 2.8.0 required")
|
||||
endif()
|
||||
if(CMAKE_VERSION VERSION_LESS "2.8.3")
|
||||
message(FATAL_ERROR "CMake >= 2.8.3 required")
|
||||
endif()
|
||||
cmake_policy(PUSH)
|
||||
cmake_policy(VERSION 2.8.3...3.23)
|
||||
#----------------------------------------------------------------
|
||||
# Generated CMake target import file.
|
||||
#----------------------------------------------------------------
|
||||
|
||||
# Commands may need to know the format version.
|
||||
set(CMAKE_IMPORT_FILE_VERSION 1)
|
||||
|
||||
# Protect against multiple inclusion, which would fail when already imported targets are added once more.
|
||||
set(_cmake_targets_defined "")
|
||||
set(_cmake_targets_not_defined "")
|
||||
set(_cmake_expected_targets "")
|
||||
foreach(_cmake_expected_target IN ITEMS h3::h3)
|
||||
list(APPEND _cmake_expected_targets "${_cmake_expected_target}")
|
||||
if(TARGET "${_cmake_expected_target}")
|
||||
list(APPEND _cmake_targets_defined "${_cmake_expected_target}")
|
||||
else()
|
||||
list(APPEND _cmake_targets_not_defined "${_cmake_expected_target}")
|
||||
endif()
|
||||
endforeach()
|
||||
unset(_cmake_expected_target)
|
||||
if(_cmake_targets_defined STREQUAL _cmake_expected_targets)
|
||||
unset(_cmake_targets_defined)
|
||||
unset(_cmake_targets_not_defined)
|
||||
unset(_cmake_expected_targets)
|
||||
unset(CMAKE_IMPORT_FILE_VERSION)
|
||||
cmake_policy(POP)
|
||||
return()
|
||||
endif()
|
||||
if(NOT _cmake_targets_defined STREQUAL "")
|
||||
string(REPLACE ";" ", " _cmake_targets_defined_text "${_cmake_targets_defined}")
|
||||
string(REPLACE ";" ", " _cmake_targets_not_defined_text "${_cmake_targets_not_defined}")
|
||||
message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_cmake_targets_defined_text}\nTargets not yet defined: ${_cmake_targets_not_defined_text}\n")
|
||||
endif()
|
||||
unset(_cmake_targets_defined)
|
||||
unset(_cmake_targets_not_defined)
|
||||
unset(_cmake_expected_targets)
|
||||
|
||||
|
||||
# Compute the installation prefix relative to this file.
|
||||
get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH)
|
||||
get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
|
||||
get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
|
||||
get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
|
||||
if(_IMPORT_PREFIX STREQUAL "/")
|
||||
set(_IMPORT_PREFIX "")
|
||||
endif()
|
||||
|
||||
# Create imported target h3::h3
|
||||
add_library(h3::h3 STATIC IMPORTED)
|
||||
|
||||
set_target_properties(h3::h3 PROPERTIES
|
||||
INTERFACE_COMPILE_DEFINITIONS "H3_PREFIX="
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
|
||||
INTERFACE_LINK_LIBRARIES "/usr/lib64/libm.so"
|
||||
)
|
||||
|
||||
if(CMAKE_VERSION VERSION_LESS 2.8.12)
|
||||
message(FATAL_ERROR "This file relies on consumers using CMake 2.8.12 or greater.")
|
||||
endif()
|
||||
|
||||
# Load information for each installed configuration.
|
||||
file(GLOB _cmake_config_files "${CMAKE_CURRENT_LIST_DIR}/h3Targets-*.cmake")
|
||||
foreach(_cmake_config_file IN LISTS _cmake_config_files)
|
||||
include("${_cmake_config_file}")
|
||||
endforeach()
|
||||
unset(_cmake_config_file)
|
||||
unset(_cmake_config_files)
|
||||
|
||||
# Cleanup temporary variables.
|
||||
set(_IMPORT_PREFIX)
|
||||
|
||||
# Loop over all imported files and verify that they actually exist
|
||||
foreach(_cmake_target IN LISTS _cmake_import_check_targets)
|
||||
foreach(_cmake_file IN LISTS "_cmake_import_check_files_for_${_cmake_target}")
|
||||
if(NOT EXISTS "${_cmake_file}")
|
||||
message(FATAL_ERROR "The imported target \"${_cmake_target}\" references the file
|
||||
\"${_cmake_file}\"
|
||||
but this file does not exist. Possible reasons include:
|
||||
* The file was deleted, renamed, or moved to another location.
|
||||
* An install or uninstall procedure did not complete successfully.
|
||||
* The installation package was faulty and contained
|
||||
\"${CMAKE_CURRENT_LIST_FILE}\"
|
||||
but not all the files it references.
|
||||
")
|
||||
endif()
|
||||
endforeach()
|
||||
unset(_cmake_file)
|
||||
unset("_cmake_import_check_files_for_${_cmake_target}")
|
||||
endforeach()
|
||||
unset(_cmake_target)
|
||||
unset(_cmake_import_check_targets)
|
||||
|
||||
# This file does not depend on other imported targets which have
|
||||
# been exported from the same project but in a separate export set.
|
||||
|
||||
# Commands beyond this point should not need to know the version.
|
||||
set(CMAKE_IMPORT_FILE_VERSION)
|
||||
cmake_policy(POP)
|
Binary file not shown.
@ -1 +0,0 @@
|
||||
pip
|
@ -1,21 +0,0 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2018 Adafruit Industries
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
@ -1,146 +0,0 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: Adafruit-Blinka
|
||||
Version: 8.10.0
|
||||
Summary: CircuitPython APIs for non-CircuitPython versions of Python such as CPython on Linux and MicroPython.
|
||||
Home-page: https://github.com/adafruit/Adafruit_Blinka
|
||||
Author: Adafruit Industries
|
||||
Author-email: circuitpython@adafruit.com
|
||||
License: MIT
|
||||
Classifier: License :: OSI Approved :: MIT License
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3.7
|
||||
Classifier: Programming Language :: Python :: Implementation :: MicroPython
|
||||
Requires-Python: >=3.7.0
|
||||
Description-Content-Type: text/x-rst
|
||||
License-File: LICENSE
|
||||
Requires-Dist: Adafruit-PlatformDetect (>=3.13.0)
|
||||
Requires-Dist: Adafruit-PureIO (>=1.1.7)
|
||||
Requires-Dist: pyftdi (>=0.40.0)
|
||||
Requires-Dist: adafruit-circuitpython-typing
|
||||
Requires-Dist: RPi.GPIO
|
||||
Requires-Dist: rpi-ws281x (>=4.0.0)
|
||||
Requires-Dist: sysv-ipc (>=1.1.0)
|
||||
|
||||
|
||||
Introduction
|
||||
============
|
||||
|
||||
.. image:: https://readthedocs.org/projects/adafruit-micropython-blinka/badge/?version=latest
|
||||
:target: https://circuitpython.readthedocs.io/projects/blinka/en/latest/
|
||||
:alt: Documentation Status
|
||||
|
||||
.. image:: https://img.shields.io/discord/327254708534116352.svg
|
||||
:target: https://adafru.it/discord
|
||||
:alt: Discord
|
||||
|
||||
.. image:: https://travis-ci.com/adafruit/Adafruit_Blinka.svg?branch=master
|
||||
:target: https://travis-ci.com/adafruit/Adafruit_Blinka
|
||||
:alt: Build Status
|
||||
|
||||
.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
|
||||
:target: https://github.com/psf/black
|
||||
:alt: Code Style: Black
|
||||
|
||||
This repository contains a selection of packages emulating the CircuitPython API
|
||||
for devices or hosts running CPython or MicroPython. Working code exists to emulate these CircuitPython packages:
|
||||
|
||||
* **analogio** - analog input/output pins, using pin identities from board+microcontroller packages
|
||||
* **bitbangio** - software-driven interfaces for I2C, SPI
|
||||
* **board** - breakout-specific pin identities
|
||||
* **busio** - hardware-driven interfaces for I2C, SPI, UART
|
||||
* **digitalio** - digital input/output pins, using pin identities from board+microcontroller packages
|
||||
* **keypad** - support for scanning keys and key matrices
|
||||
* **microcontroller** - chip-specific pin identities
|
||||
* **micropython** - MicroPython-specific module
|
||||
* **neopixel_write** - low-level interface to NeoPixels
|
||||
* **pulseio** - contains classes that provide access to basic pulse IO (PWM)
|
||||
* **pwmio** - contains classes that provide access to basic pulse IO (PWM)
|
||||
* **rainbowio** - provides the colorwheel() function
|
||||
* **usb_hid** - act as a hid-device using usb_gadget kernel driver
|
||||
|
||||
For details, see the `Blinka API reference
|
||||
<https://circuitpython.readthedocs.io/projects/blinka/en/latest/index.html>`_.
|
||||
|
||||
Dependencies
|
||||
=============
|
||||
|
||||
The emulation described above is intended to provide a
|
||||
CircuitPython-like API for devices which are running CPython or
|
||||
Micropython. Since corresponding packages should be built-in to any
|
||||
standard CircuitPython image, they have no value on a device already
|
||||
running CircuitPython and would likely conflict in unhappy ways.
|
||||
|
||||
The test suites in the test/src folder under **testing.universal** are by design
|
||||
intended to run on *either* CircuitPython *or* CPython/Micropython+compatibility layer to prove conformance.
|
||||
|
||||
Installing from PyPI
|
||||
=====================
|
||||
|
||||
On supported GNU/Linux systems like the Raspberry Pi, you can install the driver locally `from
|
||||
PyPI <https://pypi.org/project/Adafruit-Blinka/>`_. To install for current user:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
pip3 install Adafruit-Blinka
|
||||
|
||||
To install system-wide (this may be required in some cases):
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
sudo pip3 install Adafruit-Blinka
|
||||
|
||||
To install in a virtual environment in your current project:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mkdir project-name && cd project-name
|
||||
python3 -m venv .env
|
||||
source .env/bin/activate
|
||||
pip3 install Adafruit-Blinka
|
||||
|
||||
Usage Example
|
||||
=============
|
||||
|
||||
At the time of writing (`git:7fc1f8ab <https://github.com/cefn/Adafruit_Micropython_Blinka/tree/7fc1f8ab477124628a5afebbf6826005955805f9>`_),
|
||||
the following sequence runs through some basic testing of the digitalio compatibility layer...
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from testing import test_module_name
|
||||
test_module_name("testing.universal.digitalio")
|
||||
|
||||
An example log from running the suites is `here <https://github.com/cefn/Adafruit_Micropython_Blinka/issues/2#issuecomment-366713394>`_ .
|
||||
|
||||
Contributing
|
||||
============
|
||||
|
||||
Contributions are welcome! Please read our `Code of Conduct
|
||||
<https://github.com/adafruit/Adafruit_Blinka/blob/master/CODE_OF_CONDUCT.md>`_
|
||||
before contributing to help this project stay welcoming.
|
||||
|
||||
Building locally
|
||||
================
|
||||
|
||||
Sphinx documentation
|
||||
-----------------------
|
||||
|
||||
Sphinx is used to build the documentation based on rST files and comments in the code. First,
|
||||
install dependencies (feel free to reuse the virtual environment from above):
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
python3 -m venv .env
|
||||
source .env/bin/activate
|
||||
pip install Sphinx sphinx-rtd-theme Adafruit-PlatformDetect
|
||||
|
||||
Now, once you have the virtual environment activated:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
cd docs
|
||||
sphinx-build -E -W -b html . _build/html
|
||||
|
||||
This will output the documentation to ``docs/_build/html``. Open the index.html in your browser to
|
||||
view them. It will also (due to -W) error out on any warning like Travis will. This is a good way to
|
||||
locally verify it will pass.
|
@ -1,573 +0,0 @@
|
||||
Adafruit_Blinka-8.10.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||
Adafruit_Blinka-8.10.0.dist-info/LICENSE,sha256=UODDtbRIa-DtQgY5-KH28RXykQH-7mvNlUpLgdsE0PM,1086
|
||||
Adafruit_Blinka-8.10.0.dist-info/METADATA,sha256=Di--en0q16Ybc3VLix4ovRpkD7G2Ds2J8eggTqbozQc,5420
|
||||
Adafruit_Blinka-8.10.0.dist-info/RECORD,,
|
||||
Adafruit_Blinka-8.10.0.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
|
||||
Adafruit_Blinka-8.10.0.dist-info/top_level.txt,sha256=ol8MVXQjyEEz8Hm-Z57kjjZYbi9TpphczXLTwQMQTBk,167
|
||||
adafruit_blinka/__init__.py,sha256=3hHckyKpn4iiXPnd84yesE76MSkSFWPasZtQiWbJc7A,2442
|
||||
adafruit_blinka/__init__.pyc,,
|
||||
adafruit_blinka/agnostic/__init__.py,sha256=2ZBsZstZ0j9N2jC3h16RlIegYM6pLnB5G3CJoQZh4OE,1164
|
||||
adafruit_blinka/agnostic/__init__.pyc,,
|
||||
adafruit_blinka/agnostic/time.py,sha256=zbUmuMLoP9LbQY5VzqI53RkJkcMT8tmwqjifyVLzyeM,2011
|
||||
adafruit_blinka/agnostic/time.pyc,,
|
||||
adafruit_blinka/board/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/board/__init__.pyc,,
|
||||
adafruit_blinka/board/bananapi/__init__.py,sha256=vV-I0ULkHsU8jvVuAiivQIG8TbruobbLZfS6qf5S6cU,152
|
||||
adafruit_blinka/board/bananapi/__init__.pyc,,
|
||||
adafruit_blinka/board/bananapi/bpim2plus.py,sha256=LgEX0AUGJzc_rAUFxWhhF-iY1772nhZClMkTZgzEEe8,1441
|
||||
adafruit_blinka/board/bananapi/bpim2plus.pyc,,
|
||||
adafruit_blinka/board/bananapi/bpim2zero.py,sha256=hF1uV721yCx-83-X0HYLYeBuae-h2-vvpDKalZoiBEA,1441
|
||||
adafruit_blinka/board/bananapi/bpim2zero.pyc,,
|
||||
adafruit_blinka/board/bananapi/bpim5.py,sha256=dvuj_C6eQgOxvvPlbuDZiDNl-JJJKUeYDEgJRiiDWMQ,1337
|
||||
adafruit_blinka/board/bananapi/bpim5.pyc,,
|
||||
adafruit_blinka/board/beagleboard/__init__.py,sha256=J8PAw_ifGdqZ-tKrZ-4AHJsbKLNsM63bZb4vEt9LxJc,154
|
||||
adafruit_blinka/board/beagleboard/__init__.pyc,,
|
||||
adafruit_blinka/board/beagleboard/beaglebone_ai.py,sha256=-4ZWsFAqJXfkiWhUCNRkP7m03dovomsgdbceLdT-76w,4599
|
||||
adafruit_blinka/board/beagleboard/beaglebone_ai.pyc,,
|
||||
adafruit_blinka/board/beagleboard/beaglebone_black.py,sha256=h90N2OCcE9nYqYwGL1t-DYT6krDybG2m-8WwB11JgV4,5598
|
||||
adafruit_blinka/board/beagleboard/beaglebone_black.pyc,,
|
||||
adafruit_blinka/board/beagleboard/beaglebone_pocketbeagle.py,sha256=O8rUJd09xVXrMygiOG7AU3pjcwyQDgn-jSmL1ijJjFw,4582
|
||||
adafruit_blinka/board/beagleboard/beaglebone_pocketbeagle.pyc,,
|
||||
adafruit_blinka/board/beagleboard/beaglev_starlight.py,sha256=VA2u28-hR8ac1dpmjUk8HkPcCqvwQRKLN3GTzeZrfhc,835
|
||||
adafruit_blinka/board/beagleboard/beaglev_starlight.pyc,,
|
||||
adafruit_blinka/board/binho_nova.py,sha256=dg2g7HTYMPnILgYLtvatEaZ1pvTZrnf1h69_KFJhe7M,417
|
||||
adafruit_blinka/board/binho_nova.pyc,,
|
||||
adafruit_blinka/board/clockworkcpi3.py,sha256=nh7DGjZL5qxhj_lMPnV3x8JJLhAdlLZ-uOVbJ6LKy18,1048
|
||||
adafruit_blinka/board/clockworkcpi3.pyc,,
|
||||
adafruit_blinka/board/coral_dev_board.py,sha256=6KXK-9SXUusaEgXlh7UTXwcap10aAVNKNrssF3wYGKU,770
|
||||
adafruit_blinka/board/coral_dev_board.pyc,,
|
||||
adafruit_blinka/board/coral_dev_board_mini.py,sha256=DaPwzx-nZgXbdiiQ0J8qLxE1JlNj06sJ1MS66uGeGEs,1395
|
||||
adafruit_blinka/board/coral_dev_board_mini.pyc,,
|
||||
adafruit_blinka/board/dragonboard_410c.py,sha256=yp1JjBiDDM9JdhLKi5U23Ez_nlM9M4zWkQ7r5LlvivQ,972
|
||||
adafruit_blinka/board/dragonboard_410c.pyc,,
|
||||
adafruit_blinka/board/feather_huzzah.py,sha256=_xRgtV7yPXdFtWevnLr5B0bc-yqcT5ejaS3GwCaZ22o,647
|
||||
adafruit_blinka/board/feather_huzzah.pyc,,
|
||||
adafruit_blinka/board/feather_u2if.py,sha256=p4vCZfBfDz67bXY7h-jW_ceAzwoel35RtEoLChlPyDI,1220
|
||||
adafruit_blinka/board/feather_u2if.pyc,,
|
||||
adafruit_blinka/board/ftdi_ft2232h.py,sha256=whZg1Medz5_hwYoq1qQh8kkxU-FXOHLw7OTWwpHP-IQ,789
|
||||
adafruit_blinka/board/ftdi_ft2232h.pyc,,
|
||||
adafruit_blinka/board/ftdi_ft232h.py,sha256=QzbLi43Q94b2CwJTnHEdNGmOODlsZAAqGc3_M2T6FPQ,458
|
||||
adafruit_blinka/board/ftdi_ft232h.pyc,,
|
||||
adafruit_blinka/board/giantboard.py,sha256=_otsz78DH2LjyxuoWo5LTShK8_d2ufftbC7oOrb_Ebo,784
|
||||
adafruit_blinka/board/giantboard.pyc,,
|
||||
adafruit_blinka/board/greatfet_one.py,sha256=W_bjRw7biUvUYGeUyFyrHb_8oIq1Dnm1InZxubTM6Eo,1847
|
||||
adafruit_blinka/board/greatfet_one.pyc,,
|
||||
adafruit_blinka/board/hardkernel/__init__.py,sha256=-PYWUqlVU6GQEETfbPorR-iTQcxnHsx2pKK7hZKzNe0,153
|
||||
adafruit_blinka/board/hardkernel/__init__.pyc,,
|
||||
adafruit_blinka/board/hardkernel/odroidc2.py,sha256=3x2TopbyW5FqINsmbQsZ_mw7nAMH3sr0cytpY_HBwt8,1639
|
||||
adafruit_blinka/board/hardkernel/odroidc2.pyc,,
|
||||
adafruit_blinka/board/hardkernel/odroidc4.py,sha256=SD4hVdSnCuMTQ4CQbXp2ouf2_orfwtZLNDFsdzmhXCU,1083
|
||||
adafruit_blinka/board/hardkernel/odroidc4.pyc,,
|
||||
adafruit_blinka/board/hardkernel/odroidm1.py,sha256=i7Zh1zdkzsop6u1hBHOkNRf7mQQuiw65NXVHsM-qxbU,892
|
||||
adafruit_blinka/board/hardkernel/odroidm1.pyc,,
|
||||
adafruit_blinka/board/hardkernel/odroidn2.py,sha256=JamFXnotmdn8FVYcSSqsoAVI9_chE3ov4d01rwe1IKw,2162
|
||||
adafruit_blinka/board/hardkernel/odroidn2.pyc,,
|
||||
adafruit_blinka/board/hardkernel/odroidxu4.py,sha256=4-SFuPWIFOZVK5oAXl5zvekxzNu9gUNYadiiLxm7dnE,903
|
||||
adafruit_blinka/board/hardkernel/odroidxu4.pyc,,
|
||||
adafruit_blinka/board/hifive_unleashed.py,sha256=wPnltQDvNoKNICDmzsKbzfWYIgipPPrOy3dte_zm44U,851
|
||||
adafruit_blinka/board/hifive_unleashed.pyc,,
|
||||
adafruit_blinka/board/itsybitsy_u2if.py,sha256=GE_m7S1ZDEW0GmoEDquDjnwzHpLh2jYhcE1GRzJ5puM,1351
|
||||
adafruit_blinka/board/itsybitsy_u2if.pyc,,
|
||||
adafruit_blinka/board/khadas/__init__.py,sha256=FPNBqsJPsHCkp4WfPK7MaDzTqhfr5NksgM5DswqLzSs,149
|
||||
adafruit_blinka/board/khadas/__init__.pyc,,
|
||||
adafruit_blinka/board/khadas/khadasvim3.py,sha256=Cp2uUheqVC-goW5UFWHUlok77A1QrglYizCQ9uhUmEU,2985
|
||||
adafruit_blinka/board/khadas/khadasvim3.pyc,,
|
||||
adafruit_blinka/board/librecomputer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/board/librecomputer/__init__.pyc,,
|
||||
adafruit_blinka/board/librecomputer/aml_s905x_cc_v1.py,sha256=C2BcC9oZgXR5zWlmqQTTxRg4ybbGeqWIF27b2L1-d7k,1307
|
||||
adafruit_blinka/board/librecomputer/aml_s905x_cc_v1.pyc,,
|
||||
adafruit_blinka/board/lichee_rv.py,sha256=gQio9fsip3deYP87H_TS3tf7hI5AKGv8MuP4YmxQ83k,764
|
||||
adafruit_blinka/board/lichee_rv.pyc,,
|
||||
adafruit_blinka/board/lubancat/__init__.py,sha256=Zf2uJ08dlYPYxzfxQ5mMkXcTxseSMD8x89F5IfYF24U,151
|
||||
adafruit_blinka/board/lubancat/__init__.pyc,,
|
||||
adafruit_blinka/board/lubancat/lubancat1.py,sha256=nbL7u0DAAgPgk9FZRg8Sju6scpMvXhTJQjYVltsA3FM,1482
|
||||
adafruit_blinka/board/lubancat/lubancat1.pyc,,
|
||||
adafruit_blinka/board/lubancat/lubancat_imx6ull.py,sha256=IXK7Ur-QTq-VG9UFlj82VSEbNw2_HRiEQwohdtJdIto,1751
|
||||
adafruit_blinka/board/lubancat/lubancat_imx6ull.pyc,,
|
||||
adafruit_blinka/board/lubancat/lubancat_stm32mp157.py,sha256=SaU6nW_WSFPEIEgsiijTZigxSp1S17-Sidh5IcymDUI,1537
|
||||
adafruit_blinka/board/lubancat/lubancat_stm32mp157.pyc,,
|
||||
adafruit_blinka/board/lubancat/lubancat_zero.py,sha256=TlHHoCYu6be-Cic3BQL40oJX_9tlz0CVwZ6BL2pWaec,1495
|
||||
adafruit_blinka/board/lubancat/lubancat_zero.pyc,,
|
||||
adafruit_blinka/board/macropad_u2if.py,sha256=wTXpVKTDb4ov7n7GQYMPXKlTHejFz5_eWGxnBiP-g34,1454
|
||||
adafruit_blinka/board/macropad_u2if.pyc,,
|
||||
adafruit_blinka/board/microchip_mcp2221.py,sha256=-uPZQZfle5_4iB2ylcHN3gReSbZqWj5ykwe0yxQvqnA,295
|
||||
adafruit_blinka/board/microchip_mcp2221.pyc,,
|
||||
adafruit_blinka/board/nanopi/__init__.py,sha256=3B1Z7hYACPToFK-bHMxmzvmGn2M1oQvf_XDfm0PFN0E,149
|
||||
adafruit_blinka/board/nanopi/__init__.pyc,,
|
||||
adafruit_blinka/board/nanopi/duo2.py,sha256=Ed-CkB-hzN-9LIz9PBqOtBYhxeaFyMicfyPKhk9XtNg,573
|
||||
adafruit_blinka/board/nanopi/duo2.pyc,,
|
||||
adafruit_blinka/board/nanopi/neo.py,sha256=6w_2EBFrP55bN1-XCPwtqtUo-yj6fBTMvFgw_M4QxtA,846
|
||||
adafruit_blinka/board/nanopi/neo.pyc,,
|
||||
adafruit_blinka/board/nanopi/neoair.py,sha256=6w_2EBFrP55bN1-XCPwtqtUo-yj6fBTMvFgw_M4QxtA,846
|
||||
adafruit_blinka/board/nanopi/neoair.pyc,,
|
||||
adafruit_blinka/board/nodemcu.py,sha256=5BpaWQJ59FpSRHdEPGIMPFCTwEstr-f74AoPw5uyxOc,694
|
||||
adafruit_blinka/board/nodemcu.pyc,,
|
||||
adafruit_blinka/board/nvidia/__init__.py,sha256=oMuz9rKClk1dFbCOyEi1Qe1YkhLa4YTk0n-aRQwpagU,149
|
||||
adafruit_blinka/board/nvidia/__init__.pyc,,
|
||||
adafruit_blinka/board/nvidia/clara_agx_xavier.py,sha256=YfqchUj2Q2cAy-by2XazeQFEahLI8DllKvCPiiP13w4,652
|
||||
adafruit_blinka/board/nvidia/clara_agx_xavier.pyc,,
|
||||
adafruit_blinka/board/nvidia/jetson_nano.py,sha256=GIMNnBHNaMt8csjSEJBsNyuWkpuOp6M3_kievldktq8,719
|
||||
adafruit_blinka/board/nvidia/jetson_nano.pyc,,
|
||||
adafruit_blinka/board/nvidia/jetson_nx.py,sha256=SfcnRby1N6CVM08NIyXY_WW46r1IxZDOrxR8oa17-bo,640
|
||||
adafruit_blinka/board/nvidia/jetson_nx.pyc,,
|
||||
adafruit_blinka/board/nvidia/jetson_orin.py,sha256=bIhAJj1qz3Bi2MHQPXCAb5OC0mKgTMJ7xEXdOp_yUNI,704
|
||||
adafruit_blinka/board/nvidia/jetson_orin.pyc,,
|
||||
adafruit_blinka/board/nvidia/jetson_tx1.py,sha256=eD1dMq4YV_jLro7kFjTXzuK6HkLuqElCiJjrFaKIGMY,642
|
||||
adafruit_blinka/board/nvidia/jetson_tx1.pyc,,
|
||||
adafruit_blinka/board/nvidia/jetson_tx2.py,sha256=q3aQgtHXiuJN3nGm8UYkHk26Opkg0H_YYxcRCfcwb74,642
|
||||
adafruit_blinka/board/nvidia/jetson_tx2.pyc,,
|
||||
adafruit_blinka/board/nvidia/jetson_tx2_nx.py,sha256=4uuR2TdG1xzRY__yXhlwdj3OFolECSxFwH9UOVD_slU,644
|
||||
adafruit_blinka/board/nvidia/jetson_tx2_nx.pyc,,
|
||||
adafruit_blinka/board/nvidia/jetson_xavier.py,sha256=0tJIccuAfbJZor2TDsXorDvm24a63KA8Ie9sAsvbIDA,649
|
||||
adafruit_blinka/board/nvidia/jetson_xavier.pyc,,
|
||||
adafruit_blinka/board/onion/__init__.py,sha256=O8pRGz7qUm_r-Dv_8QM6h-s4Q-_floGDdoRisZ5WHUk,148
|
||||
adafruit_blinka/board/onion/__init__.pyc,,
|
||||
adafruit_blinka/board/onion/omega2.py,sha256=Ecj4J_wXeawee6Nac1ScazyGQdpDkA-3_8nQftcDsR8,713
|
||||
adafruit_blinka/board/onion/omega2.pyc,,
|
||||
adafruit_blinka/board/orangepi/__init__.py,sha256=AlwNbq_1J7jHRR9y3MRMB7oc6_QkRGWpjBbFTRRI5P8,160
|
||||
adafruit_blinka/board/orangepi/__init__.pyc,,
|
||||
adafruit_blinka/board/orangepi/orangepi3.py,sha256=rnJgsm_aZmKI1_CADcw-T_PZfWsGw-5ZIbpPYyq_9cw,630
|
||||
adafruit_blinka/board/orangepi/orangepi3.pyc,,
|
||||
adafruit_blinka/board/orangepi/orangepi4.py,sha256=ozkSU2qn38cay20JGMjm6knSfuHVFjXluKZ_xeZhs_w,1582
|
||||
adafruit_blinka/board/orangepi/orangepi4.pyc,,
|
||||
adafruit_blinka/board/orangepi/orangepipc.py,sha256=O6JxRxKooaFtYwUK5EfS3VPXH9-mnLC9co39ofYGLD4,793
|
||||
adafruit_blinka/board/orangepi/orangepipc.pyc,,
|
||||
adafruit_blinka/board/orangepi/orangepir1.py,sha256=d9tTCnymzpsqy6ZFfYJ3eNcEzN8BFrr7y3NKIsfaefw,734
|
||||
adafruit_blinka/board/orangepi/orangepir1.pyc,,
|
||||
adafruit_blinka/board/orangepi/orangepizero.py,sha256=pBhZ2uW3bEQPMP3zDkLIpJsqriNPhgdaX6HryGeHqXo,802
|
||||
adafruit_blinka/board/orangepi/orangepizero.pyc,,
|
||||
adafruit_blinka/board/orangepi/orangepizero2.py,sha256=MPVsqzuK6na_UVhZ-MvotUaljb1SXF4At3d4oMqi0iw,659
|
||||
adafruit_blinka/board/orangepi/orangepizero2.pyc,,
|
||||
adafruit_blinka/board/orangepi/orangepizeroplus.py,sha256=x8nCWS-rAHlVOQvrhc7754KKH58L80fku3Sf3DpeEC8,772
|
||||
adafruit_blinka/board/orangepi/orangepizeroplus.pyc,,
|
||||
adafruit_blinka/board/orangepi/orangepizeroplus2h5.py,sha256=kBSVBCHR0-0Hhw2a0bhXaFlkwwVR6ooLU37bsRDbZQw,710
|
||||
adafruit_blinka/board/orangepi/orangepizeroplus2h5.pyc,,
|
||||
adafruit_blinka/board/pico_u2if.py,sha256=My1sX_3siyopJnhizeSbD1PUsH_OlaoidBm1xtrLFXc,981
|
||||
adafruit_blinka/board/pico_u2if.pyc,,
|
||||
adafruit_blinka/board/pine64.py,sha256=RbWGqFLBHqvAVfwFSa2O_B6FYOIWhjcj-qKw3dqlnNk,788
|
||||
adafruit_blinka/board/pine64.pyc,,
|
||||
adafruit_blinka/board/pineH64.py,sha256=Ro4_scT0-sun2JPcm5-2X4nfSk-esfAAH_HnjuZxcDM,675
|
||||
adafruit_blinka/board/pineH64.pyc,,
|
||||
adafruit_blinka/board/pyboard.py,sha256=oBKkuJcpv73ftg6ySGnA-AO158uBqIQfGTPJi-2Gvps,896
|
||||
adafruit_blinka/board/pyboard.pyc,,
|
||||
adafruit_blinka/board/qt2040_trinkey_u2if.py,sha256=Np8uZ8vUKqaYlRJSprKGBlG84nhemSK8bFI9f6XAL24,445
|
||||
adafruit_blinka/board/qt2040_trinkey_u2if.pyc,,
|
||||
adafruit_blinka/board/qtpy_u2if.py,sha256=xoi0sCIDzA7BhmrWxfustt0hMxdveDAsA0hfTpFSet4,1299
|
||||
adafruit_blinka/board/qtpy_u2if.pyc,,
|
||||
adafruit_blinka/board/radxa/__init__.py,sha256=K2BxqGGcHui_nRk34EtRjbWfUFJoIzrruS7IOXkdhIY,156
|
||||
adafruit_blinka/board/radxa/__init__.pyc,,
|
||||
adafruit_blinka/board/radxa/radxacm3.py,sha256=-er4WibbewrPZ-0Y-wOiT3DVIist9scyPDLhLT2PBqk,2124
|
||||
adafruit_blinka/board/radxa/radxacm3.pyc,,
|
||||
adafruit_blinka/board/radxa/radxazero.py,sha256=m3ON3u7L7dNCb6xtxdBboesVKxSw07bDeUKn3WEdgLI,857
|
||||
adafruit_blinka/board/radxa/radxazero.pyc,,
|
||||
adafruit_blinka/board/radxa/rock5.py,sha256=yNdMefkPHoI9c7-HOWQKTMPeBXXgmjXA7qOjRk3ANME,2465
|
||||
adafruit_blinka/board/radxa/rock5.pyc,,
|
||||
adafruit_blinka/board/radxa/rockpi4.py,sha256=BZdtMZse0yMRjQ-EwXncoRCkn4mE0jqWY0hVcLW96g4,1581
|
||||
adafruit_blinka/board/radxa/rockpi4.pyc,,
|
||||
adafruit_blinka/board/radxa/rockpie.py,sha256=BeNilV6XQxa9urhlaFeZCUuQ4oYwlDnAetk-AZxMpSw,1500
|
||||
adafruit_blinka/board/radxa/rockpie.pyc,,
|
||||
adafruit_blinka/board/radxa/rockpis.py,sha256=96ne9jWxzJmmV8P4-T-edBH_R9SN31yWpOWfssHAy_c,999
|
||||
adafruit_blinka/board/radxa/rockpis.pyc,,
|
||||
adafruit_blinka/board/raspberrypi/__init__.py,sha256=apZ0b0uyIcb8QFCn5Wl8IGYRAxLnE-DxZelJh_QY_nA,155
|
||||
adafruit_blinka/board/raspberrypi/__init__.pyc,,
|
||||
adafruit_blinka/board/raspberrypi/pico.py,sha256=Sy8iobMIuSJjBRPsqQQD4VEKBPMgOrQ85O61x5RWIUg,765
|
||||
adafruit_blinka/board/raspberrypi/pico.pyc,,
|
||||
adafruit_blinka/board/raspberrypi/raspi_1b_rev1.py,sha256=_qrfxJVUWsHiGsKvlxiFTBxNsxgHeTUWsxQOlDpcpAI,667
|
||||
adafruit_blinka/board/raspberrypi/raspi_1b_rev1.pyc,,
|
||||
adafruit_blinka/board/raspberrypi/raspi_1b_rev2.py,sha256=VJcaSo9V71MsuEpPJ7GKj7K0QdcTjHqZgfn_DiaDrrk,667
|
||||
adafruit_blinka/board/raspberrypi/raspi_1b_rev2.pyc,,
|
||||
adafruit_blinka/board/raspberrypi/raspi_40pin.py,sha256=APNyA3mRi8aMt99lvatBlMGPoyxpAzxPwJpHnukbkDw,876
|
||||
adafruit_blinka/board/raspberrypi/raspi_40pin.pyc,,
|
||||
adafruit_blinka/board/raspberrypi/raspi_4b.py,sha256=ohRDflMXMybpZN8Z5GLI4c9wt37-HTElGJnlgK1XP4I,889
|
||||
adafruit_blinka/board/raspberrypi/raspi_4b.pyc,,
|
||||
adafruit_blinka/board/raspberrypi/raspi_cm.py,sha256=1dqWpNri5uQt1E8QMBpFmwHWW6bdr9aTC4U-n8416mY,1172
|
||||
adafruit_blinka/board/raspberrypi/raspi_cm.pyc,,
|
||||
adafruit_blinka/board/siemens/__init__.py,sha256=9wQJn9L_oGWjYMQnb1ypt3Qn-GN3O_gBeMP6adyqb8E,133
|
||||
adafruit_blinka/board/siemens/__init__.pyc,,
|
||||
adafruit_blinka/board/siemens/siemens_iot2050.py,sha256=HGMUpDTXOsvhreJb6uOA4f5iECOr0Dc3zzGSfVysb9k,991
|
||||
adafruit_blinka/board/siemens/siemens_iot2050.pyc,,
|
||||
adafruit_blinka/board/soPine.py,sha256=1Ilo95Fw2hJYdbk_7jSxrjLS57rFeLRTjV3s1WYN0hk,788
|
||||
adafruit_blinka/board/soPine.pyc,,
|
||||
adafruit_blinka/board/stm32/__init__.py,sha256=c-0d6DvHBpcSKZxCR7mMeXZMwT-d99cGv9QWuuTt3-g,148
|
||||
adafruit_blinka/board/stm32/__init__.pyc,,
|
||||
adafruit_blinka/board/stm32/osd32mp1_brk.py,sha256=u_RZPOGGBIffEfZhn8827a8vu091JZEjqxVM_v7RAKM,5364
|
||||
adafruit_blinka/board/stm32/osd32mp1_brk.pyc,,
|
||||
adafruit_blinka/board/stm32/osd32mp1_red.py,sha256=kgSgwkmOl9qpKAnoOkQn5b41kIFkS4viFR0gwLtvn7k,941
|
||||
adafruit_blinka/board/stm32/osd32mp1_red.pyc,,
|
||||
adafruit_blinka/board/stm32/stm32mp157c_dk2.py,sha256=dkuHgQfc8wFsypxAr1n1ekSOibqjnVF8uCF8KxYSJw4,760
|
||||
adafruit_blinka/board/stm32/stm32mp157c_dk2.pyc,,
|
||||
adafruit_blinka/board/tritium-h3.py,sha256=XFQ4m35tkepZFEn0gS27kvL3aBomTimSfgdKaqbsMoM,756
|
||||
adafruit_blinka/board/tritium-h3.pyc,,
|
||||
adafruit_blinka/board/udoo_x86ultra.py,sha256=birnNFZFnu9dRTQZKoG--LbhKtGw4o5JduDcFLiXZu4,1826
|
||||
adafruit_blinka/board/udoo_x86ultra.pyc,,
|
||||
adafruit_blinka/board/x86j41x5.py,sha256=BiQC0DcXJ-hfHhHdSTseFykxs5nJ-tbO_hi0GwQ1De4,840
|
||||
adafruit_blinka/board/x86j41x5.pyc,,
|
||||
adafruit_blinka/microcontroller/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/allwinner/D1/__init__.py,sha256=pQbuLoEazWS2sWJNDkJE55F4HVqEbRRN8bdvkw9jWMg,149
|
||||
adafruit_blinka/microcontroller/allwinner/D1/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/allwinner/D1/pin.py,sha256=0_1ubBtZgQn-wth_59ZkZ5GEP6JSSQsCY8_3itTRNS0,1880
|
||||
adafruit_blinka/microcontroller/allwinner/D1/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/allwinner/__init__.py,sha256=Y1J80-zqqh-_D-mGwASK31hBqAWepGpg9Ter4zV07pE,153
|
||||
adafruit_blinka/microcontroller/allwinner/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/allwinner/a33/__init__.py,sha256=iMRDKlgRD4dkujNy4bC0oapqAwLAiqXvGRbBsIXfrpk,157
|
||||
adafruit_blinka/microcontroller/allwinner/a33/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/allwinner/a33/pin.py,sha256=-WNR-GiUItT1PUgS9I0HtEZm2tON1oVylaCl5eyWOwE,1118
|
||||
adafruit_blinka/microcontroller/allwinner/a33/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/allwinner/a64/__init__.py,sha256=24lqgbULhG68JmHe9kMwC3-srJrNqa_pcyCa4NK7btA,157
|
||||
adafruit_blinka/microcontroller/allwinner/a64/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/allwinner/a64/pin.py,sha256=uhKew4XZHhnt0KgwuUeS_DJ-AN11rZfEBHcj5XJSwDg,1785
|
||||
adafruit_blinka/microcontroller/allwinner/a64/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/allwinner/h3/__init__.py,sha256=WPukV4agF7vSpLgZLWGIN4AKQXotgOJF_-xKlxzJAQc,156
|
||||
adafruit_blinka/microcontroller/allwinner/h3/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/allwinner/h3/pin.py,sha256=cHS4fdVnAV2n9GCm92_orgY3TYQzRGUAmwy0BFAhdog,1254
|
||||
adafruit_blinka/microcontroller/allwinner/h3/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/allwinner/h5/__init__.py,sha256=ln-NIylI35Ju9rXDBvIYeNNSx7XQ9vdz03StRMOW8vo,156
|
||||
adafruit_blinka/microcontroller/allwinner/h5/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/allwinner/h5/pin.py,sha256=kJvIGqrslBhAd_cyx4e1BkVa01n1YRL4g6eQdJAdlsw,1450
|
||||
adafruit_blinka/microcontroller/allwinner/h5/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/allwinner/h6/__init__.py,sha256=11_b_whLOkzEsfMy4U1bSlDX9pYyuf429nmb_bvqA7E,156
|
||||
adafruit_blinka/microcontroller/allwinner/h6/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/allwinner/h6/pin.py,sha256=o9Cof9gXpaZ0shTWyUHJbh0IgzqSMOl1ekBDU5TTtwk,1107
|
||||
adafruit_blinka/microcontroller/allwinner/h6/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/allwinner/h616/__init__.py,sha256=UtdnyzqeOG4Fb8oHbP6EADCKEhRwVoWaVXo2INhu54M,158
|
||||
adafruit_blinka/microcontroller/allwinner/h616/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/allwinner/h616/pin.py,sha256=r3BL0xwC63S5kgwXk0Lb1uYe952dRIt_tIA2pFlw2oU,2169
|
||||
adafruit_blinka/microcontroller/allwinner/h616/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/am335x/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/am335x/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/am335x/pin.py,sha256=DZGhRqe6VvIb9zIVxFPBtEg1S-ucCUXNF-ipgC0GIIk,11135
|
||||
adafruit_blinka/microcontroller/am335x/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/am335x/sysfs_pwmout.py,sha256=2QFvqZVQHQQVkpCJgBvD3IXtHvI8FAZxn_FNYdIfTrA,10442
|
||||
adafruit_blinka/microcontroller/am335x/sysfs_pwmout.pyc,,
|
||||
adafruit_blinka/microcontroller/am65xx/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/am65xx/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/am65xx/analogio.py,sha256=pvxhKRVhEE74xhYMaWU3m6pXs1eFV6youQ2zcR4kIXs,1470
|
||||
adafruit_blinka/microcontroller/am65xx/analogio.pyc,,
|
||||
adafruit_blinka/microcontroller/am65xx/i2c.py,sha256=CoDIHGZbCNkUp54pKnkhY-YwFtLxzZDZmZojWhIIB_I,3006
|
||||
adafruit_blinka/microcontroller/am65xx/i2c.pyc,,
|
||||
adafruit_blinka/microcontroller/am65xx/pin.py,sha256=mvI5Uz991yeiSm-qZ3iKf0DPWpVs8M5YDbsQn-5y3vo,5198
|
||||
adafruit_blinka/microcontroller/am65xx/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/am65xx/pwmout.py,sha256=TOaY1Az7Ii2vk5Sb_IKNwOIEzuYWh0TlyIZtmOEXCnk,5250
|
||||
adafruit_blinka/microcontroller/am65xx/pwmout.pyc,,
|
||||
adafruit_blinka/microcontroller/am65xx/spi.py,sha256=m4oVAMVHC6633xc7adGjeQt_OFZqq6bijNEQwATbf3Q,4372
|
||||
adafruit_blinka/microcontroller/am65xx/spi.pyc,,
|
||||
adafruit_blinka/microcontroller/amlogic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/amlogic/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/amlogic/a311d/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/amlogic/a311d/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/amlogic/a311d/pin.py,sha256=hFf0_9CsAhVX2d1Jx7u9BZIOgCPFEn56-m3_UTNULSM,7095
|
||||
adafruit_blinka/microcontroller/amlogic/a311d/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/amlogic/a311d/pulseio/PulseIn.py,sha256=3S7HKilPzecGsqPcL1_er6DJvQVGOQU6Xpas6atr6-8,6169
|
||||
adafruit_blinka/microcontroller/amlogic/a311d/pulseio/PulseIn.pyc,,
|
||||
adafruit_blinka/microcontroller/amlogic/a311d/pulseio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/amlogic/a311d/pulseio/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/amlogic/a311d/pulseio/libgpiod_pulsein,sha256=kRojwle4tzo0LpBoGW4pccqI7Y8oFk9ZtF627mwQg_w,20372
|
||||
adafruit_blinka/microcontroller/amlogic/a311d/pulseio/libgpiod_pulsein.license,sha256=lu6UbVXdYmAXgHbHvkjDb5WYAPKoZcdb1InK-GoVgtE,113
|
||||
adafruit_blinka/microcontroller/amlogic/a311d/pulseio/libgpiod_pulsein64,sha256=qPBI_Jg4NVgiqkf7WDXtdOZn6yXjQhaYyGumDRNCu5s,25832
|
||||
adafruit_blinka/microcontroller/amlogic/a311d/pulseio/libgpiod_pulsein64.license,sha256=lu6UbVXdYmAXgHbHvkjDb5WYAPKoZcdb1InK-GoVgtE,113
|
||||
adafruit_blinka/microcontroller/amlogic/meson_g12_common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/amlogic/meson_g12_common/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/amlogic/meson_g12_common/pin.py,sha256=b9XGhHiy9SbojN_-SwlDEEbY5nxckdHeTwbVVAVJjII,5207
|
||||
adafruit_blinka/microcontroller/amlogic/meson_g12_common/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/amlogic/s905/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/amlogic/s905/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/amlogic/s905/pin.py,sha256=oh7i-SvUO4BLG4KWdSSFnGu1_WOEH3-I5fJYZYg28iI,2036
|
||||
adafruit_blinka/microcontroller/amlogic/s905/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/amlogic/s905x/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/amlogic/s905x/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/amlogic/s905x/pin.py,sha256=HWksxd4fPntFr6hy0YXRpJfImQOL7SnDA5o82Khz6l8,1502
|
||||
adafruit_blinka/microcontroller/amlogic/s905x/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/amlogic/s905x3/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/amlogic/s905x3/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/amlogic/s905x3/pin.py,sha256=Tuq5fAGl1fv4v1n2ZNL7dwCXiRmrnpzcL1RlaEHDALk,276
|
||||
adafruit_blinka/microcontroller/amlogic/s905x3/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/amlogic/s905y2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/amlogic/s905y2/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/amlogic/s905y2/pin.py,sha256=mFutChavYywKGud2HvORh3TIjt4ag3ikF-uv8V9vBTg,1744
|
||||
adafruit_blinka/microcontroller/amlogic/s905y2/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/amlogic/s922x/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/amlogic/s922x/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/amlogic/s922x/pin.py,sha256=S2tBpl0hJr6iCSIIVJARFhdXvdc_LQpkyiIwpeBin-U,275
|
||||
adafruit_blinka/microcontroller/amlogic/s922x/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/atheros/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/atheros/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/atheros/ar9331/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/atheros/ar9331/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/atheros/ar9331/pin.py,sha256=wg-CWxypeoukHuOJYKdo7hw1BM3ggUMU7JpNP6g_70s,1224
|
||||
adafruit_blinka/microcontroller/atheros/ar9331/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/bcm2711/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/bcm2711/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/bcm2711/pin.py,sha256=vVoooAtrl3x88CZzz4xBduIEoTAjIt0aaTbSQpBuAk4,1855
|
||||
adafruit_blinka/microcontroller/bcm2711/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/bcm283x/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/bcm283x/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/bcm283x/neopixel.py,sha256=95796h44qgR28fnl5aMqlDEDIa9FFlfa2F2t7C9cDCg,4838
|
||||
adafruit_blinka/microcontroller/bcm283x/neopixel.pyc,,
|
||||
adafruit_blinka/microcontroller/bcm283x/pin.py,sha256=msKbs1vXmC1HMaQSoh7SLUJje3YIzD5-Pj3jS6uTJg8,3438
|
||||
adafruit_blinka/microcontroller/bcm283x/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/bcm283x/pulseio/PulseIn.py,sha256=3S7HKilPzecGsqPcL1_er6DJvQVGOQU6Xpas6atr6-8,6169
|
||||
adafruit_blinka/microcontroller/bcm283x/pulseio/PulseIn.pyc,,
|
||||
adafruit_blinka/microcontroller/bcm283x/pulseio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/bcm283x/pulseio/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/bcm283x/pulseio/libgpiod_pulsein,sha256=uqiXM-_mZV8oOV16noHJgdA78PS3RWVxeCWV_fuwanw,20448
|
||||
adafruit_blinka/microcontroller/bcm283x/pulseio/libgpiod_pulsein.license,sha256=lu6UbVXdYmAXgHbHvkjDb5WYAPKoZcdb1InK-GoVgtE,113
|
||||
adafruit_blinka/microcontroller/bcm283x/pulseio/libgpiod_pulsein64,sha256=rX5l-18nJWRpzJEe1aLS5Iz0qFmi_yacl9f2UJIsAjg,25832
|
||||
adafruit_blinka/microcontroller/bcm283x/pulseio/libgpiod_pulsein64.license,sha256=lu6UbVXdYmAXgHbHvkjDb5WYAPKoZcdb1InK-GoVgtE,113
|
||||
adafruit_blinka/microcontroller/bcm283x/pwmio/PWMOut.py,sha256=ho5lr5Yg_KchuqluKgddEzcOxB7yTdXTMe3wQAEtZiA,4494
|
||||
adafruit_blinka/microcontroller/bcm283x/pwmio/PWMOut.pyc,,
|
||||
adafruit_blinka/microcontroller/bcm283x/pwmio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/bcm283x/pwmio/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/dra74x/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/dra74x/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/dra74x/pin.py,sha256=LEW8oOGxikXkEkf_jy3kzYvA7oUNpv9JfiyEvz8U1CU,5715
|
||||
adafruit_blinka/microcontroller/dra74x/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/esp8266/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/esp8266/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/esp8266/pin.py,sha256=UtmCV_m_UCGMo6aVgG_g8CWuWSrMukpVvmIzoeOj2io,668
|
||||
adafruit_blinka/microcontroller/esp8266/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/ftdi_mpsse/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/ftdi_mpsse/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/ftdi_mpsse/ft2232h/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/ftdi_mpsse/ft2232h/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/ftdi_mpsse/ft2232h/pin.py,sha256=oSwlmnbkl0KjvcoyoQ7hLPM0hH7Chtc8oYKWn_Lr2KA,1467
|
||||
adafruit_blinka/microcontroller/ftdi_mpsse/ft2232h/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/ftdi_mpsse/ft232h/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/ftdi_mpsse/ft232h/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/ftdi_mpsse/ft232h/pin.py,sha256=nwMFrcy5uzRDcGdchNw2656MjAZegDLZGYdlnto_CTM,536
|
||||
adafruit_blinka/microcontroller/ftdi_mpsse/ft232h/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/ftdi_mpsse/mpsse/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/ftdi_mpsse/mpsse/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/ftdi_mpsse/mpsse/i2c.py,sha256=REqSCoewYO3vB7_eVpppZR9Cgh71MpeBprMZdB6LLv8,2666
|
||||
adafruit_blinka/microcontroller/ftdi_mpsse/mpsse/i2c.pyc,,
|
||||
adafruit_blinka/microcontroller/ftdi_mpsse/mpsse/pin.py,sha256=_qPnCOZFDBD0SgaICC0y0ixptHz-erOJwUdapsqQakU,2587
|
||||
adafruit_blinka/microcontroller/ftdi_mpsse/mpsse/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/ftdi_mpsse/mpsse/spi.py,sha256=wtqDPgMt7cU-ETEt56avrmydi2IY8FuWONusTfNgv7s,3446
|
||||
adafruit_blinka/microcontroller/ftdi_mpsse/mpsse/spi.pyc,,
|
||||
adafruit_blinka/microcontroller/ftdi_mpsse/mpsse/url.py,sha256=02zOWpWKifu19KV-liGVTzPcKp6uENqv548-1Qeh2Zo,891
|
||||
adafruit_blinka/microcontroller/ftdi_mpsse/mpsse/url.pyc,,
|
||||
adafruit_blinka/microcontroller/generic_linux/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/generic_linux/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/generic_linux/i2c.py,sha256=CWStQHt6HCbU6R71PXHgVLfm6wm_NegI77Kknq7xs_E,3007
|
||||
adafruit_blinka/microcontroller/generic_linux/i2c.pyc,,
|
||||
adafruit_blinka/microcontroller/generic_linux/libgpiod_pin.py,sha256=556G_UGgXKWA3rQ_WmtS0eE8ssb6IzaecEo3eiS1LaQ,5707
|
||||
adafruit_blinka/microcontroller/generic_linux/libgpiod_pin.pyc,,
|
||||
adafruit_blinka/microcontroller/generic_linux/periphery_pin.py,sha256=chCRjTNBeIK51wNfSrq4rxHxUd8GhR9HijgQjPT0Ym8,2781
|
||||
adafruit_blinka/microcontroller/generic_linux/periphery_pin.pyc,,
|
||||
adafruit_blinka/microcontroller/generic_linux/spi.py,sha256=5gWLNWT6kZsooHnM_wmIFzdVK0Dv3TbOTB4ayTYWLlE,4341
|
||||
adafruit_blinka/microcontroller/generic_linux/spi.pyc,,
|
||||
adafruit_blinka/microcontroller/generic_linux/sysfs_analogin.py,sha256=i3JxF1QBAvSwsO5GD2-nr6u9XvwlxUXrLLsYRfBmixc,2780
|
||||
adafruit_blinka/microcontroller/generic_linux/sysfs_analogin.pyc,,
|
||||
adafruit_blinka/microcontroller/generic_linux/sysfs_analogout.py,sha256=KxJUIlyzOhE7eQgvDV-GNMtbT2sECcHbUlk9gtuGMrI,2708
|
||||
adafruit_blinka/microcontroller/generic_linux/sysfs_analogout.pyc,,
|
||||
adafruit_blinka/microcontroller/generic_linux/sysfs_pin.py,sha256=pGOwFNMC-cyBSkh8AQFIlKpEsDJnXTZbHAAm1IK0yxY,10890
|
||||
adafruit_blinka/microcontroller/generic_linux/sysfs_pin.pyc,,
|
||||
adafruit_blinka/microcontroller/generic_linux/sysfs_pwmout.py,sha256=oSNbEq1Y-7K_B-5AC9uUGRrgfpK59fJ9mG8NSESB6pc,11055
|
||||
adafruit_blinka/microcontroller/generic_linux/sysfs_pwmout.pyc,,
|
||||
adafruit_blinka/microcontroller/generic_micropython/__init__.py,sha256=pTx54EcyfWW1Og6vxyLeBch2FFs2uTRt2kyE_pd_xXM,1091
|
||||
adafruit_blinka/microcontroller/generic_micropython/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/generic_micropython/i2c.py,sha256=I2Evb0RwlmZmT2D4U2NDyplu4GBvvwQjz6EcFeyuglk,1473
|
||||
adafruit_blinka/microcontroller/generic_micropython/i2c.pyc,,
|
||||
adafruit_blinka/microcontroller/generic_micropython/spi.py,sha256=tjWWIfwpNvDoKhlha3_3B7L0qSFfYXaQ2Y0forxHIaM,1868
|
||||
adafruit_blinka/microcontroller/generic_micropython/spi.pyc,,
|
||||
adafruit_blinka/microcontroller/hfu540/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/hfu540/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/hfu540/pin.py,sha256=Xu-TgsZ65bPJHZ48uRNMo9HIUPfQoc7oJ9XrAkp9Ysk,891
|
||||
adafruit_blinka/microcontroller/hfu540/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/mcp2221/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/mcp2221/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/mcp2221/analogio.py,sha256=C7E5HXbjp3-44jXsAygKngFCC-sDNtAbPRMaDyyzp-8,1437
|
||||
adafruit_blinka/microcontroller/mcp2221/analogio.pyc,,
|
||||
adafruit_blinka/microcontroller/mcp2221/i2c.py,sha256=oFLZTGWy2nHEnUUoq8SZ1N1nwtqnf9eGIaOHIN1QNzI,1544
|
||||
adafruit_blinka/microcontroller/mcp2221/i2c.pyc,,
|
||||
adafruit_blinka/microcontroller/mcp2221/mcp2221.py,sha256=D6G6QRR1-r6Z4upHjVaTKX2ngjo8sfDSI8r09WKj6rk,13628
|
||||
adafruit_blinka/microcontroller/mcp2221/mcp2221.pyc,,
|
||||
adafruit_blinka/microcontroller/mcp2221/pin.py,sha256=ycyPIR6rwFkfJ1d5dDRwfU1pqmcec3IdAjoPEkW1qXY,2883
|
||||
adafruit_blinka/microcontroller/mcp2221/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/mips24kec/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/mips24kec/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/mips24kec/pin.py,sha256=0iutvzeuEfl8Izg1Or3QeCah481ABtqo7ZA3TIuABoA,1302
|
||||
adafruit_blinka/microcontroller/mips24kec/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/mt8167/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/mt8167/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/mt8167/pin.py,sha256=QAwKHB0wDcbqsyWtuhp1VyJGWZdGWIgvMXwYgbO9ayA,2028
|
||||
adafruit_blinka/microcontroller/mt8167/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/nova/__init__.py,sha256=_b5jLdxcVUz1d-kdS1B8Lo5T1IZHhrOUIYtfmdd81wk,1057
|
||||
adafruit_blinka/microcontroller/nova/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/nova/i2c.py,sha256=bGBCZilT7YTm2dART3eEmeNDzi_U5n4RvwvKVNMjAj0,6260
|
||||
adafruit_blinka/microcontroller/nova/i2c.pyc,,
|
||||
adafruit_blinka/microcontroller/nova/pin.py,sha256=Bg9rLnJKCubz0EwAwy6WD8iSLOv-9cNgJZofxwvI-d4,2065
|
||||
adafruit_blinka/microcontroller/nova/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/nova/pwmout.py,sha256=oQjCAxr2RmJpDZNwrJrK30Ze0e0Bn4Ws5SD3z5ct1eg,7201
|
||||
adafruit_blinka/microcontroller/nova/pwmout.pyc,,
|
||||
adafruit_blinka/microcontroller/nova/spi.py,sha256=sMPVlwPGIl-VJDIQEYSJwPp34_O7Lkua7P_B-S2z_x0,8491
|
||||
adafruit_blinka/microcontroller/nova/spi.pyc,,
|
||||
adafruit_blinka/microcontroller/nova/uart.py,sha256=lfdgSC3vJL7F8DglvZkDm4knmDU4N9TZTSVmevAlacE,2556
|
||||
adafruit_blinka/microcontroller/nova/uart.pyc,,
|
||||
adafruit_blinka/microcontroller/nxp_imx6ull/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/nxp_imx6ull/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/nxp_imx6ull/pin.py,sha256=zvRZLEoCgz6VkIFZWKFFX4V5YAPcPmm8AdvUEovVX7A,2149
|
||||
adafruit_blinka/microcontroller/nxp_imx6ull/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/nxp_imx8m/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/nxp_imx8m/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/nxp_imx8m/pin.py,sha256=PZKoFxqrBf7vwzTBK5Y_Hm75KrflMT3LzMnpeQSoAfY,1214
|
||||
adafruit_blinka/microcontroller/nxp_imx8m/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/nxp_lpc4330/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/nxp_lpc4330/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/nxp_lpc4330/analogio.py,sha256=P7e0OM20r6wkMwrdp6V8ZCngA0Q3tOTRyKDDHNLaqrY,1441
|
||||
adafruit_blinka/microcontroller/nxp_lpc4330/analogio.pyc,,
|
||||
adafruit_blinka/microcontroller/nxp_lpc4330/i2c.py,sha256=dvZw_-XBBj613MFrRq0X_Ln5gT18nxdg5KfXhCeHxMU,1614
|
||||
adafruit_blinka/microcontroller/nxp_lpc4330/i2c.pyc,,
|
||||
adafruit_blinka/microcontroller/nxp_lpc4330/pin.py,sha256=wX5IjrSor8JfFe7yvC5ZB7UfD2BMLelathCOQ-gr5Gw,5450
|
||||
adafruit_blinka/microcontroller/nxp_lpc4330/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/nxp_lpc4330/pwmout.py,sha256=8C81tBwU4_d3nsp1rL-DA_niRomkaGN6cBSGM3dQSy8,6734
|
||||
adafruit_blinka/microcontroller/nxp_lpc4330/pwmout.pyc,,
|
||||
adafruit_blinka/microcontroller/nxp_lpc4330/spi.py,sha256=SvpwPCYCf9PR_YpOBAGBQbhno4rMwPItAMWi3F8JQEw,4678
|
||||
adafruit_blinka/microcontroller/nxp_lpc4330/spi.pyc,,
|
||||
adafruit_blinka/microcontroller/nxp_lpc4330/uart.py,sha256=h2qK0cUOKdHGQrcplbvekLVyHSfp_101aOLuBk3Z3tM,2000
|
||||
adafruit_blinka/microcontroller/nxp_lpc4330/uart.pyc,,
|
||||
adafruit_blinka/microcontroller/pentium/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/pentium/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/pentium/j4105/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/pentium/j4105/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/pentium/j4105/pin.py,sha256=0jTP0QaNbqRxuThr4odWvqm-IpgcddXGEZ6hy9jwW5k,1314
|
||||
adafruit_blinka/microcontroller/pentium/j4105/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/pentium/n3710/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/pentium/n3710/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/pentium/n3710/pin.py,sha256=UgGvw8jai9lSiv0-jzb-3AYDRQrMY39RK2EpSCPgW_c,2249
|
||||
adafruit_blinka/microcontroller/pentium/n3710/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/rockchip/PWMOut.py,sha256=gyv00dAjb4YW89JFiWyay3OkOYoLBYKbHLvTi61doLM,12666
|
||||
adafruit_blinka/microcontroller/rockchip/PWMOut.pyc,,
|
||||
adafruit_blinka/microcontroller/rockchip/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/rockchip/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/rockchip/rk3308/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/rockchip/rk3308/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/rockchip/rk3308/pin.py,sha256=5OfST8JhSrV6yNsC0hzDetPL_W8eyNPOvcqWRU0NNPo,3592
|
||||
adafruit_blinka/microcontroller/rockchip/rk3308/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/rockchip/rk3328/__init__.py,sha256=pb23QZkdWqUNZQrotHSfQwIJ_6yxAXJ8jPFkitXSIy8,159
|
||||
adafruit_blinka/microcontroller/rockchip/rk3328/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/rockchip/rk3328/pin.py,sha256=U5NacEY7W890aiEr9I432H2cIQL293zmNtUykneJQ1U,3767
|
||||
adafruit_blinka/microcontroller/rockchip/rk3328/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/rockchip/rk3399/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/rockchip/rk3399/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/rockchip/rk3399/pin.py,sha256=lZZTe_6soHtJNCtvBlsPgJ5dO3k343K_L9_HE9KvSI0,1893
|
||||
adafruit_blinka/microcontroller/rockchip/rk3399/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/rockchip/rk3566/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/rockchip/rk3566/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/rockchip/rk3566/pin.py,sha256=ditX80RBi1tnjSsiRjj1XKFnj1ewIVNTe48dnJ87Smk,3361
|
||||
adafruit_blinka/microcontroller/rockchip/rk3566/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/rockchip/rk3568b2/__init__.py,sha256=oFMcYY3KXVnLQLCDC9muCvXz0A6cb-IhQvutmtNpfqw,96
|
||||
adafruit_blinka/microcontroller/rockchip/rk3568b2/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/rockchip/rk3568b2/pin.py,sha256=gtnFLGeKwLIyXd5rOphsKZRphdNmS31Iz0_7n98ujvQ,1607
|
||||
adafruit_blinka/microcontroller/rockchip/rk3568b2/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/rockchip/rk3588/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/rockchip/rk3588/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/rockchip/rk3588/pin.py,sha256=63XIWIsRxRytvJqLdO-Zz0L4bITFV872Ee0ntL_XzLE,6511
|
||||
adafruit_blinka/microcontroller/rockchip/rk3588/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/rp2040/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/rp2040/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/rp2040/i2c.py,sha256=Nok-jLZ4COCXqTNRiOE90KFGo7o7b4xbfzVgZz35POA,2032
|
||||
adafruit_blinka/microcontroller/rp2040/i2c.pyc,,
|
||||
adafruit_blinka/microcontroller/rp2040/pin.py,sha256=-yXbfT3x8YfBf_qdHyiEGBLhFDLQ46MVV4N66CZNRec,4096
|
||||
adafruit_blinka/microcontroller/rp2040/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/rp2040/spi.py,sha256=lkiMO-I9Jucc2a2mwGHZZdmnTjGakSXVcVbSHo270Ug,2786
|
||||
adafruit_blinka/microcontroller/rp2040/spi.pyc,,
|
||||
adafruit_blinka/microcontroller/rp2040/uart.py,sha256=zOTtPYHm7kIBLkb2fq29lqQiAQmuVEXPybDpkjR1Yhg,1642
|
||||
adafruit_blinka/microcontroller/rp2040/uart.pyc,,
|
||||
adafruit_blinka/microcontroller/rp2040_u2if/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/rp2040_u2if/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/rp2040_u2if/analogio.py,sha256=GSZN_kSq_rUYUAX4v7TC7FAhqeg45n_4cdwX7DzukUA,1984
|
||||
adafruit_blinka/microcontroller/rp2040_u2if/analogio.pyc,,
|
||||
adafruit_blinka/microcontroller/rp2040_u2if/i2c.py,sha256=laxw-6G-aTU900I1hAAHQrRSLQRMHbDwnzdynCd5GeY,4188
|
||||
adafruit_blinka/microcontroller/rp2040_u2if/i2c.pyc,,
|
||||
adafruit_blinka/microcontroller/rp2040_u2if/neopixel.py,sha256=MV4CYEgKNscCmUA0CqI9tgMa5u7YW6DPOsvh5RZUE34,522
|
||||
adafruit_blinka/microcontroller/rp2040_u2if/neopixel.pyc,,
|
||||
adafruit_blinka/microcontroller/rp2040_u2if/pin.py,sha256=Pba8KW8h7aT7UtKDP1FzOXAyDTZ4zt7_Bj0SneATRGM,2257
|
||||
adafruit_blinka/microcontroller/rp2040_u2if/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/rp2040_u2if/pwmio.py,sha256=0shXaflbOPtkgbDytx8q-r_-VkrFbkJB3D8YpdiZR-0,1342
|
||||
adafruit_blinka/microcontroller/rp2040_u2if/pwmio.pyc,,
|
||||
adafruit_blinka/microcontroller/rp2040_u2if/rp2040_u2if.py,sha256=iliM4lVhCWbkyAHinejMe7ys1OJv9vlTeKFEMkblFhQ,16641
|
||||
adafruit_blinka/microcontroller/rp2040_u2if/rp2040_u2if.pyc,,
|
||||
adafruit_blinka/microcontroller/rp2040_u2if/spi.py,sha256=8XUJESywKuk58xmWnjpSDuzR_GoDJSgXffecFe728kA,3640
|
||||
adafruit_blinka/microcontroller/rp2040_u2if/spi.pyc,,
|
||||
adafruit_blinka/microcontroller/sama5/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/sama5/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/sama5/pin.py,sha256=Han_erLLWKOYV4v73wdSFQjZVylNX2r3bcXoahvttFI,1074
|
||||
adafruit_blinka/microcontroller/sama5/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/samsung/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/samsung/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/samsung/exynos5422/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/samsung/exynos5422/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/samsung/exynos5422/pin.py,sha256=bnluZii5quhUL_2onQM0FgVIuNR5Y0uAGHjCRh0U1Rc,2326
|
||||
adafruit_blinka/microcontroller/samsung/exynos5422/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/snapdragon/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/snapdragon/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/snapdragon/apq8016/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/snapdragon/apq8016/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/snapdragon/apq8016/pin.py,sha256=7tuhDvXKoZIr3UI4h9hanKJvW-jpsfPD1f8cUWdSOgg,3581
|
||||
adafruit_blinka/microcontroller/snapdragon/apq8016/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/starfive/JH71x0/__init__.py,sha256=uQzBqDw63SlmAu-cj0uDsqjJnBQAB1Wzvfw6k_XE4nY,159
|
||||
adafruit_blinka/microcontroller/starfive/JH71x0/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/starfive/JH71x0/pin.py,sha256=1kld4eClhKBRfcPap1BA19W5FN8cMNW6YP2cCx_Q8e0,1015
|
||||
adafruit_blinka/microcontroller/starfive/JH71x0/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/starfive/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/starfive/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/stm32/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/stm32/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/stm32/stm32f405/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/stm32/stm32f405/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/stm32/stm32f405/pin.py,sha256=STQxwOcTWfjNzhvXBMbn_SXsxitOup0yj3aIMRjP4zM,1192
|
||||
adafruit_blinka/microcontroller/stm32/stm32f405/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/stm32/stm32mp157/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/stm32/stm32mp157/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/stm32/stm32mp157/pin.py,sha256=NK_yfV4mgo_N0fs0oloyQJuJdU1unZnH8WgyEN-zNb8,3418
|
||||
adafruit_blinka/microcontroller/stm32/stm32mp157/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/tegra/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/tegra/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/tegra/t186/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/tegra/t186/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/tegra/t186/pin.py,sha256=sJ29lBiCvmS6QL_UzVDTYmIV8BarQe2l-PhVwAWinvs,3414
|
||||
adafruit_blinka/microcontroller/tegra/t186/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/tegra/t194/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/tegra/t194/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/tegra/t194/pin.py,sha256=TSg_B9H-uEZUDSz4-6dLmcMI0CbyRBLxlEAHgrkw1pA,3387
|
||||
adafruit_blinka/microcontroller/tegra/t194/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/tegra/t210/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/tegra/t210/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/tegra/t210/pin.py,sha256=NJGvfmlACDQl5ok6sxOcT3gwQHfTKLlZP7bQioFuQJk,3455
|
||||
adafruit_blinka/microcontroller/tegra/t210/pin.pyc,,
|
||||
adafruit_blinka/microcontroller/tegra/t234/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
adafruit_blinka/microcontroller/tegra/t234/__init__.pyc,,
|
||||
adafruit_blinka/microcontroller/tegra/t234/pin.py,sha256=7kgeQ6oWynJ1RWmOfolWZWpv2fHiovDtRReERS_QnfI,3097
|
||||
adafruit_blinka/microcontroller/tegra/t234/pin.pyc,,
|
||||
analogio.py,sha256=x65oBrAgjqdqlQYXd7iDBGu3FHsABTBjuR-iqdYnMjg,2452
|
||||
analogio.pyc,,
|
||||
bitbangio.py,sha256=KNt_Lmg_dOGVu2gKUb63e9YJg-8flYaq2F-AqnSVn0o,4535
|
||||
bitbangio.pyc,,
|
||||
board.py,sha256=t9aDA4XKcU4JCxS3rQS5v508FUbddCPu-hGKE4V4aIo,11064
|
||||
board.pyc,,
|
||||
busio.py,sha256=FDXvw7NL-gLOCmtFUdFsi3JUWfkUzmjQA-jlBE3kWUE,18631
|
||||
busio.pyc,,
|
||||
digitalio.py,sha256=2sIFNchj4TL4CczTtcqOZcnLEI6n-PFx0iE2RQh0KLw,8458
|
||||
digitalio.pyc,,
|
||||
keypad.py,sha256=jJyUM1x8eK2SF2Yq6H_QrEj80zg5nehKj4XRYtWWi20,18823
|
||||
keypad.pyc,,
|
||||
microcontroller/__init__.py,sha256=pQiASqS0IYXccN-MD4nA1jWV7Gclupw5eRM_kje8j2g,6076
|
||||
microcontroller/__init__.pyc,,
|
||||
microcontroller/pin.py,sha256=pG7Ve7nu5grYLzme0upnYKTfbqaNS9y-nM-FiLmLBw4,6182
|
||||
microcontroller/pin.pyc,,
|
||||
micropython-stubs/micropython.pyi,sha256=gIE7gt93t1Ur8Iv_FxHVZfGD1BqR5FH8zgDuj2isr0E,645
|
||||
micropython.py,sha256=6D4KCjMpp48_onWPME_Gf7v83CKiKz2_9vBoF2-gVhI,626
|
||||
micropython.pyc,,
|
||||
neopixel_write.py,sha256=MYPgW8Fsmn96GH-p51QI__1R_K3R1XLHTGX9GXq8f2U,1163
|
||||
neopixel_write.pyc,,
|
||||
onewireio.py,sha256=kCgKFtBjs-2PmpkTOC0ny4M-ap136V5_5Z8c3P3bYCo,1326
|
||||
onewireio.pyc,,
|
||||
pulseio.py,sha256=KaIsGxNOT8sxPuZ42lodzO7VqiVVsSjDfDTEKdpNTEc,697
|
||||
pulseio.pyc,,
|
||||
pwmio.py,sha256=UXOUSEhbpCIgaX99g9EekxPko9pqexJhpLUuLNXRiVQ,1937
|
||||
pwmio.pyc,,
|
||||
rainbowio.py,sha256=c38T9U1xuXgh0JeD_xs_RUfzrHhiQKRpcVJCC8BakwE,1181
|
||||
rainbowio.pyc,,
|
||||
usb_hid.py,sha256=zAXcPOGKcJ54-KcNBZDHnLYtev8tJKZZ7Osd8ZSRZSs,24736
|
||||
usb_hid.pyc,,
|
@ -1,5 +0,0 @@
|
||||
Wheel-Version: 1.0
|
||||
Generator: bdist_wheel (0.37.1)
|
||||
Root-Is-Purelib: true
|
||||
Tag: py3-none-any
|
||||
|
@ -1,16 +0,0 @@
|
||||
adafruit_blinka
|
||||
analogio
|
||||
bitbangio
|
||||
board
|
||||
busio
|
||||
digitalio
|
||||
keypad
|
||||
microcontroller
|
||||
micropython
|
||||
micropython-stubs
|
||||
neopixel_write
|
||||
onewireio
|
||||
pulseio
|
||||
pwmio
|
||||
rainbowio
|
||||
usb_hid
|
@ -1 +0,0 @@
|
||||
pip
|
@ -1,21 +0,0 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2018 Adafruit Industries
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
@ -1,116 +0,0 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: Adafruit-PlatformDetect
|
||||
Version: 3.38.0
|
||||
Summary: Platform detection for use by libraries like Adafruit-Blinka.
|
||||
Home-page: https://github.com/adafruit/Adafruit_Python_PlatformDetect
|
||||
Author: Adafruit Industries
|
||||
Author-email: circuitpython@adafruit.com
|
||||
License: MIT
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: Topic :: Software Development :: Libraries
|
||||
Classifier: Topic :: System :: Hardware
|
||||
Classifier: License :: OSI Approved :: MIT License
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3.7
|
||||
Requires-Python: >=3.7.0
|
||||
Description-Content-Type: text/x-rst
|
||||
License-File: LICENSE
|
||||
|
||||
Introduction
|
||||
============
|
||||
|
||||
.. image:: https://readthedocs.org/projects/adafruit-platformdetect/badge/?version=latest
|
||||
:target: https://circuitpython.readthedocs.io/projects/platformdetect/en/latest/
|
||||
:alt: Documentation Status
|
||||
|
||||
.. image:: https://img.shields.io/discord/327254708534116352.svg
|
||||
:target: https://adafru.it/discord
|
||||
:alt: Discord
|
||||
|
||||
.. image:: https://github.com/adafruit/Adafruit_Python_PlatformDetect/workflows/Build%20CI/badge.svg
|
||||
:target: https://github.com/adafruit/Adafruit_Python_PlatformDetect/actions
|
||||
:alt: Build Status
|
||||
|
||||
.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
|
||||
:target: https://github.com/psf/black
|
||||
:alt: Code Style: Black
|
||||
|
||||
This library provides best-guess platform detection for a range of single-board
|
||||
computers and (potentially) other platforms. It was written primarily for use
|
||||
in `Adafruit_Blinka <https://github.com/adafruit/Adafruit_Blinka>`_, but may be
|
||||
useful in other contexts.
|
||||
|
||||
Platform detection is divided into "chip" and "board" detection, with the latter
|
||||
generally dependent on the former. Platform info is gathered from:
|
||||
|
||||
- Python's `sys.platform`
|
||||
|
||||
- Various files on Linux systems:
|
||||
|
||||
- /proc/cpuinfo (for processor info, Raspberry Pi hardware revisions, etc.)
|
||||
|
||||
- /proc/device-tree/compatible (for 96Boards info)
|
||||
|
||||
- Beaglebone EEPROM board IDs
|
||||
|
||||
- Distribution-specific files such as /etc/armbian-release.
|
||||
|
||||
Dependencies
|
||||
=============
|
||||
This driver depends on:
|
||||
|
||||
* Python 3.7 or higher
|
||||
|
||||
Installing from PyPI
|
||||
=====================
|
||||
|
||||
On supported GNU/Linux systems like the Raspberry Pi, you can install the driver locally `from
|
||||
PyPI <https://pypi.org/project/Adafruit-PlatformDetect/>`_. To install for current user:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
pip3 install Adafruit-PlatformDetect
|
||||
|
||||
To install system-wide (this may be required in some cases):
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
sudo pip3 install Adafruit-PlatformDetect
|
||||
|
||||
To install in a virtual environment in your current project:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mkdir project-name && cd project-name
|
||||
python3 -m venv .env
|
||||
source .env/bin/activate
|
||||
pip3 install Adafruit-PlatformDetect
|
||||
|
||||
Usage Example
|
||||
=============
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from adafruit_platformdetect import Detector
|
||||
detector = Detector()
|
||||
print("Chip id: ", detector.chip.id)
|
||||
print("Board id: ", detector.board.id)
|
||||
|
||||
# Check for specific board models:
|
||||
print("Pi 3B+? ", detector.board.RASPBERRY_PI_3B_PLUS)
|
||||
print("BBB? ", detector.board.BEAGLEBONE_BLACK)
|
||||
print("Orange Pi PC? ", detector.board.ORANGE_PI_PC)
|
||||
print("generic Linux PC? ", detector.board.GENERIC_LINUX_PC)
|
||||
|
||||
Contributing
|
||||
============
|
||||
|
||||
Contributions are welcome! Please read our `Code of Conduct
|
||||
<https://github.com/adafruit/Adafruit_Python_PlatformDetect/blob/master/CODE_OF_CONDUCT.md>`_
|
||||
before contributing to help this project stay welcoming.
|
||||
|
||||
Documentation
|
||||
=============
|
||||
|
||||
For information on building library documentation, please check out `this guide <https://learn.adafruit.com/creating-and-sharing-a-circuitpython-library/sharing-our-docs-on-readthedocs#sphinx-5-1>`_.
|
@ -1,18 +0,0 @@
|
||||
Adafruit_PlatformDetect-3.38.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||
Adafruit_PlatformDetect-3.38.0.dist-info/LICENSE,sha256=UODDtbRIa-DtQgY5-KH28RXykQH-7mvNlUpLgdsE0PM,1086
|
||||
Adafruit_PlatformDetect-3.38.0.dist-info/METADATA,sha256=2hrfmi3u7AU9YRXV2s02uRpcVaJCSp14CtLYswUfaP0,3787
|
||||
Adafruit_PlatformDetect-3.38.0.dist-info/RECORD,,
|
||||
Adafruit_PlatformDetect-3.38.0.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
|
||||
Adafruit_PlatformDetect-3.38.0.dist-info/top_level.txt,sha256=xyO_mesQw7M0Gaxa5eePp8_s0PUwdPu7XFC00EDyXDc,24
|
||||
adafruit_platformdetect/__init__.py,sha256=qBOjDcQWJRCcQyP7u3ROv-M0BlcGYNmm-HD5NZ1tDs8,4272
|
||||
adafruit_platformdetect/__init__.pyc,,
|
||||
adafruit_platformdetect/board.py,sha256=6v1wUpCsJ4jIzv6509Ere8HZak-8LcmkYG9s6_jvO30,33602
|
||||
adafruit_platformdetect/board.pyc,,
|
||||
adafruit_platformdetect/chip.py,sha256=e_MZZTKFWjYewPpj2Xk0QwYf2-9cyE9oMsz29qZ0is4,14966
|
||||
adafruit_platformdetect/chip.pyc,,
|
||||
adafruit_platformdetect/constants/__init__.py,sha256=73ItGwyF7Z_AoaSaSMQF9ooLuEyQXOV1Zv9yqAU8G4k,163
|
||||
adafruit_platformdetect/constants/__init__.pyc,,
|
||||
adafruit_platformdetect/constants/boards.py,sha256=L3TzoGtfNxfsuXsif3u2zDYXfWPQx-7OtWhhv7n3eek,14806
|
||||
adafruit_platformdetect/constants/boards.pyc,,
|
||||
adafruit_platformdetect/constants/chips.py,sha256=lFdHPX0jWJCCX2-VIXi1Ey7y1XI6RS4nrWLCuDh5abw,1494
|
||||
adafruit_platformdetect/constants/chips.pyc,,
|
@ -1,5 +0,0 @@
|
||||
Wheel-Version: 1.0
|
||||
Generator: bdist_wheel (0.37.1)
|
||||
Root-Is-Purelib: true
|
||||
Tag: py3-none-any
|
||||
|
@ -1 +0,0 @@
|
||||
adafruit_platformdetect
|
@ -1,67 +0,0 @@
|
||||
|
||||
Introduction
|
||||
============
|
||||
|
||||
.. image:: https://readthedocs.org/projects/adafruit-pureio/badge/?version=latest
|
||||
:target: https://adafruit-pureio.readthedocs.io/en/latest/
|
||||
:alt: Documentation Status
|
||||
|
||||
.. image:: https://img.shields.io/discord/327254708534116352.svg
|
||||
:target: https://adafru.it/discord
|
||||
:alt: Discord
|
||||
|
||||
.. image:: https://github.com/adafruit/Adafruit_Python_PureIO/workflows/Build%20CI/badge.svg
|
||||
:target: https://github.com/adafruit/Adafruit_Python_PureIO/actions
|
||||
:alt: Build Status
|
||||
|
||||
.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
|
||||
:target: https://github.com/psf/black
|
||||
:alt: Code Style: Black
|
||||
|
||||
Pure python (i.e. no native extensions) access to Linux IO including I2C and SPI. Drop in replacement for smbus and spidev modules.
|
||||
|
||||
|
||||
Dependencies
|
||||
=============
|
||||
This driver depends on:
|
||||
|
||||
* Python 3.5 or higher
|
||||
|
||||
Installing from PyPI
|
||||
=====================
|
||||
|
||||
On supported GNU/Linux systems like the Raspberry Pi, you can install the driver locally `from
|
||||
PyPI <https://pypi.org/project/Adafruit-PureIO/>`_. To install for current user:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
pip3 install Adafruit-PureIO
|
||||
|
||||
To install system-wide (this may be required in some cases):
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
sudo pip3 install Adafruit-PureIO
|
||||
|
||||
To install in a virtual environment in your current project:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mkdir project-name && cd project-name
|
||||
python3 -m venv .env
|
||||
source .env/bin/activate
|
||||
pip3 install Adafruit-PureIO
|
||||
|
||||
Contributing
|
||||
============
|
||||
|
||||
Contributions are welcome! Please read our `Code of Conduct
|
||||
<https://github.com/adafruit/Adafruit_Python_PureIO/blob/master/CODE_OF_CONDUCT.md>`_
|
||||
before contributing to help this project stay welcoming.
|
||||
|
||||
Documentation
|
||||
=============
|
||||
|
||||
For information on building library documentation, please check out `this guide <https://learn.adafruit.com/creating-and-sharing-a-circuitpython-library/sharing-our-docs-on-readthedocs#sphinx-5-1>`_.
|
||||
|
||||
|
@ -1 +0,0 @@
|
||||
pip
|
@ -1,90 +0,0 @@
|
||||
Metadata-Version: 2.0
|
||||
Name: Adafruit-PureIO
|
||||
Version: 1.1.9
|
||||
Summary: Pure python (i.e. no native extensions) access to Linux IO including I2C and SPI. Drop in replacement for smbus and spidev modules.
|
||||
Home-page: https://github.com/adafruit/Adafruit_Python_PureIO
|
||||
Author: Adafruit Industries
|
||||
Author-email: circuitpython@adafruit.com
|
||||
License: MIT
|
||||
Keywords: adafruit blinka micropython pureio ioctl spi i2c python
|
||||
Platform: UNKNOWN
|
||||
Classifier: Development Status :: 3 - Alpha
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: Topic :: Software Development :: Libraries
|
||||
Classifier: Topic :: System :: Hardware
|
||||
Classifier: License :: OSI Approved :: MIT License
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3.4
|
||||
Classifier: Programming Language :: Python :: 3.5
|
||||
Classifier: Programming Language :: Python :: Implementation :: CPython
|
||||
Requires-Python: >=3.5.0
|
||||
Description-Content-Type: text/x-rst
|
||||
|
||||
|
||||
Introduction
|
||||
============
|
||||
|
||||
.. image:: https://readthedocs.org/projects/adafruit-pureio/badge/?version=latest
|
||||
:target: https://adafruit-pureio.readthedocs.io/en/latest/
|
||||
:alt: Documentation Status
|
||||
|
||||
.. image:: https://img.shields.io/discord/327254708534116352.svg
|
||||
:target: https://adafru.it/discord
|
||||
:alt: Discord
|
||||
|
||||
.. image:: https://github.com/adafruit/Adafruit_Python_PureIO/workflows/Build%20CI/badge.svg
|
||||
:target: https://github.com/adafruit/Adafruit_Python_PureIO/actions
|
||||
:alt: Build Status
|
||||
|
||||
.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
|
||||
:target: https://github.com/psf/black
|
||||
:alt: Code Style: Black
|
||||
|
||||
Pure python (i.e. no native extensions) access to Linux IO including I2C and SPI. Drop in replacement for smbus and spidev modules.
|
||||
|
||||
|
||||
Dependencies
|
||||
=============
|
||||
This driver depends on:
|
||||
|
||||
* Python 3.5 or higher
|
||||
|
||||
Installing from PyPI
|
||||
=====================
|
||||
|
||||
On supported GNU/Linux systems like the Raspberry Pi, you can install the driver locally `from
|
||||
PyPI <https://pypi.org/project/Adafruit-PureIO/>`_. To install for current user:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
pip3 install Adafruit-PureIO
|
||||
|
||||
To install system-wide (this may be required in some cases):
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
sudo pip3 install Adafruit-PureIO
|
||||
|
||||
To install in a virtual environment in your current project:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
mkdir project-name && cd project-name
|
||||
python3 -m venv .env
|
||||
source .env/bin/activate
|
||||
pip3 install Adafruit-PureIO
|
||||
|
||||
Contributing
|
||||
============
|
||||
|
||||
Contributions are welcome! Please read our `Code of Conduct
|
||||
<https://github.com/adafruit/Adafruit_Python_PureIO/blob/master/CODE_OF_CONDUCT.md>`_
|
||||
before contributing to help this project stay welcoming.
|
||||
|
||||
Documentation
|
||||
=============
|
||||
|
||||
For information on building library documentation, please check out `this guide <https://learn.adafruit.com/creating-and-sharing-a-circuitpython-library/sharing-our-docs-on-readthedocs#sphinx-5-1>`_.
|
||||
|
||||
|
@ -1,13 +0,0 @@
|
||||
Adafruit_PureIO-1.1.9.dist-info/DESCRIPTION.rst,sha256=THmGmECQTriDj1DP0ODwzEtQZzmNXr8bJqzQqO22i-Y,1947
|
||||
Adafruit_PureIO-1.1.9.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||
Adafruit_PureIO-1.1.9.dist-info/METADATA,sha256=nFHQI7EBvL2WUVCxziVtrxpa3fhQqTgu-JJDMCorUmE,2938
|
||||
Adafruit_PureIO-1.1.9.dist-info/RECORD,,
|
||||
Adafruit_PureIO-1.1.9.dist-info/WHEEL,sha256=rNo05PbNqwnXiIHFsYm0m22u4Zm6YJtugFG2THx4w3g,92
|
||||
Adafruit_PureIO-1.1.9.dist-info/metadata.json,sha256=1YTByVmfxozzvpIz4lbUEEbXTFs-6brO9xCMJMizznQ,1142
|
||||
Adafruit_PureIO-1.1.9.dist-info/top_level.txt,sha256=SmMfnx3lOkpNy0PYzumNO0ilFHQbhyQG-l1LwNGJfqQ,16
|
||||
Adafruit_PureIO/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
Adafruit_PureIO/__init__.pyc,,
|
||||
Adafruit_PureIO/smbus.py,sha256=9DzkvrQIIhhlF6p_yhTQE0Ok3SX6TC1X8BxBRQsTCmI,15796
|
||||
Adafruit_PureIO/smbus.pyc,,
|
||||
Adafruit_PureIO/spi.py,sha256=Y-ZaZhAhYebaJ395cV0pqWiNjxxflrIOmkfalV7JaQ4,12432
|
||||
Adafruit_PureIO/spi.pyc,,
|
@ -1,5 +0,0 @@
|
||||
Wheel-Version: 1.0
|
||||
Generator: bdist_wheel (0.29.0)
|
||||
Root-Is-Purelib: true
|
||||
Tag: py3-none-any
|
||||
|
@ -1 +0,0 @@
|
||||
{"classifiers": ["Development Status :: 3 - Alpha", "Intended Audience :: Developers", "Topic :: Software Development :: Libraries", "Topic :: System :: Hardware", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: Implementation :: CPython"], "description_content_type": "text/x-rst", "extensions": {"python.details": {"contacts": [{"email": "circuitpython@adafruit.com", "name": "Adafruit Industries", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "https://github.com/adafruit/Adafruit_Python_PureIO"}}}, "generator": "bdist_wheel (0.29.0)", "keywords": ["adafruit", "blinka", "micropython", "pureio", "ioctl", "spi", "i2c", "python"], "license": "MIT", "metadata_version": "2.0", "name": "Adafruit-PureIO", "requires_python": ">=3.5.0", "summary": "Pure python (i.e. no native extensions) access to Linux IO including I2C and SPI. Drop in replacement for smbus and spidev modules.", "version": "1.1.9"}
|
@ -1 +0,0 @@
|
||||
Adafruit_PureIO
|
Binary file not shown.
@ -1,397 +0,0 @@
|
||||
# The MIT License (MIT)
|
||||
#
|
||||
# Copyright (c) 2016 Tony DiCola for Adafruit Industries
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
|
||||
"""
|
||||
`Adafruit_PureIO.smbus`
|
||||
================================================================================
|
||||
|
||||
Pure python (i.e. no native extensions) access to Linux IO I2C interface that mimics the
|
||||
Python SMBus API.
|
||||
|
||||
* Author(s): Tony DiCola, Lady Ada, Melissa LeBlanc-Williams
|
||||
|
||||
Implementation Notes
|
||||
--------------------
|
||||
|
||||
**Software and Dependencies:**
|
||||
|
||||
* Linux and Python 3.5 or Higher
|
||||
|
||||
"""
|
||||
|
||||
from ctypes import c_uint8, c_uint16, c_uint32, cast, pointer, POINTER
|
||||
from ctypes import create_string_buffer, Structure
|
||||
from fcntl import ioctl
|
||||
import struct
|
||||
|
||||
# I2C C API constants (from linux kernel headers)
|
||||
I2C_M_TEN = 0x0010 # this is a ten bit chip address
|
||||
I2C_M_RD = 0x0001 # read data, from slave to master
|
||||
I2C_M_STOP = 0x8000 # if I2C_FUNC_PROTOCOL_MANGLING
|
||||
I2C_M_NOSTART = 0x4000 # if I2C_FUNC_NOSTART
|
||||
I2C_M_REV_DIR_ADDR = 0x2000 # if I2C_FUNC_PROTOCOL_MANGLING
|
||||
I2C_M_IGNORE_NAK = 0x1000 # if I2C_FUNC_PROTOCOL_MANGLING
|
||||
I2C_M_NO_RD_ACK = 0x0800 # if I2C_FUNC_PROTOCOL_MANGLING
|
||||
I2C_M_RECV_LEN = 0x0400 # length will be first received byte
|
||||
|
||||
I2C_SLAVE = 0x0703 # Use this slave address
|
||||
I2C_SLAVE_FORCE = 0x0706 # Use this slave address, even if
|
||||
# is already in use by a driver!
|
||||
I2C_TENBIT = 0x0704 # 0 for 7 bit addrs, != 0 for 10 bit
|
||||
I2C_FUNCS = 0x0705 # Get the adapter functionality mask
|
||||
I2C_RDWR = 0x0707 # Combined R/W transfer (one STOP only)
|
||||
I2C_PEC = 0x0708 # != 0 to use PEC with SMBus
|
||||
I2C_SMBUS = 0x0720 # SMBus transfer
|
||||
|
||||
|
||||
# ctypes versions of I2C structs defined by kernel.
|
||||
# Tone down pylint for the Python classes that mirror C structs.
|
||||
# pylint: disable=invalid-name,too-few-public-methods
|
||||
class i2c_msg(Structure):
|
||||
"""Linux i2c_msg struct."""
|
||||
|
||||
_fields_ = [
|
||||
("addr", c_uint16),
|
||||
("flags", c_uint16),
|
||||
("len", c_uint16),
|
||||
("buf", POINTER(c_uint8)),
|
||||
]
|
||||
|
||||
|
||||
class i2c_rdwr_ioctl_data(Structure): # pylint: disable=invalid-name
|
||||
"""Linux i2c data struct."""
|
||||
|
||||
_fields_ = [("msgs", POINTER(i2c_msg)), ("nmsgs", c_uint32)]
|
||||
|
||||
|
||||
# pylint: enable=invalid-name,too-few-public-methods
|
||||
|
||||
|
||||
def make_i2c_rdwr_data(messages):
|
||||
"""Utility function to create and return an i2c_rdwr_ioctl_data structure
|
||||
populated with a list of specified I2C messages. The messages parameter
|
||||
should be a list of tuples which represent the individual I2C messages to
|
||||
send in this transaction. Tuples should contain 4 elements: address value,
|
||||
flags value, buffer length, ctypes c_uint8 pointer to buffer.
|
||||
"""
|
||||
# Create message array and populate with provided data.
|
||||
msg_data_type = i2c_msg * len(messages)
|
||||
msg_data = msg_data_type()
|
||||
for i, message in enumerate(messages):
|
||||
msg_data[i].addr = message[0] & 0x7F
|
||||
msg_data[i].flags = message[1]
|
||||
msg_data[i].len = message[2]
|
||||
msg_data[i].buf = message[3]
|
||||
# Now build the data structure.
|
||||
data = i2c_rdwr_ioctl_data()
|
||||
data.msgs = msg_data
|
||||
data.nmsgs = len(messages)
|
||||
return data
|
||||
|
||||
|
||||
# Create an interface that mimics the Python SMBus API.
|
||||
class SMBus:
|
||||
"""I2C interface that mimics the Python SMBus API but is implemented with
|
||||
pure Python calls to ioctl and direct /dev/i2c device access.
|
||||
"""
|
||||
|
||||
def __init__(self, bus=None):
|
||||
"""Create a new smbus instance. Bus is an optional parameter that
|
||||
specifies the I2C bus number to use, for example 1 would use device
|
||||
/dev/i2c-1. If bus is not specified then the open function should be
|
||||
called to open the bus.
|
||||
"""
|
||||
self._device = None
|
||||
if bus is not None:
|
||||
self.open(bus)
|
||||
|
||||
def __del__(self):
|
||||
"""Clean up any resources used by the SMBus instance."""
|
||||
self.close()
|
||||
|
||||
def __enter__(self):
|
||||
"""Context manager enter function."""
|
||||
# Just return this object so it can be used in a with statement, like
|
||||
# with SMBus(1) as bus:
|
||||
# # do stuff!
|
||||
return self
|
||||
|
||||
def __exit__(self, exc_type, exc_val, exc_tb):
|
||||
"""Context manager exit function, ensures resources are cleaned up."""
|
||||
self.close()
|
||||
return False # Don't suppress exceptions.
|
||||
|
||||
def open(self, bus):
|
||||
"""Open the smbus interface on the specified bus."""
|
||||
# Close the device if it's already open.
|
||||
if self._device is not None:
|
||||
self.close()
|
||||
# Try to open the file for the specified bus. Must turn off buffering
|
||||
# or else Python 3 fails (see: https://bugs.python.org/issue20074)
|
||||
# pylint: disable=consider-using-with
|
||||
self._device = open("/dev/i2c-{0}".format(bus), "r+b", buffering=0)
|
||||
# pylint: enable=consider-using-with
|
||||
# TODO: Catch IOError and throw a better error message that describes
|
||||
# what's wrong (i.e. I2C may not be enabled or the bus doesn't exist).
|
||||
|
||||
def close(self):
|
||||
"""Close the smbus connection. You cannot make any other function
|
||||
calls on the bus unless open is called!"""
|
||||
if self._device is not None:
|
||||
self._device.close()
|
||||
self._device = None
|
||||
|
||||
def _select_device(self, addr):
|
||||
"""Set the address of the device to communicate with on the I2C bus."""
|
||||
ioctl(self._device.fileno(), I2C_SLAVE, addr & 0x7F)
|
||||
|
||||
def read_byte(self, addr):
|
||||
"""Read a single byte from the specified device."""
|
||||
assert (
|
||||
self._device is not None
|
||||
), "Bus must be opened before operations are made against it!"
|
||||
self._select_device(addr)
|
||||
return ord(self._device.read(1))
|
||||
|
||||
def read_bytes(self, addr, number):
|
||||
"""Read many bytes from the specified device."""
|
||||
assert (
|
||||
self._device is not None
|
||||
), "Bus must be opened before operations are made against it!"
|
||||
self._select_device(addr)
|
||||
return self._device.read(number)
|
||||
|
||||
def read_byte_data(self, addr, cmd):
|
||||
"""Read a single byte from the specified cmd register of the device."""
|
||||
assert (
|
||||
self._device is not None
|
||||
), "Bus must be opened before operations are made against it!"
|
||||
# Build ctypes values to marshall between ioctl and Python.
|
||||
reg = c_uint8(cmd)
|
||||
result = c_uint8()
|
||||
# Build ioctl request.
|
||||
request = make_i2c_rdwr_data(
|
||||
[
|
||||
(addr, 0, 1, pointer(reg)), # Write cmd register.
|
||||
(addr, I2C_M_RD, 1, pointer(result)), # Read 1 byte as result.
|
||||
]
|
||||
)
|
||||
# Make ioctl call and return result data.
|
||||
ioctl(self._device.fileno(), I2C_RDWR, request)
|
||||
return result.value
|
||||
|
||||
def read_word_data(self, addr, cmd):
|
||||
"""Read a word (2 bytes) from the specified cmd register of the device.
|
||||
Note that this will interpret data using the endianness of the processor
|
||||
running Python (typically little endian)!
|
||||
"""
|
||||
assert (
|
||||
self._device is not None
|
||||
), "Bus must be opened before operations are made against it!"
|
||||
# Build ctypes values to marshall between ioctl and Python.
|
||||
reg = c_uint8(cmd)
|
||||
result = c_uint16()
|
||||
# Build ioctl request.
|
||||
request = make_i2c_rdwr_data(
|
||||
[
|
||||
(addr, 0, 1, pointer(reg)), # Write cmd register.
|
||||
(
|
||||
addr,
|
||||
I2C_M_RD,
|
||||
2,
|
||||
cast(pointer(result), POINTER(c_uint8)),
|
||||
), # Read word (2 bytes).
|
||||
]
|
||||
)
|
||||
# Make ioctl call and return result data.
|
||||
ioctl(self._device.fileno(), I2C_RDWR, request)
|
||||
return result.value
|
||||
|
||||
def read_block_data(self, addr, cmd):
|
||||
"""Perform a block read from the specified cmd register of the device.
|
||||
The amount of data read is determined by the first byte send back by
|
||||
the device. Data is returned as a bytearray.
|
||||
"""
|
||||
# TODO: Unfortunately this will require calling the low level I2C
|
||||
# access ioctl to trigger a proper read_block_data. The amount of data
|
||||
# returned isn't known until the device starts responding so an I2C_RDWR
|
||||
# ioctl won't work.
|
||||
raise NotImplementedError()
|
||||
|
||||
def read_i2c_block_data(self, addr, cmd, length=32):
|
||||
"""Perform a read from the specified cmd register of device. Length number
|
||||
of bytes (default of 32) will be read and returned as a bytearray.
|
||||
"""
|
||||
assert (
|
||||
self._device is not None
|
||||
), "Bus must be opened before operations are made against it!"
|
||||
# Build ctypes values to marshall between ioctl and Python.
|
||||
|
||||
# convert register into bytearray
|
||||
if not isinstance(cmd, (bytes, bytearray)):
|
||||
reg = cmd # backup
|
||||
cmd = bytearray(1)
|
||||
cmd[0] = reg
|
||||
|
||||
cmdstring = create_string_buffer(len(cmd))
|
||||
for i, val in enumerate(cmd):
|
||||
cmdstring[i] = val
|
||||
|
||||
result = create_string_buffer(length)
|
||||
|
||||
# Build ioctl request.
|
||||
request = make_i2c_rdwr_data(
|
||||
[
|
||||
(
|
||||
addr,
|
||||
0,
|
||||
len(cmd),
|
||||
cast(cmdstring, POINTER(c_uint8)),
|
||||
), # Write cmd register.
|
||||
(addr, I2C_M_RD, length, cast(result, POINTER(c_uint8))), # Read data.
|
||||
]
|
||||
)
|
||||
|
||||
# Make ioctl call and return result data.
|
||||
ioctl(self._device.fileno(), I2C_RDWR, request)
|
||||
return bytearray(
|
||||
result.raw
|
||||
) # Use .raw instead of .value which will stop at a null byte!
|
||||
|
||||
def write_quick(self, addr):
|
||||
"""Write a single byte to the specified device."""
|
||||
# What a strange function, from the python-smbus source this appears to
|
||||
# just write a single byte that initiates a write to the specified device
|
||||
# address (but writes no data!). The functionality is duplicated below
|
||||
# but the actual use case for this is unknown.
|
||||
assert (
|
||||
self._device is not None
|
||||
), "Bus must be opened before operations are made against it!"
|
||||
# Build ioctl request.
|
||||
request = make_i2c_rdwr_data(
|
||||
[
|
||||
(addr, 0, 0, None),
|
||||
]
|
||||
) # Write with no data.
|
||||
# Make ioctl call and return result data.
|
||||
ioctl(self._device.fileno(), I2C_RDWR, request)
|
||||
|
||||
def write_byte(self, addr, val):
|
||||
"""Write a single byte to the specified device."""
|
||||
assert (
|
||||
self._device is not None
|
||||
), "Bus must be opened before operations are made against it!"
|
||||
self._select_device(addr)
|
||||
data = bytearray(1)
|
||||
data[0] = val & 0xFF
|
||||
self._device.write(data)
|
||||
|
||||
def write_bytes(self, addr, buf):
|
||||
"""Write many bytes to the specified device. buf is a bytearray"""
|
||||
assert (
|
||||
self._device is not None
|
||||
), "Bus must be opened before operations are made against it!"
|
||||
self._select_device(addr)
|
||||
self._device.write(buf)
|
||||
|
||||
def write_byte_data(self, addr, cmd, val):
|
||||
"""Write a byte of data to the specified cmd register of the device."""
|
||||
assert (
|
||||
self._device is not None
|
||||
), "Bus must be opened before operations are made against it!"
|
||||
# Construct a string of data to send with the command register and byte value.
|
||||
data = bytearray(2)
|
||||
data[0] = cmd & 0xFF
|
||||
data[1] = val & 0xFF
|
||||
# Send the data to the device.
|
||||
self._select_device(addr)
|
||||
self._device.write(data)
|
||||
|
||||
def write_word_data(self, addr, cmd, val):
|
||||
"""Write a word (2 bytes) of data to the specified cmd register of the
|
||||
device. Note that this will write the data in the endianness of the
|
||||
processor running Python (typically little endian)!
|
||||
"""
|
||||
assert (
|
||||
self._device is not None
|
||||
), "Bus must be opened before operations are made against it!"
|
||||
# Construct a string of data to send with the command register and word value.
|
||||
data = struct.pack("=BH", cmd & 0xFF, val & 0xFFFF)
|
||||
# Send the data to the device.
|
||||
self._select_device(addr)
|
||||
self._device.write(data)
|
||||
|
||||
def write_block_data(self, addr, cmd, vals):
|
||||
"""Write a block of data to the specified cmd register of the device.
|
||||
The amount of data to write should be the first byte inside the vals
|
||||
string/bytearray and that count of bytes of data to write should follow
|
||||
it.
|
||||
"""
|
||||
# Just use the I2C block data write to write the provided values and
|
||||
# their length as the first byte.
|
||||
data = bytearray(len(vals) + 1)
|
||||
data[0] = len(vals) & 0xFF
|
||||
data[1:] = vals[0:]
|
||||
self.write_i2c_block_data(addr, cmd, data)
|
||||
|
||||
def write_i2c_block_data(self, addr, cmd, vals):
|
||||
"""Write a buffer of data to the specified cmd register of the device."""
|
||||
assert (
|
||||
self._device is not None
|
||||
), "Bus must be opened before operations are made against it!"
|
||||
# Construct a string of data to send, including room for the command register.
|
||||
data = bytearray(len(vals) + 1)
|
||||
data[0] = cmd & 0xFF # Command register at the start.
|
||||
data[1:] = vals[0:] # Copy in the block data (ugly but necessary to ensure
|
||||
# the entire write happens in one transaction).
|
||||
# Send the data to the device.
|
||||
self._select_device(addr)
|
||||
self._device.write(data)
|
||||
|
||||
def process_call(self, addr, cmd, val):
|
||||
"""Perform a smbus process call by writing a word (2 byte) value to
|
||||
the specified register of the device, and then reading a word of response
|
||||
data (which is returned).
|
||||
"""
|
||||
assert (
|
||||
self._device is not None
|
||||
), "Bus must be opened before operations are made against it!"
|
||||
# Build ctypes values to marshall between ioctl and Python.
|
||||
data = create_string_buffer(struct.pack("=BH", cmd, val))
|
||||
result = c_uint16()
|
||||
# Build ioctl request.
|
||||
request = make_i2c_rdwr_data(
|
||||
[
|
||||
(addr, 0, 3, cast(pointer(data), POINTER(c_uint8))), # Write data.
|
||||
(
|
||||
addr,
|
||||
I2C_M_RD,
|
||||
2,
|
||||
cast(pointer(result), POINTER(c_uint8)),
|
||||
), # Read word (2 bytes).
|
||||
]
|
||||
)
|
||||
# Make ioctl call and return result data.
|
||||
ioctl(self._device.fileno(), I2C_RDWR, request)
|
||||
# Note the python-smbus code appears to have a rather serious bug and
|
||||
# does not return the result value! This is fixed below by returning it.
|
||||
return result.value
|
Binary file not shown.
@ -1,422 +0,0 @@
|
||||
# The MIT License (MIT)
|
||||
#
|
||||
# Copyright (c) 2020 Melissa LeBlanc-Williams for Adafruit Industries
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
|
||||
"""
|
||||
`Adafruit_PureIO.spi`
|
||||
================================================================================
|
||||
|
||||
Pure python (i.e. no native extensions) access to Linux IO SPI interface that is
|
||||
similar to the SpiDev API.
|
||||
|
||||
* Author(s): Melissa LeBlanc-Williams
|
||||
|
||||
Implementation Notes
|
||||
--------------------
|
||||
|
||||
**Software and Dependencies:**
|
||||
|
||||
* Linux and Python 3.5 or Higher
|
||||
|
||||
"""
|
||||
|
||||
# imports
|
||||
from ctypes import create_string_buffer, string_at, addressof
|
||||
from fcntl import ioctl
|
||||
import struct
|
||||
import platform
|
||||
import os.path
|
||||
from os import environ
|
||||
import array
|
||||
|
||||
__version__ = "0.0.0-auto.0"
|
||||
__repo__ = "https://github.com/adafruit/Adafruit_Python_PureIO.git"
|
||||
|
||||
# SPI C API constants (from linux kernel headers)
|
||||
SPI_CPHA = 0x01
|
||||
SPI_CPOL = 0x02
|
||||
SPI_CS_HIGH = 0x04
|
||||
SPI_LSB_FIRST = 0x08
|
||||
SPI_THREE_WIRE = 0x10
|
||||
SPI_LOOP = 0x20
|
||||
SPI_NO_CS = 0x40
|
||||
SPI_READY = 0x80
|
||||
SPI_TX_DUAL = 0x100
|
||||
SPI_TX_QUAD = 0x200
|
||||
SPI_RX_DUAL = 0x400
|
||||
SPI_RX_QUAD = 0x800
|
||||
|
||||
SPI_MODE_0 = 0
|
||||
SPI_MODE_1 = SPI_CPHA
|
||||
SPI_MODE_2 = SPI_CPOL
|
||||
SPI_MODE_3 = SPI_CPHA | SPI_CPOL
|
||||
|
||||
SPI_DEFAULT_CHUNK_SIZE = 4096
|
||||
|
||||
|
||||
def _ioc_encode(direction, number, structure):
|
||||
"""
|
||||
ioctl command encoding helper function
|
||||
Calculates the appropriate spidev ioctl op argument given the direction,
|
||||
command number, and argument structure in python's struct.pack format.
|
||||
Returns a tuple of the calculated op and the struct.pack format
|
||||
See Linux kernel source file /include/uapi/asm/ioctl.h
|
||||
"""
|
||||
ioc_magic = ord("k")
|
||||
ioc_nrbits = 8
|
||||
ioc_typebits = 8
|
||||
if platform.machine() == "mips":
|
||||
ioc_sizebits = 13
|
||||
else:
|
||||
ioc_sizebits = 14
|
||||
|
||||
ioc_nrshift = 0
|
||||
ioc_typeshift = ioc_nrshift + ioc_nrbits
|
||||
ioc_sizeshift = ioc_typeshift + ioc_typebits
|
||||
ioc_dirshift = ioc_sizeshift + ioc_sizebits
|
||||
|
||||
size = struct.calcsize(structure)
|
||||
|
||||
operation = (
|
||||
(direction << ioc_dirshift)
|
||||
| (ioc_magic << ioc_typeshift)
|
||||
| (number << ioc_nrshift)
|
||||
| (size << ioc_sizeshift)
|
||||
)
|
||||
|
||||
return direction, operation, structure
|
||||
|
||||
|
||||
# pylint: disable=too-many-instance-attributes, too-many-branches
|
||||
class SPI:
|
||||
"""
|
||||
This class is similar to SpiDev, but instead of opening and closing
|
||||
for each call, it is set up on initialization making it fast.
|
||||
"""
|
||||
|
||||
_IOC_TRANSFER_FORMAT = "QQIIHBBBBH"
|
||||
|
||||
if platform.machine() == "mips":
|
||||
# Direction is 3 bits
|
||||
_IOC_READ = 2
|
||||
_IOC_WRITE = 4
|
||||
else:
|
||||
# Direction is 2 bits
|
||||
_IOC_WRITE = 1
|
||||
_IOC_READ = 2
|
||||
|
||||
# _IOC_MESSAGE is a special case, so we ony need the ioctl operation
|
||||
_IOC_MESSAGE = _ioc_encode(_IOC_WRITE, 0, _IOC_TRANSFER_FORMAT)[1]
|
||||
|
||||
_IOC_RD_MODE = _ioc_encode(_IOC_READ, 1, "B")
|
||||
_IOC_WR_MODE = _ioc_encode(_IOC_WRITE, 1, "B")
|
||||
|
||||
_IOC_RD_LSB_FIRST = _ioc_encode(_IOC_READ, 2, "B")
|
||||
_IOC_WR_LSB_FIRST = _ioc_encode(_IOC_WRITE, 2, "B")
|
||||
|
||||
_IOC_RD_BITS_PER_WORD = _ioc_encode(_IOC_READ, 3, "B")
|
||||
_IOC_WR_BITS_PER_WORD = _ioc_encode(_IOC_WRITE, 3, "B")
|
||||
|
||||
_IOC_RD_MAX_SPEED_HZ = _ioc_encode(_IOC_READ, 4, "I")
|
||||
_IOC_WR_MAX_SPEED_HZ = _ioc_encode(_IOC_WRITE, 4, "I")
|
||||
|
||||
_IOC_RD_MODE32 = _ioc_encode(_IOC_READ, 5, "I")
|
||||
_IOC_WR_MODE32 = _ioc_encode(_IOC_WRITE, 5, "I")
|
||||
# pylint: disable=too-many-arguments
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
device,
|
||||
max_speed_hz=None,
|
||||
bits_per_word=None,
|
||||
phase=None,
|
||||
polarity=None,
|
||||
cs_high=None,
|
||||
lsb_first=None,
|
||||
three_wire=None,
|
||||
loop=None,
|
||||
no_cs=None,
|
||||
ready=None,
|
||||
):
|
||||
"""
|
||||
Create spidev interface object.
|
||||
"""
|
||||
if isinstance(device, tuple):
|
||||
(bus, dev) = device
|
||||
device = "/dev/spidev{:d}.{:d}".format(bus, dev)
|
||||
|
||||
if not os.path.exists(device):
|
||||
raise IOError("{} does not exist".format(device))
|
||||
|
||||
self.handle = os.open(device, os.O_RDWR)
|
||||
|
||||
self.chunk_size = SPI_DEFAULT_CHUNK_SIZE
|
||||
if environ.get("SPI_BUFSIZE") is not None:
|
||||
try:
|
||||
self.chunk_size = int(os.environ.get("SPI_BUFSIZE"))
|
||||
except ValueError:
|
||||
self.chunk_size = SPI_DEFAULT_CHUNK_SIZE
|
||||
|
||||
if max_speed_hz is not None:
|
||||
self.max_speed_hz = max_speed_hz
|
||||
|
||||
if bits_per_word is not None:
|
||||
self.bits_per_word = bits_per_word
|
||||
|
||||
if phase is not None:
|
||||
self.phase = phase
|
||||
|
||||
if polarity is not None:
|
||||
self.polarity = polarity
|
||||
|
||||
if cs_high is not None:
|
||||
self.cs_high = cs_high
|
||||
|
||||
if lsb_first is not None:
|
||||
self.lsb_first = lsb_first
|
||||
|
||||
if three_wire is not None:
|
||||
self.three_wire = three_wire
|
||||
|
||||
if loop is not None:
|
||||
self.loop = loop
|
||||
|
||||
if no_cs is not None:
|
||||
self.no_cs = no_cs
|
||||
|
||||
if ready is not None:
|
||||
self.ready = ready
|
||||
|
||||
# pylint: enable=too-many-arguments
|
||||
|
||||
def _ioctl(self, ioctl_data, data=None):
|
||||
"""
|
||||
ioctl helper function.
|
||||
|
||||
Performs an ioctl on self.handle. If the ioctl is an SPI read type
|
||||
ioctl, returns the result value.
|
||||
"""
|
||||
(direction, ioctl_bytes, structure) = ioctl_data
|
||||
if direction == SPI._IOC_READ:
|
||||
arg = array.array(structure, [0])
|
||||
ioctl(self.handle, ioctl_bytes, arg, True)
|
||||
return arg[0]
|
||||
|
||||
arg = struct.pack("=" + structure, data)
|
||||
ioctl(self.handle, ioctl_bytes, arg)
|
||||
return None
|
||||
|
||||
def _get_mode_field(self, field):
|
||||
"""Helper function to get specific spidev mode bits"""
|
||||
return bool(self._ioctl(SPI._IOC_RD_MODE) & field)
|
||||
|
||||
def _set_mode_field(self, field, value):
|
||||
"""Helper function to set a spidev mode bit"""
|
||||
mode = self._ioctl(SPI._IOC_RD_MODE)
|
||||
if value:
|
||||
mode |= field
|
||||
else:
|
||||
mode &= ~field
|
||||
self._ioctl(SPI._IOC_WR_MODE, mode)
|
||||
|
||||
@property
|
||||
def phase(self):
|
||||
"""SPI clock phase bit"""
|
||||
return self._get_mode_field(SPI_CPHA)
|
||||
|
||||
@phase.setter
|
||||
def phase(self, phase):
|
||||
self._set_mode_field(SPI_CPHA, phase)
|
||||
|
||||
@property
|
||||
def polarity(self):
|
||||
"""SPI polarity bit"""
|
||||
return self._get_mode_field(SPI_CPOL)
|
||||
|
||||
@polarity.setter
|
||||
def polarity(self, polarity):
|
||||
self._set_mode_field(SPI_CPOL, polarity)
|
||||
|
||||
@property
|
||||
def cs_high(self):
|
||||
"""SPI chip select active level"""
|
||||
return self._get_mode_field(SPI_CS_HIGH)
|
||||
|
||||
@cs_high.setter
|
||||
def cs_high(self, cs_high):
|
||||
self._set_mode_field(SPI_CS_HIGH, cs_high)
|
||||
|
||||
@property
|
||||
def lsb_first(self):
|
||||
"""Bit order of SPI word transfers"""
|
||||
return self._get_mode_field(SPI_LSB_FIRST)
|
||||
|
||||
@lsb_first.setter
|
||||
def lsb_first(self, lsb_first):
|
||||
self._set_mode_field(SPI_LSB_FIRST, lsb_first)
|
||||
|
||||
@property
|
||||
def three_wire(self):
|
||||
"""SPI 3-wire mode"""
|
||||
return self._get_mode_field(SPI_THREE_WIRE)
|
||||
|
||||
@three_wire.setter
|
||||
def three_wire(self, three_wire):
|
||||
self._set_mode_field(SPI_THREE_WIRE, three_wire)
|
||||
|
||||
@property
|
||||
def loop(self):
|
||||
"""SPI loopback mode"""
|
||||
return self._get_mode_field(SPI_LOOP)
|
||||
|
||||
@loop.setter
|
||||
def loop(self, loop):
|
||||
self._set_mode_field(SPI_LOOP, loop)
|
||||
|
||||
@property
|
||||
def no_cs(self):
|
||||
"""No chipselect. Single device on bus."""
|
||||
return self._get_mode_field(SPI_NO_CS)
|
||||
|
||||
@no_cs.setter
|
||||
def no_cs(self, no_cs):
|
||||
self._set_mode_field(SPI_NO_CS, no_cs)
|
||||
|
||||
@property
|
||||
def ready(self):
|
||||
"""Slave pulls low to pause"""
|
||||
return self._get_mode_field(SPI_READY)
|
||||
|
||||
@ready.setter
|
||||
def ready(self, ready):
|
||||
self._set_mode_field(SPI_READY, ready)
|
||||
|
||||
@property
|
||||
def max_speed_hz(self):
|
||||
"""Maximum SPI transfer speed in Hz.
|
||||
|
||||
Note that the controller cannot necessarily assign the requested
|
||||
speed.
|
||||
"""
|
||||
return self._ioctl(SPI._IOC_RD_MAX_SPEED_HZ)
|
||||
|
||||
@max_speed_hz.setter
|
||||
def max_speed_hz(self, max_speed_hz):
|
||||
self._ioctl(SPI._IOC_WR_MAX_SPEED_HZ, max_speed_hz)
|
||||
|
||||
@property
|
||||
def bits_per_word(self):
|
||||
"""Number of bits per word of SPI transfer.
|
||||
|
||||
A value of 0 is equivalent to 8 bits per word
|
||||
"""
|
||||
return self._ioctl(SPI._IOC_RD_BITS_PER_WORD)
|
||||
|
||||
@bits_per_word.setter
|
||||
def bits_per_word(self, bits_per_word):
|
||||
self._ioctl(SPI._IOC_WR_BITS_PER_WORD, bits_per_word)
|
||||
|
||||
@property
|
||||
def mode(self):
|
||||
"""Mode that SPI is currently running in"""
|
||||
return self._ioctl(SPI._IOC_RD_MODE)
|
||||
|
||||
@mode.setter
|
||||
def mode(self, mode):
|
||||
self._ioctl(SPI._IOC_WR_MODE, mode)
|
||||
|
||||
def writebytes(self, data, max_speed_hz=0, bits_per_word=0, delay=0):
|
||||
"""Perform half-duplex SPI write."""
|
||||
data = array.array("B", data).tobytes()
|
||||
# length = len(data)
|
||||
chunks = [
|
||||
data[i : i + self.chunk_size] for i in range(0, len(data), self.chunk_size)
|
||||
]
|
||||
for chunk in chunks:
|
||||
length = len(chunk)
|
||||
transmit_buffer = create_string_buffer(chunk)
|
||||
spi_ioc_transfer = struct.pack(
|
||||
SPI._IOC_TRANSFER_FORMAT,
|
||||
addressof(transmit_buffer),
|
||||
0,
|
||||
length,
|
||||
max_speed_hz,
|
||||
delay,
|
||||
bits_per_word,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
)
|
||||
try:
|
||||
ioctl(self.handle, SPI._IOC_MESSAGE, spi_ioc_transfer)
|
||||
except TimeoutError as e:
|
||||
raise Exception(
|
||||
"ioctl timeout. Please try a different SPI frequency or less data."
|
||||
) from e
|
||||
|
||||
def readbytes(self, length, max_speed_hz=0, bits_per_word=0, delay=0):
|
||||
"""Perform half-duplex SPI read as a binary string"""
|
||||
receive_buffer = create_string_buffer(length)
|
||||
spi_ioc_transfer = struct.pack(
|
||||
SPI._IOC_TRANSFER_FORMAT,
|
||||
0,
|
||||
addressof(receive_buffer),
|
||||
length,
|
||||
max_speed_hz,
|
||||
delay,
|
||||
bits_per_word,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
)
|
||||
ioctl(self.handle, SPI._IOC_MESSAGE, spi_ioc_transfer)
|
||||
return string_at(receive_buffer, length)
|
||||
|
||||
def transfer(self, data, max_speed_hz=0, bits_per_word=0, delay=0):
|
||||
"""Perform full-duplex SPI transfer"""
|
||||
data = array.array("B", data).tobytes()
|
||||
receive_data = []
|
||||
|
||||
chunks = [
|
||||
data[i : i + self.chunk_size] for i in range(0, len(data), self.chunk_size)
|
||||
]
|
||||
for chunk in chunks:
|
||||
length = len(chunk)
|
||||
receive_buffer = create_string_buffer(length)
|
||||
transmit_buffer = create_string_buffer(chunk)
|
||||
spi_ioc_transfer = struct.pack(
|
||||
SPI._IOC_TRANSFER_FORMAT,
|
||||
addressof(transmit_buffer),
|
||||
addressof(receive_buffer),
|
||||
length,
|
||||
max_speed_hz,
|
||||
delay,
|
||||
bits_per_word,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
)
|
||||
ioctl(self.handle, SPI._IOC_MESSAGE, spi_ioc_transfer)
|
||||
receive_data += string_at(receive_buffer, length)
|
||||
return receive_data
|
Binary file not shown.
Binary file not shown.
@ -1,222 +0,0 @@
|
||||
# don't import any costly modules
|
||||
import sys
|
||||
import os
|
||||
|
||||
|
||||
is_pypy = '__pypy__' in sys.builtin_module_names
|
||||
|
||||
|
||||
def warn_distutils_present():
|
||||
if 'distutils' not in sys.modules:
|
||||
return
|
||||
if is_pypy and sys.version_info < (3, 7):
|
||||
# PyPy for 3.6 unconditionally imports distutils, so bypass the warning
|
||||
# https://foss.heptapod.net/pypy/pypy/-/blob/be829135bc0d758997b3566062999ee8b23872b4/lib-python/3/site.py#L250
|
||||
return
|
||||
import warnings
|
||||
|
||||
warnings.warn(
|
||||
"Distutils was imported before Setuptools, but importing Setuptools "
|
||||
"also replaces the `distutils` module in `sys.modules`. This may lead "
|
||||
"to undesirable behaviors or errors. To avoid these issues, avoid "
|
||||
"using distutils directly, ensure that setuptools is installed in the "
|
||||
"traditional way (e.g. not an editable install), and/or make sure "
|
||||
"that setuptools is always imported before distutils."
|
||||
)
|
||||
|
||||
|
||||
def clear_distutils():
|
||||
if 'distutils' not in sys.modules:
|
||||
return
|
||||
import warnings
|
||||
|
||||
warnings.warn("Setuptools is replacing distutils.")
|
||||
mods = [
|
||||
name
|
||||
for name in sys.modules
|
||||
if name == "distutils" or name.startswith("distutils.")
|
||||
]
|
||||
for name in mods:
|
||||
del sys.modules[name]
|
||||
|
||||
|
||||
def enabled():
|
||||
"""
|
||||
Allow selection of distutils by environment variable.
|
||||
"""
|
||||
which = os.environ.get('SETUPTOOLS_USE_DISTUTILS', 'local')
|
||||
return which == 'local'
|
||||
|
||||
|
||||
def ensure_local_distutils():
|
||||
import importlib
|
||||
|
||||
clear_distutils()
|
||||
|
||||
# With the DistutilsMetaFinder in place,
|
||||
# perform an import to cause distutils to be
|
||||
# loaded from setuptools._distutils. Ref #2906.
|
||||
with shim():
|
||||
importlib.import_module('distutils')
|
||||
|
||||
# check that submodules load as expected
|
||||
core = importlib.import_module('distutils.core')
|
||||
assert '_distutils' in core.__file__, core.__file__
|
||||
assert 'setuptools._distutils.log' not in sys.modules
|
||||
|
||||
|
||||
def do_override():
|
||||
"""
|
||||
Ensure that the local copy of distutils is preferred over stdlib.
|
||||
|
||||
See https://github.com/pypa/setuptools/issues/417#issuecomment-392298401
|
||||
for more motivation.
|
||||
"""
|
||||
if enabled():
|
||||
warn_distutils_present()
|
||||
ensure_local_distutils()
|
||||
|
||||
|
||||
class _TrivialRe:
|
||||
def __init__(self, *patterns):
|
||||
self._patterns = patterns
|
||||
|
||||
def match(self, string):
|
||||
return all(pat in string for pat in self._patterns)
|
||||
|
||||
|
||||
class DistutilsMetaFinder:
|
||||
def find_spec(self, fullname, path, target=None):
|
||||
# optimization: only consider top level modules and those
|
||||
# found in the CPython test suite.
|
||||
if path is not None and not fullname.startswith('test.'):
|
||||
return
|
||||
|
||||
method_name = 'spec_for_{fullname}'.format(**locals())
|
||||
method = getattr(self, method_name, lambda: None)
|
||||
return method()
|
||||
|
||||
def spec_for_distutils(self):
|
||||
if self.is_cpython():
|
||||
return
|
||||
|
||||
import importlib
|
||||
import importlib.abc
|
||||
import importlib.util
|
||||
|
||||
try:
|
||||
mod = importlib.import_module('setuptools._distutils')
|
||||
except Exception:
|
||||
# There are a couple of cases where setuptools._distutils
|
||||
# may not be present:
|
||||
# - An older Setuptools without a local distutils is
|
||||
# taking precedence. Ref #2957.
|
||||
# - Path manipulation during sitecustomize removes
|
||||
# setuptools from the path but only after the hook
|
||||
# has been loaded. Ref #2980.
|
||||
# In either case, fall back to stdlib behavior.
|
||||
return
|
||||
|
||||
class DistutilsLoader(importlib.abc.Loader):
|
||||
def create_module(self, spec):
|
||||
mod.__name__ = 'distutils'
|
||||
return mod
|
||||
|
||||
def exec_module(self, module):
|
||||
pass
|
||||
|
||||
return importlib.util.spec_from_loader(
|
||||
'distutils', DistutilsLoader(), origin=mod.__file__
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
def is_cpython():
|
||||
"""
|
||||
Suppress supplying distutils for CPython (build and tests).
|
||||
Ref #2965 and #3007.
|
||||
"""
|
||||
return os.path.isfile('pybuilddir.txt')
|
||||
|
||||
def spec_for_pip(self):
|
||||
"""
|
||||
Ensure stdlib distutils when running under pip.
|
||||
See pypa/pip#8761 for rationale.
|
||||
"""
|
||||
if self.pip_imported_during_build():
|
||||
return
|
||||
clear_distutils()
|
||||
self.spec_for_distutils = lambda: None
|
||||
|
||||
@classmethod
|
||||
def pip_imported_during_build(cls):
|
||||
"""
|
||||
Detect if pip is being imported in a build script. Ref #2355.
|
||||
"""
|
||||
import traceback
|
||||
|
||||
return any(
|
||||
cls.frame_file_is_setup(frame) for frame, line in traceback.walk_stack(None)
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
def frame_file_is_setup(frame):
|
||||
"""
|
||||
Return True if the indicated frame suggests a setup.py file.
|
||||
"""
|
||||
# some frames may not have __file__ (#2940)
|
||||
return frame.f_globals.get('__file__', '').endswith('setup.py')
|
||||
|
||||
def spec_for_sensitive_tests(self):
|
||||
"""
|
||||
Ensure stdlib distutils when running select tests under CPython.
|
||||
|
||||
python/cpython#91169
|
||||
"""
|
||||
clear_distutils()
|
||||
self.spec_for_distutils = lambda: None
|
||||
|
||||
sensitive_tests = (
|
||||
[
|
||||
'test.test_distutils',
|
||||
'test.test_peg_generator',
|
||||
'test.test_importlib',
|
||||
]
|
||||
if sys.version_info < (3, 10)
|
||||
else [
|
||||
'test.test_distutils',
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
for name in DistutilsMetaFinder.sensitive_tests:
|
||||
setattr(
|
||||
DistutilsMetaFinder,
|
||||
f'spec_for_{name}',
|
||||
DistutilsMetaFinder.spec_for_sensitive_tests,
|
||||
)
|
||||
|
||||
|
||||
DISTUTILS_FINDER = DistutilsMetaFinder()
|
||||
|
||||
|
||||
def add_shim():
|
||||
DISTUTILS_FINDER in sys.meta_path or insert_shim()
|
||||
|
||||
|
||||
class shim:
|
||||
def __enter__(self):
|
||||
insert_shim()
|
||||
|
||||
def __exit__(self, exc, value, tb):
|
||||
remove_shim()
|
||||
|
||||
|
||||
def insert_shim():
|
||||
sys.meta_path.insert(0, DISTUTILS_FINDER)
|
||||
|
||||
|
||||
def remove_shim():
|
||||
try:
|
||||
sys.meta_path.remove(DISTUTILS_FINDER)
|
||||
except ValueError:
|
||||
pass
|
Binary file not shown.
@ -1 +0,0 @@
|
||||
__import__('_distutils_hack').do_override()
|
Binary file not shown.
@ -1,87 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
"""
|
||||
`adafruit_blinka` - Runtime utility objects for re-implementation of CircuitPython API
|
||||
======================================================================================
|
||||
|
||||
* Author(s): cefn
|
||||
"""
|
||||
|
||||
|
||||
class Enum:
|
||||
"""
|
||||
Object supporting CircuitPython-style of static symbols
|
||||
as seen with Direction.OUTPUT, Pull.UP
|
||||
"""
|
||||
|
||||
def __repr__(self):
|
||||
"""
|
||||
Assumes instance will be found as attribute of own class.
|
||||
Returns dot-subscripted path to instance
|
||||
(assuming absolute import of containing package)
|
||||
"""
|
||||
cls = type(self)
|
||||
for key in dir(cls):
|
||||
if getattr(cls, key) is self:
|
||||
return "{}.{}.{}".format(cls.__module__, cls.__qualname__, key)
|
||||
return repr(self)
|
||||
|
||||
@classmethod
|
||||
def iteritems(cls):
|
||||
"""
|
||||
Inspects attributes of the class for instances of the class
|
||||
and returns as key,value pairs mirroring dict#iteritems
|
||||
"""
|
||||
for key in dir(cls):
|
||||
val = getattr(cls, key)
|
||||
if isinstance(cls, val):
|
||||
yield (key, val)
|
||||
|
||||
|
||||
class ContextManaged:
|
||||
"""An object that automatically deinitializes hardware with a context manager."""
|
||||
|
||||
def __enter__(self):
|
||||
return self
|
||||
|
||||
def __exit__(self, exc_type, exc_value, traceback):
|
||||
self.deinit()
|
||||
|
||||
# pylint: disable=no-self-use
|
||||
def deinit(self):
|
||||
"""Free any hardware used by the object."""
|
||||
return
|
||||
|
||||
# pylint: enable=no-self-use
|
||||
|
||||
|
||||
class Lockable(ContextManaged):
|
||||
"""An object that must be locked to prevent collisions on a microcontroller resource."""
|
||||
|
||||
_locked = False
|
||||
|
||||
def try_lock(self):
|
||||
"""Attempt to grab the lock. Return True on success, False if the lock is already taken."""
|
||||
if self._locked:
|
||||
return False
|
||||
self._locked = True
|
||||
return True
|
||||
|
||||
def unlock(self):
|
||||
"""Release the lock so others may use the resource."""
|
||||
if self._locked:
|
||||
self._locked = False
|
||||
else:
|
||||
raise ValueError("Not locked")
|
||||
|
||||
|
||||
def patch_system():
|
||||
"""Patch modules that may be different due to the platform."""
|
||||
# pylint: disable=import-outside-toplevel
|
||||
import sys
|
||||
from adafruit_blinka.agnostic import time
|
||||
|
||||
# pylint: enable=import-outside-toplevel
|
||||
|
||||
sys.modules["time"] = time
|
Binary file not shown.
@ -1,28 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
"""Allows useful indirection to test Pin naming logic by switching platform in testing
|
||||
or provide bootstrapping logic for board identification where auto-detection is not
|
||||
feasible (e.g. multiple ESP8266 boards architecturally identical). Once runtime
|
||||
environment is established, can choose various routes to make available and re-export
|
||||
common modules and operations, depending on platform support
|
||||
"""
|
||||
import sys
|
||||
import adafruit_platformdetect
|
||||
|
||||
# We intentionally are patching into this namespace as module names so skip the name check.
|
||||
# pylint: disable=invalid-name
|
||||
|
||||
# We'll define board and chip id values in agnostic rather than accessing
|
||||
# detector directly elsewhere, just in case additional indirection is necessary
|
||||
# at some later point:
|
||||
|
||||
detector = adafruit_platformdetect.Detector()
|
||||
chip_id = detector.chip.id
|
||||
board_id = detector.board.id
|
||||
|
||||
implementation = sys.implementation.name
|
||||
if implementation == "micropython":
|
||||
from utime import sleep
|
||||
elif implementation in ("circuitpython", "cpython"):
|
||||
from time import sleep
|
Binary file not shown.
@ -1,75 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
"""Platform agnostic time implementation"""
|
||||
|
||||
from adafruit_blinka import agnostic
|
||||
|
||||
# We intentionally are patching into this namespace so skip the wildcard check.
|
||||
# pylint: disable=unused-wildcard-import,wildcard-import
|
||||
|
||||
if agnostic.implementation == "circuitpython":
|
||||
from time import *
|
||||
elif agnostic.implementation == "micropython":
|
||||
import utime
|
||||
from utime import sleep
|
||||
|
||||
from ucollections import namedtuple
|
||||
|
||||
_struct_time = namedtuple(
|
||||
"struct_time",
|
||||
(
|
||||
"tm_year",
|
||||
"tm_mon",
|
||||
"tm_mday",
|
||||
"tm_hour",
|
||||
"tm_min",
|
||||
"tm_sec",
|
||||
"tm_wday",
|
||||
"tm_yday",
|
||||
"tm_isdst",
|
||||
),
|
||||
)
|
||||
|
||||
# pylint: disable=too-many-arguments
|
||||
def _marshal_time(
|
||||
tm_year,
|
||||
tm_mon,
|
||||
tm_mday,
|
||||
tm_hour=0,
|
||||
tm_min=0,
|
||||
tm_sec=0,
|
||||
tm_wday=-1,
|
||||
tm_yday=-1,
|
||||
tm_isdst=-1,
|
||||
):
|
||||
"""Construct struct_time with default values."""
|
||||
_struct_time(
|
||||
tm_year,
|
||||
tm_mon,
|
||||
tm_mday,
|
||||
tm_hour,
|
||||
tm_min,
|
||||
tm_sec,
|
||||
tm_wday,
|
||||
tm_yday,
|
||||
tm_isdst,
|
||||
)
|
||||
|
||||
def struct_time(time_tuple):
|
||||
"""Create a struct_time"""
|
||||
return _marshal_time(*time_tuple)
|
||||
|
||||
# pylint: disable=invalid-name
|
||||
_total_ms = 0
|
||||
_prev_ticks_ms = utime.ticks_ms()
|
||||
|
||||
def monotonic():
|
||||
"""A monotonically increasing time in seconds. No defined start time."""
|
||||
# Assumes that monotonic is called more frequently than the wraparound of micropython's
|
||||
# utime.ticks_ms()
|
||||
global _prev_ticks_ms, _total_ms # pylint: disable=global-statement
|
||||
ticks_ms = utime.ticks_ms()
|
||||
_total_ms += utime.ticks_diff(ticks_ms, _prev_ticks_ms)
|
||||
_prev_ticks_ms = ticks_ms
|
||||
return _total_ms * 0.001
|
Binary file not shown.
Binary file not shown.
@ -1,4 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
"""Boards definition from Banana Pi"""
|
Binary file not shown.
@ -1,82 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
"""Pin definitions for the Banana Pi M2 Zero."""
|
||||
|
||||
# The Banana Pi M2 Plus uses the AllWinner H3 SoC, but pins
|
||||
# are the same as the AllWinner H3 SoC, so we import those
|
||||
from adafruit_blinka.microcontroller.allwinner.h3 import pin
|
||||
|
||||
PA12 = pin.PA12
|
||||
SDA = pin.PA12
|
||||
PA11 = pin.PA11
|
||||
SCL = pin.PA11
|
||||
PA6 = pin.PA6
|
||||
PWM1 = pin.PA6
|
||||
PA1 = pin.PA1
|
||||
UART2_RX = pin.PA1
|
||||
PA0 = pin.PA0
|
||||
UART2_TX = pin.PA0
|
||||
PA3 = pin.PA3
|
||||
UART2_CTS = pin.PA3
|
||||
PA10 = pin.PA10
|
||||
PA12 = pin.PA12
|
||||
SDA = pin.PA12
|
||||
PA11 = pin.PA11
|
||||
SCL = pin.PA11
|
||||
PA6 = pin.PA6
|
||||
PWM1 = pin.PA6
|
||||
PA1 = pin.PA1
|
||||
UART2_RX = pin.PA1
|
||||
PA0 = pin.PA0
|
||||
UART2_TX = pin.PA0
|
||||
PA3 = pin.PA3
|
||||
UART2_CTS = pin.PA3
|
||||
PA7 = pin.PA7
|
||||
PA8 = pin.PA8
|
||||
PA9 = pin.PA9
|
||||
PA10 = pin.PA10
|
||||
PA17 = pin.PA17
|
||||
PA18 = pin.PA18
|
||||
PA19 = pin.PA19
|
||||
PA20 = pin.PA20
|
||||
PA21 = pin.PA21
|
||||
PC0 = pin.PC0
|
||||
PC1 = pin.PC1
|
||||
PC2 = pin.PC2
|
||||
PC3 = pin.PC3
|
||||
PC4 = pin.PC4
|
||||
PC7 = pin.PC7
|
||||
|
||||
PA13 = pin.PA13
|
||||
SPI1_CS = pin.PA13
|
||||
PA14 = pin.PA14
|
||||
SPI1_CLK = pin.PA14
|
||||
PA2 = pin.PA2
|
||||
UART2_RTS = pin.PA2
|
||||
PA18 = pin.PA18
|
||||
TWI1_SCK = pin.PA18
|
||||
|
||||
PL2 = pin.PL2
|
||||
PL4 = pin.PL4
|
||||
|
||||
SCLK = pin.PA14
|
||||
MOSI = pin.PA15
|
||||
MISO = pin.PA16
|
||||
|
||||
PA13 = pin.PA13
|
||||
SPI1_CS = pin.PA13
|
||||
PA14 = pin.PA14
|
||||
SPI1_CLK = pin.PA14
|
||||
PA2 = pin.PA2
|
||||
UART2_RTS = pin.PA2
|
||||
PA18 = pin.PA18
|
||||
TWI1_SCK = pin.PA18
|
||||
PG6 = pin.PG6
|
||||
UART1_TX = pin.PG6
|
||||
PG7 = pin.PG7
|
||||
UART1_RX = pin.PG7
|
||||
|
||||
SCLK = pin.PA14
|
||||
MOSI = pin.PA15
|
||||
MISO = pin.PA16
|
Binary file not shown.
@ -1,82 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
"""Pin definitions for the Banana Pi M2 Zero."""
|
||||
|
||||
# The Banana Pi M2 Zero uses the AllWinner H2 SoC, but pins
|
||||
# are the same as the AllWinner H3 SoC, so we import those
|
||||
from adafruit_blinka.microcontroller.allwinner.h3 import pin
|
||||
|
||||
PA12 = pin.PA12
|
||||
SDA = pin.PA12
|
||||
PA11 = pin.PA11
|
||||
SCL = pin.PA11
|
||||
PA6 = pin.PA6
|
||||
PWM1 = pin.PA6
|
||||
PA1 = pin.PA1
|
||||
UART2_RX = pin.PA1
|
||||
PA0 = pin.PA0
|
||||
UART2_TX = pin.PA0
|
||||
PA3 = pin.PA3
|
||||
UART2_CTS = pin.PA3
|
||||
PA10 = pin.PA10
|
||||
PA12 = pin.PA12
|
||||
SDA = pin.PA12
|
||||
PA11 = pin.PA11
|
||||
SCL = pin.PA11
|
||||
PA6 = pin.PA6
|
||||
PWM1 = pin.PA6
|
||||
PA1 = pin.PA1
|
||||
UART2_RX = pin.PA1
|
||||
PA0 = pin.PA0
|
||||
UART2_TX = pin.PA0
|
||||
PA3 = pin.PA3
|
||||
UART2_CTS = pin.PA3
|
||||
PA7 = pin.PA7
|
||||
PA8 = pin.PA8
|
||||
PA9 = pin.PA9
|
||||
PA10 = pin.PA10
|
||||
PA17 = pin.PA17
|
||||
PA18 = pin.PA18
|
||||
PA19 = pin.PA19
|
||||
PA20 = pin.PA20
|
||||
PA21 = pin.PA21
|
||||
PC0 = pin.PC0
|
||||
PC1 = pin.PC1
|
||||
PC2 = pin.PC2
|
||||
PC3 = pin.PC3
|
||||
PC4 = pin.PC4
|
||||
PC7 = pin.PC7
|
||||
|
||||
PA13 = pin.PA13
|
||||
SPI1_CS = pin.PA13
|
||||
PA14 = pin.PA14
|
||||
SPI1_CLK = pin.PA14
|
||||
PA2 = pin.PA2
|
||||
UART2_RTS = pin.PA2
|
||||
PA18 = pin.PA18
|
||||
TWI1_SCK = pin.PA18
|
||||
|
||||
PL2 = pin.PL2
|
||||
PL4 = pin.PL4
|
||||
|
||||
SCLK = pin.PA14
|
||||
MOSI = pin.PA15
|
||||
MISO = pin.PA16
|
||||
|
||||
PA13 = pin.PA13
|
||||
SPI1_CS = pin.PA13
|
||||
PA14 = pin.PA14
|
||||
SPI1_CLK = pin.PA14
|
||||
PA2 = pin.PA2
|
||||
UART2_RTS = pin.PA2
|
||||
PA18 = pin.PA18
|
||||
TWI1_SCK = pin.PA18
|
||||
PG6 = pin.PG6
|
||||
UART1_TX = pin.PG6
|
||||
PG7 = pin.PG7
|
||||
UART1_RX = pin.PG7
|
||||
|
||||
SCLK = pin.PA14
|
||||
MOSI = pin.PA15
|
||||
MISO = pin.PA16
|
Binary file not shown.
@ -1,49 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
"""Pin definitions for the Banana Pi M5."""
|
||||
|
||||
from adafruit_blinka.microcontroller.amlogic.s905x3 import pin
|
||||
|
||||
for it in pin.i2cPorts:
|
||||
globals()["SCL" + str(it[0])] = it[1]
|
||||
globals()["SDA" + str(it[0])] = it[2]
|
||||
|
||||
SCL = pin.i2cPorts[0][1]
|
||||
SDA = pin.i2cPorts[0][2]
|
||||
|
||||
SCLK = pin.SPI0_SCLK
|
||||
MOSI = pin.SPI0_MOSI
|
||||
MISO = pin.SPI0_MISO
|
||||
SPI_CS0 = pin.SPI0_CS0
|
||||
|
||||
# Pinout reference:
|
||||
# https://wiki.banana-pi.org/Banana_Pi_BPI-M5#BPI-M5_40PIN_GPIO_.28CON2.29
|
||||
P3 = pin.GPIOX_17 # I2C_M2_SDA
|
||||
P5 = pin.GPIOX_18 # I2C_M2_SCL
|
||||
P7 = pin.GPIOX_5
|
||||
P8 = pin.GPIOX_12 # UART_A_TX
|
||||
P10 = pin.GPIOX_13 # UART_A_RX
|
||||
P11 = pin.GPIOX_3
|
||||
P12 = pin.GPIOA_8 # TDMB_SCLK
|
||||
P13 = pin.GPIOX_4
|
||||
P15 = pin.GPIOX_7
|
||||
P16 = pin.GPIOX_0
|
||||
P18 = pin.GPIOX_1
|
||||
P19 = pin.GPIOX_8 # PCM_DIN
|
||||
P21 = pin.GPIOX_9 # PCM_DOUT
|
||||
P22 = pin.GPIOX_2 # SDIO_D2
|
||||
P23 = pin.GPIOX_11 # PCM_CLK
|
||||
P24 = pin.GPIOX_10 # PCM_SYNC
|
||||
P26 = pin.GPIOX_16 # PWM_E
|
||||
P27 = pin.GPIOA_14 # I2C_M3_SDA
|
||||
P28 = pin.GPIOA_15 # I2C_M3_SCL
|
||||
P29 = pin.GPIOX_14 # UART_A_CTS
|
||||
P31 = pin.GPIOX_15 # UART_A_RTS
|
||||
P32 = pin.GPIOX_19 # PWM_B
|
||||
P33 = pin.GPIOX_6
|
||||
P35 = pin.GPIOAO_7 # TDMB_FS
|
||||
P36 = pin.GPIOH_5
|
||||
P37 = pin.GPIOAO_9 # I2S_MCLK
|
||||
P38 = pin.GPIOAO_10 # TDMB_DIN SPDIF_OUT
|
||||
P40 = pin.GPIOAO_4 # TDMB_DOUT
|
Binary file not shown.
@ -1,4 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
"""Boards definition from BeagleBoard"""
|
Binary file not shown.
@ -1,143 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
"""Pin definitions for the Beaglebone Black."""
|
||||
from adafruit_blinka.microcontroller.dra74x import pin
|
||||
|
||||
# initial pins, to mimic bonescript demo
|
||||
# BeagleBone Black
|
||||
# P8_1 = DGND # DGND
|
||||
# P8_2 = DGND # DGND
|
||||
P8_3 = pin.P8_3 # GPIO1_6 - GPIO_38
|
||||
P8_4 = pin.P8_4 # GPIO1_7 - GPIO_39
|
||||
P8_5 = pin.P8_5 # GPIO1_2 - GPIO_34
|
||||
P8_6 = pin.P8_6 # GPIO1_3 - GPIO_35
|
||||
P8_7 = pin.P8_7 # TIMER4 - GPIO_66
|
||||
P8_8 = pin.P8_8 # TIMER7 - GPIO_67
|
||||
P8_9 = pin.P8_9 # TIMER5 - GPIO_69
|
||||
P8_10 = pin.P8_10 # TIMER6 - GPIO_68
|
||||
P8_11 = pin.P8_11 # GPIO1_13 - GPIO_45
|
||||
P8_12 = pin.P8_12 # GPIO1_12 - GPIO_44
|
||||
P8_13 = pin.P8_13 # EHRPWM2B - GPIO_23
|
||||
P8_14 = pin.P8_14 # GPIO0_26 - GPIO_26
|
||||
P8_15 = pin.P8_15 # GPIO1_15 - GPIO_47
|
||||
P8_16 = pin.P8_16 # GPIO1_14 - GPIO_46
|
||||
P8_17 = pin.P8_17 # GPIO0_27 - GPIO_27
|
||||
P8_18 = pin.P8_18 # GPIO2_1 - GPIO_65
|
||||
P8_19 = pin.P8_19 # EHRPWM2A - GPIO_22
|
||||
P8_20 = pin.P8_20 # GPIO1_31 - GPIO_63
|
||||
P8_21 = pin.P8_21 # GPIO1_30 - GPIO_62
|
||||
P8_22 = pin.P8_22 # GPIO1_5 - GPIO_37
|
||||
P8_23 = pin.P8_23 # GPIO1_4 - GPIO_36
|
||||
P8_24 = pin.P8_24 # GPIO1_1 - GPIO_33
|
||||
P8_25 = pin.P8_25 # GPIO1_0 - GPIO_32
|
||||
P8_26 = pin.P8_26 # GPIO1_29 - GPIO_61
|
||||
P8_27 = pin.P8_27 # GPIO2_22 - GPIO_86
|
||||
P8_28 = pin.P8_28 # GPIO2_24 - GPIO_88
|
||||
P8_29 = pin.P8_29 # GPIO2_23 - GPIO_87
|
||||
P8_30 = pin.P8_30 # GPIO2_25 - GPIO_89
|
||||
P8_31 = pin.P8_31 # UART5_CTSN - GPIO_10
|
||||
P8_32 = pin.P8_32 # UART5_RTSN - GPIO_11
|
||||
P8_33 = pin.P8_33 # UART4_RTSN - GPIO_9
|
||||
P8_34 = pin.P8_34 # UART3_RTSN - GPIO_81
|
||||
P8_35 = pin.P8_35 # UART4_CTSN - GPIO_8
|
||||
P8_36 = pin.P8_36 # UART3_CTSN - GPIO_80
|
||||
P8_37 = pin.P8_37 # UART5_TXD - GPIO_78
|
||||
P8_38 = pin.P8_38 # UART5_RXD - GPIO_79
|
||||
P8_39 = pin.P8_39 # GPIO2_12 - GPIO_76
|
||||
P8_40 = pin.P8_40 # GPIO2_13 - GPIO_77
|
||||
P8_41 = pin.P8_41 # GPIO2_10 - GPIO_74
|
||||
P8_42 = pin.P8_42 # GPIO2_11 - GPIO_75
|
||||
P8_43 = pin.P8_43 # GPIO2_8 - GPIO_72
|
||||
P8_44 = pin.P8_44 # GPIO2_9 - GPIO_73
|
||||
P8_45 = pin.P8_45 # GPIO2_6 - GPIO_70
|
||||
P8_46 = pin.P8_46 # GPIO2_7 - GPIO_71
|
||||
|
||||
# P9_1 = DGND # DGND
|
||||
# P9_2 = DGND # DGND
|
||||
# P9_3 = VDD_3V3 # VDD_3V3
|
||||
# P9_4 = VDD_3V3 # VDD_3V3
|
||||
# P9_5 = VDD_5V # VDD_5V
|
||||
# P9_6 = VDD_5V # VDD_5V
|
||||
# P9_7 = SYS_5V # SYS_5V
|
||||
# P9_8 = SYS_5V # SYS_5V
|
||||
# P9_9 = PWR_BUT # PWR_BUT
|
||||
# P9_10 = SYS_RESETN # SYS_RESETn
|
||||
P9_11 = pin.P9_11 # UART4_RXD - GPIO_30
|
||||
P9_12 = pin.P9_12 # GPIO1_28 - GPIO_60
|
||||
P9_13 = pin.P9_13 # UART4_TXD - GPIO_31
|
||||
P9_14 = pin.P9_14 # EHRPWM1A - GPIO_50
|
||||
P9_15 = pin.P9_15 # GPIO1_16 - GPIO_48
|
||||
P9_16 = pin.P9_16 # EHRPWM1B - GPIO_51
|
||||
P9_17 = pin.P9_17 # I2C1_SCL - GPIO_5
|
||||
P9_18 = pin.P9_18 # I2C1_SDA - GPIO_4
|
||||
P9_19 = pin.P9_19 # I2C2_SCL - GPIO_13
|
||||
P9_20 = pin.P9_20 # I2C2_SDA - GPIO_12
|
||||
P9_21 = pin.P9_21 # UART2_TXD - GPIO_3
|
||||
P9_22 = pin.P9_22 # UART2_RXD - GPIO_2
|
||||
P9_23 = pin.P9_23 # GPIO1_17 - GPIO_49
|
||||
P9_24 = pin.P9_24 # UART1_TXD - GPIO_15
|
||||
P9_25 = pin.P9_25 # GPIO3_21 - GPIO_117
|
||||
P9_26 = pin.P9_26 # UART1_RXD - GPIO_14
|
||||
P9_27 = pin.P9_27 # GPIO3_19 - GPIO_115
|
||||
P9_28 = pin.P9_28 # SPI1_CS0 - GPIO_113
|
||||
P9_29 = pin.P9_29 # SPI1_D0 - GPIO_111
|
||||
P9_30 = pin.P9_30 # SPI1_D1 - GPIO_112
|
||||
P9_31 = pin.P9_31 # SPI1_SCLK - GPIO_110
|
||||
# P9_32 = VDD_ADC # VDD_ADC
|
||||
# P9_33 = AIN4 # AIN4
|
||||
# P9_34 = GNDA_ADC # GNDA_ADC
|
||||
# P9_35 = AIN6 # AIN6
|
||||
# P9_36 = AIN5 # AIN5
|
||||
# P9_37 = AIN2 # AIN2
|
||||
# P9_38 = AIN3 # AIN3
|
||||
# P9_39 = AIN0 # AIN0
|
||||
# P9_40 = AIN1 # AIN1
|
||||
P9_41 = pin.P9_41 # CLKOUT2 - GPIO_20
|
||||
P9_42 = pin.P9_42 # GPIO0_7 - GPIO_7
|
||||
# P9_43 = DGND # DGND
|
||||
# P9_44 = DGND # DGND
|
||||
# P9_45 = DGND # DGND
|
||||
# P9_46 = DGND # DGND
|
||||
|
||||
# common to all beagles
|
||||
LED_USR0 = pin.USR0
|
||||
LED_USR1 = pin.USR1
|
||||
LED_USR2 = pin.USR2
|
||||
LED_USR3 = pin.USR3
|
||||
LED_USR4 = pin.USR4
|
||||
|
||||
# I2C and SPI pins from:
|
||||
# src/adafruit_blinka/board/raspi_40pin.py
|
||||
# SDA = pin.SDA
|
||||
# SCL = pin.SCL
|
||||
# CE1 = pin.D7
|
||||
# CE0 = pin.D8
|
||||
# MISO = pin.D9
|
||||
# MOSI = pin.D10
|
||||
# SCLK = pin.D11
|
||||
# SCK = pin.D11
|
||||
# TXD = pin.D14
|
||||
# RXD = pin.D15
|
||||
# MISO_1 = pin.D19
|
||||
# MOSI_1 = pin.D20
|
||||
# SCLK_1 = pin.D21
|
||||
# SCK_1 = pin.D21
|
||||
|
||||
SDA = pin.I2C4_SDA # P9_19
|
||||
SCL = pin.I2C4_SCL # P9_20
|
||||
|
||||
# Pins for SPI
|
||||
#
|
||||
# To enable SPI and an additional I2C port, add the following line to /boot/uEnv.txt:
|
||||
# dtb=am5729-beagleboneai-roboticscape.dtb
|
||||
#
|
||||
# You can verify the dtb file exists by checking the /boot/dtbs/{kernel_version}/ folder
|
||||
#
|
||||
CE0 = pin.SPI1_CS0 # P9_28
|
||||
CE1 = pin.SPI1_CS1 # P9_42
|
||||
MOSI = pin.SPI1_D1 # P9_29
|
||||
MISO = pin.SPI1_D0 # P9_30
|
||||
SCLK = pin.SPI1_SCLK # P9_31
|
||||
# CircuitPython naming convention for SPI Clock
|
||||
SCK = SCLK
|
Binary file not shown.
@ -1,179 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
"""Pin definitions for the Beaglebone Black."""
|
||||
from adafruit_blinka.microcontroller.am335x import pin
|
||||
|
||||
# initial pins, to mimic bonescript demo
|
||||
# BeagleBone Black
|
||||
# P8_1 = DGND # DGND
|
||||
# P8_2 = DGND # DGND
|
||||
P8_3 = pin.P8_3 # GPIO1_6 - GPIO_38
|
||||
P8_4 = pin.P8_4 # GPIO1_7 - GPIO_39
|
||||
P8_5 = pin.P8_5 # GPIO1_2 - GPIO_34
|
||||
P8_6 = pin.P8_6 # GPIO1_3 - GPIO_35
|
||||
P8_7 = pin.P8_7 # TIMER4 - GPIO_66
|
||||
P8_8 = pin.P8_8 # TIMER7 - GPIO_67
|
||||
P8_9 = pin.P8_9 # TIMER5 - GPIO_69
|
||||
P8_10 = pin.P8_10 # TIMER6 - GPIO_68
|
||||
P8_11 = pin.P8_11 # GPIO1_13 - GPIO_45
|
||||
P8_12 = pin.P8_12 # GPIO1_12 - GPIO_44
|
||||
P8_13 = pin.P8_13 # EHRPWM2B - GPIO_23
|
||||
P8_14 = pin.P8_14 # GPIO0_26 - GPIO_26
|
||||
P8_15 = pin.P8_15 # GPIO1_15 - GPIO_47
|
||||
P8_16 = pin.P8_16 # GPIO1_14 - GPIO_46
|
||||
P8_17 = pin.P8_17 # GPIO0_27 - GPIO_27
|
||||
P8_18 = pin.P8_18 # GPIO2_1 - GPIO_65
|
||||
P8_19 = pin.P8_19 # EHRPWM2A - GPIO_22
|
||||
P8_20 = pin.P8_20 # GPIO1_31 - GPIO_63
|
||||
P8_21 = pin.P8_21 # GPIO1_30 - GPIO_62
|
||||
P8_22 = pin.P8_22 # GPIO1_5 - GPIO_37
|
||||
P8_23 = pin.P8_23 # GPIO1_4 - GPIO_36
|
||||
P8_24 = pin.P8_24 # GPIO1_1 - GPIO_33
|
||||
P8_25 = pin.P8_25 # GPIO1_0 - GPIO_32
|
||||
P8_26 = pin.P8_26 # GPIO1_29 - GPIO_61
|
||||
P8_27 = pin.P8_27 # GPIO2_22 - GPIO_86
|
||||
P8_28 = pin.P8_28 # GPIO2_24 - GPIO_88
|
||||
P8_29 = pin.P8_29 # GPIO2_23 - GPIO_87
|
||||
P8_30 = pin.P8_30 # GPIO2_25 - GPIO_89
|
||||
P8_31 = pin.P8_31 # UART5_CTSN - GPIO_10
|
||||
P8_32 = pin.P8_32 # UART5_RTSN - GPIO_11
|
||||
P8_33 = pin.P8_33 # UART4_RTSN - GPIO_9
|
||||
P8_34 = pin.P8_34 # UART3_RTSN - GPIO_81
|
||||
P8_35 = pin.P8_35 # UART4_CTSN - GPIO_8
|
||||
P8_36 = pin.P8_36 # UART3_CTSN - GPIO_80
|
||||
P8_37 = pin.P8_37 # UART5_TXD - GPIO_78
|
||||
P8_38 = pin.P8_38 # UART5_RXD - GPIO_79
|
||||
P8_39 = pin.P8_39 # GPIO2_12 - GPIO_76
|
||||
P8_40 = pin.P8_40 # GPIO2_13 - GPIO_77
|
||||
P8_41 = pin.P8_41 # GPIO2_10 - GPIO_74
|
||||
P8_42 = pin.P8_42 # GPIO2_11 - GPIO_75
|
||||
P8_43 = pin.P8_43 # GPIO2_8 - GPIO_72
|
||||
P8_44 = pin.P8_44 # GPIO2_9 - GPIO_73
|
||||
P8_45 = pin.P8_45 # GPIO2_6 - GPIO_70
|
||||
P8_46 = pin.P8_46 # GPIO2_7 - GPIO_71
|
||||
|
||||
# P9_1 = DGND # DGND
|
||||
# P9_2 = DGND # DGND
|
||||
# P9_3 = VDD_3V3 # VDD_3V3
|
||||
# P9_4 = VDD_3V3 # VDD_3V3
|
||||
# P9_5 = VDD_5V # VDD_5V
|
||||
# P9_6 = VDD_5V # VDD_5V
|
||||
# P9_7 = SYS_5V # SYS_5V
|
||||
# P9_8 = SYS_5V # SYS_5V
|
||||
# P9_9 = PWR_BUT # PWR_BUT
|
||||
# P9_10 = SYS_RESETN # SYS_RESETn
|
||||
P9_11 = pin.P9_11 # UART4_RXD - GPIO_30
|
||||
P9_12 = pin.P9_12 # GPIO1_28 - GPIO_60
|
||||
P9_13 = pin.P9_13 # UART4_TXD - GPIO_31
|
||||
P9_14 = pin.P9_14 # EHRPWM1A - GPIO_50
|
||||
P9_15 = pin.P9_15 # GPIO1_16 - GPIO_48
|
||||
P9_16 = pin.P9_16 # EHRPWM1B - GPIO_51
|
||||
P9_17 = pin.P9_17 # I2C1_SCL - GPIO_5
|
||||
P9_18 = pin.P9_18 # I2C1_SDA - GPIO_4
|
||||
P9_19 = pin.P9_19 # I2C2_SCL - GPIO_13
|
||||
P9_20 = pin.P9_20 # I2C2_SDA - GPIO_12
|
||||
P9_21 = pin.P9_21 # UART2_TXD - GPIO_3
|
||||
P9_22 = pin.P9_22 # UART2_RXD - GPIO_2
|
||||
P9_23 = pin.P9_23 # GPIO1_17 - GPIO_49
|
||||
P9_24 = pin.P9_24 # UART1_TXD - GPIO_15
|
||||
P9_25 = pin.P9_25 # GPIO3_21 - GPIO_117
|
||||
P9_26 = pin.P9_26 # UART1_RXD - GPIO_14
|
||||
P9_27 = pin.P9_27 # GPIO3_19 - GPIO_115
|
||||
P9_28 = pin.P9_28 # SPI1_CS0 - GPIO_113
|
||||
P9_29 = pin.P9_29 # SPI1_D0 - GPIO_111
|
||||
P9_30 = pin.P9_30 # SPI1_D1 - GPIO_112
|
||||
P9_31 = pin.P9_31 # SPI1_SCLK - GPIO_110
|
||||
# P9_32 = VDD_ADC # VDD_ADC
|
||||
# P9_33 = AIN4 # AIN4
|
||||
# P9_34 = GNDA_ADC # GNDA_ADC
|
||||
# P9_35 = AIN6 # AIN6
|
||||
# P9_36 = AIN5 # AIN5
|
||||
# P9_37 = AIN2 # AIN2
|
||||
# P9_38 = AIN3 # AIN3
|
||||
# P9_39 = AIN0 # AIN0
|
||||
# P9_40 = AIN1 # AIN1
|
||||
P9_41 = pin.P9_41 # CLKOUT2 - GPIO_20
|
||||
P9_42 = pin.P9_42 # GPIO0_7 - GPIO_7
|
||||
# P9_43 = DGND # DGND
|
||||
# P9_44 = DGND # DGND
|
||||
# P9_45 = DGND # DGND
|
||||
# P9_46 = DGND # DGND
|
||||
|
||||
# common to all beagles
|
||||
LED_USR0 = pin.USR0
|
||||
LED_USR1 = pin.USR1
|
||||
LED_USR2 = pin.USR2
|
||||
LED_USR3 = pin.USR3
|
||||
|
||||
# I2C and SPI pins from:
|
||||
# src/adafruit_blinka/board/raspi_40pin.py
|
||||
# SDA = pin.SDA
|
||||
# SCL = pin.SCL
|
||||
# CE1 = pin.D7
|
||||
# CE0 = pin.D8
|
||||
# MISO = pin.D9
|
||||
# MOSI = pin.D10
|
||||
# SCLK = pin.D11
|
||||
# SCK = pin.D11
|
||||
# TXD = pin.D14
|
||||
# RXD = pin.D15
|
||||
# MISO_1 = pin.D19
|
||||
# MOSI_1 = pin.D20
|
||||
# SCLK_1 = pin.D21
|
||||
# SCK_1 = pin.D21
|
||||
|
||||
SDA = pin.I2C2_SDA # P9_19
|
||||
SCL = pin.I2C2_SCL # P9_20
|
||||
|
||||
# Refer to header default pin modes
|
||||
# http://beagleboard.org/static/images/cape-headers.png
|
||||
#
|
||||
# P9_17 (SPI0_CSO => CE0) enables peripheral device
|
||||
# P9_18 (SPI0_D1 => MOSI) outputs data to peripheral device
|
||||
# P9_21 (SPIO_DO => MISO) receives data from peripheral device
|
||||
# P9_22 (SPI0_SCLK => SCLK) outputs clock signal
|
||||
#
|
||||
# Use config-pin to set pin mode for SPI pins
|
||||
# https://github.com/beagleboard/bb.org-overlays/tree/master/tools/beaglebone-universal-io
|
||||
# config-pin p9.17 spi_cs
|
||||
# config-pin p9.18 spi
|
||||
# config-pin p9.21 spi
|
||||
# config-pin p9.22 spi_sclk
|
||||
#
|
||||
CE0 = pin.SPI0_CS0 # P9_17
|
||||
MOSI = pin.SPI0_D1 # P9_18
|
||||
MISO = pin.SPI0_D0 # P9_21
|
||||
SCLK = pin.SPI0_SCLK # P9_22
|
||||
# CircuitPython naming convention for SPI Clock
|
||||
SCK = SCLK
|
||||
|
||||
# Pins for SPI1
|
||||
# refer to:
|
||||
# http://beagleboard.org/static/images/cape-headers-spi.png
|
||||
#
|
||||
# CE1 P9.28 SPI1_CS0
|
||||
# MISO_1 P9.29 SPI1_D0
|
||||
# MOSI_1 P9.30 SPI1_D1
|
||||
# SCLK_1 P9.31 SPI_SCLK
|
||||
#
|
||||
# SPI1 conflicts with HDMI Audio (McASP)
|
||||
#
|
||||
# Refer to:
|
||||
# https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays
|
||||
#
|
||||
# To Disable HDMI AUDIO, uncomment this line in /boot/uEnv.txt:
|
||||
# disable_uboot_overlay_audio=1
|
||||
#
|
||||
# Set pin modes for SPI1 with:
|
||||
#
|
||||
# config-pin p9.28 spi1_cs
|
||||
# config-pin p9.29 spi1
|
||||
# config-pin p9.30 spi1
|
||||
# config-pin p9.31 spi_sclk
|
||||
CE1 = pin.SPI1_CS0 # P9_28
|
||||
MOSI_1 = pin.SPI1_D0 # P9_29
|
||||
MISO_1 = pin.SPI1_D1 # P9_30
|
||||
SCLK_1 = pin.SPI1_SCLK # P9_31
|
||||
# CircuitPython naming convention for SPI Clock
|
||||
SCK_1 = SCLK_1
|
Binary file not shown.
@ -1,141 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
"""
|
||||
Pin definitions for the Beaglebone PocketBeagle.
|
||||
|
||||
based on
|
||||
https://github.com/beagleboard/pocketbeagle/wiki/System-Reference-Manual#figure-42-expansion-header-popular-functions---color-coded
|
||||
"""
|
||||
from adafruit_blinka.microcontroller.am335x import pin
|
||||
|
||||
# initial pins, to mimic bonescript demo
|
||||
# PocketBeagle
|
||||
# P1_1 = SYS VIN # VIN_AC
|
||||
P1_2 = pin.P1_2 # GPIO2_23 - GPIO_87
|
||||
P1_3 = pin.P1_3 # USB1_VBUS_OUT - (silkscreen: USB1 V_EN)
|
||||
P1_4 = pin.P1_4 # GPIO2_25 - GPIO_89
|
||||
# P1_5 = USB VBUS # USB1_VBUS_IN
|
||||
P1_6 = pin.P1_6 # SPI0_CS0 - GPIO_5
|
||||
# P1_7 = USB VIN # VIN-USB
|
||||
P1_8 = pin.P1_8 # SPI0_SCLK - GPIO_2
|
||||
# P1_9 = USB1 DN # USB1-DN
|
||||
P1_10 = pin.P1_10 # SPI0_D0 - GPIO_3
|
||||
# P1_11 = USB1 DP # USB1-DP
|
||||
P1_12 = pin.P1_12 # SPI0_D1 - GPIO_4
|
||||
# P1_13 = USB1 ID # USB1-ID
|
||||
# P1_14 = SYS 3.3V # VOUT-3.3V
|
||||
# P1_15 = SYS GND # GND
|
||||
# P1_16 = SYS GND # GND
|
||||
# P1_17 = AIN 1.8V REF- # VREFN
|
||||
# P1_18 = AIN 1.8V REF+ # VREFP
|
||||
P1_19 = pin.P1_19 # AIN0
|
||||
P1_20 = pin.P1_20 # GPIO0_20 - GPIO_20
|
||||
P1_21 = pin.P1_21 # AIN1
|
||||
# P1_22 = SYS GND # GND
|
||||
P1_23 = pin.P1_23 # AIN2
|
||||
# P1_22 = SYS VOUT # VOUT-5V
|
||||
P1_25 = pin.P1_25 # AIN3
|
||||
P1_26 = pin.P1_26 # I2C2_SDA - GPIO_12
|
||||
P1_27 = pin.P1_27 # AIN4
|
||||
P1_28 = pin.P1_28 # I2C2_SCL - GPIO_13
|
||||
P1_29 = pin.P1_29 # GPIO3_21 - GPIO_117
|
||||
P1_30 = pin.P1_30 # UART0_TXD - GPIO_43
|
||||
P1_31 = pin.P1_31 # GPIO3_18 - GPIO_114
|
||||
P1_32 = pin.P1_32 # UART0_RXD - GPIO_42
|
||||
P1_33 = pin.P1_33 # GPIO3_15 - GPIO_111 - EHRPWM0B (ehrpwm.0:1)
|
||||
P1_34 = pin.P1_34 # GPIO0_26 - GPIO_26
|
||||
P1_35 = pin.P1_35 # GPIO2_24 - GPIO_88
|
||||
P1_36 = pin.P1_36 # EHRPWM0A - GPIO_110 - EHRPWM0A (ehrpwm.0:0)
|
||||
|
||||
|
||||
P2_1 = pin.P2_1 # EHRPWM1A - GPIO_50
|
||||
P2_2 = pin.P2_2 # GPIO1_27 - GPIO_59
|
||||
P2_3 = pin.P2_3 # GPIO0_23 - GPIO_23
|
||||
P2_4 = pin.P2_4 # GPIO1_26 - GPIO_58
|
||||
P2_5 = pin.P2_5 # UART4_RXD - GPIO_30
|
||||
P2_6 = pin.P2_6 # GPIO1_25 - GPIO_57
|
||||
P2_7 = pin.P2_7 # UART4_TXD - GPIO_31
|
||||
P2_8 = pin.P2_8 # GPIO1_28 - GPIO_60
|
||||
P2_9 = pin.P2_9 # I2C1_SCL - GPIO_15
|
||||
P2_10 = pin.P2_10 # GPIO1_20 - GPIO_52
|
||||
P2_11 = pin.P2_11 # I2C1_SDA - GPIO_14
|
||||
# P2_12 = SYS PWR BTN # POWER_BUTTON
|
||||
# P2_13 = SYS VOUT # VOUT-5V
|
||||
# P2_14 = BAT VIN # BAT-VIN
|
||||
# P2_15 = SYS GND # GND
|
||||
# P2_16 = BAT TEMP # BAT-TEMP
|
||||
P2_17 = pin.P2_17 # GPIO2_1 - GPIO_65
|
||||
P2_18 = pin.P2_18 # GPIO1_15 - GPIO_47
|
||||
P2_19 = pin.P2_19 # GPIO0_27 - GPIO_27
|
||||
P2_20 = pin.P2_20 # GPIO2_0 - GPIO_64
|
||||
# P2_21 = SYS GND # GND
|
||||
P2_22 = pin.P2_22 # GPIO1_14 - GPIO_46
|
||||
# P2_23 = SYS 3.3V # VOUT-3.3V
|
||||
P2_24 = pin.P2_24 # GPIO1_12 - GPIO_44
|
||||
P2_25 = pin.P2_25 # SPI1_CS0 - GPIO_41
|
||||
# P2_26 = SYS NRST # RESET#
|
||||
P2_27 = pin.P2_27 # SPI1_D0 - GPIO_40
|
||||
P2_28 = pin.P2_28 # GPIO3_20 - GPIO_116
|
||||
P2_29 = pin.P2_29 # SPI1_SCLK - GPIO_7
|
||||
P2_30 = pin.P2_30 # GPIO3_17 - GPIO_113
|
||||
P2_31 = pin.P2_31 # SPI1_CS1 - GPIO_19
|
||||
P2_32 = pin.P2_32 # GPIO3_16 - GPIO_112
|
||||
P2_33 = pin.P2_33 # GPIO1_13 - GPIO_45
|
||||
P2_34 = pin.P2_34 # GPIO3_19 - GPIO_115
|
||||
P2_35 = pin.P2_35 # GPIO2_22 - GPIO_86
|
||||
P2_36 = pin.P2_36 # AIN7
|
||||
|
||||
# common to all beagles
|
||||
LED_USR0 = pin.USR0
|
||||
LED_USR1 = pin.USR1
|
||||
LED_USR2 = pin.USR2
|
||||
LED_USR3 = pin.USR3
|
||||
|
||||
##########
|
||||
# Refer to header default pin modes
|
||||
# https://raw.githubusercontent.com/wiki/beagleboard/pocketbeagle/images/PocketBeagle_pinout.png
|
||||
|
||||
# I2C1 pins
|
||||
SDA_1 = pin.I2C1_SDA # P2_11 data signal
|
||||
SCL_1 = pin.I2C1_SCL # P2_9 clock signal
|
||||
# for example compatibility we create a alias
|
||||
SDA = SDA_1
|
||||
SCL = SCL_1
|
||||
|
||||
# I2C2 pins
|
||||
SDA_2 = pin.I2C2_SDA # P1_26 data signal
|
||||
SCL_2 = pin.I2C2_SCL # P1_28 clock signal
|
||||
|
||||
# SPI0 pins
|
||||
CE0 = pin.SPI0_CS0 # P1_6 - enables peripheral device
|
||||
SCLK = pin.SPI0_SCLK # P1_12 - outputs data to peripheral device
|
||||
MOSI = pin.SPI0_D1 # P1_10 - receives data from peripheral device
|
||||
MISO = pin.SPI0_D0 # P1_8 - outputs clock signal
|
||||
# CircuitPython naming convention for SPI Clock
|
||||
SCK = SCLK
|
||||
|
||||
# SPI1 pins
|
||||
CE0_1 = pin.SPI1_CS1 # P2_31 - enables peripheral device
|
||||
SCLK_1 = pin.SPI1_SCLK # P2_25 - outputs data to peripheral device
|
||||
MOSI_1 = pin.SPI1_D1 # P2_27 - receives data from peripheral device
|
||||
MISO_1 = pin.SPI1_D0 # P2_29 - outputs clock signal
|
||||
# CircuitPython naming convention for SPI Clock
|
||||
SCK_1 = SCLK_1
|
||||
|
||||
|
||||
# UART0
|
||||
TX_0 = pin.UART0_TXD # P1_30
|
||||
RX_0 = pin.UART0_RXD # P1_32
|
||||
# create alias for most of the examples
|
||||
TX = TX_0
|
||||
RX = RX_0
|
||||
|
||||
# UART2
|
||||
# pins already in use by SPI0
|
||||
# TX_2 = pin.UART2_TXD # P1_8
|
||||
# RX_2 = pin.UART2_RXD # P1_10
|
||||
|
||||
# UART4
|
||||
TX_4 = pin.UART4_TXD # P2_7
|
||||
RX_4 = pin.UART4_RXD # P2_5
|
Binary file not shown.
@ -1,52 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
"""Pin definitions for the BeagleV StarLight."""
|
||||
|
||||
from adafruit_blinka.microcontroller.starfive.JH71x0 import pin
|
||||
|
||||
D0 = pin.D0
|
||||
D1 = pin.D1
|
||||
|
||||
SDA = pin.I2C2_SDA
|
||||
SCL = pin.I2C2_SCL
|
||||
|
||||
D4 = pin.D4
|
||||
D5 = pin.D5
|
||||
D6 = pin.D6
|
||||
|
||||
D7 = pin.D7
|
||||
CE1 = pin.D7
|
||||
D8 = pin.D8
|
||||
CE0 = pin.D8
|
||||
D9 = pin.D9
|
||||
MISO = pin.SPI_MISO
|
||||
D10 = pin.D10
|
||||
MOSI = pin.SPI_MOSI
|
||||
D11 = pin.D11
|
||||
SCLK = pin.SPI_SCLK
|
||||
SCK = pin.SPI_SCLK
|
||||
|
||||
D12 = pin.D12
|
||||
D13 = pin.D13
|
||||
|
||||
D14 = pin.D14
|
||||
TXD = pin.UART_TX
|
||||
D15 = pin.D15
|
||||
RXD = pin.UART_RX
|
||||
# create alias for most of the examples
|
||||
TX = pin.UART_TX
|
||||
RX = pin.UART_RX
|
||||
|
||||
D16 = pin.D16
|
||||
D17 = pin.D17
|
||||
D18 = pin.D18
|
||||
D19 = pin.D19
|
||||
D20 = pin.D20
|
||||
D21 = pin.D21
|
||||
D22 = pin.D22
|
||||
D23 = pin.D23
|
||||
D24 = pin.D24
|
||||
D25 = pin.D25
|
||||
D26 = pin.D26
|
||||
D27 = pin.D27
|
Binary file not shown.
@ -1,24 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
"""Pin definitions for the Binho Nova"""
|
||||
from adafruit_blinka.microcontroller.nova import pin
|
||||
|
||||
IO0 = pin.IO0
|
||||
IO1 = pin.IO1
|
||||
IO2 = pin.IO2
|
||||
IO3 = pin.IO3
|
||||
IO4 = pin.IO4
|
||||
|
||||
TX = IO4
|
||||
RX = IO3
|
||||
|
||||
SDA = pin.SDA
|
||||
SCL = pin.SCL
|
||||
|
||||
SCK = pin.SCK
|
||||
SCLK = pin.SCLK
|
||||
MOSI = pin.MOSI
|
||||
MISO = pin.MISO
|
||||
SS0 = pin.SS0
|
||||
SS1 = pin.SS1
|
Binary file not shown.
@ -1,36 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
"""Pin definitions for the Clockwork Pi (CPI3) board."""
|
||||
|
||||
from adafruit_blinka.microcontroller.allwinner.a33 import pin
|
||||
|
||||
# Clockwork Pi GPIO port (DEBUG section in datasheet)
|
||||
|
||||
# Type Pin # (ext.) Pin # (Package) Function 1 Function 2 Pin # (sysfs) Color
|
||||
# 3V0 1 blue
|
||||
# GPIO 2 PB0 UART0/2_TX PB-EINT0 32 green
|
||||
# GPIO 3 PB1 UART0/2_RX PB-EINT1 33 yellow
|
||||
# GND 4 white
|
||||
# GPIO 5 PH5 I2C1-SDA 229 red
|
||||
# GPIO 6 PH4 I2C1-SCL 228 brown
|
||||
# GND 7 black
|
||||
# GPIO 8 PH6 UART3-TX SPI0-CS 230 blue
|
||||
# GPIO 9 PH7 UART3-RX SPI0-CLK 231 green
|
||||
# GPIO 10 PH9 UART3-CTS SPI0-MISO 233 yellow
|
||||
# GPIO 11 PH8 UART3-RTS SPI0-MOSI 232 white
|
||||
# GND 12 red
|
||||
# 5V0 13 brown
|
||||
# 5V0 14 black
|
||||
|
||||
PB0 = pin.PB0
|
||||
PB1 = pin.PB1
|
||||
TX = PB0
|
||||
RX = PB1
|
||||
|
||||
SCL = pin.PH4
|
||||
SDA = pin.PH5
|
||||
|
||||
SCLK = pin.PH7
|
||||
MOSI = pin.PH8
|
||||
MISO = pin.PH9
|
Binary file not shown.
@ -1,27 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
"""Pin definitions for the Coral Dev Board."""
|
||||
|
||||
from adafruit_blinka.microcontroller.nxp_imx8m import pin
|
||||
|
||||
# Board name = RPI name [= alias] = pin name
|
||||
I2C2_SDA = D2 = SDA = pin.I2C2_SDA
|
||||
I2C2_SCL = D3 = SCL = pin.I2C2_SCL
|
||||
|
||||
PWM1 = D12 = pin.PWM1
|
||||
PWM2 = D13 = pin.PWM2
|
||||
PWM3 = D22 = pin.PWM3
|
||||
|
||||
GPIO_P13 = D27 = pin.GPIO6
|
||||
GPIO_P16 = D23 = pin.GPIO73
|
||||
GPIO_P18 = D24 = pin.GPIO138
|
||||
GPIO_P29 = D5 = pin.GPIO7
|
||||
GPIO_P31 = D6 = pin.GPIO8
|
||||
GPIO_P36 = D16 = pin.GPIO141
|
||||
GPIO_P37 = D26 = pin.GPIO77
|
||||
|
||||
ECSPI1_MISO = D9 = MISO = pin.ECSPI1_MISO
|
||||
ECSPI1_MOSI = D10 = MOSI = pin.ECSPI1_MOSI
|
||||
ECSPI1_SCLK = D11 = SCLK = SCK = pin.ECSPI1_SCLK
|
||||
ECSPI1_SS0 = D8 = SS0 = pin.ECSPI1_SS0
|
Binary file not shown.
@ -1,41 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
"""Pin definitions for the Coral Dev Board Mini."""
|
||||
|
||||
from adafruit_blinka.microcontroller.mt8167 import pin
|
||||
|
||||
# Board name = RPI name [= alias] = pin name
|
||||
GPIO22 = D4 = pin.GPIO22 # Pin 7
|
||||
GPIO9 = D17 = pin.GPIO9 # Pin 11
|
||||
GPIO36 = D18 = pin.GPIO36 # Pin 12
|
||||
GPIO10 = D27 = pin.GPIO10 # Pin 13
|
||||
GPIO0 = D23 = pin.GPIO0 # Pin 16
|
||||
GPIO1 = D24 = pin.GPIO1 # Pin 18
|
||||
GPIO7 = D25 = pin.GPIO7 # Pin 22
|
||||
GPIO8 = D7 = pin.GPIO8 # Pin 26
|
||||
GPIO37 = D19 = pin.GPIO37 # Pin 35
|
||||
GPIO13 = D16 = pin.GPIO13 # Pin 36
|
||||
GPIO45 = D26 = pin.GPIO45 # Pin 37
|
||||
GPIO38 = D20 = pin.GPIO38 # Pin 38
|
||||
GPIO39 = D21 = pin.GPIO39 # Pin 40
|
||||
|
||||
I2C1_SDA = D2 = SDA1 = pin.I2C1_SDA # Pin 3
|
||||
I2C1_SCL = D3 = SCL1 = pin.I2C1_SCL # Pin 5
|
||||
I2C2_SDA = D0 = SDA2 = pin.I2C2_SDA # Pin 27
|
||||
I2C2_SCL = D1 = SCL2 = pin.I2C2_SCL # Pin 28
|
||||
|
||||
PWM_A = D12 = pin.PWM_A # Pin 32
|
||||
PWM_B = D13 = pin.PWM_B # Pin 33
|
||||
PWM_C = D22 = pin.PWM_C # Pin 15
|
||||
|
||||
SPI_MO = D10 = MOSI = pin.SPI_MO # Pin 19
|
||||
SPI_MI = D9 = MISO = pin.SPI_MI # Pin 21
|
||||
SPI_CLK = D11 = SCLK = pin.SPI_CLK # Pin 23
|
||||
SPI_CSB = D8 = CS0 = pin.SPI_CSB # Pin 24
|
||||
|
||||
# UART currently not supported
|
||||
GPIO63 = D14 = pin.GPIO63 # UART0_TX, Pin 8
|
||||
GPIO62 = D15 = pin.GPIO62 # UART0_RX, Pin 10
|
||||
GPIO65 = D5 = pin.GPIO65 # UART1_TX, Pin 29
|
||||
GPIO64 = D6 = pin.GPIO64 # UART1_RX, Pin 31
|
Binary file not shown.
@ -1,45 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
"""Pin definitions for the Dragonboard 410c."""
|
||||
|
||||
from adafruit_blinka.microcontroller.snapdragon.apq8016 import pin
|
||||
|
||||
GPIO_A = pin.GPIO_36
|
||||
GPIO_B = pin.GPIO_12
|
||||
GPIO_C = pin.GPIO_13
|
||||
GPIO_D = pin.GPIO_69
|
||||
GPIO_E = pin.GPIO_115
|
||||
GPIO_F = pin.PM_MPP_4
|
||||
GPIO_G = pin.GPIO_24
|
||||
GPIO_H = pin.GPIO_25
|
||||
GPIO_I = pin.GPIO_35
|
||||
GPIO_J = pin.GPIO_34
|
||||
GPIO_K = pin.GPIO_28
|
||||
GPIO_L = pin.GPIO_33
|
||||
|
||||
GPIO_36 = pin.GPIO_36
|
||||
GPIO_12 = pin.GPIO_12
|
||||
GPIO_13 = pin.GPIO_13
|
||||
GPIO_69 = pin.GPIO_69
|
||||
GPIO_115 = pin.GPIO_115
|
||||
GPIO_4 = pin.PM_MPP_4
|
||||
GPIO_24 = pin.GPIO_24
|
||||
GPIO_25 = pin.GPIO_25
|
||||
GPIO_35 = pin.GPIO_35
|
||||
GPIO_34 = pin.GPIO_34
|
||||
GPIO_28 = pin.GPIO_28
|
||||
GPIO_33 = pin.GPIO_33
|
||||
|
||||
SDA = pin.I2C0_SDA
|
||||
SCL = pin.I2C0_SCL
|
||||
|
||||
I2C0_SDA = pin.I2C0_SDA
|
||||
I2C0_SCL = pin.I2C0_SCL
|
||||
I2C1_SDA = pin.I2C1_SDA
|
||||
I2C1_SCL = pin.I2C1_SCL
|
||||
|
||||
SCLK = pin.SPI0_SCLK
|
||||
MOSI = pin.SPI0_MOSI
|
||||
MISO = pin.SPI0_MISO
|
||||
SPI_CS = pin.SPI0_CS
|
Binary file not shown.
@ -1,33 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
"""Pin definitions for the Feather Huzzah."""
|
||||
|
||||
from adafruit_blinka.microcontroller.esp8266 import pin
|
||||
|
||||
# TODO need equiv of INPUT_PULL_DOWN_16 ?
|
||||
# See https://tttapa.github.io/ESP8266/Chap04%20-%20Microcontroller.html
|
||||
|
||||
GPIO0 = pin.GPIO0
|
||||
GPIO1 = pin.GPIO1
|
||||
GPIO2 = pin.GPIO2
|
||||
GPIO3 = pin.GPIO3
|
||||
GPIO4 = pin.GPIO4
|
||||
GPIO5 = pin.GPIO5
|
||||
GPIO12 = pin.GPIO12
|
||||
GPIO13 = pin.GPIO13
|
||||
GPIO14 = pin.GPIO14
|
||||
GPIO15 = pin.GPIO15
|
||||
GPIO16 = pin.GPIO16
|
||||
|
||||
ADC = pin.TOUT
|
||||
|
||||
MISO = GPIO12
|
||||
MOSI = GPIO13
|
||||
SCK = GPIO14
|
||||
|
||||
RX = GPIO3
|
||||
TX = GPIO1
|
||||
|
||||
SDA = GPIO4
|
||||
SCL = GPIO5
|
Binary file not shown.
@ -1,50 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
"""
|
||||
Pin definitions for the Feather RP2040 with u2if firmware.
|
||||
|
||||
Adafruit CircuitPython 6.2.0 on 2021-04-05; Adafruit Feather RP2040 with rp2040
|
||||
>>> import board
|
||||
>>> board.
|
||||
A0 A1 A2 A3
|
||||
D0 D1 D10 D11
|
||||
D12 D13 D24 D25
|
||||
D4 D5 D6 D9
|
||||
I2C LED MISO MOSI
|
||||
NEOPIXEL RX SCK SCL
|
||||
SDA SPI TX UART
|
||||
"""
|
||||
|
||||
from adafruit_blinka.microcontroller.rp2040_u2if import pin
|
||||
|
||||
D0 = pin.GP0
|
||||
D1 = pin.GP1
|
||||
D4 = pin.GP6
|
||||
D5 = pin.GP7
|
||||
D6 = pin.GP8
|
||||
D9 = pin.GP9
|
||||
D10 = pin.GP10
|
||||
D11 = pin.GP11
|
||||
D12 = pin.GP12
|
||||
D13 = pin.GP13
|
||||
D24 = pin.GP24
|
||||
D25 = pin.GP25
|
||||
|
||||
A0 = pin.GP26
|
||||
A1 = pin.GP27
|
||||
A2 = pin.GP28
|
||||
# A3 = pin.GP29 # not currently supported in firmware
|
||||
|
||||
NEOPIXEL = pin.GP16
|
||||
|
||||
SCL = pin.GP3
|
||||
SDA = pin.GP2
|
||||
|
||||
SCLK = SCK = pin.GP18
|
||||
MOSI = pin.GP19
|
||||
MISO = pin.GP20
|
||||
|
||||
# access u2if via pin instance to open for specifc VID/PID
|
||||
# pylint:disable = protected-access
|
||||
pin.GP0._u2if_open_hid(0x239A, 0x00F1)
|
Binary file not shown.
@ -1,49 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
"""Pin definitions for the FTDI FT2232H"""
|
||||
from adafruit_blinka.microcontroller.ftdi_mpsse.ft2232h import pin
|
||||
|
||||
# MPSSE A
|
||||
AD4 = pin.AD4
|
||||
AD5 = pin.AD5
|
||||
AD6 = pin.AD6
|
||||
AD7 = pin.AD7
|
||||
AC0 = pin.AC0
|
||||
AC1 = pin.AC1
|
||||
AC2 = pin.AC2
|
||||
AC3 = pin.AC3
|
||||
AC4 = pin.AC4
|
||||
AC5 = pin.AC5
|
||||
AC6 = pin.AC6
|
||||
AC7 = pin.AC7
|
||||
|
||||
SDA0 = pin.SDA0
|
||||
SCL0 = pin.SCL0
|
||||
|
||||
SCK0 = pin.SCK0
|
||||
SCLK0 = pin.SCLK0
|
||||
MOSI0 = pin.MOSI0
|
||||
MISO0 = pin.MISO0
|
||||
|
||||
# MPSSE B
|
||||
BD4 = pin.BD4
|
||||
BD5 = pin.BD5
|
||||
BD6 = pin.BD6
|
||||
BD7 = pin.BD7
|
||||
BC0 = pin.BC0
|
||||
BC1 = pin.BC1
|
||||
BC2 = pin.BC2
|
||||
BC3 = pin.BC3
|
||||
BC4 = pin.BC4
|
||||
BC5 = pin.BC5
|
||||
BC6 = pin.BC6
|
||||
BC7 = pin.BC7
|
||||
|
||||
SDA1 = pin.SDA1
|
||||
SCL1 = pin.SCL1
|
||||
|
||||
SCK1 = pin.SCK1
|
||||
SCLK1 = pin.SCLK1
|
||||
MOSI1 = pin.MOSI1
|
||||
MISO1 = pin.MISO1
|
Binary file not shown.
@ -1,26 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
"""Pin definitions for the FTDI FT232H"""
|
||||
from adafruit_blinka.microcontroller.ftdi_mpsse.ft232h import pin
|
||||
|
||||
D4 = pin.D4
|
||||
D5 = pin.D5
|
||||
D6 = pin.D6
|
||||
D7 = pin.D7
|
||||
C0 = pin.C0
|
||||
C1 = pin.C1
|
||||
C2 = pin.C2
|
||||
C3 = pin.C3
|
||||
C4 = pin.C4
|
||||
C5 = pin.C5
|
||||
C6 = pin.C6
|
||||
C7 = pin.C7
|
||||
|
||||
SDA = pin.SDA
|
||||
SCL = pin.SCL
|
||||
|
||||
SCK = pin.SCK
|
||||
SCLK = pin.SCLK
|
||||
MOSI = pin.MOSI
|
||||
MISO = pin.MISO
|
Binary file not shown.
@ -1,45 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
"""Pin definitions for the Giant Board"""
|
||||
from adafruit_blinka.microcontroller.sama5 import pin
|
||||
|
||||
PD23 = pin.PD23
|
||||
AD4 = pin.PD23
|
||||
PD21 = pin.PD21
|
||||
AD2 = pin.PD21
|
||||
PD20 = pin.PD20
|
||||
AD1 = pin.PD20
|
||||
PD24 = pin.PD24
|
||||
AD5 = pin.PD24
|
||||
PD22 = pin.PD22
|
||||
AD3 = pin.PD22
|
||||
PD19 = pin.PD19
|
||||
AD0 = pin.PD19
|
||||
PA14 = pin.PA14
|
||||
SCK = pin.PA14
|
||||
SCLK = pin.PA14
|
||||
PA15 = pin.PA15
|
||||
MOSI = pin.PA15
|
||||
PA16 = pin.PA16
|
||||
MISO = pin.PA16
|
||||
PD2 = pin.PD2
|
||||
RX = pin.PD2
|
||||
PD3 = pin.PD3
|
||||
TX = pin.PD3
|
||||
|
||||
PD13 = pin.PD13
|
||||
PD31 = pin.PD31
|
||||
PB0 = pin.PB0
|
||||
PWM1 = pin.PB0
|
||||
PB7 = pin.PB7
|
||||
PWM3 = pin.PB7
|
||||
PB1 = pin.PB1
|
||||
PWML1 = pin.PB1
|
||||
PB5 = pin.PB5
|
||||
PWM2 = pin.PB5
|
||||
PB3 = pin.PB3
|
||||
PC0 = pin.PC0
|
||||
SCL = pin.PC0
|
||||
PB31 = pin.PB31
|
||||
SDA = pin.PB31
|
Binary file not shown.
@ -1,97 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
"""Pin definitions for the GreatFET One"""
|
||||
from adafruit_blinka.microcontroller.nxp_lpc4330 import pin
|
||||
|
||||
J1_P3 = pin.J1_P3
|
||||
J1_P4 = pin.J1_P4
|
||||
J1_P5 = pin.J1_P5
|
||||
J1_P6 = pin.J1_P6
|
||||
J1_P7 = pin.J1_P7
|
||||
J1_P8 = pin.J1_P8
|
||||
J1_P9 = pin.J1_P9
|
||||
J1_P10 = pin.J1_P10
|
||||
J1_P12 = pin.J1_P12
|
||||
J1_P13 = pin.J1_P13
|
||||
J1_P14 = pin.J1_P14
|
||||
J1_P15 = pin.J1_P15
|
||||
J1_P16 = pin.J1_P16
|
||||
J1_P17 = pin.J1_P17
|
||||
J1_P18 = pin.J1_P18
|
||||
J1_P19 = pin.J1_P19
|
||||
J1_P20 = pin.J1_P20
|
||||
J1_P21 = pin.J1_P21
|
||||
J1_P22 = pin.J1_P22
|
||||
J1_P23 = pin.J1_P23
|
||||
J1_P24 = pin.J1_P24
|
||||
J1_P25 = pin.J1_P25
|
||||
J1_P26 = pin.J1_P26
|
||||
J1_P27 = pin.J1_P27
|
||||
J1_P28 = pin.J1_P28
|
||||
J1_P29 = pin.J1_P29
|
||||
J1_P30 = pin.J1_P30
|
||||
J1_P31 = pin.J1_P31
|
||||
J1_P32 = pin.J1_P32
|
||||
J1_P33 = pin.J1_P33
|
||||
J1_P34 = pin.J1_P34
|
||||
J1_P35 = pin.J1_P35
|
||||
J1_P37 = pin.J1_P37
|
||||
J1_P39 = pin.J1_P39
|
||||
J1_P40 = pin.J1_P40
|
||||
|
||||
# J2 Header Pins
|
||||
J2_P3 = pin.J2_P3
|
||||
J2_P4 = pin.J2_P4
|
||||
J2_P5 = pin.J2_P5
|
||||
J2_P6 = pin.J2_P6
|
||||
J2_P7 = pin.J2_P7
|
||||
J2_P8 = pin.J2_P8
|
||||
J2_P9 = pin.J2_P9
|
||||
J2_P10 = pin.J2_P10
|
||||
J2_P13 = pin.J2_P13
|
||||
J2_P14 = pin.J2_P14
|
||||
J2_P15 = pin.J2_P15
|
||||
J2_P16 = pin.J2_P16
|
||||
J2_P18 = pin.J2_P18
|
||||
J2_P19 = pin.J2_P19
|
||||
J2_P20 = pin.J2_P20
|
||||
J2_P22 = pin.J2_P22
|
||||
J2_P23 = pin.J2_P23
|
||||
J2_P24 = pin.J2_P24
|
||||
J2_P25 = pin.J2_P25
|
||||
J2_P27 = pin.J2_P27
|
||||
J2_P28 = pin.J2_P28
|
||||
J2_P29 = pin.J2_P29
|
||||
J2_P30 = pin.J2_P30
|
||||
J2_P31 = pin.J2_P31
|
||||
J2_P33 = pin.J2_P33
|
||||
J2_P34 = pin.J2_P34
|
||||
J2_P35 = pin.J2_P35
|
||||
J2_P36 = pin.J2_P36
|
||||
J2_P37 = pin.J2_P37
|
||||
J2_P38 = pin.J2_P38
|
||||
|
||||
# Bonus Row Pins
|
||||
J7_P2 = pin.J7_P2
|
||||
J7_P3 = pin.J7_P3
|
||||
J7_P6 = pin.J7_P6
|
||||
J7_P7 = pin.J7_P7
|
||||
J7_P8 = pin.J7_P8
|
||||
J7_P13 = pin.J7_P13
|
||||
J7_P14 = pin.J7_P14
|
||||
J7_P15 = pin.J7_P15
|
||||
J7_P16 = pin.J7_P16
|
||||
J7_P17 = pin.J7_P17
|
||||
J7_P18 = pin.J7_P18
|
||||
|
||||
SDA = pin.SDA
|
||||
SCL = pin.SCL
|
||||
|
||||
SCK = pin.SCK
|
||||
SCLK = SCK
|
||||
MOSI = pin.MOSI
|
||||
MISO = pin.MISO
|
||||
|
||||
TX = pin.TX
|
||||
RX = pin.RX
|
Binary file not shown.
@ -1,4 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
"""Boards definition from HardKernel"""
|
Binary file not shown.
@ -1,83 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
"""Pin definitions for the Odroid C2."""
|
||||
|
||||
from adafruit_blinka.microcontroller.amlogic.s905 import pin
|
||||
|
||||
GPIOX_0 = pin.GPIO228
|
||||
GPIOX_1 = pin.GPIO229
|
||||
GPIOX_2 = pin.GPIO230
|
||||
GPIOX_3 = pin.GPIO231
|
||||
GPIOX_4 = pin.GPIO232
|
||||
GPIOX_5 = pin.GPIO233
|
||||
GPIOX_6 = pin.GPIO234
|
||||
GPIOX_7 = pin.GPIO235
|
||||
GPIOX_8 = pin.GPIO236
|
||||
GPIOX_9 = pin.GPIO237
|
||||
GPIOX_10 = pin.GPIO238
|
||||
GPIOX_11 = pin.GPIO239
|
||||
GPIOX_12 = pin.GPIO240
|
||||
GPIOX_13 = pin.GPIO241
|
||||
GPIOX_19 = pin.GPIO247
|
||||
GPIOX_21 = pin.GPIO249
|
||||
|
||||
GPIODV_24 = pin.GPIO205
|
||||
GPIODV_25 = pin.GPIO206
|
||||
GPIODV_26 = pin.GPIO207
|
||||
GPIODV_27 = pin.GPIO208
|
||||
GPIODV_28 = pin.GPIO209
|
||||
GPIODV_29 = pin.GPIO210
|
||||
|
||||
GPIOY_0 = pin.GPIO211
|
||||
GPIOY_1 = pin.GPIO212
|
||||
GPIOY_3 = pin.GPIO214
|
||||
GPIOY_7 = pin.GPIO218
|
||||
GPIOY_8 = pin.GPIO219
|
||||
GPIOY_12 = pin.GPIO223
|
||||
GPIOY_13 = pin.GPIO224
|
||||
GPIOY_14 = pin.GPIO225
|
||||
|
||||
GPIOA0_0 = pin.GPIO122
|
||||
GPIOA0_1 = pin.GPIO123
|
||||
GPIOA0_2 = pin.GPIO124
|
||||
GPIOA0_3 = pin.GPIO125
|
||||
GPIOA0_4 = pin.GPIO126
|
||||
GPIOA0_5 = pin.GPIO127
|
||||
GPIOA0_6 = pin.GPIO128
|
||||
GPIOA0_7 = pin.GPIO129
|
||||
GPIOA0_8 = pin.GPIO130
|
||||
GPIOA0_9 = pin.GPIO131
|
||||
GPIOA0_10 = pin.GPIO132
|
||||
GPIOA0_11 = pin.GPIO133
|
||||
GPIOA0_12 = pin.GPIO134
|
||||
GPIOA0_13 = pin.GPIO135
|
||||
|
||||
SDA = pin.I2C0_SDA
|
||||
SCL = pin.I2C0_SCL
|
||||
|
||||
SCLK = pin.SPI0_SCLK
|
||||
MOSI = pin.SPI0_MOSI
|
||||
MISO = pin.SPI0_MISO
|
||||
SPI_CS0 = pin.GPIO229
|
||||
SPI_CS1 = pin.GPIO225
|
||||
|
||||
D0 = GPIOX_19
|
||||
D1 = GPIOX_10
|
||||
D2 = GPIOX_11
|
||||
D3 = GPIOX_9
|
||||
D4 = GPIOX_8
|
||||
D5 = GPIOX_5
|
||||
D6 = GPIOX_3
|
||||
D7 = GPIOX_21
|
||||
D10 = GPIOX_1
|
||||
D11 = GPIOY_14
|
||||
D12 = GPIOX_7
|
||||
D13 = GPIOX_4
|
||||
D14 = GPIOX_2
|
||||
D21 = GPIOX_0
|
||||
D22 = GPIOY_8
|
||||
D23 = GPIOX_6
|
||||
D24 = GPIOY_3
|
||||
D26 = GPIOY_13
|
||||
D27 = GPIOY_7
|
Binary file not shown.
@ -1,54 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
"""Pin definitions for the Odroid C4."""
|
||||
|
||||
from adafruit_blinka.microcontroller.amlogic.s905x3 import pin
|
||||
|
||||
for it in pin.i2cPorts:
|
||||
globals()["SCL" + str(it[0])] = it[1]
|
||||
globals()["SDA" + str(it[0])] = it[2]
|
||||
|
||||
SCL = pin.i2cPorts[0][1]
|
||||
SDA = pin.i2cPorts[0][2]
|
||||
|
||||
SCLK = pin.SPI0_SCLK
|
||||
MOSI = pin.SPI0_MOSI
|
||||
MISO = pin.SPI0_MISO
|
||||
SPI_CS0 = pin.SPI0_CS0
|
||||
|
||||
"""J2: physical pin number"""
|
||||
|
||||
D3 = pin.GPIOX_17
|
||||
D5 = pin.GPIOX_18
|
||||
D7 = pin.GPIOX_5
|
||||
D8 = pin.GPIOX_12
|
||||
D10 = pin.GPIOX_13
|
||||
D11 = pin.GPIOX_3
|
||||
D12 = pin.GPIOX_16
|
||||
D13 = pin.GPIOX_4
|
||||
D15 = pin.GPIOX_7
|
||||
D16 = pin.GPIOX_0
|
||||
D18 = pin.GPIOX_1
|
||||
D19 = pin.GPIOX_8
|
||||
D21 = pin.GPIOX_9
|
||||
D22 = pin.GPIOX_2
|
||||
D23 = pin.GPIOX_11
|
||||
D24 = pin.GPIOX_10
|
||||
D26 = pin.GPIOH_6
|
||||
D27 = pin.GPIOA_14
|
||||
D28 = pin.GPIOA_15
|
||||
D29 = pin.GPIOX_14
|
||||
D31 = pin.GPIOX_15
|
||||
D32 = pin.GPIOH_7
|
||||
D33 = pin.GPIOX_6
|
||||
D35 = pin.GPIOX_19
|
||||
D36 = pin.GPIOH_5
|
||||
|
||||
"""J7: physical pin number"""
|
||||
|
||||
D42 = pin.GPIOAO_10
|
||||
D44 = pin.GPIOAO_9
|
||||
D45 = pin.GPIOAO_7
|
||||
D46 = pin.GPIOAO_8
|
||||
D47 = pin.GPIOAO_4
|
Binary file not shown.
@ -1,53 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2022 MrPanc0 for Adafruit Industries
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
"""Pin definitions for the Odroid M1."""
|
||||
|
||||
from adafruit_blinka.microcontroller.rockchip.rk3568b2 import pin
|
||||
|
||||
D8 = pin.GPIO3D_6
|
||||
D10 = pin.GPIO3D_7
|
||||
D12 = pin.GPIO3D_0
|
||||
D16 = pin.GPIO3C_6
|
||||
D18 = pin.GPIO3D_7
|
||||
D22 = pin.GPIO3D_1
|
||||
D24 = pin.GPIO2D_2
|
||||
D26 = pin.GPIO3D_2
|
||||
D28 = pin.GPIO0B_3
|
||||
D32 = pin.GPIO3D_3
|
||||
D36 = pin.GPIO3D_4
|
||||
D3 = pin.GPIO3B_6
|
||||
D5 = pin.GPIO3B_5
|
||||
D7 = pin.GPIO0B_6
|
||||
D11 = pin.GPIO0C_0
|
||||
D13 = pin.GPIO0C_1
|
||||
D15 = pin.GPIO3B_2
|
||||
D19 = pin.GPIO2D_1
|
||||
D21 = pin.GPIO2D_0
|
||||
D23 = pin.GPIO2D_3
|
||||
D27 = pin.GPIO0B_4
|
||||
D29 = pin.GPIO4C_1
|
||||
D31 = pin.GPIO4B_6
|
||||
D33 = pin.GPIO0B_5
|
||||
D35 = pin.GPIO3D_5
|
||||
|
||||
SDA = D27
|
||||
SCL = D28
|
||||
|
||||
SCLK = D23
|
||||
MOSI = D19
|
||||
MISO = D21
|
||||
CS = D24
|
||||
|
||||
UART0_TX = D13
|
||||
UART0_RX = D11
|
||||
UART1_TX = D8
|
||||
UART1_RX = D10
|
||||
|
||||
UART1_CTS = D29
|
||||
UART1_RTS = D31
|
||||
|
||||
I2C0_SDA = D3
|
||||
I2C0_SCL = D5
|
||||
I2C1_SDA = D27
|
||||
I2C1_SCL = D28
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user