Beispiel #1
0
int main(int argc, char * argv[]){
    Cli cli(argc, argv);
    cli.set_publisher("Stratify Labs, Inc");
    cli.handle_version();

	 u32 o_flags;
	 u32 o_execute_flags;
    o_flags = decode_cli(cli, o_execute_flags);
	 (void)o_flags;

    Test::initialize(cli.name(), cli.version());


    Test::finalize();
    return 0;

}
int decode_cs_service_notification(cs_service_notification_msg *cs_service_notification, uint8_t *buffer, uint32_t len)
{
    uint32_t decoded = 0;
    int decoded_result = 0;

    // Check if we got a NULL pointer and if buffer length is >= minimum length expected for the message.
    CHECK_PDU_POINTER_AND_LENGTH_DECODER(buffer, CS_SERVICE_NOTIFICATION_MINIMUM_LENGTH, len);

    /* Decoding mandatory fields */
    if ((decoded_result = decode_paging_identity(&cs_service_notification->pagingidentity, 0, buffer + decoded, len - decoded)) < 0)
        return decoded_result;
    else
        decoded += decoded_result;

    /* Decoding optional fields */
    while(len - decoded > 0)
    {
        uint8_t ieiDecoded = *(buffer + decoded);
        /* Type | value iei are below 0x80 so just return the first 4 bits */
        if (ieiDecoded >= 0x80)
            ieiDecoded = ieiDecoded & 0xf0;
        switch(ieiDecoded)
        {
            case CS_SERVICE_NOTIFICATION_CLI_IEI:
                if ((decoded_result = decode_cli(&cs_service_notification->cli,
                    CS_SERVICE_NOTIFICATION_CLI_IEI, buffer + decoded, len -
                    decoded)) <= 0)
                    return decoded_result;
                decoded += decoded_result;
                /* Set corresponding mask to 1 in presencemask */
                cs_service_notification->presencemask |= CS_SERVICE_NOTIFICATION_CLI_PRESENT;
                break;
            case CS_SERVICE_NOTIFICATION_SS_CODE_IEI:
                if ((decoded_result =
                    decode_ss_code(&cs_service_notification->sscode,
                    CS_SERVICE_NOTIFICATION_SS_CODE_IEI, buffer + decoded, len
                    - decoded)) <= 0)
                    return decoded_result;
                decoded += decoded_result;
                /* Set corresponding mask to 1 in presencemask */
                cs_service_notification->presencemask |= CS_SERVICE_NOTIFICATION_SS_CODE_PRESENT;
                break;
            case CS_SERVICE_NOTIFICATION_LCS_INDICATOR_IEI:
                if ((decoded_result =
                    decode_lcs_indicator(&cs_service_notification->lcsindicator,
                    CS_SERVICE_NOTIFICATION_LCS_INDICATOR_IEI, buffer +
                    decoded, len - decoded)) <= 0)
                    return decoded_result;
                decoded += decoded_result;
                /* Set corresponding mask to 1 in presencemask */
                cs_service_notification->presencemask |= CS_SERVICE_NOTIFICATION_LCS_INDICATOR_PRESENT;
                break;
            case CS_SERVICE_NOTIFICATION_LCS_CLIENT_IDENTITY_IEI:
                if ((decoded_result =
                    decode_lcs_client_identity(&cs_service_notification->lcsclientidentity,
                    CS_SERVICE_NOTIFICATION_LCS_CLIENT_IDENTITY_IEI, buffer +
                    decoded, len - decoded)) <= 0)
                    return decoded_result;
                decoded += decoded_result;
                /* Set corresponding mask to 1 in presencemask */
                cs_service_notification->presencemask |= CS_SERVICE_NOTIFICATION_LCS_CLIENT_IDENTITY_PRESENT;
                break;
            default:
                errorCodeDecoder = TLV_DECODE_UNEXPECTED_IEI;
                return TLV_DECODE_UNEXPECTED_IEI;
        }
    }
    return decoded;
}
Beispiel #3
0
int main(int argc, char * argv[]){
    Cli cli(argc, argv);
    cli.set_publisher("Stratify Labs, Inc");
    cli.handle_version();
    u32 o_flags;
    u32 o_execute_flags;

    o_flags = decode_cli(cli, o_execute_flags);

    if( o_flags == 0 ){
        show_usage(cli);
        exit(1);
    }

	 Test::initialize(cli.name(), cli.version(), SOS_GIT_HASH);

    if( (o_flags & SIGNAL_TEST_FLAG) && (o_flags & Q15_TEST_FLAG) ){
        SignalQ15Test test;
        test.execute(o_execute_flags);
    }

    if( (o_flags & SIGNAL_TEST_FLAG) && (o_flags & Q31_TEST_FLAG) ){
        SignalQ31Test test;
        test.execute(o_execute_flags);
    }

    if( (o_flags & SIGNAL_TEST_FLAG) && (o_flags & F32_TEST_FLAG) ){
        SignalF32Test test;
        test.execute(o_execute_flags);
    }

    if( (o_flags & FILTER_TEST_FLAG) && (o_flags & Q15_TEST_FLAG) ){
        FilterQ15Test test;
        test.execute(o_execute_flags);
    }

    if( (o_flags & FILTER_TEST_FLAG) && (o_flags & Q31_TEST_FLAG) ){
        FilterQ31Test test;
        test.execute(o_execute_flags);
    }

    if( (o_flags & FILTER_TEST_FLAG) && (o_flags & F32_TEST_FLAG) ){
        FilterF32Test test;
        test.execute(o_execute_flags);
    }

    if( (o_flags & MATRIX_TEST_FLAG) && (o_flags & Q15_TEST_FLAG) ){
        MatrixQ15Test test;
        test.execute(o_execute_flags);
    }

    if( (o_flags & MATRIX_TEST_FLAG) && (o_flags & Q31_TEST_FLAG) ){
        MatrixQ31Test test;
        test.execute(o_execute_flags);
    }

    if( (o_flags & MATRIX_TEST_FLAG) && (o_flags & F32_TEST_FLAG) ){
        MatrixF32Test test;
        test.execute(o_execute_flags);
    }

    if( (o_flags & TRANSFORM_TEST_FLAG) && (o_flags & Q15_TEST_FLAG) ){
        TransformQ15Test test;
        test.execute(o_execute_flags);
    }

    if( (o_flags & TRANSFORM_TEST_FLAG) && (o_flags & Q31_TEST_FLAG) ){
        TransformQ31Test test;
        test.execute(o_execute_flags);
    }

    if( (o_flags & TRANSFORM_TEST_FLAG) && (o_flags & F32_TEST_FLAG) ){
        TransformF32Test test;
        test.execute(o_execute_flags);
    }

    Test::finalize();
    return 0;
}