Commit cc3a8953 authored by ORD's avatar ORD Committed by GitHub

Merge pull request #262 from georgschoelly/fix_event_notifier_bugs

Fix event notifier bugs
parents 349303b1 dc88c9fa
...@@ -103,9 +103,9 @@ class Node(object): ...@@ -103,9 +103,9 @@ class Node(object):
set event notifier attribute, set event notifier attribute,
arg is a list of EventNotifier Enum arg is a list of EventNotifier Enum
""" """
res = 1 res = 0
for en in enum_list: for en in enum_list:
ua.set_bit(res, en.value) res = ua.set_bit(res, en.value)
self.set_attribute(ua.AttributeIds.EventNotifier, ua.DataValue(ua.Variant(res, ua.VariantType.Byte))) self.set_attribute(ua.AttributeIds.EventNotifier, ua.DataValue(ua.Variant(res, ua.VariantType.Byte)))
def get_node_class(self): def get_node_class(self):
......
...@@ -190,9 +190,11 @@ class InternalServer(object): ...@@ -190,9 +190,11 @@ class InternalServer(object):
event_notifier = source.get_event_notifier() event_notifier = source.get_event_notifier()
if ua.EventNotifier.SubscribeToEvents not in event_notifier: if ua.EventNotifier.SubscribeToEvents not in event_notifier:
raise ua.UaError("Node does not generate events", event_notifier) raise ua.UaError("Node does not generate events", event_notifier)
if ua.EventNotifier.SubscribeToEvents not in event_notifier:
if ua.EventNotifier.HistoryRead not in event_notifier:
event_notifier.append(ua.EventNotifier.HistoryRead) event_notifier.append(ua.EventNotifier.HistoryRead)
source.set_event_notifier(event_notifier) source.set_event_notifier(event_notifier)
self.history_manager.historize_event(source, period, count) self.history_manager.historize_event(source, period, count)
def disable_history_event(self, source): def disable_history_event(self, source):
......
...@@ -300,7 +300,7 @@ class ValueRank(IntEnum): ...@@ -300,7 +300,7 @@ class ValueRank(IntEnum):
# the next names are not in spec but so common we express them here # the next names are not in spec but so common we express them here
TwoDimensions = 2 TwoDimensions = 2
ThreeDimensions = 3 ThreeDimensions = 3
FourDimensions = 3 FourDimensions = 4
class AccessLevel(IntEnum): class AccessLevel(IntEnum):
...@@ -1247,7 +1247,7 @@ def int_to_AccessLevel(level): ...@@ -1247,7 +1247,7 @@ def int_to_AccessLevel(level):
""" """
res = [] res = []
for val in AccessLevel: for val in AccessLevel:
test_bit(level, val.value) if test_bit(level, val.value):
res.append(val) res.append(val)
return res return res
...@@ -1258,7 +1258,7 @@ def int_to_WriteMask(level): ...@@ -1258,7 +1258,7 @@ def int_to_WriteMask(level):
""" """
res = [] res = []
for val in WriteMask: for val in WriteMask:
test_bit(level, val.value) if test_bit(level, val.value):
res.append(val) res.append(val)
return res return res
...@@ -1269,6 +1269,6 @@ def int_to_EventNotifier(level): ...@@ -1269,6 +1269,6 @@ def int_to_EventNotifier(level):
""" """
res = [] res = []
for val in EventNotifier: for val in EventNotifier:
test_bit(level, val.value) if test_bit(level, val.value):
res.append(val) res.append(val)
return res return res
...@@ -409,7 +409,7 @@ def check_eventgenerator_SourceServer(test, evgen): ...@@ -409,7 +409,7 @@ def check_eventgenerator_SourceServer(test, evgen):
server = test.opc.get_server_node() server = test.opc.get_server_node()
test.assertEqual(evgen.event.SourceName, server.get_browse_name().Name) test.assertEqual(evgen.event.SourceName, server.get_browse_name().Name)
test.assertEqual(evgen.event.SourceNode, ua.NodeId(ua.ObjectIds.Server)) test.assertEqual(evgen.event.SourceNode, ua.NodeId(ua.ObjectIds.Server))
test.assertEqual(server.get_attribute(ua.AttributeIds.EventNotifier).Value, ua.Variant(1, ua.VariantType.Byte)) test.assertEqual(server.get_attribute(ua.AttributeIds.EventNotifier).Value, ua.Variant(5, ua.VariantType.Byte))
refs = server.get_referenced_nodes(ua.ObjectIds.GeneratesEvent, ua.BrowseDirection.Forward, ua.NodeClass.ObjectType, False) refs = server.get_referenced_nodes(ua.ObjectIds.GeneratesEvent, ua.BrowseDirection.Forward, ua.NodeClass.ObjectType, False)
test.assertGreaterEqual(len(refs), 1) test.assertGreaterEqual(len(refs), 1)
...@@ -417,7 +417,7 @@ def check_eventgenerator_SourceServer(test, evgen): ...@@ -417,7 +417,7 @@ def check_eventgenerator_SourceServer(test, evgen):
def check_event_generator_object(test, evgen, obj): def check_event_generator_object(test, evgen, obj):
test.assertEqual(evgen.event.SourceName, obj.get_browse_name().Name) test.assertEqual(evgen.event.SourceName, obj.get_browse_name().Name)
test.assertEqual(evgen.event.SourceNode, obj.nodeid) test.assertEqual(evgen.event.SourceNode, obj.nodeid)
test.assertEqual(obj.get_attribute(ua.AttributeIds.EventNotifier).Value, ua.Variant(1, ua.VariantType.Byte)) test.assertEqual(obj.get_attribute(ua.AttributeIds.EventNotifier).Value, ua.Variant(5, ua.VariantType.Byte))
refs = obj.get_referenced_nodes(ua.ObjectIds.GeneratesEvent, ua.BrowseDirection.Forward, ua.NodeClass.ObjectType, False) refs = obj.get_referenced_nodes(ua.ObjectIds.GeneratesEvent, ua.BrowseDirection.Forward, ua.NodeClass.ObjectType, False)
test.assertEqual(len(refs), 1) test.assertEqual(len(refs), 1)
test.assertEqual(refs[0].nodeid, evgen.event.EventType) test.assertEqual(refs[0].nodeid, evgen.event.EventType)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment