|
12 | 12 | #ifndef ADAFRUITIO_FONA_H
|
13 | 13 | #define ADAFRUITIO_FONA_H
|
14 | 14 |
|
15 |
| -#ifdef ARDUINO_ARCH_AVR |
16 |
| - |
17 | 15 | #include "Arduino.h"
|
18 | 16 | #include <SoftwareSerial.h>
|
19 | 17 | #include "Adafruit_MQTT.h"
|
|
27 | 25 | #define FONA_RI 7
|
28 | 26 | #define FONA_BAUD 4800
|
29 | 27 |
|
| 28 | +// all logic in .h to avoid auto compile |
30 | 29 | class AdafruitIO_FONA : public AdafruitIO {
|
31 | 30 |
|
32 | 31 | public:
|
33 |
| - AdafruitIO_FONA(const char *user, const char *key); |
34 |
| - AdafruitIO_FONA(const __FlashStringHelper *user, const __FlashStringHelper *key); |
| 32 | + AdafruitIO_FONA(const char *user, const char *key):AdafruitIO(user, key) |
| 33 | + { |
| 34 | + _serial = new SoftwareSerial(FONA_TX, FONA_RX); |
| 35 | + _fona = new Adafruit_FONA(FONA_RST); |
| 36 | + _mqtt = new Adafruit_MQTT_FONA(_fona, _host, _port); |
| 37 | + _packetread_timeout = 500; |
| 38 | + } |
35 | 39 |
|
36 |
| - void setAPN(FONAFlashStringPtr apn, FONAFlashStringPtr username=0, FONAFlashStringPtr password=0); |
| 40 | + AdafruitIO_FONA(const __FlashStringHelper *user, const __FlashStringHelper *key):AdafruitIO(user, key) |
| 41 | + { |
| 42 | + _serial = new SoftwareSerial(FONA_TX, FONA_RX); |
| 43 | + _fona = new Adafruit_FONA(FONA_RST); |
| 44 | + _mqtt = new Adafruit_MQTT_FONA(_fona, _host, _port); |
| 45 | + _packetread_timeout = 500; |
| 46 | + } |
37 | 47 |
|
38 |
| - aio_status_t networkStatus(); |
| 48 | + void setAPN(FONAFlashStringPtr apn, FONAFlashStringPtr username=0, FONAFlashStringPtr password=0) |
| 49 | + { |
| 50 | + _fona->setGPRSNetworkSettings(apn, username, password); |
| 51 | + } |
39 | 52 |
|
40 |
| - protected: |
41 |
| - void _connect(); |
| 53 | + aio_status_t AdafruitIO_FONA::networkStatus() |
| 54 | + { |
| 55 | + // return if in a failed state |
| 56 | + if(_status == AIO_NET_CONNECT_FAILED) |
| 57 | + return _status; |
| 58 | + |
| 59 | + // if we are connected, return |
| 60 | + if(_fona->GPRSstate()) |
| 61 | + return AIO_NET_CONNECTED; |
42 | 62 |
|
| 63 | + // wait for connection to network |
| 64 | + if(_fona->getNetworkStatus() != 1) |
| 65 | + return AIO_NET_DISCONNECTED; |
| 66 | + |
| 67 | + _fona->enableGPRS(true); |
| 68 | + return AIO_NET_CONNECTED; |
| 69 | + } |
| 70 | + |
| 71 | + protected: |
43 | 72 | uint16_t _port = 1883;
|
44 | 73 |
|
45 | 74 | SoftwareSerial *_serial;
|
46 | 75 | Adafruit_FONA *_fona;
|
47 | 76 |
|
48 |
| -}; |
| 77 | + void _connect() |
| 78 | + { |
| 79 | + // set software serial baud rate |
| 80 | + _serial->begin(FONA_BAUD); |
| 81 | + |
| 82 | + // if fona can't be found, bail |
| 83 | + if(! _fona->begin(*_serial)) { |
| 84 | + _status = AIO_NET_CONNECT_FAILED; |
| 85 | + return; |
| 86 | + } |
| 87 | + |
| 88 | + // disable cme error reporting |
| 89 | + _serial->println("AT+CMEE=2"); |
49 | 90 |
|
50 |
| -#endif // ARDUINO_ARCH_AVR |
| 91 | + _status = AIO_NET_DISCONNECTED; |
| 92 | + } |
| 93 | + |
| 94 | +}; |
51 | 95 |
|
52 | 96 | #endif // ADAFRUITIO_FONA_H
|
0 commit comments