An XBee ZB Coordinator on a Nucleo Board controls LEDs on the other XBee ZB device.

Dependencies:   mbed xbee

Please refer to the following site for the details:

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?

UserRevisionLine numberNew 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