in source/fleet_provisioning.c [474:510]
static FleetProvisioningTopic_t parseCreateKeysAndCertificateTopic( const char * pTopic,
uint16_t topicLength )
{
/* Table of topics in the same order as TopicFormatSuffix_t. */
static const FleetProvisioningTopic_t createKeysAndCertificateApi[] =
{
FleetProvJsonCreateKeysAndCertPublish,
FleetProvJsonCreateKeysAndCertAccepted,
FleetProvJsonCreateKeysAndCertRejected,
FleetProvCborCreateKeysAndCertPublish,
FleetProvCborCreateKeysAndCertAccepted,
FleetProvCborCreateKeysAndCertRejected,
FleetProvisioningInvalidTopic
};
FleetProvisioningTopic_t ret = FleetProvisioningInvalidTopic;
FleetProvisioningStatus_t status = FleetProvisioningError;
TopicFormatSuffix_t rest = TopicInvalidFormatSuffix;
const char * pTopicCursor = pTopic;
uint16_t cursorLength = topicLength;
assert( pTopic != NULL );
/* Check if prefix matches */
status = consumeIfMatch( &pTopicCursor,
&cursorLength,
FP_CREATE_KEYS_API_PREFIX,
FP_CREATE_KEYS_API_LENGTH_PREFIX );
if( status == FleetProvisioningSuccess )
{
/* Match format and suffix */
rest = parseTopicFormatSuffix( pTopicCursor, cursorLength );
ret = createKeysAndCertificateApi[ rest ];
}
return ret;
}