@@ -71,16 +71,19 @@ class UnaryStruct:
71
71
"""
72
72
def __init__ (self , register_address , struct_format ):
73
73
self .format = struct_format
74
- self .buffer = bytearray (1 + struct .calcsize (self .format ))
75
- self .buffer [0 ] = register_address
74
+ self .address = register_address
76
75
77
76
def __get__ (self , obj , objtype = None ):
77
+ buf = bytearray (1 + struct .calcsize (self .format ))
78
+ buf [0 ] = self .address
78
79
with obj .i2c_device :
79
- obj .i2c_device .write (self . buffer , end = 1 , stop = False )
80
- obj .i2c_device .readinto (self . buffer , start = 1 )
81
- return struct .unpack_from (self .format , memoryview ( self . buffer )[ 1 :] )[0 ]
80
+ obj .i2c_device .write (buf , end = 1 , stop = False )
81
+ obj .i2c_device .readinto (buf , start = 1 )
82
+ return struct .unpack_from (self .format , buf , 1 )[0 ]
82
83
83
84
def __set__ (self , obj , value ):
84
- struct .pack_into (self .format , self .buffer , 1 , value )
85
+ buf = bytearray (1 + struct .calcsize (self .format ))
86
+ buf [0 ] = self .address
87
+ struct .pack_into (self .format , buf , 1 , value )
85
88
with obj .i2c_device :
86
- obj .i2c_device .write (self . buffer )
89
+ obj .i2c_device .write (buf )
0 commit comments