Xbee API Test 3

Dependencies:   XBee mbed

> help
h or help
m <status-in-hex>,. ... Modem status
l <cmd>,<val-in-hex>.   ... exec <cmd> (AT) at this host.
lset fid <val-in-hex>. ... set local frame id. default is 1.
lset cmd <val-in-hex>. ... set local command.
lset val <val-in-hex>. ... set local command value.
q <cmd>,<val-in-hex>.   ... set queue parameter value.
r <cmd>,<val-in-hex>.   ... exec <cmd> (AT)at remote host.
rset a16 <val-in-hex>. ... set remote address high.
rset a64 <val-in-hex>,<val-in-hex>.  ... set remote address low.
rset fid <val-in-hex>. ... set remote frame id. default is 1.

> l D4,0x05
cmd=D4 val=0x05
apiId=88

object 100008c8:35 01 00 10 88 00 05 FE 04 01 00 FF

l OK:

> l D4,0x04
cmd=D4 val=0x04
apiId=88

object 100008c8:35 01 00 10 88 00 05 FE 04 01 00 FF

l OK:

>
Committer:
takashiyamanoue
Date:
Sat Jul 21 04:09:54 2012 +0000
Revision:
0:3edcfa3aba71
xbee test 3

Who changed what in which revision?

UserRevisionLine numberNew contents of line
takashiyamanoue 0:3edcfa3aba71 1 #include "mbed.h"
takashiyamanoue 0:3edcfa3aba71 2 #include "XBee.h"
takashiyamanoue 0:3edcfa3aba71 3 #include "CQueue.h"
takashiyamanoue 0:3edcfa3aba71 4 #include "ResponseQueue.h"
takashiyamanoue 0:3edcfa3aba71 5
takashiyamanoue 0:3edcfa3aba71 6 XBee xbee(p13, p14);
takashiyamanoue 0:3edcfa3aba71 7 Serial pc(USBTX, USBRX);
takashiyamanoue 0:3edcfa3aba71 8 Ticker tick;
takashiyamanoue 0:3edcfa3aba71 9 CQueue cq(256);
takashiyamanoue 0:3edcfa3aba71 10 ResponseQueue localResponseQueue;
takashiyamanoue 0:3edcfa3aba71 11 ResponseQueue remoteResponseQueue;
takashiyamanoue 0:3edcfa3aba71 12
takashiyamanoue 0:3edcfa3aba71 13 uint8_t RemoteCmd[2];
takashiyamanoue 0:3edcfa3aba71 14 uint8_t LocalCmd[2];
takashiyamanoue 0:3edcfa3aba71 15 uint8_t RemoteVal[100];
takashiyamanoue 0:3edcfa3aba71 16 uint8_t LocalVal[100];
takashiyamanoue 0:3edcfa3aba71 17 AtCommandResponse response;
takashiyamanoue 0:3edcfa3aba71 18 RemoteAtCommandResponse remoteResp;
takashiyamanoue 0:3edcfa3aba71 19 ZBTxStatusResponse zbTxResp;
takashiyamanoue 0:3edcfa3aba71 20 ZBRxResponse zbRxResp;
takashiyamanoue 0:3edcfa3aba71 21 ZBRxIoSampleResponse zbRxIoResp;
takashiyamanoue 0:3edcfa3aba71 22 Rx64Response rx64Resp;
takashiyamanoue 0:3edcfa3aba71 23 Rx16Response rx16Resp;
takashiyamanoue 0:3edcfa3aba71 24 Rx64IoSampleResponse rx64IoResp;
takashiyamanoue 0:3edcfa3aba71 25 Rx16IoSampleResponse rx16IoResp;
takashiyamanoue 0:3edcfa3aba71 26 TxStatusResponse txStatusResp;
takashiyamanoue 0:3edcfa3aba71 27 FrameIdResponse frameIdResp;
takashiyamanoue 0:3edcfa3aba71 28 XBeeResponse xbResp;
takashiyamanoue 0:3edcfa3aba71 29 ModemStatusResponse modemStatusResp;
takashiyamanoue 0:3edcfa3aba71 30
takashiyamanoue 0:3edcfa3aba71 31 /*
takashiyamanoue 0:3edcfa3aba71 32 #define TX_64_REQUEST 0x0
takashiyamanoue 0:3edcfa3aba71 33 #define TX_16_REQUEST 0x1
takashiyamanoue 0:3edcfa3aba71 34 #define AT_COMMAND_REQUEST 0x08
takashiyamanoue 0:3edcfa3aba71 35 #define AT_COMMAND_QUEUE_REQUEST 0x09
takashiyamanoue 0:3edcfa3aba71 36 #define REMOTE_AT_REQUEST 0x17
takashiyamanoue 0:3edcfa3aba71 37 #define ZB_TX_REQUEST 0x10
takashiyamanoue 0:3edcfa3aba71 38 #define ZB_EXPLICIT_TX_REQUEST 0x11
takashiyamanoue 0:3edcfa3aba71 39 #define RX_64_RESPONSE 0x80
takashiyamanoue 0:3edcfa3aba71 40 #define RX_16_RESPONSE 0x81
takashiyamanoue 0:3edcfa3aba71 41 #define RX_64_IO_RESPONSE 0x82
takashiyamanoue 0:3edcfa3aba71 42 #define RX_16_IO_RESPONSE 0x83
takashiyamanoue 0:3edcfa3aba71 43 #define AT_RESPONSE 0x88
takashiyamanoue 0:3edcfa3aba71 44 #define TX_STATUS_RESPONSE 0x89
takashiyamanoue 0:3edcfa3aba71 45 #define MODEM_STATUS_RESPONSE 0x8a
takashiyamanoue 0:3edcfa3aba71 46 #define ZB_RX_RESPONSE 0x90
takashiyamanoue 0:3edcfa3aba71 47 #define ZB_EXPLICIT_RX_RESPONSE 0x91
takashiyamanoue 0:3edcfa3aba71 48 #define ZB_TX_STATUS_RESPONSE 0x8b
takashiyamanoue 0:3edcfa3aba71 49 #define ZB_IO_SAMPLE_RESPONSE 0x92
takashiyamanoue 0:3edcfa3aba71 50 #define ZB_IO_NODE_IDENTIFIER_RESPONSE 0x95
takashiyamanoue 0:3edcfa3aba71 51 #define AT_COMMAND_RESPONSE 0x88
takashiyamanoue 0:3edcfa3aba71 52 #define REMOTE_AT_COMMAND_RESPONSE 0x97
takashiyamanoue 0:3edcfa3aba71 53 */
takashiyamanoue 0:3edcfa3aba71 54 void copyObject(int size, uint8_t *source, uint8_t *destination){
takashiyamanoue 0:3edcfa3aba71 55 for(int i=0;i<size;i++){
takashiyamanoue 0:3edcfa3aba71 56 destination[i]=source[i];
takashiyamanoue 0:3edcfa3aba71 57 }
takashiyamanoue 0:3edcfa3aba71 58 }
takashiyamanoue 0:3edcfa3aba71 59
takashiyamanoue 0:3edcfa3aba71 60 void dumpObject(Serial *s, int size, uint8_t *object){
takashiyamanoue 0:3edcfa3aba71 61 s->printf("object %x:",object);
takashiyamanoue 0:3edcfa3aba71 62 for (int i = 0; i < size; i++) s->printf("%02X ", object[i]);
takashiyamanoue 0:3edcfa3aba71 63 s->printf("\n\r");
takashiyamanoue 0:3edcfa3aba71 64 }
takashiyamanoue 0:3edcfa3aba71 65
takashiyamanoue 0:3edcfa3aba71 66 void getResponse(Serial *s){
takashiyamanoue 0:3edcfa3aba71 67 AtCommandResponse *lrp;
takashiyamanoue 0:3edcfa3aba71 68 RemoteAtCommandResponse *rrp;
takashiyamanoue 0:3edcfa3aba71 69 uint8_t apiId;
takashiyamanoue 0:3edcfa3aba71 70 xbee.readPacket();
takashiyamanoue 0:3edcfa3aba71 71 if (!xbee.getResponse().isAvailable()) {
takashiyamanoue 0:3edcfa3aba71 72 return;
takashiyamanoue 0:3edcfa3aba71 73 }
takashiyamanoue 0:3edcfa3aba71 74 // s->printf("\n\r xbee getResponse isAvailable\n\r");
takashiyamanoue 0:3edcfa3aba71 75 // Got a response! Check if response is AT command respose
takashiyamanoue 0:3edcfa3aba71 76 apiId=xbee.getResponse().getApiId();
takashiyamanoue 0:3edcfa3aba71 77 s->printf("apiId=%x\n\r",apiId);
takashiyamanoue 0:3edcfa3aba71 78 if (apiId == AT_COMMAND_RESPONSE) {
takashiyamanoue 0:3edcfa3aba71 79 lrp=(localResponseQueue.requestResponse());
takashiyamanoue 0:3edcfa3aba71 80 (xbee.getResponse()).getAtCommandResponse((AtCommandResponse &)(*lrp));
takashiyamanoue 0:3edcfa3aba71 81 localResponseQueue.putResponse(lrp);
takashiyamanoue 0:3edcfa3aba71 82 return;
takashiyamanoue 0:3edcfa3aba71 83 // s->printf(" putResponse done.\n\r");
takashiyamanoue 0:3edcfa3aba71 84 }
takashiyamanoue 0:3edcfa3aba71 85 else
takashiyamanoue 0:3edcfa3aba71 86 if (apiId == REMOTE_AT_COMMAND_RESPONSE) {
takashiyamanoue 0:3edcfa3aba71 87 // s->printf("RemoteAtCommand.\n\r");
takashiyamanoue 0:3edcfa3aba71 88 rrp = (RemoteAtCommandResponse *)(remoteResponseQueue.requestResponse());
takashiyamanoue 0:3edcfa3aba71 89 xbee.getResponse().getRemoteAtCommandResponse((RemoteAtCommandResponse &)(*rrp));
takashiyamanoue 0:3edcfa3aba71 90 remoteResponseQueue.putResponse(rrp);
takashiyamanoue 0:3edcfa3aba71 91 return;
takashiyamanoue 0:3edcfa3aba71 92 }
takashiyamanoue 0:3edcfa3aba71 93 else
takashiyamanoue 0:3edcfa3aba71 94 if(apiId==RX_64_RESPONSE){
takashiyamanoue 0:3edcfa3aba71 95 (xbee.getResponse()).getRx64Response(rx64Resp);
takashiyamanoue 0:3edcfa3aba71 96 }
takashiyamanoue 0:3edcfa3aba71 97 else
takashiyamanoue 0:3edcfa3aba71 98 if(apiId==RX_16_RESPONSE){
takashiyamanoue 0:3edcfa3aba71 99 (xbee.getResponse()).getRx16Response(rx16Resp);
takashiyamanoue 0:3edcfa3aba71 100 }
takashiyamanoue 0:3edcfa3aba71 101 else
takashiyamanoue 0:3edcfa3aba71 102 if(apiId==RX_64_IO_RESPONSE){
takashiyamanoue 0:3edcfa3aba71 103 (xbee.getResponse()).getRx64IoSampleResponse(rx64IoResp);
takashiyamanoue 0:3edcfa3aba71 104 }
takashiyamanoue 0:3edcfa3aba71 105 else
takashiyamanoue 0:3edcfa3aba71 106 if(apiId==RX_16_IO_RESPONSE){
takashiyamanoue 0:3edcfa3aba71 107 (xbee.getResponse()).getRx16IoSampleResponse(rx16IoResp);
takashiyamanoue 0:3edcfa3aba71 108 }
takashiyamanoue 0:3edcfa3aba71 109 else
takashiyamanoue 0:3edcfa3aba71 110 if(apiId==TX_STATUS_RESPONSE ){
takashiyamanoue 0:3edcfa3aba71 111 (xbee.getResponse()).getTxStatusResponse(txStatusResp);
takashiyamanoue 0:3edcfa3aba71 112 }
takashiyamanoue 0:3edcfa3aba71 113 else
takashiyamanoue 0:3edcfa3aba71 114 if(apiId==MODEM_STATUS_RESPONSE ){
takashiyamanoue 0:3edcfa3aba71 115 (xbee.getResponse()).getAtCommandResponse(modemStatusResp);
takashiyamanoue 0:3edcfa3aba71 116 }
takashiyamanoue 0:3edcfa3aba71 117 else
takashiyamanoue 0:3edcfa3aba71 118 if(apiId==ZB_RX_RESPONSE){
takashiyamanoue 0:3edcfa3aba71 119 (xbee.getResponse()).getZBRxResponse(zbRxResp);
takashiyamanoue 0:3edcfa3aba71 120 }
takashiyamanoue 0:3edcfa3aba71 121 else
takashiyamanoue 0:3edcfa3aba71 122 if(apiId==ZB_TX_STATUS_RESPONSE ){
takashiyamanoue 0:3edcfa3aba71 123 (xbee.getResponse()).getZBTxStatusResponse(zbTxResp);
takashiyamanoue 0:3edcfa3aba71 124 }
takashiyamanoue 0:3edcfa3aba71 125 else
takashiyamanoue 0:3edcfa3aba71 126 if(apiId==ZB_IO_SAMPLE_RESPONSE){
takashiyamanoue 0:3edcfa3aba71 127 (xbee.getResponse()).getZBRxIoSampleResponse(zbRxIoResp);
takashiyamanoue 0:3edcfa3aba71 128 }
takashiyamanoue 0:3edcfa3aba71 129 else
takashiyamanoue 0:3edcfa3aba71 130 if(apiId==MODEM_STATUS_RESPONSE){
takashiyamanoue 0:3edcfa3aba71 131 (xbee.getResponse()).getModemStatusResponse(modemStatusResp);
takashiyamanoue 0:3edcfa3aba71 132 }
takashiyamanoue 0:3edcfa3aba71 133 else {
takashiyamanoue 0:3edcfa3aba71 134 s->printf("Remote Command Error:0x%X\n", (xbee.getResponse()).getErrorCode());
takashiyamanoue 0:3edcfa3aba71 135 }
takashiyamanoue 0:3edcfa3aba71 136 }
takashiyamanoue 0:3edcfa3aba71 137
takashiyamanoue 0:3edcfa3aba71 138 void advance(){
takashiyamanoue 0:3edcfa3aba71 139 int c;
takashiyamanoue 0:3edcfa3aba71 140 if(pc.readable()){
takashiyamanoue 0:3edcfa3aba71 141 c=pc.getc();
takashiyamanoue 0:3edcfa3aba71 142 pc.putc(c); // echo-back
takashiyamanoue 0:3edcfa3aba71 143 cq.putc(c);
takashiyamanoue 0:3edcfa3aba71 144 }
takashiyamanoue 0:3edcfa3aba71 145 getResponse(&pc);
takashiyamanoue 0:3edcfa3aba71 146 }
takashiyamanoue 0:3edcfa3aba71 147
takashiyamanoue 0:3edcfa3aba71 148 int isStartWith(uint8_t *a, char *key){
takashiyamanoue 0:3edcfa3aba71 149 while(*key!='\0' && *a!='\0'){
takashiyamanoue 0:3edcfa3aba71 150 if(*a!=*key){
takashiyamanoue 0:3edcfa3aba71 151 return 0;
takashiyamanoue 0:3edcfa3aba71 152 }
takashiyamanoue 0:3edcfa3aba71 153 a++;
takashiyamanoue 0:3edcfa3aba71 154 key++;
takashiyamanoue 0:3edcfa3aba71 155 }
takashiyamanoue 0:3edcfa3aba71 156 if(*key=='\0') return 1;
takashiyamanoue 0:3edcfa3aba71 157 return 0;
takashiyamanoue 0:3edcfa3aba71 158 }
takashiyamanoue 0:3edcfa3aba71 159
takashiyamanoue 0:3edcfa3aba71 160 uint8_t *rmHeadIf(uint8_t *a, char *key){
takashiyamanoue 0:3edcfa3aba71 161 uint8_t *ap;
takashiyamanoue 0:3edcfa3aba71 162 char *kp;
takashiyamanoue 0:3edcfa3aba71 163 ap=a; kp=key;
takashiyamanoue 0:3edcfa3aba71 164 while(*kp!='\0' && *ap!='\0'){
takashiyamanoue 0:3edcfa3aba71 165 if(*ap!=*kp){
takashiyamanoue 0:3edcfa3aba71 166 return NULL;
takashiyamanoue 0:3edcfa3aba71 167 }
takashiyamanoue 0:3edcfa3aba71 168 ap++;
takashiyamanoue 0:3edcfa3aba71 169 kp++;
takashiyamanoue 0:3edcfa3aba71 170 }
takashiyamanoue 0:3edcfa3aba71 171 if(*kp=='\0') return ap;
takashiyamanoue 0:3edcfa3aba71 172 return NULL;
takashiyamanoue 0:3edcfa3aba71 173 }
takashiyamanoue 0:3edcfa3aba71 174
takashiyamanoue 0:3edcfa3aba71 175 uint8_t *rmSpace(uint8_t *a){
takashiyamanoue 0:3edcfa3aba71 176 while(*a!='\0'){
takashiyamanoue 0:3edcfa3aba71 177 if(*a!=' '){
takashiyamanoue 0:3edcfa3aba71 178 return a;
takashiyamanoue 0:3edcfa3aba71 179 }
takashiyamanoue 0:3edcfa3aba71 180 a++;
takashiyamanoue 0:3edcfa3aba71 181 }
takashiyamanoue 0:3edcfa3aba71 182 return a;
takashiyamanoue 0:3edcfa3aba71 183 }
takashiyamanoue 0:3edcfa3aba71 184
takashiyamanoue 0:3edcfa3aba71 185 uint32_t s2uint32(uint8_t *s){
takashiyamanoue 0:3edcfa3aba71 186 uint32_t x;
takashiyamanoue 0:3edcfa3aba71 187 x=0;
takashiyamanoue 0:3edcfa3aba71 188 if(isStartWith(s,"0x")){
takashiyamanoue 0:3edcfa3aba71 189 s++; s++;
takashiyamanoue 0:3edcfa3aba71 190 while(*s!='\0'){
takashiyamanoue 0:3edcfa3aba71 191 if(*s>='0' && *s<='9'){
takashiyamanoue 0:3edcfa3aba71 192 x=x<<4 |((*s)-'0');
takashiyamanoue 0:3edcfa3aba71 193 }
takashiyamanoue 0:3edcfa3aba71 194 else
takashiyamanoue 0:3edcfa3aba71 195 if(*s>='a' && *s<='f'){
takashiyamanoue 0:3edcfa3aba71 196 x=x<<4 | ((*s)-'a'+10);
takashiyamanoue 0:3edcfa3aba71 197 }
takashiyamanoue 0:3edcfa3aba71 198 else
takashiyamanoue 0:3edcfa3aba71 199 if(*s>='A' && *s<='F'){
takashiyamanoue 0:3edcfa3aba71 200 x=x<<4 | ((*s)-'A'+10);
takashiyamanoue 0:3edcfa3aba71 201 }
takashiyamanoue 0:3edcfa3aba71 202 s++;
takashiyamanoue 0:3edcfa3aba71 203 // printf("\n\r x=%x\n\r",x);
takashiyamanoue 0:3edcfa3aba71 204 }
takashiyamanoue 0:3edcfa3aba71 205 }
takashiyamanoue 0:3edcfa3aba71 206 else
takashiyamanoue 0:3edcfa3aba71 207 if(*s>='0' && *s<='9'){
takashiyamanoue 0:3edcfa3aba71 208 s++; s++;
takashiyamanoue 0:3edcfa3aba71 209 while(*s!='\0'){
takashiyamanoue 0:3edcfa3aba71 210 if(*s>='0' && *s<='9'){
takashiyamanoue 0:3edcfa3aba71 211 x=x*10+(*s)-'0';
takashiyamanoue 0:3edcfa3aba71 212 }
takashiyamanoue 0:3edcfa3aba71 213 s++;
takashiyamanoue 0:3edcfa3aba71 214 }
takashiyamanoue 0:3edcfa3aba71 215 }
takashiyamanoue 0:3edcfa3aba71 216 return x;
takashiyamanoue 0:3edcfa3aba71 217 }
takashiyamanoue 0:3edcfa3aba71 218 uint16_t s2uint16(uint8_t *s){
takashiyamanoue 0:3edcfa3aba71 219 uint16_t x;
takashiyamanoue 0:3edcfa3aba71 220 x=0;
takashiyamanoue 0:3edcfa3aba71 221 if(isStartWith(s,"0x")){
takashiyamanoue 0:3edcfa3aba71 222 s++; s++;
takashiyamanoue 0:3edcfa3aba71 223 while(*s!='\0' && *s!='.'){
takashiyamanoue 0:3edcfa3aba71 224 if(*s>='0' && *s<='9'){
takashiyamanoue 0:3edcfa3aba71 225 x=x<<4 |((*s)-'0');
takashiyamanoue 0:3edcfa3aba71 226 }
takashiyamanoue 0:3edcfa3aba71 227 else
takashiyamanoue 0:3edcfa3aba71 228 if(*s>='a' && *s<='f'){
takashiyamanoue 0:3edcfa3aba71 229 x=x<<4 | ((*s)-'a'+10);
takashiyamanoue 0:3edcfa3aba71 230 }
takashiyamanoue 0:3edcfa3aba71 231 else
takashiyamanoue 0:3edcfa3aba71 232 if(*s>='A' && *s<='F'){
takashiyamanoue 0:3edcfa3aba71 233 x=x<<4 | ((*s)-'A'+10);
takashiyamanoue 0:3edcfa3aba71 234 }
takashiyamanoue 0:3edcfa3aba71 235 s++;
takashiyamanoue 0:3edcfa3aba71 236 // printf("\n\r x=%x\n\r",x);
takashiyamanoue 0:3edcfa3aba71 237 }
takashiyamanoue 0:3edcfa3aba71 238 }
takashiyamanoue 0:3edcfa3aba71 239 else
takashiyamanoue 0:3edcfa3aba71 240 if(*s>='0' && *s<='9'){
takashiyamanoue 0:3edcfa3aba71 241 s++; s++;
takashiyamanoue 0:3edcfa3aba71 242 while(*s!='\0'){
takashiyamanoue 0:3edcfa3aba71 243 if(*s>='0' && *s<='9'){
takashiyamanoue 0:3edcfa3aba71 244 x=x*10+(*s)-'0';
takashiyamanoue 0:3edcfa3aba71 245 }
takashiyamanoue 0:3edcfa3aba71 246 s++;
takashiyamanoue 0:3edcfa3aba71 247 }
takashiyamanoue 0:3edcfa3aba71 248 }
takashiyamanoue 0:3edcfa3aba71 249 return x;
takashiyamanoue 0:3edcfa3aba71 250 }
takashiyamanoue 0:3edcfa3aba71 251
takashiyamanoue 0:3edcfa3aba71 252 int setStrConst(uint8_t *in, uint8_t *out){
takashiyamanoue 0:3edcfa3aba71 253 int l=0;
takashiyamanoue 0:3edcfa3aba71 254 if(*in!='\"') return 0;
takashiyamanoue 0:3edcfa3aba71 255 in++;
takashiyamanoue 0:3edcfa3aba71 256 while(*in!='\0'){
takashiyamanoue 0:3edcfa3aba71 257 if(*in=='\\'){
takashiyamanoue 0:3edcfa3aba71 258 in++;
takashiyamanoue 0:3edcfa3aba71 259 }
takashiyamanoue 0:3edcfa3aba71 260 if(*in=='\"'){
takashiyamanoue 0:3edcfa3aba71 261 *out='\0';
takashiyamanoue 0:3edcfa3aba71 262 return l;
takashiyamanoue 0:3edcfa3aba71 263 }
takashiyamanoue 0:3edcfa3aba71 264 l++;
takashiyamanoue 0:3edcfa3aba71 265 in++;
takashiyamanoue 0:3edcfa3aba71 266 out++;
takashiyamanoue 0:3edcfa3aba71 267 }
takashiyamanoue 0:3edcfa3aba71 268 return l;
takashiyamanoue 0:3edcfa3aba71 269 }
takashiyamanoue 0:3edcfa3aba71 270
takashiyamanoue 0:3edcfa3aba71 271 char breaks1[]={'\n','\r',',',' ','\0'};
takashiyamanoue 0:3edcfa3aba71 272 char hexc[]={'0','1','2','3','4','5','6','7','8','9',
takashiyamanoue 0:3edcfa3aba71 273 'a','A','b','B','c','C','d','D','e','E','f','F','\0'};
takashiyamanoue 0:3edcfa3aba71 274 char decs[]={'0','1','2','3','4','5','6','7','8','9'};
takashiyamanoue 0:3edcfa3aba71 275 char af[]={'a','b','c','d','e','f'};
takashiyamanoue 0:3edcfa3aba71 276 char AF[]={'A','B','C','D','E','F'};
takashiyamanoue 0:3edcfa3aba71 277
takashiyamanoue 0:3edcfa3aba71 278 int isInLetters(char c, char *letters){
takashiyamanoue 0:3edcfa3aba71 279 while(*letters!='\0'){
takashiyamanoue 0:3edcfa3aba71 280 if(c==*letters) return 1;
takashiyamanoue 0:3edcfa3aba71 281 letters++;
takashiyamanoue 0:3edcfa3aba71 282 }
takashiyamanoue 0:3edcfa3aba71 283 return 0;
takashiyamanoue 0:3edcfa3aba71 284 }
takashiyamanoue 0:3edcfa3aba71 285
takashiyamanoue 0:3edcfa3aba71 286 void printHelp(Serial *s){
takashiyamanoue 0:3edcfa3aba71 287 s->printf("h or help\n\r");
takashiyamanoue 0:3edcfa3aba71 288 s->printf("m <status-in-hex>,. ... Modem status\n\r");
takashiyamanoue 0:3edcfa3aba71 289 s->printf("l <cmd>,<val-in-hex>. ... exec <cmd> (AT) at this host.\n\r");
takashiyamanoue 0:3edcfa3aba71 290 s->printf("lset fid <val-in-hex>. ... set local frame id. default is 1.\n\r");
takashiyamanoue 0:3edcfa3aba71 291 s->printf("lset cmd <val-in-hex>. ... set local command.\n\r");
takashiyamanoue 0:3edcfa3aba71 292 s->printf("lset val <val-in-hex>. ... set local command value.\n\r");
takashiyamanoue 0:3edcfa3aba71 293 s->printf("q <cmd>,<val-in-hex>. ... set queue parameter value.\n\r");
takashiyamanoue 0:3edcfa3aba71 294 s->printf("r <cmd>,<val-in-hex>. ... exec <cmd> (AT)at remote host.\n\r");
takashiyamanoue 0:3edcfa3aba71 295 s->printf("rset a16 <val-in-hex>. ... set remote address high.\n\r");
takashiyamanoue 0:3edcfa3aba71 296 s->printf("rset a64 <val-in-hex>,<val-in-hex>. ... set remote address low.\n\r");
takashiyamanoue 0:3edcfa3aba71 297 s->printf("rset fid <val-in-hex>. ... set remote frame id. default is 1.\n\r");
takashiyamanoue 0:3edcfa3aba71 298 }
takashiyamanoue 0:3edcfa3aba71 299
takashiyamanoue 0:3edcfa3aba71 300 void parseCommand(uint8_t *linep, uint8_t *cmd, uint8_t *val, uint8_t *vlength){
takashiyamanoue 0:3edcfa3aba71 301 int l;
takashiyamanoue 0:3edcfa3aba71 302 uint32_t x32;
takashiyamanoue 0:3edcfa3aba71 303 uint8_t lv=0;
takashiyamanoue 0:3edcfa3aba71 304 linep=rmSpace(linep);
takashiyamanoue 0:3edcfa3aba71 305 cmd[0]=*linep; linep++;
takashiyamanoue 0:3edcfa3aba71 306 cmd[1]=*linep; linep++;
takashiyamanoue 0:3edcfa3aba71 307 linep=rmSpace(linep);
takashiyamanoue 0:3edcfa3aba71 308 linep++; // skip ','
takashiyamanoue 0:3edcfa3aba71 309 linep=rmSpace(linep);
takashiyamanoue 0:3edcfa3aba71 310 l=strlen((char *)linep);
takashiyamanoue 0:3edcfa3aba71 311 if(isStartWith(linep,"0x")){
takashiyamanoue 0:3edcfa3aba71 312 if(l-2>=8){
takashiyamanoue 0:3edcfa3aba71 313 x32=s2uint32(linep);
takashiyamanoue 0:3edcfa3aba71 314 val[0]=x32>>24 & 0xff;
takashiyamanoue 0:3edcfa3aba71 315 val[1]=x32>>16 & 0xff;
takashiyamanoue 0:3edcfa3aba71 316 val[2]=x32>>8 & 0xff;
takashiyamanoue 0:3edcfa3aba71 317 val[3]=x32 &0xff;
takashiyamanoue 0:3edcfa3aba71 318 lv=4;
takashiyamanoue 0:3edcfa3aba71 319 }
takashiyamanoue 0:3edcfa3aba71 320 else
takashiyamanoue 0:3edcfa3aba71 321 if(l-2>=4){
takashiyamanoue 0:3edcfa3aba71 322 x32=s2uint32(linep);
takashiyamanoue 0:3edcfa3aba71 323 val[0]=x32>>8 & 0xff;
takashiyamanoue 0:3edcfa3aba71 324 val[1]=x32 & 0xff;
takashiyamanoue 0:3edcfa3aba71 325 lv=2;
takashiyamanoue 0:3edcfa3aba71 326 }
takashiyamanoue 0:3edcfa3aba71 327 else
takashiyamanoue 0:3edcfa3aba71 328 if(l-2>=1){
takashiyamanoue 0:3edcfa3aba71 329 x32=s2uint32(linep);
takashiyamanoue 0:3edcfa3aba71 330 val[0]=x32 & 0xff;
takashiyamanoue 0:3edcfa3aba71 331 lv=1;
takashiyamanoue 0:3edcfa3aba71 332 }
takashiyamanoue 0:3edcfa3aba71 333 }
takashiyamanoue 0:3edcfa3aba71 334 else
takashiyamanoue 0:3edcfa3aba71 335 if(isStartWith(linep,"\"")){
takashiyamanoue 0:3edcfa3aba71 336 lv=setStrConst(linep,val);
takashiyamanoue 0:3edcfa3aba71 337 }
takashiyamanoue 0:3edcfa3aba71 338 else{
takashiyamanoue 0:3edcfa3aba71 339 x32=s2uint32(linep);
takashiyamanoue 0:3edcfa3aba71 340 val[0]=x32 & 0xff;
takashiyamanoue 0:3edcfa3aba71 341 lv=1;
takashiyamanoue 0:3edcfa3aba71 342 }
takashiyamanoue 0:3edcfa3aba71 343 *vlength=lv;
takashiyamanoue 0:3edcfa3aba71 344 }
takashiyamanoue 0:3edcfa3aba71 345
takashiyamanoue 0:3edcfa3aba71 346 void execLocalCommand(AtCommandRequest *r,uint8_t *cmd, uint8_t *val, uint8_t lv){
takashiyamanoue 0:3edcfa3aba71 347 r->setCommand(cmd);
takashiyamanoue 0:3edcfa3aba71 348 r->setCommandValue(val);
takashiyamanoue 0:3edcfa3aba71 349 r->setCommandValueLength(lv);
takashiyamanoue 0:3edcfa3aba71 350 xbee.send(*r);
takashiyamanoue 0:3edcfa3aba71 351 }
takashiyamanoue 0:3edcfa3aba71 352
takashiyamanoue 0:3edcfa3aba71 353 void execRemoteCommand(RemoteAtCommandRequest *r,uint8_t *cmd, uint8_t *val, uint8_t lv ){
takashiyamanoue 0:3edcfa3aba71 354 r->setCommand(cmd);
takashiyamanoue 0:3edcfa3aba71 355 r->setCommandValue(val);
takashiyamanoue 0:3edcfa3aba71 356 r->setCommandValueLength(lv);
takashiyamanoue 0:3edcfa3aba71 357 xbee.send(*r);
takashiyamanoue 0:3edcfa3aba71 358 }
takashiyamanoue 0:3edcfa3aba71 359
takashiyamanoue 0:3edcfa3aba71 360 char i2hc(int c){
takashiyamanoue 0:3edcfa3aba71 361 char x=c & 0x0f;
takashiyamanoue 0:3edcfa3aba71 362 if(x<=9){
takashiyamanoue 0:3edcfa3aba71 363 x=x+'0';
takashiyamanoue 0:3edcfa3aba71 364 }
takashiyamanoue 0:3edcfa3aba71 365 else{
takashiyamanoue 0:3edcfa3aba71 366 x=x-10+'a';
takashiyamanoue 0:3edcfa3aba71 367 }
takashiyamanoue 0:3edcfa3aba71 368 return x;
takashiyamanoue 0:3edcfa3aba71 369 }
takashiyamanoue 0:3edcfa3aba71 370
takashiyamanoue 0:3edcfa3aba71 371 void a2hex(uint8_t *a, uint8_t len, char *hex){
takashiyamanoue 0:3edcfa3aba71 372 *hex='0'; hex++;
takashiyamanoue 0:3edcfa3aba71 373 *hex='x'; hex++;
takashiyamanoue 0:3edcfa3aba71 374 *hex='\0';
takashiyamanoue 0:3edcfa3aba71 375 while(len>0){
takashiyamanoue 0:3edcfa3aba71 376 *hex=i2hc((*a>>4) & 0x0f);
takashiyamanoue 0:3edcfa3aba71 377 hex++;
takashiyamanoue 0:3edcfa3aba71 378 *hex=i2hc(*a & 0x0f);
takashiyamanoue 0:3edcfa3aba71 379 hex++;
takashiyamanoue 0:3edcfa3aba71 380 *hex='\0';
takashiyamanoue 0:3edcfa3aba71 381 a++;
takashiyamanoue 0:3edcfa3aba71 382 len--;
takashiyamanoue 0:3edcfa3aba71 383 }
takashiyamanoue 0:3edcfa3aba71 384 return;
takashiyamanoue 0:3edcfa3aba71 385 }
takashiyamanoue 0:3edcfa3aba71 386 uint8_t *rmHeadIfHex(Serial *s,uint8_t *linep, uint32_t *x32, uint8_t *length){
takashiyamanoue 0:3edcfa3aba71 387 char hexline[20];
takashiyamanoue 0:3edcfa3aba71 388 int l=0;
takashiyamanoue 0:3edcfa3aba71 389 linep=rmSpace(linep);
takashiyamanoue 0:3edcfa3aba71 390 if(isStartWith(linep,"0x")){
takashiyamanoue 0:3edcfa3aba71 391 hexline[l]='0'; hexline[l+1]='x';
takashiyamanoue 0:3edcfa3aba71 392 linep++; linep++; l++; l++;
takashiyamanoue 0:3edcfa3aba71 393 if(!isInLetters(*linep,hexc)){
takashiyamanoue 0:3edcfa3aba71 394 return NULL;
takashiyamanoue 0:3edcfa3aba71 395 }
takashiyamanoue 0:3edcfa3aba71 396 hexline[l]=*linep;
takashiyamanoue 0:3edcfa3aba71 397 linep++; l++;
takashiyamanoue 0:3edcfa3aba71 398 while(isInLetters(*linep,hexc)){
takashiyamanoue 0:3edcfa3aba71 399 hexline[l]=*linep;
takashiyamanoue 0:3edcfa3aba71 400 l++;
takashiyamanoue 0:3edcfa3aba71 401 linep++;
takashiyamanoue 0:3edcfa3aba71 402 // dumpObject(s,20,(uint8_t *)hexline);
takashiyamanoue 0:3edcfa3aba71 403 }
takashiyamanoue 0:3edcfa3aba71 404 hexline[l]='\0';
takashiyamanoue 0:3edcfa3aba71 405 *x32=s2uint32((uint8_t *)hexline);
takashiyamanoue 0:3edcfa3aba71 406 *length=l;
takashiyamanoue 0:3edcfa3aba71 407 return linep;
takashiyamanoue 0:3edcfa3aba71 408 }
takashiyamanoue 0:3edcfa3aba71 409 return NULL;
takashiyamanoue 0:3edcfa3aba71 410 }
takashiyamanoue 0:3edcfa3aba71 411 void parseLocalSet(uint8_t *linep, AtCommandRequest *localRequest, uint8_t *localCmd, uint8_t *localVal,
takashiyamanoue 0:3edcfa3aba71 412 Serial *s){
takashiyamanoue 0:3edcfa3aba71 413
takashiyamanoue 0:3edcfa3aba71 414 }
takashiyamanoue 0:3edcfa3aba71 415 int parseRemoteSet(uint8_t *linep, RemoteAtCommandRequest *remoteRequest, uint8_t *remoteCmd, uint8_t *remoteVal,
takashiyamanoue 0:3edcfa3aba71 416 Serial *s){
takashiyamanoue 0:3edcfa3aba71 417 uint32_t x32_h,x32_l;
takashiyamanoue 0:3edcfa3aba71 418 uint8_t l_h, l_l;
takashiyamanoue 0:3edcfa3aba71 419 XBeeAddress64 remoteAddress64;
takashiyamanoue 0:3edcfa3aba71 420 uint16_t x16;
takashiyamanoue 0:3edcfa3aba71 421 uint8_t l;
takashiyamanoue 0:3edcfa3aba71 422 linep=rmSpace(linep);
takashiyamanoue 0:3edcfa3aba71 423 if((linep=rmHeadIf(linep,"a64 "))!=NULL){
takashiyamanoue 0:3edcfa3aba71 424 linep=rmSpace(linep);
takashiyamanoue 0:3edcfa3aba71 425 if((linep=rmHeadIfHex(s,linep, &x32_h, &l_h))==NULL) return 0;
takashiyamanoue 0:3edcfa3aba71 426 remoteAddress64.setMsb(x32_h);
takashiyamanoue 0:3edcfa3aba71 427 linep=rmSpace(linep);
takashiyamanoue 0:3edcfa3aba71 428 if(*linep!=',') return 0;
takashiyamanoue 0:3edcfa3aba71 429 linep++;
takashiyamanoue 0:3edcfa3aba71 430 linep=rmSpace(linep);
takashiyamanoue 0:3edcfa3aba71 431 if((linep=rmHeadIfHex(s,linep, &x32_l, &l_l))==NULL) return 0;
takashiyamanoue 0:3edcfa3aba71 432 remoteAddress64.setLsb(x32_l);
takashiyamanoue 0:3edcfa3aba71 433 // dumpObject(s,sizeof(*remoteRequest),(uint8_t *)remoteRequest);
takashiyamanoue 0:3edcfa3aba71 434 remoteRequest->setRemoteAddress64(remoteAddress64);
takashiyamanoue 0:3edcfa3aba71 435 // dumpObject(s,sizeof(*remoteRequest),(uint8_t *)remoteRequest);
takashiyamanoue 0:3edcfa3aba71 436 s->printf("\n\r");
takashiyamanoue 0:3edcfa3aba71 437 s->printf("cmd=rset a64 %x,%x\n\r",x32_h,x32_l);
takashiyamanoue 0:3edcfa3aba71 438 return 1;
takashiyamanoue 0:3edcfa3aba71 439 }
takashiyamanoue 0:3edcfa3aba71 440 if((linep=rmHeadIf(linep,"a16 "))!=NULL){
takashiyamanoue 0:3edcfa3aba71 441 linep=rmSpace(linep);
takashiyamanoue 0:3edcfa3aba71 442 if((linep=rmHeadIfHex(s,linep, &x32_h, &l))==NULL) return 0;
takashiyamanoue 0:3edcfa3aba71 443 x16=0x0000ffff & x32_h;
takashiyamanoue 0:3edcfa3aba71 444 remoteRequest->setRemoteAddress16(x16);
takashiyamanoue 0:3edcfa3aba71 445 s->printf("\n\r");
takashiyamanoue 0:3edcfa3aba71 446 s->printf("cmd=lset a16 %x\n\r",x16);
takashiyamanoue 0:3edcfa3aba71 447 return 1;
takashiyamanoue 0:3edcfa3aba71 448 }
takashiyamanoue 0:3edcfa3aba71 449 return 0;
takashiyamanoue 0:3edcfa3aba71 450 }
takashiyamanoue 0:3edcfa3aba71 451
takashiyamanoue 0:3edcfa3aba71 452 void localResponseOutput(Serial *s, AtCommandResponse *r){
takashiyamanoue 0:3edcfa3aba71 453 dumpObject(s,sizeof(*r),(uint8_t *)r);
takashiyamanoue 0:3edcfa3aba71 454 if ( r->getStatus() == AT_OK ) {
takashiyamanoue 0:3edcfa3aba71 455 // Debug print
takashiyamanoue 0:3edcfa3aba71 456 s->printf("\n\rl OK: ");
takashiyamanoue 0:3edcfa3aba71 457 for (int i = 0; i < r->getValueLength(); i++)
takashiyamanoue 0:3edcfa3aba71 458 s->printf("%02X ", r->getValue()[i]);
takashiyamanoue 0:3edcfa3aba71 459 s->printf("\n\r");
takashiyamanoue 0:3edcfa3aba71 460 } else {
takashiyamanoue 0:3edcfa3aba71 461 s->printf("\n\rl error: ");
takashiyamanoue 0:3edcfa3aba71 462 for (int i = 0; i < r->getValueLength(); i++)
takashiyamanoue 0:3edcfa3aba71 463 s->printf("%02X ", r->getValue()[i]);
takashiyamanoue 0:3edcfa3aba71 464 s->printf("\n\r");
takashiyamanoue 0:3edcfa3aba71 465 s->printf("Local Command Error:0x%X\n\r", r->getStatus());
takashiyamanoue 0:3edcfa3aba71 466 s->printf("\n\rl errorCode=%x\n\r",r->getErrorCode());
takashiyamanoue 0:3edcfa3aba71 467 }
takashiyamanoue 0:3edcfa3aba71 468 }
takashiyamanoue 0:3edcfa3aba71 469 void remoteResponseOutput(Serial *s, RemoteAtCommandResponse *r){
takashiyamanoue 0:3edcfa3aba71 470 if ( r->getStatus() == AT_OK ) {
takashiyamanoue 0:3edcfa3aba71 471 // Debug print
takashiyamanoue 0:3edcfa3aba71 472 s->printf("\n\rr OK: ");
takashiyamanoue 0:3edcfa3aba71 473 for (int i = 0; i < r->getValueLength(); i++)
takashiyamanoue 0:3edcfa3aba71 474 s->printf("%02X ", r->getValue()[i]);
takashiyamanoue 0:3edcfa3aba71 475 s->printf("\n\r");
takashiyamanoue 0:3edcfa3aba71 476 } else {
takashiyamanoue 0:3edcfa3aba71 477 s->printf("\n\rr err: ");
takashiyamanoue 0:3edcfa3aba71 478 for (int i = 0; i < r->getValueLength(); i++)
takashiyamanoue 0:3edcfa3aba71 479 s->printf("%02X ", r->getValue()[i]);
takashiyamanoue 0:3edcfa3aba71 480 s->printf("\n\r");
takashiyamanoue 0:3edcfa3aba71 481 s->printf("Remote Command Error:0x%X\n\r", r->getStatus());
takashiyamanoue 0:3edcfa3aba71 482 s->printf("\n\rr errorCode=%x\n\r",r->getErrorCode());
takashiyamanoue 0:3edcfa3aba71 483 }
takashiyamanoue 0:3edcfa3aba71 484 }
takashiyamanoue 0:3edcfa3aba71 485
takashiyamanoue 0:3edcfa3aba71 486 int main() {
takashiyamanoue 0:3edcfa3aba71 487 char inputLine[100];
takashiyamanoue 0:3edcfa3aba71 488 char val[100];
takashiyamanoue 0:3edcfa3aba71 489 uint8_t *linep;
takashiyamanoue 0:3edcfa3aba71 490 uint8_t valLength;
takashiyamanoue 0:3edcfa3aba71 491 XBeeAddress64 remoteAddress(0x0013A200, 0x403A8C82);
takashiyamanoue 0:3edcfa3aba71 492 RemoteAtCommandRequest remoteRequest;
takashiyamanoue 0:3edcfa3aba71 493 remoteRequest=RemoteAtCommandRequest();
takashiyamanoue 0:3edcfa3aba71 494 // remoteRequest.setApiId((uint8_t)0x17);
takashiyamanoue 0:3edcfa3aba71 495 remoteRequest.setRemoteAddress64(remoteAddress);
takashiyamanoue 0:3edcfa3aba71 496 AtCommandRequest localRequest;
takashiyamanoue 0:3edcfa3aba71 497 localRequest=AtCommandRequest();
takashiyamanoue 0:3edcfa3aba71 498 // localRequest.setApiId((uint8_t)0x08);
takashiyamanoue 0:3edcfa3aba71 499 AtCommandResponse * response = NULL, *lrx[5];
takashiyamanoue 0:3edcfa3aba71 500 RemoteAtCommandResponse * remoteResp = NULL, *rrx[5];
takashiyamanoue 0:3edcfa3aba71 501 localResponseQueue.init();
takashiyamanoue 0:3edcfa3aba71 502 for(int i=0;i<5;i++){
takashiyamanoue 0:3edcfa3aba71 503 lrx[i]=new AtCommandResponse();
takashiyamanoue 0:3edcfa3aba71 504 localResponseQueue.collectResponse(lrx[i]);
takashiyamanoue 0:3edcfa3aba71 505 rrx[i]=new RemoteAtCommandResponse();
takashiyamanoue 0:3edcfa3aba71 506 remoteResponseQueue.collectResponse(rrx[i]);
takashiyamanoue 0:3edcfa3aba71 507 }
takashiyamanoue 0:3edcfa3aba71 508
takashiyamanoue 0:3edcfa3aba71 509 wait(0.5);
takashiyamanoue 0:3edcfa3aba71 510 pc.baud(115200);
takashiyamanoue 0:3edcfa3aba71 511 printHelp(&pc);
takashiyamanoue 0:3edcfa3aba71 512 pc.printf("\n\r ok-1?\n\r");
takashiyamanoue 0:3edcfa3aba71 513 xbee.begin(115200);
takashiyamanoue 0:3edcfa3aba71 514 wait(0.5);
takashiyamanoue 0:3edcfa3aba71 515 tick.attach(&advance, 0.001); // the address of the function to be attached (flip) and the interval (2 seconds)
takashiyamanoue 0:3edcfa3aba71 516 pc.printf("\n\r ok-2?\n\r");
takashiyamanoue 0:3edcfa3aba71 517 /*
takashiyamanoue 0:3edcfa3aba71 518 for(int i=0;i<5;i++){
takashiyamanoue 0:3edcfa3aba71 519 dumpObject(&pc,sizeof(*lrx[i]),(uint8_t *)lrx[i]);
takashiyamanoue 0:3edcfa3aba71 520 dumpObject(&pc,sizeof(*rrx[i]),(uint8_t *)rrx[i]);
takashiyamanoue 0:3edcfa3aba71 521 }
takashiyamanoue 0:3edcfa3aba71 522 */
takashiyamanoue 0:3edcfa3aba71 523 while(1){
takashiyamanoue 0:3edcfa3aba71 524 pc.printf("\n\r");
takashiyamanoue 0:3edcfa3aba71 525 if((response=localResponseQueue.getResponse())!=NULL){
takashiyamanoue 0:3edcfa3aba71 526 localResponseOutput(&pc, response);
takashiyamanoue 0:3edcfa3aba71 527 localResponseQueue.collectResponse(response);
takashiyamanoue 0:3edcfa3aba71 528 }
takashiyamanoue 0:3edcfa3aba71 529 else
takashiyamanoue 0:3edcfa3aba71 530 if((remoteResp=(RemoteAtCommandResponse *)(remoteResponseQueue.getResponse()))!=NULL){
takashiyamanoue 0:3edcfa3aba71 531 remoteResponseOutput(&pc, remoteResp);
takashiyamanoue 0:3edcfa3aba71 532 remoteResponseQueue.collectResponse(remoteResp);
takashiyamanoue 0:3edcfa3aba71 533 }
takashiyamanoue 0:3edcfa3aba71 534 else{
takashiyamanoue 0:3edcfa3aba71 535 pc.printf("> ");
takashiyamanoue 0:3edcfa3aba71 536 cq.getString(inputLine,100);
takashiyamanoue 0:3edcfa3aba71 537 if(rmHeadIf((uint8_t *)inputLine,"h")){
takashiyamanoue 0:3edcfa3aba71 538 pc.printf("\n\r");
takashiyamanoue 0:3edcfa3aba71 539 printHelp(&pc);
takashiyamanoue 0:3edcfa3aba71 540 }
takashiyamanoue 0:3edcfa3aba71 541 else
takashiyamanoue 0:3edcfa3aba71 542 if((linep=rmHeadIf((uint8_t *)inputLine,"l "))!=NULL){
takashiyamanoue 0:3edcfa3aba71 543 parseCommand(linep,LocalCmd, LocalVal, &valLength);
takashiyamanoue 0:3edcfa3aba71 544 a2hex(LocalVal,valLength,val);
takashiyamanoue 0:3edcfa3aba71 545 pc.printf("\n\r");
takashiyamanoue 0:3edcfa3aba71 546 pc.printf("cmd=%c%c val=%s\n\r",LocalCmd[0],LocalCmd[1],val);
takashiyamanoue 0:3edcfa3aba71 547 execLocalCommand(&localRequest, LocalCmd, LocalVal, valLength);
takashiyamanoue 0:3edcfa3aba71 548 }
takashiyamanoue 0:3edcfa3aba71 549 else
takashiyamanoue 0:3edcfa3aba71 550 if((linep=rmHeadIf((uint8_t *)inputLine,"r "))!=NULL){
takashiyamanoue 0:3edcfa3aba71 551 parseCommand(linep, RemoteCmd, RemoteVal, &valLength);
takashiyamanoue 0:3edcfa3aba71 552 a2hex(RemoteVal,valLength,val);
takashiyamanoue 0:3edcfa3aba71 553 pc.printf("\n\r");
takashiyamanoue 0:3edcfa3aba71 554 pc.printf("cmd=%c%c val=%s\n\r",RemoteCmd[0],RemoteCmd[1],val);
takashiyamanoue 0:3edcfa3aba71 555 execRemoteCommand(&remoteRequest, RemoteCmd, RemoteVal, valLength);
takashiyamanoue 0:3edcfa3aba71 556 }
takashiyamanoue 0:3edcfa3aba71 557 else
takashiyamanoue 0:3edcfa3aba71 558 if((linep=rmHeadIf((uint8_t *)inputLine,"lset "))!=NULL){
takashiyamanoue 0:3edcfa3aba71 559 parseLocalSet(linep,&localRequest, LocalCmd, LocalVal,&pc);
takashiyamanoue 0:3edcfa3aba71 560 }
takashiyamanoue 0:3edcfa3aba71 561 else
takashiyamanoue 0:3edcfa3aba71 562 if((linep=rmHeadIf((uint8_t *)inputLine,"rset "))!=NULL){
takashiyamanoue 0:3edcfa3aba71 563 parseRemoteSet(linep,&remoteRequest, RemoteCmd, RemoteVal,&pc);
takashiyamanoue 0:3edcfa3aba71 564 }
takashiyamanoue 0:3edcfa3aba71 565
takashiyamanoue 0:3edcfa3aba71 566 wait(0.1);
takashiyamanoue 0:3edcfa3aba71 567 }
takashiyamanoue 0:3edcfa3aba71 568 }
takashiyamanoue 0:3edcfa3aba71 569 }