You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.5 KiB
55 lines
1.5 KiB
# License: Apache 2.0. See LICENSE file in root directory.
|
|
# Copyright(c) 2023 Intel Corporation. All Rights Reserved.
|
|
|
|
import pyrealdds as dds
|
|
from rspy import log, test
|
|
|
|
dds.debug( log.is_debug_on(), log.nested )
|
|
|
|
import d435i
|
|
|
|
|
|
participant = dds.participant()
|
|
participant.init( 123, "server" )
|
|
|
|
|
|
# set up a server device with a single color stream
|
|
device_server = dds.device_server( participant, d435i.device_info.topic_root )
|
|
|
|
color_stream = dds.color_stream_server( "Color", "RGB Camera" )
|
|
color_stream.enable_metadata() # not there in d435i by default
|
|
color_stream.init_profiles( d435i.color_stream_profiles(), 0 )
|
|
color_stream.init_options( [] )
|
|
color_stream.set_intrinsics( d435i.color_stream_intrinsics() )
|
|
|
|
def on_control( server, id, control, reply ):
|
|
# the control has already been output to debug by the calling code, as will the reply
|
|
return True # otherwise the control will be flagged as error
|
|
|
|
device_server.on_control( on_control )
|
|
device_server.init( [color_stream], [], {} )
|
|
|
|
|
|
def broadcast():
|
|
global device_server
|
|
device_server.broadcast( d435i.device_info )
|
|
|
|
|
|
def new_image( width, height, bpp, timestamp_as_ns = None ):
|
|
i = dds.message.image()
|
|
i.width = width
|
|
i.height = height
|
|
i.data = bytearray( width * height * bpp )
|
|
if timestamp_as_ns is not None:
|
|
i.timestamp = dds.time.from_ns( timestamp_as_ns )
|
|
return i
|
|
|
|
|
|
def publish_image( img, timestamp ):
|
|
img.timestamp = timestamp
|
|
color_stream.publish_image( img )
|
|
|
|
|
|
# From here down, we're in "interactive" mode (see test-metadata.py)
|
|
# ...
|