diff --git a/apps/rc/models.py b/apps/rc/models.py index 681a4c7..f873cd8 100644 --- a/apps/rc/models.py +++ b/apps/rc/models.py @@ -252,10 +252,11 @@ class RCConfiguration(Configuration): #print('ups_arr', ups_arr) #print('dws_arr', dws_arr) + #####################Code for load configuration######################### for x in points: dum = [] print('loading', x*100/max(points)) - + for i in range(n_pulses): if x in ups_arr[i]: dum.append(1) @@ -266,6 +267,8 @@ class RCConfiguration(Configuration): #print(dum) states.append(dum) last = dum + print("Finish loading") + ######################################################################### if binary: ret = [] @@ -576,24 +579,49 @@ class RCConfiguration(Configuration): def write_device(self, raw=False): print("write device") + ##############Comando status a CGS para hacer programacion ############ + try: + self.device.status = 0 + cgs = self.request('status_cgs') + print('CGS status ok') # solo para depurar lo que devuelve CGS + except Exception as e: + cgs = {'multiplier': 60, 'divider': 10, 'reference_clk': 1} # simulando parametros devueltos por el cgs + if 'No route to host' not in str(e): + self.device.status = 4 + self.device.save() + self.message = 'CGS status: {}'.format(str(e)) + print('not cgs status') + + print(cgs) if not raw: clock = RCClock.objects.get(rc_configuration=self) + print('clock_freq', clock.frequency) + print('clock_mult', clock.multiplier) + print('clock_div', clock.divisor) + print('clock_ref', clock.reference) + print('cgs', cgs) if clock.mode: - data = {'default': clock.frequency} + data = {'default': clock.frequency} # mult=72, div=12 else: data = {'manual': [clock.multiplier, clock.divisor, clock.reference]} - payload = self.request('setfreq', 'post', data=json.dumps(data)) - #if payload['setfreq'] != 'ok': - if payload['command'] != 'ok': - #self.message = 'RC write: {}'.format(payload['setfreq']) - self.message = 'RC write: {}'.format(payload['command']) + print('data', data) + int_cgs_multiplier=int(cgs['multiplier']) + int_cgs_divisor=int(cgs['divider']) + int_cgs_reference=int(cgs['reference_clk']) + print(cgs['divider']) + + if clock.multiplier != int_cgs_multiplier or clock.divisor != int_cgs_divisor or clock.reference != int_cgs_reference: + print("Program CGS...") + payload = self.request('setfreq', 'post', data=json.dumps(data))#data=data)#data=json.dumps(data)) + if payload['command'] != 'ok': + self.message = 'RC write: {}'.format(payload['command']) + else: + self.message = payload['programming'] + if payload['programming'] == 'fail': + self.message = 'RC write: error programming CGS chip' else: - #self.message = payload['setfreq'] - self.message = payload['programming'] - #if payload['setfreq'] == 'fail': - if payload['programming'] == 'fail': - self.message = 'RC write: error programming CGS chip' + print("Not program CGS...") values = [] print('wait delay values...') @@ -644,8 +672,8 @@ class RCConfiguration(Configuration): cnt = 0 while x < n: print('writing...', cnt) - payload = self.request('write', 'post', data=b64encode(data[x:x+3072]))#(data))# - x += 3072 + payload = self.request('write', 'post', data=b64encode(data[x:x+16384]))#(data))# + x += 16384 cnt += 1#time.sleep(1) print('writing...', x*100/n)