kcc cansat
/
AC4790-200
This is a working test program for radio AC4790-200
main.cpp@0:a90ccfbf8695, 2010-07-20 (annotated)
- Committer:
- kcccansat
- Date:
- Tue Jul 20 00:08:59 2010 +0000
- Revision:
- 0:a90ccfbf8695
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kcccansat | 0:a90ccfbf8695 | 1 | /* This is a short test program for AC4790-200 transceiver*/ |
kcccansat | 0:a90ccfbf8695 | 2 | /* We have radio's tx rx pin collected to mbed's p10 and p9 respectively, and have radio connected to external power 3.3v - 5v*, and GND |
kcccansat | 0:a90ccfbf8695 | 3 | only 4 pins are used from the radio*/ |
kcccansat | 0:a90ccfbf8695 | 4 | #include "mbed.h" |
kcccansat | 0:a90ccfbf8695 | 5 | #define MAC_1 57 |
kcccansat | 0:a90ccfbf8695 | 6 | #define MAC_2 147 // MAC for relay |
kcccansat | 0:a90ccfbf8695 | 7 | #define MAC_3 98 |
kcccansat | 0:a90ccfbf8695 | 8 | |
kcccansat | 0:a90ccfbf8695 | 9 | #define MAC_4 57 |
kcccansat | 0:a90ccfbf8695 | 10 | #define MAC_5 149 //MAC for GCS |
kcccansat | 0:a90ccfbf8695 | 11 | #define MAC_6 98 |
kcccansat | 0:a90ccfbf8695 | 12 | |
kcccansat | 0:a90ccfbf8695 | 13 | Serial laird(p9, p10); //Creates a variable for serial comunication through pin 9 and 10 |
kcccansat | 0:a90ccfbf8695 | 14 | Serial pc(USBTX, USBRX);//Opens up serial communication through the USB port via the computer |
kcccansat | 0:a90ccfbf8695 | 15 | |
kcccansat | 0:a90ccfbf8695 | 16 | |
kcccansat | 0:a90ccfbf8695 | 17 | int enter_cmd(); |
kcccansat | 0:a90ccfbf8695 | 18 | void get_respond(); |
kcccansat | 0:a90ccfbf8695 | 19 | int exit_cmd(); |
kcccansat | 0:a90ccfbf8695 | 20 | int api(); |
kcccansat | 0:a90ccfbf8695 | 21 | int write_cb(); |
kcccansat | 0:a90ccfbf8695 | 22 | void radio_send(char *to_send); |
kcccansat | 0:a90ccfbf8695 | 23 | void radio_received(char *received); |
kcccansat | 0:a90ccfbf8695 | 24 | void relay_send(char *to_send); |
kcccansat | 0:a90ccfbf8695 | 25 | |
kcccansat | 0:a90ccfbf8695 | 26 | int main() { |
kcccansat | 0:a90ccfbf8695 | 27 | |
kcccansat | 0:a90ccfbf8695 | 28 | |
kcccansat | 0:a90ccfbf8695 | 29 | int i; |
kcccansat | 0:a90ccfbf8695 | 30 | char to_send[30] = {"ACD,100"}; //120byte max in data field, 4 byte a char??TEST, 30 chars max!! |
kcccansat | 0:a90ccfbf8695 | 31 | char received[30] = {'\0'}; |
kcccansat | 0:a90ccfbf8695 | 32 | |
kcccansat | 0:a90ccfbf8695 | 33 | wait(3); |
kcccansat | 0:a90ccfbf8695 | 34 | /***************set up the serial interface parameters**********/ |
kcccansat | 0:a90ccfbf8695 | 35 | laird.baud(57600); //set up the baud rate, needs to be the same as the baud rate of the radio |
kcccansat | 0:a90ccfbf8695 | 36 | laird.format(8, Serial::None, 1); //set up the format, 8 bits, none parity, 1 stop bit |
kcccansat | 0:a90ccfbf8695 | 37 | |
kcccansat | 0:a90ccfbf8695 | 38 | |
kcccansat | 0:a90ccfbf8695 | 39 | wait(1); |
kcccansat | 0:a90ccfbf8695 | 40 | /*************enter command mode *****************/ |
kcccansat | 0:a90ccfbf8695 | 41 | |
kcccansat | 0:a90ccfbf8695 | 42 | while(!enter_cmd()) ; //send hex command to enter the command mode |
kcccansat | 0:a90ccfbf8695 | 43 | |
kcccansat | 0:a90ccfbf8695 | 44 | /*the supposed hex respond after enter the command mode : cc 43 4f 4d*/ |
kcccansat | 0:a90ccfbf8695 | 45 | pc.printf("enter cmd respond: "); |
kcccansat | 0:a90ccfbf8695 | 46 | for( i = 0; i < 4; i++) |
kcccansat | 0:a90ccfbf8695 | 47 | get_respond(); |
kcccansat | 0:a90ccfbf8695 | 48 | wait_ms(500); |
kcccansat | 0:a90ccfbf8695 | 49 | pc.printf("\n\r"); |
kcccansat | 0:a90ccfbf8695 | 50 | |
kcccansat | 0:a90ccfbf8695 | 51 | /*************change channel number**************/ |
kcccansat | 0:a90ccfbf8695 | 52 | laird.putc('\xcc'); |
kcccansat | 0:a90ccfbf8695 | 53 | laird.putc('\x01'); |
kcccansat | 0:a90ccfbf8695 | 54 | laird.putc('\x10'); |
kcccansat | 0:a90ccfbf8695 | 55 | |
kcccansat | 0:a90ccfbf8695 | 56 | pc.printf("change channle respond: "); |
kcccansat | 0:a90ccfbf8695 | 57 | get_respond(); |
kcccansat | 0:a90ccfbf8695 | 58 | get_respond(); |
kcccansat | 0:a90ccfbf8695 | 59 | pc.printf("\r\n"); |
kcccansat | 0:a90ccfbf8695 | 60 | |
kcccansat | 0:a90ccfbf8695 | 61 | /*************configure API control ****************/ |
kcccansat | 0:a90ccfbf8695 | 62 | while(!api()); //send hex command to configure API control |
kcccansat | 0:a90ccfbf8695 | 63 | |
kcccansat | 0:a90ccfbf8695 | 64 | pc.printf("API control respond: "); //expected respond: cc 13 |
kcccansat | 0:a90ccfbf8695 | 65 | for( i = 0; i <2; i++) |
kcccansat | 0:a90ccfbf8695 | 66 | get_respond(); |
kcccansat | 0:a90ccfbf8695 | 67 | wait_ms(500); |
kcccansat | 0:a90ccfbf8695 | 68 | pc.printf("\n\r"); |
kcccansat | 0:a90ccfbf8695 | 69 | |
kcccansat | 0:a90ccfbf8695 | 70 | /************** EEPROM write control 1 byte********/ |
kcccansat | 0:a90ccfbf8695 | 71 | while(!write_cb()); |
kcccansat | 0:a90ccfbf8695 | 72 | |
kcccansat | 0:a90ccfbf8695 | 73 | pc.printf("write control byte respond: "); //expected respond: 56 01 41 |
kcccansat | 0:a90ccfbf8695 | 74 | for( i = 0; i <3; i++) |
kcccansat | 0:a90ccfbf8695 | 75 | get_respond(); |
kcccansat | 0:a90ccfbf8695 | 76 | wait_ms(500); |
kcccansat | 0:a90ccfbf8695 | 77 | pc.printf("\n\r"); |
kcccansat | 0:a90ccfbf8695 | 78 | |
kcccansat | 0:a90ccfbf8695 | 79 | /************read destination MAC address*******/ |
kcccansat | 0:a90ccfbf8695 | 80 | laird.putc('\xcc'); |
kcccansat | 0:a90ccfbf8695 | 81 | laird.putc('\x11'); |
kcccansat | 0:a90ccfbf8695 | 82 | |
kcccansat | 0:a90ccfbf8695 | 83 | pc.printf("Destination MAC address respond: "); |
kcccansat | 0:a90ccfbf8695 | 84 | for(i = 0; i< 4; i++) |
kcccansat | 0:a90ccfbf8695 | 85 | get_respond(); |
kcccansat | 0:a90ccfbf8695 | 86 | wait_ms(500); |
kcccansat | 0:a90ccfbf8695 | 87 | pc.printf("\n\r"); |
kcccansat | 0:a90ccfbf8695 | 88 | |
kcccansat | 0:a90ccfbf8695 | 89 | /**************read own MAC address************/ |
kcccansat | 0:a90ccfbf8695 | 90 | laird.putc('\xcc'); |
kcccansat | 0:a90ccfbf8695 | 91 | laird.putc('\xc0'); |
kcccansat | 0:a90ccfbf8695 | 92 | laird.putc('\x80'); |
kcccansat | 0:a90ccfbf8695 | 93 | laird.putc('\x06'); |
kcccansat | 0:a90ccfbf8695 | 94 | |
kcccansat | 0:a90ccfbf8695 | 95 | pc.printf("Own MAC address: "); |
kcccansat | 0:a90ccfbf8695 | 96 | for(i = 0; i < 9; i++) |
kcccansat | 0:a90ccfbf8695 | 97 | get_respond(); |
kcccansat | 0:a90ccfbf8695 | 98 | wait_ms(500); |
kcccansat | 0:a90ccfbf8695 | 99 | pc.printf("\n\r"); |
kcccansat | 0:a90ccfbf8695 | 100 | |
kcccansat | 0:a90ccfbf8695 | 101 | /************write destination MAC address*********/ |
kcccansat | 0:a90ccfbf8695 | 102 | |
kcccansat | 0:a90ccfbf8695 | 103 | /* |
kcccansat | 0:a90ccfbf8695 | 104 | laird.putc('\xcc'); //ground station mac address: 61 78 32 |
kcccansat | 0:a90ccfbf8695 | 105 | laird.putc('\x10'); |
kcccansat | 0:a90ccfbf8695 | 106 | laird.putc(MAC_1); |
kcccansat | 0:a90ccfbf8695 | 107 | laird.putc(MAC_2); |
kcccansat | 0:a90ccfbf8695 | 108 | laird.putc(MAC_3); |
kcccansat | 0:a90ccfbf8695 | 109 | |
kcccansat | 0:a90ccfbf8695 | 110 | |
kcccansat | 0:a90ccfbf8695 | 111 | pc.printf("after write MAC respond: "); |
kcccansat | 0:a90ccfbf8695 | 112 | for(i = 0; i < 4; i++) |
kcccansat | 0:a90ccfbf8695 | 113 | get_respond(); |
kcccansat | 0:a90ccfbf8695 | 114 | wait_ms(500); |
kcccansat | 0:a90ccfbf8695 | 115 | pc.printf("\n\r"); |
kcccansat | 0:a90ccfbf8695 | 116 | */ |
kcccansat | 0:a90ccfbf8695 | 117 | /***************read DES key**********************/ |
kcccansat | 0:a90ccfbf8695 | 118 | laird.putc('\xcc'); |
kcccansat | 0:a90ccfbf8695 | 119 | laird.putc('\xc0'); |
kcccansat | 0:a90ccfbf8695 | 120 | laird.putc('\xd0'); |
kcccansat | 0:a90ccfbf8695 | 121 | laird.putc('\x07'); |
kcccansat | 0:a90ccfbf8695 | 122 | |
kcccansat | 0:a90ccfbf8695 | 123 | pc.printf("DES key: "); |
kcccansat | 0:a90ccfbf8695 | 124 | for(i = 0; i < 10; i++) |
kcccansat | 0:a90ccfbf8695 | 125 | get_respond(); |
kcccansat | 0:a90ccfbf8695 | 126 | wait_ms(500); |
kcccansat | 0:a90ccfbf8695 | 127 | pc.printf("\n\r"); |
kcccansat | 0:a90ccfbf8695 | 128 | |
kcccansat | 0:a90ccfbf8695 | 129 | /**************exit command mode ******************/ |
kcccansat | 0:a90ccfbf8695 | 130 | while(!exit_cmd()); //send hex command to exit the command mode |
kcccansat | 0:a90ccfbf8695 | 131 | |
kcccansat | 0:a90ccfbf8695 | 132 | /*the expected hex respond after exit the command mode: cc 44 41 54*/ |
kcccansat | 0:a90ccfbf8695 | 133 | pc.printf("exit cmd respond: "); |
kcccansat | 0:a90ccfbf8695 | 134 | for( i = 0; i < 4; i++) |
kcccansat | 0:a90ccfbf8695 | 135 | get_respond(); |
kcccansat | 0:a90ccfbf8695 | 136 | wait_ms(500); |
kcccansat | 0:a90ccfbf8695 | 137 | pc.printf("\n\r"); |
kcccansat | 0:a90ccfbf8695 | 138 | |
kcccansat | 0:a90ccfbf8695 | 139 | /****************communication ****************/ |
kcccansat | 0:a90ccfbf8695 | 140 | /* |
kcccansat | 0:a90ccfbf8695 | 141 | while(1){ |
kcccansat | 0:a90ccfbf8695 | 142 | radio_send(to_send); |
kcccansat | 0:a90ccfbf8695 | 143 | wait(5); |
kcccansat | 0:a90ccfbf8695 | 144 | // wait(1); |
kcccansat | 0:a90ccfbf8695 | 145 | // pc.printf("done sending\r\n"); |
kcccansat | 0:a90ccfbf8695 | 146 | } |
kcccansat | 0:a90ccfbf8695 | 147 | */ |
kcccansat | 0:a90ccfbf8695 | 148 | /* |
kcccansat | 0:a90ccfbf8695 | 149 | while(1){ |
kcccansat | 0:a90ccfbf8695 | 150 | relay_send(to_send); |
kcccansat | 0:a90ccfbf8695 | 151 | wait(5); |
kcccansat | 0:a90ccfbf8695 | 152 | } |
kcccansat | 0:a90ccfbf8695 | 153 | */ |
kcccansat | 0:a90ccfbf8695 | 154 | /* radio_received(received); |
kcccansat | 0:a90ccfbf8695 | 155 | for(i = 0; received[i] != '\0'; i++) |
kcccansat | 0:a90ccfbf8695 | 156 | { |
kcccansat | 0:a90ccfbf8695 | 157 | pc.printf("%x ", received[i]); |
kcccansat | 0:a90ccfbf8695 | 158 | received[i] = '\0'; |
kcccansat | 0:a90ccfbf8695 | 159 | |
kcccansat | 0:a90ccfbf8695 | 160 | } |
kcccansat | 0:a90ccfbf8695 | 161 | pc.printf("\r\n"); |
kcccansat | 0:a90ccfbf8695 | 162 | */ |
kcccansat | 0:a90ccfbf8695 | 163 | |
kcccansat | 0:a90ccfbf8695 | 164 | while(1) |
kcccansat | 0:a90ccfbf8695 | 165 | { |
kcccansat | 0:a90ccfbf8695 | 166 | radio_received(received); |
kcccansat | 0:a90ccfbf8695 | 167 | for(i = 0; received[i] != '\0'; i++) |
kcccansat | 0:a90ccfbf8695 | 168 | { |
kcccansat | 0:a90ccfbf8695 | 169 | pc.printf("%x ", received[i]); |
kcccansat | 0:a90ccfbf8695 | 170 | received[i] = '\0'; |
kcccansat | 0:a90ccfbf8695 | 171 | |
kcccansat | 0:a90ccfbf8695 | 172 | } |
kcccansat | 0:a90ccfbf8695 | 173 | pc.printf("\r\n"); |
kcccansat | 0:a90ccfbf8695 | 174 | |
kcccansat | 0:a90ccfbf8695 | 175 | wait(5); |
kcccansat | 0:a90ccfbf8695 | 176 | radio_send(to_send); |
kcccansat | 0:a90ccfbf8695 | 177 | pc.printf("reply send\r\n"); |
kcccansat | 0:a90ccfbf8695 | 178 | } |
kcccansat | 0:a90ccfbf8695 | 179 | |
kcccansat | 0:a90ccfbf8695 | 180 | /* |
kcccansat | 0:a90ccfbf8695 | 181 | |
kcccansat | 0:a90ccfbf8695 | 182 | while(1) |
kcccansat | 0:a90ccfbf8695 | 183 | { |
kcccansat | 0:a90ccfbf8695 | 184 | radio_send(to_send); |
kcccansat | 0:a90ccfbf8695 | 185 | wait(1); |
kcccansat | 0:a90ccfbf8695 | 186 | pc.printf("done sending\r\n"); |
kcccansat | 0:a90ccfbf8695 | 187 | } |
kcccansat | 0:a90ccfbf8695 | 188 | */ |
kcccansat | 0:a90ccfbf8695 | 189 | |
kcccansat | 0:a90ccfbf8695 | 190 | /* |
kcccansat | 0:a90ccfbf8695 | 191 | while(1) |
kcccansat | 0:a90ccfbf8695 | 192 | { |
kcccansat | 0:a90ccfbf8695 | 193 | i = 0; |
kcccansat | 0:a90ccfbf8695 | 194 | |
kcccansat | 0:a90ccfbf8695 | 195 | pc.printf("done1 "); |
kcccansat | 0:a90ccfbf8695 | 196 | radio_received(received); |
kcccansat | 0:a90ccfbf8695 | 197 | pc.printf("done2 "); |
kcccansat | 0:a90ccfbf8695 | 198 | while(received[i] != '\0') |
kcccansat | 0:a90ccfbf8695 | 199 | pc.putc( received[i++] ); |
kcccansat | 0:a90ccfbf8695 | 200 | wait(1); |
kcccansat | 0:a90ccfbf8695 | 201 | for(i = 0; i < 30; i++) |
kcccansat | 0:a90ccfbf8695 | 202 | received[i] = '\0'; |
kcccansat | 0:a90ccfbf8695 | 203 | } |
kcccansat | 0:a90ccfbf8695 | 204 | */ |
kcccansat | 0:a90ccfbf8695 | 205 | } |
kcccansat | 0:a90ccfbf8695 | 206 | |
kcccansat | 0:a90ccfbf8695 | 207 | |
kcccansat | 0:a90ccfbf8695 | 208 | |
kcccansat | 0:a90ccfbf8695 | 209 | /*************funtions used with radio****************/ |
kcccansat | 0:a90ccfbf8695 | 210 | int enter_cmd() |
kcccansat | 0:a90ccfbf8695 | 211 | { |
kcccansat | 0:a90ccfbf8695 | 212 | if (laird.writeable()) { |
kcccansat | 0:a90ccfbf8695 | 213 | //enter cmd mode, hex value: 0x41 0x54 0x2B 0x2B 0x2B 0x0D |
kcccansat | 0:a90ccfbf8695 | 214 | laird.putc('\x41'); |
kcccansat | 0:a90ccfbf8695 | 215 | laird.putc('\x54'); |
kcccansat | 0:a90ccfbf8695 | 216 | laird.putc('\x2b'); |
kcccansat | 0:a90ccfbf8695 | 217 | laird.putc('\x2b'); |
kcccansat | 0:a90ccfbf8695 | 218 | laird.putc('\x2b'); |
kcccansat | 0:a90ccfbf8695 | 219 | laird.putc('\x0d'); |
kcccansat | 0:a90ccfbf8695 | 220 | return 1; |
kcccansat | 0:a90ccfbf8695 | 221 | } |
kcccansat | 0:a90ccfbf8695 | 222 | else return 0; |
kcccansat | 0:a90ccfbf8695 | 223 | } |
kcccansat | 0:a90ccfbf8695 | 224 | |
kcccansat | 0:a90ccfbf8695 | 225 | void get_respond() |
kcccansat | 0:a90ccfbf8695 | 226 | { |
kcccansat | 0:a90ccfbf8695 | 227 | while(laird.readable() == 0); //wait until there is char to read |
kcccansat | 0:a90ccfbf8695 | 228 | pc.printf("%x ", laird.getc()); //print out the char in hex form |
kcccansat | 0:a90ccfbf8695 | 229 | } |
kcccansat | 0:a90ccfbf8695 | 230 | |
kcccansat | 0:a90ccfbf8695 | 231 | int exit_cmd() |
kcccansat | 0:a90ccfbf8695 | 232 | { |
kcccansat | 0:a90ccfbf8695 | 233 | //exit cmd mode, hex value: 0xcc 0x41 0x54 0x4f 0x0d |
kcccansat | 0:a90ccfbf8695 | 234 | if(laird.writeable()) |
kcccansat | 0:a90ccfbf8695 | 235 | { |
kcccansat | 0:a90ccfbf8695 | 236 | laird.putc('\xcc'); |
kcccansat | 0:a90ccfbf8695 | 237 | laird.putc('\x41'); |
kcccansat | 0:a90ccfbf8695 | 238 | laird.putc('\x54'); |
kcccansat | 0:a90ccfbf8695 | 239 | laird.putc('\x4f'); |
kcccansat | 0:a90ccfbf8695 | 240 | laird.putc('\x0d'); |
kcccansat | 0:a90ccfbf8695 | 241 | return 1; |
kcccansat | 0:a90ccfbf8695 | 242 | } |
kcccansat | 0:a90ccfbf8695 | 243 | |
kcccansat | 0:a90ccfbf8695 | 244 | else return 0; |
kcccansat | 0:a90ccfbf8695 | 245 | |
kcccansat | 0:a90ccfbf8695 | 246 | } |
kcccansat | 0:a90ccfbf8695 | 247 | |
kcccansat | 0:a90ccfbf8695 | 248 | int api() |
kcccansat | 0:a90ccfbf8695 | 249 | { |
kcccansat | 0:a90ccfbf8695 | 250 | if(laird.writeable()) |
kcccansat | 0:a90ccfbf8695 | 251 | { |
kcccansat | 0:a90ccfbf8695 | 252 | laird.putc('\xcc'); |
kcccansat | 0:a90ccfbf8695 | 253 | laird.putc('\x17'); |
kcccansat | 0:a90ccfbf8695 | 254 | laird.putc('\x13'); |
kcccansat | 0:a90ccfbf8695 | 255 | return 1; |
kcccansat | 0:a90ccfbf8695 | 256 | } |
kcccansat | 0:a90ccfbf8695 | 257 | |
kcccansat | 0:a90ccfbf8695 | 258 | else return 0; |
kcccansat | 0:a90ccfbf8695 | 259 | } |
kcccansat | 0:a90ccfbf8695 | 260 | |
kcccansat | 0:a90ccfbf8695 | 261 | int write_cb() |
kcccansat | 0:a90ccfbf8695 | 262 | { |
kcccansat | 0:a90ccfbf8695 | 263 | if(laird.writeable()) |
kcccansat | 0:a90ccfbf8695 | 264 | { |
kcccansat | 0:a90ccfbf8695 | 265 | laird.putc('\xcc'); |
kcccansat | 0:a90ccfbf8695 | 266 | laird.putc('\xc1'); |
kcccansat | 0:a90ccfbf8695 | 267 | laird.putc('\x56'); |
kcccansat | 0:a90ccfbf8695 | 268 | laird.putc('\x01'); |
kcccansat | 0:a90ccfbf8695 | 269 | laird.putc('\x41'); |
kcccansat | 0:a90ccfbf8695 | 270 | return 1; |
kcccansat | 0:a90ccfbf8695 | 271 | } |
kcccansat | 0:a90ccfbf8695 | 272 | |
kcccansat | 0:a90ccfbf8695 | 273 | else return 0; |
kcccansat | 0:a90ccfbf8695 | 274 | } |
kcccansat | 0:a90ccfbf8695 | 275 | |
kcccansat | 0:a90ccfbf8695 | 276 | //function used to send data over the radio, |
kcccansat | 0:a90ccfbf8695 | 277 | void radio_send(char *to_send) |
kcccansat | 0:a90ccfbf8695 | 278 | { |
kcccansat | 0:a90ccfbf8695 | 279 | int i = 0; |
kcccansat | 0:a90ccfbf8695 | 280 | for( i = 0; to_send[i] != '\0'; i++); |
kcccansat | 0:a90ccfbf8695 | 281 | |
kcccansat | 0:a90ccfbf8695 | 282 | laird.putc('\x81'); |
kcccansat | 0:a90ccfbf8695 | 283 | laird.putc(i); |
kcccansat | 0:a90ccfbf8695 | 284 | laird.putc(8); |
kcccansat | 0:a90ccfbf8695 | 285 | laird.putc(4); |
kcccansat | 0:a90ccfbf8695 | 286 | laird.putc(MAC_4); |
kcccansat | 0:a90ccfbf8695 | 287 | laird.putc(MAC_5); |
kcccansat | 0:a90ccfbf8695 | 288 | laird.putc(MAC_6); |
kcccansat | 0:a90ccfbf8695 | 289 | |
kcccansat | 0:a90ccfbf8695 | 290 | for( i = 0; to_send[i] != '\0'; i++) |
kcccansat | 0:a90ccfbf8695 | 291 | laird.putc(to_send[i]); |
kcccansat | 0:a90ccfbf8695 | 292 | pc.printf("sent"); |
kcccansat | 0:a90ccfbf8695 | 293 | } |
kcccansat | 0:a90ccfbf8695 | 294 | |
kcccansat | 0:a90ccfbf8695 | 295 | void relay_send(char *to_send) |
kcccansat | 0:a90ccfbf8695 | 296 | { |
kcccansat | 0:a90ccfbf8695 | 297 | int i = 0; |
kcccansat | 0:a90ccfbf8695 | 298 | for( i = 0; to_send[i] != '\0'; i++); |
kcccansat | 0:a90ccfbf8695 | 299 | |
kcccansat | 0:a90ccfbf8695 | 300 | laird.putc('\x81'); |
kcccansat | 0:a90ccfbf8695 | 301 | laird.putc(i + 3); |
kcccansat | 0:a90ccfbf8695 | 302 | laird.putc(8); |
kcccansat | 0:a90ccfbf8695 | 303 | laird.putc(4); |
kcccansat | 0:a90ccfbf8695 | 304 | laird.putc(MAC_1); |
kcccansat | 0:a90ccfbf8695 | 305 | laird.putc(MAC_2); |
kcccansat | 0:a90ccfbf8695 | 306 | laird.putc(MAC_3); |
kcccansat | 0:a90ccfbf8695 | 307 | laird.putc(MAC_4); |
kcccansat | 0:a90ccfbf8695 | 308 | laird.putc(MAC_5); |
kcccansat | 0:a90ccfbf8695 | 309 | laird.putc(MAC_6); |
kcccansat | 0:a90ccfbf8695 | 310 | for( i = 0; to_send[i] != '\0'; i++) |
kcccansat | 0:a90ccfbf8695 | 311 | laird.putc(to_send[i]); |
kcccansat | 0:a90ccfbf8695 | 312 | // laird.putc('\0'); |
kcccansat | 0:a90ccfbf8695 | 313 | // pc.printf("sent"); |
kcccansat | 0:a90ccfbf8695 | 314 | } |
kcccansat | 0:a90ccfbf8695 | 315 | |
kcccansat | 0:a90ccfbf8695 | 316 | |
kcccansat | 0:a90ccfbf8695 | 317 | void radio_received(char *received) |
kcccansat | 0:a90ccfbf8695 | 318 | { |
kcccansat | 0:a90ccfbf8695 | 319 | int size = 0; |
kcccansat | 0:a90ccfbf8695 | 320 | int i = 0; |
kcccansat | 0:a90ccfbf8695 | 321 | |
kcccansat | 0:a90ccfbf8695 | 322 | while(laird.readable() == 0); |
kcccansat | 0:a90ccfbf8695 | 323 | |
kcccansat | 0:a90ccfbf8695 | 324 | if( laird.getc() == '\x81') |
kcccansat | 0:a90ccfbf8695 | 325 | { |
kcccansat | 0:a90ccfbf8695 | 326 | |
kcccansat | 0:a90ccfbf8695 | 327 | size = laird.getc(); |
kcccansat | 0:a90ccfbf8695 | 328 | //throw away next 5 chars |
kcccansat | 0:a90ccfbf8695 | 329 | pc.printf("%x ", laird.getc()); |
kcccansat | 0:a90ccfbf8695 | 330 | pc.printf("%x ", laird.getc()); |
kcccansat | 0:a90ccfbf8695 | 331 | pc.printf("%x ", laird.getc()); |
kcccansat | 0:a90ccfbf8695 | 332 | pc.printf("%x ", laird.getc()); |
kcccansat | 0:a90ccfbf8695 | 333 | pc.printf("%x ", laird.getc()); |
kcccansat | 0:a90ccfbf8695 | 334 | |
kcccansat | 0:a90ccfbf8695 | 335 | for( i = 0; i < size; i++) |
kcccansat | 0:a90ccfbf8695 | 336 | { received[i] = laird.getc(); |
kcccansat | 0:a90ccfbf8695 | 337 | |
kcccansat | 0:a90ccfbf8695 | 338 | } |
kcccansat | 0:a90ccfbf8695 | 339 | received[i + 1] = '\0'; //used to mark the ending of data |
kcccansat | 0:a90ccfbf8695 | 340 | } |
kcccansat | 0:a90ccfbf8695 | 341 | |
kcccansat | 0:a90ccfbf8695 | 342 | } |