Skip to content

Commit 28df88c

Browse files
authored
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
1 parent cdd29ce commit 28df88c

File tree

10 files changed

+109
-42
lines changed

10 files changed

+109
-42
lines changed

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: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,16 @@
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+
2017

2118
class EEPROMInfo(Enum):
2219
"""
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
}

src/test_edgepi/integration_tests/test_eeprom/test_eeprom.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ def test_write_edgepi_data(eeprom):
110110
[
111111
(None, pytest.raises(PermissionDenied)),
112112
("This is Dummy", pytest.raises(PermissionDenied)),
113-
("48d088f7536e5c59938724b174184611", does_not_raise())
113+
("6b68b8e2dd2a6bec300ef91572270723", does_not_raise())
114114
])
115115
def test_reset_edgepi_memory(bin_hash, error, eeprom):
116116
original_data = eeprom.read_edgepi_data()
-228 Bytes
Binary file not shown.

src/test_edgepi/unit_tests/test_eeprom/test_access_eeprom.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@ def test_init_memory(mocker, mem_size, dummy_size, result, error, eeprom):
290290
[
291291
(None, pytest.raises(PermissionDenied)),
292292
("This is Dummy", pytest.raises(PermissionDenied)),
293-
("48d088f7536e5c59938724b174184611", does_not_raise())
293+
("6b68b8e2dd2a6bec300ef91572270723", does_not_raise())
294294
])
295295
def test_reset_edgepi_memory(mocker, bin_hash, error, eeprom):
296296
mocker.patch(

src/test_edgepi/unit_tests/test_eeprom/test_edgepi_eeprom_data.py

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,44 @@ def test_init_data_class():
2222
edgepi_eeprom_data = EepromDataClass()
2323
edgepi_eeprom_pb = edgepi_module_pb2.EepromData()
2424
assert edgepi_eeprom_pb.ByteSize() == 0
25-
for attr in edgepi_eeprom_data.__annotations__:
26-
assert getattr(edgepi_eeprom_data, attr) is None
25+
assert edgepi_eeprom_data.dac_calib_params is None
26+
assert edgepi_eeprom_data.adc1_calib_params is None
27+
assert edgepi_eeprom_data.adc2_calib_params is None
28+
assert edgepi_eeprom_data.rtd_calib_params is None
29+
assert edgepi_eeprom_data.tc_calib_params is None
30+
assert edgepi_eeprom_data.config_key.private_key is None
31+
assert edgepi_eeprom_data.data_key.private_key is None
32+
assert edgepi_eeprom_data.config_key.certificate is None
33+
assert edgepi_eeprom_data.data_key.certificate is None
34+
assert edgepi_eeprom_data.serial is None
35+
assert edgepi_eeprom_data.model is None
36+
assert edgepi_eeprom_data.cm_part_number is None
37+
assert edgepi_eeprom_data.tb_part_number is None
38+
assert edgepi_eeprom_data.cm4_part_number is None
39+
2740

2841

2942
def test_deserialize_pb():
3043
default_bin = read_binfile()
3144
edgepi_eeprom_pb = edgepi_module_pb2.EepromData()
3245
edgepi_eeprom_pb.ParseFromString(default_bin)
3346
edgepi_eeprom_data = EepromDataClass.extract_eeprom_data(edgepi_eeprom_pb)
34-
for attr in edgepi_eeprom_data.__annotations__:
35-
assert getattr(edgepi_eeprom_data, attr) is not None
47+
assert edgepi_eeprom_pb.ByteSize() != 0
48+
assert edgepi_eeprom_data.dac_calib_params is not None
49+
assert edgepi_eeprom_data.adc1_calib_params is not None
50+
assert edgepi_eeprom_data.adc2_calib_params is not None
51+
assert edgepi_eeprom_data.rtd_calib_params is not None
52+
assert edgepi_eeprom_data.tc_calib_params is not None
53+
assert edgepi_eeprom_data.config_key.private_key is None
54+
assert edgepi_eeprom_data.data_key.private_key is None
55+
assert edgepi_eeprom_data.config_key.certificate is None
56+
assert edgepi_eeprom_data.data_key.certificate is None
57+
assert edgepi_eeprom_data.serial is None
58+
assert edgepi_eeprom_data.model is None
59+
assert edgepi_eeprom_data.cm_part_number is None
60+
assert edgepi_eeprom_data.tb_part_number is None
61+
assert edgepi_eeprom_data.cm4_part_number is None
62+
3663

3764
def test_serialize_pb():
3865
default_bin = read_binfile()
@@ -43,3 +70,4 @@ def test_serialize_pb():
4370
edgepi_eeprom_data = EepromDataClass.extract_eeprom_data(edgepi_eeprom_pb_2)
4471
edgepi_eeprom_data.populate_eeprom_module(edgepi_eeprom_pb)
4572
assert edgepi_eeprom_pb.ByteSize() != 0
73+
assert edgepi_eeprom_pb.SerializeToString() == edgepi_eeprom_pb_2.SerializeToString()

0 commit comments

Comments
 (0)