RockBLOCK 9704 C Library
Doxygen documentation for the RockBLOCK 9704 C Library.
jspr.h
Go to the documentation of this file.
1 #ifndef JSPR_H
2 #define JSPR_H
3 
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7 
8 #include <stdio.h>
9 #include <stdint.h>
10 #include <stdbool.h>
11 #include "crossplatform.h"
12 
13 #define RX_BUFFER_SIZE 8192U
14 #define TX_BUFFER_SIZE 8192U
15 
16 #define JSPR_MAX_TARGET_LENGTH 30U
17 #define JSPR_RESULT_CODE_LENGTH 3U
18 #define JSPR_MIN_RESPONSE 9U
19 #define JSPR_MAX_TARGET_LENGTH 30U
20 #define JSPR_MAX_JSON_LENGTH 3500U
21 #define JSPR_MAX_SEGMENT_LENGTH 1447U
22 #define JSPR_MAX_NUM_API_VERSIONS 2U
23 #define JSPR_VERSION_INFO_BUILD_INFO_LEN 50U
24 #define JSPR_BOOT_INFO_IMAGE_TYPE_LEN 11U
25 #define JSPR_BOOT_INFO_HASH_LEN 65U
26 #define JSPR_STATUS_ACTION 7U
27 
28 #define JSPR_TOPIC_NAME_MAX_LENGTH 57U
29 #define JSPR_MAX_TOPICS 20U
30 
31 #define JSPR_HW_VERSION_MAX_LENGTH 7U
32 #define JSPR_SERIAL_NUMBER_MAX_LENGTH 7U
33 #define JSPR_IMEI_MAX_LENGTH 16U
34 
35 #define JSPR_ICCID_MAX_LENGTH 20U
36 
38 {
63 };
64 
65 typedef struct
66 {
67  uint32_t code;
68  char target[JSPR_MAX_TARGET_LENGTH];
70  uint16_t jsonSize;
72 
73 typedef struct
74 {
75  uint8_t major;
76  uint8_t minor;
77  uint8_t patch;
79 
80 typedef struct
81 {
85 
86 typedef enum
87 {
92 
93 typedef struct
94 {
99 
100 typedef struct
101 {
107 
108 typedef enum
109 {
115 
116 typedef struct
117 {
118  bool ifaceSet;
121 
122 typedef struct
123 {
125  bool validity;
129 
130 typedef enum
131 {
138  FAULT
140 
141 typedef enum
142 {
152 
153 typedef struct
154 {
159 
160 typedef enum
161 {
166 
167 typedef struct
168 {
169  uint16_t topic;
171  uint8_t messageId;
175 
176 typedef struct
177 {
178  uint16_t topic;
179  uint8_t messageId;
180  uint16_t segmentLength;
181  uint32_t segmentStart;
183 
184 typedef struct
185 {
186  uint16_t topic;
187  uint8_t messageId;
190 
191 typedef struct
192 {
193  uint16_t topic;
194  uint8_t messageId;
195  uint16_t segmentLength;
196  uint32_t segmentStart;
198  size_t dataLength;
200 
201 typedef struct
202 {
204  uint8_t signalBars;
205  int16_t signalLevel;
207 
208 typedef enum
209 {
225 
226 typedef struct
227 {
228  uint16_t topic;
229  uint8_t messageId;
230  char action [JSPR_STATUS_ACTION];
233 
234 typedef enum
235 {
241 
242 typedef struct
243 {
244  uint16_t topic;
245  uint8_t messageId;
248 
249 typedef enum
250 {
258 
259 typedef struct
260 {
261  uint16_t topicId;
262  char topicName[JSPR_TOPIC_NAME_MAX_LENGTH];
265  uint8_t maxQueueDepth;
267 
268 typedef struct
269 {
271  uint8_t topicCount;
274 
275 typedef struct
276 {
277  char hwVersion[JSPR_HW_VERSION_MAX_LENGTH];
278  char serialNumber[JSPR_SERIAL_NUMBER_MAX_LENGTH];
280  int8_t boardTemp;
281 } jsprHwInfo_t;
282 
283 typedef struct
284 {
289 
290 //internal functions
291 int sendJspr(const char * buffer, size_t length);
292 bool receiveJspr(jsprResponse_t * response, const char * expectedTarget);
293 bool waitForJsprMessage(jsprResponse_t * response, const char * expectedTarget, const uint32_t expectedCode, const uint32_t timeoutSeconds);
295 bool parseJsprBootInfo(const char * jsprString, jsprBootInfo_t * bootInfo);
296 bool parseJsprGetApiVersion(char * jsprString, jsprApiVersion_t * apiVersion);
297 bool parseJsprFirmwareInfo(const char * jsprString, jsprFirmwareInfo_t * firmwareInfo);
298 bool parseJsprGetSimInterface(char * jsprString, jsprSimInterface_t * simInterface);
299 bool parseJsprGetOperationalState(char * jsprString, jsprOperationalState_t * operationalState);
300 bool parseJsprPutMessageOriginate(char * jsprString, jsprMessageOriginate_t * messageOriginate);
301 bool parseJsprUnsMessageOriginateSegment(char * jsprString, jsprMessageOriginateSegment_t * messageOriginateSegment);
302 bool parseJsprUnsMessageTerminate(char * jsprString, jsprMessageTerminate_t * messageTerminate);
303 bool parseJsprUnsMessageTerminateSegment(char * jsprString, jsprMessageTerminateSegment_t * messageTerminateSegment);
304 bool parseJsprGetSignal(char * jsprString, jsprConstellationState_t * signal);
305 bool parseJsprUnsMessageOriginateStatus(char * jsprString, jsprMessageOriginateStatus_t * messageOriginateStatus);
306 bool parseJsprUnsMessageTerminateStatus(char * jsprString, jsprMessageTerminateStatus_t * messageTerminateStatus);
307 bool parseJsprGetMessageProvisioning(char * jsprString, jsprMessageProvisioning_t * messageProvisioning);
308 bool parseJsprGetHwInfo(char * jsprString, jsprHwInfo_t * hwInfo);
309 bool parseJsprGetSimStatus(char * jsprString, jsprSimStatus_t * simStatus);
310 
311 #ifdef __cplusplus
312 }
313 #endif
314 
315 #endif
bool receiveJspr(jsprResponse_t *response, const char *expectedTarget)
Definition: jspr.c:35
availableSimInterfaces_t
Definition: jspr.h:109
@ SIM_INTERNAL
Definition: jspr.h:113
@ SIM_LOCAL
Definition: jspr.h:111
@ SIM_REMOTE
Definition: jspr.h:112
@ SIM_NONE
Definition: jspr.h:110
void clearResponse(jsprResponse_t *response)
Definition: jspr.c:174
#define JSPR_BOOT_INFO_IMAGE_TYPE_LEN
Definition: jspr.h:24
#define JSPR_HW_VERSION_MAX_LENGTH
Definition: jspr.h:31
bool parseJsprGetHwInfo(char *jsprString, jsprHwInfo_t *hwInfo)
Definition: jspr.c:987
#define JSPR_SERIAL_NUMBER_MAX_LENGTH
Definition: jspr.h:32
bool parseJsprUnsMessageTerminateStatus(char *jsprString, jsprMessageTerminateStatus_t *messageTerminateStatus)
Definition: jspr.c:860
bool parseJsprGetSimInterface(char *jsprString, jsprSimInterface_t *simInterface)
Definition: jspr.c:414
bool waitForJsprMessage(jsprResponse_t *response, const char *expectedTarget, const uint32_t expectedCode, const uint32_t timeoutSeconds)
Definition: jspr.c:146
jsprBootSource_t
Definition: jspr.h:87
@ JSPR_BOOT_SOURCE_FALLBACK
Definition: jspr.h:90
@ JSPR_BOOT_SOURCE_UNKNOWN
Definition: jspr.h:88
@ JSPR_BOOT_SOURCE_PRIMARY
Definition: jspr.h:89
bool parseJsprUnsMessageTerminate(char *jsprString, jsprMessageTerminate_t *messageTerminate)
Definition: jspr.c:636
bool parseJsprGetOperationalState(char *jsprString, jsprOperationalState_t *operationalState)
Definition: jspr.c:459
#define JSPR_TOPIC_NAME_MAX_LENGTH
Definition: jspr.h:28
#define JSPR_MAX_TOPICS
Definition: jspr.h:29
jsprTopicPriority_t
Definition: jspr.h:250
@ MEDIUM_PRIORITY
Definition: jspr.h:255
@ SAFETY_3
Definition: jspr.h:253
@ SAFETY_2
Definition: jspr.h:252
@ HIGH_PRIORITY
Definition: jspr.h:254
@ LOW_PRIORITY
Definition: jspr.h:256
@ SAFETY_1
Definition: jspr.h:251
#define JSPR_STATUS_ACTION
Definition: jspr.h:26
bool parseJsprGetSimStatus(char *jsprString, jsprSimStatus_t *simStatus)
Definition: jspr.c:1026
bool parseJsprUnsMessageOriginateStatus(char *jsprString, jsprMessageOriginateStatus_t *messageOriginateStatus)
Definition: jspr.c:768
#define JSPR_BOOT_INFO_HASH_LEN
Definition: jspr.h:25
#define JSPR_MAX_JSON_LENGTH
Definition: jspr.h:20
#define JSPR_IMEI_MAX_LENGTH
Definition: jspr.h:33
availableOperationalStates_t
Definition: jspr.h:131
@ RF_SCAN
Definition: jspr.h:136
@ ACTIVE
Definition: jspr.h:133
@ INACTIVE
Definition: jspr.h:132
@ HW_SELF_TEST
Definition: jspr.h:135
@ LOOPBACK
Definition: jspr.h:137
@ FAULT
Definition: jspr.h:138
@ CAL_TEST
Definition: jspr.h:134
#define JSPR_MAX_TARGET_LENGTH
Definition: jspr.h:19
responseCodes
Definition: jspr.h:38
@ JSPR_RC_UNAUTHORIZED
Definition: jspr.h:50
@ JSPR_RC_INVALID_RADIO_PATH
Definition: jspr.h:56
@ JSPR_RC_INVALID_CHANNEL
Definition: jspr.h:53
@ JSPR_RC_OPERATION_NOT_ALLOWED
Definition: jspr.h:47
@ JSPR_RC_BAD_JSON
Definition: jspr.h:48
@ JSPR_RC_INVALID_TRANSMIT_POWER
Definition: jspr.h:60
@ JSPR_RC_WAKE_XCVR_IN_INVALID
Definition: jspr.h:52
@ JSPR_RC_CONFIGURATION_ALREADY_SET
Definition: jspr.h:43
@ JSPR_RC_API_VERSION_NOT_SELECTED
Definition: jspr.h:41
@ JSPR_RC_SIM_NOT_CONFIGURED
Definition: jspr.h:51
@ JSPR_RC_UNSUPPORTED_REQUEST_TYPE
Definition: jspr.h:42
@ JSPR_RC_CRASH_DUMP_NOT_AVAILABLE
Definition: jspr.h:57
@ JSPR_RC_INVALID_ACTION
Definition: jspr.h:54
@ JSPR_RC_COMMAND_TOO_LONG
Definition: jspr.h:44
@ JSPR_RC_SERIAL_PORT_ERROR
Definition: jspr.h:62
@ JSPR_RC_FEATURE_NOT_SUPPORTED_BY_HARDWARE
Definition: jspr.h:58
@ JSPR_RC_HARDWARE_NOT_CONFIGURED
Definition: jspr.h:55
@ JSPR_RC_NO_ERROR
Definition: jspr.h:39
@ JSPR_RC_INVALID_BURST_TYPE
Definition: jspr.h:61
@ JSPR_RC_NOT_PROVISIONED
Definition: jspr.h:59
@ JSPR_RC_COMMAND_MALFORMED
Definition: jspr.h:46
@ JSPR_RC_UNSOLICITED_MESSAGE
Definition: jspr.h:40
@ JSPR_RC_UNKNOWN_TARGET
Definition: jspr.h:45
@ JSPR_RC_REQUEST_FAILED
Definition: jspr.h:49
operationalStateReason_t
Definition: jspr.h:142
@ LOW_SUPPLY_VOLTAGE
Definition: jspr.h:149
@ HARDWARE_SELF_TEST_FAILURE
Definition: jspr.h:144
@ NORMAL
Definition: jspr.h:143
@ VAM_APP_FAILED_ACK_INTERFACE_TRANSITION_FLOWING
Definition: jspr.h:147
@ INVALID_HARDWARE
Definition: jspr.h:148
@ MFRTEST_USED_INCORRECTLY
Definition: jspr.h:150
@ RF_POWER_PROTECTION_FAULT
Definition: jspr.h:146
@ TEMPERATURE_FAULT
Definition: jspr.h:145
bool parseJsprBootInfo(const char *jsprString, jsprBootInfo_t *bootInfo)
Definition: jspr.c:182
bool parseJsprUnsMessageTerminateSegment(char *jsprString, jsprMessageTerminateSegment_t *messageTerminateSegment)
Definition: jspr.c:676
#define JSPR_ICCID_MAX_LENGTH
Definition: jspr.h:35
bool parseJsprUnsMessageOriginateSegment(char *jsprString, jsprMessageOriginateSegment_t *messageOriginateSegment)
Definition: jspr.c:588
messageOriginateResponses_t
Definition: jspr.h:161
@ SUBSCRIPTION_INVALID
Definition: jspr.h:163
@ MESSAGE_ACCEPTED
Definition: jspr.h:162
@ MESSAGE_DISCARDED_ON_OVERFLOW
Definition: jspr.h:164
bool parseJsprGetSignal(char *jsprString, jsprConstellationState_t *signal)
Definition: jspr.c:731
jsprFinalMoStatus_t
Definition: jspr.h:209
@ MESSAGE_DISCARDED_ON_OVERFLOW_MOS
Definition: jspr.h:211
@ NETWORK_ERROR_MOS
Definition: jspr.h:216
@ MESSAGE_CANCELLED_IN_TRANSIT_MOS
Definition: jspr.h:218
@ SUBSCRIPTION_INVALID_MOS
Definition: jspr.h:219
@ PROTOCOL_ERROR_MOS
Definition: jspr.h:220
@ CRC_ERROR_IN_TRANSFER_MOS
Definition: jspr.h:222
@ MESSAGE_TRANSFER_TIMEOUT_MOS
Definition: jspr.h:213
@ MESSAGE_CANCELLED_PRE_TRANSIT_MOS
Definition: jspr.h:217
@ USER_SUPPLIED_CRC_ERROR_MOS
Definition: jspr.h:223
@ SEGMENT_NOT_SUPPLIED_MOS
Definition: jspr.h:214
@ MO_ACK_RECEIVED_MOS
Definition: jspr.h:210
@ MESSAGE_EXPIRED_MOS
Definition: jspr.h:212
@ MESSAGE_DROPPED_LOCAL_CRC_ERROR_MOS
Definition: jspr.h:221
@ SEGMENT_INCORRECT_MOS
Definition: jspr.h:215
bool parseJsprGetApiVersion(char *jsprString, jsprApiVersion_t *apiVersion)
Definition: jspr.c:265
bool parseJsprPutMessageOriginate(char *jsprString, jsprMessageOriginate_t *messageOriginate)
Definition: jspr.c:527
jsprFinalMtStatus_t
Definition: jspr.h:235
@ COMPLETE
Definition: jspr.h:236
@ CRC_ERROR_IN_TRANSFER
Definition: jspr.h:239
@ MESSAGE_TIMED_OUT
Definition: jspr.h:237
@ MESSAGE_CANCELLED
Definition: jspr.h:238
#define JSPR_VERSION_INFO_BUILD_INFO_LEN
Definition: jspr.h:23
#define JSPR_MAX_NUM_API_VERSIONS
Definition: jspr.h:22
bool parseJsprFirmwareInfo(const char *jsprString, jsprFirmwareInfo_t *firmwareInfo)
Definition: jspr.c:324
bool parseJsprGetMessageProvisioning(char *jsprString, jsprMessageProvisioning_t *messageProvisioning)
Definition: jspr.c:912
#define JSPR_MAX_SEGMENT_LENGTH
Definition: jspr.h:21
int sendJspr(const char *buffer, size_t length)
Definition: jspr.c:20
static jsprResponse_t response
Definition: rockblock_9704.c:41
jsprSimStatus_t simStatus
Definition: rockblock_9704.c:38
jsprHwInfo_t hwInfo
Definition: rockblock_9704.c:37
jsprFirmwareInfo_t firmwareInfo
Definition: rockblock_9704.c:39
Definition: jspr.h:101
bool activeVersionSet
Definition: jspr.h:104
jsprDottedVersion_t activeVersion
Definition: jspr.h:105
uint8_t supportedVersionCount
Definition: jspr.h:103
Definition: jspr.h:94
jsprBootSource_t bootSource
Definition: jspr.h:96
jsprVersionInfo_t versionInfo
Definition: jspr.h:97
Definition: jspr.h:202
uint8_t signalBars
Definition: jspr.h:204
int16_t signalLevel
Definition: jspr.h:205
bool constellationVisible
Definition: jspr.h:203
Definition: jspr.h:74
uint8_t minor
Definition: jspr.h:76
uint8_t patch
Definition: jspr.h:77
uint8_t major
Definition: jspr.h:75
Definition: jspr.h:123
jsprBootSource_t slot
Definition: jspr.h:124
jsprVersionInfo_t versionInfo
Definition: jspr.h:126
bool validity
Definition: jspr.h:125
Definition: jspr.h:276
int8_t boardTemp
Definition: jspr.h:280
Definition: jspr.h:177
uint16_t segmentLength
Definition: jspr.h:180
uint8_t messageId
Definition: jspr.h:179
uint32_t segmentStart
Definition: jspr.h:181
uint16_t topic
Definition: jspr.h:178
Definition: jspr.h:227
uint8_t messageId
Definition: jspr.h:229
uint16_t topic
Definition: jspr.h:228
jsprFinalMoStatus_t finalMoStatus
Definition: jspr.h:231
Definition: jspr.h:168
bool messageIdSet
Definition: jspr.h:172
uint8_t messageId
Definition: jspr.h:171
uint8_t requestReference
Definition: jspr.h:170
messageOriginateResponses_t messageResponse
Definition: jspr.h:173
uint16_t topic
Definition: jspr.h:169
Definition: jspr.h:269
uint8_t topicCount
Definition: jspr.h:271
bool provisioningSet
Definition: jspr.h:272
Definition: jspr.h:192
uint32_t segmentStart
Definition: jspr.h:196
uint8_t messageId
Definition: jspr.h:194
uint16_t topic
Definition: jspr.h:193
size_t dataLength
Definition: jspr.h:198
uint16_t segmentLength
Definition: jspr.h:195
Definition: jspr.h:243
uint16_t topic
Definition: jspr.h:244
jsprFinalMtStatus_t finalMtStatus
Definition: jspr.h:246
uint8_t messageId
Definition: jspr.h:245
Definition: jspr.h:185
uint8_t messageId
Definition: jspr.h:187
uint32_t messageLengthMax
Definition: jspr.h:188
uint16_t topic
Definition: jspr.h:186
Definition: jspr.h:154
operationalStateReason_t reason
Definition: jspr.h:156
availableOperationalStates_t operationalState
Definition: jspr.h:157
bool operationalStateSet
Definition: jspr.h:155
Definition: jspr.h:260
uint16_t topicId
Definition: jspr.h:261
uint8_t maxQueueDepth
Definition: jspr.h:265
uint32_t discardTimeSeconds
Definition: jspr.h:264
jsprTopicPriority_t priority
Definition: jspr.h:263
Definition: jspr.h:66
uint16_t jsonSize
Definition: jspr.h:70
uint32_t code
Definition: jspr.h:67
Definition: jspr.h:117
availableSimInterfaces_t iface
Definition: jspr.h:119
bool ifaceSet
Definition: jspr.h:118
Definition: jspr.h:284
bool cardPresent
Definition: jspr.h:285
bool simConnected
Definition: jspr.h:286
Definition: jspr.h:81
jsprDottedVersion_t version
Definition: jspr.h:82