qsdasd

Dependencies:   WebSocketClient

Committer:
JioLessard
Date:
Mon Dec 03 16:46:52 2018 +0000
Revision:
8:e8ebb98f3c83
Parent:
6:2fae6e37c5ca
mange moi bien

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JioLessard 8:e8ebb98f3c83 1 // Programme pour coordinateur
JioLessard 8:e8ebb98f3c83 2 //Alex Veilleux veia2304
JioLessard 8:e8ebb98f3c83 3 //Jean-Olivier Lessard lesj1706
mbed_official 6:2fae6e37c5ca 4
samux 1:1c1802ec42a2 5 #include "mbed.h"
samux 1:1c1802ec42a2 6 #include "EthernetInterface.h"
samux 1:1c1802ec42a2 7 #include "Websocket.h"
sam_grove 3:9bd22e5386cd 8
JioLessard 8:e8ebb98f3c83 9 //Variable globale
JioLessard 8:e8ebb98f3c83 10 DigitalOut led1(LED1);
JioLessard 8:e8ebb98f3c83 11 DigitalOut led2(LED1);
JioLessard 8:e8ebb98f3c83 12
JioLessard 8:e8ebb98f3c83 13 DigitalOut reset(p8);
JioLessard 8:e8ebb98f3c83 14 Serial serial_connection(p13, p14);
JioLessard 8:e8ebb98f3c83 15
JioLessard 8:e8ebb98f3c83 16 LocalFileSystem local("local");
JioLessard 8:e8ebb98f3c83 17 int panChar;
JioLessard 8:e8ebb98f3c83 18 char url;
mbed_official 6:2fae6e37c5ca 19
JioLessard 8:e8ebb98f3c83 20 //Permet la configuration du PAN id selon le fichier de configuration
JioLessard 8:e8ebb98f3c83 21 void set_PAN(){
JioLessard 8:e8ebb98f3c83 22 int panLSB = (uint8_t)panChar;
JioLessard 8:e8ebb98f3c83 23 int panMSB = (uint8_t)(panChar >> 8);
JioLessard 8:e8ebb98f3c83 24
JioLessard 8:e8ebb98f3c83 25 serial_connection.putc(0x7E);
JioLessard 8:e8ebb98f3c83 26 serial_connection.putc(0x00);
JioLessard 8:e8ebb98f3c83 27 serial_connection.putc(0x06);
JioLessard 8:e8ebb98f3c83 28 serial_connection.putc(0x09);
JioLessard 8:e8ebb98f3c83 29 serial_connection.putc(0x01);
JioLessard 8:e8ebb98f3c83 30 serial_connection.putc(0x49); //I
JioLessard 8:e8ebb98f3c83 31 serial_connection.putc(0x44); //D
JioLessard 8:e8ebb98f3c83 32 //serial_connection.putc(0xAA); // PAN ID, TODO
JioLessard 8:e8ebb98f3c83 33 //serial_connection.putc(0xBD); // PAN ID, TODO
JioLessard 8:e8ebb98f3c83 34 serial_connection.putc(panMSB); // PAN ID, TODO
JioLessard 8:e8ebb98f3c83 35 serial_connection.putc(panLSB); // PAN ID, TODO
JioLessard 8:e8ebb98f3c83 36 serial_connection.putc(0x00); // CheckSum
JioLessard 8:e8ebb98f3c83 37
JioLessard 8:e8ebb98f3c83 38 serial_connection.putc(0x7E);
JioLessard 8:e8ebb98f3c83 39 serial_connection.putc(0x00);
JioLessard 8:e8ebb98f3c83 40 serial_connection.putc(0x04);
JioLessard 8:e8ebb98f3c83 41 serial_connection.putc(0x09);
JioLessard 8:e8ebb98f3c83 42 serial_connection.putc(0x01);
JioLessard 8:e8ebb98f3c83 43 serial_connection.putc(0x57);
JioLessard 8:e8ebb98f3c83 44 serial_connection.putc(0x52);
JioLessard 8:e8ebb98f3c83 45 serial_connection.putc(0x4C);
JioLessard 8:e8ebb98f3c83 46
JioLessard 8:e8ebb98f3c83 47 serial_connection.putc(0x7E);
JioLessard 8:e8ebb98f3c83 48 serial_connection.putc(0x00);
JioLessard 8:e8ebb98f3c83 49 serial_connection.putc(0x04);
JioLessard 8:e8ebb98f3c83 50 serial_connection.putc(0x09);
JioLessard 8:e8ebb98f3c83 51 serial_connection.putc(0x01);
JioLessard 8:e8ebb98f3c83 52 serial_connection.putc(0x41);
JioLessard 8:e8ebb98f3c83 53 serial_connection.putc(0x43);
JioLessard 8:e8ebb98f3c83 54 serial_connection.putc(0x71);
JioLessard 8:e8ebb98f3c83 55 }
mbed_official 6:2fae6e37c5ca 56
JioLessard 8:e8ebb98f3c83 57 //Permet la lecture du PAN et de l'Url dans un fichier local
JioLessard 8:e8ebb98f3c83 58 //Entré: aucune
JioLessard 8:e8ebb98f3c83 59 //Sortie: Sotcké dans variable globales
JioLessard 8:e8ebb98f3c83 60 void Read_FileChar() {
JioLessard 8:e8ebb98f3c83 61 printf("Debut readfile \n\r");
JioLessard 8:e8ebb98f3c83 62
JioLessard 8:e8ebb98f3c83 63 FILE *fp ;
JioLessard 8:e8ebb98f3c83 64 fp = fopen("/local/char2.txt", "r");
JioLessard 8:e8ebb98f3c83 65
JioLessard 8:e8ebb98f3c83 66 //Si file non trouvé
JioLessard 8:e8ebb98f3c83 67 if (fp == NULL) {
JioLessard 8:e8ebb98f3c83 68 printf("Can't open input file in.list!\n\r");
JioLessard 8:e8ebb98f3c83 69 exit(1);
JioLessard 8:e8ebb98f3c83 70 }
JioLessard 8:e8ebb98f3c83 71
JioLessard 8:e8ebb98f3c83 72 //lecture ligne par ligne
JioLessard 8:e8ebb98f3c83 73 fscanf(fp, "%X", &panChar);
JioLessard 8:e8ebb98f3c83 74 fscanf(fp, "%s", &url);
JioLessard 8:e8ebb98f3c83 75
JioLessard 8:e8ebb98f3c83 76 //Fermeture fichier
JioLessard 8:e8ebb98f3c83 77 fclose (fp);
JioLessard 8:e8ebb98f3c83 78 fp = NULL;
JioLessard 8:e8ebb98f3c83 79 printf("Fin readfile\n\r");
JioLessard 8:e8ebb98f3c83 80 }
JioLessard 8:e8ebb98f3c83 81
JioLessard 8:e8ebb98f3c83 82 int main() {
JioLessard 8:e8ebb98f3c83 83 char message[1000];
JioLessard 8:e8ebb98f3c83 84 Read_FileChar();
sam_grove 3:9bd22e5386cd 85
JioLessard 8:e8ebb98f3c83 86 int cpt_frame = 0;
JioLessard 8:e8ebb98f3c83 87 int length_msb = 0;
JioLessard 8:e8ebb98f3c83 88 int length_lsb = 0;
JioLessard 8:e8ebb98f3c83 89
JioLessard 8:e8ebb98f3c83 90 //Init reset xbee
JioLessard 8:e8ebb98f3c83 91 reset = 0;
JioLessard 8:e8ebb98f3c83 92 led1 = 0;
JioLessard 8:e8ebb98f3c83 93 wait_ms(1);
JioLessard 8:e8ebb98f3c83 94 reset = 1;
JioLessard 8:e8ebb98f3c83 95 wait_ms(1);
JioLessard 8:e8ebb98f3c83 96
JioLessard 8:e8ebb98f3c83 97 set_PAN();
JioLessard 8:e8ebb98f3c83 98
JioLessard 8:e8ebb98f3c83 99 // Début programme
JioLessard 8:e8ebb98f3c83 100 printf("\r\n Websocket Example v1.0.0\r\n");
JioLessard 8:e8ebb98f3c83 101
JioLessard 8:e8ebb98f3c83 102 //Lecture du fichier de configuration
JioLessard 8:e8ebb98f3c83 103
JioLessard 8:e8ebb98f3c83 104 char *realurl;
JioLessard 8:e8ebb98f3c83 105 asprintf(&realurl, "%s%s%s", "ws://", &url, "/");
JioLessard 8:e8ebb98f3c83 106 printf("Real url for socket: %s\n\r", realurl);
JioLessard 8:e8ebb98f3c83 107
JioLessard 8:e8ebb98f3c83 108 //network interface création
mbed_official 6:2fae6e37c5ca 109 EthernetInterface eth;
mbed_official 6:2fae6e37c5ca 110 eth.connect();
mbed_official 6:2fae6e37c5ca 111 printf("IP Address is %s\n\r", eth.get_ip_address());
JioLessard 8:e8ebb98f3c83 112
JioLessard 8:e8ebb98f3c83 113 // Websocket création
JioLessard 8:e8ebb98f3c83 114 Websocket ws(realurl, &eth);
mbed_official 6:2fae6e37c5ca 115 int connect_error = ws.connect();
sam_grove 3:9bd22e5386cd 116
JioLessard 8:e8ebb98f3c83 117 bool trameAcce = false;
JioLessard 8:e8ebb98f3c83 118 char accData[6];
JioLessard 8:e8ebb98f3c83 119 int cptAcc;
JioLessard 8:e8ebb98f3c83 120
JioLessard 8:e8ebb98f3c83 121 while(1) {
JioLessard 8:e8ebb98f3c83 122 if (serial_connection.readable()){
JioLessard 8:e8ebb98f3c83 123 char hex_value = serial_connection.getc();
JioLessard 8:e8ebb98f3c83 124 //printf("%X\n\r", hex_value);
JioLessard 8:e8ebb98f3c83 125 if (hex_value == 0x7E){ // Détecte une nouvelle trame
JioLessard 8:e8ebb98f3c83 126 cpt_frame = 0;
JioLessard 8:e8ebb98f3c83 127 trameAcce = false;
JioLessard 8:e8ebb98f3c83 128 cptAcc = 0;
JioLessard 8:e8ebb98f3c83 129 }
JioLessard 8:e8ebb98f3c83 130 else if(cpt_frame == 1){ // Lecture du length MSB
JioLessard 8:e8ebb98f3c83 131 length_msb = hex_value;
JioLessard 8:e8ebb98f3c83 132 }
JioLessard 8:e8ebb98f3c83 133 else if(cpt_frame == 2){ // Lecture du length LSB
JioLessard 8:e8ebb98f3c83 134 length_lsb = hex_value;
JioLessard 8:e8ebb98f3c83 135 if (length_lsb == 0x0E){
JioLessard 8:e8ebb98f3c83 136 //Envoie au serveur par websocket pour bouton
JioLessard 8:e8ebb98f3c83 137 int error_c = ws.send("Button pressed\r\n");
JioLessard 8:e8ebb98f3c83 138 printf("Error code : %d \r\n", error_c);
JioLessard 8:e8ebb98f3c83 139 if(error_c == 1)
JioLessard 8:e8ebb98f3c83 140 printf("Error send message");
JioLessard 8:e8ebb98f3c83 141 else{
JioLessard 8:e8ebb98f3c83 142 printf("Message send\r\n");
JioLessard 8:e8ebb98f3c83 143 ws.read(message);
JioLessard 8:e8ebb98f3c83 144 printf("The message read is: %s \r\n", message);
JioLessard 8:e8ebb98f3c83 145 }
JioLessard 8:e8ebb98f3c83 146 }
JioLessard 8:e8ebb98f3c83 147 else if(0x12){ //Longueur pour trame de l'accelerometre
JioLessard 8:e8ebb98f3c83 148 trameAcce = true;
JioLessard 8:e8ebb98f3c83 149 }
JioLessard 8:e8ebb98f3c83 150 }
JioLessard 8:e8ebb98f3c83 151 else if (trameAcce && cpt_frame >= 0x0F && cpt_frame < (length_lsb + 0x03)){ //Permet d'aller chercher le data dynamiquement selon la longueur de la trame
JioLessard 8:e8ebb98f3c83 152 //printf("%X\n\r", hex_value);
JioLessard 8:e8ebb98f3c83 153 accData[cptAcc] = hex_value;
JioLessard 8:e8ebb98f3c83 154 cptAcc++;
JioLessard 8:e8ebb98f3c83 155 }
JioLessard 8:e8ebb98f3c83 156
JioLessard 8:e8ebb98f3c83 157 //Envoie au serveur par websocket pour accelerometre
JioLessard 8:e8ebb98f3c83 158 if(trameAcce && cptAcc >= 6){
JioLessard 8:e8ebb98f3c83 159 int error_c = ws.send("Button pressed\r\n");
JioLessard 8:e8ebb98f3c83 160
JioLessard 8:e8ebb98f3c83 161 if(error_c == 1)
JioLessard 8:e8ebb98f3c83 162 printf("Error send message");
JioLessard 8:e8ebb98f3c83 163 else{
JioLessard 8:e8ebb98f3c83 164 printf("Message send\r\n");
JioLessard 8:e8ebb98f3c83 165 ws.read(message);
JioLessard 8:e8ebb98f3c83 166 printf("Value x: 0x%X%X Value y: 0x%X%X Value z: 0x%X%X \r\n", accData[0], accData[1], accData[2], accData[3], accData[4], accData[5]);
JioLessard 8:e8ebb98f3c83 167 }
JioLessard 8:e8ebb98f3c83 168
JioLessard 8:e8ebb98f3c83 169 trameAcce = false;
JioLessard 8:e8ebb98f3c83 170 cptAcc = 0;
JioLessard 8:e8ebb98f3c83 171 }
JioLessard 8:e8ebb98f3c83 172 cpt_frame++;
JioLessard 8:e8ebb98f3c83 173 }
samux 1:1c1802ec42a2 174 }
JioLessard 8:e8ebb98f3c83 175 }