![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
qsdasd
main.cpp@8:e8ebb98f3c83, 2018-12-03 (annotated)
- 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?
User | Revision | Line number | New 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, ð); |
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 | } |