This software is a test tool for the XBee Library 'XBee Coord API'. I'll check to pass the test when release the library.
Dependencies: TextLCD mbed xbee
Please refer to the following site for the details:
- http://developer.mbed.org/users/bokunimowakaru/code/xbee/wiki/Homepage (English)
- http://www.geocities.jp/bokunimowakaru/diy/xbee/xbee-nucleo.html (Japanese)
main.cpp@4:8bac0a9dece7, 2014-10-31 (annotated)
- Committer:
- bokunimowakaru
- Date:
- Fri Oct 31 10:10:50 2014 +0000
- Revision:
- 4:8bac0a9dece7
- Parent:
- 3:e815df43e269
Update xbee library.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
bokunimowakaru | 0:60ca8c579d80 | 1 | #define ARM_MBED |
bokunimowakaru | 0:60ca8c579d80 | 2 | //#define DEBUG // D8(PA_9)からログをUART(38400baud)出力します |
bokunimowakaru | 3:e815df43e269 | 3 | |
bokunimowakaru | 0:60ca8c579d80 | 4 | /********************************************************************* |
bokunimowakaru | 0:60ca8c579d80 | 5 | XBee ライブラリ・自動システム試験ツール |
bokunimowakaru | 0:60ca8c579d80 | 6 | |
bokunimowakaru | 0:60ca8c579d80 | 7 | 元々、XBeeライブラリ「ZB Coord API」のリリース用のテストツールとして |
bokunimowakaru | 0:60ca8c579d80 | 8 | 作成して、使用していたものです。 |
bokunimowakaru | 0:60ca8c579d80 | 9 | XBeeライブラリを用いた時の評価用に公開することにいたしました。 |
bokunimowakaru | 0:60ca8c579d80 | 10 | 電波環境が悪いと100%になりません。 |
bokunimowakaru | 0:60ca8c579d80 | 11 | Arduino用PC用ともにキーを押すとエラー数と合格回数、テスト回数、最後の |
bokunimowakaru | 0:60ca8c579d80 | 12 | エラーの内容を表示します。 |
bokunimowakaru | 0:60ca8c579d80 | 13 | |
bokunimowakaru | 0:60ca8c579d80 | 14 | 本ソースリストおよびソフトウェアは、ライセンスフリーです。 |
bokunimowakaru | 0:60ca8c579d80 | 15 | 利用、編集、再配布等が自由に行えますが、著作権表示の改変は禁止します。 |
bokunimowakaru | 0:60ca8c579d80 | 16 | |
bokunimowakaru | 0:60ca8c579d80 | 17 | Copyright (c) 2010-2014 Wataru KUNINO |
bokunimowakaru | 0:60ca8c579d80 | 18 | http://www.geocities.jp/bokunimowakaru/ |
bokunimowakaru | 0:60ca8c579d80 | 19 | *********************************************************************/ |
bokunimowakaru | 0:60ca8c579d80 | 20 | |
bokunimowakaru | 0:60ca8c579d80 | 21 | /********************************************************************* |
bokunimowakaru | 0:60ca8c579d80 | 22 | |
bokunimowakaru | 0:60ca8c579d80 | 23 | ●試験項目● |
bokunimowakaru | 0:60ca8c579d80 | 24 | ①ローカルATコマンド試験 |
bokunimowakaru | 0:60ca8c579d80 | 25 | ②ローカルxbeeライブラリ用コマンド試験 |
bokunimowakaru | 0:60ca8c579d80 | 26 | ③リモートATコマンド試験 |
bokunimowakaru | 0:60ca8c579d80 | 27 | ④リモートxbeeライブラリ管理コマンド試験 |
bokunimowakaru | 0:60ca8c579d80 | 28 | ⑤リモートxbeeライブラリ応答待ちコマンド試験 |
bokunimowakaru | 0:60ca8c579d80 | 29 | ⑥ループバック試験 |
bokunimowakaru | 0:60ca8c579d80 | 30 | |
bokunimowakaru | 0:60ca8c579d80 | 31 | ●試験環境● |
bokunimowakaru | 0:60ca8c579d80 | 32 | ○本ソフトを動かす親機用ArduinoまたはPC |
bokunimowakaru | 0:60ca8c579d80 | 33 | ○親機用XBee ZBモジュール【ファーム=ZIGBEE COORDINATOR API】 |
bokunimowakaru | 0:60ca8c579d80 | 34 | ○子機用XBee ZBモジュール【ファーム=ZIGBEE ROUTER AT】 |
bokunimowakaru | 0:60ca8c579d80 | 35 | ○子機のUARTはループバック接続が必要です。(DINとDOUTを接続) |
bokunimowakaru | 0:60ca8c579d80 | 36 | */ |
bokunimowakaru | 0:60ca8c579d80 | 37 | |
bokunimowakaru | 0:60ca8c579d80 | 38 | // #define DEBUG //DEBUGをdefineするとライブラリの動作ログが出力されます。 |
bokunimowakaru | 0:60ca8c579d80 | 39 | // #define DEBUG_TX //送信データ表示 |
bokunimowakaru | 0:60ca8c579d80 | 40 | // #define ERRLOG |
bokunimowakaru | 0:60ca8c579d80 | 41 | #define EASY_SENSOR |
bokunimowakaru | 0:60ca8c579d80 | 42 | #define XBEE_ERROR_TIME |
bokunimowakaru | 0:60ca8c579d80 | 43 | #define PASSED 0 |
bokunimowakaru | 0:60ca8c579d80 | 44 | #define FAILED 1 |
bokunimowakaru | 0:60ca8c579d80 | 45 | #ifdef ARDUINO |
bokunimowakaru | 0:60ca8c579d80 | 46 | #define SIZEOF_LOG_S 36 // 33以上 |
bokunimowakaru | 0:60ca8c579d80 | 47 | #else |
bokunimowakaru | 0:60ca8c579d80 | 48 | #ifdef ARM_MBED |
bokunimowakaru | 0:60ca8c579d80 | 49 | #define SIZEOF_LOG_S 80 |
bokunimowakaru | 0:60ca8c579d80 | 50 | #else // PC |
bokunimowakaru | 0:60ca8c579d80 | 51 | #define SIZEOF_LOG_S 80 |
bokunimowakaru | 0:60ca8c579d80 | 52 | #endif |
bokunimowakaru | 0:60ca8c579d80 | 53 | #endif |
bokunimowakaru | 0:60ca8c579d80 | 54 | |
bokunimowakaru | 0:60ca8c579d80 | 55 | #ifdef ARDUINO |
bokunimowakaru | 0:60ca8c579d80 | 56 | #include <xbee.h> |
bokunimowakaru | 0:60ca8c579d80 | 57 | #include <Wire.h> |
bokunimowakaru | 0:60ca8c579d80 | 58 | #include <Adafruit_MCP23017.h> |
bokunimowakaru | 0:60ca8c579d80 | 59 | #include <Adafruit_RGBLCDShield.h> |
bokunimowakaru | 0:60ca8c579d80 | 60 | Adafruit_RGBLCDShield lcd = Adafruit_RGBLCDShield(); |
bokunimowakaru | 0:60ca8c579d80 | 61 | #else |
bokunimowakaru | 0:60ca8c579d80 | 62 | #ifdef ARM_MBED |
bokunimowakaru | 0:60ca8c579d80 | 63 | #include <xbee.h> |
bokunimowakaru | 0:60ca8c579d80 | 64 | #include "TextLCD.h" |
bokunimowakaru | 0:60ca8c579d80 | 65 | #include <ctype.h> |
bokunimowakaru | 0:60ca8c579d80 | 66 | TextLCD lcd(PA_9, PC_7, PB_5, PB_4, PB_10, PA_8); // rs, e, d4-d7 |
bokunimowakaru | 0:60ca8c579d80 | 67 | DigitalIn mybutton(USER_BUTTON); |
bokunimowakaru | 0:60ca8c579d80 | 68 | #else // PC |
bokunimowakaru | 0:60ca8c579d80 | 69 | #include "../libs/xbee.c" |
bokunimowakaru | 0:60ca8c579d80 | 70 | #include <ctype.h> // isgraph |
bokunimowakaru | 0:60ca8c579d80 | 71 | #include "../libs/kbhit.c" |
bokunimowakaru | 0:60ca8c579d80 | 72 | #endif |
bokunimowakaru | 0:60ca8c579d80 | 73 | #endif |
bokunimowakaru | 0:60ca8c579d80 | 74 | |
bokunimowakaru | 0:60ca8c579d80 | 75 | byte dev[8]; |
bokunimowakaru | 0:60ca8c579d80 | 76 | byte my[8]; |
bokunimowakaru | 0:60ca8c579d80 | 77 | byte myt[8]; |
bokunimowakaru | 0:60ca8c579d80 | 78 | byte panid[8]; |
bokunimowakaru | 0:60ca8c579d80 | 79 | byte panidt[8]; |
bokunimowakaru | 0:60ca8c579d80 | 80 | byte TEST_COUNT=0; |
bokunimowakaru | 0:60ca8c579d80 | 81 | byte ERROR_COUNT=0; |
bokunimowakaru | 0:60ca8c579d80 | 82 | byte ERROR_TOTAL=0; |
bokunimowakaru | 0:60ca8c579d80 | 83 | char ERROR_S[SIZEOF_LOG_S]; |
bokunimowakaru | 0:60ca8c579d80 | 84 | unsigned int pan; |
bokunimowakaru | 0:60ca8c579d80 | 85 | byte nc,rnc=0xFF,dd=0xFF; |
bokunimowakaru | 0:60ca8c579d80 | 86 | |
bokunimowakaru | 0:60ca8c579d80 | 87 | static const char UARTDATA[] = "0123456789ABCDEF"; |
bokunimowakaru | 0:60ca8c579d80 | 88 | char *sprint_FAIL(char *s,const char *text){ |
bokunimowakaru | 0:60ca8c579d80 | 89 | sprintf(s,"%s:FAIL####",text); |
bokunimowakaru | 0:60ca8c579d80 | 90 | return s; |
bokunimowakaru | 0:60ca8c579d80 | 91 | } |
bokunimowakaru | 0:60ca8c579d80 | 92 | |
bokunimowakaru | 0:60ca8c579d80 | 93 | void aging_delay(unsigned int ms){ |
bokunimowakaru | 0:60ca8c579d80 | 94 | #ifdef ARDUINO |
bokunimowakaru | 0:60ca8c579d80 | 95 | delay((unsigned long)ms); |
bokunimowakaru | 0:60ca8c579d80 | 96 | #else |
bokunimowakaru | 0:60ca8c579d80 | 97 | #ifdef ARM_MBED |
bokunimowakaru | 3:e815df43e269 | 98 | wait((double)ms/1000.); |
bokunimowakaru | 0:60ca8c579d80 | 99 | #else // PC |
bokunimowakaru | 0:60ca8c579d80 | 100 | wait_millisec(ms); |
bokunimowakaru | 0:60ca8c579d80 | 101 | #endif |
bokunimowakaru | 0:60ca8c579d80 | 102 | #endif |
bokunimowakaru | 0:60ca8c579d80 | 103 | } |
bokunimowakaru | 0:60ca8c579d80 | 104 | |
bokunimowakaru | 0:60ca8c579d80 | 105 | #if defined(ARDUINO) |
bokunimowakaru | 0:60ca8c579d80 | 106 | void prints(char *s){ |
bokunimowakaru | 0:60ca8c579d80 | 107 | byte x,y; |
bokunimowakaru | 0:60ca8c579d80 | 108 | byte c=1; |
bokunimowakaru | 0:60ca8c579d80 | 109 | for(y=0;y<2;y++){ |
bokunimowakaru | 0:60ca8c579d80 | 110 | lcd.setCursor(0, y); |
bokunimowakaru | 0:60ca8c579d80 | 111 | for(x=0;x<16;x++){ |
bokunimowakaru | 0:60ca8c579d80 | 112 | if(s[16*y+x]=='\0') c=0; |
bokunimowakaru | 0:60ca8c579d80 | 113 | if(isgraph(s[16*y+x]) && c) lcd.print(s[16*y+x]); |
bokunimowakaru | 0:60ca8c579d80 | 114 | else lcd.print(' '); |
bokunimowakaru | 0:60ca8c579d80 | 115 | } |
bokunimowakaru | 0:60ca8c579d80 | 116 | } |
bokunimowakaru | 0:60ca8c579d80 | 117 | } |
bokunimowakaru | 0:60ca8c579d80 | 118 | #endif |
bokunimowakaru | 0:60ca8c579d80 | 119 | #if defined(ARM_MBED) |
bokunimowakaru | 0:60ca8c579d80 | 120 | void prints(char *s){ |
bokunimowakaru | 0:60ca8c579d80 | 121 | byte x,y; |
bokunimowakaru | 0:60ca8c579d80 | 122 | byte c=1; |
bokunimowakaru | 0:60ca8c579d80 | 123 | for(y=0;y<2;y++){ |
bokunimowakaru | 0:60ca8c579d80 | 124 | lcd.locate(0, y); |
bokunimowakaru | 0:60ca8c579d80 | 125 | for(x=0;x<16;x++){ |
bokunimowakaru | 0:60ca8c579d80 | 126 | if(s[16*y+x]=='\0') c=0; |
bokunimowakaru | 0:60ca8c579d80 | 127 | if(isgraph(s[16*y+x]) && c) lcd.printf("%c",s[16*y+x]); |
bokunimowakaru | 0:60ca8c579d80 | 128 | else lcd.printf(" "); |
bokunimowakaru | 0:60ca8c579d80 | 129 | } |
bokunimowakaru | 0:60ca8c579d80 | 130 | } |
bokunimowakaru | 0:60ca8c579d80 | 131 | } |
bokunimowakaru | 0:60ca8c579d80 | 132 | #endif |
bokunimowakaru | 0:60ca8c579d80 | 133 | |
bokunimowakaru | 0:60ca8c579d80 | 134 | void aging_key(void){ |
bokunimowakaru | 0:60ca8c579d80 | 135 | #ifdef ARDUINO |
bokunimowakaru | 0:60ca8c579d80 | 136 | if( lcd.readButtons() ){ |
bokunimowakaru | 0:60ca8c579d80 | 137 | lcd.clear(); |
bokunimowakaru | 0:60ca8c579d80 | 138 | lcd.print(ERROR_COUNT,DEC); // 3 |
bokunimowakaru | 0:60ca8c579d80 | 139 | lcd.print("errs "); // 5 |
bokunimowakaru | 0:60ca8c579d80 | 140 | lcd.print((TEST_COUNT-ERROR_TOTAL),DEC); // 3 |
bokunimowakaru | 0:60ca8c579d80 | 141 | lcd.print('/'); // 1 |
bokunimowakaru | 0:60ca8c579d80 | 142 | lcd.print(TEST_COUNT,DEC); // 3 |
bokunimowakaru | 0:60ca8c579d80 | 143 | lcd.setCursor(0, 1); |
bokunimowakaru | 0:60ca8c579d80 | 144 | if(ERROR_COUNT || ERROR_TOTAL){ |
bokunimowakaru | 0:60ca8c579d80 | 145 | lcd.print(ERROR_S); |
bokunimowakaru | 0:60ca8c579d80 | 146 | } |
bokunimowakaru | 0:60ca8c579d80 | 147 | delay(100); |
bokunimowakaru | 0:60ca8c579d80 | 148 | while( lcd.readButtons() ); |
bokunimowakaru | 0:60ca8c579d80 | 149 | delay(100); |
bokunimowakaru | 0:60ca8c579d80 | 150 | while( !lcd.readButtons() ); |
bokunimowakaru | 0:60ca8c579d80 | 151 | prints(ERROR_S); |
bokunimowakaru | 0:60ca8c579d80 | 152 | delay(3000); |
bokunimowakaru | 0:60ca8c579d80 | 153 | while( lcd.readButtons() ); |
bokunimowakaru | 0:60ca8c579d80 | 154 | } |
bokunimowakaru | 0:60ca8c579d80 | 155 | #else |
bokunimowakaru | 0:60ca8c579d80 | 156 | #ifdef ARM_MBED |
bokunimowakaru | 0:60ca8c579d80 | 157 | if( mybutton==0 ){ // Button is pressed |
bokunimowakaru | 0:60ca8c579d80 | 158 | lcd.cls(); |
bokunimowakaru | 0:60ca8c579d80 | 159 | lcd.printf("%d",ERROR_COUNT); // 3 |
bokunimowakaru | 0:60ca8c579d80 | 160 | lcd.printf("errs "); // 5 |
bokunimowakaru | 0:60ca8c579d80 | 161 | lcd.printf("%d",TEST_COUNT-ERROR_TOTAL); // 3 |
bokunimowakaru | 0:60ca8c579d80 | 162 | lcd.printf("/"); // 1 |
bokunimowakaru | 0:60ca8c579d80 | 163 | lcd.printf("%d",TEST_COUNT); // 3 |
bokunimowakaru | 0:60ca8c579d80 | 164 | lcd.locate(0, 1); |
bokunimowakaru | 0:60ca8c579d80 | 165 | if(ERROR_COUNT || ERROR_TOTAL){ |
bokunimowakaru | 0:60ca8c579d80 | 166 | lcd.printf(ERROR_S); |
bokunimowakaru | 0:60ca8c579d80 | 167 | } |
bokunimowakaru | 0:60ca8c579d80 | 168 | aging_delay(100); |
bokunimowakaru | 0:60ca8c579d80 | 169 | while( !mybutton ); |
bokunimowakaru | 0:60ca8c579d80 | 170 | aging_delay(100); |
bokunimowakaru | 0:60ca8c579d80 | 171 | while( mybutton ); |
bokunimowakaru | 0:60ca8c579d80 | 172 | prints(ERROR_S); |
bokunimowakaru | 0:60ca8c579d80 | 173 | aging_delay(3000); |
bokunimowakaru | 0:60ca8c579d80 | 174 | while( !mybutton ); |
bokunimowakaru | 0:60ca8c579d80 | 175 | } |
bokunimowakaru | 0:60ca8c579d80 | 176 | #else // PC |
bokunimowakaru | 0:60ca8c579d80 | 177 | if( kbhit() ){ |
bokunimowakaru | 0:60ca8c579d80 | 178 | getchar(); |
bokunimowakaru | 0:60ca8c579d80 | 179 | printf("----------------------------------------------------------------\n"); |
bokunimowakaru | 0:60ca8c579d80 | 180 | printf("ERROR=%d(TEST:%d/%d) ",ERROR_COUNT,TEST_COUNT-ERROR_TOTAL,TEST_COUNT); |
bokunimowakaru | 0:60ca8c579d80 | 181 | if(ERROR_COUNT || ERROR_TOTAL){ |
bokunimowakaru | 0:60ca8c579d80 | 182 | printf("%s",ERROR_S); |
bokunimowakaru | 0:60ca8c579d80 | 183 | } |
bokunimowakaru | 0:60ca8c579d80 | 184 | printf("\n----------------------------------------------------------------\n"); |
bokunimowakaru | 0:60ca8c579d80 | 185 | aging_delay(3000); |
bokunimowakaru | 0:60ca8c579d80 | 186 | } |
bokunimowakaru | 0:60ca8c579d80 | 187 | #endif |
bokunimowakaru | 0:60ca8c579d80 | 188 | #endif |
bokunimowakaru | 0:60ca8c579d80 | 189 | } |
bokunimowakaru | 0:60ca8c579d80 | 190 | |
bokunimowakaru | 0:60ca8c579d80 | 191 | void aging_log(char *s){ |
bokunimowakaru | 0:60ca8c579d80 | 192 | #if defined(ARDUINO) || defined(ARM_MBED) |
bokunimowakaru | 0:60ca8c579d80 | 193 | prints(s); |
bokunimowakaru | 0:60ca8c579d80 | 194 | #else // PC |
bokunimowakaru | 0:60ca8c579d80 | 195 | time_t error_time; |
bokunimowakaru | 0:60ca8c579d80 | 196 | struct tm *error_time_st; |
bokunimowakaru | 0:60ca8c579d80 | 197 | |
bokunimowakaru | 0:60ca8c579d80 | 198 | time(&error_time); |
bokunimowakaru | 0:60ca8c579d80 | 199 | error_time_st = localtime(&error_time); |
bokunimowakaru | 0:60ca8c579d80 | 200 | printf("%4d/%02d/%02d %02d:%02d:%02d %s\n", |
bokunimowakaru | 0:60ca8c579d80 | 201 | error_time_st->tm_year+1900, |
bokunimowakaru | 0:60ca8c579d80 | 202 | error_time_st->tm_mon+1, |
bokunimowakaru | 0:60ca8c579d80 | 203 | error_time_st->tm_mday, |
bokunimowakaru | 0:60ca8c579d80 | 204 | error_time_st->tm_hour, |
bokunimowakaru | 0:60ca8c579d80 | 205 | error_time_st->tm_min, |
bokunimowakaru | 0:60ca8c579d80 | 206 | error_time_st->tm_sec, |
bokunimowakaru | 0:60ca8c579d80 | 207 | s |
bokunimowakaru | 0:60ca8c579d80 | 208 | ); |
bokunimowakaru | 0:60ca8c579d80 | 209 | #endif |
bokunimowakaru | 0:60ca8c579d80 | 210 | aging_key(); |
bokunimowakaru | 0:60ca8c579d80 | 211 | } |
bokunimowakaru | 0:60ca8c579d80 | 212 | |
bokunimowakaru | 0:60ca8c579d80 | 213 | void error_log(char *s){ |
bokunimowakaru | 0:60ca8c579d80 | 214 | #ifndef ARDUINO |
bokunimowakaru | 0:60ca8c579d80 | 215 | #ifndef ARM_MBED // PC |
bokunimowakaru | 0:60ca8c579d80 | 216 | FILE *fp; |
bokunimowakaru | 0:60ca8c579d80 | 217 | time_t error_time; |
bokunimowakaru | 0:60ca8c579d80 | 218 | struct tm *error_time_st; |
bokunimowakaru | 0:60ca8c579d80 | 219 | |
bokunimowakaru | 0:60ca8c579d80 | 220 | time(&error_time); |
bokunimowakaru | 0:60ca8c579d80 | 221 | error_time_st = localtime(&error_time); |
bokunimowakaru | 0:60ca8c579d80 | 222 | if( (fp=fopen("err.log","a")) != NULL ){ |
bokunimowakaru | 0:60ca8c579d80 | 223 | fprintf(fp,"%4d/%02d/%02d %02d:%02d:%02d %s\n", |
bokunimowakaru | 0:60ca8c579d80 | 224 | error_time_st->tm_year+1900, |
bokunimowakaru | 0:60ca8c579d80 | 225 | error_time_st->tm_mon+1, |
bokunimowakaru | 0:60ca8c579d80 | 226 | error_time_st->tm_mday, |
bokunimowakaru | 0:60ca8c579d80 | 227 | error_time_st->tm_hour, |
bokunimowakaru | 0:60ca8c579d80 | 228 | error_time_st->tm_min, |
bokunimowakaru | 0:60ca8c579d80 | 229 | error_time_st->tm_sec, |
bokunimowakaru | 0:60ca8c579d80 | 230 | s |
bokunimowakaru | 0:60ca8c579d80 | 231 | ); |
bokunimowakaru | 0:60ca8c579d80 | 232 | fclose(fp); |
bokunimowakaru | 0:60ca8c579d80 | 233 | } |
bokunimowakaru | 0:60ca8c579d80 | 234 | #endif |
bokunimowakaru | 0:60ca8c579d80 | 235 | #endif |
bokunimowakaru | 0:60ca8c579d80 | 236 | aging_log(s); |
bokunimowakaru | 0:60ca8c579d80 | 237 | strcpy(ERROR_S,s); |
bokunimowakaru | 0:60ca8c579d80 | 238 | ERROR_COUNT++; |
bokunimowakaru | 0:60ca8c579d80 | 239 | aging_delay(1000); |
bokunimowakaru | 0:60ca8c579d80 | 240 | aging_key(); |
bokunimowakaru | 0:60ca8c579d80 | 241 | } |
bokunimowakaru | 0:60ca8c579d80 | 242 | |
bokunimowakaru | 0:60ca8c579d80 | 243 | void aging_results(void){ |
bokunimowakaru | 0:60ca8c579d80 | 244 | char s[SIZEOF_LOG_S]; |
bokunimowakaru | 0:60ca8c579d80 | 245 | TEST_COUNT++; |
bokunimowakaru | 0:60ca8c579d80 | 246 | if(ERROR_COUNT==0){ |
bokunimowakaru | 0:60ca8c579d80 | 247 | // 012345678901234567890123456 28~30bytes |
bokunimowakaru | 0:60ca8c579d80 | 248 | sprintf(s,"###TEST:PASSED (%d/%d)####",TEST_COUNT-ERROR_TOTAL,TEST_COUNT); |
bokunimowakaru | 0:60ca8c579d80 | 249 | aging_log(s); |
bokunimowakaru | 0:60ca8c579d80 | 250 | }else{ |
bokunimowakaru | 0:60ca8c579d80 | 251 | ERROR_TOTAL++; |
bokunimowakaru | 0:60ca8c579d80 | 252 | // 01234567890123456789012345678 30~33bytes |
bokunimowakaru | 0:60ca8c579d80 | 253 | sprintf(s,"###TEST:FAILED %d(%d/%d)####",ERROR_COUNT,TEST_COUNT-ERROR_TOTAL,TEST_COUNT); |
bokunimowakaru | 0:60ca8c579d80 | 254 | aging_log(s); |
bokunimowakaru | 0:60ca8c579d80 | 255 | #ifndef ARDUINO |
bokunimowakaru | 0:60ca8c579d80 | 256 | #ifndef ARM_MBED // PC |
bokunimowakaru | 0:60ca8c579d80 | 257 | strcpy(s,ERROR_S); |
bokunimowakaru | 0:60ca8c579d80 | 258 | aging_log(s); |
bokunimowakaru | 0:60ca8c579d80 | 259 | #endif |
bokunimowakaru | 0:60ca8c579d80 | 260 | #endif |
bokunimowakaru | 0:60ca8c579d80 | 261 | ERROR_COUNT=0; |
bokunimowakaru | 0:60ca8c579d80 | 262 | } |
bokunimowakaru | 0:60ca8c579d80 | 263 | aging_delay(3000); |
bokunimowakaru | 0:60ca8c579d80 | 264 | } |
bokunimowakaru | 0:60ca8c579d80 | 265 | |
bokunimowakaru | 0:60ca8c579d80 | 266 | void aging_print(char *text,byte ret,byte target,byte judge){ |
bokunimowakaru | 0:60ca8c579d80 | 267 | char s[SIZEOF_LOG_S]; |
bokunimowakaru | 0:60ca8c579d80 | 268 | if( (judge==PASSED && target == ret) || |
bokunimowakaru | 0:60ca8c579d80 | 269 | (judge==FAILED && target != ret) |
bokunimowakaru | 0:60ca8c579d80 | 270 | ){ |
bokunimowakaru | 0:60ca8c579d80 | 271 | sprintf(s,"%s:PASS(%02X)",text,ret); |
bokunimowakaru | 0:60ca8c579d80 | 272 | aging_log(s); |
bokunimowakaru | 0:60ca8c579d80 | 273 | }else{ |
bokunimowakaru | 0:60ca8c579d80 | 274 | // 0-789012345678901--234-- 26bytes |
bokunimowakaru | 0:60ca8c579d80 | 275 | sprintf(s,"%sret=%02X:%02X",sprint_FAIL(s,text),ret,target); |
bokunimowakaru | 0:60ca8c579d80 | 276 | error_log(s); |
bokunimowakaru | 0:60ca8c579d80 | 277 | } |
bokunimowakaru | 0:60ca8c579d80 | 278 | } |
bokunimowakaru | 0:60ca8c579d80 | 279 | |
bokunimowakaru | 0:60ca8c579d80 | 280 | void aging_rx_resp(char *text,char *at,byte n){ |
bokunimowakaru | 0:60ca8c579d80 | 281 | XBEE_RESULT xbee_result; |
bokunimowakaru | 0:60ca8c579d80 | 282 | byte data; |
bokunimowakaru | 0:60ca8c579d80 | 283 | byte i,j; |
bokunimowakaru | 0:60ca8c579d80 | 284 | char s[SIZEOF_LOG_S]; |
bokunimowakaru | 0:60ca8c579d80 | 285 | for(i=0;i<n;i++){ |
bokunimowakaru | 0:60ca8c579d80 | 286 | data=xbee_rx_call( &xbee_result ); |
bokunimowakaru | 0:60ca8c579d80 | 287 | if( ( xbee_result.MODE==MODE_RESP && |
bokunimowakaru | 0:60ca8c579d80 | 288 | xbee_result.STATUS == STATUS_OK && |
bokunimowakaru | 0:60ca8c579d80 | 289 | xbee_result.AT[0] == 'I' && |
bokunimowakaru | 0:60ca8c579d80 | 290 | xbee_result.AT[1] == 'S' && |
bokunimowakaru | 0:60ca8c579d80 | 291 | bytecmp(dev,xbee_result.FROM,8)==0 |
bokunimowakaru | 0:60ca8c579d80 | 292 | ) |
bokunimowakaru | 0:60ca8c579d80 | 293 | // || ( |
bokunimowakaru | 0:60ca8c579d80 | 294 | // xbee_result.MODE==MODE_GPIN && |
bokunimowakaru | 0:60ca8c579d80 | 295 | // bytecmp(dev,xbee_result.FROM,8)==0 |
bokunimowakaru | 0:60ca8c579d80 | 296 | // ) |
bokunimowakaru | 0:60ca8c579d80 | 297 | ){ |
bokunimowakaru | 0:60ca8c579d80 | 298 | sprintf(s,"%s:PASS(%02X)",text,data); |
bokunimowakaru | 0:60ca8c579d80 | 299 | for(j=0;j<8;j++){ |
bokunimowakaru | 0:60ca8c579d80 | 300 | if( (data>>(7-j))&0x01 ) s[16+j]='1'; |
bokunimowakaru | 0:60ca8c579d80 | 301 | else s[16+j]='0'; |
bokunimowakaru | 0:60ca8c579d80 | 302 | } |
bokunimowakaru | 0:60ca8c579d80 | 303 | s[24]='\0'; |
bokunimowakaru | 0:60ca8c579d80 | 304 | aging_log(s); |
bokunimowakaru | 0:60ca8c579d80 | 305 | return; |
bokunimowakaru | 0:60ca8c579d80 | 306 | } |
bokunimowakaru | 0:60ca8c579d80 | 307 | } |
bokunimowakaru | 0:60ca8c579d80 | 308 | error_log(sprint_FAIL(s,text)); |
bokunimowakaru | 0:60ca8c579d80 | 309 | } |
bokunimowakaru | 0:60ca8c579d80 | 310 | |
bokunimowakaru | 0:60ca8c579d80 | 311 | void aging_rx_uart(char *text,const char *uart,byte n){ |
bokunimowakaru | 0:60ca8c579d80 | 312 | XBEE_RESULT xbee_result; |
bokunimowakaru | 0:60ca8c579d80 | 313 | byte i,j; |
bokunimowakaru | 0:60ca8c579d80 | 314 | byte len; |
bokunimowakaru | 0:60ca8c579d80 | 315 | char s[SIZEOF_LOG_S]; |
bokunimowakaru | 0:60ca8c579d80 | 316 | byte data[SIZEOF_LOG_S]; |
bokunimowakaru | 0:60ca8c579d80 | 317 | |
bokunimowakaru | 0:60ca8c579d80 | 318 | for(i=0;i<n;i++){ |
bokunimowakaru | 0:60ca8c579d80 | 319 | len=xbee_rx_call( &xbee_result ); |
bokunimowakaru | 0:60ca8c579d80 | 320 | if( xbee_result.MODE==MODE_UART && |
bokunimowakaru | 0:60ca8c579d80 | 321 | bytecmp(dev,xbee_result.FROM,8)==0 |
bokunimowakaru | 0:60ca8c579d80 | 322 | ){ |
bokunimowakaru | 0:60ca8c579d80 | 323 | for(j=0;j<SIZEOF_LOG_S;j++) data[j]=(byte)uart[j]; |
bokunimowakaru | 0:60ca8c579d80 | 324 | if(len>SIZEOF_LOG_S) len=SIZEOF_LOG_S; |
bokunimowakaru | 0:60ca8c579d80 | 325 | if(bytecmp(data,xbee_result.DATA,len)==0){ |
bokunimowakaru | 0:60ca8c579d80 | 326 | sprintf(s,"%s:PASS(%02d) ",text,len); |
bokunimowakaru | 0:60ca8c579d80 | 327 | for(j=16;j<32;j++){ |
bokunimowakaru | 0:60ca8c579d80 | 328 | if(isgraph(xbee_result.DATA[j-16])){ |
bokunimowakaru | 0:60ca8c579d80 | 329 | s[j]=(char)xbee_result.DATA[j-16]; |
bokunimowakaru | 0:60ca8c579d80 | 330 | }else s[j]=' '; |
bokunimowakaru | 0:60ca8c579d80 | 331 | } |
bokunimowakaru | 0:60ca8c579d80 | 332 | s[32]='\0'; |
bokunimowakaru | 0:60ca8c579d80 | 333 | aging_log(s); |
bokunimowakaru | 0:60ca8c579d80 | 334 | if(len!=strlen(uart)){ |
bokunimowakaru | 0:60ca8c579d80 | 335 | sprintf(s,"%s:WARNING txLen=%d,rx=%d",text,strlen(uart),len); |
bokunimowakaru | 0:60ca8c579d80 | 336 | aging_log(s); |
bokunimowakaru | 0:60ca8c579d80 | 337 | } |
bokunimowakaru | 0:60ca8c579d80 | 338 | return; |
bokunimowakaru | 0:60ca8c579d80 | 339 | }else{ |
bokunimowakaru | 0:60ca8c579d80 | 340 | sprintf(s,"%s:FAIL(%02d)################",text,len); |
bokunimowakaru | 0:60ca8c579d80 | 341 | for(j=16;j<24;j++){ |
bokunimowakaru | 0:60ca8c579d80 | 342 | if(xbee_result.DATA[j-16]>16){ |
bokunimowakaru | 0:60ca8c579d80 | 343 | s[j]=(char)xbee_result.DATA[j-16]; |
bokunimowakaru | 0:60ca8c579d80 | 344 | }else s[j]=' '; |
bokunimowakaru | 0:60ca8c579d80 | 345 | } |
bokunimowakaru | 0:60ca8c579d80 | 346 | error_log(s); |
bokunimowakaru | 0:60ca8c579d80 | 347 | return; |
bokunimowakaru | 0:60ca8c579d80 | 348 | } |
bokunimowakaru | 0:60ca8c579d80 | 349 | } |
bokunimowakaru | 0:60ca8c579d80 | 350 | } |
bokunimowakaru | 0:60ca8c579d80 | 351 | error_log(sprint_FAIL(s,text)); |
bokunimowakaru | 0:60ca8c579d80 | 352 | } |
bokunimowakaru | 0:60ca8c579d80 | 353 | |
bokunimowakaru | 0:60ca8c579d80 | 354 | byte s2bytes(byte *bytes,const char *s){ |
bokunimowakaru | 0:60ca8c579d80 | 355 | byte i; |
bokunimowakaru | 0:60ca8c579d80 | 356 | for(i=0;i<strlen(s);i++) bytes[i]=s[i]; |
bokunimowakaru | 0:60ca8c579d80 | 357 | return(i); |
bokunimowakaru | 0:60ca8c579d80 | 358 | } |
bokunimowakaru | 0:60ca8c579d80 | 359 | |
bokunimowakaru | 0:60ca8c579d80 | 360 | void aging_rx_batt(char *text,byte n){ |
bokunimowakaru | 0:60ca8c579d80 | 361 | XBEE_RESULT xbee_result; |
bokunimowakaru | 0:60ca8c579d80 | 362 | byte i; |
bokunimowakaru | 0:60ca8c579d80 | 363 | char s[SIZEOF_LOG_S]; |
bokunimowakaru | 0:60ca8c579d80 | 364 | for(i=0;i<n;i++){ |
bokunimowakaru | 0:60ca8c579d80 | 365 | xbee_rx_call( &xbee_result ); |
bokunimowakaru | 0:60ca8c579d80 | 366 | if( xbee_result.MODE==MODE_BATT && |
bokunimowakaru | 0:60ca8c579d80 | 367 | xbee_result.STATUS == STATUS_OK && |
bokunimowakaru | 0:60ca8c579d80 | 368 | bytecmp(dev,xbee_result.FROM,8)==0 && |
bokunimowakaru | 0:60ca8c579d80 | 369 | xbee_result.ADCIN[0] > 1000 |
bokunimowakaru | 0:60ca8c579d80 | 370 | ){ |
bokunimowakaru | 0:60ca8c579d80 | 371 | sprintf(s,"%s:PASS(00)%d[mV]",text,xbee_result.ADCIN[0]); |
bokunimowakaru | 0:60ca8c579d80 | 372 | aging_log(s); |
bokunimowakaru | 0:60ca8c579d80 | 373 | return; |
bokunimowakaru | 0:60ca8c579d80 | 374 | } |
bokunimowakaru | 0:60ca8c579d80 | 375 | } |
bokunimowakaru | 0:60ca8c579d80 | 376 | error_log(sprint_FAIL(s,text)); |
bokunimowakaru | 0:60ca8c579d80 | 377 | } |
bokunimowakaru | 0:60ca8c579d80 | 378 | |
bokunimowakaru | 0:60ca8c579d80 | 379 | char byte2a(byte in, byte i){ |
bokunimowakaru | 0:60ca8c579d80 | 380 | char ret; |
bokunimowakaru | 0:60ca8c579d80 | 381 | if(i) in /= 16; |
bokunimowakaru | 0:60ca8c579d80 | 382 | ret = (char)(in%16); |
bokunimowakaru | 0:60ca8c579d80 | 383 | if(ret<10) ret += '0'; |
bokunimowakaru | 0:60ca8c579d80 | 384 | else ret += 'A' -10; |
bokunimowakaru | 0:60ca8c579d80 | 385 | return( ret ); |
bokunimowakaru | 0:60ca8c579d80 | 386 | } |
bokunimowakaru | 0:60ca8c579d80 | 387 | |
bokunimowakaru | 0:60ca8c579d80 | 388 | byte pairing(byte *dev,byte n){ |
bokunimowakaru | 0:60ca8c579d80 | 389 | XBEE_RESULT xbee_result; |
bokunimowakaru | 0:60ca8c579d80 | 390 | char s[SIZEOF_LOG_S]; |
bokunimowakaru | 0:60ca8c579d80 | 391 | |
bokunimowakaru | 0:60ca8c579d80 | 392 | byte i,len; |
bokunimowakaru | 0:60ca8c579d80 | 393 | for(i=0;i<n;i++){ |
bokunimowakaru | 0:60ca8c579d80 | 394 | xbee_rx_call( &xbee_result ); |
bokunimowakaru | 0:60ca8c579d80 | 395 | if( xbee_result.MODE==MODE_IDNT ){ |
bokunimowakaru | 0:60ca8c579d80 | 396 | sprintf(s,"Pairing:PASS(%02X)",xbee_result.STATUS); |
bokunimowakaru | 0:60ca8c579d80 | 397 | len=strlen(s); |
bokunimowakaru | 0:60ca8c579d80 | 398 | for(i=0;i<8;i++){ |
bokunimowakaru | 0:60ca8c579d80 | 399 | dev[i]=xbee_result.FROM[i]; |
bokunimowakaru | 0:60ca8c579d80 | 400 | s[len] =byte2a(dev[i],1); |
bokunimowakaru | 0:60ca8c579d80 | 401 | s[len+1]=byte2a(dev[i],0); |
bokunimowakaru | 0:60ca8c579d80 | 402 | len+=2; |
bokunimowakaru | 0:60ca8c579d80 | 403 | } |
bokunimowakaru | 0:60ca8c579d80 | 404 | s[len]='\0'; |
bokunimowakaru | 0:60ca8c579d80 | 405 | aging_log(s); |
bokunimowakaru | 0:60ca8c579d80 | 406 | return(1); |
bokunimowakaru | 0:60ca8c579d80 | 407 | } |
bokunimowakaru | 0:60ca8c579d80 | 408 | } |
bokunimowakaru | 0:60ca8c579d80 | 409 | return(0); |
bokunimowakaru | 0:60ca8c579d80 | 410 | } |
bokunimowakaru | 0:60ca8c579d80 | 411 | |
bokunimowakaru | 0:60ca8c579d80 | 412 | void aging_rx_none(char *text,byte n){ |
bokunimowakaru | 0:60ca8c579d80 | 413 | XBEE_RESULT xbee_result; |
bokunimowakaru | 0:60ca8c579d80 | 414 | byte i; |
bokunimowakaru | 0:60ca8c579d80 | 415 | char s[SIZEOF_LOG_S]; |
bokunimowakaru | 0:60ca8c579d80 | 416 | for(i=0;i<n;i++){ |
bokunimowakaru | 0:60ca8c579d80 | 417 | xbee_rx_call( &xbee_result ); |
bokunimowakaru | 0:60ca8c579d80 | 418 | if( xbee_result.MODE != 0x00 ){ |
bokunimowakaru | 0:60ca8c579d80 | 419 | sprintf(s,"%smode=%02X stat=%02X",sprint_FAIL(s,text),xbee_result.MODE,xbee_result.STATUS); |
bokunimowakaru | 0:60ca8c579d80 | 420 | error_log(s); |
bokunimowakaru | 0:60ca8c579d80 | 421 | return; |
bokunimowakaru | 0:60ca8c579d80 | 422 | } |
bokunimowakaru | 0:60ca8c579d80 | 423 | } |
bokunimowakaru | 0:60ca8c579d80 | 424 | sprintf(s,"%s:PASS",text); |
bokunimowakaru | 0:60ca8c579d80 | 425 | aging_log(s); |
bokunimowakaru | 0:60ca8c579d80 | 426 | } |
bokunimowakaru | 0:60ca8c579d80 | 427 | |
bokunimowakaru | 0:60ca8c579d80 | 428 | void aging_init(void){ |
bokunimowakaru | 0:60ca8c579d80 | 429 | char s[SIZEOF_LOG_S]; |
bokunimowakaru | 0:60ca8c579d80 | 430 | byte i; |
bokunimowakaru | 0:60ca8c579d80 | 431 | |
bokunimowakaru | 0:60ca8c579d80 | 432 | xbee_atnj(0xFF); |
bokunimowakaru | 0:60ca8c579d80 | 433 | aging_delay(1000); |
bokunimowakaru | 0:60ca8c579d80 | 434 | aging_log("Press Commiss.SW"); |
bokunimowakaru | 0:60ca8c579d80 | 435 | /* ペアリング&宛先アドレス取得 */ |
bokunimowakaru | 0:60ca8c579d80 | 436 | while(pairing(dev,100)==0); |
bokunimowakaru | 0:60ca8c579d80 | 437 | sprintf(s,"DestAdr:"); |
bokunimowakaru | 0:60ca8c579d80 | 438 | for(i=0;i<4;i++){ |
bokunimowakaru | 0:60ca8c579d80 | 439 | s[8+2*i]=byte2a(dev[i+4],1); |
bokunimowakaru | 0:60ca8c579d80 | 440 | s[9+2*i]=byte2a(dev[i+4],0); |
bokunimowakaru | 0:60ca8c579d80 | 441 | } |
bokunimowakaru | 0:60ca8c579d80 | 442 | s[16]='\0'; |
bokunimowakaru | 0:60ca8c579d80 | 443 | aging_log(s); |
bokunimowakaru | 0:60ca8c579d80 | 444 | xbee_atnj(0); |
bokunimowakaru | 0:60ca8c579d80 | 445 | aging_delay(1000); |
bokunimowakaru | 0:60ca8c579d80 | 446 | /* 自分のアドレス */ |
bokunimowakaru | 0:60ca8c579d80 | 447 | xbee_myaddress(my); |
bokunimowakaru | 0:60ca8c579d80 | 448 | sprintf(s,"MyAdr :"); |
bokunimowakaru | 0:60ca8c579d80 | 449 | for(i=0;i<4;i++){ |
bokunimowakaru | 0:60ca8c579d80 | 450 | s[8+2*i]=byte2a(my[i+4],1); |
bokunimowakaru | 0:60ca8c579d80 | 451 | s[9+2*i]=byte2a(my[i+4],0); |
bokunimowakaru | 0:60ca8c579d80 | 452 | } |
bokunimowakaru | 0:60ca8c579d80 | 453 | s[16]='\0'; |
bokunimowakaru | 0:60ca8c579d80 | 454 | aging_log(s); |
bokunimowakaru | 0:60ca8c579d80 | 455 | aging_delay(1000); |
bokunimowakaru | 0:60ca8c579d80 | 456 | /* PAN ID */ |
bokunimowakaru | 0:60ca8c579d80 | 457 | pan=xbee_atop(panid); |
bokunimowakaru | 0:60ca8c579d80 | 458 | sprintf(s,"PAN ID :%d ",pan); |
bokunimowakaru | 0:60ca8c579d80 | 459 | for(i=0;i<8;i++){ |
bokunimowakaru | 0:60ca8c579d80 | 460 | s[16+2*i]=byte2a(panid[i],1); |
bokunimowakaru | 0:60ca8c579d80 | 461 | s[17+2*i]=byte2a(panid[i],0); |
bokunimowakaru | 0:60ca8c579d80 | 462 | } |
bokunimowakaru | 0:60ca8c579d80 | 463 | s[32]='\0'; |
bokunimowakaru | 0:60ca8c579d80 | 464 | aging_log(s); |
bokunimowakaru | 0:60ca8c579d80 | 465 | aging_delay(1000); |
bokunimowakaru | 0:60ca8c579d80 | 466 | /* 子機数など */ |
bokunimowakaru | 0:60ca8c579d80 | 467 | nc=xbee_atnc(); |
bokunimowakaru | 0:60ca8c579d80 | 468 | while(rnc==0xFF){ |
bokunimowakaru | 0:60ca8c579d80 | 469 | rnc=xbee_ratnc(dev); |
bokunimowakaru | 0:60ca8c579d80 | 470 | } |
bokunimowakaru | 0:60ca8c579d80 | 471 | while(dd==0xFF){ |
bokunimowakaru | 0:60ca8c579d80 | 472 | dd=xbee_ping(dev); |
bokunimowakaru | 0:60ca8c579d80 | 473 | } |
bokunimowakaru | 0:60ca8c579d80 | 474 | sprintf(s,"nOfChld:%d,%d,%02X",10-nc,12-rnc,dd); |
bokunimowakaru | 0:60ca8c579d80 | 475 | aging_log(s); |
bokunimowakaru | 0:60ca8c579d80 | 476 | aging_delay(1000); |
bokunimowakaru | 0:60ca8c579d80 | 477 | } |
bokunimowakaru | 0:60ca8c579d80 | 478 | |
bokunimowakaru | 0:60ca8c579d80 | 479 | void loop(){ |
bokunimowakaru | 0:60ca8c579d80 | 480 | byte data[SIZEOF_LOG_S]; |
bokunimowakaru | 0:60ca8c579d80 | 481 | byte i,len; |
bokunimowakaru | 0:60ca8c579d80 | 482 | |
bokunimowakaru | 0:60ca8c579d80 | 483 | aging_log("Started:========"); |
bokunimowakaru | 0:60ca8c579d80 | 484 | |
bokunimowakaru | 0:60ca8c579d80 | 485 | // ①ローカルATコマンド試験 |
bokunimowakaru | 0:60ca8c579d80 | 486 | #ifndef ARDUINO |
bokunimowakaru | 0:60ca8c579d80 | 487 | #ifndef ARM_MBED // PCのみ試験 |
bokunimowakaru | 0:60ca8c579d80 | 488 | for(i=0;i<10;i++){ |
bokunimowakaru | 0:60ca8c579d80 | 489 | aging_print("LocAt L",xbee_at("ATP004"),STATUS_OK,PASSED); |
bokunimowakaru | 0:60ca8c579d80 | 490 | aging_print("LocAt H",xbee_at("ATP005"),STATUS_OK,PASSED); |
bokunimowakaru | 0:60ca8c579d80 | 491 | } |
bokunimowakaru | 0:60ca8c579d80 | 492 | #endif |
bokunimowakaru | 0:60ca8c579d80 | 493 | #endif |
bokunimowakaru | 0:60ca8c579d80 | 494 | aging_print("LocAt -",xbee_at("ATP001"),STATUS_OK,PASSED); |
bokunimowakaru | 0:60ca8c579d80 | 495 | |
bokunimowakaru | 0:60ca8c579d80 | 496 | // ②ローカルxbeeライブラリ用コマンド試験 |
bokunimowakaru | 0:60ca8c579d80 | 497 | // aging_print("reset ",xbee_reset(),0,FAILED); |
bokunimowakaru | 0:60ca8c579d80 | 498 | aging_print("atcb ",xbee_atcb(1),0,PASSED); |
bokunimowakaru | 0:60ca8c579d80 | 499 | for(i=0;i<3;i++){ |
bokunimowakaru | 0:60ca8c579d80 | 500 | aging_print("myAdr ",xbee_myaddress(myt),0,FAILED); |
bokunimowakaru | 0:60ca8c579d80 | 501 | aging_print("myAdCmp",bytecmp(my,myt,8),0,PASSED); |
bokunimowakaru | 0:60ca8c579d80 | 502 | aging_print("atvr ",xbee_atvr(),ZB_TYPE_COORD,PASSED); |
bokunimowakaru | 0:60ca8c579d80 | 503 | aging_print("atai ",xbee_atai(),0,PASSED); |
bokunimowakaru | 0:60ca8c579d80 | 504 | aging_print("atop ",(byte)xbee_atop(panidt),(byte)pan,PASSED); |
bokunimowakaru | 0:60ca8c579d80 | 505 | aging_print("atopCmp",bytecmp(panid,panidt,8),0,PASSED); |
bokunimowakaru | 0:60ca8c579d80 | 506 | aging_print("atnc ",xbee_atnc(),nc,PASSED); // ncと一致すること |
bokunimowakaru | 0:60ca8c579d80 | 507 | } |
bokunimowakaru | 0:60ca8c579d80 | 508 | |
bokunimowakaru | 0:60ca8c579d80 | 509 | // ③リモートATコマンド試験 |
bokunimowakaru | 0:60ca8c579d80 | 510 | #ifndef ARDUINO |
bokunimowakaru | 0:60ca8c579d80 | 511 | #ifndef ARM_MBED // PCのみ試験 |
bokunimowakaru | 0:60ca8c579d80 | 512 | for(i=0;i<10;i++){ |
bokunimowakaru | 0:60ca8c579d80 | 513 | aging_print("RemAt L",xbee_rat(dev,"ATP104"),STATUS_OK,PASSED); // 0xFF=ERROR |
bokunimowakaru | 0:60ca8c579d80 | 514 | aging_print("RemAt H",xbee_rat(dev,"ATP105"),STATUS_OK,PASSED); // 0xFF=ERROR |
bokunimowakaru | 0:60ca8c579d80 | 515 | } |
bokunimowakaru | 0:60ca8c579d80 | 516 | #endif |
bokunimowakaru | 0:60ca8c579d80 | 517 | #endif |
bokunimowakaru | 0:60ca8c579d80 | 518 | aging_print("LocAt -",xbee_at("ATP100"),STATUS_OK,PASSED); |
bokunimowakaru | 0:60ca8c579d80 | 519 | |
bokunimowakaru | 0:60ca8c579d80 | 520 | // ④リモートxbeeライブラリ管理コマンド試験 |
bokunimowakaru | 0:60ca8c579d80 | 521 | aging_print("ratd ",xbee_ratd(dev, my),0xFF,FAILED); // 0xFF=ERROR |
bokunimowakaru | 0:60ca8c579d80 | 522 | aging_print("ratdMyA",xbee_ratd_myaddress(dev),0xFF,FAILED); // 0xFF=ERROR |
bokunimowakaru | 0:60ca8c579d80 | 523 | aging_print("ratnc ",xbee_ratnc(dev),rnc,PASSED); // rncと一致すること |
bokunimowakaru | 0:60ca8c579d80 | 524 | aging_print("ping ",xbee_ping(dev),dd,PASSED); // ddと一致すること |
bokunimowakaru | 0:60ca8c579d80 | 525 | aging_print("batt ",(byte)(xbee_batt(dev)<0),0,PASSED); |
bokunimowakaru | 0:60ca8c579d80 | 526 | aging_print("gpioIni",xbee_gpio_init(dev),dd,PASSED); // ddと一致すること |
bokunimowakaru | 0:60ca8c579d80 | 527 | #if defined(ARDUINO) || defined(ARM_MBED) |
bokunimowakaru | 0:60ca8c579d80 | 528 | aging_print("gpi 1 ",xbee_gpi(dev,1),0xFF,FAILED); |
bokunimowakaru | 0:60ca8c579d80 | 529 | aging_print("adc 1 ",(byte)(xbee_adc(dev,1)==0xFFFF),0,PASSED); |
bokunimowakaru | 0:60ca8c579d80 | 530 | #else // PCのみ試験 |
bokunimowakaru | 0:60ca8c579d80 | 531 | for(i=0;i<3;i++){ |
bokunimowakaru | 0:60ca8c579d80 | 532 | aging_print("gpi 1 ",xbee_gpi(dev,1),0xFF,FAILED); |
bokunimowakaru | 0:60ca8c579d80 | 533 | aging_print("gpi 2 ",xbee_gpi(dev,2),0xFF,FAILED); |
bokunimowakaru | 0:60ca8c579d80 | 534 | aging_print("gpi 3 ",xbee_gpi(dev,3),0xFF,FAILED); |
bokunimowakaru | 0:60ca8c579d80 | 535 | } |
bokunimowakaru | 0:60ca8c579d80 | 536 | for(i=0;i<3;i++){ |
bokunimowakaru | 0:60ca8c579d80 | 537 | aging_print("adc 1 ",(byte)(xbee_adc(dev,1)==0xFFFF),0,PASSED); |
bokunimowakaru | 0:60ca8c579d80 | 538 | aging_print("adc 2 ",(byte)(xbee_adc(dev,2)==0xFFFF),0,PASSED); |
bokunimowakaru | 0:60ca8c579d80 | 539 | aging_print("adc 3 ",(byte)(xbee_adc(dev,3)==0xFFFF),0,PASSED); |
bokunimowakaru | 0:60ca8c579d80 | 540 | } |
bokunimowakaru | 0:60ca8c579d80 | 541 | for(i=0;i<3;i++){ |
bokunimowakaru | 0:60ca8c579d80 | 542 | aging_print("sensorL",(byte)(xbee_sensor(dev,LIGHT)<0),0,PASSED); |
bokunimowakaru | 0:60ca8c579d80 | 543 | aging_print("sensorT",(byte)(xbee_sensor(dev,LIGHT)<0),0,PASSED); |
bokunimowakaru | 0:60ca8c579d80 | 544 | aging_print("sensorH",(byte)(xbee_sensor(dev,LIGHT)<0),0,PASSED); |
bokunimowakaru | 0:60ca8c579d80 | 545 | } |
bokunimowakaru | 0:60ca8c579d80 | 546 | #endif |
bokunimowakaru | 0:60ca8c579d80 | 547 | |
bokunimowakaru | 0:60ca8c579d80 | 548 | // ⑤リモートxbeeライブラリ応答待ちコマンド試験 |
bokunimowakaru | 0:60ca8c579d80 | 549 | for(i=0;i<3;i++){ |
bokunimowakaru | 0:60ca8c579d80 | 550 | aging_print("force ",xbee_force(dev),0x00,FAILED); |
bokunimowakaru | 0:60ca8c579d80 | 551 | aging_rx_resp("rxResp ","IS",200); // STATUS_OKのIS応答を200受信分、待つ |
bokunimowakaru | 0:60ca8c579d80 | 552 | aging_print("batForc",xbee_batt_force(dev),0x00,FAILED); |
bokunimowakaru | 0:60ca8c579d80 | 553 | aging_rx_batt("rxBatt ",200); |
bokunimowakaru | 0:60ca8c579d80 | 554 | // aging_print("ratForc",xbee_rat_force(dev,"ATIS"),0x00,FAILED); |
bokunimowakaru | 0:60ca8c579d80 | 555 | // aging_rx_resp("rxResp ","IS",200); // STATUS_OKのIS応答を200受信分、待つ |
bokunimowakaru | 0:60ca8c579d80 | 556 | } |
bokunimowakaru | 0:60ca8c579d80 | 557 | for(i=0;i<5;i++){ |
bokunimowakaru | 0:60ca8c579d80 | 558 | aging_print("gpo11,0",xbee_gpo(dev,11,0),0,FAILED); |
bokunimowakaru | 0:60ca8c579d80 | 559 | aging_rx_none("rxNo110",10); |
bokunimowakaru | 0:60ca8c579d80 | 560 | aging_print("gpo11,1",xbee_gpo(dev,11,1),0,FAILED); |
bokunimowakaru | 0:60ca8c579d80 | 561 | aging_rx_none("rxNo111",10); |
bokunimowakaru | 0:60ca8c579d80 | 562 | #ifndef ARDUINO |
bokunimowakaru | 0:60ca8c579d80 | 563 | #ifndef ARM_MBED // PCのみ試験 |
bokunimowakaru | 0:60ca8c579d80 | 564 | aging_print("gpo12,0",xbee_gpo(dev,12,0),0,FAILED); |
bokunimowakaru | 0:60ca8c579d80 | 565 | aging_rx_none("rxNo120",10); |
bokunimowakaru | 0:60ca8c579d80 | 566 | aging_print("gpo12,1",xbee_gpo(dev,12,1),0,FAILED); |
bokunimowakaru | 0:60ca8c579d80 | 567 | aging_rx_none("rxNo121",10); |
bokunimowakaru | 0:60ca8c579d80 | 568 | #endif |
bokunimowakaru | 0:60ca8c579d80 | 569 | #endif |
bokunimowakaru | 0:60ca8c579d80 | 570 | } |
bokunimowakaru | 0:60ca8c579d80 | 571 | aging_rx_none("rxNone ",100); |
bokunimowakaru | 0:60ca8c579d80 | 572 | |
bokunimowakaru | 0:60ca8c579d80 | 573 | // ⑥ループバック試験 |
bokunimowakaru | 0:60ca8c579d80 | 574 | for(i=0;i<3;i++){ |
bokunimowakaru | 0:60ca8c579d80 | 575 | aging_print("uartTx ",xbee_uart(dev,UARTDATA),0,FAILED); |
bokunimowakaru | 0:60ca8c579d80 | 576 | aging_rx_uart("rxUart ",UARTDATA,200); // UART応答を200受信分、待つ |
bokunimowakaru | 0:60ca8c579d80 | 577 | len=s2bytes(data,UARTDATA); |
bokunimowakaru | 0:60ca8c579d80 | 578 | aging_print("byteTx ",xbee_bytes(dev,data,len),0,FAILED); |
bokunimowakaru | 0:60ca8c579d80 | 579 | aging_rx_uart("rxByte ",UARTDATA,200); // UART応答を200受信分、待つ |
bokunimowakaru | 0:60ca8c579d80 | 580 | } |
bokunimowakaru | 0:60ca8c579d80 | 581 | |
bokunimowakaru | 0:60ca8c579d80 | 582 | // 試験結果 |
bokunimowakaru | 0:60ca8c579d80 | 583 | aging_results(); |
bokunimowakaru | 0:60ca8c579d80 | 584 | } |
bokunimowakaru | 0:60ca8c579d80 | 585 | |
bokunimowakaru | 0:60ca8c579d80 | 586 | #ifdef ARDUINO |
bokunimowakaru | 0:60ca8c579d80 | 587 | void setup(){ |
bokunimowakaru | 0:60ca8c579d80 | 588 | byte i; |
bokunimowakaru | 0:60ca8c579d80 | 589 | |
bokunimowakaru | 0:60ca8c579d80 | 590 | lcd.begin(16, 2); |
bokunimowakaru | 0:60ca8c579d80 | 591 | lcd.clear(); |
bokunimowakaru | 0:60ca8c579d80 | 592 | lcd.print("XBee Aging"); |
bokunimowakaru | 0:60ca8c579d80 | 593 | lcd.setCursor(0, 1); |
bokunimowakaru | 0:60ca8c579d80 | 594 | lcd.print(COPYRIGHT); |
bokunimowakaru | 0:60ca8c579d80 | 595 | xbee_init(0); |
bokunimowakaru | 0:60ca8c579d80 | 596 | aging_init(); |
bokunimowakaru | 0:60ca8c579d80 | 597 | for(i=0;i<SIZEOF_LOG_S;i++) ERROR_S[i]='\0'; |
bokunimowakaru | 0:60ca8c579d80 | 598 | } |
bokunimowakaru | 0:60ca8c579d80 | 599 | #endif |
bokunimowakaru | 0:60ca8c579d80 | 600 | |
bokunimowakaru | 0:60ca8c579d80 | 601 | #ifndef ARDUINO |
bokunimowakaru | 0:60ca8c579d80 | 602 | #ifdef ARM_MBED |
bokunimowakaru | 0:60ca8c579d80 | 603 | int main() |
bokunimowakaru | 0:60ca8c579d80 | 604 | #else |
bokunimowakaru | 0:60ca8c579d80 | 605 | int main(int argc,char **argv) |
bokunimowakaru | 0:60ca8c579d80 | 606 | #endif |
bokunimowakaru | 0:60ca8c579d80 | 607 | { |
bokunimowakaru | 0:60ca8c579d80 | 608 | byte port=0; |
bokunimowakaru | 0:60ca8c579d80 | 609 | byte i; |
bokunimowakaru | 0:60ca8c579d80 | 610 | |
bokunimowakaru | 0:60ca8c579d80 | 611 | #ifdef ARM_MBED |
bokunimowakaru | 0:60ca8c579d80 | 612 | lcd.cls(); |
bokunimowakaru | 0:60ca8c579d80 | 613 | lcd.printf("XBee Aging"); |
bokunimowakaru | 0:60ca8c579d80 | 614 | lcd.locate(0, 1); |
bokunimowakaru | 0:60ca8c579d80 | 615 | lcd.printf(COPYRIGHT); |
bokunimowakaru | 0:60ca8c579d80 | 616 | #else |
bokunimowakaru | 0:60ca8c579d80 | 617 | if( argc==2 ) port = (byte)(atoi(argv[1])); |
bokunimowakaru | 0:60ca8c579d80 | 618 | #endif |
bokunimowakaru | 0:60ca8c579d80 | 619 | xbee_init( port ); // XBee用COMポートの初期化(引数はポート番号) |
bokunimowakaru | 0:60ca8c579d80 | 620 | aging_init(); |
bokunimowakaru | 0:60ca8c579d80 | 621 | for(i=0;i<SIZEOF_LOG_S;i++) ERROR_S[i]='\0'; |
bokunimowakaru | 0:60ca8c579d80 | 622 | |
bokunimowakaru | 0:60ca8c579d80 | 623 | while(1)loop(); |
bokunimowakaru | 0:60ca8c579d80 | 624 | } |
bokunimowakaru | 0:60ca8c579d80 | 625 | #endif |