#!/usr/bin/python

# starts snapping test mass camera pictures every 10 seconds
# pictures end up in /ligo/data/camera

import time
import numpy as np
import ezca as ez
ezca = ez.Ezca()

file_tag = ''
cam_num_list = ['21', '23', '25', '27']
cam_prefix = 'VID-CAM'
cam_list = []

exposure_time_list = [30, 100, 300, 1000, 3000, 10000]
exposure_name_list = ['A', 'B', 'C', 'D', 'E', 'F']
exposure_list = zip(exposure_time_list, exposure_name_list)

exposure_final_list = []

# make list of camera names
for cam_num in cam_num_list:
  cam_list.append(cam_prefix + cam_num);

# record exposure times
print ''
print 'Initial exposure times'
for cam in cam_list:
  exp_val = ezca[cam + '_EXP']
  print('{0} initial exposure is {1}').format(cam, exp_val)
  exposure_final_list.append(exp_val)
exposure_final = zip(cam_list, exposure_final_list)

# take pictures at various exposures
for exposure_time, exposure_name in exposure_list:
  print ''
  print 'Exposure ' + exposure_name

  # set file names and exposure times
  for cam in cam_list:
    ezca[cam + '_FILE'] = 'multiexp_' + file_tag + exposure_name
    ezca[cam + '_EXP'] = exposure_time
    time.sleep(0.5)

  # pause for effect, then take pictures
  for cam in cam_list:
    ezca[cam + '_SNAP'] = 1
    time.sleep(0.5)

  # print sum
  for cam in cam_list:
    print('{0} sum is {1}').format(cam, ezca[cam + '_SUM'])

# reset exposure times
print ''
print 'Reset exposure times'
for cam, exposure_time in exposure_final:
  ezca[cam + '_EXP'] = exposure_time

print ''
print 'Done.'
