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 Jun 22 06:13:19 2014 +0000
Revision:
0:56f4884d346b
Child:
1:67097b312238
????? Ver 1.88?????
;

Who changed what in which revision?

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