#!/usr/bin/env python3
"""Axis video & PTZ node
"""

import rospy

from axis_camera.axis_camera import Axis
from axis_camera.axis_ptz import AxisPTZ

def updateArgs(arg_defaults):
    '''Look up parameters starting in the driver's private parameter space, but
    also searching outer namespaces
    '''
    args = {}
    for name, val in arg_defaults.items():
        if rospy.has_param('~' + name):
            args[name] = rospy.get_param('~' + name)
        else:
            args[name] = rospy.get_param(name, val)
    # resolve frame_id with tf_prefix
    args['frame_id'] = args['frame_id'].lstrip('/')
    tf_prefix = rospy.get_param('tf_prefix', '').lstrip('/')
    if tf_prefix:
        args['frame_id'] = tf_prefix + '/' + args['frame_id']
    return(args)


def main():
    rospy.init_node("axis_camera_node")

    arg_defaults = {
        'hostname': '192.168.0.90',       # default IP address
        'username': 'root',               # default login name
        'password': '',
        'width': 640,
        'height': 480,
        'fps': 0,                         # frames per second (0 = camera default)
        'frame_id': 'axis_camera_link',
        'camera_info_url': '',
        'use_encrypted_password' : True,
        'camera' : 0,
        'ir': False,
        'defog': False,
        'wiper': False,
        'ptz': False }

    args = updateArgs(arg_defaults)

    axis = Axis(args)

    if args['ptz']:
        ptz = AxisPTZ(axis, args)

    rospy.spin()

if __name__=='__main__':
    main()
