Interplan IM920 library, 920MHz module
Dependents: IM920_sample IM920_SDlog IM920_sample IM920_sample3 ... more
IM920 ライブラリ
データモード、低速、長距離 の設定で通信するライブラリです。
920MHz無線モジュール
- mbedとモジュールとは、シリアル(TX,RX)、BUSY、RESET端子を接続します。
- モジュールはあらかじめ、コマンドでノード番号などを設定しておきます。
IM920.cpp
- Committer:
- okini3939
- Date:
- 2014-12-26
- Revision:
- 0:d3ab05ed8142
- Child:
- 1:81b2fd407327
File content as of revision 0:d3ab05ed8142:
#include "IM920.h" IM920::IM920 (PinName tx, PinName rx, PinName busy, PinName reset, int baud) : _im(tx, rx) { memset(&_state, 0, sizeof(_state)); _state.data = new CircBuffer<char>(CFG_DATA_SIZE); initUart(busy, reset, baud); setReset(true); wait_ms(100); setReset(false); } int IM920::init (int node, void(*func)()) { _state.node = node; _state.func = func; cmdRDID(); cmdSTNN(_state.node); cmdSTPO(3); // 10dBm cmdSTRT(2); // 1.25kbps return 0; } void IM920::poll () { if (_state.received && _state.buf != NULL) if (_state.func != NULL && !_state.data->isEmpty()) { _state.func(); if (_state.data->isEmpty()) { _state.received = false; } } } int IM920::send (char *buf, int len) { if (len > 64) len = 64; return sendData(buf, len); } int IM920::recv (char *buf, int len) { int i; if (_state.data == NULL) return 0; while (!_state.received && _state.mode != MODE_COMMAND); _state.received = false; for (i = 0; i < len; i ++) { if (_state.data->dequeue(&buf[i]) == false) break; } return i; }