code d'envoie de trame
Dependencies: mbed ConfigFile
Fork of app4-router by
main.cpp@9:9b874294a381, 2014-02-25 (annotated)
- Committer:
- trixrabbit
- Date:
- Tue Feb 25 19:20:09 2014 +0000
- Revision:
- 9:9b874294a381
- Parent:
- 8:cfc86293ec94
comments added;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
trixrabbit | 9:9b874294a381 | 1 | /******************************************************************************************* |
trixrabbit | 9:9b874294a381 | 2 | * FILE: Router |
trixrabbit | 9:9b874294a381 | 3 | * File name: main.cpp |
trixrabbit | 9:9b874294a381 | 4 | * Authors: Pierluc Asselin & Marc-Antoine Dupuis |
trixrabbit | 9:9b874294a381 | 5 | * Object: S5 Info - APP5 |
trixrabbit | 9:9b874294a381 | 6 | * Original Date: 22/02/2014 |
trixrabbit | 9:9b874294a381 | 7 | * Last Modified: 25/02/2014 |
trixrabbit | 9:9b874294a381 | 8 | ********************************************************************************************/ |
trixrabbit | 9:9b874294a381 | 9 | |
trixrabbit | 9:9b874294a381 | 10 | /******************* |
trixrabbit | 9:9b874294a381 | 11 | INCLUDES |
trixrabbit | 9:9b874294a381 | 12 | *******************/ |
passelin | 0:ed0e18b7fa30 | 13 | #include "mbed.h" |
passelin | 3:ef0e12857e30 | 14 | #include <sstream> |
trixrabbit | 5:b4b4a64ef0d6 | 15 | #include <stdlib.h> |
trixrabbit | 2:bbe1253008e6 | 16 | #include <string> |
passelin | 3:ef0e12857e30 | 17 | #include "ConfigFile.h" |
trixrabbit | 7:0f107e48147d | 18 | |
passelin | 3:ef0e12857e30 | 19 | |
trixrabbit | 9:9b874294a381 | 20 | /********************************** |
trixrabbit | 9:9b874294a381 | 21 | DEFINES REGISTRES POUR I2C |
trixrabbit | 9:9b874294a381 | 22 | ***********************************/ |
passelin | 3:ef0e12857e30 | 23 | #define MMA8452_WRITE_ADDRESS 0x3A |
passelin | 3:ef0e12857e30 | 24 | #define MMA8452_READ_ADDRESS 0x3B |
passelin | 3:ef0e12857e30 | 25 | #define WHO_AM_I 0x0D |
passelin | 3:ef0e12857e30 | 26 | #define OUT_X_MSB 0x01 |
passelin | 3:ef0e12857e30 | 27 | #define OUT_X_LSB 0x02 |
passelin | 3:ef0e12857e30 | 28 | #define OUT_Y_MSB 0x03 |
passelin | 3:ef0e12857e30 | 29 | #define OUT_Y_LSB 0x04 |
passelin | 3:ef0e12857e30 | 30 | #define OUT_Z_MSB 0x05 |
passelin | 3:ef0e12857e30 | 31 | #define OUT_Z_LSB 0x06 |
passelin | 3:ef0e12857e30 | 32 | #define CTRL_REG1 0x2A |
passelin | 3:ef0e12857e30 | 33 | #define CTRL_REG2 0x2B |
trixrabbit | 2:bbe1253008e6 | 34 | |
passelin | 0:ed0e18b7fa30 | 35 | |
trixrabbit | 9:9b874294a381 | 36 | /******************* |
trixrabbit | 9:9b874294a381 | 37 | PINS |
trixrabbit | 9:9b874294a381 | 38 | *******************/ |
passelin | 0:ed0e18b7fa30 | 39 | DigitalOut myled(LED1); |
passelin | 4:21b8959e8b71 | 40 | DigitalIn pb1(p5); |
passelin | 0:ed0e18b7fa30 | 41 | DigitalOut reset(p8); |
passelin | 0:ed0e18b7fa30 | 42 | Serial pc(USBTX, USBRX); |
passelin | 0:ed0e18b7fa30 | 43 | Serial xbee(p13, p14); |
passelin | 3:ef0e12857e30 | 44 | I2C i2c(p9, p10); // I2C port (sda, scl) |
passelin | 3:ef0e12857e30 | 45 | |
trixrabbit | 9:9b874294a381 | 46 | /******************* |
trixrabbit | 9:9b874294a381 | 47 | CONFIG FILE |
trixrabbit | 9:9b874294a381 | 48 | *******************/ |
passelin | 4:21b8959e8b71 | 49 | LocalFileSystem local("local"); |
passelin | 3:ef0e12857e30 | 50 | ConfigFile cfg; |
passelin | 3:ef0e12857e30 | 51 | |
trixrabbit | 9:9b874294a381 | 52 | /*********************** |
trixrabbit | 9:9b874294a381 | 53 | VARIABLES GLOBALES |
trixrabbit | 9:9b874294a381 | 54 | ************************/ |
trixrabbit | 8:cfc86293ec94 | 55 | int period_ms; //frequence que l'on obtien dans config file |
trixrabbit | 8:cfc86293ec94 | 56 | string panID; //panID que l'on obtient dans config file |
trixrabbit | 6:cf4a6ee5d885 | 57 | |
trixrabbit | 6:cf4a6ee5d885 | 58 | |
trixrabbit | 9:9b874294a381 | 59 | /******************* |
trixrabbit | 9:9b874294a381 | 60 | convertInt |
trixrabbit | 9:9b874294a381 | 61 | Converti un int en string |
trixrabbit | 9:9b874294a381 | 62 | *******************/ |
trixrabbit | 9:9b874294a381 | 63 | string convertInt(int number) |
trixrabbit | 6:cf4a6ee5d885 | 64 | { |
trixrabbit | 6:cf4a6ee5d885 | 65 | stringstream ss;//create a stringstream |
trixrabbit | 6:cf4a6ee5d885 | 66 | ss.str(""); |
trixrabbit | 7:0f107e48147d | 67 | ss << number;//add int number to the stream |
trixrabbit | 6:cf4a6ee5d885 | 68 | return ss.str();//return a string with the contents of the stream |
trixrabbit | 6:cf4a6ee5d885 | 69 | } |
trixrabbit | 9:9b874294a381 | 70 | |
trixrabbit | 9:9b874294a381 | 71 | /******************* |
trixrabbit | 9:9b874294a381 | 72 | configInit |
trixrabbit | 9:9b874294a381 | 73 | fonction de config avec le config file |
trixrabbit | 9:9b874294a381 | 74 | *******************/ |
trixrabbit | 9:9b874294a381 | 75 | void configInit() |
passelin | 4:21b8959e8b71 | 76 | { |
passelin | 4:21b8959e8b71 | 77 | char *key1 = "PANID"; |
passelin | 4:21b8959e8b71 | 78 | char *key2 = "FREQ"; |
passelin | 4:21b8959e8b71 | 79 | char value[BUFSIZ]; |
passelin | 4:21b8959e8b71 | 80 | |
passelin | 4:21b8959e8b71 | 81 | // Read a configuration file from a mbed. |
passelin | 4:21b8959e8b71 | 82 | if (!cfg.read("/local/initconf.cfg")) |
passelin | 4:21b8959e8b71 | 83 | { |
passelin | 4:21b8959e8b71 | 84 | error("Failure to read a configuration file.\n"); |
passelin | 4:21b8959e8b71 | 85 | } |
passelin | 4:21b8959e8b71 | 86 | |
trixrabbit | 7:0f107e48147d | 87 | |
trixrabbit | 7:0f107e48147d | 88 | // Get a configuration value. |
trixrabbit | 7:0f107e48147d | 89 | |
passelin | 4:21b8959e8b71 | 90 | if (cfg.getValue(key1, &value[0], sizeof(value))) |
passelin | 4:21b8959e8b71 | 91 | { |
trixrabbit | 8:cfc86293ec94 | 92 | std::stringstream panID_s(value); //transforme la valeur du panID en string |
trixrabbit | 8:cfc86293ec94 | 93 | panID_s >> panID; //place le string dans la variable globale |
passelin | 4:21b8959e8b71 | 94 | } |
passelin | 4:21b8959e8b71 | 95 | |
passelin | 4:21b8959e8b71 | 96 | if (cfg.getValue(key2, &value[0], sizeof(value))) |
passelin | 4:21b8959e8b71 | 97 | { |
trixrabbit | 8:cfc86293ec94 | 98 | std::stringstream freq_s(value); //transforme la frequence en string |
trixrabbit | 8:cfc86293ec94 | 99 | freq_s >> period_ms; //place le string dans la variable globale |
passelin | 4:21b8959e8b71 | 100 | } |
passelin | 4:21b8959e8b71 | 101 | } |
trixrabbit | 2:bbe1253008e6 | 102 | |
trixrabbit | 9:9b874294a381 | 103 | /******************* |
trixrabbit | 9:9b874294a381 | 104 | xbee_init |
trixrabbit | 9:9b874294a381 | 105 | fonction de config du module xBee |
trixrabbit | 9:9b874294a381 | 106 | *******************/ |
trixrabbit | 9:9b874294a381 | 107 | void xbee_init() |
passelin | 3:ef0e12857e30 | 108 | { |
trixrabbit | 8:cfc86293ec94 | 109 | reset = 0; //initialisation |
passelin | 3:ef0e12857e30 | 110 | wait_ms(400); |
passelin | 3:ef0e12857e30 | 111 | reset = 1; |
trixrabbit | 5:b4b4a64ef0d6 | 112 | wait(4); |
trixrabbit | 8:cfc86293ec94 | 113 | //variables |
trixrabbit | 5:b4b4a64ef0d6 | 114 | int panID_size; |
trixrabbit | 5:b4b4a64ef0d6 | 115 | int panID_array[8]; |
trixrabbit | 5:b4b4a64ef0d6 | 116 | int i; |
trixrabbit | 5:b4b4a64ef0d6 | 117 | long int panID_d; |
trixrabbit | 8:cfc86293ec94 | 118 | |
trixrabbit | 7:0f107e48147d | 119 | panID_size = panID.length(); //vérifie si le panID est pair ou impair |
trixrabbit | 5:b4b4a64ef0d6 | 120 | if(panID_size%2 != 0) |
trixrabbit | 5:b4b4a64ef0d6 | 121 | { |
trixrabbit | 8:cfc86293ec94 | 122 | panID_size++; //si impair size++ (i.e. on veut que 5/2 = 3 au lieu de 2) |
trixrabbit | 5:b4b4a64ef0d6 | 123 | panID = "0" + panID; |
trixrabbit | 5:b4b4a64ef0d6 | 124 | } |
trixrabbit | 5:b4b4a64ef0d6 | 125 | |
trixrabbit | 7:0f107e48147d | 126 | panID_d = strtol(panID.c_str(),NULL,16); //converti le panID en chiffre |
trixrabbit | 5:b4b4a64ef0d6 | 127 | for(i=0;i<panID_size/2;i++) |
trixrabbit | 5:b4b4a64ef0d6 | 128 | { |
trixrabbit | 8:cfc86293ec94 | 129 | panID_array[i] = panID_d%256; //decoupe en packet de 8 bytes (2 characteres) et place dans tableau |
trixrabbit | 8:cfc86293ec94 | 130 | panID_d = panID_d >> 8; //à partir de la fin (i.e. CAFE --> array[0] = FE, array[1] = CA ) |
trixrabbit | 5:b4b4a64ef0d6 | 131 | |
trixrabbit | 5:b4b4a64ef0d6 | 132 | |
trixrabbit | 5:b4b4a64ef0d6 | 133 | } |
trixrabbit | 7:0f107e48147d | 134 | i--; //i est incrémentré une fois de trop dans le for avant de sortir de la boucle |
trixrabbit | 5:b4b4a64ef0d6 | 135 | |
trixrabbit | 5:b4b4a64ef0d6 | 136 | |
trixrabbit | 7:0f107e48147d | 137 | //construction des 3 trames pour changer le panID |
trixrabbit | 5:b4b4a64ef0d6 | 138 | char size = panID_size/2 + 0x04; //length + 0x04 |
trixrabbit | 5:b4b4a64ef0d6 | 139 | char checkSum = 0; |
trixrabbit | 5:b4b4a64ef0d6 | 140 | xbee.putc(0x7E); // start delimeter |
trixrabbit | 5:b4b4a64ef0d6 | 141 | xbee.putc(0x00); // length |
trixrabbit | 5:b4b4a64ef0d6 | 142 | xbee.putc(size); // length |
trixrabbit | 5:b4b4a64ef0d6 | 143 | xbee.putc(0x09); // frame type : AT command queue |
trixrabbit | 5:b4b4a64ef0d6 | 144 | xbee.putc(0x47); // frame ID |
trixrabbit | 7:0f107e48147d | 145 | xbee.putc(0x49); //AT command : (ID) |
trixrabbit | 7:0f107e48147d | 146 | xbee.putc(0x44); //AT command : (ID) |
trixrabbit | 5:b4b4a64ef0d6 | 147 | checkSum = checkSum + 0x09 + 0x47 + 0x49 + 0x44; |
trixrabbit | 5:b4b4a64ef0d6 | 148 | while(i>=0) |
trixrabbit | 8:cfc86293ec94 | 149 | { |
trixrabbit | 8:cfc86293ec94 | 150 | xbee.putc(panID_array[i]); //putc avec les valeur du tableau |
trixrabbit | 8:cfc86293ec94 | 151 | checkSum += panID_array[i]; //les valeurs sont mises à l'envers dans le tableau |
trixrabbit | 8:cfc86293ec94 | 152 | i--;//on doit donc décrémenter le i |
trixrabbit | 5:b4b4a64ef0d6 | 153 | } |
trixrabbit | 5:b4b4a64ef0d6 | 154 | checkSum = 0xff - checkSum; |
trixrabbit | 5:b4b4a64ef0d6 | 155 | xbee.putc(checkSum); // checksum |
trixrabbit | 8:cfc86293ec94 | 156 | |
trixrabbit | 5:b4b4a64ef0d6 | 157 | |
trixrabbit | 5:b4b4a64ef0d6 | 158 | xbee.putc(0x7E); // start delimeter |
trixrabbit | 5:b4b4a64ef0d6 | 159 | xbee.putc(0x00); // length |
trixrabbit | 5:b4b4a64ef0d6 | 160 | xbee.putc(0x04); // length |
trixrabbit | 5:b4b4a64ef0d6 | 161 | xbee.putc(0x09); // frame type : AT command queue |
trixrabbit | 5:b4b4a64ef0d6 | 162 | xbee.putc(0x49); // frame ID |
trixrabbit | 5:b4b4a64ef0d6 | 163 | xbee.putc(0x57); //AT command : (WR) |
trixrabbit | 5:b4b4a64ef0d6 | 164 | xbee.putc(0x52); //AT command : (WR) |
trixrabbit | 5:b4b4a64ef0d6 | 165 | xbee.putc(0x04); //checksum |
trixrabbit | 5:b4b4a64ef0d6 | 166 | |
trixrabbit | 5:b4b4a64ef0d6 | 167 | |
trixrabbit | 5:b4b4a64ef0d6 | 168 | xbee.putc(0x7E); // start delimeter |
trixrabbit | 5:b4b4a64ef0d6 | 169 | xbee.putc(0x00); // length |
trixrabbit | 5:b4b4a64ef0d6 | 170 | xbee.putc(0x04); // length |
trixrabbit | 5:b4b4a64ef0d6 | 171 | xbee.putc(0x09); // frame type : AT command |
trixrabbit | 5:b4b4a64ef0d6 | 172 | xbee.putc(0x4A); // frame ID |
trixrabbit | 5:b4b4a64ef0d6 | 173 | xbee.putc(0x41); //AT command : (AC) |
trixrabbit | 5:b4b4a64ef0d6 | 174 | xbee.putc(0x43); //AT command : (AC) |
trixrabbit | 5:b4b4a64ef0d6 | 175 | xbee.putc(0x28); //checksum |
trixrabbit | 5:b4b4a64ef0d6 | 176 | |
passelin | 3:ef0e12857e30 | 177 | } |
passelin | 3:ef0e12857e30 | 178 | |
trixrabbit | 8:cfc86293ec94 | 179 | char i2c_read_reg(char address) //fonction i2c pour l'accelerometre |
passelin | 3:ef0e12857e30 | 180 | { |
passelin | 3:ef0e12857e30 | 181 | // Read from selected register adress |
passelin | 3:ef0e12857e30 | 182 | i2c.start(); |
passelin | 3:ef0e12857e30 | 183 | i2c.write(MMA8452_WRITE_ADDRESS); |
passelin | 3:ef0e12857e30 | 184 | i2c.write(address); |
passelin | 3:ef0e12857e30 | 185 | i2c.start(); |
passelin | 3:ef0e12857e30 | 186 | i2c.write(MMA8452_READ_ADDRESS); |
passelin | 3:ef0e12857e30 | 187 | char data = i2c.read(0); |
passelin | 3:ef0e12857e30 | 188 | i2c.stop(); |
trixrabbit | 2:bbe1253008e6 | 189 | |
passelin | 3:ef0e12857e30 | 190 | // return the data readed |
passelin | 3:ef0e12857e30 | 191 | return data; |
passelin | 3:ef0e12857e30 | 192 | } |
passelin | 3:ef0e12857e30 | 193 | |
trixrabbit | 8:cfc86293ec94 | 194 | bool initAccel() //fonction qui initialise l'accelerometre avec i2c |
passelin | 3:ef0e12857e30 | 195 | { |
passelin | 3:ef0e12857e30 | 196 | // Start I2C communication |
passelin | 3:ef0e12857e30 | 197 | char data = i2c_read_reg(WHO_AM_I); |
passelin | 3:ef0e12857e30 | 198 | if(data != 0x2A) |
passelin | 3:ef0e12857e30 | 199 | { |
passelin | 3:ef0e12857e30 | 200 | return false; |
passelin | 3:ef0e12857e30 | 201 | } |
passelin | 3:ef0e12857e30 | 202 | |
passelin | 3:ef0e12857e30 | 203 | // Set accelerometer in Low Noise Low Power mode |
passelin | 3:ef0e12857e30 | 204 | i2c.start(); |
passelin | 3:ef0e12857e30 | 205 | i2c.write(MMA8452_WRITE_ADDRESS); |
passelin | 3:ef0e12857e30 | 206 | i2c.write(CTRL_REG2); |
passelin | 3:ef0e12857e30 | 207 | i2c.write(0x01); |
passelin | 3:ef0e12857e30 | 208 | i2c.stop(); |
passelin | 3:ef0e12857e30 | 209 | |
passelin | 3:ef0e12857e30 | 210 | // Set accelerometer in active mode |
passelin | 3:ef0e12857e30 | 211 | i2c.start(); |
passelin | 3:ef0e12857e30 | 212 | i2c.write(MMA8452_WRITE_ADDRESS); |
passelin | 3:ef0e12857e30 | 213 | i2c.write(CTRL_REG1); |
passelin | 3:ef0e12857e30 | 214 | i2c.write(0x01); |
passelin | 3:ef0e12857e30 | 215 | i2c.stop(); |
passelin | 3:ef0e12857e30 | 216 | |
passelin | 3:ef0e12857e30 | 217 | return true; |
passelin | 3:ef0e12857e30 | 218 | } |
passelin | 3:ef0e12857e30 | 219 | |
trixrabbit | 9:9b874294a381 | 220 | |
trixrabbit | 9:9b874294a381 | 221 | /******************* |
trixrabbit | 9:9b874294a381 | 222 | getAccelValue |
trixrabbit | 9:9b874294a381 | 223 | fonction qui lit les registres de données de l'accelerometre |
trixrabbit | 9:9b874294a381 | 224 | *******************/ |
trixrabbit | 8:cfc86293ec94 | 225 | unsigned short getAccelValue(char MSB_addr) //fonction qui lit les registres de données de l'accelerometre |
trixrabbit | 2:bbe1253008e6 | 226 | { |
passelin | 4:21b8959e8b71 | 227 | return i2c_read_reg(MSB_addr); // Read MSB data from MSB register |
trixrabbit | 2:bbe1253008e6 | 228 | } |
passelin | 3:ef0e12857e30 | 229 | |
trixrabbit | 7:0f107e48147d | 230 | |
trixrabbit | 9:9b874294a381 | 231 | /******************* |
trixrabbit | 9:9b874294a381 | 232 | getAccelData |
trixrabbit | 9:9b874294a381 | 233 | fonction qui construit la string a envoyer par xbee de l'accélérometre |
trixrabbit | 9:9b874294a381 | 234 | *******************/ |
trixrabbit | 7:0f107e48147d | 235 | string getAccelData() |
trixrabbit | 2:bbe1253008e6 | 236 | { |
trixrabbit | 7:0f107e48147d | 237 | unsigned short x, y, z; |
passelin | 4:21b8959e8b71 | 238 | |
trixrabbit | 7:0f107e48147d | 239 | // Get accelerometer values |
trixrabbit | 7:0f107e48147d | 240 | x= getAccelValue(OUT_X_MSB); |
trixrabbit | 7:0f107e48147d | 241 | y= getAccelValue(OUT_Y_MSB); |
trixrabbit | 7:0f107e48147d | 242 | z= getAccelValue(OUT_Z_MSB); |
trixrabbit | 6:cf4a6ee5d885 | 243 | |
trixrabbit | 7:0f107e48147d | 244 | return "AX" + convertInt(x) + " AY" + convertInt(y) + " AZ" + convertInt(z); |
trixrabbit | 7:0f107e48147d | 245 | } |
trixrabbit | 9:9b874294a381 | 246 | |
trixrabbit | 9:9b874294a381 | 247 | |
trixrabbit | 9:9b874294a381 | 248 | /******************* |
trixrabbit | 9:9b874294a381 | 249 | getPushButtonData |
trixrabbit | 9:9b874294a381 | 250 | fonction qui construit la string a envoyer par xbee du bouton poussoir |
trixrabbit | 9:9b874294a381 | 251 | *******************/ |
trixrabbit | 7:0f107e48147d | 252 | string getPushButtonData() |
trixrabbit | 7:0f107e48147d | 253 | { |
trixrabbit | 7:0f107e48147d | 254 | return "PB" + convertInt(pb1); |
trixrabbit | 7:0f107e48147d | 255 | } |
trixrabbit | 7:0f107e48147d | 256 | |
trixrabbit | 9:9b874294a381 | 257 | |
trixrabbit | 9:9b874294a381 | 258 | /******************* |
trixrabbit | 9:9b874294a381 | 259 | xbee_transmit |
trixrabbit | 9:9b874294a381 | 260 | fonction d'envoie de trame xbee |
trixrabbit | 9:9b874294a381 | 261 | *******************/ |
trixrabbit | 7:0f107e48147d | 262 | void xbee_transmit(string data_s) |
trixrabbit | 7:0f107e48147d | 263 | { |
trixrabbit | 7:0f107e48147d | 264 | |
trixrabbit | 2:bbe1253008e6 | 265 | char checkSum = 0; |
trixrabbit | 6:cf4a6ee5d885 | 266 | char size = data_s.length() + 0x0E; //0x0E + data type |
trixrabbit | 2:bbe1253008e6 | 267 | xbee.putc(0x7E); // start delimeter |
trixrabbit | 2:bbe1253008e6 | 268 | xbee.putc(0x00); // length |
trixrabbit | 2:bbe1253008e6 | 269 | xbee.putc(size); // length |
trixrabbit | 5:b4b4a64ef0d6 | 270 | xbee.putc(0x10); // frame type : transmit request |
trixrabbit | 2:bbe1253008e6 | 271 | xbee.putc(0x01); // frame ID |
trixrabbit | 5:b4b4a64ef0d6 | 272 | xbee.putc(0x00); // adress MAC octet 1 de 8 |
trixrabbit | 5:b4b4a64ef0d6 | 273 | xbee.putc(0x13); // adress MAC octet 2 de 8 |
trixrabbit | 5:b4b4a64ef0d6 | 274 | xbee.putc(0xA2); // adress MAC octet 3 de 8 |
trixrabbit | 5:b4b4a64ef0d6 | 275 | xbee.putc(0x00); // adress MAC octet 4 de 8 |
trixrabbit | 5:b4b4a64ef0d6 | 276 | xbee.putc(0x40); // adress MAC octet 5 de 8 |
trixrabbit | 5:b4b4a64ef0d6 | 277 | xbee.putc(0x8B); // adress MAC octet 6 de 8 |
trixrabbit | 5:b4b4a64ef0d6 | 278 | xbee.putc(0x41); // adress MAC octet 7 de 8 |
trixrabbit | 5:b4b4a64ef0d6 | 279 | xbee.putc(0x98); // adress MAC octet 8 de 8 |
trixrabbit | 5:b4b4a64ef0d6 | 280 | xbee.putc(0x00); // dest. adress network octet 1 de 2 |
trixrabbit | 5:b4b4a64ef0d6 | 281 | xbee.putc(0x00); // dest. adress network octet 2 de 2 |
trixrabbit | 2:bbe1253008e6 | 282 | xbee.putc(0x00); // broadcast radius |
trixrabbit | 2:bbe1253008e6 | 283 | xbee.putc(0x00); // option |
trixrabbit | 2:bbe1253008e6 | 284 | checkSum = checkSum + 0x10 + 0x01 + 0x00 + 0x13+ 0xA2 + 0x00 + 0x40 + 0x8B +0x41 + 0x98 + 0x00 + 0x00 + 0x00 + 0x00; |
trixrabbit | 6:cf4a6ee5d885 | 285 | |
passelin | 4:21b8959e8b71 | 286 | for (int i=0;i<data_s.length();i++) //data |
trixrabbit | 2:bbe1253008e6 | 287 | { |
trixrabbit | 8:cfc86293ec94 | 288 | xbee.putc(data_s[i]); //envoie le data de la string passée en parametre |
trixrabbit | 8:cfc86293ec94 | 289 | checkSum += data_s[i]; //additionne le checksum de chaque data |
trixrabbit | 2:bbe1253008e6 | 290 | } |
trixrabbit | 2:bbe1253008e6 | 291 | checkSum = 0xff - checkSum; |
trixrabbit | 2:bbe1253008e6 | 292 | xbee.putc(checkSum); // checksum |
trixrabbit | 2:bbe1253008e6 | 293 | |
trixrabbit | 2:bbe1253008e6 | 294 | } |
passelin | 0:ed0e18b7fa30 | 295 | |
trixrabbit | 9:9b874294a381 | 296 | |
trixrabbit | 9:9b874294a381 | 297 | /******************* |
trixrabbit | 9:9b874294a381 | 298 | |
trixrabbit | 9:9b874294a381 | 299 | MAIN |
trixrabbit | 9:9b874294a381 | 300 | |
trixrabbit | 9:9b874294a381 | 301 | *******************/ |
passelin | 0:ed0e18b7fa30 | 302 | int main() |
passelin | 0:ed0e18b7fa30 | 303 | { |
trixrabbit | 8:cfc86293ec94 | 304 | //appelle des fonctions d'initialisations |
trixrabbit | 8:cfc86293ec94 | 305 | configInit(); //fichier de config |
trixrabbit | 8:cfc86293ec94 | 306 | xbee_init(); //xbee |
trixrabbit | 8:cfc86293ec94 | 307 | initAccel(); //accelerometre |
passelin | 3:ef0e12857e30 | 308 | |
passelin | 4:21b8959e8b71 | 309 | myled = 0; |
passelin | 3:ef0e12857e30 | 310 | |
trixrabbit | 7:0f107e48147d | 311 | |
passelin | 0:ed0e18b7fa30 | 312 | while(1) |
passelin | 0:ed0e18b7fa30 | 313 | { |
passelin | 4:21b8959e8b71 | 314 | wait_ms(period_ms); |
passelin | 4:21b8959e8b71 | 315 | myled = !myled; |
passelin | 4:21b8959e8b71 | 316 | |
trixrabbit | 7:0f107e48147d | 317 | //Transmit PUSHBUTTON to coordonitator |
trixrabbit | 7:0f107e48147d | 318 | xbee_transmit(getPushButtonData()); |
trixrabbit | 6:cf4a6ee5d885 | 319 | |
passelin | 4:21b8959e8b71 | 320 | //Transmit ACCEL xyz to coordonitator |
trixrabbit | 7:0f107e48147d | 321 | xbee_transmit(getAccelData()); |
trixrabbit | 7:0f107e48147d | 322 | |
passelin | 4:21b8959e8b71 | 323 | |
trixrabbit | 7:0f107e48147d | 324 | |
passelin | 3:ef0e12857e30 | 325 | |
passelin | 4:21b8959e8b71 | 326 | |
passelin | 3:ef0e12857e30 | 327 | |
passelin | 0:ed0e18b7fa30 | 328 | } |
passelin | 0:ed0e18b7fa30 | 329 | } |
trixrabbit | 2:bbe1253008e6 | 330 |