Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions README.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -66,20 +66,19 @@ $ python setup.py bdist_wheel

=== Usage

$ pip install uprotocol_vsomeip_python-0.1.0.dev0-py3-none-any.whl
$ pip install uprotocol_vsomeip_python-0.2.0.dev0-py3-none-any.whl

uPClient vsomeip Transport

[source]
----
from uprotocol_vsomeip.vsomeip_utransport import VsomeipTransport
from uprotocol_vsomeip.vsomeip_utransport import VsomeipHelper
from uprotocol_vsomeip.vsomeip_utransport import VsomeipHelper, VsomeipTransport

# Create a helper class and override the services_info method to start the mock services by Vsomeip
class Helper(VsomeipHelper):

def services_info(self) -> List[VsomeipHelper.UEntityInfo]:
return [VsomeipHelper.UEntityInfo(Name="entity", Id=1, Events=[0, 1, 2, 3, 4, 5, 6, 7, 8, 10], Port=30509, MajorVersion=1)]
return [VsomeipHelper.UEntityInfo(Name="entity", Id=1, Events=[0x8000], Port=30509, MajorVersion=1)]

# Create an object of Vsomeip transport to use and pass on the above helper class created
someip = VsomeipTransport(helper=Helper())
Expand Down
4 changes: 2 additions & 2 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
up-python==0.1.2-dev
vsomeip_py @git+https://github.com/COVESA/vsomeip_py.git@16f3e4c
vsomeip_py @git+https://github.com/COVESA/vsomeip_py.git@825061d
up-python==0.2.0.dev0
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@

setup(
name=project_name,
version="0.1.0-dev",
version="0.2.0-dev",
python_requires=">=3.8",
description="",
author="",
Expand Down
72 changes: 72 additions & 0 deletions uprotocol_vsomeip/examples/publish.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
"""
SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation

See the NOTICE file(s) distributed with this work for additional
information regarding copyright ownership.

This program and the accompanying materials are made available under the
terms of the Apache License Version 2.0 which is available at

http://www.apache.org/licenses/LICENSE-2.0

SPDX-License-Identifier: Apache-2.0
"""

import asyncio
import logging
from typing import List

from uprotocol.communication.upayload import UPayload
from uprotocol.transport.builder.umessagebuilder import UMessageBuilder
from uprotocol.v1.uattributes_pb2 import UPayloadFormat
from uprotocol.v1.uri_pb2 import UUri

from uprotocol_vsomeip.vsomeip_utransport import VsomeipHelper, VsomeipTransport

logger = logging.getLogger()
LOG_FORMAT = "%(asctime)s [%(levelname)s] @ %(filename)s.%(module)s.%(funcName)s:%(lineno)d \n %(message)s"
logging.basicConfig(format=LOG_FORMAT, level=logging.getLevelName("DEBUG"))


class Helper(VsomeipHelper):
"""
Helper class to provide list of services to be offered
"""

def services_info(self) -> List[VsomeipHelper.UEntityInfo]:
return [
VsomeipHelper.UEntityInfo(
service_id=1,
events=[0x8000],
port=30509,
major_version=1,
)
]


someip = VsomeipTransport(helper=Helper(), source=UUri(ue_id=1, ue_version_major=1, resource_id=0))
uuri = UUri(ue_id=1, ue_version_major=1, resource_id=0x8000)


async def publish():
"""
Publish data to a topic
"""
data = "Hello World!"
payload = UPayload.pack_from_data_and_format(data.encode("utf-8"), UPayloadFormat.UPAYLOAD_FORMAT_TEXT)
message = UMessageBuilder.publish(uuri).build_from_upayload(payload)
logger.debug("Sending %s to %s...", data, uuri)
await someip.send(message)


async def main() -> None:
"""
Main function to demonstrate publish and subscribe
"""
while True:
await publish()
await asyncio.sleep(1)


if __name__ == "__main__":
asyncio.run(main())
Original file line number Diff line number Diff line change
Expand Up @@ -12,28 +12,25 @@
SPDX-License-Identifier: Apache-2.0
"""

import asyncio
import logging
import time
from typing import List

from uprotocol.proto.uattributes_pb2 import UPriority
from uprotocol.proto.umessage_pb2 import UMessage
from uprotocol.proto.upayload_pb2 import UPayload, UPayloadFormat
from uprotocol.proto.uri_pb2 import UEntity, UResource, UUri
from uprotocol.proto.ustatus_pb2 import UStatus
from uprotocol.transport.builder.uattributesbuilder import UAttributesBuilder
from uprotocol.communication.upayload import UPayload
from uprotocol.transport.builder.umessagebuilder import UMessageBuilder
from uprotocol.transport.ulistener import UListener
from uprotocol.v1.uattributes_pb2 import UPayloadFormat
from uprotocol.v1.umessage_pb2 import UMessage
from uprotocol.v1.uri_pb2 import UUri
from uprotocol.v1.ustatus_pb2 import UStatus

from uprotocol_vsomeip.vsomeip_utransport import VsomeipHelper, VsomeipTransport

logger = logging.getLogger()
LOG_FORMAT = "%(asctime)s [%(levelname)s] @ %(filename)s.%(module)s.%(funcName)s:%(lineno)d \n %(message)s"
logging.basicConfig(format=LOG_FORMAT, level=logging.getLevelName("DEBUG"))

"""
Publish Subscribe Example
"""


class Helper(VsomeipHelper):
"""
Expand All @@ -43,76 +40,78 @@ class Helper(VsomeipHelper):
def services_info(self) -> List[VsomeipHelper.UEntityInfo]:
return [
VsomeipHelper.UEntityInfo(
Name="publisher",
Id=1,
Events=[0, 1, 2, 3, 4, 5, 6, 7, 8, 10],
Port=30509,
MajorVersion=1,
service_id=1,
events=[0x8000],
port=30509,
major_version=1,
)
]


someip = VsomeipTransport(helper=Helper())
uuri = UUri(
entity=UEntity(name="publisher", id=1, version_major=1, version_minor=1),
resource=UResource(name="door", instance="front_left", message="Door", id=5),
)
someip = VsomeipTransport(helper=Helper(), source=UUri(ue_id=1, ue_version_major=1, resource_id=0))
uuri = UUri(ue_id=1, ue_version_major=1, resource_id=0x8000)


def publish():
async def publish():
"""
Publish data to a topic
"""
data = "Hello World!"
attributes = UAttributesBuilder.publish(uuri, UPriority.UPRIORITY_CS4).build()
payload = UPayload(value=data.encode("utf-8"), format=UPayloadFormat.UPAYLOAD_FORMAT_TEXT)
message = UMessage(attributes=attributes, payload=payload)
logger.debug(f"Sending {data} to {uuri}...")
someip.send(message)
payload = UPayload.pack_from_data_and_format(data.encode("utf-8"), UPayloadFormat.UPAYLOAD_FORMAT_TEXT)
message = UMessageBuilder.publish(uuri).build_from_upayload(payload)
logger.debug("Sending %s to %s...", data, uuri)
await someip.send(message)


class MyListener(UListener):
"""
Listener class to define callback
"""

def on_receive(self, message: UMessage) -> UStatus:
async def on_receive(self, message: UMessage) -> UStatus:
"""
on_receive call back method
:param message:
:return: UStatus
"""
logger.debug(
"listener -> id: %s, data: %s",
message.attributes.source.resource.id,
message.payload.value,
message.attributes.source.resource_id,
message.payload,
)
return UStatus(message="Received event")


listener = MyListener()


def subscribe():
async def subscribe():
"""
Subscribe to a topic
"""
someip.register_listener(uuri, listener)
await someip.register_listener(source_filter=uuri, listener=listener)


def unsubscribe():
async def unsubscribe():
"""
Unsubscribe to a topic
"""
someip.unregister_listener(uuri, listener)
await someip.unregister_listener(source_filter=uuri, listener=listener)


if __name__ == "__main__":
subscribe()
async def main() -> None:
"""
Main function to demonstrate publish and subscribe
"""
await subscribe()
time.sleep(1)
publish()
await publish()
time.sleep(5)
unsubscribe()
await unsubscribe()
time.sleep(1)
publish()
await publish()
time.sleep(5)


if __name__ == "__main__":
asyncio.run(main())
117 changes: 0 additions & 117 deletions uprotocol_vsomeip/examples/rpc.py

This file was deleted.

Loading