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