diff --git a/apps/rc/models.py b/apps/rc/models.py index 9fcc380..f873cd8 100644 --- a/apps/rc/models.py +++ b/apps/rc/models.py @@ -80,7 +80,6 @@ class RCConfiguration(Configuration): time_before = models.PositiveIntegerField(verbose_name='Time before [μS]', default=12) time_after = models.PositiveIntegerField(verbose_name='Time after [μS]', default=1) sync = models.PositiveIntegerField(verbose_name='Synchro delay', default=0) - ch_monitor = models.PositiveIntegerField(verbose_name='Channel Monitor', validators=[MinValueValidator(0), MaxValueValidator(15)], default=6) sampling_reference = models.CharField(verbose_name='Sampling Reference', choices=SAMPLING_REFS, default='none', max_length=40) control_tx = models.BooleanField(verbose_name='Control Switch TX', default=False) control_sw = models.BooleanField(verbose_name='Control Switch SW', default=False) @@ -253,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) @@ -267,6 +267,8 @@ class RCConfiguration(Configuration): #print(dum) states.append(dum) last = dum + print("Finish loading") + ######################################################################### if binary: ret = [] @@ -577,39 +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') - if not raw: - - + 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']) - 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' - - ############################################################## - data = {'setwindow': self.ch_monitor} - print(data) - payload = self.request('setwin', 'post', data=json.dumps(data)) - - if payload['setwindow'] == 'ok': - self.message = 'RC write: {}'.format(payload['setwindow']) + 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: - if payload['command'] != 'wrong format or key': - self.message = 'Error RC monitor channel: {}'.format(payload['command']) - ############################################################## + print("Not program CGS...") values = [] print('wait delay values...') @@ -660,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)