import scheduler
from stardice import configfiles
from glob import glob
import astropy.io.fits as pyfits
import logging
logging.basicConfig(format='%(asctime)s %(message)s', level=logging.DEBUG)
import numpy as np
from notification import notify
import os

outdir = '../data/spectro_bench/wavescan'
if not os.path.exists(outdir):
    os.mkdir(outdir)


dkd_pos = 145709
zwo_pos = 91900
sbig_pos = 31500

config = configfiles.Config('spectro_bench.cfg')

sched = scheduler.Scheduler(config)


d = sched.get_default()

d['phd.range'] = 2e-5
d['phd.nsamples'] = 10
d['dkd.range'] = 2e-10
d['dkd.nsamples'] = 10
d['zwo'] = False
d['xy.x'] = int(dkd_pos)

notify('wavelength scan started')
try:
    for led in range(32, 48):
        notify(f'Starting led {led}')
        d['ar.led'] = led
        d['ar.iled'] = 1000
        d['mono.grating'] = 2#  if led['led'] > 5 else 2
        d['ar.shutter'] = 'close'
        for i in range(20):
            sched.shoot(d, outdir)
        d['ar.shutter'] = 'open'
        for wavelen in range(300, 1100):
            d['mono.wavelength'] = int(wavelen)
            sched.shoot(d, outdir)
            sched.shoot(d, outdir)
        d['ar.shutter'] = 'close'
        for i in range(10):
            sched.shoot(d, outdir)
finally:
    notify('Wavelength scan stopped')
