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; }
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; }