do proper value import on the client side
json values were not converted properly, resulting in integers instead of enums at the client side + add log.debug in rx thread Change-Id: Ifc3c3b28540eb6a516d77387a3f83711f34b7480
This commit is contained in:
parent
8799710b38
commit
ad7ff7f7f3
@ -104,8 +104,8 @@ class ProxyClient:
|
|||||||
|
|
||||||
CALLBACK_NAMES = ('updateEvent', 'descriptiveDataChange', 'nodeStateChange', 'unhandledMessage')
|
CALLBACK_NAMES = ('updateEvent', 'descriptiveDataChange', 'nodeStateChange', 'unhandledMessage')
|
||||||
online = False # connected or reconnecting since a short time
|
online = False # connected or reconnecting since a short time
|
||||||
validate_data = False
|
|
||||||
state = 'disconnected' # further possible values: 'connecting', 'reconnecting', 'connected'
|
state = 'disconnected' # further possible values: 'connecting', 'reconnecting', 'connected'
|
||||||
|
log = None
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.callbacks = {cbname: defaultdict(list) for cbname in self.CALLBACK_NAMES}
|
self.callbacks = {cbname: defaultdict(list) for cbname in self.CALLBACK_NAMES}
|
||||||
@ -178,13 +178,14 @@ class ProxyClient:
|
|||||||
def updateValue(self, module, param, value, timestamp, readerror):
|
def updateValue(self, module, param, value, timestamp, readerror):
|
||||||
if readerror:
|
if readerror:
|
||||||
assert isinstance(readerror, Exception)
|
assert isinstance(readerror, Exception)
|
||||||
if self.validate_data:
|
else:
|
||||||
try:
|
try:
|
||||||
# try to validate, reason: make enum_members from integers
|
# try to import (needed for enum, scaled, blob)
|
||||||
datatype = self.modules[module]['parameters'][param]['datatype']
|
datatype = self.modules[module]['parameters'][param]['datatype']
|
||||||
value = datatype(value)
|
value = datatype.import_value(value)
|
||||||
except (KeyError, ValueError):
|
except (KeyError, ValueError):
|
||||||
pass
|
if self.log:
|
||||||
|
self.log.warning('cannot assign %r to %s:%s', value, module, param)
|
||||||
self.cache[(module, param)] = (value, timestamp, readerror)
|
self.cache[(module, param)] = (value, timestamp, readerror)
|
||||||
self.callback(None, 'updateEvent', module, param, value, timestamp, readerror)
|
self.callback(None, 'updateEvent', module, param, value, timestamp, readerror)
|
||||||
self.callback(module, 'updateEvent', module, param, value, timestamp, readerror)
|
self.callback(module, 'updateEvent', module, param, value, timestamp, readerror)
|
||||||
@ -312,6 +313,7 @@ class SecopClient(ProxyClient):
|
|||||||
# send ping to check if the connection is still alive
|
# send ping to check if the connection is still alive
|
||||||
self.queue_request(HEARTBEATREQUEST, str(noactivity))
|
self.queue_request(HEARTBEATREQUEST, str(noactivity))
|
||||||
continue
|
continue
|
||||||
|
self.log.debug('RX: %r', reply)
|
||||||
noactivity = 0
|
noactivity = 0
|
||||||
action, ident, data = decode_msg(reply)
|
action, ident, data = decode_msg(reply)
|
||||||
if ident == '.':
|
if ident == '.':
|
||||||
@ -486,8 +488,8 @@ class SecopClient(ProxyClient):
|
|||||||
else:
|
else:
|
||||||
parameters[iname] = aentry
|
parameters[iname] = aentry
|
||||||
properties = {k: v for k, v in moddescr.items() if k != 'accessibles'}
|
properties = {k: v for k, v in moddescr.items() if k != 'accessibles'}
|
||||||
self.modules[modname] = dict(accessibles=accessibles, parameters=parameters,
|
self.modules[modname] = {'accessibles': accessibles, 'parameters': parameters,
|
||||||
commands=commands, properties=properties)
|
'commands': commands, 'properties': properties}
|
||||||
if changed_modules is not None:
|
if changed_modules is not None:
|
||||||
done = done_main = self.callback(None, 'descriptiveDataChange', None, self)
|
done = done_main = self.callback(None, 'descriptiveDataChange', None, self)
|
||||||
for mname in changed_modules:
|
for mname in changed_modules:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user