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 Jun 22 06:36:29 2014 +0000
Revision:
1:4778e27365f8
For version 1.88.

Who changed what in which revision?

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