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.
66 lines
2.8 KiB
66 lines
2.8 KiB
# License: Apache 2.0. See LICENSE file in root directory.
|
|
# Copyright(c) 2024 Intel Corporation. All Rights Reserved.
|
|
|
|
# test:device D400*
|
|
|
|
import pyrealsense2 as rs
|
|
from rspy import test
|
|
from rspy import log
|
|
import time
|
|
|
|
dev = test.find_first_device_or_exit()
|
|
depth_sensor = dev.first_depth_sensor()
|
|
|
|
changed_options = 0
|
|
|
|
def notification_callback( opt_list ):
|
|
global changed_options
|
|
log.d( f"notification_callback called with {len(opt_list)} options" )
|
|
for opt in opt_list:
|
|
log.d( f" {opt.id} -> {opt.value}" )
|
|
if not depth_sensor.is_option_read_only( opt.id ): # Ignore accidental temperature changes
|
|
changed_options = changed_options + 1
|
|
|
|
depth_sensor.on_options_changed( notification_callback )
|
|
|
|
with test.closure( 'disabling auto exposure' ): # Need to disable or changing gain/exposure might automatically disable it
|
|
depth_sensor.set_option( rs.option.enable_auto_exposure, 0 )
|
|
test.check_equal( depth_sensor.get_option( rs.option.enable_auto_exposure ), 0.0 )
|
|
time.sleep( 1.5 ) # default options-watcher update interval is 1 second
|
|
|
|
with test.closure( 'set one option' ):
|
|
changed_options = 0
|
|
current_gain = depth_sensor.get_option( rs.option.gain )
|
|
depth_sensor.set_option( rs.option.gain , current_gain + 1 )
|
|
test.check_equal( depth_sensor.get_option( rs.option.gain ), current_gain + 1 )
|
|
time.sleep( 1.5 ) # default options-watcher update interval is 1 second
|
|
test.check_equal( changed_options, 1 )
|
|
changed_options = 0
|
|
|
|
with test.closure( 'set multiple options' ):
|
|
current_gain = depth_sensor.get_option( rs.option.gain )
|
|
depth_sensor.set_option( rs.option.gain , current_gain + 1 )
|
|
test.check_equal( depth_sensor.get_option( rs.option.gain ), current_gain + 1 )
|
|
current_exposure = depth_sensor.get_option( rs.option.exposure )
|
|
depth_sensor.set_option( rs.option.exposure , current_exposure + 1 )
|
|
test.check_equal( depth_sensor.get_option( rs.option.exposure ), current_exposure + 1 )
|
|
time.sleep( 2.5 ) # default options-watcher update interval is 1 second, multiple options might be updated on different intervals
|
|
test.check_equal( changed_options, 2 )
|
|
changed_options = 0
|
|
|
|
with test.closure( 'no sporadic changes' ):
|
|
changed_options = 0
|
|
time.sleep( 3 )
|
|
test.check_equal( changed_options, 0 )
|
|
|
|
with test.closure( 'cancel subscription' ):
|
|
depth_sensor = dev.first_depth_sensor() # Get new sensor, old sensor subscription is canceled
|
|
changed_options = 0
|
|
current_gain = depth_sensor.get_option( rs.option.gain )
|
|
depth_sensor.set_option( rs.option.gain , current_gain + 1 )
|
|
test.check_equal( depth_sensor.get_option( rs.option.gain ), current_gain + 1 )
|
|
time.sleep( 1.5 ) # default options-watcher update interval is 1 second
|
|
test.check_equal( changed_options, 0 )
|
|
|
|
test.print_results_and_exit()
|