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:

Committer:
bokunimowakaru
Date:
Sun Sep 21 10:15:44 2014 +0000
Revision:
0:60ca8c579d80
The first release of aging tester for XBee Library 'XBee Coord API' Version 1.90

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bokunimowakaru 0:60ca8c579d80 1 #define ARM_MBED
bokunimowakaru 0:60ca8c579d80 2 //#define ARM_MBED
bokunimowakaru 0:60ca8c579d80 3 /*********************************************************************
bokunimowakaru 0:60ca8c579d80 4 本ソースリストおよびソフトウェアは、ライセンスフリーです。
bokunimowakaru 0:60ca8c579d80 5 利用、編集、再配布等が自由に行えますが、著作権表示の改変は禁止します。
bokunimowakaru 0:60ca8c579d80 6
bokunimowakaru 0:60ca8c579d80 7 Copyright (c) 2010-2014 Wataru KUNINO
bokunimowakaru 0:60ca8c579d80 8 http://www.geocities.jp/bokunimowakaru/
bokunimowakaru 0:60ca8c579d80 9 *********************************************************************/
bokunimowakaru 0:60ca8c579d80 10
bokunimowakaru 0:60ca8c579d80 11 /*********************************************************************
bokunimowakaru 0:60ca8c579d80 12 インポート処理 ※ライブラリ xbee.inoに必要な宣言です
bokunimowakaru 0:60ca8c579d80 13 *********************************************************************/
bokunimowakaru 0:60ca8c579d80 14 #ifndef XBEE_H
bokunimowakaru 0:60ca8c579d80 15 #define XBEE_H
bokunimowakaru 0:60ca8c579d80 16
bokunimowakaru 0:60ca8c579d80 17 #ifndef LCD_TYPE_H
bokunimowakaru 0:60ca8c579d80 18 #define LCD_TYPE_H
bokunimowakaru 0:60ca8c579d80 19 #ifdef ARDUINO
bokunimowakaru 0:60ca8c579d80 20 #if defined(__AVR_ATmega32U4__)
bokunimowakaru 0:60ca8c579d80 21 #define LEONARDO // Arduino LEONARDを使用する場合に自動的に定義されます。
bokunimowakaru 0:60ca8c579d80 22 #endif
bokunimowakaru 0:60ca8c579d80 23 // #define LCD_H // 本ライブラリ動作を液晶表示する場合に定義する
bokunimowakaru 0:60ca8c579d80 24 // #define ADAFRUIT // 使用する液晶が Adafruit LCD Sheild の時に定義する
bokunimowakaru 0:60ca8c579d80 25 #else // H8 or ARM or PC
bokunimowakaru 0:60ca8c579d80 26 #ifndef ARM_MBED // H8 or PC
bokunimowakaru 0:60ca8c579d80 27 #define LCD_H
bokunimowakaru 0:60ca8c579d80 28 #endif
bokunimowakaru 0:60ca8c579d80 29 #endif
bokunimowakaru 0:60ca8c579d80 30 // #define XBEE_WIFI // XBee Wi-Fiを使用するときに定義する
bokunimowakaru 0:60ca8c579d80 31 // #define XBEE_WIFI_DEBUG
bokunimowakaru 0:60ca8c579d80 32 // #define LITE // ライトモード(メモリ節約・機能制限)の時に定義する
bokunimowakaru 0:60ca8c579d80 33 #define EASY_GPI // xbee_gpi関数(リモートGPIO)を使用するときに定義する
bokunimowakaru 0:60ca8c579d80 34 #define EASY_ADC // xbee_adc関数(リモートADC)を使用するときに定義する
bokunimowakaru 0:60ca8c579d80 35 #endif
bokunimowakaru 0:60ca8c579d80 36
bokunimowakaru 0:60ca8c579d80 37 #ifndef XB_IMPORT_H
bokunimowakaru 0:60ca8c579d80 38 #ifdef H3694
bokunimowakaru 0:60ca8c579d80 39 #ifndef __3694_H__
bokunimowakaru 0:60ca8c579d80 40 #include <3694.h>
bokunimowakaru 0:60ca8c579d80 41 #endif
bokunimowakaru 0:60ca8c579d80 42 #ifdef LCD_H
bokunimowakaru 0:60ca8c579d80 43 #ifndef LCD_ROW_1
bokunimowakaru 0:60ca8c579d80 44 #include "lcd_h8.c"
bokunimowakaru 0:60ca8c579d80 45 #endif
bokunimowakaru 0:60ca8c579d80 46 #endif
bokunimowakaru 0:60ca8c579d80 47 /* // lcd_h8ライブラリの関数
bokunimowakaru 0:60ca8c579d80 48 void lcd_delay(unsigned int data);
bokunimowakaru 0:60ca8c579d80 49 void lcd_toggle_E(void);
bokunimowakaru 0:60ca8c579d80 50 void lcd_cls(void);
bokunimowakaru 0:60ca8c579d80 51 void lcd_home(void);
bokunimowakaru 0:60ca8c579d80 52 void lcd_control(unsigned char disonoff, unsigned char curonoff, unsigned char curblink);
bokunimowakaru 0:60ca8c579d80 53 void lcd_goto(unsigned char mesto);
bokunimowakaru 0:60ca8c579d80 54 void lcd_shift(unsigned char data);
bokunimowakaru 0:60ca8c579d80 55 void lcd_putch(char data);
bokunimowakaru 0:60ca8c579d80 56 void lcd_putstr(const char *data);
bokunimowakaru 0:60ca8c579d80 57 void lcd_disp_bin(unsigned char x);
bokunimowakaru 0:60ca8c579d80 58 void lcd_disp_hex(unsigned char i);
bokunimowakaru 0:60ca8c579d80 59 void lcd_disp_1(unsigned int x);
bokunimowakaru 0:60ca8c579d80 60 void lcd_disp_2(unsigned int x);
bokunimowakaru 0:60ca8c579d80 61 void lcd_disp_3(unsigned int x);
bokunimowakaru 0:60ca8c579d80 62 void lcd_disp_5(unsigned int x);
bokunimowakaru 0:60ca8c579d80 63 void lcd_init(void);
bokunimowakaru 0:60ca8c579d80 64 */
bokunimowakaru 0:60ca8c579d80 65 #elif ARDUINO
bokunimowakaru 0:60ca8c579d80 66 // #include <inttypes.h>
bokunimowakaru 0:60ca8c579d80 67 #include "Arduino.h"
bokunimowakaru 0:60ca8c579d80 68 // #include "WProgram.h" // #if ARDUINO < 100
bokunimowakaru 0:60ca8c579d80 69 #ifdef LCD_H
bokunimowakaru 0:60ca8c579d80 70 #ifndef ADAFRUIT
bokunimowakaru 0:60ca8c579d80 71 // 通常のキャラクタLCDの場合
bokunimowakaru 0:60ca8c579d80 72 #include <LiquidCrystal.h>
bokunimowakaru 0:60ca8c579d80 73 #else
bokunimowakaru 0:60ca8c579d80 74 // Adafruit I2C接続LCDの場合(Adafruit_RGBLCDShieldライブラリが必要)
bokunimowakaru 0:60ca8c579d80 75 #include <Wire.h>
bokunimowakaru 0:60ca8c579d80 76 #include <Adafruit_MCP23017.h>
bokunimowakaru 0:60ca8c579d80 77 #include <Adafruit_RGBLCDShield.h>
bokunimowakaru 0:60ca8c579d80 78 #endif
bokunimowakaru 0:60ca8c579d80 79 #endif
bokunimowakaru 0:60ca8c579d80 80 #ifdef XBEE_WIFI
bokunimowakaru 0:60ca8c579d80 81 #include <SPI.h>
bokunimowakaru 0:60ca8c579d80 82 #include <Ethernet.h>
bokunimowakaru 0:60ca8c579d80 83 #include <EthernetUdp.h>
bokunimowakaru 0:60ca8c579d80 84 #endif
bokunimowakaru 0:60ca8c579d80 85 #ifndef LCD_ROW_1
bokunimowakaru 0:60ca8c579d80 86 #define LCD_ROW_1 0x00 //1行目先頭アドレス
bokunimowakaru 0:60ca8c579d80 87 #define LCD_ROW_2 0x40 //2行目先頭アドレス
bokunimowakaru 0:60ca8c579d80 88 #define LCD_ROW_3 0x14 //3行目先頭アドレス
bokunimowakaru 0:60ca8c579d80 89 #define LCD_ROW_4 0x54 //4行目先頭アドレス
bokunimowakaru 0:60ca8c579d80 90 #endif
bokunimowakaru 0:60ca8c579d80 91 #else
bokunimowakaru 0:60ca8c579d80 92 #ifdef ARM_MBED // ARM
bokunimowakaru 0:60ca8c579d80 93 #include "mbed.h"
bokunimowakaru 0:60ca8c579d80 94 #ifdef DEBUG
bokunimowakaru 0:60ca8c579d80 95 #define LCD_H
bokunimowakaru 0:60ca8c579d80 96 #define ERRLOG
bokunimowakaru 0:60ca8c579d80 97 #define LCD_ROW_1 0x00 //1行目先頭アドレス
bokunimowakaru 0:60ca8c579d80 98 #define LCD_ROW_2 0x40 //2行目先頭アドレス
bokunimowakaru 0:60ca8c579d80 99 #define LCD_ROW_3 0x14 //3行目先頭アドレス
bokunimowakaru 0:60ca8c579d80 100 #define LCD_ROW_4 0x54 //4行目先頭アドレス
bokunimowakaru 0:60ca8c579d80 101 #endif
bokunimowakaru 0:60ca8c579d80 102 #else // PC
bokunimowakaru 0:60ca8c579d80 103 #include <stdio.h>
bokunimowakaru 0:60ca8c579d80 104 #include <stdlib.h>
bokunimowakaru 0:60ca8c579d80 105 #include <string.h>
bokunimowakaru 0:60ca8c579d80 106 #include <termios.h>
bokunimowakaru 0:60ca8c579d80 107 #include <sys/signal.h>
bokunimowakaru 0:60ca8c579d80 108 #include <sys/time.h>
bokunimowakaru 0:60ca8c579d80 109 #include <fcntl.h>
bokunimowakaru 0:60ca8c579d80 110 #include <unistd.h>
bokunimowakaru 0:60ca8c579d80 111 #include <arpa/inet.h>
bokunimowakaru 0:60ca8c579d80 112 #ifdef XBEE_WIFI
bokunimowakaru 0:60ca8c579d80 113 #include <sys/types.h>
bokunimowakaru 0:60ca8c579d80 114 #include <sys/socket.h>
bokunimowakaru 0:60ca8c579d80 115 #include <netinet/in.h>
bokunimowakaru 0:60ca8c579d80 116 #include <ctype.h>
bokunimowakaru 0:60ca8c579d80 117 #include <sys/ioctl.h>
bokunimowakaru 0:60ca8c579d80 118 #include <string.h>
bokunimowakaru 0:60ca8c579d80 119 #endif
bokunimowakaru 0:60ca8c579d80 120 #define BAUDRATE B9600
bokunimowakaru 0:60ca8c579d80 121 #ifndef LCD_ROW_1
bokunimowakaru 0:60ca8c579d80 122 #include "lcd_pc.c"
bokunimowakaru 0:60ca8c579d80 123 #endif
bokunimowakaru 0:60ca8c579d80 124 #include <time.h> // クロックタイマー用
bokunimowakaru 0:60ca8c579d80 125 #endif
bokunimowakaru 0:60ca8c579d80 126 #endif
bokunimowakaru 0:60ca8c579d80 127 #define xbee_set_myaddress(adr) xbee_ratd_myaddress(adr)
bokunimowakaru 0:60ca8c579d80 128 #endif
bokunimowakaru 0:60ca8c579d80 129
bokunimowakaru 0:60ca8c579d80 130 /*********************************************************************
bokunimowakaru 0:60ca8c579d80 131 定数の設定 ※ライブラリ xbee.inoに必要な宣言です
bokunimowakaru 0:60ca8c579d80 132 *********************************************************************/
bokunimowakaru 0:60ca8c579d80 133 #ifndef XB_DEFINE_H
bokunimowakaru 0:60ca8c579d80 134 #define XB_DEFINE_H
bokunimowakaru 0:60ca8c579d80 135 #ifndef NAME
bokunimowakaru 0:60ca8c579d80 136 #ifdef LITE // BeeBee Lite by 蘭
bokunimowakaru 0:60ca8c579d80 137 #define NAME "BeeBee Lite"
bokunimowakaru 0:60ca8c579d80 138 #define COPYRIGHT "by Wataru & Ran"
bokunimowakaru 0:60ca8c579d80 139 #else
bokunimowakaru 0:60ca8c579d80 140 #define NAME "ZB Coord"
bokunimowakaru 0:60ca8c579d80 141 #define COPYRIGHT "by Wataru KUNINO"
bokunimowakaru 0:60ca8c579d80 142 #endif
bokunimowakaru 0:60ca8c579d80 143 #endif
bokunimowakaru 0:60ca8c579d80 144
bokunimowakaru 0:60ca8c579d80 145 #ifdef H3694
bokunimowakaru 0:60ca8c579d80 146 #define ERRLOG
bokunimowakaru 0:60ca8c579d80 147 #define LED1_OUT IO.PDR8.BIT.B0 // LED赤の接続ポート(エラー用)
bokunimowakaru 0:60ca8c579d80 148 #define LED2_OUT IO.PDR8.BIT.B1 // LED緑の接続ポート(動作確認用)
bokunimowakaru 0:60ca8c579d80 149 #define LCD_EN IO.PDR8.BIT.B6 // 液晶用電源
bokunimowakaru 0:60ca8c579d80 150 #define BUTN IO.PDR8.BIT.B2 // ボタンの接続ポート
bokunimowakaru 0:60ca8c579d80 151 #define SCI_SIZE 256 // シリアルデータ長(大きすぎるとRAMが不足する)
bokunimowakaru 0:60ca8c579d80 152 #define API_SIZE 128 // 受信用APIデータ長(32~255)
bokunimowakaru 0:60ca8c579d80 153 #define API_TXSIZE 64 // 送信用APIデータ長(32~255)兼シリアル送信最大長
bokunimowakaru 0:60ca8c579d80 154 #define CALL_SIZE 32 // xbee_rx_call用戻りデータ(10~256)
bokunimowakaru 0:60ca8c579d80 155 #define XB_AT_SIZE 32 // ATコマンドの最大長
bokunimowakaru 0:60ca8c579d80 156 #elif ARDUINO
bokunimowakaru 0:60ca8c579d80 157 // #define LED1_OUT 15 // 赤色LED(エラー用)用デジタルポート(15=analog 1)
bokunimowakaru 0:60ca8c579d80 158 // #define LED2_OUT 16 // 緑色LED(動作確認用)用デジタルポート(16=analog 2)
bokunimowakaru 0:60ca8c579d80 159 // #define LCD_EN 6 // 液晶用電源デジタルポート
bokunimowakaru 0:60ca8c579d80 160 // #define BUTN 14 // ボタンの接続ポート(14 = analog 0)
bokunimowakaru 0:60ca8c579d80 161 #ifdef LITE
bokunimowakaru 0:60ca8c579d80 162 #define API_SIZE 48 // 受信用APIデータ長(32~255)
bokunimowakaru 0:60ca8c579d80 163 #define API_TXSIZE 34 // 送信用APIデータ長(32~255)
bokunimowakaru 0:60ca8c579d80 164 #define CALL_SIZE 16 // xbee_rx_call用戻りデータ(10~256)
bokunimowakaru 0:60ca8c579d80 165 #define XB_AT_SIZE 16 // ATコマンドの最大長
bokunimowakaru 0:60ca8c579d80 166 #else
bokunimowakaru 0:60ca8c579d80 167 #define CACHE_RES 2 // 応答時のキャッシュ数(無効にするには定義を消す)
bokunimowakaru 0:60ca8c579d80 168 #define API_SIZE 64 // 受信用APIデータ長(32~255)
bokunimowakaru 0:60ca8c579d80 169 #define API_TXSIZE 64 // 送信用APIデータ長(32~255)
bokunimowakaru 0:60ca8c579d80 170 #define CALL_SIZE 32 // xbee_rx_call用戻りデータ(10~256)
bokunimowakaru 0:60ca8c579d80 171 #define XB_AT_SIZE 32 // ATコマンドの最大長
bokunimowakaru 0:60ca8c579d80 172 #endif
bokunimowakaru 0:60ca8c579d80 173 #define LIGHT 1
bokunimowakaru 0:60ca8c579d80 174 #define TEMP 2
bokunimowakaru 0:60ca8c579d80 175 #define HUMIDITY 3
bokunimowakaru 0:60ca8c579d80 176 #define WATT 4
bokunimowakaru 0:60ca8c579d80 177 #define BATT 5
bokunimowakaru 0:60ca8c579d80 178 #define DISABLE 0
bokunimowakaru 0:60ca8c579d80 179 #define VENDER 1
bokunimowakaru 0:60ca8c579d80 180 #define AIN 2
bokunimowakaru 0:60ca8c579d80 181 #define DIN 3
bokunimowakaru 0:60ca8c579d80 182 #define DOUT_L 4
bokunimowakaru 0:60ca8c579d80 183 #define DOUT_H 5
bokunimowakaru 0:60ca8c579d80 184 #else
bokunimowakaru 0:60ca8c579d80 185 #ifdef ARM_MBED // ARM <条件は調整していない。ほぼArduinoのまま>
bokunimowakaru 0:60ca8c579d80 186 #define CACHE_RES 3 // 応答時のキャッシュ数(無効にするには定義を消す)
bokunimowakaru 0:60ca8c579d80 187 #define API_SIZE 64 // 受信用APIデータ長(32~255)
bokunimowakaru 0:60ca8c579d80 188 #define API_TXSIZE 64 // 送信用APIデータ長(32~255)
bokunimowakaru 0:60ca8c579d80 189 #define CALL_SIZE 32 // xbee_rx_call用戻りデータ(10~256)
bokunimowakaru 0:60ca8c579d80 190 #define XB_AT_SIZE 32 // ATコマンドの最大長
bokunimowakaru 0:60ca8c579d80 191 #define delay(ms) wait_millisec(ms) // 関数名の複製
bokunimowakaru 0:60ca8c579d80 192 #define LIGHT 1
bokunimowakaru 0:60ca8c579d80 193 #define TEMP 2
bokunimowakaru 0:60ca8c579d80 194 #define HUMIDITY 3
bokunimowakaru 0:60ca8c579d80 195 #define WATT 4
bokunimowakaru 0:60ca8c579d80 196 #define BATT 5
bokunimowakaru 0:60ca8c579d80 197 #define DISABLE 0
bokunimowakaru 0:60ca8c579d80 198 #define VENDER 1
bokunimowakaru 0:60ca8c579d80 199 #define AIN 2
bokunimowakaru 0:60ca8c579d80 200 #define DIN 3
bokunimowakaru 0:60ca8c579d80 201 #define DOUT_L 4
bokunimowakaru 0:60ca8c579d80 202 #define DOUT_H 5
bokunimowakaru 0:60ca8c579d80 203 #else // PC
bokunimowakaru 0:60ca8c579d80 204 // #define DEBUG // デバッグモード
bokunimowakaru 0:60ca8c579d80 205 // #define DEBUG_TX // 送信パケットの表示
bokunimowakaru 0:60ca8c579d80 206 // #define DEBUG_RX // 受信パケットの表示
bokunimowakaru 0:60ca8c579d80 207 #define ERRLOG // エラー時にログを出力
bokunimowakaru 0:60ca8c579d80 208 // #define XBEE_ERROR_TIME // エラー時のログに日時を付与
bokunimowakaru 0:60ca8c579d80 209 #ifdef LITE
bokunimowakaru 0:60ca8c579d80 210 #define API_SIZE 48 // 受信用APIデータ長(32~255)
bokunimowakaru 0:60ca8c579d80 211 #define API_TXSIZE 34 // 送信用APIデータ長(32~255)
bokunimowakaru 0:60ca8c579d80 212 #define CALL_SIZE 16 // xbee_rx_call用戻りデータ(10~256)
bokunimowakaru 0:60ca8c579d80 213 #define XB_AT_SIZE 16 // ATコマンドの最大長
bokunimowakaru 0:60ca8c579d80 214 #else
bokunimowakaru 0:60ca8c579d80 215 #define CACHE_RES 5 // 応答時のキャッシュ数(無効にするには定義を消す)
bokunimowakaru 0:60ca8c579d80 216 #define API_SIZE 128 // 受信用APIデータ長(32~255)
bokunimowakaru 0:60ca8c579d80 217 #define API_TXSIZE 64 // 送信用APIデータ長(32~255)
bokunimowakaru 0:60ca8c579d80 218 #define CALL_SIZE 64 // xbee_rx_call用戻りデータ(10~256)
bokunimowakaru 0:60ca8c579d80 219 #define XB_AT_SIZE 32 // ATコマンドの最大長
bokunimowakaru 0:60ca8c579d80 220 #define delay(ms) wait_millisec(ms) // 関数名の複製
bokunimowakaru 0:60ca8c579d80 221 #endif
bokunimowakaru 0:60ca8c579d80 222 #endif
bokunimowakaru 0:60ca8c579d80 223 #endif
bokunimowakaru 0:60ca8c579d80 224 #define TIME_DEL 3 // デリミタ検出のタイムアウト時間(秒)
bokunimowakaru 0:60ca8c579d80 225 #define MODE_AUTO 0x00 // 自動受信モード
bokunimowakaru 0:60ca8c579d80 226 #define MODE_GPIN 0x92 // GPI data を受信するモード
bokunimowakaru 0:60ca8c579d80 227 #define MODE_UART 0x90 // UART data を受信するモード
bokunimowakaru 0:60ca8c579d80 228 #define MODE_UAR2 0x91 // UART data を受信するモード2(AO=1)
bokunimowakaru 0:60ca8c579d80 229 #define MODE_SENS 0x94 // XB Sensorを受信するモード(1wire専用→通常のSensorはATISを使用)
bokunimowakaru 0:60ca8c579d80 230 #define MODE_IDNT 0x95 // Node Identifyを受信するモード
bokunimowakaru 0:60ca8c579d80 231 #define MODE_RES 0x88 // ローカルATコマンドの結果を受信
bokunimowakaru 0:60ca8c579d80 232 #define MODE_RESP 0x97 // リモートATコマンドの結果を受信(仕様書はATNDで説明ATISもこれ)
bokunimowakaru 0:60ca8c579d80 233 #define MODE_MODM 0x8A // Modem Statusを受信
bokunimowakaru 0:60ca8c579d80 234 #define MODE_TXST 0x8B // UART Transmit Status を受信
bokunimowakaru 0:60ca8c579d80 235 #define MODE_BATT 0xE1 // (独自定義)バッテリステータス RAT%Vの応答時
bokunimowakaru 0:60ca8c579d80 236 // XBeeのFrame Typeに準拠する。
bokunimowakaru 0:60ca8c579d80 237 // 注意:モードを増やしたときはxbee_from_acumとxbee_rx_call内の対応を追加すること
bokunimowakaru 0:60ca8c579d80 238 // 独自定義の時はxbee_rx_call内のみ。
bokunimowakaru 0:60ca8c579d80 239 // MODE値はenum定義にしない。
bokunimowakaru 0:60ca8c579d80 240
bokunimowakaru 0:60ca8c579d80 241 #define STATUS_OK 0x00 // ATコマンドの結果がOK
bokunimowakaru 0:60ca8c579d80 242 #define STATUS_ERR 0x01 // ATコマンドの結果がERROR
bokunimowakaru 0:60ca8c579d80 243 #define STATUS_ERR_AT 0x02 // 指定されたATコマンドに誤りがある
bokunimowakaru 0:60ca8c579d80 244 #define STATUS_ERR_PARM 0x03 // 指定されたパラメータに誤りがある
bokunimowakaru 0:60ca8c579d80 245 #define STATUS_ERR_AIR 0x04 // リモートATコマンドの送信の失敗(相手が応答しない)
bokunimowakaru 0:60ca8c579d80 246
bokunimowakaru 0:60ca8c579d80 247 #define MODM_RESET 0x01 // ローカルのXBeeがリセットした
bokunimowakaru 0:60ca8c579d80 248 #define MODM_WATCHDOG 0x02 // ローカルのXBeeがWatch dogタイマーによってリセットした
bokunimowakaru 0:60ca8c579d80 249 #define MODM_JOINED 0x03 // (RouterまたはEnd Deviceで使用しているときに)ネットワークJoinした
bokunimowakaru 0:60ca8c579d80 250 #define MODM_LEFT 0x04 // ネットワークからdis_assosiateした
bokunimowakaru 0:60ca8c579d80 251 #define MODM_STARTED 0x06 // (coordinatorで使用しているときに)Coordinatorを開始した
bokunimowakaru 0:60ca8c579d80 252
bokunimowakaru 0:60ca8c579d80 253 #define DEV_TYPE_XBEE 0x00 // XBeeモジュール
bokunimowakaru 0:60ca8c579d80 254 #define DEV_TYPE_RS232 0x05 // RS-232Cアダプタ
bokunimowakaru 0:60ca8c579d80 255 #define DEV_TYPE_SENS 0x07 // Sensor (1wire専用)
bokunimowakaru 0:60ca8c579d80 256 #define DEV_TYPE_WALL 0x08 // Wall Router
bokunimowakaru 0:60ca8c579d80 257 #define DEV_TYPE_SEN_LT 0x0E // Sensor (照度・温度)
bokunimowakaru 0:60ca8c579d80 258 #define DEV_TYPE_SEN_LTH 0x0D // Sensor (照度・温度・湿度)
bokunimowakaru 0:60ca8c579d80 259 #define DEV_TYPE_PLUG 0x0F // Smart Plug
bokunimowakaru 0:60ca8c579d80 260
bokunimowakaru 0:60ca8c579d80 261 #define ZB_TYPE_COORD 0x21 // ZigBee Coordinator
bokunimowakaru 0:60ca8c579d80 262 #define ZB_TYPE_ROUTER 0x23 // ZigBee Router
bokunimowakaru 0:60ca8c579d80 263 #define ZB_TYPE_ENDDEV 0x29 // ZigBee End Device
bokunimowakaru 0:60ca8c579d80 264 #define XB_TYPE_NULL 0x00 // XBee Wi-Fi バージョン未取得
bokunimowakaru 0:60ca8c579d80 265 #define XB_TYPE_WIFI10 0x10 // XBee Wi-Fi Ver. 10xx
bokunimowakaru 0:60ca8c579d80 266 #define XB_TYPE_WIFI20 0x20 // XBee Wi-Fi Ver. 20xx
bokunimowakaru 0:60ca8c579d80 267
bokunimowakaru 0:60ca8c579d80 268 #define NET_ADR FFFE // ネットワークアドレス
bokunimowakaru 0:60ca8c579d80 269 #endif
bokunimowakaru 0:60ca8c579d80 270
bokunimowakaru 0:60ca8c579d80 271
bokunimowakaru 0:60ca8c579d80 272 /*********************************************************************
bokunimowakaru 0:60ca8c579d80 273 型の定義
bokunimowakaru 0:60ca8c579d80 274 *********************************************************************/
bokunimowakaru 0:60ca8c579d80 275
bokunimowakaru 0:60ca8c579d80 276 #ifdef ARDUINO
bokunimowakaru 0:60ca8c579d80 277 typedef struct{
bokunimowakaru 0:60ca8c579d80 278 public:
bokunimowakaru 0:60ca8c579d80 279 byte MODE; // 受信モード(Frame Type)
bokunimowakaru 0:60ca8c579d80 280 byte FROM[8]; // 送信元IEEEアドレス
bokunimowakaru 0:60ca8c579d80 281 byte AT[2]; // ATコマンド
bokunimowakaru 0:60ca8c579d80 282 byte ID; // 応答パケットID(Frame ID)
bokunimowakaru 0:60ca8c579d80 283 byte STATUS; // 応答結果(0:OK 1:ERROR)/AT結果/UART状態
bokunimowakaru 0:60ca8c579d80 284 union { // GPIOデータ
bokunimowakaru 0:60ca8c579d80 285 byte BYTE[2];
bokunimowakaru 0:60ca8c579d80 286 struct { // バイト毎に下位ビットから代入(リトルエンディアン)
bokunimowakaru 0:60ca8c579d80 287 byte D0 :1; byte D1 :1; byte D2 :1; byte D3 :1; // BYTE[1]
bokunimowakaru 0:60ca8c579d80 288 byte D4 :1; byte D5 :1; byte D6 :1; byte D7 :1;
bokunimowakaru 0:60ca8c579d80 289 byte :1; byte :1; byte D10:1; byte D11:1; // BYTE[0]
bokunimowakaru 0:60ca8c579d80 290 byte D12:1; byte :1; byte :1; byte :1;
bokunimowakaru 0:60ca8c579d80 291 } PORT;
bokunimowakaru 0:60ca8c579d80 292 } GPI;
bokunimowakaru 0:60ca8c579d80 293 // byte GPI[2]; // GPIOデータ
bokunimowakaru 0:60ca8c579d80 294 unsigned int ADCIN[4]; // ADCデータ
bokunimowakaru 0:60ca8c579d80 295 byte DATA[CALL_SIZE]; // ペイロードデータ/ZCLヘッダ+受信データ
bokunimowakaru 0:60ca8c579d80 296 } XBEE_RESULT; // 構造体の型名
bokunimowakaru 0:60ca8c579d80 297 #endif
bokunimowakaru 0:60ca8c579d80 298 #ifdef ARM_MBED
bokunimowakaru 0:60ca8c579d80 299 typedef unsigned char byte;
bokunimowakaru 0:60ca8c579d80 300 typedef struct{
bokunimowakaru 0:60ca8c579d80 301 public:
bokunimowakaru 0:60ca8c579d80 302 byte MODE; // 受信モード(Frame Type)
bokunimowakaru 0:60ca8c579d80 303 byte FROM[8]; // 送信元IEEEアドレス
bokunimowakaru 0:60ca8c579d80 304 byte AT[2]; // ATコマンド
bokunimowakaru 0:60ca8c579d80 305 byte ID; // 応答パケットID(Frame ID)
bokunimowakaru 0:60ca8c579d80 306 byte STATUS; // 応答結果(0:OK 1:ERROR)/AT結果/UART状態
bokunimowakaru 0:60ca8c579d80 307 union { // GPIOデータ
bokunimowakaru 0:60ca8c579d80 308 byte BYTE[2];
bokunimowakaru 0:60ca8c579d80 309 struct { // バイト毎に下位ビットから代入(リトルエンディアン)
bokunimowakaru 0:60ca8c579d80 310 byte D0 :1; byte D1 :1; byte D2 :1; byte D3 :1; // BYTE[1]
bokunimowakaru 0:60ca8c579d80 311 byte D4 :1; byte D5 :1; byte D6 :1; byte D7 :1;
bokunimowakaru 0:60ca8c579d80 312 byte :1; byte :1; byte D10:1; byte D11:1; // BYTE[0]
bokunimowakaru 0:60ca8c579d80 313 byte D12:1; byte :1; byte :1; byte :1;
bokunimowakaru 0:60ca8c579d80 314 } PORT;
bokunimowakaru 0:60ca8c579d80 315 } GPI;
bokunimowakaru 0:60ca8c579d80 316 // byte GPI[2]; // GPIOデータ
bokunimowakaru 0:60ca8c579d80 317 unsigned int ADCIN[4]; // ADCデータ
bokunimowakaru 0:60ca8c579d80 318 byte DATA[CALL_SIZE]; // 受信データ
bokunimowakaru 0:60ca8c579d80 319 } XBEE_RESULT; // 構造体の型名
bokunimowakaru 0:60ca8c579d80 320 #endif
bokunimowakaru 0:60ca8c579d80 321
bokunimowakaru 0:60ca8c579d80 322 /*********************************************************************
bokunimowakaru 0:60ca8c579d80 323 アプリ向け hardware 提供関数
bokunimowakaru 0:60ca8c579d80 324 *********************************************************************/
bokunimowakaru 0:60ca8c579d80 325
bokunimowakaru 0:60ca8c579d80 326 /* GPIO */
bokunimowakaru 0:60ca8c579d80 327 #ifndef ARDUINO
bokunimowakaru 0:60ca8c579d80 328 #ifndef ARM_MBED
bokunimowakaru 0:60ca8c579d80 329 byte led_red( const byte in );
bokunimowakaru 0:60ca8c579d80 330 byte led_green( const byte in );
bokunimowakaru 0:60ca8c579d80 331 byte button( void );
bokunimowakaru 0:60ca8c579d80 332 #endif
bokunimowakaru 0:60ca8c579d80 333 #endif
bokunimowakaru 0:60ca8c579d80 334
bokunimowakaru 0:60ca8c579d80 335 /* Timer */
bokunimowakaru 0:60ca8c579d80 336 #ifndef ARDUINO
bokunimowakaru 0:60ca8c579d80 337 #ifndef ARM_MBED
bokunimowakaru 0:60ca8c579d80 338 void wait_millisec( const int ms );
bokunimowakaru 0:60ca8c579d80 339 #endif
bokunimowakaru 0:60ca8c579d80 340 #endif
bokunimowakaru 0:60ca8c579d80 341
bokunimowakaru 0:60ca8c579d80 342 /* misc */
bokunimowakaru 0:60ca8c579d80 343 byte bytecmp(byte *s1, const byte *s2, byte size);
bokunimowakaru 0:60ca8c579d80 344 #ifndef ARDUINO
bokunimowakaru 0:60ca8c579d80 345 #ifndef ARM_MBED
bokunimowakaru 0:60ca8c579d80 346 void strcopy(char *s1, const char *s2);
bokunimowakaru 0:60ca8c579d80 347 void bytecpy(byte *s1, const byte *s2, byte size);
bokunimowakaru 0:60ca8c579d80 348 #endif
bokunimowakaru 0:60ca8c579d80 349 #endif
bokunimowakaru 0:60ca8c579d80 350
bokunimowakaru 0:60ca8c579d80 351 /* LCD */
bokunimowakaru 0:60ca8c579d80 352 #ifdef LCD_H
bokunimowakaru 0:60ca8c579d80 353 void lcd_cls(void);
bokunimowakaru 0:60ca8c579d80 354 void lcd_home(void);
bokunimowakaru 0:60ca8c579d80 355 void lcd_control(byte disonoff, byte curonoff, byte curblink);
bokunimowakaru 0:60ca8c579d80 356 void lcd_goto(const byte mesto);
bokunimowakaru 0:60ca8c579d80 357 void lcd_shift(const byte data);
bokunimowakaru 0:60ca8c579d80 358 void lcd_putch(const char data);
bokunimowakaru 0:60ca8c579d80 359 void lcd_putstr(const char *data);
bokunimowakaru 0:60ca8c579d80 360 void lcd_disp_bin(const byte x);
bokunimowakaru 0:60ca8c579d80 361 void lcd_disp_hex(const byte i);
bokunimowakaru 0:60ca8c579d80 362 void lcd_disp_1(const unsigned int x);
bokunimowakaru 0:60ca8c579d80 363 void lcd_disp_2(unsigned int x);
bokunimowakaru 0:60ca8c579d80 364 void lcd_disp_3(unsigned int x);
bokunimowakaru 0:60ca8c579d80 365 void lcd_disp_5(unsigned int x);
bokunimowakaru 0:60ca8c579d80 366 void lcd_init(void);
bokunimowakaru 0:60ca8c579d80 367 void lcd_disp( const char *s );
bokunimowakaru 0:60ca8c579d80 368 #endif
bokunimowakaru 0:60ca8c579d80 369
bokunimowakaru 0:60ca8c579d80 370 /*********************************************************************
bokunimowakaru 0:60ca8c579d80 371 private xbee ドライバ関数
bokunimowakaru 0:60ca8c579d80 372 *********************************************************************/
bokunimowakaru 0:60ca8c579d80 373
bokunimowakaru 0:60ca8c579d80 374 /* XBeeドライバ関数 */
bokunimowakaru 0:60ca8c579d80 375 /* byte xbee_at_tx(const char *at, const byte *value, const byte value_len);
bokunimowakaru 0:60ca8c579d80 376 byte xbee_at_rx(byte *data);
bokunimowakaru 0:60ca8c579d80 377 byte xbee_from_acum( const byte *data );
bokunimowakaru 0:60ca8c579d80 378 byte xbee_gpi_acum( byte *data );
bokunimowakaru 0:60ca8c579d80 379 byte xbee_uart_acum( byte *data );
bokunimowakaru 0:60ca8c579d80 380 #ifdef EASY
bokunimowakaru 0:60ca8c579d80 381 float xbee_sensor_acum( const byte *data, const enum xbee_sensor_type type );
bokunimowakaru 0:60ca8c579d80 382 #endif
bokunimowakaru 0:60ca8c579d80 383 byte xbee_tx_rx(const char *at, byte *data, byte len);
bokunimowakaru 0:60ca8c579d80 384 void xbee_reset( void );
bokunimowakaru 0:60ca8c579d80 385 */
bokunimowakaru 0:60ca8c579d80 386
bokunimowakaru 0:60ca8c579d80 387 /* XBee用 UART出力API */
bokunimowakaru 0:60ca8c579d80 388 #ifndef LITE
bokunimowakaru 0:60ca8c579d80 389 byte xbee_putch( const char c );
bokunimowakaru 0:60ca8c579d80 390 #endif
bokunimowakaru 0:60ca8c579d80 391 byte xbee_putstr( const char *s );
bokunimowakaru 0:60ca8c579d80 392 #ifndef LITE
bokunimowakaru 0:60ca8c579d80 393 void xbee_disp_hex( const unsigned char i );
bokunimowakaru 0:60ca8c579d80 394 void xbee_disp_1( const unsigned int x );
bokunimowakaru 0:60ca8c579d80 395 void xbee_disp_2( unsigned int x );
bokunimowakaru 0:60ca8c579d80 396 void xbee_disp_3(unsigned int x);
bokunimowakaru 0:60ca8c579d80 397 void xbee_disp_5(unsigned int x);
bokunimowakaru 0:60ca8c579d80 398 #endif
bokunimowakaru 0:60ca8c579d80 399 void xbee_log( byte level, const char *err , const byte x );
bokunimowakaru 0:60ca8c579d80 400
bokunimowakaru 0:60ca8c579d80 401 /*********************************************************************
bokunimowakaru 0:60ca8c579d80 402 アプリ向け xbee 提供関数
bokunimowakaru 0:60ca8c579d80 403 *********************************************************************/
bokunimowakaru 0:60ca8c579d80 404
bokunimowakaru 0:60ca8c579d80 405 byte xbee_myaddress( byte *address );
bokunimowakaru 0:60ca8c579d80 406 void xbee_address( const byte *address );
bokunimowakaru 0:60ca8c579d80 407 byte xbee_atd( const byte *address );
bokunimowakaru 0:60ca8c579d80 408 byte xbee_ratd(const byte *dev_address, const byte *set_address );
bokunimowakaru 0:60ca8c579d80 409 byte xbee_ratd_myaddress(const byte *address);
bokunimowakaru 0:60ca8c579d80 410 #define xbee_set_myaddress(adr) xbee_ratd_myaddress(adr)
bokunimowakaru 0:60ca8c579d80 411 void xbee_from( byte *address );
bokunimowakaru 0:60ca8c579d80 412 byte xbee_at(const char *in);
bokunimowakaru 0:60ca8c579d80 413 byte xbee_rat(const byte *address, const char *in);
bokunimowakaru 0:60ca8c579d80 414 byte xbee_rat_force(const byte *address, const char *in);
bokunimowakaru 0:60ca8c579d80 415 byte xbee_uart(const byte *address, const char *in);
bokunimowakaru 0:60ca8c579d80 416 byte xbee_bytes(const byte *address, const byte *in, byte len);
bokunimowakaru 0:60ca8c579d80 417 byte xbee_atvr( void );
bokunimowakaru 0:60ca8c579d80 418 byte xbee_atai( void );
bokunimowakaru 0:60ca8c579d80 419 byte xbee_atcb( byte cb );
bokunimowakaru 0:60ca8c579d80 420 unsigned short xbee_atop(byte *pan_id);
bokunimowakaru 0:60ca8c579d80 421 byte xbee_atee_on(const char *key );
bokunimowakaru 0:60ca8c579d80 422 byte xbee_atee_off( void );
bokunimowakaru 0:60ca8c579d80 423 byte xbee_atnc( void );
bokunimowakaru 0:60ca8c579d80 424 byte xbee_ratnc( const byte *address );
bokunimowakaru 0:60ca8c579d80 425 byte xbee_atnj( const byte timeout );
bokunimowakaru 0:60ca8c579d80 426 byte xbee_ratnj( const byte *address, const byte timeout );
bokunimowakaru 0:60ca8c579d80 427 byte xbee_ping( const byte *address );
bokunimowakaru 0:60ca8c579d80 428 int xbee_batt(const byte *address );
bokunimowakaru 0:60ca8c579d80 429 byte xbee_batt_force(const byte *address );
bokunimowakaru 0:60ca8c579d80 430 #ifdef ARDUINO // Arduino用
bokunimowakaru 0:60ca8c579d80 431 byte xbee_gpio_config(const byte *address, const byte port, const byte type );
bokunimowakaru 0:60ca8c579d80 432 #else
bokunimowakaru 0:60ca8c579d80 433 #ifdef ARM_MBED
bokunimowakaru 0:60ca8c579d80 434 byte xbee_gpio_config(const byte *address, const byte port, const byte type );
bokunimowakaru 0:60ca8c579d80 435 #else // PC/H8用
bokunimowakaru 0:60ca8c579d80 436 byte xbee_gpio_config(const byte *address, const byte port, const enum xbee_port_type type );
bokunimowakaru 0:60ca8c579d80 437 #endif
bokunimowakaru 0:60ca8c579d80 438 #endif
bokunimowakaru 0:60ca8c579d80 439 byte xbee_gpio_init( const byte *address );
bokunimowakaru 0:60ca8c579d80 440 byte xbee_gpo( const byte *address, const byte port,const byte out );
bokunimowakaru 0:60ca8c579d80 441 #ifdef EASY_GPI
bokunimowakaru 0:60ca8c579d80 442 byte xbee_gpi(const byte *address, const byte port);
bokunimowakaru 0:60ca8c579d80 443 #endif
bokunimowakaru 0:60ca8c579d80 444 #ifdef EASY_ADC
bokunimowakaru 0:60ca8c579d80 445 unsigned int xbee_adc(const byte *address, const byte port);
bokunimowakaru 0:60ca8c579d80 446 #endif
bokunimowakaru 0:60ca8c579d80 447 byte xbee_force( const byte *address );
bokunimowakaru 0:60ca8c579d80 448 #ifdef ARDUINO // Arduino用
bokunimowakaru 0:60ca8c579d80 449 float xbee_sensor_result( XBEE_RESULT *xbee_result, const byte type);
bokunimowakaru 0:60ca8c579d80 450 #else
bokunimowakaru 0:60ca8c579d80 451 #ifdef ARM_MBED
bokunimowakaru 0:60ca8c579d80 452 float xbee_sensor_result( XBEE_RESULT *xbee_result, const byte type);
bokunimowakaru 0:60ca8c579d80 453 #else // PC/H8用
bokunimowakaru 0:60ca8c579d80 454 float xbee_sensor_result( XBEE_RESULT *xbee_result, const enum xbee_sensor_type type );
bokunimowakaru 0:60ca8c579d80 455 #ifdef EASY_SENSOR
bokunimowakaru 0:60ca8c579d80 456 xbee_sensor(const byte *address, const enum xbee_sensor_type type );
bokunimowakaru 0:60ca8c579d80 457 #endif
bokunimowakaru 0:60ca8c579d80 458 #endif
bokunimowakaru 0:60ca8c579d80 459 #endif
bokunimowakaru 0:60ca8c579d80 460 byte xbee_rx_call( XBEE_RESULT *xbee_result );
bokunimowakaru 0:60ca8c579d80 461 void xbee_clear_cache(void);
bokunimowakaru 0:60ca8c579d80 462 byte xbee_init( const byte port );
bokunimowakaru 0:60ca8c579d80 463 byte xbee_reset( void );
bokunimowakaru 0:60ca8c579d80 464 byte xbee_end_device(const byte *address, byte sp, byte ir, const byte pin);
bokunimowakaru 0:60ca8c579d80 465 #ifndef LITE
bokunimowakaru 0:60ca8c579d80 466 byte xbee_i2c_init(const byte *address);
bokunimowakaru 0:60ca8c579d80 467 byte xbee_i2c_read(const byte *address, byte adr, byte *rx, byte len);
bokunimowakaru 0:60ca8c579d80 468 byte xbee_i2c_write(const byte *address, byte adr, byte *rx, byte len);
bokunimowakaru 0:60ca8c579d80 469 #endif
bokunimowakaru 0:60ca8c579d80 470 byte xbee_delay(unsigned int ms);
bokunimowakaru 0:60ca8c579d80 471 #endif // XBEE_H
bokunimowakaru 0:60ca8c579d80 472