Skip to content

Commit 11263c4

Browse files
committed
Merge pull request adafruit#82 from adafruit/i2c_fixes
Fix bugs with getPiRevision and readS16
2 parents fa0a792 + 0924803 commit 11263c4

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

Adafruit_I2C/Adafruit_I2C.py

+10-6
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,12 @@ def getPiRevision():
1313
"Gets the version number of the Raspberry Pi board"
1414
# Courtesy quick2wire-python-api
1515
# https://github.com/quick2wire/quick2wire-python-api
16+
# Updated revision info from: http://elinux.org/RPi_HardwareHistory#Board_Revision_History
1617
try:
1718
with open('/proc/cpuinfo','r') as f:
1819
for line in f:
1920
if line.startswith('Revision'):
20-
return 1 if line.rstrip()[-1] in ['1','2'] else 2
21+
return 1 if line.rstrip()[-1] in ['2','3'] else 2
2122
except:
2223
return 0
2324

@@ -114,22 +115,25 @@ def readS8(self, reg):
114115
except IOError, err:
115116
return self.errMsg()
116117

117-
def readU16(self, reg):
118+
def readU16(self, reg, little_endian=True):
118119
"Reads an unsigned 16-bit value from the I2C device"
119120
try:
120121
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)
121126
if (self.debug):
122127
print "I2C: Device 0x%02X returned 0x%04X from reg 0x%02X" % (self.address, result & 0xFFFF, reg)
123128
return result
124129
except IOError, err:
125130
return self.errMsg()
126131

127-
def readS16(self, reg):
132+
def readS16(self, reg, little_endian=True):
128133
"Reads a signed 16-bit value from the I2C device"
129134
try:
130-
result = self.bus.read_word_data(self.address,reg)
131-
if (self.debug):
132-
print "I2C: Device 0x%02X returned 0x%04X from reg 0x%02X" % (self.address, result & 0xFFFF, reg)
135+
result = self.readU16(reg,little_endian)
136+
if result > 32767: result -= 65536
133137
return result
134138
except IOError, err:
135139
return self.errMsg()

0 commit comments

Comments
 (0)