30#ifndef FLEET_PROVISIONING_H_
31#define FLEET_PROVISIONING_H_
46#ifndef FLEET_PROVISIONING_DO_NOT_USE_CUSTOM_CONFIG
47 #include "fleet_provisioning_config.h"
59 FleetProvisioningError = 0,
60 FleetProvisioningSuccess,
61 FleetProvisioningNoMatch,
62 FleetProvisioningBadParameter,
63 FleetProvisioningBufferTooSmall
72 FleetProvisioningInvalidTopic = 0,
73 FleetProvJsonCreateCertFromCsrPublish,
74 FleetProvJsonCreateCertFromCsrAccepted,
75 FleetProvJsonCreateCertFromCsrRejected,
76 FleetProvJsonCreateKeysAndCertPublish,
77 FleetProvJsonCreateKeysAndCertAccepted,
78 FleetProvJsonCreateKeysAndCertRejected,
79 FleetProvJsonRegisterThingPublish,
80 FleetProvJsonRegisterThingAccepted,
81 FleetProvJsonRegisterThingRejected,
82 FleetProvCborCreateCertFromCsrPublish,
83 FleetProvCborCreateCertFromCsrAccepted,
84 FleetProvCborCreateCertFromCsrRejected,
85 FleetProvCborCreateKeysAndCertPublish,
86 FleetProvCborCreateKeysAndCertAccepted,
87 FleetProvCborCreateKeysAndCertRejected,
88 FleetProvCborRegisterThingPublish,
89 FleetProvCborRegisterThingAccepted,
90 FleetProvCborRegisterThingRejected
99 FleetProvisioningPublish,
100 FleetProvisioningAccepted,
101 FleetProvisioningRejected
110 FleetProvisioningJson,
111 FleetProvisioningCbor
120#define FP_TEMPLATENAME_MAX_LENGTH 36U
129#define FP_CREATE_CERT_API_PREFIX "$aws/certificates/create-from-csr/"
130#define FP_CREATE_CERT_API_LENGTH_PREFIX ( ( uint16_t ) ( sizeof( FP_CREATE_CERT_API_PREFIX ) - 1U ) )
132#define FP_CREATE_KEYS_API_PREFIX "$aws/certificates/create/"
133#define FP_CREATE_KEYS_API_LENGTH_PREFIX ( ( uint16_t ) ( sizeof( FP_CREATE_KEYS_API_PREFIX ) - 1U ) )
135#define FP_REGISTER_API_PREFIX "$aws/provisioning-templates/"
136#define FP_REGISTER_API_LENGTH_PREFIX ( ( uint16_t ) ( sizeof( FP_REGISTER_API_PREFIX ) - 1U ) )
138#define FP_REGISTER_API_BRIDGE "/provision/"
139#define FP_REGISTER_API_LENGTH_BRIDGE ( ( uint16_t ) ( sizeof( FP_REGISTER_API_BRIDGE ) - 1U ) )
141#define FP_API_JSON_FORMAT "json"
142#define FP_API_LENGTH_JSON_FORMAT ( ( uint16_t ) ( sizeof( FP_API_JSON_FORMAT ) - 1U ) )
144#define FP_API_CBOR_FORMAT "cbor"
145#define FP_API_LENGTH_CBOR_FORMAT ( ( uint16_t ) ( sizeof( FP_API_CBOR_FORMAT ) - 1U ) )
147#define FP_API_ACCEPTED_SUFFIX "/accepted"
148#define FP_API_LENGTH_ACCEPTED_SUFFIX ( ( uint16_t ) ( sizeof( FP_API_ACCEPTED_SUFFIX ) - 1U ) )
150#define FP_API_REJECTED_SUFFIX "/rejected"
151#define FP_API_LENGTH_REJECTED_SUFFIX ( ( uint16_t ) ( sizeof( FP_API_REJECTED_SUFFIX ) - 1U ) )
162#define FP_JSON_CREATE_CERT_PUBLISH_TOPIC \
163 ( FP_CREATE_CERT_API_PREFIX \
169#define FP_JSON_CREATE_CERT_ACCEPTED_TOPIC \
170 ( FP_CREATE_CERT_API_PREFIX \
172 FP_API_ACCEPTED_SUFFIX )
177#define FP_JSON_CREATE_CERT_REJECTED_TOPIC \
178 ( FP_CREATE_CERT_API_PREFIX \
180 FP_API_REJECTED_SUFFIX )
185#define FP_CBOR_CREATE_CERT_PUBLISH_TOPIC \
186 ( FP_CREATE_CERT_API_PREFIX \
192#define FP_CBOR_CREATE_CERT_ACCEPTED_TOPIC \
193 ( FP_CREATE_CERT_API_PREFIX \
195 FP_API_ACCEPTED_SUFFIX )
200#define FP_CBOR_CREATE_CERT_REJECTED_TOPIC \
201 ( FP_CREATE_CERT_API_PREFIX \
203 FP_API_REJECTED_SUFFIX )
208#define FP_JSON_CREATE_CERT_PUBLISH_LENGTH \
209 ( ( uint16_t ) ( sizeof( FP_JSON_CREATE_CERT_PUBLISH_TOPIC ) - 1U ) )
214#define FP_JSON_CREATE_CERT_ACCEPTED_LENGTH \
215 ( ( uint16_t ) ( sizeof( FP_JSON_CREATE_CERT_ACCEPTED_TOPIC ) - 1U ) )
220#define FP_JSON_CREATE_CERT_REJECTED_LENGTH \
221 ( ( uint16_t ) ( sizeof( FP_JSON_CREATE_CERT_REJECTED_TOPIC ) - 1U ) )
226#define FP_CBOR_CREATE_CERT_PUBLISH_LENGTH \
227 ( ( uint16_t ) ( sizeof( FP_CBOR_CREATE_CERT_PUBLISH_TOPIC ) - 1U ) )
232#define FP_CBOR_CREATE_CERT_ACCEPTED_LENGTH \
233 ( ( uint16_t ) ( sizeof( FP_CBOR_CREATE_CERT_ACCEPTED_TOPIC ) - 1U ) )
238#define FP_CBOR_CREATE_CERT_REJECTED_LENGTH \
239 ( ( uint16_t ) ( sizeof( FP_CBOR_CREATE_CERT_REJECTED_TOPIC ) - 1U ) )
248#define FP_JSON_CREATE_KEYS_PUBLISH_TOPIC \
249 ( FP_CREATE_KEYS_API_PREFIX \
255#define FP_JSON_CREATE_KEYS_ACCEPTED_TOPIC \
256 ( FP_CREATE_KEYS_API_PREFIX \
258 FP_API_ACCEPTED_SUFFIX )
264#define FP_JSON_CREATE_KEYS_REJECTED_TOPIC \
265 ( FP_CREATE_KEYS_API_PREFIX \
267 FP_API_REJECTED_SUFFIX )
272#define FP_CBOR_CREATE_KEYS_PUBLISH_TOPIC \
273 ( FP_CREATE_KEYS_API_PREFIX \
279#define FP_CBOR_CREATE_KEYS_ACCEPTED_TOPIC \
280 ( FP_CREATE_KEYS_API_PREFIX \
282 FP_API_ACCEPTED_SUFFIX )
288#define FP_CBOR_CREATE_KEYS_REJECTED_TOPIC \
289 ( FP_CREATE_KEYS_API_PREFIX \
291 FP_API_REJECTED_SUFFIX )
296#define FP_JSON_CREATE_KEYS_PUBLISH_LENGTH \
297 ( ( uint16_t ) ( sizeof( FP_JSON_CREATE_KEYS_PUBLISH_TOPIC ) - 1U ) )
302#define FP_JSON_CREATE_KEYS_ACCEPTED_LENGTH \
303 ( ( uint16_t ) ( sizeof( FP_JSON_CREATE_KEYS_ACCEPTED_TOPIC ) - 1U ) )
308#define FP_JSON_CREATE_KEYS_REJECTED_LENGTH \
309 ( ( uint16_t ) ( sizeof( FP_JSON_CREATE_KEYS_REJECTED_TOPIC ) - 1U ) )
314#define FP_CBOR_CREATE_KEYS_PUBLISH_LENGTH \
315 ( ( uint16_t ) ( sizeof( FP_CBOR_CREATE_KEYS_PUBLISH_TOPIC ) - 1U ) )
320#define FP_CBOR_CREATE_KEYS_ACCEPTED_LENGTH \
321 ( ( uint16_t ) ( sizeof( FP_CBOR_CREATE_KEYS_ACCEPTED_TOPIC ) - 1U ) )
326#define FP_CBOR_CREATE_KEYS_REJECTED_LENGTH \
327 ( ( uint16_t ) ( sizeof( FP_CBOR_CREATE_KEYS_REJECTED_TOPIC ) - 1U ) )
343#define FP_JSON_REGISTER_PUBLISH_TOPIC( templateName ) \
344 ( FP_REGISTER_API_PREFIX \
346 FP_REGISTER_API_BRIDGE \
358#define FP_JSON_REGISTER_ACCEPTED_TOPIC( templateName ) \
359 ( FP_REGISTER_API_PREFIX \
361 FP_REGISTER_API_BRIDGE \
363 FP_API_ACCEPTED_SUFFIX )
374#define FP_JSON_REGISTER_REJECTED_TOPIC( templateName ) \
375 ( FP_REGISTER_API_PREFIX \
377 FP_REGISTER_API_BRIDGE \
379 FP_API_REJECTED_SUFFIX )
390#define FP_CBOR_REGISTER_PUBLISH_TOPIC( templateName ) \
391 ( FP_REGISTER_API_PREFIX \
393 FP_REGISTER_API_BRIDGE \
405#define FP_CBOR_REGISTER_ACCEPTED_TOPIC( templateName ) \
406 ( FP_REGISTER_API_PREFIX \
408 FP_REGISTER_API_BRIDGE \
410 FP_API_ACCEPTED_SUFFIX )
421#define FP_CBOR_REGISTER_REJECTED_TOPIC( templateName ) \
422 ( FP_REGISTER_API_PREFIX \
424 FP_REGISTER_API_BRIDGE \
426 FP_API_REJECTED_SUFFIX )
437#define FP_JSON_REGISTER_PUBLISH_LENGTH( templateNameLength ) \
438 ( FP_REGISTER_API_LENGTH_PREFIX + \
439 ( templateNameLength ) + \
440 FP_REGISTER_API_LENGTH_BRIDGE + \
441 FP_API_LENGTH_JSON_FORMAT )
452#define FP_JSON_REGISTER_ACCEPTED_LENGTH( templateNameLength ) \
453 ( FP_REGISTER_API_LENGTH_PREFIX + \
454 ( templateNameLength ) + \
455 FP_REGISTER_API_LENGTH_BRIDGE + \
456 FP_API_LENGTH_JSON_FORMAT + \
457 FP_API_LENGTH_ACCEPTED_SUFFIX )
468#define FP_JSON_REGISTER_REJECTED_LENGTH( templateNameLength ) \
469 ( FP_REGISTER_API_LENGTH_PREFIX + \
470 ( templateNameLength ) + \
471 FP_REGISTER_API_LENGTH_BRIDGE + \
472 FP_API_LENGTH_JSON_FORMAT + \
473 FP_API_LENGTH_REJECTED_SUFFIX )
484#define FP_CBOR_REGISTER_PUBLISH_LENGTH( templateNameLength ) \
485 ( FP_REGISTER_API_LENGTH_PREFIX + \
486 ( templateNameLength ) + \
487 FP_REGISTER_API_LENGTH_BRIDGE + \
488 FP_API_LENGTH_CBOR_FORMAT )
499#define FP_CBOR_REGISTER_ACCEPTED_LENGTH( templateNameLength ) \
500 ( FP_REGISTER_API_LENGTH_PREFIX + \
501 ( templateNameLength ) + \
502 FP_REGISTER_API_LENGTH_BRIDGE + \
503 FP_API_LENGTH_CBOR_FORMAT + \
504 FP_API_LENGTH_ACCEPTED_SUFFIX )
515#define FP_CBOR_REGISTER_REJECTED_LENGTH( templateNameLength ) \
516 ( FP_REGISTER_API_LENGTH_PREFIX + \
517 ( templateNameLength ) + \
518 FP_REGISTER_API_LENGTH_BRIDGE + \
519 FP_API_LENGTH_CBOR_FORMAT + \
520 FP_API_LENGTH_REJECTED_SUFFIX )
530#define FP_API_CSR_KEY "certificateSigningRequest"
537#define FP_API_OWNERSHIP_TOKEN_KEY "certificateOwnershipToken"
543#define FP_API_CERTIFICATE_ID_KEY "certificateId"
549#define FP_API_CERTIFICATE_PEM_KEY "certificatePem"
555#define FP_API_PRIVATE_KEY_KEY "privateKey"
560#define FP_API_PARAMETERS_KEY "parameters"
566#define FP_API_DEVICE_CONFIG_KEY "deviceConfiguration"
572#define FP_API_THING_NAME_KEY "thingName"
578#define FP_API_STATUS_CODE_KEY "statusCode"
583#define FP_API_ERROR_CODE_KEY "errorCode"
589#define FP_API_ERROR_MESSAGE_KEY "errorMessage"
645 uint16_t bufferLength,
648 const char * pTemplateName,
649 uint16_t templateNameLength,
650 uint16_t * pOutLength );
709 uint16_t topicLength,
FleetProvisioningStatus_t FleetProvisioning_MatchTopic(const char *pTopic, uint16_t topicLength, FleetProvisioningTopic_t *pOutApi)
Check if the given topic is one of the Fleet Provisioning topics.
Definition: fleet_provisioning.c:729
FleetProvisioningStatus_t FleetProvisioning_GetRegisterThingTopic(char *pTopicBuffer, uint16_t bufferLength, FleetProvisioningFormat_t format, FleetProvisioningApiTopics_t topic, const char *pTemplateName, uint16_t templateNameLength, uint16_t *pOutLength)
Populate the topic string for a Fleet Provisioning RegisterThing topic.
Definition: fleet_provisioning.c:638
Default config values for the AWS IoT Fleet Provisioning Library.
FleetProvisioningTopic_t
Fleet Provisioning topic values.
Definition: fleet_provisioning.h:71
FleetProvisioningApiTopics_t
Topics for each Fleet Provisioning APIs.
Definition: fleet_provisioning.h:98
FleetProvisioningStatus_t
Return codes for Fleet Provisioning APIs.
Definition: fleet_provisioning.h:58
FleetProvisioningFormat_t
Message format for Fleet Provisioning APIs.
Definition: fleet_provisioning.h:109