This repository was archived by the owner on Sep 30, 2019. It is now read-only.
File tree 1 file changed +8
-3
lines changed
1 file changed +8
-3
lines changed Original file line number Diff line number Diff line change @@ -115,20 +115,25 @@ def readS8(self, reg):
115
115
except IOError , err :
116
116
return self .errMsg ()
117
117
118
- def readU16 (self , reg ):
118
+ def readU16 (self , reg , little_endian = True ):
119
119
"Reads an unsigned 16-bit value from the I2C device"
120
120
try :
121
121
result = self .bus .read_word_data (self .address ,reg )
122
+ # Swap bytes if using big endian because read_word_data assumes little
123
+ # endian on ARM (little endian) systems.
124
+ if not little_endian :
125
+ result = ((result << 8 ) & 0xFF00 ) + (result >> 8 )
122
126
if (self .debug ):
123
127
print "I2C: Device 0x%02X returned 0x%04X from reg 0x%02X" % (self .address , result & 0xFFFF , reg )
124
128
return result
125
129
except IOError , err :
126
130
return self .errMsg ()
127
131
128
- def readS16 (self , reg ):
132
+ def readS16 (self , reg , little_endian = True ):
129
133
"Reads a signed 16-bit value from the I2C device"
130
134
try :
131
- result = self .bus .read_word_data (self .address ,reg )
135
+ result = self .readU16 (self .address ,reg ,little_endian )
136
+ if result > 32767 : result -= 65536
132
137
if (self .debug ):
133
138
print "I2C: Device 0x%02X returned 0x%04X from reg 0x%02X" % (self .address , result & 0xFFFF , reg )
134
139
return result
You can’t perform that action at this time.
0 commit comments