Interplan IM920 library, 920MHz module
Dependents: IM920_sample IM920_SDlog IM920_sample IM920_sample3 ... more
IM920 ライブラリ
データモード、低速、長距離 の設定で通信するライブラリです。
920MHz無線モジュール
- mbedとモジュールとは、シリアル(TX,RX)、BUSY、RESET端子を接続します。
- モジュールはあらかじめ、コマンドでノード番号などを設定しておきます。
IM920_hal.cpp@0:d3ab05ed8142, 2014-12-26 (annotated)
- Committer:
- okini3939
- Date:
- Fri Dec 26 15:35:20 2014 +0000
- Revision:
- 0:d3ab05ed8142
- Child:
- 3:db269462ad1c
1st tiny build.;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
okini3939 | 0:d3ab05ed8142 | 1 | #include "IM920.h" |
okini3939 | 0:d3ab05ed8142 | 2 | |
okini3939 | 0:d3ab05ed8142 | 3 | void IM920::setReset (bool flg) { |
okini3939 | 0:d3ab05ed8142 | 4 | if (_reset) { |
okini3939 | 0:d3ab05ed8142 | 5 | if (flg) { |
okini3939 | 0:d3ab05ed8142 | 6 | _reset->write(0); |
okini3939 | 0:d3ab05ed8142 | 7 | } else { |
okini3939 | 0:d3ab05ed8142 | 8 | _reset->write(1); |
okini3939 | 0:d3ab05ed8142 | 9 | } |
okini3939 | 0:d3ab05ed8142 | 10 | } |
okini3939 | 0:d3ab05ed8142 | 11 | } |
okini3939 | 0:d3ab05ed8142 | 12 | |
okini3939 | 0:d3ab05ed8142 | 13 | void IM920::isrUart () { |
okini3939 | 0:d3ab05ed8142 | 14 | recvData(getUart()); |
okini3939 | 0:d3ab05ed8142 | 15 | } |
okini3939 | 0:d3ab05ed8142 | 16 | |
okini3939 | 0:d3ab05ed8142 | 17 | int IM920::getUart () { |
okini3939 | 0:d3ab05ed8142 | 18 | return _im.getc(); |
okini3939 | 0:d3ab05ed8142 | 19 | } |
okini3939 | 0:d3ab05ed8142 | 20 | |
okini3939 | 0:d3ab05ed8142 | 21 | void IM920::putUart (char c) { |
okini3939 | 0:d3ab05ed8142 | 22 | _im.putc(c); |
okini3939 | 0:d3ab05ed8142 | 23 | } |
okini3939 | 0:d3ab05ed8142 | 24 | |
okini3939 | 0:d3ab05ed8142 | 25 | int IM920::lockUart (int ms) { |
okini3939 | 0:d3ab05ed8142 | 26 | Timer t; |
okini3939 | 0:d3ab05ed8142 | 27 | |
okini3939 | 0:d3ab05ed8142 | 28 | if (_busy && _busy->read()) { |
okini3939 | 0:d3ab05ed8142 | 29 | // CTS check |
okini3939 | 0:d3ab05ed8142 | 30 | t.start(); |
okini3939 | 0:d3ab05ed8142 | 31 | while (_busy->read()) { |
okini3939 | 0:d3ab05ed8142 | 32 | if (t.read_ms() >= ms) { |
okini3939 | 0:d3ab05ed8142 | 33 | DBG("cts timeout\r\n"); |
okini3939 | 0:d3ab05ed8142 | 34 | return -1; |
okini3939 | 0:d3ab05ed8142 | 35 | } |
okini3939 | 0:d3ab05ed8142 | 36 | } |
okini3939 | 0:d3ab05ed8142 | 37 | } |
okini3939 | 0:d3ab05ed8142 | 38 | return 0; |
okini3939 | 0:d3ab05ed8142 | 39 | } |
okini3939 | 0:d3ab05ed8142 | 40 | |
okini3939 | 0:d3ab05ed8142 | 41 | void IM920::unlockUart () { |
okini3939 | 0:d3ab05ed8142 | 42 | } |
okini3939 | 0:d3ab05ed8142 | 43 | |
okini3939 | 0:d3ab05ed8142 | 44 | void IM920::initUart (PinName busy, PinName reset, int baud) { |
okini3939 | 0:d3ab05ed8142 | 45 | _baud = baud; |
okini3939 | 0:d3ab05ed8142 | 46 | if (_baud) _im.baud(_baud); |
okini3939 | 0:d3ab05ed8142 | 47 | _im.attach(this, &IM920::isrUart, Serial::RxIrq); |
okini3939 | 0:d3ab05ed8142 | 48 | |
okini3939 | 0:d3ab05ed8142 | 49 | _busy = NULL; |
okini3939 | 0:d3ab05ed8142 | 50 | _reset = NULL; |
okini3939 | 0:d3ab05ed8142 | 51 | if (busy != NC) { |
okini3939 | 0:d3ab05ed8142 | 52 | _busy = new DigitalIn(busy); |
okini3939 | 0:d3ab05ed8142 | 53 | } |
okini3939 | 0:d3ab05ed8142 | 54 | if (reset != NC) { |
okini3939 | 0:d3ab05ed8142 | 55 | _reset = new DigitalOut(reset); |
okini3939 | 0:d3ab05ed8142 | 56 | } |
okini3939 | 0:d3ab05ed8142 | 57 | } |