To push buttons (or switches) on an XBee ZB device report the conditions of input ports on it to a Nucleo board, and display them on a LCD.

Dependencies:   TextLCD mbed xbee

Please refer to the following site for the details:

Committer:
bokunimowakaru
Date:
Sun Sep 21 02:31:36 2014 +0000
Revision:
3:d7263b5155bf
App. Example for XBee Lib. Ver. 1.90.

Who changed what in which revision?

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