static FleetProvisioningTopic_t parseCreateCertificateFromCsrTopic()

in source/fleet_provisioning.c [435:471]


static FleetProvisioningTopic_t parseCreateCertificateFromCsrTopic( const char * pTopic,
                                                                    uint16_t topicLength )
{
    /* Table of topics in the same order as TopicFormatSuffix_t. */
    static const FleetProvisioningTopic_t createCertificateFromCsrApi[] =
    {
        FleetProvJsonCreateCertFromCsrPublish,
        FleetProvJsonCreateCertFromCsrAccepted,
        FleetProvJsonCreateCertFromCsrRejected,
        FleetProvCborCreateCertFromCsrPublish,
        FleetProvCborCreateCertFromCsrAccepted,
        FleetProvCborCreateCertFromCsrRejected,
        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_CERT_API_PREFIX,
                             FP_CREATE_CERT_API_LENGTH_PREFIX );

    if( status == FleetProvisioningSuccess )
    {
        /* Match format and suffix */
        rest = parseTopicFormatSuffix( pTopicCursor, cursorLength );
        ret = createCertificateFromCsrApi[ rest ];
    }

    return ret;
}