36
36
#include " WProgram.h"
37
37
#endif
38
38
39
-
40
- #ifdef ARDUINO_ARCH_AVR // Arduino AVR boards (Uno, Pro Micro, etc.)
39
+ #ifdef ARDUINO_ARCH_AVR // Arduino AVR boards (Uno, Pro Micro, etc.)
41
40
#define LTE_SHIELD_SOFTWARE_SERIAL_ENABLED // Enable software serial
42
41
#endif
43
42
44
- #ifdef ARDUINO_ARCH_SAMD // Arduino SAMD boards (SAMD21, etc.)
43
+ #ifdef ARDUINO_ARCH_SAMD // Arduino SAMD boards (SAMD21, etc.)
45
44
#define LTE_SHIELD_SOFTWARE_SERIAL_ENABLEDx // Disable software serial
46
45
#endif
47
46
47
+ #ifdef ARDUINO_ARCH_APOLLO // Arduino Apollo boards (Artemis module, RedBoard Artemis, etc)
48
+ #define LTE_SHIELD_SOFTWARE_SERIAL_ENABLED // Enable software serial
49
+ #endif
50
+
48
51
#ifdef LTE_SHIELD_SOFTWARE_SERIAL_ENABLED
49
52
#include < SoftwareSerial.h>
50
53
#endif
54
57
#define LTE_SHIELD_POWER_PIN 5
55
58
#define LTE_SHIELD_RESET_PIN 6
56
59
57
- typedef enum {
60
+ typedef enum
61
+ {
58
62
MNO_INVALID = -1 ,
59
63
MNO_SW_DEFAULT = 0 ,
60
64
MNO_SIM_ICCD = 1 ,
@@ -65,19 +69,21 @@ typedef enum {
65
69
MNO_CT = 6
66
70
} mobile_network_operator_t ;
67
71
68
- typedef enum {
69
- LTE_SHIELD_ERROR_INVALID = -1 , // -1
70
- LTE_SHIELD_ERROR_SUCCESS = 0 , // 0
71
- LTE_SHIELD_ERROR_OUT_OF_MEMORY, // 1
72
- LTE_SHIELD_ERROR_TIMEOUT, // 2
73
- LTE_SHIELD_ERROR_UNEXPECTED_PARAM, // 3
74
- LTE_SHIELD_ERROR_UNEXPECTED_RESPONSE, // 4
75
- LTE_SHIELD_ERROR_NO_RESPONSE, // 5
76
- LTE_SHIELD_ERROR_DEREGISTERED // 6
72
+ typedef enum
73
+ {
74
+ LTE_SHIELD_ERROR_INVALID = -1 , // -1
75
+ LTE_SHIELD_ERROR_SUCCESS = 0 , // 0
76
+ LTE_SHIELD_ERROR_OUT_OF_MEMORY, // 1
77
+ LTE_SHIELD_ERROR_TIMEOUT, // 2
78
+ LTE_SHIELD_ERROR_UNEXPECTED_PARAM, // 3
79
+ LTE_SHIELD_ERROR_UNEXPECTED_RESPONSE, // 4
80
+ LTE_SHIELD_ERROR_NO_RESPONSE, // 5
81
+ LTE_SHIELD_ERROR_DEREGISTERED // 6
77
82
} LTE_Shield_error_t;
78
83
#define LTE_SHIELD_SUCCESS LTE_SHIELD_ERROR_SUCCESS
79
84
80
- typedef enum {
85
+ typedef enum
86
+ {
81
87
LTE_SHIELD_REGISTRATION_INVALID = -1 ,
82
88
LTE_SHIELD_REGISTRATION_NOT_REGISTERED = 0 ,
83
89
LTE_SHIELD_REGISTRATION_HOME = 1 ,
@@ -91,13 +97,15 @@ typedef enum {
91
97
LTE_SHIELD_REGISTRATION_ROAMING_CSFB_NOT_PREFERRED = 9
92
98
} LTE_Shield_registration_status_t;
93
99
94
- struct DateData {
100
+ struct DateData
101
+ {
95
102
uint8_t day;
96
103
uint8_t month;
97
104
unsigned int year;
98
105
};
99
106
100
- struct TimeData {
107
+ struct TimeData
108
+ {
101
109
uint8_t hour;
102
110
uint8_t minute;
103
111
uint8_t second;
@@ -106,12 +114,14 @@ struct TimeData {
106
114
uint8_t tzm;
107
115
};
108
116
109
- struct ClockData {
117
+ struct ClockData
118
+ {
110
119
struct DateData date;
111
120
struct TimeData time;
112
121
};
113
122
114
- struct PositionData {
123
+ struct PositionData
124
+ {
115
125
float utc;
116
126
float lat;
117
127
char latDir;
@@ -122,111 +132,117 @@ struct PositionData {
122
132
char status;
123
133
};
124
134
125
- struct SpeedData {
135
+ struct SpeedData
136
+ {
126
137
float speed;
127
138
float track;
128
139
float magVar;
129
140
char magVarDir;
130
141
};
131
142
132
- struct operator_stats {
143
+ struct operator_stats
144
+ {
133
145
uint8_t stat;
134
146
String shortOp;
135
147
String longOp;
136
148
unsigned long numOp;
137
149
uint8_t act;
138
150
};
139
151
140
- typedef enum {
152
+ typedef enum
153
+ {
141
154
LTE_SHIELD_TCP = 6 ,
142
155
LTE_SHIELD_UDP = 17
143
156
} lte_shield_socket_protocol_t ;
144
157
145
- typedef enum {
158
+ typedef enum
159
+ {
146
160
LTE_SHIELD_MESSAGE_FORMAT_PDU = 0 ,
147
161
LTE_SHIELD_MESSAGE_FORMAT_TEXT = 1
148
162
} lte_shield_message_format_t ;
149
163
150
- class LTE_Shield : public Print {
164
+ class LTE_Shield : public Print
165
+ {
151
166
public:
152
-
153
167
// Constructor
154
168
LTE_Shield (uint8_t powerPin = LTE_SHIELD_POWER_PIN, uint8_t resetPin = LTE_SHIELD_RESET_PIN);
155
169
156
170
// Begin -- initialize BT module and ensure it's connected
157
171
#ifdef LTE_SHIELD_SOFTWARE_SERIAL_ENABLED
158
- boolean begin (SoftwareSerial & softSerial, unsigned long baud = 9600 );
172
+ boolean begin (SoftwareSerial &softSerial, unsigned long baud = 9600 );
159
173
#endif
160
- boolean begin (HardwareSerial & hardSerial, unsigned long baud = 9600 );
174
+ boolean begin (HardwareSerial &hardSerial, unsigned long baud = 9600 );
161
175
162
176
// Loop polling and polling setup
163
177
boolean poll (void );
164
178
void setSocketReadCallback (void (*socketReadCallback)(int , String));
165
179
void setSocketCloseCallback (void (*socketCloseCallback)(int ));
166
- void setGpsReadCallback (void (*gpsRequestCallback)(ClockData time,
167
- PositionData gps, SpeedData spd, unsigned long uncertainty));
180
+ void setGpsReadCallback (void (*gpsRequestCallback)(ClockData time,
181
+ PositionData gps, SpeedData spd, unsigned long uncertainty));
168
182
169
183
// Direct write/print to cell serial port
170
184
virtual size_t write (uint8_t c);
171
185
virtual size_t write (const char *str);
172
- virtual size_t write (const char * buffer, size_t size);
186
+ virtual size_t write (const char *buffer, size_t size);
173
187
174
- // General AT Commands
188
+ // General AT Commands
175
189
LTE_Shield_error_t at (void );
176
190
LTE_Shield_error_t enableEcho (boolean enable = true );
177
191
String imei (void );
178
192
String imsi (void );
179
193
String ccid (void );
180
194
181
- // Control and status AT commands
195
+ // Control and status AT commands
182
196
LTE_Shield_error_t reset (void );
183
197
String clock (void );
184
198
// TODO: Return a clock struct
185
- LTE_Shield_error_t clock (uint8_t * y, uint8_t * mo, uint8_t * d,
186
- uint8_t * h, uint8_t * min, uint8_t * s, uint8_t * tz);
199
+ LTE_Shield_error_t clock (uint8_t *y, uint8_t *mo, uint8_t *d,
200
+ uint8_t *h, uint8_t *min, uint8_t *s, uint8_t *tz);
187
201
LTE_Shield_error_t autoTimeZone (boolean enable);
188
202
189
- // Network service AT commands
203
+ // Network service AT commands
190
204
int8_t rssi (void );
191
205
LTE_Shield_registration_status_t registration (void );
192
206
boolean setNetwork (mobile_network_operator_t mno);
193
207
mobile_network_operator_t getNetwork (void );
194
- typedef enum {
208
+ typedef enum
209
+ {
195
210
PDP_TYPE_INVALID = -1 ,
196
211
PDP_TYPE_IP = 0 ,
197
212
PDP_TYPE_NONIP = 1 ,
198
213
PDP_TYPE_IPV4V6 = 2 ,
199
214
PDP_TYPE_IPV6 = 3
200
215
} LTE_Shield_pdp_type;
201
216
LTE_Shield_error_t setAPN (String apn, uint8_t cid = 1 , LTE_Shield_pdp_type pdpType = PDP_TYPE_IP);
202
- LTE_Shield_error_t getAPN (String * apn, IPAddress * ip);
217
+ LTE_Shield_error_t getAPN (String *apn, IPAddress *ip);
203
218
204
- typedef enum {
219
+ typedef enum
220
+ {
205
221
L2P_DEFAULT,
206
222
L2P_PPP,
207
223
L2P_M_HEX,
208
224
L2P_M_RAW_IP,
209
225
L2P_M_OPT_PPP
210
226
} LTE_Shield_l2p_t;
211
- LTE_Shield_error_t enterPPP (uint8_t cid = 1 , char dialing_type_char = 0 ,
212
- unsigned long dialNumber = 99 , LTE_Shield_l2p_t l2p = L2P_DEFAULT);
227
+ LTE_Shield_error_t enterPPP (uint8_t cid = 1 , char dialing_type_char = 0 ,
228
+ unsigned long dialNumber = 99 , LTE_Shield_l2p_t l2p = L2P_DEFAULT);
213
229
214
- uint8_t getOperators (struct operator_stats * op, int maxOps = 3 );
230
+ uint8_t getOperators (struct operator_stats *op, int maxOps = 3 );
215
231
LTE_Shield_error_t registerOperator (struct operator_stats oper);
216
- LTE_Shield_error_t getOperator (String * oper);
232
+ LTE_Shield_error_t getOperator (String *oper);
217
233
LTE_Shield_error_t deregisterOperator (void );
218
234
219
- // SMS -- Short Messages Service
220
- LTE_Shield_error_t setSMSMessageFormat (lte_shield_message_format_t textMode
221
- = LTE_SHIELD_MESSAGE_FORMAT_TEXT);
235
+ // SMS -- Short Messages Service
236
+ LTE_Shield_error_t setSMSMessageFormat (lte_shield_message_format_t textMode = LTE_SHIELD_MESSAGE_FORMAT_TEXT);
222
237
LTE_Shield_error_t sendSMS (String number, String message);
223
238
224
- // V24 Control and V25ter (UART interface) AT commands
239
+ // V24 Control and V25ter (UART interface) AT commands
225
240
LTE_Shield_error_t setBaud (unsigned long baud);
226
241
227
- // GPIO
242
+ // GPIO
228
243
// GPIO pin map
229
- typedef enum {
244
+ typedef enum
245
+ {
230
246
GPIO1 = 16 ,
231
247
GPIO2 = 23 ,
232
248
GPIO3 = 24 ,
@@ -235,7 +251,8 @@ class LTE_Shield : public Print {
235
251
GPIO6 = 19
236
252
} LTE_Shield_gpio_t;
237
253
// GPIO pin modes
238
- typedef enum {
254
+ typedef enum
255
+ {
239
256
GPIO_MODE_INVALID = -1 ,
240
257
GPIO_OUTPUT = 0 ,
241
258
GPIO_INPUT,
@@ -263,15 +280,16 @@ class LTE_Shield : public Print {
263
280
// IP Transport Layer
264
281
int socketOpen (lte_shield_socket_protocol_t protocol, unsigned int localPort = 0 );
265
282
LTE_Shield_error_t socketClose (int socket, int timeout = 1000 );
266
- LTE_Shield_error_t socketConnect (int socket, const char * address, unsigned int port);
267
- LTE_Shield_error_t socketWrite (int socket, const char * str);
283
+ LTE_Shield_error_t socketConnect (int socket, const char *address, unsigned int port);
284
+ LTE_Shield_error_t socketWrite (int socket, const char *str);
268
285
LTE_Shield_error_t socketWrite (int socket, String str);
269
- LTE_Shield_error_t socketRead (int socket, int length, char * readDest);
286
+ LTE_Shield_error_t socketRead (int socket, int length, char *readDest);
270
287
LTE_Shield_error_t socketListen (int socket, unsigned int port);
271
288
IPAddress lastRemoteIP (void );
272
289
273
290
// GPS
274
- typedef enum {
291
+ typedef enum
292
+ {
275
293
GNSS_SYSTEM_GPS = 1 ,
276
294
GNSS_SYSTEM_SBAS = 2 ,
277
295
GNSS_SYSTEM_GALILEO = 4 ,
@@ -282,49 +300,50 @@ class LTE_Shield : public Print {
282
300
} gnss_system_t ;
283
301
boolean gpsOn (void );
284
302
LTE_Shield_error_t gpsPower (boolean enable = true ,
285
- gnss_system_t gnss_sys = GNSS_SYSTEM_GPS);
303
+ gnss_system_t gnss_sys = GNSS_SYSTEM_GPS);
286
304
LTE_Shield_error_t gpsEnableClock (boolean enable = true );
287
- LTE_Shield_error_t gpsGetClock (struct ClockData * clock);
305
+ LTE_Shield_error_t gpsGetClock (struct ClockData *clock);
288
306
LTE_Shield_error_t gpsEnableFix (boolean enable = true );
289
- LTE_Shield_error_t gpsGetFix (float * lat, float * lon,
290
- unsigned int * alt, uint8_t * quality, uint8_t * sat);
291
- LTE_Shield_error_t gpsGetFix (struct PositionData * pos);
307
+ LTE_Shield_error_t gpsGetFix (float *lat, float *lon,
308
+ unsigned int *alt, uint8_t *quality, uint8_t *sat);
309
+ LTE_Shield_error_t gpsGetFix (struct PositionData *pos);
292
310
LTE_Shield_error_t gpsEnablePos (boolean enable = true );
293
- LTE_Shield_error_t gpsGetPos (struct PositionData * pos);
311
+ LTE_Shield_error_t gpsGetPos (struct PositionData *pos);
294
312
LTE_Shield_error_t gpsEnableSat (boolean enable = true );
295
- LTE_Shield_error_t gpsGetSat (uint8_t * sats);
313
+ LTE_Shield_error_t gpsGetSat (uint8_t *sats);
296
314
LTE_Shield_error_t gpsEnableRmc (boolean enable = true );
297
- LTE_Shield_error_t gpsGetRmc (struct PositionData * pos, struct SpeedData * speed,
298
- struct ClockData * clk, boolean * valid);
315
+ LTE_Shield_error_t gpsGetRmc (struct PositionData *pos, struct SpeedData *speed,
316
+ struct ClockData *clk, boolean *valid);
299
317
LTE_Shield_error_t gpsEnableSpeed (boolean enable = true );
300
- LTE_Shield_error_t gpsGetSpeed (struct SpeedData * speed);
318
+ LTE_Shield_error_t gpsGetSpeed (struct SpeedData *speed);
301
319
302
320
LTE_Shield_error_t gpsRequest (unsigned int timeout, uint32_t accuracy, boolean detailed = true );
303
321
304
322
private:
305
-
306
- HardwareSerial * _hardSerial;
323
+ HardwareSerial *_hardSerial;
307
324
#ifdef LTE_SHIELD_SOFTWARE_SERIAL_ENABLED
308
- SoftwareSerial * _softSerial;
325
+ SoftwareSerial *_softSerial;
309
326
#endif
310
327
311
328
uint8_t _powerPin;
312
329
uint8_t _resetPin;
313
330
unsigned long _baud;
314
331
IPAddress _lastRemoteIP;
315
332
IPAddress _lastLocalIP;
316
-
333
+
317
334
void (*_socketReadCallback)(int , String);
318
335
void (*_socketCloseCallback)(int );
319
336
void (*_gpsRequestCallback)(ClockData, PositionData, SpeedData, unsigned long );
320
337
321
- typedef enum {
338
+ typedef enum
339
+ {
322
340
LTE_SHIELD_INIT_STANDARD,
323
341
LTE_SHIELD_INIT_AUTOBAUD,
324
342
LTE_SHIELD_INIT_RESET
325
343
} LTE_Shield_init_type_t;
326
344
327
- typedef enum {
345
+ typedef enum
346
+ {
328
347
MINIMUM_FUNCTIONALITY = 0 ,
329
348
FULL_FUNCTIONALITY = 1 ,
330
349
SILENT_RESET = 15 ,
@@ -340,35 +359,35 @@ class LTE_Shield : public Print {
340
359
LTE_Shield_error_t functionality (LTE_Shield_functionality_t function = FULL_FUNCTIONALITY);
341
360
342
361
LTE_Shield_error_t setMno (mobile_network_operator_t mno);
343
- LTE_Shield_error_t getMno (mobile_network_operator_t * mno);
362
+ LTE_Shield_error_t getMno (mobile_network_operator_t *mno);
344
363
345
364
// Wait for an expected response (don't send a command)
346
- LTE_Shield_error_t waitForResponse (const char * expectedResponse, uint16_t timeout);
365
+ LTE_Shield_error_t waitForResponse (const char *expectedResponse, uint16_t timeout);
347
366
348
367
// Send command with an expected (potentially partial) response, store entire response
349
- LTE_Shield_error_t sendCommandWithResponse (const char * command, const char * expectedResponse,
350
- char * responseDest, unsigned long commandTimeout, boolean at = true );
368
+ LTE_Shield_error_t sendCommandWithResponse (const char *command, const char *expectedResponse,
369
+ char *responseDest, unsigned long commandTimeout, boolean at = true );
351
370
352
371
// Send a command -- prepend AT if at is true
353
- boolean sendCommand (const char * command, boolean at);
372
+ boolean sendCommand (const char *command, boolean at);
354
373
355
374
LTE_Shield_error_t parseSocketReadIndication (int socket, int length);
356
375
LTE_Shield_error_t parseSocketListenIndication (IPAddress localIP, IPAddress remoteIP);
357
- LTE_Shield_error_t parseSocketCloseIndication (String * closeIndication);
376
+ LTE_Shield_error_t parseSocketCloseIndication (String *closeIndication);
358
377
359
- // UART Functions
360
- size_t hwPrint (const char * s);
378
+ // UART Functions
379
+ size_t hwPrint (const char *s);
361
380
size_t hwWrite (const char c);
362
- int readAvailable (char * inString);
381
+ int readAvailable (char *inString);
363
382
char readChar (void );
364
383
int hwAvailable (void );
365
384
void beginSerial (unsigned long baud);
366
385
void setTimeout (unsigned long timeout);
367
- bool find (char * target);
386
+ bool find (char *target);
368
387
369
388
LTE_Shield_error_t autobaud (unsigned long desiredBaud);
370
389
371
- char * lte_calloc_char (size_t num);
390
+ char *lte_calloc_char (size_t num);
372
391
};
373
392
374
393
#endif // SPARKFUN_LTE_SHIELD_ARDUINO_LIBRARY_H
0 commit comments