Interplan IM920 library, 920MHz module

Dependents:   IM920_sample IM920_SDlog IM920_sample IM920_sample3 ... more

IM920 ライブラリ

データモード、低速、長距離 の設定で通信するライブラリです。

920MHz無線モジュール

http://www.interplan.co.jp/images/contents/solution/im920.png IM920 (インタープラン製)

  • mbedとモジュールとは、シリアル(TX,RX)、BUSY、RESET端子を接続します。
  • モジュールはあらかじめ、コマンドでノード番号などを設定しておきます。

NECの920MHz近距離無線モジュールもおすすめ

Committer:
okini3939
Date:
Fri Dec 26 15:35:20 2014 +0000
Revision:
0:d3ab05ed8142
Child:
1:81b2fd407327
1st tiny build.;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
okini3939 0:d3ab05ed8142 1 #ifndef _IM920_h_
okini3939 0:d3ab05ed8142 2 #define _IM920_h_
okini3939 0:d3ab05ed8142 3
okini3939 0:d3ab05ed8142 4 #include "IM920_conf.h"
okini3939 0:d3ab05ed8142 5
okini3939 0:d3ab05ed8142 6 #include "mbed.h"
okini3939 0:d3ab05ed8142 7 #include "CBuffer.h"
okini3939 0:d3ab05ed8142 8 #include <ctype.h>
okini3939 0:d3ab05ed8142 9 #include <stdlib.h>
okini3939 0:d3ab05ed8142 10 #include <string.h>
okini3939 0:d3ab05ed8142 11
okini3939 0:d3ab05ed8142 12 //Debug is disabled by default
okini3939 0:d3ab05ed8142 13 #if defined(DEBUG) and (!defined(TARGET_LPC11U24))
okini3939 0:d3ab05ed8142 14 #define DBG(x, ...) std::printf("[DBG]" x "\r\n", ##__VA_ARGS__);
okini3939 0:d3ab05ed8142 15 #define WARN(x, ...) std::printf("[WARN]" x "\r\n", ##__VA_ARGS__);
okini3939 0:d3ab05ed8142 16 #define ERR(x, ...) std::printf("[ERR]" x "\r\n", ##__VA_ARGS__);
okini3939 0:d3ab05ed8142 17 #define INFO(x, ...) std::printf("[INFO]" x "\r\n", ##__VA_ARGS__);
okini3939 0:d3ab05ed8142 18 #else
okini3939 0:d3ab05ed8142 19 #define DBG(x, ...)
okini3939 0:d3ab05ed8142 20 #define WARN(x, ...)
okini3939 0:d3ab05ed8142 21 #define ERR(x, ...)
okini3939 0:d3ab05ed8142 22 #define INFO(x, ...)
okini3939 0:d3ab05ed8142 23 #endif
okini3939 0:d3ab05ed8142 24
okini3939 0:d3ab05ed8142 25 class IM920 {
okini3939 0:d3ab05ed8142 26 public:
okini3939 0:d3ab05ed8142 27 enum Response {
okini3939 0:d3ab05ed8142 28 RES_NULL,
okini3939 0:d3ab05ed8142 29 RES_RDID,
okini3939 0:d3ab05ed8142 30 RES_RDNN,
okini3939 0:d3ab05ed8142 31 RES_RDRS,
okini3939 0:d3ab05ed8142 32 };
okini3939 0:d3ab05ed8142 33
okini3939 0:d3ab05ed8142 34 enum Mode {
okini3939 0:d3ab05ed8142 35 MODE_COMMAND,
okini3939 0:d3ab05ed8142 36 MODE_DATA_RX,
okini3939 0:d3ab05ed8142 37 };
okini3939 0:d3ab05ed8142 38
okini3939 0:d3ab05ed8142 39 enum Status {
okini3939 0:d3ab05ed8142 40 STAT_NONE,
okini3939 0:d3ab05ed8142 41 STAT_SLEEP,
okini3939 0:d3ab05ed8142 42 };
okini3939 0:d3ab05ed8142 43
okini3939 0:d3ab05ed8142 44 IM920 (PinName tx, PinName rx, PinName busy = NC, PinName reset = NC, int baud = IM920_BAUD);
okini3939 0:d3ab05ed8142 45
okini3939 0:d3ab05ed8142 46 int init (int node, void(*func)() = NULL);
okini3939 0:d3ab05ed8142 47
okini3939 0:d3ab05ed8142 48 void poll ();
okini3939 0:d3ab05ed8142 49
okini3939 0:d3ab05ed8142 50 int send (char *buf, int len);
okini3939 0:d3ab05ed8142 51 int recv (char *buf, int len);
okini3939 0:d3ab05ed8142 52
okini3939 0:d3ab05ed8142 53 int setCh (int ch);
okini3939 0:d3ab05ed8142 54 int getRssi ();
okini3939 0:d3ab05ed8142 55 int sleep ();
okini3939 0:d3ab05ed8142 56 int wakeup ();
okini3939 0:d3ab05ed8142 57
okini3939 0:d3ab05ed8142 58 // ----- GSwifi_cmd.cpp -----
okini3939 0:d3ab05ed8142 59 int sendCommand(const char * cmd, Response res = RES_NULL, int timeout = DEFAULT_WAIT_RESP_TIMEOUT);
okini3939 0:d3ab05ed8142 60 int sendData(const char * data, int len, int timeout = CFG_TIMEOUT);
okini3939 0:d3ab05ed8142 61
okini3939 0:d3ab05ed8142 62 private:
okini3939 0:d3ab05ed8142 63 RawSerial _im;
okini3939 0:d3ab05ed8142 64 DigitalIn *_busy;
okini3939 0:d3ab05ed8142 65 DigitalOut *_reset;
okini3939 0:d3ab05ed8142 66 int _baud;
okini3939 0:d3ab05ed8142 67
okini3939 0:d3ab05ed8142 68 struct STATE {
okini3939 0:d3ab05ed8142 69 int id, node, rssi;
okini3939 0:d3ab05ed8142 70
okini3939 0:d3ab05ed8142 71 time_t time;
okini3939 0:d3ab05ed8142 72 bool initialized;
okini3939 0:d3ab05ed8142 73 volatile Mode mode;
okini3939 0:d3ab05ed8142 74 volatile Status status;
okini3939 0:d3ab05ed8142 75 volatile bool ok, failure;
okini3939 0:d3ab05ed8142 76 volatile Response res;
okini3939 0:d3ab05ed8142 77 int n;
okini3939 0:d3ab05ed8142 78 char buf[CFG_BUF_SIZE];
okini3939 0:d3ab05ed8142 79
okini3939 0:d3ab05ed8142 80 CircBuffer<char> *data;
okini3939 0:d3ab05ed8142 81 volatile bool received;
okini3939 0:d3ab05ed8142 82 void(*func)();
okini3939 0:d3ab05ed8142 83 } _state;
okini3939 0:d3ab05ed8142 84
okini3939 0:d3ab05ed8142 85 // ----- GSwifi_util.cpp -----
okini3939 0:d3ab05ed8142 86 int x2i (char c);
okini3939 0:d3ab05ed8142 87 char i2x (int i);
okini3939 0:d3ab05ed8142 88
okini3939 0:d3ab05ed8142 89 // ----- GSwifi_msg.cpp -----
okini3939 0:d3ab05ed8142 90 void recvData (char c);
okini3939 0:d3ab05ed8142 91 int parseMessage ();
okini3939 0:d3ab05ed8142 92 void msgOk (const char*);
okini3939 0:d3ab05ed8142 93 void msgError (const char*);
okini3939 0:d3ab05ed8142 94 void msgConnect (const char*);
okini3939 0:d3ab05ed8142 95 void resRDID (const char *buf);
okini3939 0:d3ab05ed8142 96 void resRDNN (const char *buf);
okini3939 0:d3ab05ed8142 97 void resRDRS (const char *buf);
okini3939 0:d3ab05ed8142 98
okini3939 0:d3ab05ed8142 99 // ----- GSwifi_cmd.cpp -----
okini3939 0:d3ab05ed8142 100 void clearFlags ();
okini3939 0:d3ab05ed8142 101 int cmdENWR ();
okini3939 0:d3ab05ed8142 102 int cmdDSWR ();
okini3939 0:d3ab05ed8142 103 int cmdRDID ();
okini3939 0:d3ab05ed8142 104 int cmdSTNN (int n);
okini3939 0:d3ab05ed8142 105 int cmdRDNN ();
okini3939 0:d3ab05ed8142 106 int cmdSRID (int n);
okini3939 0:d3ab05ed8142 107 int cmdERID ();
okini3939 0:d3ab05ed8142 108 int cmdSTCH (int n);
okini3939 0:d3ab05ed8142 109 int cmdRDRS ();
okini3939 0:d3ab05ed8142 110 int cmdSTPO (int n);
okini3939 0:d3ab05ed8142 111 int cmdSTRT (int n);
okini3939 0:d3ab05ed8142 112 int cmdSBRT (int n);
okini3939 0:d3ab05ed8142 113 int cmdDSRX ();
okini3939 0:d3ab05ed8142 114 int cmdENRX ();
okini3939 0:d3ab05ed8142 115
okini3939 0:d3ab05ed8142 116 // ----- GSwifi_hal.cpp -----
okini3939 0:d3ab05ed8142 117 void setReset (bool flg);
okini3939 0:d3ab05ed8142 118 void isrUart ();
okini3939 0:d3ab05ed8142 119 int getUart ();
okini3939 0:d3ab05ed8142 120 void putUart (char c);
okini3939 0:d3ab05ed8142 121 int lockUart (int ms);
okini3939 0:d3ab05ed8142 122 void unlockUart ();
okini3939 0:d3ab05ed8142 123 void initUart (PinName busy, PinName reset, int baud);
okini3939 0:d3ab05ed8142 124 };
okini3939 0:d3ab05ed8142 125
okini3939 0:d3ab05ed8142 126 #endif