ZB Coord API for XBee: This XBee library drives Digi XBee ZB Modules in API Operation mode. Most commands include remote communication's are supported by the functions of this library. You can control XBee devices through the API software modules in this, without using any AT commands. Please refer to the following page and some of sample codes:

Dependents:   sample02_sw xbee_aging sample01_led sample04_sens

XBee library 'ZB Coord API'

/media/uploads/bokunimowakaru/nucleoboard.jpg

Nucleo Board + Arduino Wireless Shield + XBee ZB Module + LCD

This XBee liblary is developed for Digi XBee ZB Modules on Nucleo F401RE Micro Computer Board through Arduino Wireless Shield.

Quote:

When you will use this liblary for anything other than Nucleo microcomputer board, please change the 4th line of xbee/xbee.cpp. The above code is only for STM32 Nucleo board.

  • RawSerial _xbee_serial(SERIAL_TX, SERIAL_RX);

/media/uploads/bokunimowakaru/nucleo_xbee.jpg

Hardware Jumper Settings

The hardware soldering jumper setting for the serial ports is necessary for Nucleo board.

  • Set OPEN for SB14(TX)
  • Set SHORT jumper for SB62
  • Set SHORT jumper for SB63

/media/uploads/bokunimowakaru/nucleo_jp.jpg

Examples

Sample Code 01 LED

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

#include "xbee.h"
DigitalOut myled(LED1);
 
int main(){
    // Please set MAC Address to access your remote XBee device.
    byte dev_gpio[]   = {0x00,0x13,0xA2,0x00,0x40,0x30,0xC1,0x6F};
    
    myled = 1;                          // set Higher Level(3.3V) for LED port on NUCLEO
    xbee_init( 0 );                     // Initialize XBee COM Port Settings
    xbee_atnj( 0xFF );                  // Enable Network Join
    myled = 0;                          // set Lower Level(0.0V) for LED port on NUCLEO
    
    while(1){ 
        myled = 1;                      // set Higher Level(3.3V) for LED port on NUCLEO
        xbee_gpo(dev_gpio,11,1);        // set H Level for GPO port 11 on remote xbee
        xbee_gpo(dev_gpio,12,1);        // set H Level for GPO port 12 on remote xbee
        wait(1);
        myled = 0;                      // set Lower Level(0.0V) for LED port on NUCLEO
        xbee_gpo(dev_gpio,11,0);        // set L Level for GPO port 11 on remote xbee
        xbee_gpo(dev_gpio,12,0);        // set L Level for GPO port 12 on remote xbee
        wait(1);
    }
}

http://mbed.org/users/bokunimowakaru/code/sample01_led/

Sample Code 02 Switch

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.

#include "xbee.h"
#include "TextLCD.h"
TextLCD lcd(PA_9, PC_7, PB_5, PB_4, PB_10, PA_8); // rs, e, d4-d7
  
int main(){
    byte data;
    int i;
    XBEE_RESULT xbee_result;
    byte dev_gpio[]   = {0x00,0x13,0xA2,0x00,0x40,0x30,0xC1,0x6F};
    
    lcd.cls(); lcd.printf("Sample 2 SW");
    xbee_init( 0x00 ); 
    lcd.cls(); lcd.printf("ATNJ");
    xbee_atnj( 0xFF ); 
    lcd.cls(); lcd.printf("gpio init");
    xbee_gpio_init(dev_gpio);           // Send GPIO mode settings to remote device.
    lcd.cls(); lcd.printf("DONE");
    
    while(1){
        data = xbee_rx_call( &xbee_result );
        if( xbee_result.MODE == MODE_GPIN){     // When a GPIO packet is recieved,
            lcd.cls();
            for( i=7; i>=0 ; i--) lcd.printf( "%c",(char)( (int)'0' + ((data>>i) & 0x01) ) );
                                        // Display the recieved data.
        }
    }
}

http://mbed.org/users/bokunimowakaru/code/sample02_sw/

Sample Code 04 Sensor

Measured results of an XBee wireless sensor device are displayed a LCD on Nucleo board with an XBee coordinator which is in API mode.

#include <xbee.h>
#include "TextLCD.h"
#define FORCE_INTERVAL  100
TextLCD lcd(PA_9, PC_7, PB_5, PB_4, PB_10, PA_8); // rs, e, d4-d7
byte dev_sens[8];   // IEEE Address
 
int main(){
    int i;
    int dev_en = 0;                 // Device Detection Flag
    XBEE_RESULT xbee_result;            // Stracture for recieved data
    int trig=0;
    float value;

    lcd.cls(); lcd.printf("Sample 4 SENS");
    xbee_init( 0x00 ); 
    lcd.cls(); lcd.printf("Searching:SENSOR");
    if( xbee_atnj(10) ){                // Enable Network Join during 10 seconds.
        lcd.cls(); lcd.printf("Found a device");
        xbee_from( dev_sens );          // Get address of remote device. 
        dev_en = 1;
        xbee_gpio_config( dev_sens, 1 , AIN ); // Analog Input mode to port 1 on remote device
        xbee_gpio_config( dev_sens, 2 , AIN ); // Analog Input mode to port 2 on remote device
    }else{
        lcd.cls(); lcd.printf("Failed:no dev.");
    }
    wait(1);
    lcd.cls();
    
    while(1){
        if(dev_en){ 
            if(trig<=0){
                lcd.locate(12,0); lcd.printf("Trig"); wait(0.1);
                xbee_force(dev_sens);           // Send a request command to remote device.
                trig = FORCE_INTERVAL;
                lcd.locate(12,0); lcd.printf("    ");
            }
        }else{
            lcd.cls(); lcd.printf("Waiting for XBee");
            wait(0.5);
            lcd.cls();
        }
        trig--;
 
        xbee_rx_call( &xbee_result );       // Check a recieved packet.
        switch( xbee_result.MODE ){         // Check the packet type.
            case MODE_RESP:                 // the responce for the request in xbee_force().
            case MODE_GPIN:                 // Report data from remote xbee device.
                if( bytecmp( dev_sens , &(xbee_result.FROM[0]) ,8 ) == 0 && xbee_result.STATUS == STATUS_OK ){
                    value = xbee_sensor_result( &xbee_result, LIGHT);
                    lcd.locate(0,0); lcd.printf( "%.1f Lux   ",value);
                    value = xbee_sensor_result( &xbee_result, TEMP);
                    lcd.locate(0,1); lcd.printf( "%.1f C   ",value);
                }
                break;
            case MODE_IDNT:             // Commissioning Button Report is recieved.
                lcd.cls(); lcd.printf("found a new dev");
                for( i=0;i<8;i++ ) dev_sens[i]=xbee_result.FROM[i];
                                        // Save MAC address of reported device.
                dev_en = 1;             // Flag on (A sensor is detected.)
                trig = 0;
                xbee_gpio_config( dev_sens, 1 , AIN ); // Set Analog Mode to port 1 on remote XBee
                xbee_gpio_config( dev_sens, 2 , AIN ); // Set Analog Mode to port 2 on remote XBee
                lcd.cls();
                break;
            default:
                break;
        }
    }
}

http://mbed.org/users/bokunimowakaru/code/sample04_sens/

Committer:
bokunimowakaru
Date:
Fri Oct 31 10:08:36 2014 +0000
Revision:
8:ddded5d4f96c
Parent:
6:879f455f92c9
Version 1.92

Who changed what in which revision?

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