@@ -117,26 +117,50 @@ def readS8(self, reg):
117117 def readU16 (self , reg ):
118118 "Reads an unsigned 16-bit value from the I2C device"
119119 try :
120- result = self .bus .read_word_data (self .address , reg )
121- if self .debug :
122- print ("I2C: Device 0x%02X returned 0x%04X from reg 0x%02X" %
123- (self .address , result & 0xFFFF , reg ))
120+ hibyte = self .readU8 (reg )
121+ lobyte = self .readU8 (reg + 1 )
122+ result = (hibyte << 8 ) + lobyte
123+ if (self .debug ):
124+ print "I2C: Device 0x%02X returned 0x%04X from reg 0x%02X" % (self .address , result & 0xFFFF , reg )
124125 return result
125126 except IOError , err :
126- return self .errMsg ()
127+ return self .errMsg ();
127128
128129 def readS16 (self , reg ):
129130 "Reads a signed 16-bit value from the I2C device"
130131 try :
131- result = self .bus . read_word_data ( self . address , reg )
132- if result > 32767 : result -= 65536
133- if self . debug :
134- print ( "I2C: Device 0x%02X returned 0x%04X from reg 0x%02X" %
135- (self .address , result & 0xFFFF , reg ) )
132+ hibyte = self .readS8 ( reg )
133+ lobyte = self . readU8 ( reg + 1 )
134+ result = ( hibyte << 8 ) + lobyte
135+ if ( self . debug ):
136+ print "I2C: Device 0x%02X returned 0x%04X from reg 0x%02X" % (self .address , result & 0xFFFF , reg )
136137 return result
137138 except IOError , err :
138- return self .errMsg ()
139+ return self .errMsg ();
139140
141+ def readU16Rev (self , reg ):
142+ "Reads an unsigned 16-bit value from the I2C device with rev byte order"
143+ try :
144+ lobyte = self .readU8 (reg )
145+ hibyte = self .readU8 (reg + 1 )
146+ result = (hibyte << 8 ) + lobyte
147+ if (self .debug ):
148+ print "I2C: Device 0x%02X returned 0x%04X from reg 0x%02X" % (self .address , result & 0xFFFF , reg )
149+ return result
150+ except IOError , err :
151+ return self .errMsg ();
152+
153+ def readS16Rev (self , reg ):
154+ "Reads a signed 16-bit value from the I2C device with rev byte order"
155+ try :
156+ lobyte = self .readS8 (reg )
157+ hibyte = self .readU8 (reg + 1 )
158+ result = (hibyte << 8 ) + lobyte
159+ if (self .debug ):
160+ print "I2C: Device 0x%02X returned 0x%04X from reg 0x%02X" % (self .address , result & 0xFFFF , reg )
161+ return result
162+ except IOError , err :
163+ return self .errMsg ();
140164
141165if __name__ == '__main__' :
142166 try :
0 commit comments