Wataru Kunino / Mbed 2 deprecated xbee_aging

Dependencies:   TextLCD mbed xbee

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #define ARM_MBED
00002 //#define DEBUG       // D8(PA_9)からログをUART(38400baud)出力します
00003 
00004 /*********************************************************************
00005 XBee ライブラリ・自動システム試験ツール
00006 
00007  元々、XBeeライブラリ「ZB Coord API」のリリース用のテストツールとして
00008  作成して、使用していたものです。
00009  XBeeライブラリを用いた時の評価用に公開することにいたしました。
00010  電波環境が悪いと100%になりません。
00011  Arduino用PC用ともにキーを押すとエラー数と合格回数、テスト回数、最後の
00012  エラーの内容を表示します。
00013 
00014 本ソースリストおよびソフトウェアは、ライセンスフリーです。
00015 利用、編集、再配布等が自由に行えますが、著作権表示の改変は禁止します。
00016 
00017                                Copyright (c) 2010-2014 Wataru KUNINO
00018                                http://www.geocities.jp/bokunimowakaru/
00019 *********************************************************************/
00020 
00021 /*********************************************************************
00022 
00023 ●試験項目●
00024         ①ローカルATコマンド試験
00025         ②ローカルxbeeライブラリ用コマンド試験
00026         ③リモートATコマンド試験
00027         ④リモートxbeeライブラリ管理コマンド試験
00028         ⑤リモートxbeeライブラリ応答待ちコマンド試験
00029         ⑥ループバック試験
00030 
00031 ●試験環境●
00032         ○本ソフトを動かす親機用ArduinoまたはPC
00033         ○親機用XBee ZBモジュール【ファーム=ZIGBEE COORDINATOR API】
00034         ○子機用XBee ZBモジュール【ファーム=ZIGBEE ROUTER AT】
00035         ○子機のUARTはループバック接続が必要です。(DINとDOUTを接続)
00036 */
00037 
00038 //  #define DEBUG           //DEBUGをdefineするとライブラリの動作ログが出力されます。
00039 //  #define DEBUG_TX        //送信データ表示
00040 //  #define     ERRLOG
00041 #define     EASY_SENSOR
00042 #define     XBEE_ERROR_TIME
00043 #define     PASSED          0
00044 #define     FAILED          1
00045 #ifdef ARDUINO
00046     #define     SIZEOF_LOG_S    36  // 33以上
00047 #else
00048     #ifdef ARM_MBED
00049         #define     SIZEOF_LOG_S    80
00050     #else // PC
00051         #define     SIZEOF_LOG_S    80
00052     #endif
00053 #endif
00054 
00055 #ifdef ARDUINO
00056     #include <xbee.h>
00057     #include <Wire.h>
00058     #include <Adafruit_MCP23017.h>
00059     #include <Adafruit_RGBLCDShield.h>
00060     Adafruit_RGBLCDShield lcd = Adafruit_RGBLCDShield();
00061 #else
00062     #ifdef ARM_MBED
00063         #include <xbee.h>
00064         #include "TextLCD.h"
00065         #include <ctype.h>
00066         TextLCD lcd(PA_9, PC_7, PB_5, PB_4, PB_10, PA_8); // rs, e, d4-d7
00067         DigitalIn mybutton(USER_BUTTON);
00068     #else // PC
00069         #include "../libs/xbee.c"
00070         #include <ctype.h>                  // isgraph
00071         #include "../libs/kbhit.c"
00072     #endif
00073 #endif
00074 
00075 byte dev[8];
00076 byte my[8];
00077 byte myt[8];
00078 byte panid[8];
00079 byte panidt[8];
00080 byte TEST_COUNT=0;
00081 byte ERROR_COUNT=0;
00082 byte ERROR_TOTAL=0;
00083 char ERROR_S[SIZEOF_LOG_S];
00084 unsigned int pan;
00085 byte nc,rnc=0xFF,dd=0xFF;
00086 
00087 static const char UARTDATA[] = "0123456789ABCDEF";
00088 char *sprint_FAIL(char *s,const char *text){
00089     sprintf(s,"%s:FAIL####",text);
00090     return s;
00091 }
00092 
00093 void aging_delay(unsigned int ms){
00094     #ifdef ARDUINO
00095         delay((unsigned long)ms);
00096     #else
00097         #ifdef ARM_MBED
00098             wait((double)ms/1000.);
00099         #else // PC
00100             wait_millisec(ms);
00101         #endif
00102     #endif
00103 }
00104 
00105 #if defined(ARDUINO)
00106 void prints(char *s){
00107     byte x,y;
00108     byte c=1;
00109     for(y=0;y<2;y++){
00110         lcd.setCursor(0, y);
00111         for(x=0;x<16;x++){
00112             if(s[16*y+x]=='\0') c=0;
00113             if(isgraph(s[16*y+x]) && c) lcd.print(s[16*y+x]);
00114             else lcd.print(' ');
00115         }
00116     }
00117 }
00118 #endif
00119 #if defined(ARM_MBED)
00120 void prints(char *s){
00121     byte x,y;
00122     byte c=1;
00123     for(y=0;y<2;y++){
00124         lcd.locate(0, y);
00125         for(x=0;x<16;x++){
00126             if(s[16*y+x]=='\0') c=0;
00127             if(isgraph(s[16*y+x]) && c) lcd.printf("%c",s[16*y+x]);
00128             else lcd.printf(" ");
00129         }
00130     }
00131 }
00132 #endif
00133 
00134 void aging_key(void){
00135     #ifdef ARDUINO
00136         if( lcd.readButtons() ){
00137             lcd.clear();
00138             lcd.print(ERROR_COUNT,DEC);                 // 3
00139             lcd.print("errs ");                         // 5
00140             lcd.print((TEST_COUNT-ERROR_TOTAL),DEC);    // 3
00141             lcd.print('/');                             // 1
00142             lcd.print(TEST_COUNT,DEC);                  // 3
00143             lcd.setCursor(0, 1);
00144             if(ERROR_COUNT || ERROR_TOTAL){
00145                 lcd.print(ERROR_S);
00146             }
00147             delay(100);
00148             while( lcd.readButtons() );
00149             delay(100);
00150             while( !lcd.readButtons() );
00151             prints(ERROR_S);
00152             delay(3000);
00153             while( lcd.readButtons() );
00154         }
00155     #else
00156         #ifdef ARM_MBED
00157         if( mybutton==0 ){      // Button is pressed
00158             lcd.cls();
00159             lcd.printf("%d",ERROR_COUNT);                 // 3
00160             lcd.printf("errs ");                         // 5
00161             lcd.printf("%d",TEST_COUNT-ERROR_TOTAL);    // 3
00162             lcd.printf("/");                             // 1
00163             lcd.printf("%d",TEST_COUNT);                  // 3
00164             lcd.locate(0, 1);
00165             if(ERROR_COUNT || ERROR_TOTAL){
00166                 lcd.printf(ERROR_S);
00167             }
00168             aging_delay(100);
00169             while( !mybutton );
00170             aging_delay(100);
00171             while( mybutton );
00172             prints(ERROR_S);
00173             aging_delay(3000);
00174             while( !mybutton );
00175         }           
00176         #else // PC
00177             if( kbhit() ){
00178                 getchar();
00179                 printf("----------------------------------------------------------------\n");
00180                 printf("ERROR=%d(TEST:%d/%d) ",ERROR_COUNT,TEST_COUNT-ERROR_TOTAL,TEST_COUNT);
00181                 if(ERROR_COUNT || ERROR_TOTAL){
00182                     printf("%s",ERROR_S);
00183                 }
00184                 printf("\n----------------------------------------------------------------\n");
00185                 aging_delay(3000);
00186             }
00187         #endif
00188     #endif
00189 }
00190 
00191 void aging_log(char *s){
00192     #if defined(ARDUINO) || defined(ARM_MBED)
00193         prints(s);
00194     #else // PC
00195         time_t error_time;
00196         struct tm *error_time_st;
00197         
00198         time(&error_time);
00199         error_time_st = localtime(&error_time);
00200         printf("%4d/%02d/%02d %02d:%02d:%02d %s\n",
00201             error_time_st->tm_year+1900,
00202             error_time_st->tm_mon+1,
00203             error_time_st->tm_mday,
00204             error_time_st->tm_hour,
00205             error_time_st->tm_min,
00206             error_time_st->tm_sec,
00207             s
00208         );
00209     #endif
00210     aging_key();
00211 }
00212 
00213 void error_log(char *s){
00214     #ifndef ARDUINO
00215     #ifndef ARM_MBED // PC
00216         FILE *fp;
00217         time_t error_time;
00218         struct tm *error_time_st;
00219         
00220         time(&error_time);
00221         error_time_st = localtime(&error_time);
00222         if( (fp=fopen("err.log","a")) != NULL ){
00223             fprintf(fp,"%4d/%02d/%02d %02d:%02d:%02d %s\n",
00224                 error_time_st->tm_year+1900,
00225                 error_time_st->tm_mon+1,
00226                 error_time_st->tm_mday,
00227                 error_time_st->tm_hour,
00228                 error_time_st->tm_min,
00229                 error_time_st->tm_sec,
00230                 s
00231             );
00232             fclose(fp);
00233         }
00234     #endif
00235     #endif
00236     aging_log(s);
00237     strcpy(ERROR_S,s);
00238     ERROR_COUNT++;
00239     aging_delay(1000);
00240     aging_key();
00241 }
00242 
00243 void aging_results(void){
00244     char s[SIZEOF_LOG_S];
00245     TEST_COUNT++;
00246     if(ERROR_COUNT==0){
00247         //         012345678901234567890123456 28~30bytes
00248         sprintf(s,"###TEST:PASSED  (%d/%d)####",TEST_COUNT-ERROR_TOTAL,TEST_COUNT);
00249         aging_log(s);
00250     }else{
00251         ERROR_TOTAL++;
00252         //         01234567890123456789012345678 30~33bytes
00253         sprintf(s,"###TEST:FAILED  %d(%d/%d)####",ERROR_COUNT,TEST_COUNT-ERROR_TOTAL,TEST_COUNT);
00254         aging_log(s);
00255         #ifndef ARDUINO
00256         #ifndef ARM_MBED // PC
00257             strcpy(s,ERROR_S);
00258             aging_log(s);
00259         #endif
00260         #endif
00261         ERROR_COUNT=0;
00262     }
00263     aging_delay(3000);
00264 }
00265 
00266 void aging_print(char *text,byte ret,byte target,byte judge){
00267     char s[SIZEOF_LOG_S];
00268     if( (judge==PASSED && target == ret) || 
00269         (judge==FAILED && target != ret)
00270     ){
00271         sprintf(s,"%s:PASS(%02X)",text,ret);
00272         aging_log(s);
00273     }else{
00274         //         0-789012345678901--234--  26bytes
00275         sprintf(s,"%sret=%02X:%02X",sprint_FAIL(s,text),ret,target);
00276         error_log(s);
00277     }
00278 }
00279 
00280 void aging_rx_resp(char *text,char *at,byte n){
00281     XBEE_RESULT xbee_result;
00282     byte data;
00283     byte i,j;
00284     char s[SIZEOF_LOG_S];
00285     for(i=0;i<n;i++){
00286         data=xbee_rx_call( &xbee_result );
00287         if( (   xbee_result.MODE==MODE_RESP &&
00288                 xbee_result.STATUS == STATUS_OK &&
00289                 xbee_result.AT[0] == 'I' &&
00290                 xbee_result.AT[1] == 'S' &&
00291                 bytecmp(dev,xbee_result.FROM,8)==0
00292             )
00293         //  || (
00294         //      xbee_result.MODE==MODE_GPIN &&
00295         //      bytecmp(dev,xbee_result.FROM,8)==0
00296         //  )
00297         ){
00298             sprintf(s,"%s:PASS(%02X)",text,data);
00299             for(j=0;j<8;j++){
00300                 if( (data>>(7-j))&0x01 ) s[16+j]='1';
00301                 else s[16+j]='0';
00302             }
00303             s[24]='\0';
00304             aging_log(s);
00305             return;
00306         }
00307     }
00308     error_log(sprint_FAIL(s,text));
00309 }
00310 
00311 void aging_rx_uart(char *text,const char *uart,byte n){
00312     XBEE_RESULT xbee_result;
00313     byte i,j;
00314     byte len;
00315     char s[SIZEOF_LOG_S];
00316     byte data[SIZEOF_LOG_S];
00317     
00318     for(i=0;i<n;i++){
00319         len=xbee_rx_call( &xbee_result );
00320         if( xbee_result.MODE==MODE_UART &&
00321             bytecmp(dev,xbee_result.FROM,8)==0
00322         ){
00323             for(j=0;j<SIZEOF_LOG_S;j++) data[j]=(byte)uart[j];
00324             if(len>SIZEOF_LOG_S) len=SIZEOF_LOG_S;
00325             if(bytecmp(data,xbee_result.DATA,len)==0){
00326                 sprintf(s,"%s:PASS(%02d)  ",text,len);
00327                 for(j=16;j<32;j++){
00328                     if(isgraph(xbee_result.DATA[j-16])){
00329                         s[j]=(char)xbee_result.DATA[j-16];
00330                     }else s[j]=' ';
00331                 }
00332                 s[32]='\0';
00333                 aging_log(s);
00334                 if(len!=strlen(uart)){
00335                     sprintf(s,"%s:WARNING txLen=%d,rx=%d",text,strlen(uart),len);
00336                     aging_log(s);
00337                 }
00338                 return;
00339             }else{
00340                 sprintf(s,"%s:FAIL(%02d)################",text,len);
00341                 for(j=16;j<24;j++){
00342                     if(xbee_result.DATA[j-16]>16){
00343                         s[j]=(char)xbee_result.DATA[j-16];
00344                     }else s[j]=' ';
00345                 }
00346                 error_log(s);
00347                 return;
00348             }
00349         }
00350     }
00351     error_log(sprint_FAIL(s,text));
00352 }
00353 
00354 byte s2bytes(byte *bytes,const char *s){
00355     byte i;
00356     for(i=0;i<strlen(s);i++) bytes[i]=s[i];
00357     return(i);
00358 }
00359 
00360 void aging_rx_batt(char *text,byte n){
00361     XBEE_RESULT xbee_result;
00362     byte i;
00363     char s[SIZEOF_LOG_S];
00364     for(i=0;i<n;i++){
00365         xbee_rx_call( &xbee_result );
00366         if( xbee_result.MODE==MODE_BATT &&
00367             xbee_result.STATUS == STATUS_OK &&
00368             bytecmp(dev,xbee_result.FROM,8)==0 &&
00369             xbee_result.ADCIN[0] > 1000
00370         ){
00371             sprintf(s,"%s:PASS(00)%d[mV]",text,xbee_result.ADCIN[0]);
00372             aging_log(s);
00373             return;
00374         }
00375     }
00376     error_log(sprint_FAIL(s,text));
00377 }
00378 
00379 char byte2a(byte in, byte i){
00380     char ret;
00381     if(i) in /= 16;
00382     ret = (char)(in%16);
00383     if(ret<10) ret += '0';
00384     else ret += 'A' -10;
00385     return( ret );
00386 }
00387 
00388 byte pairing(byte *dev,byte n){
00389     XBEE_RESULT xbee_result;
00390     char s[SIZEOF_LOG_S];
00391 
00392     byte i,len;
00393     for(i=0;i<n;i++){
00394         xbee_rx_call( &xbee_result );
00395         if( xbee_result.MODE==MODE_IDNT ){
00396             sprintf(s,"Pairing:PASS(%02X)",xbee_result.STATUS);
00397             len=strlen(s);
00398             for(i=0;i<8;i++){
00399                 dev[i]=xbee_result.FROM[i];
00400                 s[len]  =byte2a(dev[i],1);
00401                 s[len+1]=byte2a(dev[i],0);
00402                 len+=2;
00403             }
00404             s[len]='\0';
00405             aging_log(s);
00406             return(1);
00407         }
00408     }
00409     return(0);
00410 }
00411 
00412 void aging_rx_none(char *text,byte n){
00413     XBEE_RESULT xbee_result;
00414     byte i;
00415     char s[SIZEOF_LOG_S];
00416     for(i=0;i<n;i++){
00417         xbee_rx_call( &xbee_result );
00418         if( xbee_result.MODE != 0x00 ){
00419             sprintf(s,"%smode=%02X stat=%02X",sprint_FAIL(s,text),xbee_result.MODE,xbee_result.STATUS);
00420             error_log(s);
00421             return;
00422         }
00423     }
00424     sprintf(s,"%s:PASS",text);
00425     aging_log(s);
00426 }
00427 
00428 void aging_init(void){
00429     char s[SIZEOF_LOG_S];
00430     byte i;
00431     
00432     xbee_atnj(0xFF);
00433     aging_delay(1000);
00434     aging_log("Press Commiss.SW");
00435     /* ペアリング&宛先アドレス取得 */
00436     while(pairing(dev,100)==0);
00437     sprintf(s,"DestAdr:");
00438     for(i=0;i<4;i++){
00439         s[8+2*i]=byte2a(dev[i+4],1);
00440         s[9+2*i]=byte2a(dev[i+4],0);
00441     }
00442     s[16]='\0';
00443     aging_log(s);
00444     xbee_atnj(0);
00445     aging_delay(1000);
00446     /* 自分のアドレス */
00447     xbee_myaddress(my);
00448     sprintf(s,"MyAdr  :");
00449     for(i=0;i<4;i++){
00450         s[8+2*i]=byte2a(my[i+4],1);
00451         s[9+2*i]=byte2a(my[i+4],0);
00452     }
00453     s[16]='\0';
00454     aging_log(s);
00455     aging_delay(1000);
00456     /* PAN ID */
00457     pan=xbee_atop(panid);
00458     sprintf(s,"PAN ID :%d        ",pan);
00459     for(i=0;i<8;i++){
00460         s[16+2*i]=byte2a(panid[i],1);
00461         s[17+2*i]=byte2a(panid[i],0);
00462     }
00463     s[32]='\0';
00464     aging_log(s);
00465     aging_delay(1000);
00466     /* 子機数など */
00467     nc=xbee_atnc();
00468     while(rnc==0xFF){
00469         rnc=xbee_ratnc(dev);
00470     }
00471     while(dd==0xFF){
00472         dd=xbee_ping(dev);
00473     }
00474     sprintf(s,"nOfChld:%d,%d,%02X",10-nc,12-rnc,dd);
00475     aging_log(s);
00476     aging_delay(1000);
00477 }
00478 
00479 void loop(){
00480     byte data[SIZEOF_LOG_S];
00481     byte i,len;
00482 
00483     aging_log("Started:========");
00484 
00485     // ①ローカルATコマンド試験
00486     #ifndef ARDUINO
00487     #ifndef ARM_MBED  // PCのみ試験
00488         for(i=0;i<10;i++){
00489             aging_print("LocAt L",xbee_at("ATP004"),STATUS_OK,PASSED);
00490             aging_print("LocAt H",xbee_at("ATP005"),STATUS_OK,PASSED);
00491         }
00492     #endif
00493     #endif
00494     aging_print("LocAt -",xbee_at("ATP001"),STATUS_OK,PASSED);
00495     
00496     // ②ローカルxbeeライブラリ用コマンド試験
00497 //  aging_print("reset  ",xbee_reset(),0,FAILED);
00498     aging_print("atcb   ",xbee_atcb(1),0,PASSED);
00499     for(i=0;i<3;i++){
00500         aging_print("myAdr  ",xbee_myaddress(myt),0,FAILED);
00501         aging_print("myAdCmp",bytecmp(my,myt,8),0,PASSED);
00502         aging_print("atvr   ",xbee_atvr(),ZB_TYPE_COORD,PASSED);
00503         aging_print("atai   ",xbee_atai(),0,PASSED);
00504         aging_print("atop   ",(byte)xbee_atop(panidt),(byte)pan,PASSED);
00505         aging_print("atopCmp",bytecmp(panid,panidt,8),0,PASSED);
00506         aging_print("atnc   ",xbee_atnc(),nc,PASSED);           // ncと一致すること
00507     }
00508 
00509     // ③リモートATコマンド試験
00510     #ifndef ARDUINO
00511     #ifndef ARM_MBED  // PCのみ試験
00512         for(i=0;i<10;i++){
00513             aging_print("RemAt L",xbee_rat(dev,"ATP104"),STATUS_OK,PASSED);     // 0xFF=ERROR
00514             aging_print("RemAt H",xbee_rat(dev,"ATP105"),STATUS_OK,PASSED);     // 0xFF=ERROR
00515         }
00516     #endif
00517     #endif
00518     aging_print("LocAt -",xbee_at("ATP100"),STATUS_OK,PASSED);
00519 
00520     // ④リモートxbeeライブラリ管理コマンド試験
00521     aging_print("ratd   ",xbee_ratd(dev, my),0xFF,FAILED);  // 0xFF=ERROR
00522     aging_print("ratdMyA",xbee_ratd_myaddress(dev),0xFF,FAILED);    // 0xFF=ERROR
00523     aging_print("ratnc  ",xbee_ratnc(dev),rnc,PASSED);      // rncと一致すること
00524     aging_print("ping   ",xbee_ping(dev),dd,PASSED);        // ddと一致すること
00525     aging_print("batt   ",(byte)(xbee_batt(dev)<0),0,PASSED);
00526     aging_print("gpioIni",xbee_gpio_init(dev),dd,PASSED);   // ddと一致すること
00527     #if defined(ARDUINO) || defined(ARM_MBED)
00528         aging_print("gpi 1  ",xbee_gpi(dev,1),0xFF,FAILED);
00529         aging_print("adc 1  ",(byte)(xbee_adc(dev,1)==0xFFFF),0,PASSED);
00530     #else // PCのみ試験
00531         for(i=0;i<3;i++){
00532             aging_print("gpi 1  ",xbee_gpi(dev,1),0xFF,FAILED);
00533             aging_print("gpi 2  ",xbee_gpi(dev,2),0xFF,FAILED);
00534             aging_print("gpi 3  ",xbee_gpi(dev,3),0xFF,FAILED);
00535         }
00536         for(i=0;i<3;i++){
00537             aging_print("adc 1  ",(byte)(xbee_adc(dev,1)==0xFFFF),0,PASSED);
00538             aging_print("adc 2  ",(byte)(xbee_adc(dev,2)==0xFFFF),0,PASSED);
00539             aging_print("adc 3  ",(byte)(xbee_adc(dev,3)==0xFFFF),0,PASSED);
00540         }
00541         for(i=0;i<3;i++){
00542             aging_print("sensorL",(byte)(xbee_sensor(dev,LIGHT)<0),0,PASSED);
00543             aging_print("sensorT",(byte)(xbee_sensor(dev,LIGHT)<0),0,PASSED);
00544             aging_print("sensorH",(byte)(xbee_sensor(dev,LIGHT)<0),0,PASSED);
00545         }
00546     #endif
00547 
00548     // ⑤リモートxbeeライブラリ応答待ちコマンド試験
00549     for(i=0;i<3;i++){
00550         aging_print("force  ",xbee_force(dev),0x00,FAILED);
00551         aging_rx_resp("rxResp ","IS",200);      // STATUS_OKのIS応答を200受信分、待つ
00552         aging_print("batForc",xbee_batt_force(dev),0x00,FAILED);    
00553         aging_rx_batt("rxBatt ",200);
00554     //  aging_print("ratForc",xbee_rat_force(dev,"ATIS"),0x00,FAILED);
00555     //  aging_rx_resp("rxResp ","IS",200);      // STATUS_OKのIS応答を200受信分、待つ
00556     }
00557     for(i=0;i<5;i++){
00558         aging_print("gpo11,0",xbee_gpo(dev,11,0),0,FAILED);
00559         aging_rx_none("rxNo110",10);
00560         aging_print("gpo11,1",xbee_gpo(dev,11,1),0,FAILED);
00561         aging_rx_none("rxNo111",10);
00562         #ifndef ARDUINO
00563         #ifndef ARM_MBED  // PCのみ試験
00564             aging_print("gpo12,0",xbee_gpo(dev,12,0),0,FAILED);
00565             aging_rx_none("rxNo120",10);
00566             aging_print("gpo12,1",xbee_gpo(dev,12,1),0,FAILED);
00567             aging_rx_none("rxNo121",10);
00568         #endif
00569         #endif
00570     }
00571     aging_rx_none("rxNone ",100);
00572 
00573     // ⑥ループバック試験
00574     for(i=0;i<3;i++){
00575         aging_print("uartTx ",xbee_uart(dev,UARTDATA),0,FAILED);
00576         aging_rx_uart("rxUart ",UARTDATA,200);  // UART応答を200受信分、待つ
00577         len=s2bytes(data,UARTDATA);
00578         aging_print("byteTx ",xbee_bytes(dev,data,len),0,FAILED);
00579         aging_rx_uart("rxByte ",UARTDATA,200);  // UART応答を200受信分、待つ
00580     }
00581     
00582     // 試験結果
00583     aging_results();
00584 }
00585 
00586 #ifdef ARDUINO
00587     void setup(){
00588         byte i;
00589         
00590         lcd.begin(16, 2);
00591         lcd.clear();
00592         lcd.print("XBee Aging");
00593         lcd.setCursor(0, 1);
00594         lcd.print(COPYRIGHT);
00595         xbee_init(0);
00596         aging_init();
00597         for(i=0;i<SIZEOF_LOG_S;i++) ERROR_S[i]='\0';
00598     }
00599 #endif
00600 
00601 #ifndef ARDUINO
00602     #ifdef ARM_MBED
00603         int main()
00604     #else
00605         int main(int argc,char **argv)
00606     #endif
00607     {
00608         byte port=0;
00609         byte i;
00610         
00611         #ifdef ARM_MBED
00612             lcd.cls();
00613             lcd.printf("XBee Aging");
00614             lcd.locate(0, 1);
00615             lcd.printf(COPYRIGHT);
00616         #else
00617             if( argc==2 ) port = (byte)(atoi(argv[1]));
00618         #endif
00619         xbee_init( port );                  // XBee用COMポートの初期化(引数はポート番号)
00620         aging_init();
00621         for(i=0;i<SIZEOF_LOG_S;i++) ERROR_S[i]='\0';
00622         
00623         while(1)loop();
00624     }
00625 #endif