20 #ifndef SPARKFUN_SWARM_SATELLITE_ARDUINO_LIBRARY_H
21 #define SPARKFUN_SWARM_SATELLITE_ARDUINO_LIBRARY_H
29 #ifdef ARDUINO_ARCH_AVR
30 #define SWARM_M138_SOFTWARE_SERIAL_ENABLED
33 #ifdef ARDUINO_ARCH_SAMD
34 #define SWARM_M138_SOFTWARE_SERIAL_ENABLEDx
37 #ifdef ARDUINO_ARCH_APOLLO3
38 #define SWARM_M138_SOFTWARE_SERIAL_ENABLEDx
44 #ifdef ARDUINO_ARCH_STM32
45 #define SWARM_M138_SOFTWARE_SERIAL_ENABLED
48 #ifdef ARDUINO_ARCH_ESP32
52 #if __has_include(<SoftwareSerial.h> )
53 #define SWARM_M138_SOFTWARE_SERIAL_ENABLED
55 #define SWARM_M138_SOFTWARE_SERIAL_ENABLEDx
59 #ifdef ARDUINO_ARCH_ESP8266
63 #if __has_include(<SoftwareSerial.h> )
64 #define SWARM_M138_SOFTWARE_SERIAL_ENABLED
66 #define SWARM_M138_SOFTWARE_SERIAL_ENABLEDx
70 #ifdef SWARM_M138_SOFTWARE_SERIAL_ENABLED
71 #include <SoftwareSerial.h>
77 #define SWARM_M138_STANDARD_RESPONSE_TIMEOUT 1000
78 #define SWARM_M138_MESSAGE_DELETE_TIMEOUT 5000
79 #define SWARM_M138_MESSAGE_ID_TIMEOUT 5000
80 #define SWARM_M138_MESSAGE_READ_TIMEOUT 3000
81 #define SWARM_M138_MESSAGE_TRANSMIT_TIMEOUT 3000
84 #define SWARM_M138_SERIAL_BAUD_RATE 115200
87 #define SFE_QWIIC_SWARM_DEFAULT_I2C_ADDRESS 0x52
90 #define SWARM_M138_MAX_PACKET_LENGTH_BYTES 192
91 #define SWARM_M138_MAX_PACKET_LENGTH_HEX 384
94 #define SWARM_M138_MEM_ALLOC_CS 30
95 #define SWARM_M138_MEM_ALLOC_FV 37
96 #define SWARM_M138_MEM_ALLOC_MS 128
130 #define SWARM_M138_SUCCESS SWARM_M138_ERROR_SUCCESS
154 uint8_t jamming_level;
170 SWARM_M138_GPIO1_ANALOG = 0,
171 SWARM_M138_GPIO1_ADC,
172 SWARM_M138_GPIO1_INPUT,
173 SWARM_M138_GPIO1_EXIT_SLEEP_LOW_HIGH,
174 SWARM_M138_GPIO1_EXIT_SLEEP_HIGH_LOW,
175 SWARM_M138_GPIO1_OUTPUT_LOW,
176 SWARM_M138_GPIO1_OUTPUT_HIGH,
177 SWARM_M138_GPIO1_MESSAGES_UNREAD_LOW,
178 SWARM_M138_GPIO1_MESSAGES_UNREAD_HIGH,
179 SWARM_M138_GPIO1_MESSAGES_UNSENT_LOW,
180 SWARM_M138_GPIO1_MESSAGES_UNSENT_HIGH,
181 SWARM_M138_GPIO1_MESSAGES_UNREAD_UNSENT_LOW,
182 SWARM_M138_GPIO1_MESSAGES_UNREAD_UNSENT_HIGH,
183 SWARM_M138_GPIO1_SLEEP_MODE_LOW,
184 SWARM_M138_GPIO1_SLEEP_MODE_HIGH,
185 SWARM_M138_GPIO1_INVALID
191 SWARM_M138_GPS_FIX_TYPE_NF = 0,
192 SWARM_M138_GPS_FIX_TYPE_DR,
193 SWARM_M138_GPS_FIX_TYPE_G2,
194 SWARM_M138_GPS_FIX_TYPE_G3,
195 SWARM_M138_GPS_FIX_TYPE_D2,
196 SWARM_M138_GPS_FIX_TYPE_D3,
197 SWARM_M138_GPS_FIX_TYPE_RK,
198 SWARM_M138_GPS_FIX_TYPE_TT,
199 SWARM_M138_GPS_FIX_TYPE_INVALID
226 int16_t rssi_background;
237 SWARM_M138_WAKE_CAUSE_GPIO = 0,
238 SWARM_M138_WAKE_CAUSE_SERIAL,
239 SWARM_M138_WAKE_CAUSE_TIME,
240 SWARM_M138_WAKE_CAUSE_INVALID
246 SWARM_M138_MODEM_STATUS_BOOT_ABORT = 0,
247 SWARM_M138_MODEM_STATUS_BOOT_DEVICEID,
248 SWARM_M138_MODEM_STATUS_BOOT_POWERON,
249 SWARM_M138_MODEM_STATUS_BOOT_RUNNING,
250 SWARM_M138_MODEM_STATUS_BOOT_UPDATED,
251 SWARM_M138_MODEM_STATUS_BOOT_VERSION,
252 SWARM_M138_MODEM_STATUS_BOOT_RESTART,
253 SWARM_M138_MODEM_STATUS_BOOT_SHUTDOWN,
254 SWARM_M138_MODEM_STATUS_DATETIME,
255 SWARM_M138_MODEM_STATUS_POSITION,
256 SWARM_M138_MODEM_STATUS_DEBUG,
257 SWARM_M138_MODEM_STATUS_ERROR,
258 SWARM_M138_MODEM_STATUS_UNKNOWN,
259 SWARM_M138_MODEM_STATUS_INVALID
271 #ifdef SWARM_M138_SOFTWARE_SERIAL_ENABLED
272 bool begin(SoftwareSerial &softSerial);
274 bool begin(HardwareSerial &hardSerial);
382 void setReceiveMessageCallback(
void (*swarmReceiveMessageCallback)(
const uint16_t *appID,
const int16_t *rssi,
const int16_t *snr,
const int16_t *fdev,
const char *asciiHex));
386 void setTransmitDataCallback(
void (*swarmTransmitDataCallback)(
const int16_t *rssi_sat,
const int16_t *snr,
const int16_t *fdev,
const uint64_t *msg_id));
394 #define SWARM_M138_MAX_CMD_ERROR_LEN 32
398 HardwareSerial *_hardSerial;
399 #ifdef SWARM_M138_SOFTWARE_SERIAL_ENABLED
400 SoftwareSerial *_softSerial;
408 bool _checkUnsolicitedMsgReentrant;
410 #define _RxBuffSize 512
415 const unsigned long _rxWindowMillis = 12;
424 void (*_swarmReceiveMessageCallback)(
const uint16_t *appID,
const int16_t *rssi,
const int16_t *snr,
const int16_t *fdev,
const char *asciiHex);
428 void (*_swarmTransmitDataCallback)(
const int16_t *rssi_sat,
const int16_t *snr,
const int16_t *fdev,
const uint64_t *id);
431 void addChecksumLF(
char *command);
440 Swarm_M138_Error_e sendCommandWithResponse(
const char *command,
const char *expectedResponseStart,
const char *expectedErrorStart,
444 void sendCommand(
const char *command);
447 Swarm_M138_Error_e waitForResponse(
const char *expectedResponseStart,
const char *expectedErrorStart,
452 bool useHold, uint32_t hold,
bool useEpoch, uint32_t epoch);
456 bool useHold, uint32_t hold,
bool useEpoch, uint32_t epoch);
459 Swarm_M138_Error_e readMessageInternal(
const char mode, uint64_t msg_id_in,
char *asciiHex,
size_t len, uint64_t *msg_id_out, uint32_t *epoch, uint16_t *appID);
461 bool initializeBuffers(
void);
462 bool processUnsolicitedEvent(
const char *event);
463 void pruneBacklog(
void);
469 int qwiicSwarmAvailable(
void);
470 int qwiicSwarmReadChars(
int len,
char *dest);
471 int qwiicSwarmWriteChars(
int len,
const char *dest);
472 unsigned long _lastI2cCheck;
473 #define QWIIC_SWARM_I2C_POLLING_WAIT_MS 2
475 #define QWIIC_SWARM_LEN_REG 0xFD
476 #define QWIIC_SWARM_DATA_REG 0xFF
478 #define QWIIC_SWARM_SER_PACKET_SIZE 8
480 #define QWIIC_SWARM_I2C_BUFFER_LENGTH 32
484 char *swarm_m138_alloc_char(
size_t num);
485 void swarm_m138_free_char(
char *freeMe);
488 size_t hwPrint(
const char *s);
489 size_t hwWriteData(
const char *buff,
int len);
490 size_t hwWrite(
const char c);
491 int hwAvailable(
void);
492 int hwReadChars(
char *buf,
int len);
494 void beginSerial(
unsigned long baud);
Swarm_M138_Error_e
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:119
@ SWARM_M138_ERROR_INVALID_MODE
Indicates the GPIO1 pin mode was invalid.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:127
@ SWARM_M138_ERROR_ERR
Command input error (ERR) - the error is copied into commandError.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:128
@ SWARM_M138_ERROR_INVALID_RATE
Indicates the message rate was invalid.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:126
@ SWARM_M138_ERROR_ERROR
Just a plain old communication error.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:120
@ SWARM_M138_ERROR_MEM_ALLOC
Memory allocation error.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:122
@ SWARM_M138_ERROR_TIMEOUT
Communication timeout.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:123
@ SWARM_M138_ERROR_INVALID_FORMAT
Indicates the command response format was invalid.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:124
@ SWARM_M138_ERROR_SUCCESS
Hey, it worked!
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:121
@ SWARM_M138_ERROR_INVALID_CHECKSUM
Indicates the command response checksum was invalid.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:125
const char SWARM_M138_COMMAND_GPS_JAMMING[]
GPS Jamming/Spoofing Indication.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:102
Swarm_M138_Modem_Status_e
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:245
const char SWARM_M138_COMMAND_RX_DATA_MSG[]
Receive Data Message.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:110
Swarm_M138_GPIO1_Mode_e
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:169
const char SWARM_M138_COMMAND_MSG_RX_MGMT[]
Messages Received Management.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:106
const char SWARM_M138_COMMAND_FIRMWARE_VER[]
Retrieve Firmware Version.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:101
const char SWARM_M138_COMMAND_MSG_TX_MGMT[]
Messages to Transmit Management.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:107
const char SWARM_M138_COMMAND_SLEEP[]
Sleep Mode.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:113
const char SWARM_M138_COMMAND_POWER_STAT[]
Power Status.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:109
const char SWARM_M138_COMMAND_GPIO1_CONTROL[]
GPIO1 Control.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:104
const char SWARM_M138_COMMAND_GPS_FIX_QUAL[]
GPS Fix Quality.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:105
const char SWARM_M138_COMMAND_TX_DATA[]
Transmit Data.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:115
#define SFE_QWIIC_SWARM_DEFAULT_I2C_ADDRESS
The default I2C address for the SparkFun Qwiic Swarm Breakout.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:87
const char SWARM_M138_COMMAND_GEOSPATIAL_INFO[]
Geospatial Information.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:103
const char SWARM_M138_COMMAND_RX_TEST[]
Receive Test.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:112
Swarm_M138_GPS_Fix_Type_e
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:190
const char SWARM_M138_COMMAND_RESTART[]
Restart Device.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:111
const char SWARM_M138_COMMAND_MODEM_STAT[]
Modem Status.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:114
Swarm_M138_Wake_Cause_e
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:236
#define SWARM_M138_STANDARD_RESPONSE_TIMEOUT
Standard command timeout: allow one second for the modem to respond.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:77
const char SWARM_M138_COMMAND_CONFIGURATION[]
Configuration Settings.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:99
const char SWARM_M138_COMMAND_DATE_TIME_STAT[]
Date/Time Status.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:100
const uint32_t SWARM_M138_MAX_MESSAGE_RATE
2147483647 (2^31 - 1)
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:133
const char SWARM_M138_COMMAND_POWER_OFF[]
Power Off.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:108
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:264
Swarm_M138_Error_e getReceiveTestRate(uint32_t *rate)
Query the current $RT rate.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:2635
Swarm_M138_Error_e getPowerStatus(Swarm_M138_Power_Status_t *powerStatus)
Get the most recent $PW message.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:2228
Swarm_M138_Error_e deleteTxMessage(uint64_t msg_id)
Delete the TX message with the specified ID.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:3740
void setDateTimeCallback(void(*swarmDateTimeCallback)(const Swarm_M138_DateTimeData_t *dateTime))
Set up the callback for the $DT Date Time message.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:4774
void setPowerStatusCallback(void(*swarmPowerStatusCallback)(const Swarm_M138_Power_Status_t *status))
Set up the callback for the $PW power status message.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:4822
Swarm_M138_Error_e getConfigurationSettings(char *settings)
Read the modem device ID and name using the $CS message.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:956
Swarm_M138_Error_e deleteAllTxMessages(void)
Delete all unsent messages.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:3828
void setSleepWakeCallback(void(*swarmSleepWakeCallback)(Swarm_M138_Wake_Cause_e cause))
Set up the callback for the $SL WAKE sleep mode messages.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:4858
Swarm_M138_Error_e listMessage(uint64_t msg_id, char *asciiHex, size_t len, uint32_t *epoch=NULL, uint16_t *appID=NULL)
List the message with the specified ID. Does not change message state.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:3396
void setReceiveTestCallback(void(*swarmReceiveTestCallback)(const Swarm_M138_Receive_Test_t *rxTest))
Set up the callback for the $RT receive test message.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:4834
Swarm_M138_Error_e setGPIO1Mode(Swarm_M138_GPIO1_Mode_e mode)
Get the current GPIO1 pin mode using the $GP message.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:1834
void setGeospatialInfoCallback(void(*swarmGeospatialCallback)(const Swarm_M138_GeospatialData_t *info))
Set up the callback for the $GN geospatial information message.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:4798
Swarm_M138_Error_e getDateTimeRate(uint32_t *rate)
Query the current $DT rate.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:1173
Swarm_M138_Error_e readOldestMessage(char *asciiHex, size_t len, uint64_t *msg_id, uint32_t *epoch=NULL, uint16_t *appID=NULL)
Read the oldest unread message.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:3442
Swarm_M138_Error_e getGeospatialInfo(Swarm_M138_GeospatialData_t *info)
Get the most recent $GN message.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:1559
Swarm_M138_Error_e markRxMessage(uint64_t msg_id)
Mark the RX message with the specified ID as read.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:3151
bool isConnected(void)
Check if the modem is connected and responding by getting the configuration settings.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:136
Swarm_M138_Error_e setMessageNotifications(bool enable)
Enable / disable receive message notifications.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:3345
Swarm_M138_Error_e getCPUvoltage(float *voltage)
Get the modem CPU voltage.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:2466
Swarm_M138_Error_e deleteAllRxMessages(bool read=true)
Delete all read RX messages (default) or all messages (read = false)
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:3072
Swarm_M138_Error_e transmitTextHold(const char *data, uint64_t *msg_id, uint32_t hold)
Queue a printable text message for transmission with a hold duration.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:4323
Swarm_M138_Error_e getMessageNotifications(bool *enabled)
Query if message notifications are enabled.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:3297
void setGpsJammingCallback(void(*swarmGpsJammingCallback)(const Swarm_M138_GPS_Jamming_Indication_t *jamming))
Set up the callback for the $GJ jamming indication message.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:4786
Swarm_M138_Error_e transmitText(const char *data, uint64_t *msg_id)
List the IDs of all the unsent messages.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:4281
Swarm_M138_Error_e setGpsFixQualityRate(uint32_t rate)
Set the rate of $GS GPS fix quality messages.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:2143
Swarm_M138_Error_e getDateTime(Swarm_M138_DateTimeData_t *dateTime)
Get the most recent $DT message.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:1098
Swarm_M138_Error_e sleepMode(uint32_t seconds)
Instruct the modem to sleep for this many seconds.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:2763
Swarm_M138_Error_e powerOff(void)
The Modem enters a low power mode until power is completely removed and restored.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:2189
Swarm_M138_Error_e setGpsJammingIndicationRate(uint32_t rate)
Set the rate of $GJ jamming indication messages.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:1512
Swarm_M138_Error_e getDeviceID(uint32_t *id)
Read the modem device ID using the $CS message.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:1020
const char * modemStatusString(Swarm_M138_Modem_Status_e status)
Convert modem status enum into printable text.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:4897
bool checkUnsolicitedMsg(void)
Check for the arrival of new serial data. Parse it. Process any unsolicited messages....
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:199
const char * commandErrorString(const char *ERR)
Convert command error into a printable description.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:4998
Swarm_M138_Error_e getGpsFixQualityRate(uint32_t *rate)
Query the current $GS rate.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:2063
Swarm_M138_Error_e setDateTimeRate(uint32_t rate)
Set the rate of $DT Date/Time messages.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:1253
bool begin(HardwareSerial &hardSerial)
Begin communication with the Swarm M138 modem.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:89
Swarm_M138_Error_e setPowerStatusRate(uint32_t rate)
Set the rate of $PW power status messages.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:2399
Swarm_M138_Error_e transmitBinaryExpire(const uint8_t *data, size_t len, uint64_t *msg_id, uint32_t epoch)
Queue a binary message for transmission with an expiry time (epoch)
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:4619
Swarm_M138_Error_e deleteRxMessage(uint64_t msg_id)
Delete the RX message with the specified ID.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:2981
void setGpsFixQualityCallback(void(*swarmGpsFixQualityCallback)(const Swarm_M138_GPS_Fix_Quality_t *fixQuality))
Set up the callback for the $GS GPS fix quality message.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:4810
Swarm_M138_Error_e getTemperature(float *temperature)
Get the modem temperature.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:2446
Swarm_M138_Error_e getGpsJammingIndicationRate(uint32_t *rate)
Query the current $GJ rate.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:1432
Swarm_M138_Error_e getGpsFixQuality(Swarm_M138_GPS_Fix_Quality_t *fixQuality)
Get the most recent $GS message.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:1971
void disableDebugging(void)
Disable debug messages.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:187
Swarm_M138_Error_e markAllRxMessages(void)
Mark all RX messages as read.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:3239
Swarm_M138_Error_e getGpsJammingIndication(Swarm_M138_GPS_Jamming_Indication_t *jamming)
Get the most recent $GJ message.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:1363
Swarm_M138_Error_e getUnsentMessageCount(uint16_t *count)
Return the count of all unsent messages.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:3658
Swarm_M138_Error_e readMessage(uint64_t msg_id, char *asciiHex, size_t len, uint32_t *epoch=NULL, uint16_t *appID=NULL)
Read the message with the specified ID.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:3419
void setTransmitDataCallback(void(*swarmTransmitDataCallback)(const int16_t *rssi_sat, const int16_t *snr, const int16_t *fdev, const uint64_t *msg_id))
Set up the callback for $TD SENT messages.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:4883
Swarm_M138_Error_e getPowerStatusRate(uint32_t *rate)
Query the current $PW rate.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:2319
Swarm_M138_Error_e getGPIO1Mode(Swarm_M138_GPIO1_Mode_e *mode)
Get the current GPIO1 pin mode using the $GP message.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:1766
const char * modemErrorString(Swarm_M138_Error_e error)
Convert modem error enum into printable text.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:4954
Swarm_M138_Error_e transmitBinaryHold(const uint8_t *data, size_t len, uint64_t *msg_id, uint32_t hold)
Queue a binary message for transmission with a hold duration.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:4569
void setModemStatusCallback(void(*swarmModemStatusCallback)(Swarm_M138_Modem_Status_e status, const char *data))
Set up the callback for the $M138 modem status messages.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:4846
void setReceiveMessageCallback(void(*swarmReceiveMessageCallback)(const uint16_t *appID, const int16_t *rssi, const int16_t *snr, const int16_t *fdev, const char *asciiHex))
Set up the callback for the $RD receive data message.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:4870
Swarm_M138_Error_e listTxMessage(uint64_t msg_id, char *asciiHex, size_t len, uint32_t *epoch=NULL, uint16_t *appID=NULL)
List the unsent message with the specified ID.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:3900
Swarm_M138_Error_e readGPIO1voltage(float *voltage)
Read the voltage on GPIO1 (Modes 1 and 2 only)
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:1880
Swarm_M138_Error_e setReceiveTestRate(uint32_t rate)
Set the rate of $RT receive test messages.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:2715
Swarm_M138_Error_e transmitTextExpire(const char *data, uint64_t *msg_id, uint32_t epoch)
Queue a printable text message for transmission with an expiry time (epoch)
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:4369
Swarm_M138_Error_e getFirmwareVersion(char *version)
Read the modem firmware version using the $FV message.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:1302
SWARM_M138(void)
Class to communicate with the Swarm M138 satellite modem.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:28
Swarm_M138_Error_e transmitBinary(const uint8_t *data, size_t len, uint64_t *msg_id)
Queue a binary message for transmission.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:4523
Swarm_M138_Error_e getReceiveTest(Swarm_M138_Receive_Test_t *rxTest)
Get the most recent $RT message.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:2531
Swarm_M138_Error_e restartDevice(bool deletedb=false)
Restart the modem.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:2487
Swarm_M138_Error_e setGeospatialInfoRate(uint32_t rate)
Set the rate of $GN geospatial information messages.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:1719
Swarm_M138_Error_e getGeospatialInfoRate(uint32_t *rate)
Query the current $GN rate.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:1639
Swarm_M138_Error_e readNewestMessage(char *asciiHex, size_t len, uint64_t *msg_id, uint32_t *epoch=NULL, uint16_t *appID=NULL)
Read the newest unread message.
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:3465
Swarm_M138_Error_e getRxMessageCount(uint16_t *count, bool unread=false)
Return the count of all messages (default) or unread messages (unread = true)
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:2896
void enableDebugging(Stream &debugPort=Serial)
Enable debug messages on the chosen serial port Calling this function with nothing sets the debug por...
Definition: SparkFun_Swarm_Satellite_Arduino_Library.cpp:176
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:137
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:204
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:149
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:159
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:214
Definition: SparkFun_Swarm_Satellite_Arduino_Library.h:224