static void writeFormatAndSuffix()

in source/defender.c [183:251]


static void writeFormatAndSuffix( char * pBuffer,
                                  DefenderTopic_t api )
{
    /* The following variables are to address MISRA Rule 7.4 violation of
     * passing const char * for const void * param of memcpy. */
    const char * pDefenderApiJsonFormat = DEFENDER_API_JSON_FORMAT;
    const char * pDefenderApiCborFormat = DEFENDER_API_CBOR_FORMAT;
    const char * pDefenderApiAcceptedSuffix = DEFENDER_API_ACCEPTED_SUFFIX;
    const char * pDefenderApiRejectedSuffix = DEFENDER_API_REJECTED_SUFFIX;

    assert( pBuffer != NULL );
    assert( ( api > DefenderInvalidTopic ) && ( api < DefenderMaxTopic ) );

    switch( api )
    {
        case DefenderJsonReportPublish:
            ( void ) memcpy( ( void * ) pBuffer,
                             ( const void * ) pDefenderApiJsonFormat,
                             ( size_t ) DEFENDER_API_LENGTH_JSON_FORMAT );
            break;

        case DefenderJsonReportAccepted:
            ( void ) memcpy( ( void * ) pBuffer,
                             ( const void * ) pDefenderApiJsonFormat,
                             ( size_t ) DEFENDER_API_LENGTH_JSON_FORMAT );
            ( void ) memcpy( ( void * ) &( pBuffer[ DEFENDER_API_LENGTH_JSON_FORMAT ] ),
                             ( const void * ) pDefenderApiAcceptedSuffix,
                             ( size_t ) DEFENDER_API_LENGTH_ACCEPTED_SUFFIX );
            break;

        case DefenderJsonReportRejected:
            ( void ) memcpy( ( void * ) pBuffer,
                             ( const void * ) pDefenderApiJsonFormat,
                             DEFENDER_API_LENGTH_JSON_FORMAT );
            ( void ) memcpy( ( void * ) &( pBuffer[ DEFENDER_API_LENGTH_JSON_FORMAT ] ),
                             ( const void * ) pDefenderApiRejectedSuffix,
                             ( size_t ) DEFENDER_API_LENGTH_REJECTED_SUFFIX );
            break;

        case DefenderCborReportPublish:
            ( void ) memcpy( ( void * ) pBuffer,
                             ( const void * ) pDefenderApiCborFormat,
                             ( size_t ) DEFENDER_API_LENGTH_CBOR_FORMAT );
            break;

        case DefenderCborReportAccepted:
            ( void ) memcpy( ( void * ) pBuffer,
                             ( const void * ) pDefenderApiCborFormat,
                             DEFENDER_API_LENGTH_CBOR_FORMAT );
            ( void ) memcpy( ( void * ) &( pBuffer[ DEFENDER_API_LENGTH_CBOR_FORMAT ] ),
                             ( const void * ) pDefenderApiAcceptedSuffix,
                             ( size_t ) DEFENDER_API_LENGTH_ACCEPTED_SUFFIX );
            break;

        /* The default is here just to silence compiler warnings in a way which
         * does not bring coverage down. The assert at the beginning of this
         * function ensures that the only api value hitting this case can be
         * DefenderCborReportRejected. */
        case DefenderCborReportRejected:
        default:
            ( void ) memcpy( ( void * ) pBuffer,
                             ( const void * ) pDefenderApiCborFormat,
                             ( size_t ) DEFENDER_API_LENGTH_CBOR_FORMAT );
            ( void ) memcpy( ( void * ) &( pBuffer[ DEFENDER_API_LENGTH_CBOR_FORMAT ] ),
                             ( const void * ) pDefenderApiRejectedSuffix,
                             ( size_t ) DEFENDER_API_LENGTH_REJECTED_SUFFIX );
            break;
    }
}