from subsystems import Subsystem
import numpy as np

class Keithley(Subsystem):
    tracked_properties=['range', 'nsamples']
    expected_params={'range': 'IDLE',
                     'nsamples': 'IDLE',
                     'repeat': '1',
                     }
    
    def _config(self):
        self.server.setup()

    #def before_exposure(self, exposure, fitsbuilder):
    #    super().before_exposure(exposure, fitsbuilder)

    def exposure(self, exposure, fitsbuilder):
        res = self._process_params(exposure)
        self.server.non_blocking_read(int(res['repeat']))
        #print('non_blocking_read called')
        
    def after_exposure(self, exposure, fitsbuilder):
        super().after_exposure(exposure, fitsbuilder)
        res = self.server.join()
        results = dict(zip([self.name+f for f in ['NSPL', 'MEAN', 'VAR', 'MED', 'STA', 'STO']],
                           [len(res[0]), np.mean(res[0]), np.var(res[0]), np.median(res[0]), np.min(res[1]), np.max(res[1])]))
        fitsbuilder.append(results)

    def set_repeat(self, val):
        pass
