in sample_app/onvif_camera_mock/artifacts/onvif_srvd/src/onvif_srvd.cpp [253:452]
void processing_cmd(int argc, char *argv[])
{
int opt;
StreamProfile profile;
while( (opt = getopt_long(argc, argv, short_opts, long_opts, NULL)) != -1 )
{
switch( opt )
{
case LongOpts::help:
puts(help_str);
exit_if_not_daemonized(EXIT_SUCCESS);
break;
case LongOpts::version:
puts(DAEMON_NAME " version " DAEMON_VERSION_STR "\n");
exit_if_not_daemonized(EXIT_SUCCESS);
break;
//daemon options
case LongOpts::no_chdir:
daemon_info.no_chdir = 1;
break;
case LongOpts::no_fork:
daemon_info.no_fork = 1;
break;
case LongOpts::no_close:
daemon_info.no_close_stdio = 1;
break;
case LongOpts::pid_file:
daemon_info.pid_file = optarg;
break;
case LongOpts::log_file:
daemon_info.log_file = optarg;
break;
//ONVIF Service options (context)
case LongOpts::port:
service_ctx.port = atoi(optarg);
break;
case LongOpts::user:
service_ctx.user = optarg;
break;
case LongOpts::password:
service_ctx.password = optarg;
break;
case LongOpts::manufacturer:
service_ctx.manufacturer = optarg;
break;
case LongOpts::model:
service_ctx.model = optarg;
break;
case LongOpts::firmware_ver:
service_ctx.firmware_version = optarg;
break;
case LongOpts::serial_num:
service_ctx.serial_number = optarg;
break;
case LongOpts::hardware_id:
service_ctx.hardware_id = optarg;
break;
case LongOpts::scope:
service_ctx.scopes.push_back(optarg);
break;
case LongOpts::ifs:
service_ctx.eth_ifs.push_back(Eth_Dev_Param());
if( service_ctx.eth_ifs.back().open(optarg) != 0 )
daemon_error_exit("Can't open ethernet interface: %s - %m\n", optarg);
break;
case LongOpts::tz_format:
if( !service_ctx.set_tz_format(optarg) )
daemon_error_exit("Can't set tz_format: %s\n", service_ctx.get_cstr_err());
break;
//Media Profile for ONVIF Media Service
case LongOpts::name:
if( !profile.set_name(optarg) )
daemon_error_exit("Can't set name for Profile: %s\n", profile.get_cstr_err());
break;
case LongOpts::width:
if( !profile.set_width(optarg) )
daemon_error_exit("Can't set width for Profile: %s\n", profile.get_cstr_err());
break;
case LongOpts::height:
if( !profile.set_height(optarg) )
daemon_error_exit("Can't set height for Profile: %s\n", profile.get_cstr_err());
break;
case LongOpts::url:
if( !profile.set_url(optarg) )
daemon_error_exit("Can't set URL for Profile: %s\n", profile.get_cstr_err());
break;
case LongOpts::snapurl:
if( !profile.set_snapurl(optarg) )
daemon_error_exit("Can't set URL for Snapshot: %s\n", profile.get_cstr_err());
break;
case LongOpts::type:
if( !profile.set_type(optarg) )
daemon_error_exit("Can't set type for Profile: %s\n", profile.get_cstr_err());
if( !service_ctx.add_profile(profile) )
daemon_error_exit("Can't add Profile: %s\n", service_ctx.get_cstr_err());
profile.clear(); //now we can add new profile (just uses one variable)
break;
//PTZ Profile for ONVIF PTZ Service
case LongOpts::ptz:
service_ctx.get_ptz_node()->enable = true;
break;
case LongOpts::move_left:
if( !service_ctx.get_ptz_node()->set_move_left(optarg) )
daemon_error_exit("Can't set process for pan left movement: %s\n", service_ctx.get_ptz_node()->get_cstr_err());
break;
case LongOpts::move_right:
if( !service_ctx.get_ptz_node()->set_move_right(optarg) )
daemon_error_exit("Can't set process for pan right movement: %s\n", service_ctx.get_ptz_node()->get_cstr_err());
break;
case LongOpts::move_up:
if( !service_ctx.get_ptz_node()->set_move_up(optarg) )
daemon_error_exit("Can't set process for tilt up movement: %s\n", service_ctx.get_ptz_node()->get_cstr_err());
break;
case LongOpts::move_down:
if( !service_ctx.get_ptz_node()->set_move_down(optarg) )
daemon_error_exit("Can't set process for tilt down movement: %s\n", service_ctx.get_ptz_node()->get_cstr_err());
break;
case LongOpts::move_stop:
if( !service_ctx.get_ptz_node()->set_move_stop(optarg) )
daemon_error_exit("Can't set process for stop movement: %s\n", service_ctx.get_ptz_node()->get_cstr_err());
break;
case LongOpts::move_preset:
if( !service_ctx.get_ptz_node()->set_move_preset(optarg) )
daemon_error_exit("Can't set process for goto preset movement: %s\n", service_ctx.get_ptz_node()->get_cstr_err());
break;
default:
puts("for more detail see help\n\n");
exit_if_not_daemonized(EXIT_FAILURE);
break;
}
}
}