@@ -188,9 +188,9 @@ def external_access_enum(i: int) -> str:
188
188
default = "Read/Write"
189
189
if i == 0 :
190
190
return default
191
- if i == 1 :
192
- return "Read Only"
193
191
if i == 2 :
192
+ return "Read Only"
193
+ if i == 3 :
194
194
return "None"
195
195
return default
196
196
@@ -216,9 +216,6 @@ def build(self) -> Member:
216
216
extended_records : Dict [int , List [int ]] = {}
217
217
for extended_record in r .extended_records :
218
218
extended_records [extended_record .attribute_id ] = extended_record .value
219
- extended_records [
220
- r .last_extended_record .attribute_id
221
- ] = r .last_extended_record .value
222
219
223
220
cip_data_typoe = struct .unpack_from ("<I" , self .record , 0x78 )[0 ]
224
221
dimension = struct .unpack_from ("<I" , self .record , 0x5C )[0 ]
@@ -260,9 +257,6 @@ def build(self) -> DataType:
260
257
extended_records [extended_record .attribute_id ] = bytes (
261
258
extended_record .value
262
259
)
263
- extended_records [r .last_extended_record .attribute_id ] = bytes (
264
- r .last_extended_record .value
265
- )
266
260
267
261
string_family_int = struct .unpack ("<I" , extended_records [0x6C ])[0 ]
268
262
string_family = "StringFamily" if string_family_int == 1 else "NoFamily"
@@ -275,7 +269,7 @@ def build(self) -> DataType:
275
269
class_type = "IO"
276
270
if built_in > 0 :
277
271
class_type = "ProductDefined"
278
- if len (extended_records [0x64 ]) == 0x04 :
272
+ if 0x64 in extended_records and len (extended_records [0x64 ]) == 0x04 :
279
273
member_count = struct .unpack ("<I" , extended_records [0x64 ])[0 ]
280
274
else :
281
275
member_count = 0
@@ -334,9 +328,6 @@ def build(self) -> MapDevice:
334
328
extended_records [extended_record .attribute_id ] = bytes (
335
329
extended_record .value
336
330
)
337
- extended_records [r .last_extended_record .attribute_id ] = bytes (
338
- r .last_extended_record .value
339
- )
340
331
341
332
vendor_id = struct .unpack ("<H" , extended_records [0x01 ][2 :4 ])[0 ]
342
333
product_type = struct .unpack ("<H" , extended_records [0x01 ][4 :6 ])[0 ]
@@ -399,15 +390,13 @@ def build(self) -> Tag:
399
390
extended_records [extended_record .attribute_id ] = bytes (
400
391
extended_record .value
401
392
)
402
- extended_records [r .last_extended_record .attribute_id ] = bytes (
403
- r .last_extended_record .value
404
- )
405
393
406
394
name_length = struct .unpack ("<H" , extended_records [0x01 ][0 :2 ])[0 ]
407
395
name = bytes (extended_records [0x01 ][2 : name_length + 2 ]).decode ("utf-8" )
408
396
409
397
radix = radix_enum (r .main_record .radix )
410
- external_access = external_access_enum (r .main_record .external_access )
398
+ name_length_raw = struct .unpack_from ("<H" , extended_records [0x01 ], 0x21E )[0 ]
399
+ external_access = external_access_enum (name_length_raw )
411
400
412
401
if r .main_record .dimension_1 != 0 :
413
402
data_type = data_type + "[" + str (r .main_record .dimension_1 ) + "]"
@@ -619,9 +608,6 @@ def build(self) -> Controller:
619
608
extended_records [extended_record .attribute_id ] = bytes (
620
609
extended_record .value
621
610
)
622
- extended_records [r .last_extended_record .attribute_id ] = bytes (
623
- r .last_extended_record .value
624
- )
625
611
626
612
comm_path = bytes (extended_records [0x6A ][:- 2 ]).decode ("utf-16" )
627
613
sfc_execution_control = bytes (extended_records [0x6F ][:- 2 ]).decode ("utf-16" )
0 commit comments