Skip to content

Commit b0e4c67

Browse files
authored
Merge pull request #6 from myDevicesIoT/fix/piface-support
Fix PiFace device to allow adding sensors.
2 parents 8a7b310 + 008a502 commit b0e4c67

File tree

3 files changed

+7
-66
lines changed

3 files changed

+7
-66
lines changed

myDevices/devices/manager.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ def addDevice(name, device, description, args, origin):
161161
def addDeviceConf(devices, origin):
162162
for (name, params) in devices:
163163
values = params.split(" ")
164-
driver = values[0];
164+
driver = values[0]
165165
description = name
166166
args = {}
167167
i = 1

myDevices/devices/shield/piface.py

Lines changed: 6 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -17,72 +17,15 @@
1717
from myDevices.decorators.rest import request, response
1818

1919

20-
class PiFaceDigital():
20+
class PiFaceDigital(MCP23S17):
2121
def __init__(self, board=0):
22-
mcp = MCP23S17(0, 0x20+toint(board))
23-
mcp.writeRegister(mcp.getAddress(mcp.IODIR, 0), 0x00) # Port A as output
24-
mcp.writeRegister(mcp.getAddress(mcp.IODIR, 8), 0xFF) # Port B as input
25-
mcp.writeRegister(mcp.getAddress(mcp.GPPU, 0), 0x00) # Port A PU OFF
26-
mcp.writeRegister(mcp.getAddress(mcp.GPPU, 8), 0xFF) # Port B PU ON
27-
self.mcp = mcp
2822
self.board = toint(board)
23+
MCP23S17.__init__(self, 0, 0x20 + self.board)
24+
self.writeRegister(self.getAddress(self.IODIR, 0), 0x00) # Port A as output
25+
self.writeRegister(self.getAddress(self.IODIR, 8), 0xFF) # Port B as input
26+
self.writeRegister(self.getAddress(self.GPPU, 0), 0x00) # Port A PU OFF
27+
self.writeRegister(self.getAddress(self.GPPU, 8), 0xFF) # Port B PU ON
2928

3029
def __str__(self):
3130
return "PiFaceDigital(%d)" % self.board
3231

33-
def __family__(self):
34-
return "GPIOPort"
35-
36-
def checkChannel(self, channel):
37-
# if not channel in range(8):
38-
if not channel in range(16):
39-
raise ValueError("Channel %d invalid" % channel)
40-
41-
#@request("GET", "%(channel)d/value")
42-
@response("%d")
43-
def digitalRead(self, channel):
44-
self.checkChannel(channel)
45-
# return not self.mcp.digitalRead(channel+8)
46-
return self.mcp.digitalRead(channel)
47-
48-
#@request("POST", "%(channel)d/value/%(value)d")
49-
@response("%d")
50-
def digitalWrite(self, channel, value):
51-
self.checkChannel(channel)
52-
return self.mcp.digitalWrite(channel, value)
53-
54-
# #@request("GET", "digital/output/%(channel)d")
55-
# @response("%d")
56-
# def digitalReadOutput(self, channel):
57-
# self.checkChannel(channel)
58-
# return self.mcp.digitalRead(channel)
59-
60-
# #@request("GET", "digital/*")
61-
# @response(contentType=M_JSON)
62-
# def readAll(self):
63-
# inputs = {}
64-
# outputs = {}
65-
# for i in range(8):
66-
# inputs[i] = self.digitalRead(i)
67-
# outputs[i] = self.digitalReadOutput(i)
68-
# return {"input": inputs, "output": outputs}
69-
70-
#@request("GET", "*")
71-
@response(contentType=M_JSON)
72-
def readAll(self):
73-
# inputs = {}
74-
# outputs = {}
75-
# for i in range(8):
76-
# inputs[i] = self.digitalRead(i)
77-
# outputs[i] = self.digitalReadOutput(i)
78-
# return {"input": inputs, "output": outputs}
79-
80-
values = {}
81-
for i in range(16):
82-
values[i] = {"function": self.mcp.getFunctionString(i), "value": int(self.mcp.digitalRead(i))}
83-
return values
84-
85-
#@request("GET", "count")
86-
@response("%d")
87-
def digitalCount(self):
88-
return 16

myDevices/sensors/sensors.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -269,8 +269,6 @@ def SensorsInfo(self):
269269
if value['type'] == 'Humidity':
270270
value['float']=self.CallDeviceFunction(sensor.getHumidity)
271271
value['percent']=self.CallDeviceFunction(sensor.getHumidityPercent)
272-
if value['type'] == 'PiFaceDigital':
273-
value['all'] = self.CallDeviceFunction(sensor.readAll)
274272
if value['type'] in ('DigitalSensor', 'DigitalActuator'):
275273
value['value'] = self.CallDeviceFunction(sensor.read)
276274
if value['type'] == 'GPIOPort':

0 commit comments

Comments
 (0)