Interplan IM920 library, 920MHz module
Dependents: IM920_sample IM920_SDlog IM920_sample IM920_sample3 ... more
IM920 ライブラリ
データモード、低速、長距離 の設定で通信するライブラリです。
920MHz無線モジュール
- mbedとモジュールとは、シリアル(TX,RX)、BUSY、RESET端子を接続します。
- モジュールはあらかじめ、コマンドでノード番号などを設定しておきます。
IM920_util.cpp@5:2fd9b1725283, 2015-04-24 (annotated)
- Committer:
- idealtechlab
- Date:
- Fri Apr 24 03:59:13 2015 +0000
- Revision:
- 5:2fd9b1725283
- Parent:
- 4:ba939555ed35
fix buffer over run
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 | |
idealtechlab | 4:ba939555ed35 | 3 | int IM920::setNode (int node) { |
idealtechlab | 4:ba939555ed35 | 4 | _state.node = node; |
idealtechlab | 4:ba939555ed35 | 5 | return cmdSTNN(_state.node); |
idealtechlab | 4:ba939555ed35 | 6 | } |
idealtechlab | 4:ba939555ed35 | 7 | |
idealtechlab | 4:ba939555ed35 | 8 | int IM920::getNode () { |
idealtechlab | 4:ba939555ed35 | 9 | cmdRDNN(); |
idealtechlab | 4:ba939555ed35 | 10 | return _state.node; |
idealtechlab | 4:ba939555ed35 | 11 | } |
idealtechlab | 4:ba939555ed35 | 12 | |
okini3939 | 0:d3ab05ed8142 | 13 | int IM920::setCh (int ch) { |
idealtechlab | 4:ba939555ed35 | 14 | if (ch < 1 || ch > 15) return -1; |
okini3939 | 0:d3ab05ed8142 | 15 | return cmdSTCH(ch); |
okini3939 | 0:d3ab05ed8142 | 16 | } |
okini3939 | 0:d3ab05ed8142 | 17 | |
idealtechlab | 4:ba939555ed35 | 18 | int IM920::setPower (int pwr) { |
idealtechlab | 4:ba939555ed35 | 19 | if (pwr < 1 || pwr > 3) return -1; |
idealtechlab | 4:ba939555ed35 | 20 | return cmdSTPO(pwr); |
idealtechlab | 4:ba939555ed35 | 21 | } |
idealtechlab | 4:ba939555ed35 | 22 | |
idealtechlab | 4:ba939555ed35 | 23 | int IM920::setSpeed (int spd) { |
idealtechlab | 4:ba939555ed35 | 24 | if (spd < 1 || spd > 2) return -1; |
idealtechlab | 4:ba939555ed35 | 25 | return cmdSTRT(spd); |
idealtechlab | 4:ba939555ed35 | 26 | } |
idealtechlab | 4:ba939555ed35 | 27 | |
okini3939 | 0:d3ab05ed8142 | 28 | int IM920::getRssi () { |
okini3939 | 0:d3ab05ed8142 | 29 | cmdRDRS(); |
okini3939 | 0:d3ab05ed8142 | 30 | return _state.rssi; |
okini3939 | 0:d3ab05ed8142 | 31 | } |
okini3939 | 0:d3ab05ed8142 | 32 | |
okini3939 | 0:d3ab05ed8142 | 33 | int IM920::sleep () { |
okini3939 | 0:d3ab05ed8142 | 34 | if (_state.status != STAT_NONE) return -1; |
okini3939 | 0:d3ab05ed8142 | 35 | |
okini3939 | 0:d3ab05ed8142 | 36 | _state.status = STAT_SLEEP; |
okini3939 | 0:d3ab05ed8142 | 37 | return cmdDSRX(); |
okini3939 | 0:d3ab05ed8142 | 38 | } |
okini3939 | 0:d3ab05ed8142 | 39 | |
okini3939 | 0:d3ab05ed8142 | 40 | int IM920::wakeup () { |
okini3939 | 0:d3ab05ed8142 | 41 | if (_state.status != STAT_SLEEP) return -1; |
okini3939 | 0:d3ab05ed8142 | 42 | |
okini3939 | 0:d3ab05ed8142 | 43 | putUart('\r'); |
okini3939 | 0:d3ab05ed8142 | 44 | putUart('\n'); |
okini3939 | 0:d3ab05ed8142 | 45 | return cmdENRX(); |
okini3939 | 0:d3ab05ed8142 | 46 | } |
okini3939 | 0:d3ab05ed8142 | 47 | |
idealtechlab | 4:ba939555ed35 | 48 | int IM920::test () { |
idealtechlab | 4:ba939555ed35 | 49 | return cmdEGRX(); |
idealtechlab | 4:ba939555ed35 | 50 | } |
idealtechlab | 4:ba939555ed35 | 51 | |
okini3939 | 0:d3ab05ed8142 | 52 | |
okini3939 | 0:d3ab05ed8142 | 53 | int IM920::x2i (char c) { |
okini3939 | 0:d3ab05ed8142 | 54 | if (c >= '0' && c <= '9') { |
okini3939 | 0:d3ab05ed8142 | 55 | return c - '0'; |
okini3939 | 0:d3ab05ed8142 | 56 | } else |
okini3939 | 0:d3ab05ed8142 | 57 | if (c >= 'A' && c <= 'F') { |
okini3939 | 0:d3ab05ed8142 | 58 | return c - 'A' + 10; |
okini3939 | 0:d3ab05ed8142 | 59 | } else |
okini3939 | 0:d3ab05ed8142 | 60 | if (c >= 'a' && c <= 'f') { |
okini3939 | 0:d3ab05ed8142 | 61 | return c - 'a' + 10; |
okini3939 | 0:d3ab05ed8142 | 62 | } |
okini3939 | 0:d3ab05ed8142 | 63 | return 0; |
okini3939 | 0:d3ab05ed8142 | 64 | } |
okini3939 | 0:d3ab05ed8142 | 65 | |
okini3939 | 0:d3ab05ed8142 | 66 | char IM920::i2x (int i) { |
okini3939 | 0:d3ab05ed8142 | 67 | if (i >= 0 && i <= 9) { |
okini3939 | 0:d3ab05ed8142 | 68 | return i + '0'; |
okini3939 | 0:d3ab05ed8142 | 69 | } else |
okini3939 | 0:d3ab05ed8142 | 70 | if (i >= 10 && i <= 15) { |
okini3939 | 0:d3ab05ed8142 | 71 | return i - 10 + 'A'; |
okini3939 | 0:d3ab05ed8142 | 72 | } |
okini3939 | 0:d3ab05ed8142 | 73 | return 0; |
okini3939 | 0:d3ab05ed8142 | 74 | } |