lpcmanager

Uart communication timer is now bound to rt_timer_read() and no longer to common_ticktime__. Swapping of uart buffers is repositioned, so it is executed just befor/after the actual uart communication. Uart timeout is set according to buffer size: long buffer -> 20ms, short buffer -> 40ms. Decreased max uart devices from 68 to 32.
# Project name: SmartehIDE
# __init__.py.py: spacer widget module initialization
# 19. 01. 2017 12:24 Uporabnik
#
# Copyright (c) 2017 Smarteh d.o.o. <info@smarteh.si>
# THIS PROGRAM COMES WITH NO WARRANTY
from autobahn.twisted import wamp
from autobahn.twisted.websocket import WampWebSocketClientFactory, connectWS
from autobahn.wamp import types
from autobahn.wamp import auth
from autobahn.wamp.serializer import MsgPackSerializer
import connectors.WAMP as WAMP
from connectors.WAMP import WAMP_connector_factory, WampSession
from threading import _sleep
PASSWORDS = {
u'smarteh': u'smarteh'
}
USER = u'smarteh'
class MWWampSession(WampSession):
def onConnect(self):
self.join(u"Automation", [u"wampcra"], USER)
print "CRA checking init ..."
def onChallenge(self, challenge):
if challenge.method == u"wampcra":
key = PASSWORDS[USER].encode('utf8')
key = auth.derive_key(key, "salt123", 100, 16)
signature = auth.compute_wcs(key, challenge.extra['challenge'].encode('utf8'))
return signature.decode('ascii')
else:
raise Exception("don't know how to handle authmethod {}".format(challenge.method))
def onLeave(self, details):
global _WampSession, _WampSessionEvent
print details
self.disconnect()
_WampSessionEvent.clear()
_WampSession = None
print 'WAMP session left'
DefalutWAMP_connector_factory = WAMP_connector_factory
def MWRegisterWampClient(realm, ID, url, confnodesroot):
## start logging to console
# log.startLogging(sys.stdout)
# create a WAMP application session factory
component_config = types.ComponentConfig(
realm = unicode(realm),
extra = {"ID":ID})
session_factory = wamp.ApplicationSessionFactory(
config = component_config)
session_factory.session = MWWampSession
# create a WAMP-over-WebSocket transport client factory
transport_factory = WampWebSocketClientFactory(
session_factory,
url = url+"/beremiz",
serializers = [MsgPackSerializer()])
# settings autoPing in seconds
#transport_factory.autoPingInterval = 60
#transport_factory.autoPingTimeout = 20
# start the client from a Twisted endpoint
conn = connectWS(transport_factory)
confnodesroot.logger.write(_("WAMP connecting to URL : %s\n")%url)
return conn
def MWWAMP_connector_factory(uri, confnodesroot):
def CustomFunctionCall(self, funcname, args=None):
member = self.__dict__.get(funcname, None)
if member is None:
member = WampSessionProcMapper(funcname)
self.__dict__[funcname] = member
return member
WAMP.RegisterWampClient = MWRegisterWampClient
WAMP.WampSession = MWWampSession
wamp_connector = DefalutWAMP_connector_factory(uri, confnodesroot)
wamp_connector.CustomFunctionCall = CustomFunctionCall
_sleep(1)
return wamp_connector