-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathAtlasOEM.py
More file actions
81 lines (61 loc) · 2.45 KB
/
AtlasOEM.py
File metadata and controls
81 lines (61 loc) · 2.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import smbus
class AtlasOEM(object):
DEFAULT_BUS = 1
def __init__(self, address, name = "", bus=None):
self._address = address
self.bus = smbus.SMBus(bus or self.DEFAULT_BUS)
self._name = name
def read_byte(self, reg):
return self.bus.read_byte_data(self._address, reg)
def read_16(self, reg):
data = 0
data = self.bus.read_byte_data(self._address, reg)<<8
data |= self.bus.read_byte(self._address)
return data
def read_32u(self, reg):
data = 0
data = self.bus.read_byte_data(self._address, reg)<<24
data |= self.bus.read_byte(self._address)<<16
data |= self.bus.read_byte(self._address)<<8
data |= self.bus.read_byte(self._address)
return data
def read_32(self, reg):
data = 0
data = self.bus.read_byte_data(self._address, reg)<<24
data |= self.bus.read_byte(self._address)<<16
data |= self.bus.read_byte(self._address)<<8
data |= self.bus.read_byte(self._address)
# python requires that we do it old school?
if((data >> 31) & 0x01):
return -((~data & 0xFFFFFFFF) + 1)
else:
return data
def write_byte(self, reg, val):
self.bus.write_byte_data(self._address, reg, val)
def write_16(self, reg, val):
self.bus.write_byte_data(self._address, reg, (val>>8) & 0xFF)
self.bus.write_byte_data(self._address, reg+1,(val) & 0xFF)
def write_32(self, reg, val):
self.bus.write_byte_data(self._address, reg, ((val>>24) & 0xFF))
self.bus.write_byte_data(self._address, reg+1, (val>>16) & 0xFF)
self.bus.write_byte_data(self._address, reg+2, (val>>8) & 0xFF)
self.bus.write_byte_data(self._address, reg+3,(val) & 0xFF)
def get_name(self):
return self._name
def read_device_data(self):
return self.read_byte(0)
def read_firmware_version(self):
return self.read_byte(1)
#address change regs here
def read_interrrupt_control(self):
return self.read_byte(0x04)
def write_interrupt_control(self, val):
self.write_byte(0x04, val)
def read_led(self):
return self.read_byte(0x05)
def write_led(self, val):
self.write_byte(0x05, val)
def read_active_hibernate(self):
return self.read_byte(0x06)
def write_active_hibernate(self, val):
self.write_byte(0x06, val)