from subsystems import Subsystem, decode


class ASICamera(Subsystem):
    expected_params = {'exptime':0.1,
                       'gain':100,
                       'offset':100,}
    tracked_properties = ['exptime', 'gain', 'offset']
    
    def _config(self):
        self.connect()
        
    def connect(self):
        try:
            self.server.connect()
            self.server.default()
        except:
            self.server.connect()
            self.server.default()
            

    def exposure(self, exposure, fitsbuilder):
        #servers.camera.freeze_cooling_power()
        #open_shutter =  exposure[self.name] == 'Open'
        image = decode(self.server.remote_exposure())
        image.pop('SupportedVideoFormat')
        image.pop('SupportedBins')
        fitsbuilder.add_image(image)

    def _extended_status(self):
        d = self.server.status()
        d.pop('SupportedVideoFormat')
        d.pop('SupportedBins')
        return d
