Hiroshi Yamaguchi / Mbed 2 deprecated XBeeExamples

Dependencies:   mbed XBee mbed-rtos

Committer:
yamaguch
Date:
Wed Sep 26 06:13:30 2012 +0000
Revision:
7:39deffbdcae4
Parent:
at_command.cpp@5:d01cf03058f6
renamed function names

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yamaguch 5:d01cf03058f6 1 #include "XBee.h"
yamaguch 5:d01cf03058f6 2
yamaguch 7:39deffbdcae4 3 void xbee_at_command() {
yamaguch 5:d01cf03058f6 4 XBee xbee(p9, p10);
yamaguch 5:d01cf03058f6 5 xbee.baud(115200);;
yamaguch 5:d01cf03058f6 6 xbee.init();
yamaguch 5:d01cf03058f6 7
yamaguch 5:d01cf03058f6 8 while (true) {
yamaguch 5:d01cf03058f6 9 printf("Enter AT command or q (quit) => ");
yamaguch 5:d01cf03058f6 10 char command[32], param[32] = {};
yamaguch 5:d01cf03058f6 11 int length = 0;
yamaguch 5:d01cf03058f6 12 scanf("%s", command);
yamaguch 5:d01cf03058f6 13 if (command[0] == 'q')
yamaguch 5:d01cf03058f6 14 break;
yamaguch 5:d01cf03058f6 15 if (command[2]) {
yamaguch 5:d01cf03058f6 16 if ((command[0] == 'N' && command[1] == 'I') ||
yamaguch 5:d01cf03058f6 17 (command[0] == 'N' && command[1] == 'D') ||
yamaguch 5:d01cf03058f6 18 (command[0] == 'D' && command[1] == 'N')) {
yamaguch 5:d01cf03058f6 19 while ((param[length] = command[length + 2]) != 0)
yamaguch 5:d01cf03058f6 20 length++;
yamaguch 5:d01cf03058f6 21 } else {
yamaguch 5:d01cf03058f6 22 if (command[2] == '0' && (command[3] == 'x' || command[3] == 'X')) {
yamaguch 5:d01cf03058f6 23 length = strlen(&command[4]);
yamaguch 5:d01cf03058f6 24 if (length <= 2) {
yamaguch 5:d01cf03058f6 25 length = 1;
yamaguch 5:d01cf03058f6 26 sscanf(&command[4], "%hhX", (char *) param);
yamaguch 5:d01cf03058f6 27 } else if (length <= 4) {
yamaguch 5:d01cf03058f6 28 length = 2;
yamaguch 5:d01cf03058f6 29 unsigned short us;
yamaguch 5:d01cf03058f6 30 sscanf(&command[4], "%hX", &us);
yamaguch 5:d01cf03058f6 31 param[1] = (us >> 0) & 0xFF;
yamaguch 5:d01cf03058f6 32 param[0] = (us >> 8) & 0xFF;
yamaguch 5:d01cf03058f6 33 } else if (length <= 8) {
yamaguch 5:d01cf03058f6 34 length = 4;
yamaguch 5:d01cf03058f6 35 unsigned long ul;
yamaguch 5:d01cf03058f6 36 sscanf(&command[4], "%X", &ul);
yamaguch 5:d01cf03058f6 37 param[3] = (ul >> 0) & 0xFF;
yamaguch 5:d01cf03058f6 38 param[2] = (ul >> 8) & 0xFF;
yamaguch 5:d01cf03058f6 39 param[1] = (ul >> 16) & 0xFF;
yamaguch 5:d01cf03058f6 40 param[0] = (ul >> 24) & 0xFF;
yamaguch 5:d01cf03058f6 41 } else {
yamaguch 5:d01cf03058f6 42 length = 8;
yamaguch 5:d01cf03058f6 43 unsigned long long ull;
yamaguch 5:d01cf03058f6 44 sscanf(&command[4], "%llX", &ull);
yamaguch 5:d01cf03058f6 45 param[7] = (ull >> 0) & 0xFF;
yamaguch 5:d01cf03058f6 46 param[6] = (ull >> 8) & 0xFF;
yamaguch 5:d01cf03058f6 47 param[5] = (ull >> 16) & 0xFF;
yamaguch 5:d01cf03058f6 48 param[4] = (ull >> 24) & 0xFF;
yamaguch 5:d01cf03058f6 49 param[3] = (ull >> 32) & 0xFF;
yamaguch 5:d01cf03058f6 50 param[2] = (ull >> 40) & 0xFF;
yamaguch 5:d01cf03058f6 51 param[1] = (ull >> 48) & 0xFF;
yamaguch 5:d01cf03058f6 52 param[0] = (ull >> 56) & 0xFF;
yamaguch 5:d01cf03058f6 53 }
yamaguch 5:d01cf03058f6 54 } else {
yamaguch 5:d01cf03058f6 55 unsigned short us;
yamaguch 5:d01cf03058f6 56 sscanf(&command[2], "%hd", &us);
yamaguch 5:d01cf03058f6 57 if (us < 256) {
yamaguch 5:d01cf03058f6 58 length = 1;
yamaguch 5:d01cf03058f6 59 param[0] = us;
yamaguch 5:d01cf03058f6 60 } else {
yamaguch 5:d01cf03058f6 61 length = 2;
yamaguch 5:d01cf03058f6 62 param[1] = (us >> 0) & 0xFF;
yamaguch 5:d01cf03058f6 63 param[0] = (us >> 8) & 0xFF;
yamaguch 5:d01cf03058f6 64 }
yamaguch 5:d01cf03058f6 65 }
yamaguch 5:d01cf03058f6 66 }
yamaguch 5:d01cf03058f6 67 }
yamaguch 5:d01cf03058f6 68 command[2] = '\0';
yamaguch 5:d01cf03058f6 69
yamaguch 5:d01cf03058f6 70 xbee.sendCommand(command, param, length);
yamaguch 5:d01cf03058f6 71
yamaguch 5:d01cf03058f6 72 while (xbee.receive())
yamaguch 5:d01cf03058f6 73 xbee.dump();
yamaguch 5:d01cf03058f6 74 }
yamaguch 5:d01cf03058f6 75 printf("done.\n");
yamaguch 5:d01cf03058f6 76 }