##// END OF EJS Templates
Update abs operations
jespinoza -
r313:9bf21dca53e0
parent child
Show More
@@ -377,8 +377,10 class ABSConfiguration(Configuration):
377 return False
377 return False
378
378
379 #-------------Write each abs module-----------
379 #-------------Write each abs module-----------
380
380 if beams:
381 if beams:
381 message = 'SNDF{:02d}'.format(nbeams)
382 block_id = 0
383 message = 'SNDF{:03d}{:02d}{:02d}'.format(nbeams, nbeams, block_id)
382 for i, status in enumerate(self.module_status):
384 for i, status in enumerate(self.module_status):
383 message += ''.join([fromBinary2Char(beam.module_6bits(i)) for beam in beams])
385 message += ''.join([fromBinary2Char(beam.module_6bits(i)) for beam in beams])
384 status = ['0'] * 64
386 status = ['0'] * 64
@@ -386,9 +388,10 class ABSConfiguration(Configuration):
386
388
387 sock = self.send_multicast(message)
389 sock = self.send_multicast(message)
388
390
389 for i in range(64):
391 for i in range(32):
390 try:
392 try:
391 data, address = sock.recvfrom(1024)
393 data, address = sock.recvfrom(1024)
394 print address, data
392 if data == '1':
395 if data == '1':
393 status[int(address[0][10:])-1] = '3'
396 status[int(address[0][10:])-1] = '3'
394 elif data == '0':
397 elif data == '0':
@@ -408,7 +411,7 class ABSConfiguration(Configuration):
408 return False
411 return False
409 else:
412 else:
410 self.message = "ABS Beams List have been sent to ABS Modules"
413 self.message = "ABS Beams List have been sent to ABS Modules"
411 beams[0].set_as_activebeam()
414 self.active_beam = beams[0].pk
412
415
413 self.device.status = 3
416 self.device.status = 3
414 self.module_status = ''.join(status)
417 self.module_status = ''.join(status)
@@ -481,7 +484,7 class ABSConfiguration(Configuration):
481 for i, status in enumerate(self.module_status):
484 for i, status in enumerate(self.module_status):
482 if status != '0':
485 if status != '0':
483 num += 1
486 num += 1
484 print('status {}:{}'.format(i+1, status))
487 #print('status {}:{}'.format(i+1, status))
485 return num
488 return num
486
489
487 def send_multicast(self, message):
490 def send_multicast(self, message):
@@ -489,8 +492,9 class ABSConfiguration(Configuration):
489 multicast_group = ('224.3.29.71', 10000)
492 multicast_group = ('224.3.29.71', 10000)
490 # Create the datagram socket
493 # Create the datagram socket
491 sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
494 sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
492 sock.settimeout(0.01)
495 sock.settimeout(0.5)
493 local_ip = "0.0.0.0"
496 local_ip = "192.168.1.128"
497 sock.bind((local_ip, 10000))
494 sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_IF, socket.inet_aton(local_ip))
498 sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_IF, socket.inet_aton(local_ip))
495 sent = sock.sendto(message, multicast_group)
499 sent = sock.sendto(message, multicast_group)
496 print('Sending ' + message)
500 print('Sending ' + message)
@@ -506,9 +510,11 class ABSConfiguration(Configuration):
506
510
507 n = 0
511 n = 0
508 status = ['0'] * 64
512 status = ['0'] * 64
509 for i in range(64):
513 for i in range(32):
514 #if True:
510 try:
515 try:
511 data, address = sock.recvfrom(1024)
516 data, address = sock.recvfrom(1024)
517 print address, data
512 if data == '1':
518 if data == '1':
513 status[int(address[0][10:])-1] = '3'
519 status[int(address[0][10:])-1] = '3'
514 elif data == '0':
520 elif data == '0':
@@ -516,6 +522,7 class ABSConfiguration(Configuration):
516 n += 1
522 n += 1
517 print('Module: {} connected'.format(address))
523 print('Module: {} connected'.format(address))
518 except:
524 except:
525 print('Module: {} error'.format(address))
519 pass
526 pass
520 sock.close()
527 sock.close()
521
528
@@ -538,13 +545,17 class ABSConfiguration(Configuration):
538 """
545 """
539
546
540 # Se manda a cero RC para poder realizar cambio de beam
547 # Se manda a cero RC para poder realizar cambio de beam
541 confs = Configuration.objects.filter(experiment = self.experiment).filter(type=0)
548 if self.experiment is None:
549 confs = []
550 else:
551 confs = Configuration.objects.filter(experiment = self.experiment).filter(type=0)
542 confdds = ''
552 confdds = ''
543 confjars = ''
553 confjars = ''
544 confrc = ''
554 confrc = ''
545
555 print 'Starting...', self.experiment
546 #TO STOP DEVICES: DDS-JARS-RC
556 #TO STOP DEVICES: DDS-JARS-RC
547 for i in range(0,len(confs)):
557 for i in range(0,len(confs)):
558 print i
548 if i==0:
559 if i==0:
549 for conf in confs:
560 for conf in confs:
550 if conf.device.device_type.name == 'dds':
561 if conf.device.device_type.name == 'dds':
@@ -559,11 +570,12 class ABSConfiguration(Configuration):
559 break
570 break
560 if i==2:
571 if i==2:
561 for conf in confs:
572 for conf in confs:
573 print conf
562 if conf.device.device_type.name == 'rc':
574 if conf.device.device_type.name == 'rc':
563 confrc = conf
575 confrc = conf
564 confrc.stop_device()
576 confrc.stop_device()
565 break
577 break
566
578 print 'Stop devices'
567 if beam_pos > 0:
579 if beam_pos > 0:
568 beam_pos = beam_pos - 1
580 beam_pos = beam_pos - 1
569 else:
581 else:
@@ -573,9 +585,10 class ABSConfiguration(Configuration):
573 #El servidor tcp en el embebido comienza a contar desde 0
585 #El servidor tcp en el embebido comienza a contar desde 0
574 status = ['0'] * 64
586 status = ['0'] * 64
575 message = 'CHGB{}'.format(beam_pos)
587 message = 'CHGB{}'.format(beam_pos)
588 print 'Before send'
576 sock = self.send_multicast(message)
589 sock = self.send_multicast(message)
577
590 print 'Waiting'
578 for i in range(64):
591 for i in range(32):
579 try:
592 try:
580 data, address = sock.recvfrom(1024)
593 data, address = sock.recvfrom(1024)
581 print address, data
594 print address, data
@@ -670,6 +683,7 class ABSBeam(models.Model):
670 """
683 """
671 This function reads antenna pattern and choose 6bits (upbits-downbits) for one abs module
684 This function reads antenna pattern and choose 6bits (upbits-downbits) for one abs module
672 """
685 """
686 module += 1
673 if module > 64:
687 if module > 64:
674 beam_bits = ""
688 beam_bits = ""
675 return beam_bits
689 return beam_bits
@@ -5,6 +5,7 from apps.abs import views
5 urlpatterns = (
5 urlpatterns = (
6 url(r'^(?P<id_conf>-?\d+)/$', views.abs_conf, name='url_abs_conf'),
6 url(r'^(?P<id_conf>-?\d+)/$', views.abs_conf, name='url_abs_conf'),
7 url(r'^(?P<id_conf>-?\d+)/edit/$', views.abs_conf_edit, name='url_edit_abs_conf'),
7 url(r'^(?P<id_conf>-?\d+)/edit/$', views.abs_conf_edit, name='url_edit_abs_conf'),
8 url(r'^alert/$', views.abs_conf_alert, name='url_alert_abs_conf'),
8 url(r'^(?P<id_conf>-?\d+)/import/$', views.import_file, name='url_import_abs_conf'),
9 url(r'^(?P<id_conf>-?\d+)/import/$', views.import_file, name='url_import_abs_conf'),
9 #url(r'^(?P<id_conf>-?\d+)/status/', views.abs_conf, {'status_request':True},name='url_status_abs_conf'),
10 #url(r'^(?P<id_conf>-?\d+)/status/', views.abs_conf, {'status_request':True},name='url_status_abs_conf'),
10 url(r'^(?P<id_conf>-?\d+)/change_beam/(?P<id_beam>-?\d+)/$', views.send_beam, name='url_send_beam'),
11 url(r'^(?P<id_conf>-?\d+)/change_beam/(?P<id_beam>-?\d+)/$', views.send_beam, name='url_send_beam'),
@@ -5,6 +5,7 from django.contrib import messages
5 from django.conf import settings
5 from django.conf import settings
6 from django.http import HttpResponse
6 from django.http import HttpResponse
7 from django.core.urlresolvers import reverse
7 from django.core.urlresolvers import reverse
8 from django.views.decorators.csrf import csrf_exempt
8
9
9 from datetime import datetime
10 from datetime import datetime
10 from time import sleep
11 from time import sleep
@@ -200,6 +201,15 def abs_conf_edit(request, id_conf):
200
201
201 return render(request, 'abs_conf_edit.html', kwargs)
202 return render(request, 'abs_conf_edit.html', kwargs)
202
203
204 @csrf_exempt
205 def abs_conf_alert(request):
206
207 if request.method == 'POST':
208 print request.POST
209 return HttpResponse(json.dumps({'result':1}), content_type='application/json')
210 else:
211 return redirect('index')
212
203
213
204 def import_file(request, id_conf):
214 def import_file(request, id_conf):
205
215
@@ -342,7 +352,6 def remove_beam(request, id_conf, id_beam):
342 if request.method=='POST':
352 if request.method=='POST':
343 if beam:
353 if beam:
344 try:
354 try:
345 beam.remove_beamfromlist()
346 beam.delete()
355 beam.delete()
347 messages.success(request, 'Beam: "%s" has been deleted.' % beam)
356 messages.success(request, 'Beam: "%s" has been deleted.' % beam)
348 except:
357 except:
@@ -403,4 +412,4 def plot_pattern(request, id_conf, id_beam, antenna):
403 fig.savefig(buf, format='png')
412 fig.savefig(buf, format='png')
404 response = HttpResponse(buf.getvalue(), content_type='image/png')
413 response = HttpResponse(buf.getvalue(), content_type='image/png')
405 return response
414 return response
406 No newline at end of file
415
General Comments 0
You need to be logged in to leave comments. Login now