Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed FATFileSystem
Fork of FTE-06 by
IM920/IM920.cpp@23:9be034083282, 2017-08-14 (annotated)
- Committer:
- mizuki_akaike
- Date:
- Mon Aug 14 04:56:52 2017 +0000
- Revision:
- 23:9be034083282
?????????????;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mizuki_akaike | 23:9be034083282 | 1 | /* Copyright (C) 2014 Suga, MIT License |
mizuki_akaike | 23:9be034083282 | 2 | * |
mizuki_akaike | 23:9be034083282 | 3 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software |
mizuki_akaike | 23:9be034083282 | 4 | * and associated documentation files (the "Software"), to deal in the Software without restriction, |
mizuki_akaike | 23:9be034083282 | 5 | * including without limitation the rights to use, copy, modify, merge, publish, distribute, |
mizuki_akaike | 23:9be034083282 | 6 | * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is |
mizuki_akaike | 23:9be034083282 | 7 | * furnished to do so, subject to the following conditions: |
mizuki_akaike | 23:9be034083282 | 8 | * |
mizuki_akaike | 23:9be034083282 | 9 | * The above copyright notice and this permission notice shall be included in all copies or |
mizuki_akaike | 23:9be034083282 | 10 | * substantial portions of the Software. |
mizuki_akaike | 23:9be034083282 | 11 | * |
mizuki_akaike | 23:9be034083282 | 12 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING |
mizuki_akaike | 23:9be034083282 | 13 | * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
mizuki_akaike | 23:9be034083282 | 14 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, |
mizuki_akaike | 23:9be034083282 | 15 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
mizuki_akaike | 23:9be034083282 | 16 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
mizuki_akaike | 23:9be034083282 | 17 | */ |
mizuki_akaike | 23:9be034083282 | 18 | #include "IM920.h" |
mizuki_akaike | 23:9be034083282 | 19 | |
mizuki_akaike | 23:9be034083282 | 20 | IM920::IM920 (PinName tx, PinName rx, PinName busy, PinName reset, int baud) : _im(tx, rx) { |
mizuki_akaike | 23:9be034083282 | 21 | |
mizuki_akaike | 23:9be034083282 | 22 | memset(&_state, 0, sizeof(_state)); |
mizuki_akaike | 23:9be034083282 | 23 | _state.data = new CircBuffer<char>(CFG_DATA_SIZE); |
mizuki_akaike | 23:9be034083282 | 24 | |
mizuki_akaike | 23:9be034083282 | 25 | initUart(busy, reset, baud); |
mizuki_akaike | 23:9be034083282 | 26 | setReset(true); |
mizuki_akaike | 23:9be034083282 | 27 | wait_ms(100); |
mizuki_akaike | 23:9be034083282 | 28 | setReset(false); |
mizuki_akaike | 23:9be034083282 | 29 | } |
mizuki_akaike | 23:9be034083282 | 30 | |
mizuki_akaike | 23:9be034083282 | 31 | int IM920::init () { |
mizuki_akaike | 23:9be034083282 | 32 | |
mizuki_akaike | 23:9be034083282 | 33 | cmdRDID(); |
mizuki_akaike | 23:9be034083282 | 34 | cmdRDNN(); |
mizuki_akaike | 23:9be034083282 | 35 | cmdSTPO(3); // 10dBm |
mizuki_akaike | 23:9be034083282 | 36 | cmdSTRT(2); // 1.25kbps |
mizuki_akaike | 23:9be034083282 | 37 | return 0; |
mizuki_akaike | 23:9be034083282 | 38 | } |
mizuki_akaike | 23:9be034083282 | 39 | |
mizuki_akaike | 23:9be034083282 | 40 | void IM920::poll () { |
mizuki_akaike | 23:9be034083282 | 41 | |
mizuki_akaike | 23:9be034083282 | 42 | if (_state.received && _state.buf != NULL) |
mizuki_akaike | 23:9be034083282 | 43 | if (!_state.data->isEmpty()) { |
mizuki_akaike | 23:9be034083282 | 44 | _func.call(); |
mizuki_akaike | 23:9be034083282 | 45 | if (_state.data->isEmpty()) { |
mizuki_akaike | 23:9be034083282 | 46 | _state.received = false; |
mizuki_akaike | 23:9be034083282 | 47 | } |
mizuki_akaike | 23:9be034083282 | 48 | } |
mizuki_akaike | 23:9be034083282 | 49 | } |
mizuki_akaike | 23:9be034083282 | 50 | |
mizuki_akaike | 23:9be034083282 | 51 | int IM920::send (char *buf, int len) { |
mizuki_akaike | 23:9be034083282 | 52 | |
mizuki_akaike | 23:9be034083282 | 53 | if (len > 64) len = 64; |
mizuki_akaike | 23:9be034083282 | 54 | |
mizuki_akaike | 23:9be034083282 | 55 | return sendData(buf, len); |
mizuki_akaike | 23:9be034083282 | 56 | } |
mizuki_akaike | 23:9be034083282 | 57 | |
mizuki_akaike | 23:9be034083282 | 58 | int IM920::recv (char *buf, int len) { |
mizuki_akaike | 23:9be034083282 | 59 | int i; |
mizuki_akaike | 23:9be034083282 | 60 | |
mizuki_akaike | 23:9be034083282 | 61 | if (_state.data == NULL) return 0; |
mizuki_akaike | 23:9be034083282 | 62 | while (!_state.received && _state.mode != MODE_COMMAND); |
mizuki_akaike | 23:9be034083282 | 63 | _state.received = false; |
mizuki_akaike | 23:9be034083282 | 64 | for (i = 0; i < len; i ++) { |
mizuki_akaike | 23:9be034083282 | 65 | if (_state.data->dequeue(&buf[i]) == false) break; |
mizuki_akaike | 23:9be034083282 | 66 | } |
mizuki_akaike | 23:9be034083282 | 67 | return i; |
mizuki_akaike | 23:9be034083282 | 68 | } |