From 11329db50ea3e084fc500e6a18b9751b39920f51 Mon Sep 17 00:00:00 2001 From: Duquenoy Date: Thu, 28 Feb 2019 11:20:09 +0100 Subject: [PATCH] Ansible terminé et démonstration fonctionnelle --- Ansible/ansible.yml | 32 +++++++++++++++++++++++++++----- Raspberry/listener | Bin 18216 -> 0 bytes Raspberry/listener.c | 26 +++++++++++--------------- Raspberry/seriallistener | Bin 0 -> 14064 bytes Serveur/main | Bin 18048 -> 0 bytes Serveur/main.c | 13 ++++++++----- Serveur/serial | 1 - 7 files changed, 46 insertions(+), 26 deletions(-) delete mode 100644 Raspberry/listener create mode 100755 Raspberry/seriallistener delete mode 100644 Serveur/serial diff --git a/Ansible/ansible.yml b/Ansible/ansible.yml index f8f97b4..4ec344c 100644 --- a/Ansible/ansible.yml +++ b/Ansible/ansible.yml @@ -12,17 +12,33 @@ - name: "Copie du fichier de lecture série" copy: - src: ~/pfe/serial - dest: /home/pi/{{ servernames }}/serial + src: ~/pfe/seriallistener + dest: /home/pi/{{ servernames }}/seriallistener + + - name: "Droit d'execution pour serial_listener" + shell: chmod +x /home/pi/{{ servernames }}/seriallistener - name: "Copie du binaire pour le(s) capteur(s)" copy: src: ~/pfe/files/{{ binary_dir }}/out.bin dest: /home/pi/{{ servernames }}/out.bin + - name: "Copie du ficher de correspondance" + shell: cp /home/pi/config_raspberry.txt /home/pi/{{ servernames }}/ + + - name: "Récupération des périphériques à flasher" + shell: grep -Ff /home/pi/{{ servernames }}/config_experimentation.txt /home/pi/config_raspberry.txt | cut -d= -f3 + register: devices_to_flash + + - name: "Flashage des boards" + shell: cp /home/pi/{{ servernames }}/out.bin /media/pi/{{ item }} + with_items: "{{ devices_to_flash.stdout_lines }}" + - name: "Lancement du programme de lecture série" - command: /home/pi/while - async: 3000000 + command: /home/pi/{{ servernames }}/seriallistener + args: + chdir: ./{{ servernames }} + async: 3000000 poll: 0 - name: "Exp en cours ..." @@ -30,7 +46,7 @@ seconds: "{{ exp_duration }}" - name: "Kill de l'application" - shell: pkill while + shell: pkill -9 seriallistener - name: "Récupération des noms des résultats" shell: (cd /home/pi/{{ servernames }}/res; find . -maxdepth 1 -type f) | cut -d'/' -f2 @@ -45,3 +61,9 @@ - name: "Suppression du dossier sur le noeud" shell: rm -rf /home/pi/{{ servernames }} + + - name: "Suppression du fichier d'experimentation" + file: + path: "~/pfe/toflash/{{ servernames }}.yml.started" + state: absent + delegate_to: 127.0.0.1 diff --git a/Raspberry/listener b/Raspberry/listener deleted file mode 100644 index 33ceb9f..0000000 Binary files a/Raspberry/listener and /dev/null differ diff --git a/Raspberry/listener.c b/Raspberry/listener.c index 2914e9b..afe917d 100644 --- a/Raspberry/listener.c +++ b/Raspberry/listener.c @@ -25,14 +25,10 @@ typedef struct{ void sig_handler(int sig) { - if (sig == SIGINT){ + if (sig == SIGTERM){ printf("\nSignal SIGINT received\n"); sig_received = 1; } - else if (sig == SIGKILL){ - printf("\nSignal SIGKILL received\n"); - sig_received = 1; - } } void create_error_file(char *str, char *msg){ @@ -67,7 +63,7 @@ void save_data(int pt, char* sensor){ while(1){ int r = read(pt ,line,1); if(r>=0){ - printf("sensor : %s - c = %c (characters read : %d)\n\n", sensor, line[0], r); + //printf("sensor : %s - c = %c (characters read : %d)\n\n", sensor, line[0], r); r = fprintf(file, "%c",line[0]); } fflush(file); @@ -78,18 +74,18 @@ void save_data(int pt, char* sensor){ } } fclose(file); - printf("end save_data\n"); + //printf("end save_data\n"); } void reset_serial(int pt){ tcsetattr(pt, TCSANOW, &old); close(pt); - printf("end reset_serial\n"); + //printf("end reset_serial\n"); } int set_serial(SensorAndPort* sensorAndPort){ char *device = sensorAndPort->port; - printf("device : %s\n",device); + //printf("device : %s\n",device); int pt = open(device, O_RDWR | O_NOCTTY | O_SYNC); // retourne une erreur si le terminal n'est connecté à rien (pas de STM32 ni de Arduino dans notre cas) if(pt == -1){ create_error_file(sensorAndPort->sensor, "impossible de se connecter au port série, veuillez vérifier le microprocesseur et la raspberry"); @@ -165,7 +161,7 @@ void get_ports_to_read(char list_sensors[MAX_SENSORS][30], char list_serial_port j++; } if(j==count_serial_port){ - printf("Il n'y a pas de capteurs avec ce nom : %s\n",list_sensors[i]); + //printf("Il n'y a pas de capteurs avec ce nom : %s\n",list_sensors[i]); create_error_file(list_sensors[i],"Il n'y a pas de capteurs avec ce nom"); } j=0; @@ -181,11 +177,11 @@ int main(int argc, char *argv[]){ char * config_experimentation = "config_experimentation.txt"; char * config_raspberry = "config_raspberry.txt"; if(argc>1){ - printf("fichier contenant la liste des capteurs de l'experimentation : %s\n",argv[1]); + //printf("fichier contenant la liste des capteurs de l'experimentation : %s\n",argv[1]); char * config_experimentation = argv[1]; } if(argc>2){ - printf("fichier contenant la correspondance de tous les capteurs avec leur liaison série : %s\n",argv[2]); + //printf("fichier contenant la correspondance de tous les capteurs avec leur liaison série : %s\n",argv[2]); char * config_raspberry = argv[2]; } SensorAndPort sensorAndPort[MAX_SENSORS]; @@ -200,8 +196,8 @@ int main(int argc, char *argv[]){ count_serial_port = read_file_by_line(list_serial_port, config_raspberry); get_ports_to_read(list_sensors,list_serial_port,count_sensors, count_serial_port, sensors_ports); - action.sa_handler=sig_handler; - sigaction(SIGINT, &action, NULL); + //action.sa_handler=sig_handler; + //sigaction(SIGTERM, &action, NULL); for(i=0;iexp_id); - sprintf(cmd1, "runuser -l %s -c \'echo \"%s\" | ssh pi@%s \"%s && cat > ~/exp_%d/sensors.txt\"\'", + sprintf(cmd1, "runuser -l %s -c \'echo \"%s\" | ssh pi@%s \"%s && cat > ~/exp_%d/config_experimentation.txt\"\'", USERNAME, sensors_list, experiment->nodes[i].ip, @@ -224,7 +224,7 @@ int process_exp(Experiment *experiment) { fclose(hosts_fp); char ansible_command[512]; - sprintf(ansible_command, "runuser -l %s -c \'ansible-playbook /etc/ansible/roles/test.yml -i %s -e \"servernames=exp_%d exp_duration=%d binary_dir=%s\"\'", + sprintf(ansible_command, "runuser -l %s -c \'ansible-playbook /home/antoine/pfe/ansible.yml -i %s -e \"servernames=exp_%d exp_duration=%d binary_dir=%s\"\'", USERNAME, hosts_filename, experiment->exp_id, @@ -275,8 +275,9 @@ void check_files() { if(dir != NULL) { while(dirent = readdir(dir)) { - if(dirent->d_type == DT_REG) { + if((dirent->d_type == DT_REG) && (strstr(dirent->d_name, ".started") == NULL)) { char file_name[128]; + char new_file_name[128]; strcpy(file_name, TOFLASH_PATH); strcat(file_name, dirent->d_name); Experiment *experiment = read_file(file_name); @@ -284,7 +285,9 @@ void check_files() { print_exp(experiment); #endif if(!process_exp(experiment)) { - remove(file_name); + strcpy(new_file_name, file_name); + strcat(new_file_name, ".started"); + rename(file_name, new_file_name); } free_exp(experiment); } @@ -320,4 +323,4 @@ int main(int argc, char **argv) { sleep(10); } return 0; -} \ No newline at end of file +} diff --git a/Serveur/serial b/Serveur/serial deleted file mode 100644 index d35e62f..0000000 --- a/Serveur/serial +++ /dev/null @@ -1 +0,0 @@ -blabla -- libgit2 0.21.2