Skip to content

Commit 35893fd

Browse files
Staging (#370)
* Bump version: 1.2.1 → 1.2.2 * Eeprom default (#364) * separating key dataclass in progress * replaced default bin image #363 * key module datalcass created #363 * modified default bin so all string type message are empty by default * fixed key proto file * Bump version: 1.2.2 → 1.2.3 * Bump version: 1.2.2 → 1.2.3 * Dev hardware test (#368) * name of requirements.txt changed, digital io test fixed, eeprom user space test fixed * osensa eeprom test fix * adc, rtd hardware test * delete test_adc_read.py, revised digital io test * added hardware test workflow which requires publish * hardware test passing * pylint fix * label added to route job to the hardware test unit * Dev documentation (#369) * Update eeprom_constants.py * added documentation * added special Note to the PWM readme * suggested fix * frequency type to float * Bump version: 1.2.3 → 1.2.4 * Update build-and-publish-TestPyPI.yml * Bump version: 1.2.4 → 1.2.5 --------- Co-authored-by: bot-edgepi <bot@edgepi.com>
1 parent d7e4973 commit 35893fd

File tree

22 files changed

+239
-201
lines changed

22 files changed

+239
-201
lines changed

.bumpversion.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
[bumpversion]
22
tag_name = rc/v{new_version}
3-
current_version = 1.2.2
3+
current_version = 1.2.5

.github/workflows/build-and-publish-TestPyPI.yml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,3 +69,26 @@ jobs:
6969
git config user.email ${{ env.commit_email }}
7070
git cherry-pick ${{ env.bump_commit }}
7171
git push origin dev
72+
Hardware_Test:
73+
needs: publish
74+
name: Hardware Tests
75+
runs-on: [self-hosted, linux, ARM64, hw-test]
76+
strategy:
77+
fail-fast: false
78+
matrix:
79+
python-version: ["3.9"]
80+
81+
steps:
82+
- name: Checkout
83+
uses: actions/checkout@v3
84+
- name: Install Dependencies
85+
run: |
86+
python -m venv venv_hardware_test
87+
source venv_hardware_test/bin/activate
88+
python -m pip install --upgrade pip
89+
python -m pip install pytest
90+
if [ -f requirements_hw_test.txt ]; then pip install -r requirements_hw_test.txt; fi
91+
- name: Test with pytest
92+
run: |
93+
source venv_hardware_test/bin/activate
94+
python -m pytest ./tests/hardware_tests
File renamed without changes.

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
setuptools.setup(
99
name="edgepi-python-sdk",
10-
version="1.2.2",
10+
version="1.2.5",
1111
author="S.Park",
1212
author_email="spark@osensa.com",
1313
description="EdgePi Python SDK package",

src/edgepi/eeprom/edgepi_eeprom_data.py

Lines changed: 33 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,14 @@
66
dac_module_pb2,
77
adc_module_pb2,
88
rtd_module_pb2,
9-
tc_module_pb2
9+
tc_module_pb2,
10+
keys_pb2
1011
)
1112
from edgepi.eeprom.protobuf_assets.eeprom_data_classes.eeprom_dac_module import DACModule
1213
from edgepi.eeprom.protobuf_assets.eeprom_data_classes.eeprom_adc_module import ADCModule
1314
from edgepi.eeprom.protobuf_assets.eeprom_data_classes.eeprom_rtd_module import RTDModule
1415
from edgepi.eeprom.protobuf_assets.eeprom_data_classes.eeprom_tc_module import TCModule
15-
16-
@dataclass
17-
class AwsKeys:
18-
"""Key Pair dataclass"""
19-
private_key:str = None
20-
certificate:str = None
16+
from edgepi.eeprom.protobuf_assets.eeprom_data_classes.eeprom_key_module import AwsKeys
2117

2218
@dataclass
2319
class EepromDataClass:
@@ -28,8 +24,8 @@ class EepromDataClass:
2824
adc2_calib_params: ADCModule = None
2925
rtd_calib_params: RTDModule = None
3026
tc_calib_params: TCModule = None
31-
config_key: AwsKeys = None
32-
data_key: AwsKeys = None
27+
config_key: AwsKeys = AwsKeys(None, None)
28+
data_key: AwsKeys = AwsKeys(None, None)
3329
serial:str = None
3430
model:str = None
3531
cm_part_number: str = None
@@ -43,13 +39,9 @@ def populate_eeprom_module(self, eeprom_pb:edgepi_module_pb2):
4339
self.__populate_adc2_module(eeprom_pb.adc2_module)
4440
self.__populate_rtd_module(eeprom_pb.rtd_module)
4541
self.__populate_tc_module(eeprom_pb.tc_module)
42+
self.__populate_config_key_module(eeprom_pb.config_keys)
43+
self.__populate_data_key_module(eeprom_pb.data_keys)
4644

47-
if self.config_key is not None:
48-
eeprom_pb.config_keys.certificate = self.config_key.certificate
49-
eeprom_pb.config_keys.private_key = self.config_key.private_key
50-
if self.data_key is not None:
51-
eeprom_pb.data_keys.certificate = self.data_key.certificate
52-
eeprom_pb.data_keys.private_key = self.data_key.private_key
5345
if self.serial is not None:
5446
eeprom_pb.serial_number = self.serial
5547
if self.model is not None:
@@ -90,6 +82,18 @@ def __populate_tc_module(self, tc_pb: tc_module_pb2):
9082
return
9183
self.tc_calib_params.populate_tc_module_pb(tc_pb)
9284

85+
def __populate_config_key_module(self, key_pb: keys_pb2):
86+
"""Serialize Config Keys"""
87+
if self.config_key is None:
88+
return
89+
self.config_key.populate_keys_pb(key_pb)
90+
91+
def __populate_data_key_module(self, key_pb: keys_pb2):
92+
"""Serialize Data Keys"""
93+
if self.data_key is None:
94+
return
95+
self.data_key.populate_keys_pb(key_pb)
96+
9397
@staticmethod
9498
def extract_eeprom_data(eeprom_pb:edgepi_module_pb2):
9599
"""De-serialize"""
@@ -100,14 +104,14 @@ def extract_eeprom_data(eeprom_pb:edgepi_module_pb2):
100104
eeprom_data.rtd_calib_params = EepromDataClass.extract_rtd_data(eeprom_pb.rtd_module)
101105
eeprom_data.tc_calib_params = EepromDataClass.extract_tc_data(eeprom_pb.tc_module)
102106

107+
if eeprom_pb.HasField("config_keys"):
108+
eeprom_data.config_key = EepromDataClass.extract_config_key(eeprom_pb.config_keys)
109+
if eeprom_pb.HasField("data_keys"):
110+
eeprom_data.data_key = EepromDataClass.extract_data_key(eeprom_pb.data_keys)
103111
if eeprom_pb.HasField("serial_number"):
104112
eeprom_data.serial = eeprom_pb.serial_number
105113
if eeprom_pb.HasField("model"):
106114
eeprom_data.model = eeprom_pb.model
107-
if eeprom_pb.HasField("config_keys"):
108-
eeprom_data.config_key = eeprom_pb.config_keys
109-
if eeprom_pb.HasField("data_keys"):
110-
eeprom_data.data_key = eeprom_pb.data_keys
111115
if eeprom_pb.HasField("cm_part_number"):
112116
eeprom_data.cm_part_number = eeprom_pb.cm_part_number
113117
if eeprom_pb.HasField("tb_part_number"):
@@ -145,3 +149,13 @@ def extract_tc_data(tc_pb: tc_module_pb2):
145149
if tc_pb is None:
146150
return
147151
return TCModule.extract_tc_calib_params(tc_pb)
152+
153+
@staticmethod
154+
def extract_config_key(key_pb: keys_pb2):
155+
"""De-serialize Config Keys"""
156+
return AwsKeys.extract_keys(key_pb)
157+
158+
@staticmethod
159+
def extract_data_key(key_pb: keys_pb2):
160+
"""De-serialize Data Keys"""
161+
return AwsKeys.extract_keys(key_pb)

src/edgepi/eeprom/eeprom_constants.py

Lines changed: 61 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,67 @@
44

55
# page write cycle time requirements https://www.onsemi.com/pdf/datasheet/cat24c256-d.pdf
66
PAGE_WRITE_CYCLE_TIME=0.01
7-
DEFAULT_EEPROM_BIN_B64 = b"CmAKCg0AAIA/FQAAAAASCg0AAIA/FQAAAAAaCg0AAIA/FQAAAAAiCg0AAIA/FQAAAAAqCg0A\
8-
AIA/FQAAAAAyCg0AAIA/FQAAAAA6Cg0AAIA/FQAAAABCCg0AAIA/FQAAAAASkAEKCg0AAIA/FQAA\
9-
AAASCg0AAIA/FQAAAAAaCg0AAIA/FQAAAAAiCg0AAIA/FQAAAAAqCg0AAIA/FQAAAAAyCg0AAIA/\
10-
FQAAAAA6Cg0AAIA/FQAAAABCCg0AAIA/FQAAAABKCg0AAIA/FQAAAABSCg0AAIA/FQAAAABaCg0A\
11-
AIA/FQAAAABiCg0AAIA/FQAAAAAakAEKCg0AAIA/FQAAAAASCg0AAIA/FQAAAAAaCg0AAIA/FQAA\
12-
AAAiCg0AAIA/FQAAAAAqCg0AAIA/FQAAAAAyCg0AAIA/FQAAAAA6Cg0AAIA/FQAAAABCCg0AAIA/\
13-
FQAAAABKCg0AAIA/FQAAAABSCg0AAIA/FQAAAABaCg0AAIA/FQAAAABiCg0AAIA/FQAAAAAiEQoK\
14-
DQAAgD8VAAAAABUAAPpEKmAKCg0AAIA/FQAAAAASCg0AAIA/FQAAAAAaCg0AAIA/FQAAAAAiCg0A\
15-
AIA/FQAAAAAqCg0AAIA/FQAAAAAyCg0AAIA/FQAAAAA6Cg0AAIA/FQAAAABCCg0AAIA/FQAAAAAy\
16-
NAoWVGhpcyBpcyBDb25maWcgUHJpdmF0ZRIaVGhpcyBpcyBDb25maWcgQ2VydGlmaWNhdGU6MAoU\
17-
VGhpcyBpcyBEYXRhIFByaXZhdGUSGFRoaXMgaXMgRGF0YSBDZXJ0aWZpY2F0ZUIVVGhpcyBpcyBT\
18-
ZXJpYWwgTnVtYmVyShxUaGlzIGlzIGNtIGJvYXJkIHBhcnQgbnVtYmVyUhZUaGlzIGlzIHRiIHBh\
19-
cnQgbnVtYmVyWhdUaGlzIGlzIGNtNCBwYXJ0IG51bWJlcmIUVGhpcyBpcyBNb2RlbCBOdW1iZXI="
7+
DEFAULT_EEPROM_BIN_B64 = b'CmAKCg0AAIA/FQAAAAASCg0AAIA/FQAAAAAaCg0AAIA/FQAAAAAiCg0AAIA/FQAAAAAqCg0A\
8+
AIA/FQAAAAAyCg0AAIA/FQAAAAA6Cg0AAIA/FQAAAABCCg0AAIA/FQAAAAASkAEKCg0AAIA/FQAAAAASCg0AAIA/FQAAAAAaCg0\
9+
AAIA/FQAAAAAiCg0AAIA/FQAAAAAqCg0AAIA/FQAAAAAyCg0AAIA/FQAAAAA6Cg0AAIA/FQAAAABCCg0AAIA/FQAAAABKCg0AAI\
10+
A/FQAAAABSCg0AAIA/FQAAAABaCg0AAIA/FQAAAABiCg0AAIA/FQAAAAAakAEKCg0AAIA/FQAAAAASCg0AAIA/FQAAAAAaCg0AA\
11+
IA/FQAAAAAiCg0AAIA/FQAAAAAqCg0AAIA/FQAAAAAyCg0AAIA/FQAAAAA6Cg0AAIA/FQAAAABCCg0AAIA/FQAAAABKCg0AAIA/\
12+
FQAAAABSCg0AAIA/FQAAAABaCg0AAIA/FQAAAABiCg0AAIA/FQAAAAAiEQoKDQAAgD8VAAAAABUAAPpEKmAKCg0AAIA/FQAAAAA\
13+
SCg0AAIA/FQAAAAAaCg0AAIA/FQAAAAAiCg0AAIA/FQAAAAAqCg0AAIA/FQAAAAAyCg0AAIA/FQAAAAA6Cg0AAIA/FQAAAABCCg\
14+
0AAIA/FQAAAAA='
15+
16+
"""
17+
Defaul EEPROM Dataclass
18+
dac_calib_params
19+
dac_ch1
20+
gain = 1
21+
offset = 0
22+
~
23+
dac_ch8
24+
gain = 1
25+
offset = 0
26+
adc1_calib_params
27+
adc_ch_1
28+
gain = 1
29+
offset = 0
30+
~
31+
adc_ch_8
32+
gain = 1
33+
offset = 0
34+
diff1
35+
gain = 1
36+
offset = 0
37+
~
38+
diff4
39+
adc2_calib_params
40+
same as adc1_calib_params
41+
rtd_calib_params
42+
rtd
43+
gain = 1
44+
offset = 0
45+
rtd_resistor = 2000
46+
tc_calib_params
47+
tc_B
48+
gain = 1
49+
offset = 0
50+
~
51+
tc_T
52+
gain = 1
53+
offset = 0
54+
config_key
55+
private_key = None
56+
certificate = None
57+
data_key
58+
private_key = None
59+
certificate = None
60+
serial = None
61+
model = None
62+
cm_part_number = None
63+
tb_part_number = None
64+
cm4_part_number = None
65+
"""
66+
67+
2068

2169
class EEPROMInfo(Enum):
2270
"""
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
"""EEPROM key module Dataclass"""
2+
from dataclasses import dataclass
3+
from edgepi.eeprom.protobuf_assets.generated_pb2 import keys_pb2
4+
5+
6+
7+
@dataclass
8+
class AwsKeys:
9+
"""Key Pair dataclass"""
10+
private_key:str = None
11+
certificate:str = None
12+
13+
def populate_keys_pb(self, key_pb: keys_pb2):
14+
"""serialize method"""
15+
if self.private_key is not None:
16+
key_pb.private_key = self.private_key
17+
if self.certificate is not None:
18+
key_pb.certificate = self.certificate
19+
20+
@staticmethod
21+
def extract_keys(key_pb: keys_pb2):
22+
"""De-serialize method"""
23+
key_mod = AwsKeys()
24+
if key_pb.HasField("private_key"):
25+
key_mod.private_key = key_pb.private_key
26+
if key_pb.HasField("certificate"):
27+
key_mod.certificate = key_pb.certificate
28+
return key_mod

src/edgepi/eeprom/protobuf_assets/generated_pb2/keys_pb2.py

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
-302 Bytes
Binary file not shown.
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
syntax = "proto3";
22

33
message AwsKeys {
4-
string private_key = 1;
5-
string certificate = 2;
4+
optional string private_key = 1;
5+
optional string certificate = 2;
66
}

0 commit comments

Comments
 (0)