[RPI] Enable rpi-eeprom auto update and fixes for the sound system

This commit is contained in:
j1nx 2023-08-26 18:36:44 +00:00
parent 1df2222ab7
commit cf6c4c7020
3050 changed files with 10 additions and 402414 deletions

View File

@ -1,3 +0,0 @@
[global]
#only-binary=:all:
extra-index-url=https://www.piwheels.org/simple

View File

@ -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
}
}
}

View File

@ -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.

View File

@ -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)

View File

@ -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.

View File

@ -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())

View File

@ -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())

View File

@ -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())

View File

@ -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())

View File

@ -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

View File

@ -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")

View File

@ -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()

View File

@ -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)

View File

@ -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)

View File

@ -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.

View File

@ -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.

View File

@ -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,,

View File

@ -1,5 +0,0 @@
Wheel-Version: 1.0
Generator: bdist_wheel (0.37.1)
Root-Is-Purelib: true
Tag: py3-none-any

View File

@ -1,16 +0,0 @@
adafruit_blinka
analogio
bitbangio
board
busio
digitalio
keypad
microcontroller
micropython
micropython-stubs
neopixel_write
onewireio
pulseio
pwmio
rainbowio
usb_hid

View File

@ -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.

View File

@ -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>`_.

View File

@ -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,,

View File

@ -1,5 +0,0 @@
Wheel-Version: 1.0
Generator: bdist_wheel (0.37.1)
Root-Is-Purelib: true
Tag: py3-none-any

View File

@ -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>`_.

View File

@ -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>`_.

View File

@ -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,,

View File

@ -1,5 +0,0 @@
Wheel-Version: 1.0
Generator: bdist_wheel (0.29.0)
Root-Is-Purelib: true
Tag: py3-none-any

View File

@ -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"}

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -1,4 +0,0 @@
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
#
# SPDX-License-Identifier: MIT
"""Boards definition from Banana Pi"""

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -1,4 +0,0 @@
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
#
# SPDX-License-Identifier: MIT
"""Boards definition from BeagleBoard"""

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -1,4 +0,0 @@
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
#
# SPDX-License-Identifier: MIT
"""Boards definition from HardKernel"""

View File

@ -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

View File

@ -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

View File

@ -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