#!/usr/bin/env python


try:
	import nds as nds2
except ImportError:
	import nds2


from gpstime import gpstime

import prettytable


def get_value_at(conn, pv_name, time):
	buf = conn.fetch(time, time + 60, [pv_name + '.mean,m-trend'])
	return buf[0].data[0]


def main():
	t0 = 1253653218
	t1 = 1256330418

	t0 = int(int(t0) / 60) * 60
	t1 = int(int(t1) / 60) * 60

	pt = prettytable.PrettyTable(['Name', 't0', 't1', 'diff'])
	pt.set_style(prettytable.PLAIN_COLUMNS)
	pt.padding_width = 1

	pt.align['Name'] = 'l'
	pt.align['t0'] = 'r'
	pt.align['t1'] = 'r'
	pt.align['diff'] = 'r'

	conn = nds2.connection('h1nds1', 8088)

	# M0
	for optic in ['ITMX', 'ITMY', 'ETMX', 'ETMY']:
		for dof in ['P', 'Y']:
			pv_name_1 = 'H1:SUS-' + optic + '_' + 'M0' + '_' + 'OPTICALIGN' + '_' + dof + '_' + 'OUTPUT'
			pv_name_2 = 'H1:SUS-' + optic + '_' + 'M0' + '_' + 'DRIVEALIGN' + '_' + dof + '_' + 'OUTMON'
			pv_name_3 = 'H1:SUS-' + optic + '_' + 'M0' + '_' + 'OPTICALIGN' + '_' + dof + '_' + 'GAIN'

			val_t0 = (get_value_at(conn, pv_name_1, t0) + get_value_at(conn, pv_name_2, t0)) / get_value_at(conn, pv_name_3, t0)
			val_t1 = (get_value_at(conn, pv_name_1, t1) + get_value_at(conn, pv_name_2, t1)) / get_value_at(conn, pv_name_3, t1)
			diff = val_t0 - val_t1
			pt.add_row([optic + ' ' + 'M0' + ' ' + dof, val_t0, val_t1, diff])

	# M1
	for optic in ['BS', 'MC1', 'MC2', 'MC3', 'PRM', 'PR2', 'PR3', 'SRM', 'SR2', 'SR3', 'IM1', 'IM2', 'IM3', 'IM4', 'RM1', 'RM2']:
		for dof in ['P', 'Y']:
			pv_name_1 = 'H1:SUS-' + optic + '_' + 'M1' + '_' + 'OPTICALIGN' + '_' + dof + '_' + 'OUTPUT'
			pv_name_2 = 'H1:SUS-' + optic + '_' + 'M1' + '_' + 'DRIVEALIGN' + '_' + dof + '_' + 'OUTMON'
			pv_name_3 = 'H1:SUS-' + optic + '_' + 'M1' + '_' + 'OPTICALIGN' + '_' + dof + '_' + 'GAIN'

			val_t0 = (get_value_at(conn, pv_name_1, t0) + get_value_at(conn, pv_name_2, t0)) / get_value_at(conn, pv_name_3, t0)
			val_t1 = (get_value_at(conn, pv_name_1, t1) + get_value_at(conn, pv_name_2, t1)) / get_value_at(conn, pv_name_3, t1)
			diff = val_t0 - val_t1
			pt.add_row([optic + ' ' + 'M1' + ' ' + dof, val_t0, val_t1, diff])

	print 't0: {0}'.format(t0)
	print 't1: {0}'.format(t1)

	print pt

main()

