class StdDaq(DeviceBase): def __init__(self, name, url, simulated=False): DeviceBase.__init__(self, name) self.url=url self.req_id = None if simulated: self.setSimulated() self.simulated_id=1 self.simulated_config = {"detector_name": "eg","detector_type": "eiger","n_modules": 2,"bit_depth": 32,"image_pixel_height": 514,"image_pixel_width": 1030,"start_udp_port": 50000} def doInitialize(self): pass def start(self, n_images, output_file): self.state.assertIs(State.Ready) self.n_images=n_images self.output_file=output_file if not self.simulated: data = {"sources":"eiger", "n_images":10, "output_file":"/tmp/test.h5"} headers = {'Content-type': 'application/json'} r = requests.post(url = self.url + "/write_async", json=data, headers=headers) self.req_id = int(str(r.json()["request_id"])) else: self.req_id = self.simulated_id self.simulated_id=self.simulated_id+1 print "Started request: ", self.req_id self.setCache(self.req_id, None) self.setState(State.Busy) fork (self.monitor) def abort(self): self.state.assertIs(State.Busy) print "Aborting request: ", self.req_id if not self.simulated: data = {"request_id":self.req_id} headers = {'Content-type': 'application/json'} r = requests.post(url = self.url + "/write_kill", json=data, headers=headers) self.setCache(None, None) self.setState(State.Ready) def monitor(self): done = False start=time.time() timeout = 5 if self.simulated else -1 while self.getState()==State.Busy: if (timeout >=0) and ((time.time()-start)>=timeout): done = True if not self.simulated: pass #TODO: Check Status if done: print "Finished request: ", self.req_id self.setCache(None, None) self.setState(State.Ready) time.sleep(0.2) def get_config(self): if self.simulated: return self.simulated_config #TODO def set_config(self, config): if type(config) == dict or isinstance(config, java.util.Map) : if self.simulated: self.simulated_config=config #TODO def doClose(self): pass