|
From: <ni...@us...> - 2010-11-15 21:21:28
|
Revision: 132
http://openautomation.svn.sourceforge.net/openautomation/?rev=132&view=rev
Author: nilss1
Date: 2010-11-15 21:21:16 +0000 (Mon, 15 Nov 2010)
Log Message:
-----------
added reading and readflag in datastore object config
Modified Paths:
--------------
PyWireGate/trunk/knx_connector/GroupSocket.py
PyWireGate/trunk/knx_connector/KNX_Connector.py
Modified: PyWireGate/trunk/knx_connector/GroupSocket.py
===================================================================
--- PyWireGate/trunk/knx_connector/GroupSocket.py 2010-11-15 21:20:31 UTC (rev 131)
+++ PyWireGate/trunk/knx_connector/GroupSocket.py 2010-11-15 21:21:16 UTC (rev 132)
@@ -57,16 +57,21 @@
##FIXME: unknown APDU
self.debug("unknown APDU from "+msg['srcaddr']+" to "+msg['dstaddr']+ " raw:"+buf)
else:
+ dsobj = self.WG.DATASTORE.get(id)
if (buf[1] & 0xC0 == 0x00):
msg['type'] = "read"
+ if dsobj.config.get('readflag',False):
+ self.debug("Read from %s" % id)
+ self._parent.setValue(dsobj,flag=0x40)
+
##FIXME: Check (ds) if we should respond
- elif (buf[1] & 0xC0 == 0x40):
- msg['type'] = "response"
- ##FIXME: Update ds also?
- elif (buf[1] & 0xC0 == 0x80):
- msg['type'] = "write"
+ elif (buf[1] & 0xC0 == 0x40) or (buf[1] & 0xC0 == 0x80):
+ if (buf[1] & 0xC0 == 0x40):
+ msg['type'] = "response"
+ else:
+ msg['type'] = "write"
## search Datastoreobject
- dsobj = self.WG.DATASTORE.get(id)
+
## Decode the DPT Value
if (len(buf) >2):
msg['value'] = self.dpt.decode( buf[2:],dsobj=dsobj)
@@ -94,7 +99,7 @@
def log(self,msg,severity='info',instance=False):
if not instance:
- instance = self.instanceName
+ instance = 'KNX'
self._parent.log(msg,severity,instance)
def debug(self,msg):
Modified: PyWireGate/trunk/knx_connector/KNX_Connector.py
===================================================================
--- PyWireGate/trunk/knx_connector/KNX_Connector.py 2010-11-15 21:20:31 UTC (rev 131)
+++ PyWireGate/trunk/knx_connector/KNX_Connector.py 2010-11-15 21:21:16 UTC (rev 132)
@@ -172,15 +172,15 @@
- def send(self,msg,dstaddr):
+ def send(self,msg,dstaddr,flag=KNXWRITEFLAG):
try:
addr = self.str2grpaddr(dstaddr)
if addr:
apdu = [0]
if type(msg) == int:
- apdu.append(KNXWRITEFLAG | msg)
+ apdu.append(flag | msg)
elif type(msg) == list:
- apdu = apdu +[KNXWRITEFLAG]+ msg
+ apdu = apdu +[flag]+ msg
else:
self.WG.errorlog("invalid Message %r to %r" % (msg,dstaddr))
return
@@ -189,12 +189,12 @@
except:
self.WG.errorlog("Failed send %r to %r" % (msg,dstaddr))
- def setValue(self,dsobj,msg=False):
+ def setValue(self,dsobj,msg=False,flag=KNXWRITEFLAG):
try:
if not msg:
msg = dsobj.getValue()
self.debug("SEND %r to %s (%s)" % (msg,dsobj.name,dsobj.id))
- self.send(self.dpt.encode(msg,dsobj=dsobj),dsobj.id)
+ self.send(self.dpt.encode(msg,dsobj=dsobj),dsobj.id,flag=flag)
except:
print "----------- ERROR IN KNX_CONNECTOR.setValue ----------------"
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|