1212SPDX-License-Identifier: Apache-2.0
1313"""
1414
15+ import asyncio
1516import logging
1617import time
1718from typing import List
1819
19- from uprotocol .proto .uattributes_pb2 import UPriority
20- from uprotocol .proto .umessage_pb2 import UMessage
21- from uprotocol .proto .upayload_pb2 import UPayload , UPayloadFormat
22- from uprotocol .proto .uri_pb2 import UEntity , UResource , UUri
23- from uprotocol .proto .ustatus_pb2 import UStatus
24- from uprotocol .transport .builder .uattributesbuilder import UAttributesBuilder
20+ from uprotocol .communication .upayload import UPayload
21+ from uprotocol .transport .builder .umessagebuilder import UMessageBuilder
2522from uprotocol .transport .ulistener import UListener
23+ from uprotocol .v1 .uattributes_pb2 import UPayloadFormat
24+ from uprotocol .v1 .umessage_pb2 import UMessage
25+ from uprotocol .v1 .uri_pb2 import UUri
26+ from uprotocol .v1 .ustatus_pb2 import UStatus
2627
2728from uprotocol_vsomeip .vsomeip_utransport import VsomeipHelper , VsomeipTransport
2829
2930logger = logging .getLogger ()
3031LOG_FORMAT = "%(asctime)s [%(levelname)s] @ %(filename)s.%(module)s.%(funcName)s:%(lineno)d \n %(message)s"
3132logging .basicConfig (format = LOG_FORMAT , level = logging .getLevelName ("DEBUG" ))
3233
33- """
34- Publish Subscribe Example
35- """
36-
3734
3835class Helper (VsomeipHelper ):
3936 """
@@ -43,76 +40,78 @@ class Helper(VsomeipHelper):
4340 def services_info (self ) -> List [VsomeipHelper .UEntityInfo ]:
4441 return [
4542 VsomeipHelper .UEntityInfo (
46- Name = "publisher" ,
47- Id = 1 ,
48- Events = [0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 10 ],
49- Port = 30509 ,
50- MajorVersion = 1 ,
43+ service_id = 1 ,
44+ events = [0x8000 ],
45+ port = 30509 ,
46+ major_version = 1 ,
5147 )
5248 ]
5349
5450
55- someip = VsomeipTransport (helper = Helper ())
56- uuri = UUri (
57- entity = UEntity (name = "publisher" , id = 1 , version_major = 1 , version_minor = 1 ),
58- resource = UResource (name = "door" , instance = "front_left" , message = "Door" , id = 5 ),
59- )
51+ someip = VsomeipTransport (helper = Helper (), source = UUri (ue_id = 1 , ue_version_major = 1 , resource_id = 0 ))
52+ uuri = UUri (ue_id = 1 , ue_version_major = 1 , resource_id = 0x8000 )
6053
6154
62- def publish ():
55+ async def publish ():
6356 """
6457 Publish data to a topic
6558 """
6659 data = "Hello World!"
67- attributes = UAttributesBuilder .publish (uuri , UPriority .UPRIORITY_CS4 ).build ()
68- payload = UPayload (value = data .encode ("utf-8" ), format = UPayloadFormat .UPAYLOAD_FORMAT_TEXT )
69- message = UMessage (attributes = attributes , payload = payload )
70- logger .debug (f"Sending { data } to { uuri } ..." )
71- someip .send (message )
60+ payload = UPayload .pack_from_data_and_format (data .encode ("utf-8" ), UPayloadFormat .UPAYLOAD_FORMAT_TEXT )
61+ message = UMessageBuilder .publish (uuri ).build_from_upayload (payload )
62+ logger .debug ("Sending %s to %s..." , data , uuri )
63+ await someip .send (message )
7264
7365
7466class MyListener (UListener ):
7567 """
7668 Listener class to define callback
7769 """
7870
79- def on_receive (self , message : UMessage ) -> UStatus :
71+ async def on_receive (self , message : UMessage ) -> UStatus :
8072 """
8173 on_receive call back method
8274 :param message:
8375 :return: UStatus
8476 """
8577 logger .debug (
8678 "listener -> id: %s, data: %s" ,
87- message .attributes .source .resource . id ,
88- message .payload . value ,
79+ message .attributes .source .resource_id ,
80+ message .payload ,
8981 )
9082 return UStatus (message = "Received event" )
9183
9284
9385listener = MyListener ()
9486
9587
96- def subscribe ():
88+ async def subscribe ():
9789 """
9890 Subscribe to a topic
9991 """
100- someip .register_listener (uuri , listener )
92+ await someip .register_listener (source_filter = uuri , listener = listener )
10193
10294
103- def unsubscribe ():
95+ async def unsubscribe ():
10496 """
10597 Unsubscribe to a topic
10698 """
107- someip .unregister_listener (uuri , listener )
99+ await someip .unregister_listener (source_filter = uuri , listener = listener )
108100
109101
110- if __name__ == "__main__" :
111- subscribe ()
102+ async def main () -> None :
103+ """
104+ Main function to demonstrate publish and subscribe
105+ """
106+ await subscribe ()
112107 time .sleep (1 )
113- publish ()
108+ await publish ()
114109 time .sleep (5 )
115- unsubscribe ()
110+ await unsubscribe ()
116111 time .sleep (1 )
117- publish ()
112+ await publish ()
118113 time .sleep (5 )
114+
115+
116+ if __name__ == "__main__" :
117+ asyncio .run (main ())
0 commit comments