1#ifndef ROCKBLOCK_9704_H
2#define ROCKBLOCK_9704_H
65 void (*moMessageComplete)(
const uint16_t id,
const rbMsgStatus_t status);
74 void (*mtMessageComplete)(
const uint16_t id,
const rbMsgStatus_t status);
97#define BASE64_TEMP_BUFFER 2048U
104#define RB9704_BAUD 230400U
124#ifndef SERIAL_CONTEXT_SETUP_FUNC
126 #define SERIAL_CONTEXT_SETUP_FUNC setContextLinux
128 #define SERIAL_CONTEXT_SETUP_FUNC setContextLinux
130 #define SERIAL_CONTEXT_SETUP_FUNC setContextWindows
132 #define SERIAL_CONTEXT_SETUP_FUNC setContextArduino
172bool rbBegin(
const char * port);
189bool rbSendMessage(
const char * data,
const size_t length,
const int timeout);
211bool rbSendMessageAny(uint16_t topic,
const char * data,
const size_t length,
const int timeout);
459static uint16_t
calculateCrc(
const uint8_t * buffer,
const size_t bufferLength,
const uint16_t initialCRC);
479static size_t encodeData(
const char * srcBuffer,
const size_t srcLength,
char * destBuffer,
const size_t destLength);
490static size_t decodeData(
const char * srcBuffer,
const size_t srcLength,
char * destBuffer,
const size_t destLength);
serialContext context
Definition serial.c:6
jsprSimStatus_t simStatus
Definition rockblock_9704.c:38
jsprHwInfo_t hwInfo
Definition rockblock_9704.c:37
size_t rbReceiveMessage(char **buffer)
Listen for a mobile terminated message from the modem.
Definition rockblock_9704.c:443
static bool sendMoFromQueue(const int timeout)
Send a queued message using mobile originated (MO) transmission.
int8_t rbGetSignal(void)
Get the current signal strength from the modem.
Definition rockblock_9704.c:813
static bool getHwInfo(jsprHwInfo_t *hwInfo)
Retrieve hardware information from the modem.
bool rbSendMessageAny(uint16_t topic, const char *data, const size_t length, const int timeout)
Send a mobile originated message from the modem on any topic.
Definition rockblock_9704.c:364
bool rbEnd(void)
Uninitialise/close the the serial connection.
Definition rockblock_9704.c:1049
bool rbGetSimConnected(void)
Check if SIM card is present, communicating properly with, and has presented no errors in SIM transac...
Definition rockblock_9704.c:916
static bool getSimStatus(jsprSimStatus_t *simStatus)
Get current SIM card status.
static bool setState(void)
Set operational state for the modem.
size_t rbReceiveMessageAsync(char **buffer)
Check if a valid message exists, stored at the head of the receiving queue.
Definition rockblock_9704.c:581
static size_t encodeData(const char *srcBuffer, const size_t srcLength, char *destBuffer, const size_t destLength)
Encode binary data to base64 format.
static bool checkProvisioning(uint16_t topic)
Check if the given topic is provisioned.
bool rbSendMessageAsync(uint16_t topic, const char *data, const size_t length)
Queue a message to be sent.
Definition rockblock_9704.c:555
bool rbEndGpio(const rbGpioTable_t *gpioInfo)
Drives user defined pin (power enable) high and another user defined pin (iridium enable) low to dein...
Definition rockblock_9704.c:82
bool rbGetCardPresent(void)
Check if SIM presence is currently asserted.
Definition rockblock_9704.c:906
static bool setSim(void)
Initialise SIM card configuration.
static bool checkMoQueue(void)
Checks if any more messages have been queued, if so, send them.
int8_t rbGetBoardTemp(void)
Get the board temperature.
Definition rockblock_9704.c:879
bool rbBegin(const char *port)
Initialise the the serial connection in the detected context (or user defined), if successful continu...
Definition rockblock_9704.c:258
static size_t decodeData(const char *srcBuffer, const size_t srcLength, char *destBuffer, const size_t destLength)
Decode base64 data back into binary.
static bool listenForMt(void)
Listen for an incoming mobile terminated (MT) message.
size_t rbReceiveMessageWithTopic(char **buffer, uint16_t topic)
Listen for a mobile terminated message from the modem.
Definition rockblock_9704.c:465
static uint16_t calculateCrc(const uint8_t *buffer, const size_t bufferLength, const uint16_t initialCRC)
Calculate CRC for a buffer.
static bool appendCrc(uint8_t *buffer, size_t length)
Append CRC to the end of a buffer.
rbMsgStatus_t
Indicates the result of a message operation.
Definition rockblock_9704.h:30
@ RB_MSG_STATUS_OK
Message was processed successfully.
Definition rockblock_9704.h:34
@ RB_MSG_STATUS_FAIL
Message failed to be processed.
Definition rockblock_9704.h:39
void rbPoll(void)
Polling function that handles all incoming communication from the modem.
Definition rockblock_9704.c:639
bool rbSendMessage(const char *data, const size_t length, const int timeout)
Send a mobile originated message from the modem on the default topic (244).
Definition rockblock_9704.c:328
void rbReceiveUnlockAsync(void)
Unlocks the receiving queue so that old messages are discarded to make space for incoming ones.
Definition rockblock_9704.c:611
cloudloopTopics_t
Predefined Cloudloop topic identifiers for RockBLOCK 9704.
Definition rockblock_9704.h:143
@ RAW_TOPIC
Definition rockblock_9704.h:145
@ PURPLE_TOPIC
Definition rockblock_9704.h:148
@ PINK_TOPIC
Definition rockblock_9704.h:151
@ ORANGE_TOPIC
Definition rockblock_9704.h:157
@ RED_TOPIC
Definition rockblock_9704.h:154
@ YELLOW_TOPIC
Definition rockblock_9704.h:160
char * rbGetHwVersion(void)
Get the hardware version.
Definition rockblock_9704.c:859
bool rbBeginGpio(char *port, const rbGpioTable_t *gpioInfo, const int timeout)
Drives user defined pin (power enable) low and user defined pin (iridium enable) high to initialise t...
Definition rockblock_9704.c:62
char * rbGetSerialNumber(void)
Get the serial number.
Definition rockblock_9704.c:869
bool rbUpdateFirmware(const char *firmwareFile, updateProgressCallback progress, void *context)
Update 9704 firmware. This is a blocking call and will take approximately 10 minutes to upgrade,...
Definition rockblock_9704.c:1127
char * rbGetImei(void)
Get the imei.
Definition rockblock_9704.c:849
char * rbGetFirmwareVersion(void)
Get the Iridium modem firmware version as vX.Y.X with X being the major number, Y being the minor num...
Definition rockblock_9704.c:956
static bool sendMoFromQueueAsync(void)
Send a the modem a request to queue a message.
bool rbResyncServiceConfig(void)
Requests a resynchronisation of the service configuration.
Definition rockblock_9704.c:973
char * rbGetIccid(void)
Get the iccid.
Definition rockblock_9704.c:926
bool rbSendMessageCloudloop(cloudloopTopics_t topic, const char *data, const size_t length, const int timeout)
Send a mobile originated message from the modem on a cloudloop topic of choice.
Definition rockblock_9704.c:346
void(* updateProgressCallback)(void *context, const unsigned long sofar, const unsigned long total)
A callback definition for the kermit transfer.
Definition rockblock_9704.h:408
void rbRegisterCallbacks(const rbCallbacks_t *callbacks)
Registers a set of user-defined callbacks with the library.
Definition rockblock_9704.c:53
void rbReceiveLockAsync(void)
Locks the receiving queue so that old messages aren't discarded when incoming ones arrive.
Definition rockblock_9704.c:606
static bool setApi(void)
Set the modem API version.
bool rbAcknowledgeReceiveHeadAsync(void)
Acknowledge the head of the receiving queue by discarding it.
Definition rockblock_9704.c:616
Struct containing user defined callback functions for asynchronous operations.
Definition rockblock_9704.h:50
void(* messageProvisioning)(const jsprMessageProvisioning_t *messageProvisioning)
Callback for message provisioning info once its been obtained.
Definition rockblock_9704.h:56