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):
set event notifier attribute,
arg is a list of EventNotifier Enum
"""
res = 1
res = 0
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)))
def get_node_class(self):
......
......@@ -190,9 +190,11 @@ class InternalServer(object):
event_notifier = source.get_event_notifier()
if ua.EventNotifier.SubscribeToEvents not in 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)
source.set_event_notifier(event_notifier)
self.history_manager.historize_event(source, period, count)
def disable_history_event(self, source):
......
......@@ -300,7 +300,7 @@ class ValueRank(IntEnum):
# the next names are not in spec but so common we express them here
TwoDimensions = 2
ThreeDimensions = 3
FourDimensions = 3
FourDimensions = 4
class AccessLevel(IntEnum):
......@@ -1247,8 +1247,8 @@ def int_to_AccessLevel(level):
"""
res = []
for val in AccessLevel:
test_bit(level, val.value)
res.append(val)
if test_bit(level, val.value):
res.append(val)
return res
......@@ -1258,8 +1258,8 @@ def int_to_WriteMask(level):
"""
res = []
for val in WriteMask:
test_bit(level, val.value)
res.append(val)
if test_bit(level, val.value):
res.append(val)
return res
......@@ -1269,6 +1269,6 @@ def int_to_EventNotifier(level):
"""
res = []
for val in EventNotifier:
test_bit(level, val.value)
res.append(val)
if test_bit(level, val.value):
res.append(val)
return res
......@@ -409,7 +409,7 @@ def check_eventgenerator_SourceServer(test, evgen):
server = test.opc.get_server_node()
test.assertEqual(evgen.event.SourceName, server.get_browse_name().Name)
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)
test.assertGreaterEqual(len(refs), 1)
......@@ -417,7 +417,7 @@ def check_eventgenerator_SourceServer(test, evgen):
def check_event_generator_object(test, evgen, obj):
test.assertEqual(evgen.event.SourceName, obj.get_browse_name().Name)
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)
test.assertEqual(len(refs), 1)
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