#! /usr/bin/env python
# -*- Encoding: utf-8 -*-
# 
#-------------------------------------------------------------------------
#
# Authors: LLG, ES, FH
# Date: 2018-05-14
# 
# Module to control the dome IP webcams (mainly the IR LEDs)
# 
# Hack to remotely control the IR leds and other parameters
#
#-------------------------------------------------------------------------

import sys
import os, os.path

#-------------------------------------------------------------------------

import webcam_wansview

#-------------------------------------------------------------------------

webcams_config = {
    #------------------------------------------------    
    1: {
        'name': "DOME-1",
        'host': '192.168.200.177',
        'login': 'admin',
        'password': 'dicedice' },
    #------------------------------------------------    
    2: {
        'name': "DOME-2",
        'host': '192.168.200.181',
        'login': 'admin',
        'password': '123456' },
    #------------------------------------------------    
    3: {
        'name': "DOME-3",
        'host': '192.168.200.177',
        'login': 'admin',
        'password': 'dicedice' }
    #------------------------------------------------    
}    

#-------------------------------------------------------------------------

# back dictionaries

webcams_byname = {}

for webcam, props in webcams_config.iteritems():
    webcams_byname[props['name']] = webcam

webcams_ids = webcams_config.keys()

#-------------------------------------------------------------------------

def resolve_webcam(requested_webcam):
    if requested_webcam in webcams_ids:
        return [requested_webcam]
    if requested_webcam in ["1","2","3"]:
        return [int(requested_webcam)]
    if requested_webcam.upper() == "ALL":
        return [1,2,3] # only the installed ones
    if webcams_byname.has_key(requested_webcam):
        return [webcams_byname[requested_webcam]]
    raise ValueError("Invalid webcam name or number [%s]. Stop." %
                     str(requested_webcam))

#-------------------------------------------------------------------------

def usage():
    print >>sys.stderr, \
        """
usage: webcam-wansview-ctrl <webcam> IR {ON|OFF}

    Command-line tool to turn ON/OFF the IR LEDs of the webcam(s).

      webcam-wansview-ctrl <webcam> IR {ON|OFF}

      <webcam> may be:
        A number [1-3]
        A webcam name: DOME-1 to DOME-3
       'all'

        """

#-------------------------------------------------------------------------

req_webcams = None    
on = None  # True / False

# print sys.argv

if len(sys.argv) < 4:
    usage()
    sys.exit(1)

req_webcams = sys.argv[1]
if sys.argv[2].upper() != 'IR':
    usage()
    sys.exit(1)
    
on_arg = sys.argv[3]
on_arg = on_arg.upper()
if (on_arg == "ON") or (on_arg == "1"):
    on = True
elif (on_arg == "OFF") or (on_arg == "0"):
    on = False
else:
    usage()
    sys.exit(1)

#-------------------------------------------------------------------------

try:
    webcams = resolve_webcam(req_webcams)
except ValueError:
    print >>sys.stderr, "error: unknown webcam(s) [%s]. Stop." % req_webcams
    sys.exit(2)

    
for webcam in webcams:
    props = webcams_config[webcam]
    result = webcam_wansview.IRled(host = props['host'],
                                   on = on,
                                   login = props['login'],
                                   password = props['password'])
    if not(result):
        print >>sys.stderr, "warning: webcam %d: Failed to change IR LEDs state. Skipping." % webcam
        # sys.exit(3)



