/******************************************************************** Copyright ?2007 LGC Wireless, Inc. All rights reserved File Name: aifg_m.c Description: Test case of AIFG module Version: v9.0.0 Author: Roy Jiang Create Date: 2007-3-12 Remark: CUnit is used for manageing the test cases History: 2007-3-12 v9.0.0 Create *********************************************************************/ //Header files of CUnit #ifdef _WINDOWS_ #include "Basic.h" #include "Console.h" #include "Automated.h" #else #include "/usr/local/include/CUnit/Basic.h" #include "/usr/local/include/CUnit/Console.h" #include "/usr/local/include/CUnit/Automated.h" #endif //Header files of AIFG module #include "../src/include/aifg.h" #include "../src/include/aifg_if.h" #include "../src/include/aifg_var_ext.h" /* All the test cases share the same return value: 0-fail, 1-success */ #define TEST_FAIL 0 #define TEST_SUCCESS 1 //function declearation int aifg_code_test(); int aifg_unit_test(); //Message process functions declearation--------------------------------------------- int aifg_msg_proc(BYTE *src, aifg_msg_pre_decoded *dst); int aifg_msg_decode_assignReq(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_assignComplete(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_assignFailure(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_block(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_blockAck(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_HORequest(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_HORequired(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_HORequestAck(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_HOCmd(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_HOComplete(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_HOCandEnq(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_HOCandResp(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_HOFailure(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_resrcReq(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_resrcInd(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_paging(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_clearReq(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_clearCmd(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_HOPerformed(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_overload(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_mscTrace(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_bscTrace(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_cmUpdate(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_cipherModeCmd(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_cipherModeComp(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_completeL3Info(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_sapi_n_rej(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_HORequiredRej(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_resetCircuit(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_ccGroupBlock(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_ccGroupBlockAck(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_confusion(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_loadInd(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_suspend(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_lsaInfo(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_locInfoCmd(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_locInfoReport(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_resetCircuitAck(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); /////////////dtap////////////////////// int aifg_msg_decode_authReq(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_authResp(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_cmReEstReq(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_cmRej(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_cmReq(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_idReq(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_idResp(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_imsiDetachInd(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_locAccept(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_locReq(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_mmInfo(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_tmsiRealloc(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_alert(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_callConfirm(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_callProceed(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_congestCtrl(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_connect(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_disconnect(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_eSetup(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_facility(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_holdRej(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_modify(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_modifyRej(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_notify(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_progress(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_release(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_releaseComp(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_setup(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_startDTMF(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_status(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_decode_userInfo(BYTE *src, aifg_msg_pre_decoded *dst, BYTE msg_len); int aifg_msg_sd_assignReq(aifg_msg_t * src, BYTE * dst); //Test entrance void aifg_test() { printf("\nStarting Code Test--------------------------------------------\n"); aifg_code_test(); printf("\nCode Test Completed-------------------------------------------\n"); printf("\nStarting Unit Test--------------------------------------------\n"); aifg_unit_test(); printf("\nUnit Test Completed-------------------------------------------\n"); return; } aifg_msg_t bm_completeL3; aifg_msg_t dt_cmAccept; aifg_msg_t bm_clearReq; aifg_msg_t bm_clearCmd; aifg_msg_t bm_clearComplete; aifg_msg_t bm_paging; aifg_msg_t bm_setup; aifg_msg_t rr_pagingResp; aifg_msg_t dt_callCfm; static BYTE src[][64]={//source with out iei ///////// BSSMAP //////////////////////// {0x01,0x02}, //CIC {0x00,0x09,0x01,0x03,0x00,0x09,0x01,0x03,0x00,0x09,0x01,0x03,0x00,0x09,0x01,0x03,0x02,0x06,0x00,0x0b}, //resrouce available {0x01,0x09} , //cause {0x02,0x89,0x10}, //cause_extent {0x08,0x00,0x13,0x42,0x05,0x00,0x02,0x00,0x11}, //cellId with discriminator==0x00 {0x05,0x01,0x00,0x42,0x01,0x03}, //cellId with discriminator==0x01 {0x03,0x02,0x00,0x22}, //cellId with discriminator==0x02 {0x01,0x76}, //priority {0X02,0X08,0X02}, //L3HeaderInfo {0x04,0xf7,0x03,0x12,0x2a}, //tmsi redefintion,out of use {0x01,0x01}, //encryptInfo with no encryption {0x09,0x12,0x08,0x15,0x34,0x67,0xa2,0x8d,0x46,0x8f}, //encryption with A5 {0X04,0X01,0X09,0X83,0X79}, //channelType with speech indicator {0x04,0x02,0x0a,0xf5,0x07}, //channelType with data indicator {0x02}, //extResourceInd {0x03,0x7e,0x67,0x82}, //cmInfo2 {0x04,0x05,0x21,0x3f,0x58,0xe1}, //l3Info {0x08,0x00,0x85,0x47,0x9c,0x67,0x24,0x3d,0x05}, //cidList with discriminator==0x00 {0x05,0x01,0x23,0x07,0x4f,0x39}, //cidList with discriminator==0x01 {0x03,0x02,0x77,0x64}, //cidList with discriminator==0x02 {0x06,0x04,0x4e,0x39,0x58,0x7c,0x0a}, //cidList with discriminator==0x04 {0x03,0x05,0x21,0xf3}, //cidList with discriminator==0x05 {0x04,0x32,0x12,0x8d,0x36}, //cicList {0x04,0x03,0x0a,0x38,0x89}, //diagnostics {0x56}, //chosenChannel {0x84,0x62,0xf2,0x7e}, //totalResrc {0x03,0x9d,0x20,0x81}, //triggerId {0x02,0x31,0xf2}, //mobileId,type of identity==001(IMSI),odd/even indicator==0(even) {0x05,0x01,0x02,0x03,0x04,0x05}, //circuitPoolList {0x05,0x11,0x83,0x04,0x28,0x75}, //resrcSit,band1 with SDCCH,band2 with Full Rate TCH {0x19}, //curChannelType1 with speech mode and Half rate TCH {0x05,0x24,0x38,0x56,0x19,0x10}, //groupRef,sf(VGCS),af(required),call_priority(level4),cipher_info(key1) {0x03,0x10,0x39,0xd2}, //lsaId {0x07,0x01,0x22,0xe4,0x31,0x57,0x69,0x83}, //lsaIdList with Ep==1 {0x09,0x00,0x00,0x36,0x85,0xef,0x03,0x47,0x87,0x42}, //lsaInfo {0x03,0x15,0x49,0xf5}, //locInfo {0x03,0x39,0xc4,0x08}, //omcId {0X07, 0xdd,0X01,0X02,0xdd ,0X02,0X06,0X01},//bssOldtoNew,UNCOMPLETED !FIELD ELEMENT{ExtraInfo:prec=0,lcs=1;curChanType2:data14.5kb/s,SDCCH} {0Xff}, //periodicity {0Xfe}, //msNum {0x09}, //bandUsed {0X08}, //rrCouse {0XC2}, //dlci,channel is SACCH {0x01}, //dtx, MSC forbids the BSS to activate DTX in the downlink direction {0X01}, //resrcIdMethod,method ii is selected {0X00}, //cipherRespMode,IMEISV must not be included by the Mobile Station {0X02}, //channelNeeded,TCH/F (Full rate) {0xdd}, //traceType {0x34,0x97}, //traceRef {0x02,0x17,0x62}, //transId {0x02}, //forwardInd,forward to subsequent BSS, and trace at MSC {0X03}, //chosenEncrypt,GSM A5/2 {0X10}, //circuitPool,Circuit pool number 16 {0X11}, //timeInd,170s {0X21}, //speechVer,GSM speech full rate version 3 {0X02}, //queuingInd,it is recommended to allow queuing {0X01}, //assignReq,Immediate {0X06}, //eMLPP,call priority level B {0x03}, //configInd,Modification is allowed and maximum number of TCH/F is 3 {0X04,0X33,0X79,0X27,0X46}, //tmsi ///////////// DTAP /////////////////////////////////////////// {0x10,0x34,0x78,0x69,0x20}, //broadcastRef,vbs,ackRequired,priority4,cipher NO.2 {0x11}, //cmInfo1,Reserved for phase 1,"CECS"implemented in MS,A5/1 available,Class2 {0x03,0x33,0x22,0x8d}, //cmInfo2 {0x02,0x73,0xf2}, //mobileId,even flag,IMEISV {0x78,0xf3,0x64,0x31,0x02}, //LocId {0x09}, //luType,iei=0,Follow-on request pending,Periodic updating {0x03,0x91,0x35,0x64}, //nwName,bit8 set to "0" in octet n,no add letters,UCS2 (16 bit) [72] {0x07,0x04,0x12,0x0a,0x32,0x14,0xdd}, //tzTime {0x02,0xc0,0x82}, //progInd,National standard,User,Destination address in non-PLMN/ISDN {0x03,0x01,0x19,0x83}, //uu,OSI high layer protocols {0x02,0x20,0x02}, //bc with info_trans_cap==0,only octet 3a is extend {0x0d,0xa3,0xca,0x1a,0x00,0xe4,0x21,0x53,0x5b,0x60,0x21,0x5f,0x47,0xc6}, //bc with info_trans_cap!=0 {0x04,0x47,0xdd,0x96,0x81}, //cause,National standard,international network,Number changed {0x01,0x03}, //ccCap {0x04,0x28,0xa3,0x89,0x37}, //connNum/callingNum/calledNum/redirNum {0x03,0x88,0x50,0x43}, //connSubAddr/callingSubAddr/calledSubAddr/redirSubAddr {0x01,0xdd}, //ssVer {0x03,0xa8,0x6e,0xb4}, //hiComp {0x02,0xdd,0xde}, //loComp {0xc2}, //callStat {0x01,0x86}, //auxStat {0x03,0x11,0x22,0x33}, //lsaId {0X02}, //rejectCause {0X0B}, //cmType {0X01}, //cipherKey {0X05}, //priority {0X03}, //idType {0X0F}, //congestLevel {0x80}, //notificationInd {0x08}, //signal {0X01,0X07}, //alertPattern {0X0D}, //keypad {0XDD}, //timeZone {0X00,0X11,0X22,0X33,0X44,0X55,0X66,0X77,0X88,0X99,0XAA,0XBB,0XCC,0XDD,0XEE,0XFF}, //authRAND {0X11,0X12,0X13,0X14}, //authSRES {0X01}, //rpInd {0x30,0xa1,0x0c,0x02,0x01,0xdd,0x80,0x01,0xdd,0x02,0x03,0x0a,0x0b,0x0c,0xdd, 0xa2,0x0d,0x02,0x01,0xdd,0x30,0x04,0x02,0x02,0x0a,0x0b,0x11,0x22,0x33,0x44, 0xa3,0x09,0x02,0x01,0xdd,0x02,0x03,0x01,0x09,0x0a,0xdd, 0xa4,0x06,0x02,0x01,0xdd,0x80,0x01,0x00}//facility }; static aifg_ie dst; static int len; static aifg_msg_protocol protocol; static aifg_ie_ptr ie; static BYTE buffer[256]; aifg_msg_predecode_l3msg predecode_l3msg; aifg_msg_bm_l3msg l3Info; void test_aifg_ie_bm_cic() { //preconditon protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_CIC; ie.ptr=src[0]; //test decode len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_CIC,dst.iei); //CU_ASSERT_EQUAL(3,len); CU_ASSERT_EQUAL(8,dst.param.bm_cic.pcm); CU_ASSERT_EQUAL(2,dst.param.bm_cic.timeslot); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_CIC,&(dst.param),buffer, 0); //check encode result CU_ASSERT_EQUAL(AIFG_IEI_BM_CIC,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&(buffer[1]),src[0],2)); } void test_aifg_ie_bm_resrcAvail() { //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_RESOURCEAVAIL; ie.ptr=src[1]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_RESOURCEAVAIL,dst.iei); //CU_ASSERT_EQUAL(21,len); CU_ASSERT_EQUAL(9,dst.param.bm_resrcAvail.full_rate_channel[0]); CU_ASSERT_EQUAL(259,dst.param.bm_resrcAvail.half_rate_channel[0]); CU_ASSERT_EQUAL(9,dst.param.bm_resrcAvail.full_rate_channel[1]); CU_ASSERT_EQUAL(259,dst.param.bm_resrcAvail.half_rate_channel[1]); CU_ASSERT_EQUAL(9,dst.param.bm_resrcAvail.full_rate_channel[2]); CU_ASSERT_EQUAL(259,dst.param.bm_resrcAvail.half_rate_channel[2]); CU_ASSERT_EQUAL(9,dst.param.bm_resrcAvail.full_rate_channel[3]); CU_ASSERT_EQUAL(259,dst.param.bm_resrcAvail.half_rate_channel[3]); CU_ASSERT_EQUAL(518,dst.param.bm_resrcAvail.full_rate_channel[4]); CU_ASSERT_EQUAL(11,dst.param.bm_resrcAvail.half_rate_channel[4]); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_RESOURCEAVAIL,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_RESOURCEAVAIL,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[1],20)); } void test_aifg_ie_bm_cause(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_CAUSE; ie.ptr=src[2]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_CAUSE,dst.iei); //CU_ASSERT_EQUAL(3,len); CU_ASSERT_EQUAL(9,dst.param.bm_cause.value); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_CAUSE,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_CAUSE,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[2],2)); } void test_aifg_ie_bm_cause_ext() { //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_CAUSE; ie.ptr=src[3]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_CAUSE,dst.iei); //CU_ASSERT_EQUAL(4,len); CU_ASSERT_EQUAL(9,dst.param.bm_cause.value); CU_ASSERT_EQUAL(1,dst.param.bm_cause.ext_value.flag); CU_ASSERT_EQUAL(16,dst.param.bm_cause.ext_value.value); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_CAUSE,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_CAUSE,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[3],3)); } void test_aifg_ie_bm_cellId_00() { //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_CELLID; ie.ptr=src[4]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(0,dst.param.bm_cellId.discriminator); CU_ASSERT_EQUAL(AIFG_IE_ID_BM_CELLID,dst.iei); //CU_ASSERT_EQUAL(10,len); CU_ASSERT_EQUAL(3,dst.param.bm_cellId.mcc[0]); CU_ASSERT_EQUAL(1,dst.param.bm_cellId.mcc[1]); CU_ASSERT_EQUAL(2,dst.param.bm_cellId.mcc[2]); CU_ASSERT_EQUAL(4,dst.param.bm_cellId.mnc[2]); CU_ASSERT_EQUAL(0,dst.param.bm_cellId.mnc[1]); CU_ASSERT_EQUAL(5,dst.param.bm_cellId.mnc[0]); CU_ASSERT_EQUAL(2,dst.param.bm_cellId.LAC); CU_ASSERT_EQUAL(17,dst.param.bm_cellId.CI); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_CELLID,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_CELLID,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[4],9)); } void test_aifg_ie_bm_cellId_01() { //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_CELLID; ie.ptr=src[5]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(1,dst.param.bm_cellId.discriminator); CU_ASSERT_EQUAL(AIFG_IE_ID_BM_CELLID,dst.iei); //CU_ASSERT_EQUAL(7,len); CU_ASSERT_EQUAL(66,dst.param.bm_cellId.LAC); CU_ASSERT_EQUAL(259,dst.param.bm_cellId.CI); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_CELLID,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_CELLID,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[5],6)); } void test_aifg_ie_bm_cellId_02(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_CELLID; ie.ptr=src[6]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(2,dst.param.bm_cellId.discriminator); CU_ASSERT_EQUAL(AIFG_IE_ID_BM_CELLID,dst.iei); //CU_ASSERT_EQUAL(5,len); CU_ASSERT_EQUAL(34,dst.param.bm_cellId.CI); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_CELLID,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_CELLID,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[6],4)); } void test_aifg_ie_bm_priority(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_PRIORITY; ie.ptr=src[7]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_PRIORITY,dst.iei); //CU_ASSERT_EQUAL(3,len); CU_ASSERT_EQUAL(1,dst.param.bm_priority.pci); CU_ASSERT_EQUAL(13,dst.param.bm_priority.level); CU_ASSERT_EQUAL(1,dst.param.bm_priority.qa); CU_ASSERT_EQUAL(0,dst.param.bm_priority.pvi); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_PRIORITY,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_PRIORITY,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[7],2)); } void test_aifg_ie_bm_L3HeaderInfo(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_L3HEADERINFO; ie.ptr=src[8]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_L3HEADERINFO,dst.iei); //CU_ASSERT_EQUAL(4,len); CU_ASSERT_EQUAL(8,dst.param.bm_L3HeaderInfo.pd); CU_ASSERT_EQUAL(2,dst.param.bm_L3HeaderInfo.ti); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_L3HEADERINFO,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_L3HEADERINFO,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[8],3)); } /*void test_aifg_ie_bm_tmsi(){ //precondition protocol=AIFG_MSG_BSSMAP; iei=AIFG_IE_ID_BM_TMSI; //test len=aifg_ie_decode(protocol,iei,src[9],&dst,hi_lo_flag); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_TMSI,dst.iei); CU_ASSERT_EQUAL(6,len); CU_ASSERT_EQUAL(0xf7,dst.param.bm_tmsi[0]); CU_ASSERT_EQUAL(0x03,dst.param.bm_tmsi[1]); CU_ASSERT_EQUAL(0x12,dst.param.bm_tmsi[2]); CU_ASSERT_EQUAL(0x2a,dst.param.bm_tmsi[3]); }*///redefinition void test_aifg_ie_bm_encryptInfo_NOencryption(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_ENCRYPTINFO; ie.ptr=src[10]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_ENCRYPTINFO,dst.iei); //CU_ASSERT_EQUAL(3,len); CU_ASSERT_EQUAL(0x01,dst.param.bm_encryptInfo.algorithm); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_ENCRYPTINFO,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_ENCRYPTINFO,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[10],2)); } void test_aifg_ie_bm_encryptInfo_A5(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_ENCRYPTINFO; ie.ptr=src[11]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_ENCRYPTINFO,dst.iei); //CU_ASSERT_EQUAL(11,len); CU_ASSERT_EQUAL(0x12,dst.param.bm_encryptInfo.algorithm); CU_ASSERT_EQUAL(0x08,dst.param.bm_encryptInfo.key[0]); CU_ASSERT_EQUAL(0x15,dst.param.bm_encryptInfo.key[1]); CU_ASSERT_EQUAL(0x34,dst.param.bm_encryptInfo.key[2]); CU_ASSERT_EQUAL(0x67,dst.param.bm_encryptInfo.key[3]); CU_ASSERT_EQUAL(0xa2,dst.param.bm_encryptInfo.key[4]); CU_ASSERT_EQUAL(0x8d,dst.param.bm_encryptInfo.key[5]); CU_ASSERT_EQUAL(0x46,dst.param.bm_encryptInfo.key[6]); CU_ASSERT_EQUAL(0x8f,dst.param.bm_encryptInfo.key[7]); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_ENCRYPTINFO,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_ENCRYPTINFO,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[11],10)); } void test_aifg_ie_bm_channelType_speech() { //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_CHANNELTYPE; ie.ptr=src[12]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_CHANNELTYPE,dst.iei); //CU_ASSERT_EQUAL(6,len); CU_ASSERT_EQUAL(0x01,dst.param.bm_channelType.speech_data_ind); CU_ASSERT_EQUAL(0x09,dst.param.bm_channelType.channel_rate_type); CU_ASSERT_EQUAL(0x03,dst.param.bm_channelType.ext.speech.ver[0]); CU_ASSERT_EQUAL(0x79,dst.param.bm_channelType.ext.speech.ver[1]); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_CHANNELTYPE,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_CHANNELTYPE,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[12],5)); } void test_aifg_ie_bm_channelType_data() { //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_CHANNELTYPE; ie.ptr=src[13]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_CHANNELTYPE,dst.iei); //CU_ASSERT_EQUAL(6,len); CU_ASSERT_EQUAL(0x02,dst.param.bm_channelType.speech_data_ind); CU_ASSERT_EQUAL(0x0a,dst.param.bm_channelType.channel_rate_type); CU_ASSERT_EQUAL(0x01,dst.param.bm_channelType.ext.data_cfg.t_nt); CU_ASSERT_EQUAL(0x35,dst.param.bm_channelType.ext.data_cfg.rate); CU_ASSERT_EQUAL(0x07,dst.param.bm_channelType.ext.data_cfg.allowed_data_rate.value); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_CHANNELTYPE,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_CHANNELTYPE,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[13],5)); } void test_aifg_ie_bm_extResourceInd() { //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_EXTRESOURCEIND; ie.ptr=src[14]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_EXTRESOURCEIND,dst.iei); //CU_ASSERT_EQUAL(2,len); CU_ASSERT_EQUAL(0x01,dst.param.bm_extResrcInd.sm); CU_ASSERT_EQUAL(0x00,dst.param.bm_extResrcInd.tarr); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_EXTRESOURCEIND,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_EXTRESOURCEIND,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[14],1)); } void test_aifg_ie_bm_cmInfo2() { //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_CLASSMARKINFO2; ie.ptr=src[15]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_CLASSMARKINFO2,dst.iei); //CU_ASSERT_EQUAL(5,len); CU_ASSERT_EQUAL(0x03,dst.param.bm_cmInfo2.rev_level); CU_ASSERT_EQUAL(0x01,dst.param.bm_cmInfo2.es_ind); CU_ASSERT_EQUAL(0x01,dst.param.bm_cmInfo2.a5_1); CU_ASSERT_EQUAL(0x06,dst.param.bm_cmInfo2.rf_power_cap); CU_ASSERT_EQUAL(0x01,dst.param.bm_cmInfo2.ps_cap); CU_ASSERT_EQUAL(0x02,dst.param.bm_cmInfo2.ss_screen_ind); CU_ASSERT_EQUAL(0x00,dst.param.bm_cmInfo2.sm_cap); CU_ASSERT_EQUAL(0x01,dst.param.bm_cmInfo2.vbs); CU_ASSERT_EQUAL(0x01,dst.param.bm_cmInfo2.vgcs); CU_ASSERT_EQUAL(0x01,dst.param.bm_cmInfo2.fc); CU_ASSERT_EQUAL(0x01,dst.param.bm_cmInfo2.cm3); CU_ASSERT_EQUAL(0x00,dst.param.bm_cmInfo2.lcsva_cap); CU_ASSERT_EQUAL(0x00,dst.param.bm_cmInfo2.so_lsa); CU_ASSERT_EQUAL(0x00,dst.param.bm_cmInfo2.cmsp); CU_ASSERT_EQUAL(0x01,dst.param.bm_cmInfo2.a5_3); CU_ASSERT_EQUAL(0x00,dst.param.bm_cmInfo2.a5_2); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_CLASSMARKINFO2,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_CLASSMARKINFO2,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[15],4)); } /*void test_aifg_ie_bm_l3Info(){ //to resolve //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_L3INFO; ie.ptr=src[16]; //test len=aifg_ie_decode(protocol,&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_L3INFO,dst.iei); //CU_ASSERT_EQUAL(6,len); CU_ASSERT_EQUAL(AIFG_MSG_T_CM_ACCEPT,dst.param.bm_l3Info.l3_msg->type); }*/ void test_aifg_ie_bm_cidList_00() //discriminator==0x00 { //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_CELLIDLIST; ie.ptr=src[17]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_CELLIDLIST,dst.iei); //CU_ASSERT_EQUAL(10,len); CU_ASSERT_EQUAL(0,dst.param.bm_cellIdList.discriminator); CU_ASSERT_EQUAL(5,dst.param.bm_cellIdList.cell_id[0].mcc[0]); CU_ASSERT_EQUAL(8,dst.param.bm_cellIdList.cell_id[0].mcc[1]); CU_ASSERT_EQUAL(7,dst.param.bm_cellIdList.cell_id[0].mcc[2]); CU_ASSERT_EQUAL(12,dst.param.bm_cellIdList.cell_id[0].mnc[0]); CU_ASSERT_EQUAL(9,dst.param.bm_cellIdList.cell_id[0].mnc[1]); CU_ASSERT_EQUAL(4,dst.param.bm_cellIdList.cell_id[0].mnc[2]); CU_ASSERT_EQUAL(0x6724,dst.param.bm_cellIdList.cell_id[0].LAC); CU_ASSERT_EQUAL(0x3d05,dst.param.bm_cellIdList.cell_id[0].CI); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_CELLIDLIST,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_CELLIDLIST,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[17],9)); } void test_aifg_ie_bm_cidList_01()//discriminator==0x01 { //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_CELLIDLIST; ie.ptr=src[18]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_CELLIDLIST,dst.iei); //CU_ASSERT_EQUAL(7,len); CU_ASSERT_EQUAL(1,dst.param.bm_cellIdList.discriminator); CU_ASSERT_EQUAL(0x2307,dst.param.bm_cellIdList.cell_id[0].LAC); CU_ASSERT_EQUAL(0x4f39,dst.param.bm_cellIdList.cell_id[0].CI); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_CELLIDLIST,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_CELLIDLIST,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[18],6)); } void test_aifg_ie_bm_cidList_02()//discriminator==0x02 { //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_CELLIDLIST; ie.ptr=src[19]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_CELLIDLIST,dst.iei); //CU_ASSERT_EQUAL(5,len); CU_ASSERT_EQUAL(2,dst.param.bm_cellIdList.discriminator); CU_ASSERT_EQUAL(0x7764,dst.param.bm_cellIdList.cell_id[0].CI); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_CELLIDLIST,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_CELLIDLIST,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[19],4)); } void test_aifg_ie_bm_cidList_04() //discriminator==0x04 { //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_CELLIDLIST; ie.ptr=src[20]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_CELLIDLIST,dst.iei); //CU_ASSERT_EQUAL(8,len); CU_ASSERT_EQUAL(4,dst.param.bm_cellIdList.discriminator); CU_ASSERT_EQUAL(14,dst.param.bm_cellIdList.cell_id[0].mcc[0]); CU_ASSERT_EQUAL(4,dst.param.bm_cellIdList.cell_id[0].mcc[1]); CU_ASSERT_EQUAL(9,dst.param.bm_cellIdList.cell_id[0].mcc[2]); CU_ASSERT_EQUAL(3,dst.param.bm_cellIdList.cell_id[0].mnc[2]); CU_ASSERT_EQUAL(5,dst.param.bm_cellIdList.cell_id[0].mnc[1]); CU_ASSERT_EQUAL(8,dst.param.bm_cellIdList.cell_id[0].mnc[0]); CU_ASSERT_EQUAL(0x7c0a,dst.param.bm_cellIdList.cell_id[0].LAC); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_CELLIDLIST,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_CELLIDLIST,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[20],7)); } void test_aifg_ie_bm_cidList_05() //discriminator==0x05 { //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_CELLIDLIST; ie.ptr=src[21]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_CELLIDLIST,dst.iei); //CU_ASSERT_EQUAL(5,len); CU_ASSERT_EQUAL(5,dst.param.bm_cellIdList.discriminator); CU_ASSERT_EQUAL(0x21f3,dst.param.bm_cellIdList.cell_id[0].LAC); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_CELLIDLIST,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_CELLIDLIST,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[21],4)); } void test_aifg_ie_bm_cicList() { //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_CICLIST; ie.ptr=src[22]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_CICLIST,dst.iei); //CU_ASSERT_EQUAL(6,len); CU_ASSERT_EQUAL(0x32,dst.param.bm_cicList.range); CU_ASSERT_EQUAL(3,dst.param.bm_cicList.status.len); CU_ASSERT_EQUAL(0x12,dst.param.bm_cicList.status.content[0]); CU_ASSERT_EQUAL(0x8d,dst.param.bm_cicList.status.content[1]); CU_ASSERT_EQUAL(0x36,dst.param.bm_cicList.status.content[2]); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_CICLIST,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_CICLIST,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[22],5)); } void test_aifg_ie_bm_diagnostics(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_DIGNOSTIC; ie.ptr=src[23]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_DIGNOSTIC,dst.iei); //CU_ASSERT_EQUAL(6,len); CU_ASSERT_EQUAL(0x03,dst.param.bm_diagnostics.err_pointer); CU_ASSERT_EQUAL(0x0a,dst.param.bm_diagnostics.bit_pointer); CU_ASSERT_EQUAL(2,dst.param.bm_diagnostics.err_msg.len); CU_ASSERT_EQUAL(0x38,dst.param.bm_diagnostics.err_msg.msg[0]); CU_ASSERT_EQUAL(0x89,dst.param.bm_diagnostics.err_msg.msg[1]); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_DIGNOSTIC,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_DIGNOSTIC,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[23],5)); } void test_aifg_ie_bm_chosenChannel() { //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_CHOSENCHANNEL; ie.ptr=src[24]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_CHOSENCHANNEL,dst.iei); //CU_ASSERT_EQUAL(2,len); CU_ASSERT_EQUAL(0x05,dst.param.bm_chosenChannel.mode); CU_ASSERT_EQUAL(0x06,dst.param.bm_chosenChannel.channel); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_CHOSENCHANNEL,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_CHOSENCHANNEL,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[24],1)); } void test_aifg_ie_bm_totalResrc() { //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_TOTALRESOURCE; ie.ptr=src[25]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_TOTALRESOURCE,dst.iei); //CU_ASSERT_EQUAL(5,len); CU_ASSERT_EQUAL(0x8462,dst.param.bm_totalResrc.full_rate_channel); CU_ASSERT_EQUAL(0xf27e,dst.param.bm_totalResrc.half_rate_channel); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_TOTALRESOURCE,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_TOTALRESOURCE,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[25],4)); } void test_aifg_ie_bm_triggerId() { //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_TRIGGERID; ie.ptr=src[26]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_TRIGGERID,dst.iei); //CU_ASSERT_EQUAL(5,len); CU_ASSERT_EQUAL(3,dst.param.bm_triggerId.len); CU_ASSERT_EQUAL(0x9d,dst.param.bm_triggerId.content[0]); CU_ASSERT_EQUAL(0x20,dst.param.bm_triggerId.content[1]); CU_ASSERT_EQUAL(0x81,dst.param.bm_triggerId.content[2]); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_TRIGGERID,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_TRIGGERID,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[26],4)); } void test_aifg_ie_bm_mobileId(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_MOBILEID; ie.ptr=src[27]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_MOBILEID,dst.iei); //CU_ASSERT_EQUAL(4,len); CU_ASSERT_EQUAL(1,dst.param.mobileId.type); CU_ASSERT_EQUAL(0,dst.param.mobileId.odd_even_flag); CU_ASSERT_EQUAL(2,dst.param.mobileId.id_len); CU_ASSERT_EQUAL(0x03,dst.param.mobileId.id[0]); CU_ASSERT_EQUAL(0x02,dst.param.mobileId.id[1]); CU_ASSERT_EQUAL(0x0f,dst.param.mobileId.id[2]); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_MOBILEID,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_MOBILEID,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[27],3)); } void test_aifg_ie_bm_circuitPoolList(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_CIRCUITPOOLLIST; ie.ptr=src[28]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_CIRCUITPOOLLIST,dst.iei); //CU_ASSERT_EQUAL(7,len); CU_ASSERT_EQUAL(5,dst.param.bm_circuitPoolList.num); CU_ASSERT_EQUAL(0x01,dst.param.bm_circuitPoolList.circuit[0]); CU_ASSERT_EQUAL(0x02,dst.param.bm_circuitPoolList.circuit[1]); CU_ASSERT_EQUAL(0x03,dst.param.bm_circuitPoolList.circuit[2]); CU_ASSERT_EQUAL(0x04,dst.param.bm_circuitPoolList.circuit[3]); CU_ASSERT_EQUAL(0x05,dst.param.bm_circuitPoolList.circuit[4]); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_CIRCUITPOOLLIST,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_CIRCUITPOOLLIST,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[28],6)); } void test_aifg_ie_bm_resrcSit(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_RESOURCESITUATION; ie.ptr=src[29]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_RESOURCESITUATION,dst.iei); //CU_ASSERT_EQUAL(7,len); CU_ASSERT_EQUAL(1,dst.param.bm_resrcSit.band[0].band_ind); CU_ASSERT_EQUAL(1,dst.param.bm_resrcSit.band[0].channel_type); CU_ASSERT_EQUAL(0x0304,dst.param.bm_resrcSit.band[0].channel_num); CU_ASSERT_EQUAL(2,dst.param.bm_resrcSit.band[1].band_ind); CU_ASSERT_EQUAL(8,dst.param.bm_resrcSit.band[1].channel_type); CU_ASSERT_EQUAL(0x75,dst.param.bm_resrcSit.band[1].channel_num); CU_ASSERT_EQUAL(2,dst.param.bm_resrcSit.band_num); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_RESOURCESITUATION,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_RESOURCESITUATION,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[29],6)); } void test_aifg_ie_bm_curChannelType1(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_CURCHANNELTYPE1; ie.ptr=src[30]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_CURCHANNELTYPE1,dst.iei); //CU_ASSERT_EQUAL(2,len); CU_ASSERT_EQUAL(1,dst.param.bm_curChannelType1.channel_mode); CU_ASSERT_EQUAL(9,dst.param.bm_curChannelType1.channel); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_CURCHANNELTYPE1,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_CURCHANNELTYPE1,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[30],1)); } void test_aifg_ie_bm_groupRef(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_GROUPCALLREF; ie.ptr=src[31]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_GROUPCALLREF,dst.iei); //CU_ASSERT_EQUAL(7,len); CU_ASSERT_EQUAL(0x121c2b0,dst.param.bm_groupRef.binary_code); CU_ASSERT_EQUAL(1,dst.param.bm_groupRef.sf); CU_ASSERT_EQUAL(1,dst.param.bm_groupRef.af); CU_ASSERT_EQUAL(1,dst.param.bm_groupRef.call_priority); CU_ASSERT_EQUAL(1,dst.param.bm_groupRef.cipher_info); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_GROUPCALLREF,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_GROUPCALLREF,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[31],6)); } void test_aifg_ie_bm_lsaId(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_LSAID; ie.ptr=src[32]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_LSAID,dst.iei); //CU_ASSERT_EQUAL(5,len); CU_ASSERT_EQUAL(0x10,dst.param.bm_lsaId.value[0]); CU_ASSERT_EQUAL(0x39,dst.param.bm_lsaId.value[1]); CU_ASSERT_EQUAL(0xd2,dst.param.bm_lsaId.value[2]); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_LSAID,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_LSAID,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[32],4)); } void test_aifg_ie_bm_lsaIdList(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_LSAIDLIST; ie.ptr=src[33]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_LSAIDLIST,dst.iei); //CU_ASSERT_EQUAL(9,len); CU_ASSERT_EQUAL(0x01,dst.param.bm_lsaIdList.ep); CU_ASSERT_EQUAL(0x22,dst.param.bm_lsaIdList.list[0].id[0]); CU_ASSERT_EQUAL(0xe4,dst.param.bm_lsaIdList.list[0].id[1]); CU_ASSERT_EQUAL(0x31,dst.param.bm_lsaIdList.list[0].id[2]); CU_ASSERT_EQUAL(0x57,dst.param.bm_lsaIdList.list[1].id[0]); CU_ASSERT_EQUAL(0x69,dst.param.bm_lsaIdList.list[1].id[1]); CU_ASSERT_EQUAL(0x83,dst.param.bm_lsaIdList.list[1].id[2]); CU_ASSERT_EQUAL(2,dst.param.bm_lsaIdList.lsa_num); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_LSAIDLIST,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_LSAIDLIST,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[33],8)); } void test_aifg_ie_bm_lsaInfo(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_LSAINFO; ie.ptr=src[34]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_LSAINFO,dst.iei); //CU_ASSERT_EQUAL(11,len); CU_ASSERT_EQUAL(0,dst.param.bm_lsaInfo.lsa_only); CU_ASSERT_EQUAL(2,dst.param.bm_lsaInfo.lsa_num); CU_ASSERT_EQUAL(0x00,dst.param.bm_lsaInfo.info[0].priority); CU_ASSERT_EQUAL(0x36,dst.param.bm_lsaInfo.info[0].id[0]); CU_ASSERT_EQUAL(0x85,dst.param.bm_lsaInfo.info[0].id[1]); CU_ASSERT_EQUAL(0xef,dst.param.bm_lsaInfo.info[0].id[2]); CU_ASSERT_EQUAL(0x03,dst.param.bm_lsaInfo.info[1].priority); CU_ASSERT_EQUAL(0x47,dst.param.bm_lsaInfo.info[1].id[0]); CU_ASSERT_EQUAL(0x87,dst.param.bm_lsaInfo.info[1].id[1]); CU_ASSERT_EQUAL(0x42,dst.param.bm_lsaInfo.info[1].id[2]); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_LSAINFO,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_LSAINFO,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[34],10)); } void test_aifg_ie_bm_locInfo(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_LOCATIONINFO; ie.ptr=src[35]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_LOCATIONINFO,dst.iei); //CU_ASSERT_EQUAL(5,len); CU_ASSERT_EQUAL(3,dst.param.bm_locInfo.len); CU_ASSERT_EQUAL(0x15,dst.param.bm_locInfo.info[0]); CU_ASSERT_EQUAL(0x49,dst.param.bm_locInfo.info[1]); CU_ASSERT_EQUAL(0xf5,dst.param.bm_locInfo.info[2]); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_LOCATIONINFO,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_LOCATIONINFO,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[35],4)); } void test_aifg_ie_bm_omcId(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_OMCID; ie.ptr=src[36]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_OMCID,dst.iei); //CU_ASSERT_EQUAL(5,len); CU_ASSERT_EQUAL(3,dst.param.bm_omcId.len); CU_ASSERT_EQUAL(0x39,dst.param.bm_omcId.id[0]); CU_ASSERT_EQUAL(0xc4,dst.param.bm_omcId.id[1]); CU_ASSERT_EQUAL(0x08,dst.param.bm_omcId.id[2]); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_OMCID,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_OMCID,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[36],4)); } void test_aifg_ie_bm_bssOldtoNew(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_BSSOLDTONEW; ie.ptr=src[37]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_BSSOLDTONEW,dst.iei); //CU_ASSERT_EQUAL(9,len); CU_ASSERT_EQUAL(7,dst.param.bm_bssOldtoNew.len); CU_ASSERT_EQUAL(0xdd,dst.param.bm_bssOldtoNew.content[0]); CU_ASSERT_EQUAL(0x01,dst.param.bm_bssOldtoNew.content[1]); CU_ASSERT_EQUAL(0x02,dst.param.bm_bssOldtoNew.content[2]); CU_ASSERT_EQUAL(0xdd,dst.param.bm_bssOldtoNew.content[3]); CU_ASSERT_EQUAL(0x02,dst.param.bm_bssOldtoNew.content[4]); CU_ASSERT_EQUAL(0x06,dst.param.bm_bssOldtoNew.content[5]); CU_ASSERT_EQUAL(0x01,dst.param.bm_bssOldtoNew.content[6]); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_BSSOLDTONEW,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_BSSOLDTONEW,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[37],8)); } void test_aifg_ie_bm_periodicity(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_PERIODICITY; ie.ptr=src[38]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_PERIODICITY,dst.iei); //CU_ASSERT_EQUAL(2,len); CU_ASSERT_EQUAL(255,dst.param.bm_periodicity.value); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_PERIODICITY,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_PERIODICITY,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[38],1)); } void test_aifg_ie_bm_msNum(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_MSNUM; ie.ptr=src[39]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_MSNUM,dst.iei); //CU_ASSERT_EQUAL(2,len); CU_ASSERT_EQUAL(254,dst.param.bm_msNum.value); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_MSNUM,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_MSNUM,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[39],1)); } void test_aifg_ie_bm_bandUsed(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_BANDUSED; ie.ptr=src[40]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_BANDUSED,dst.iei); //CU_ASSERT_EQUAL(2,len); CU_ASSERT_EQUAL(0x09,dst.param.bm_bandUsed.value); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_BANDUSED,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_BANDUSED,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[40],1)); } void test_aifg_ie_bm_rrCause(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_RRCAUSE; ie.ptr=src[41]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_RRCAUSE,dst.iei); //CU_ASSERT_EQUAL(2,len); CU_ASSERT_EQUAL(0x08,dst.param.bm_rrCause.value); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_RRCAUSE,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_RRCAUSE,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[41],1)); } void test_aifg_ie_bm_dlci(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_DLCI; ie.ptr=src[42]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_DLCI,dst.iei); //CU_ASSERT_EQUAL(2,len); CU_ASSERT_EQUAL(0xC2,dst.param.bm_dlci.value); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_DLCI,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_DLCI,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[42],1)); } void test_aifg_ie_bm_dtx(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_DTXFLAG; ie.ptr=src[43]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_DTXFLAG,dst.iei); //CU_ASSERT_EQUAL(2,len); CU_ASSERT_EQUAL(0x01,dst.param.bm_dtx.value); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_DTXFLAG,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_DTXFLAG,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[43],1)); } void test_aifg_ie_bm_resrcIndMethod(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_RESOURCEINDMEHTOD; ie.ptr=src[44]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_RESOURCEINDMEHTOD,dst.iei); //CU_ASSERT_EQUAL(2,len); CU_ASSERT_EQUAL(0x01,dst.param.bm_resrcIndMethod.value); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_RESOURCEINDMEHTOD,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_RESOURCEINDMEHTOD,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[44],1)); } void test_aifg_ie_bm_cipherRespMode(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_CIPHERRESPMODE; ie.ptr=src[45]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_CIPHERRESPMODE,dst.iei); //CU_ASSERT_EQUAL(2,len); CU_ASSERT_EQUAL(0x00,dst.param.bm_cipherRespMode.value); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_CIPHERRESPMODE,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_CIPHERRESPMODE,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[45],1)); } void test_aifg_ie_bm_channelNeeded(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_CHANNELNEEDED; ie.ptr=src[46]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_CHANNELNEEDED,dst.iei); //CU_ASSERT_EQUAL(2,len); CU_ASSERT_EQUAL(0x02,dst.param.bm_channelNeeded.value); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_CHANNELNEEDED,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_CHANNELNEEDED,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[46],1)); } void test_aifg_ie_bm_traceType(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_TRACETYPE; ie.ptr=src[47]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_TRACETYPE,dst.iei); //CU_ASSERT_EQUAL(2,len); CU_ASSERT_EQUAL(0xdd,dst.param.bm_traceType.value); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_TRACETYPE,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_TRACETYPE,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[47],1)); } void test_aifg_ie_bm_traceRef(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_TRACEREF; ie.ptr=src[48]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_TRACEREF,dst.iei); //CU_ASSERT_EQUAL(3,len); CU_ASSERT_EQUAL(0x3497,dst.param.bm_traceRef.value); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_TRACEREF,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_TRACEREF,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[48],1)); } void test_aifg_ie_bm_transId(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_TRANSACTIONID; ie.ptr=src[49]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_TRANSACTIONID,dst.iei); //CU_ASSERT_EQUAL(4,len); CU_ASSERT_EQUAL(0x1762,dst.param.bm_transId.value); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_TRANSACTIONID,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_TRANSACTIONID,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[49],3)); } void test_aifg_ie_bm_fowardInd(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_FORWARDIND; ie.ptr=src[50]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_FORWARDIND,dst.iei); //CU_ASSERT_EQUAL(2,len); CU_ASSERT_EQUAL(0x02,dst.param.bm_fowardInd.value); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_FORWARDIND,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_FORWARDIND,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[50],1)); } void test_aifg_ie_bm_chosenEncrypt(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_CHOSENENCRYPT; ie.ptr=src[51]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_CHOSENENCRYPT,dst.iei); //CU_ASSERT_EQUAL(2,len); CU_ASSERT_EQUAL(0x03,dst.param.bm_chosenEncrypt.value); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_CHOSENENCRYPT,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_CHOSENENCRYPT,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[51],1)); } void test_aifg_ie_bm_circuitPool(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_CIRCUITPOOL; ie.ptr=src[52]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_CIRCUITPOOL,dst.iei); //CU_ASSERT_EQUAL(2,len); CU_ASSERT_EQUAL(0x10,dst.param.bm_circuitPool.value); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_CIRCUITPOOL,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_CIRCUITPOOL,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[52],1)); } void test_aifg_ie_bm_timeInd(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_TIMEIND; ie.ptr=src[53]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_TIMEIND,dst.iei); //CU_ASSERT_EQUAL(2,len); CU_ASSERT_EQUAL(0x11,dst.param.bm_timeId.value); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_TIMEIND,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_TIMEIND,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[53],1)); } void test_aifg_ie_bm_speechVer(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_SPEECHVER; ie.ptr=src[54]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_SPEECHVER,dst.iei); //CU_ASSERT_EQUAL(2,len); CU_ASSERT_EQUAL(0x21,dst.param.bm_speechVer.value); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_SPEECHVER,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_SPEECHVER,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[54],1)); } void test_aifg_ie_bm_queuingInd(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_QUEUEIND; ie.ptr=src[55]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_QUEUEIND,dst.iei); //CU_ASSERT_EQUAL(2,len); CU_ASSERT_EQUAL(1,dst.param.bm_queuingInd.value); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_QUEUEIND,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_QUEUEIND,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[55],1)); } void test_aifg_ie_bm_assignReq(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_ASSIGNREQUIREMENT; ie.ptr=src[56]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_ASSIGNREQUIREMENT,dst.iei); //CU_ASSERT_EQUAL(2,len); CU_ASSERT_EQUAL(1,dst.param.bm_assignReq.value); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_ASSIGNREQUIREMENT,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_ASSIGNREQUIREMENT,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[56],1)); } void test_aifg_ie_bm_eMLPP(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_EMLPP; ie.ptr=src[57]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_EMLPP,dst.iei); //CU_ASSERT_EQUAL(2,len); CU_ASSERT_EQUAL(6,dst.param.bm_eMLPP.value); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_EMLPP,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_EMLPP,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[57],1)); } void test_aifg_ie_bm_configInd(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_CFGEVOIND; ie.ptr=src[58]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_CFGEVOIND,dst.iei); //CU_ASSERT_EQUAL(2,len); CU_ASSERT_EQUAL(3,dst.param.bm_cfgEvoInd.value); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_CFGEVOIND,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_CFGEVOIND,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[58],1)); } void test_aifg_ie_bm_tmsi(){ //precondition protocol=AIFG_MSG_BSSMAP; ie.iei=AIFG_IE_ID_BM_TMSI; ie.ptr=src[59]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_BM_TMSI,dst.iei); //CU_ASSERT_EQUAL(6,len); CU_ASSERT_EQUAL(0x33,dst.param.bm_tmsi.value[0]); CU_ASSERT_EQUAL(0x79,dst.param.bm_tmsi.value[1]); CU_ASSERT_EQUAL(0x27,dst.param.bm_tmsi.value[2]); CU_ASSERT_EQUAL(0x46,dst.param.bm_tmsi.value[3]); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_BM_TMSI,&(dst.param),buffer, 0); CU_ASSERT_EQUAL(AIFG_IEI_BM_TMSI,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[59],5)); } ///////////////////////// DTAP //////////////////////////////// void test_aifg_ie_dt_broadcastRef(){ //precondition protocol=AIFG_MSG_DTAP; ie.iei=AIFG_IE_ID_DT_GROUPREF; ie.ptr=src[60]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_DT_GROUPREF,dst.iei); //CU_ASSERT_EQUAL(6,len); CU_ASSERT_EQUAL(0x81a3c3,dst.param.dt_broadcastRef.binary_code); CU_ASSERT_EQUAL(0,dst.param.dt_broadcastRef.sf); CU_ASSERT_EQUAL(1,dst.param.dt_broadcastRef.af); CU_ASSERT_EQUAL(1,dst.param.dt_broadcastRef.call_priority); CU_ASSERT_EQUAL(2,dst.param.dt_broadcastRef.cipher_info); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_DT_GROUPREF,&(dst.param),buffer, 0); // CU_ASSERT_EQUAL(AIFG_IEI_DT_GROUPREF,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[0],src[60],5)); } void test_aifg_ie_dt_cmInfo1(){ //precondition protocol=AIFG_MSG_DTAP; ie.iei=AIFG_IE_ID_DT_MSCM1; ie.ptr=src[61]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_DT_MSCM1,dst.iei); //CU_ASSERT_EQUAL(6,len); CU_ASSERT_EQUAL(0,dst.param.dt_cmInfo1.rev_level); CU_ASSERT_EQUAL(1,dst.param.dt_cmInfo1.es_ind); CU_ASSERT_EQUAL(0,dst.param.dt_cmInfo1.a5_1); CU_ASSERT_EQUAL(1,dst.param.dt_cmInfo1.rf_power_cap); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_DT_MSCM1,&(dst.param),buffer, 0); // CU_ASSERT_EQUAL(AIFG_IEI_DT_MSCM1,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[0],src[61],1)); } void test_aifg_ie_dt_cmInfo2(){ //precondition protocol=AIFG_MSG_DTAP; ie.iei=AIFG_IE_ID_DT_MSCM2; ie.ptr=src[62]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_DT_MSCM2,dst.iei); //CU_ASSERT_EQUAL(5,len); CU_ASSERT_EQUAL(0x01,dst.param.bm_cmInfo2.rev_level); CU_ASSERT_EQUAL(0x01,dst.param.bm_cmInfo2.es_ind); CU_ASSERT_EQUAL(0x00,dst.param.bm_cmInfo2.a5_1); CU_ASSERT_EQUAL(0x03,dst.param.bm_cmInfo2.rf_power_cap); CU_ASSERT_EQUAL(0x00,dst.param.bm_cmInfo2.ps_cap); CU_ASSERT_EQUAL(0x02,dst.param.bm_cmInfo2.ss_screen_ind); CU_ASSERT_EQUAL(0x00,dst.param.bm_cmInfo2.sm_cap); CU_ASSERT_EQUAL(0x00,dst.param.bm_cmInfo2.vbs); CU_ASSERT_EQUAL(0x01,dst.param.bm_cmInfo2.vgcs); CU_ASSERT_EQUAL(0x00,dst.param.bm_cmInfo2.fc); CU_ASSERT_EQUAL(0x01,dst.param.bm_cmInfo2.cm3); CU_ASSERT_EQUAL(0x00,dst.param.bm_cmInfo2.lcsva_cap); CU_ASSERT_EQUAL(0x01,dst.param.bm_cmInfo2.so_lsa); CU_ASSERT_EQUAL(0x01,dst.param.bm_cmInfo2.cmsp); CU_ASSERT_EQUAL(0x00,dst.param.bm_cmInfo2.a5_3); CU_ASSERT_EQUAL(0x01,dst.param.bm_cmInfo2.a5_2); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_DT_MSCM2,&(dst.param),buffer, 0); // CU_ASSERT_EQUAL(AIFG_IEI_DT_MSCM2,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[0],src[62],4)); } void test_aifg_ie_dt_mobileId() { //precondition protocol=AIFG_MSG_DTAP; ie.iei=AIFG_IE_ID_DT_MOBILEID; ie.ptr=src[63]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_DT_MOBILEID,dst.iei); //CU_ASSERT_EQUAL(4,len); CU_ASSERT_EQUAL(0x03,dst.param.mobileId.type); CU_ASSERT_EQUAL(0,dst.param.mobileId.odd_even_flag); CU_ASSERT_EQUAL(0x02,dst.param.mobileId.id_len); CU_ASSERT_EQUAL(0x07,dst.param.mobileId.id[0]); CU_ASSERT_EQUAL(0x02,dst.param.mobileId.id[1]); CU_ASSERT_EQUAL(0x0f,dst.param.mobileId.id[2]); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_DT_MOBILEID,&(dst.param),buffer, 2); CU_ASSERT_EQUAL(AIFG_IEI_DT_MOBILEID,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[63],3)); } void test_aifg_ie_dt_lai() { //precondition protocol=AIFG_MSG_DTAP; ie.iei=AIFG_IE_ID_DT_LAI; ie.ptr=src[64]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_DT_LAI,dst.iei); //CU_ASSERT_EQUAL(6,len); CU_ASSERT_EQUAL(0x08,dst.param.dt_lai.mcc[0]); CU_ASSERT_EQUAL(0x07,dst.param.dt_lai.mcc[1]); CU_ASSERT_EQUAL(0x03,dst.param.dt_lai.mcc[2]); CU_ASSERT_EQUAL(0x0f,dst.param.dt_lai.mnc[2]); CU_ASSERT_EQUAL(0x06,dst.param.dt_lai.mnc[1]); CU_ASSERT_EQUAL(0x04,dst.param.dt_lai.mnc[0]); CU_ASSERT_EQUAL(0x3102,dst.param.dt_lai.LAC); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_DT_LAI,&(dst.param),buffer, 2); CU_ASSERT_EQUAL(AIFG_IEI_DT_LAI,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[64],5)); } void test_aifg_ie_dt_luType(){ //precondition protocol=AIFG_MSG_DTAP; ie.iei=AIFG_IE_ID_DT_LUTYPE; ie.ptr=src[65]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_DT_LUTYPE,dst.iei); //CU_ASSERT_EQUAL(1,len); CU_ASSERT_EQUAL(1,dst.param.dt_luType.fo_req); CU_ASSERT_EQUAL(1,dst.param.dt_luType.lut); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_DT_LUTYPE,&(dst.param),buffer, 0); // CU_ASSERT_EQUAL(AIFG_IEI_DT_LUTYPE,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[0],src[65],1)); } void test_aifg_ie_dt_nwName(){ //precondition protocol=AIFG_MSG_DTAP; ie.iei=AIFG_IE_ID_DT_FULL_NWNAME; ie.ptr=src[66]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_DT_FULL_NWNAME,dst.iei); //CU_ASSERT_EQUAL(5,len); CU_ASSERT_EQUAL(1,dst.param.dt_nwName.code_scheme); CU_ASSERT_EQUAL(0,dst.param.dt_nwName.add_ci); CU_ASSERT_EQUAL(1,dst.param.dt_nwName.spare_num); CU_ASSERT_EQUAL(2,dst.param.dt_nwName.text_len); CU_ASSERT_EQUAL(0x35,dst.param.dt_nwName.text[0]); CU_ASSERT_EQUAL(0x64,dst.param.dt_nwName.text[1]); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_DT_FULL_NWNAME,&(dst.param),buffer, 2); // CU_ASSERT_EQUAL(AIFG_IEI_DT_NWNAME,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[66],4)); } void test_aifg_ie_dt_tzTime(){ //precondition protocol=AIFG_MSG_DTAP; ie.iei=AIFG_IE_ID_DT_TZTIME; ie.ptr=src[67]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_DT_TZTIME,dst.iei); //CU_ASSERT_EQUAL(8,len); CU_ASSERT_EQUAL(0x07,dst.param.dt_tzTime.year); CU_ASSERT_EQUAL(0x04,dst.param.dt_tzTime.month); CU_ASSERT_EQUAL(0x12,dst.param.dt_tzTime.day); CU_ASSERT_EQUAL(0x0a,dst.param.dt_tzTime.hour); CU_ASSERT_EQUAL(0x32,dst.param.dt_tzTime.minute); CU_ASSERT_EQUAL(0x14,dst.param.dt_tzTime.second); CU_ASSERT_EQUAL(0xdd,dst.param.dt_tzTime.time_zone); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_DT_TZTIME,&(dst.param),buffer, 2); CU_ASSERT_EQUAL(AIFG_IEI_DT_TZTIME,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[67],7)); } void test_aifg_ie_dt_progInd(){ //precondition protocol=AIFG_MSG_DTAP; ie.iei=AIFG_IE_ID_DT_PROGIND; ie.ptr=src[68]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_DT_PROGIND,dst.iei); //CU_ASSERT_EQUAL(4,len); CU_ASSERT_EQUAL(0x02,dst.param.dt_progInd.coding_standard); CU_ASSERT_EQUAL(0x00,dst.param.dt_progInd.location); CU_ASSERT_EQUAL(0x02,dst.param.dt_progInd.desc); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_DT_PROGIND,&(dst.param),buffer, 2); CU_ASSERT_EQUAL(AIFG_IEI_DT_PROGIND,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[68],3)); } void test_aifg_ie_dt_uu(){ //precondition protocol=AIFG_MSG_DTAP; ie.iei=AIFG_IE_ID_DT_USERUSER; ie.ptr=src[69]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_DT_USERUSER,dst.iei); //CU_ASSERT_EQUAL(5,len); CU_ASSERT_EQUAL(0x01,dst.param.dt_uu.pd); CU_ASSERT_EQUAL(2,dst.param.dt_uu.info_len); CU_ASSERT_EQUAL(0x19,dst.param.dt_uu.info[0]); CU_ASSERT_EQUAL(0x83,dst.param.dt_uu.info[1]); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_DT_USERUSER,&(dst.param),buffer, 2); CU_ASSERT_EQUAL(AIFG_IEI_DT_USERUSER,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[69],4)); } void test_aifg_ie_dt_bc_0(){//info_trans_cap==0,only octet 3a is extend //precondition protocol=AIFG_MSG_DTAP; ie.iei=AIFG_IE_ID_DT_BEARERCAP; ie.ptr=src[70]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_DT_BEARERCAP,dst.iei); //CU_ASSERT_EQUAL(4,len); CU_ASSERT_EQUAL(1,dst.param.dt_bc.channel_require); CU_ASSERT_EQUAL(0,dst.param.dt_bc.coding_std); CU_ASSERT_EQUAL(0,dst.param.dt_bc.trans_mode); CU_ASSERT_EQUAL(0,dst.param.dt_bc.info_trans_cap); CU_ASSERT_EQUAL(0,dst.param.dt_bc.coding.value); CU_ASSERT_EQUAL(1,dst.param.dt_bc.coding.flag); CU_ASSERT_EQUAL(2,dst.param.dt_bc.speech_ver.value); CU_ASSERT_EQUAL(1,dst.param.dt_bc.speech_ver.flag); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_DT_BEARERCAP,&(dst.param),buffer, 2); CU_ASSERT_EQUAL(AIFG_IEI_DT_BEARERCAP,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[70],3)); } void test_aifg_ie_dt_bc(){ //precondition memset(&dst,0,sizeof(dst)); protocol=AIFG_MSG_DTAP; ie.iei=AIFG_IE_ID_DT_BEARERCAP; ie.ptr=src[71]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_DT_BEARERCAP,dst.iei); //CU_ASSERT_EQUAL(15,len); CU_ASSERT_EQUAL(1,dst.param.dt_bc.channel_require); CU_ASSERT_EQUAL(0,dst.param.dt_bc.coding_std); CU_ASSERT_EQUAL(0,dst.param.dt_bc.trans_mode); CU_ASSERT_EQUAL(3,dst.param.dt_bc.info_trans_cap); CU_ASSERT_EQUAL(1,dst.param.dt_bc.compress.flag);//test flag CU_ASSERT_EQUAL(1,dst.param.dt_bc.compress.value); CU_ASSERT_EQUAL(0,dst.param.dt_bc.structure.value); CU_ASSERT_EQUAL(1,dst.param.dt_bc.dupl_mode.value); CU_ASSERT_EQUAL(0,dst.param.dt_bc.confiure.value); CU_ASSERT_EQUAL(1,dst.param.dt_bc.nirr.value); CU_ASSERT_EQUAL(0,dst.param.dt_bc.establishment.value); CU_ASSERT_EQUAL(0,dst.param.dt_bc.access_id.value); CU_ASSERT_EQUAL(3,dst.param.dt_bc.rate_adaption.value); CU_ASSERT_EQUAL(2,dst.param.dt_bc.signal_protocol.value); CU_ASSERT_EQUAL(0,dst.param.dt_bc.o_itc.value); CU_ASSERT_EQUAL(0,dst.param.dt_bc.o_rate_adaption.value); CU_ASSERT_EQUAL(1,dst.param.dt_bc.hdr_nohdr.value); CU_ASSERT_EQUAL(1,dst.param.dt_bc.multi_frame.value); CU_ASSERT_EQUAL(0,dst.param.dt_bc.mode.value); CU_ASSERT_EQUAL(0,dst.param.dt_bc.lli.value); CU_ASSERT_EQUAL(1,dst.param.dt_bc.assign_or_e.value); CU_ASSERT_EQUAL(0,dst.param.dt_bc.inb_neg.value); CU_ASSERT_EQUAL(1,dst.param.dt_bc.layer1_id.value); CU_ASSERT_EQUAL(0,dst.param.dt_bc.user_info1_protocol.value); CU_ASSERT_EQUAL(1,dst.param.dt_bc.sync_async.value); CU_ASSERT_EQUAL(1,dst.param.dt_bc.num_stop_bits.value); CU_ASSERT_EQUAL(0,dst.param.dt_bc.negotiation.value); CU_ASSERT_EQUAL(1,dst.param.dt_bc.num_data_bits.value); CU_ASSERT_EQUAL(3,dst.param.dt_bc.user_rate.value); CU_ASSERT_EQUAL(2,dst.param.dt_bc.intermed_rate.value); CU_ASSERT_EQUAL(1,dst.param.dt_bc.nic_on_tx.value); CU_ASSERT_EQUAL(1,dst.param.dt_bc.nic_on_rx.value); CU_ASSERT_EQUAL(3,dst.param.dt_bc.parity.value); CU_ASSERT_EQUAL(3,dst.param.dt_bc.connection_element.value); CU_ASSERT_EQUAL(0,dst.param.dt_bc.modem_type.value); CU_ASSERT_EQUAL(1,dst.param.dt_bc.o_modem_type.value); CU_ASSERT_EQUAL(1,dst.param.dt_bc.fixed_nw_user_rate.value); CU_ASSERT_EQUAL(11,dst.param.dt_bc.acceptable_chennel_code.value); CU_ASSERT_EQUAL(7,dst.param.dt_bc.max_traffic_channel.value); CU_ASSERT_EQUAL(4,dst.param.dt_bc.uimi.value); CU_ASSERT_EQUAL(7,dst.param.dt_bc.wanted_air_if_user_rate.value); CU_ASSERT_EQUAL(2,dst.param.dt_bc.layer2_id.value); CU_ASSERT_EQUAL(6,dst.param.dt_bc.user_info2_protocol.value); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_DT_BEARERCAP,&(dst.param),buffer, 2); CU_ASSERT_EQUAL(AIFG_IEI_DT_BEARERCAP,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[71],14)); int n=1; while(n<15){ printf("%x ",buffer[n]); n++; } } void test_aifg_ie_dt_cause(){ //precondition protocol=AIFG_MSG_DTAP; ie.iei=AIFG_IE_ID_DT_CAUSE; ie.ptr=src[72]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_DT_CAUSE,dst.iei); //CU_ASSERT_EQUAL(6,len); CU_ASSERT_EQUAL(2,dst.param.dt_cause.coding_std); CU_ASSERT_EQUAL(7,dst.param.dt_cause.location); CU_ASSERT_EQUAL(1,dst.param.dt_cause.recommendation.flag); CU_ASSERT_EQUAL(0xdd,dst.param.dt_cause.recommendation.value); CU_ASSERT_EQUAL(0x16,dst.param.dt_cause.cause_value); CU_ASSERT_EQUAL(1,dst.param.dt_cause.diag_len); CU_ASSERT_EQUAL(0x81,dst.param.dt_cause.diagnostic[0]); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_DT_CAUSE,&(dst.param),buffer, 2); CU_ASSERT_EQUAL(AIFG_IEI_DT_CAUSE,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[72],5)); } void test_aifg_ie_dt_ccCap(){ //precondition protocol=AIFG_MSG_DTAP; ie.iei=AIFG_IE_ID_DT_CCCAP; ie.ptr=src[73]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_DT_CCCAP,dst.iei); //CU_ASSERT_EQUAL(3,len); CU_ASSERT_EQUAL(1,dst.param.dt_ccCap.pcp); CU_ASSERT_EQUAL(1,dst.param.dt_ccCap.dtmf); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_DT_CCCAP,&(dst.param),buffer, 2); CU_ASSERT_EQUAL(AIFG_IEI_DT_CCCAP,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[73],2)); } void test_aifg_ie_dt_connNum(){ //precondition protocol=AIFG_MSG_DTAP; ie.iei=AIFG_IE_ID_DT_CONNNUM; ie.ptr=src[74]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_DT_CONNNUM,dst.iei); //CU_ASSERT_EQUAL(6,len); CU_ASSERT_EQUAL(2,dst.param.dt_connNum.type); CU_ASSERT_EQUAL(1,dst.param.dt_connNum.presentation_ind.flag); CU_ASSERT_EQUAL(1,dst.param.dt_connNum.presentation_ind.value); CU_ASSERT_EQUAL(1,dst.param.dt_connNum.screen_ind.flag); CU_ASSERT_EQUAL(3,dst.param.dt_connNum.screen_ind.value); CU_ASSERT_EQUAL(8,dst.param.dt_connNum.num_plan); CU_ASSERT_EQUAL(4,dst.param.dt_connNum.num_len); CU_ASSERT_EQUAL(9,dst.param.dt_connNum.number[0]); CU_ASSERT_EQUAL(8,dst.param.dt_connNum.number[1]); CU_ASSERT_EQUAL(7,dst.param.dt_connNum.number[2]); CU_ASSERT_EQUAL(3,dst.param.dt_connNum.number[3]); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_DT_CONNNUM,&(dst.param),buffer, 2); CU_ASSERT_EQUAL(AIFG_IEI_DT_CONNNUM,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[74],5)); } void test_aifg_ie_dt_connSubAddr(){ //precondition protocol=AIFG_MSG_DTAP; ie.iei=AIFG_IE_ID_DT_CONNSUBADDR; ie.ptr=src[75]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_DT_CONNSUBADDR,dst.iei); //CU_ASSERT_EQUAL(5,len); CU_ASSERT_EQUAL(0,dst.param.dt_connSubAddr.type); CU_ASSERT_EQUAL(1,dst.param.dt_connSubAddr.odd_even_ind); CU_ASSERT_EQUAL(2,dst.param.dt_connSubAddr.info_len); CU_ASSERT_EQUAL(0x50,dst.param.dt_connSubAddr.info[0]); CU_ASSERT_EQUAL(0x43,dst.param.dt_connSubAddr.info[1]); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_DT_CONNSUBADDR,&(dst.param),buffer, 2); CU_ASSERT_EQUAL(AIFG_IEI_DT_CONNSUBADDR,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[75],4)); } void test_aifg_ie_dt_ssVer(){ //precondition protocol=AIFG_MSG_DTAP; ie.iei=AIFG_IE_ID_DT_SSVER; ie.ptr=src[76]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_DT_SSVER,dst.iei); //CU_ASSERT_EQUAL(3,len); CU_ASSERT_EQUAL(1,dst.param.dt_ssVer.info_len); CU_ASSERT_EQUAL(0xdd,dst.param.dt_ssVer.info[0]); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_DT_SSVER,&(dst.param),buffer, 2); CU_ASSERT_EQUAL(AIFG_IEI_DT_SSVER,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[76],2)); } void test_aifg_ie_dt_hiComp(){ //precondition protocol=AIFG_MSG_DTAP; ie.iei=AIFG_IE_ID_DT_HIGHCOM; ie.ptr=src[77]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_DT_HIGHCOM,dst.iei); //CU_ASSERT_EQUAL(5,len); CU_ASSERT_EQUAL(1,dst.param.dt_hiComp.coding_std.value); CU_ASSERT_EQUAL(1,dst.param.dt_hiComp.coding_std.flag); CU_ASSERT_EQUAL(2,dst.param.dt_hiComp.interpret.value); CU_ASSERT_EQUAL(1,dst.param.dt_hiComp.interpret.flag); CU_ASSERT_EQUAL(0,dst.param.dt_hiComp.presentat_method.value); CU_ASSERT_EQUAL(1,dst.param.dt_hiComp.presentat_method.flag); CU_ASSERT_EQUAL(0x6e,dst.param.dt_hiComp.high_layer_id.value); CU_ASSERT_EQUAL(1,dst.param.dt_hiComp.high_layer_id.flag); CU_ASSERT_EQUAL(0x34,dst.param.dt_hiComp.ext_high_layer_id.value); CU_ASSERT_EQUAL(1,dst.param.dt_hiComp.ext_high_layer_id.flag); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_DT_HIGHCOM,&(dst.param),buffer, 2); CU_ASSERT_EQUAL(AIFG_IEI_DT_HIGHCOM,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[77],4)); } void test_aifg_ie_dt_loComp(){ //precondition protocol=AIFG_MSG_DTAP; ie.iei=AIFG_IE_ID_DT_LOWCOM; ie.ptr=src[78]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_DT_LOWCOM,dst.iei); //CU_ASSERT_EQUAL(4,len); CU_ASSERT_EQUAL(2,dst.param.dt_loComp.data_len); CU_ASSERT_EQUAL(0xdd,dst.param.dt_loComp.data[0]); CU_ASSERT_EQUAL(0xde,dst.param.dt_loComp.data[1]); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_DT_LOWCOM,&(dst.param),buffer, 2); CU_ASSERT_EQUAL(AIFG_IEI_DT_LOWCOM,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[78],3)); } void test_aifg_ie_dt_callStat(){ //precondition protocol=AIFG_MSG_DTAP; ie.iei=AIFG_IE_ID_DT_CALLSTAT; ie.ptr=src[79]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_DT_CALLSTAT,dst.iei); //CU_ASSERT_EQUAL(2,len); CU_ASSERT_EQUAL(3,dst.param.dt_callStat.coding_std); CU_ASSERT_EQUAL(2,dst.param.dt_callStat.value); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_DT_CALLSTAT,&(dst.param),buffer, 0); // CU_ASSERT_EQUAL(AIFG_IEI_DT_CALLSTAT,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[0],src[79],1)); } void test_aifg_ie_dt_auxStat(){ //precondition protocol=AIFG_MSG_DTAP; ie.iei=AIFG_IE_ID_DT_AUXSTAT; ie.ptr=src[80]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_DT_AUXSTAT,dst.iei); //CU_ASSERT_EQUAL(3,len); CU_ASSERT_EQUAL(1,dst.param.dt_auxStat.hold_stat); CU_ASSERT_EQUAL(2,dst.param.dt_auxStat.mpty_stat); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_DT_AUXSTAT,&(dst.param),buffer, 2); CU_ASSERT_EQUAL(AIFG_IEI_DT_AUXSTAT,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[80],2)); } void test_aifg_ie_dt_lsaId(){ //precondition protocol=AIFG_MSG_DTAP; ie.iei=AIFG_IE_ID_DT_LSAID; ie.ptr=src[81]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_DT_LSAID,dst.iei); //CU_ASSERT_EQUAL(5,len); CU_ASSERT_EQUAL(0x11,dst.param.dt_lsaId.value[0]); CU_ASSERT_EQUAL(0x22,dst.param.dt_lsaId.value[1]); CU_ASSERT_EQUAL(0x33,dst.param.dt_lsaId.value[2]); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_DT_LSAID,&(dst.param),buffer, 2); CU_ASSERT_EQUAL(AIFG_IEI_DT_LSAID,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[81],4)); } void test_aifg_ie_dt_rejectCause(){ //precondition protocol=AIFG_MSG_DTAP; ie.iei=AIFG_IE_ID_DT_REJCAUSE; ie.ptr=src[82]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_DT_REJCAUSE,dst.iei); //CU_ASSERT_EQUAL(2,len); CU_ASSERT_EQUAL(0x02,dst.param.dt_rejectCause.value); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_DT_REJCAUSE,&(dst.param),buffer, 0); // CU_ASSERT_EQUAL(AIFG_IEI_DT_REJCAUSE,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[0],src[82],1)); } void test_aifg_ie_dt_cmType(){ //precondition protocol=AIFG_MSG_DTAP; ie.iei=AIFG_IE_ID_DT_CMTYPE; ie.ptr=src[83]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_DT_CMTYPE,dst.iei); //CU_ASSERT_EQUAL(1,len); CU_ASSERT_EQUAL(0x0B,dst.param.dt_cmType.value); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_DT_CMTYPE,&(dst.param),buffer, 0); // CU_ASSERT_EQUAL(AIFG_IEI_DT_CMTYPE,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[0],src[83],1)); } void test_aifg_ie_dt_cipherKey(){ //precondition protocol=AIFG_MSG_DTAP; ie.iei=AIFG_IE_ID_DT_CIPHERKEY; ie.ptr=src[84]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_DT_CIPHERKEY,dst.iei); //CU_ASSERT_EQUAL(1,len); CU_ASSERT_EQUAL(0x01,dst.param.dt_cipherKey.value); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_DT_CIPHERKEY,&(dst.param),buffer, 0); // CU_ASSERT_EQUAL(AIFG_IEI_DT_CIPHERKEY,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[0],src[84],1)); } void test_aifg_ie_dt_priority() { //precondition protocol=AIFG_MSG_DTAP; ie.iei=AIFG_IE_ID_DT_PRIORITYLEVEL; ie.ptr=src[85]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_DT_PRIORITYLEVEL,dst.iei); //CU_ASSERT_EQUAL(1,len); CU_ASSERT_EQUAL(0x05,dst.param.dt_priority.value); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_DT_PRIORITYLEVEL,&(dst.param),buffer, 2); CU_ASSERT_EQUAL(AIFG_IEI_DT_PRIORITYLEVEL,buffer[0]&0xF0); CU_ASSERT_EQUAL(src[85][0],buffer[0]&0x0F); } void test_aifg_ie_dt_idType() { //precondition protocol=AIFG_MSG_DTAP; ie.iei=AIFG_IE_ID_DT_IDTYPE; ie.ptr=src[86]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_DT_IDTYPE,dst.iei); //CU_ASSERT_EQUAL(1,len); CU_ASSERT_EQUAL(0x03,dst.param.dt_idType.value); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_DT_IDTYPE,&(dst.param),buffer, 0); // CU_ASSERT_EQUAL(AIFG_IEI_DT_IDTYPE,buffer[0]); CU_ASSERT_EQUAL(src[86][0],buffer[0]&0x0F); } void test_aifg_ie_dt_congestLevel() { //precondition protocol=AIFG_MSG_DTAP; ie.iei=AIFG_IE_ID_DT_CONGESTLEVEL; ie.ptr=src[87]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_DT_CONGESTLEVEL,dst.iei); //CU_ASSERT_EQUAL(1,len); CU_ASSERT_EQUAL(0x0F,dst.param.dt_congestLevel.value); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_DT_CONGESTLEVEL,&(dst.param),buffer, 0); // CU_ASSERT_EQUAL(AIFG_IEI_DT_CONGESTLEVEL,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[0],src[87],1)); } void test_aifg_ie_dt_notificationInd() { //precondition protocol=AIFG_MSG_DTAP; ie.iei=AIFG_IE_ID_DT_NOTIIND; ie.ptr=src[88]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_DT_NOTIIND,dst.iei); //CU_ASSERT_EQUAL(2,len); CU_ASSERT_EQUAL(0x00,dst.param.dt_notificationInd.value); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_DT_NOTIIND,&(dst.param),buffer, 0); // CU_ASSERT_EQUAL(AIFG_IEI_DT_NOTIIND,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[0],src[88],1));} void test_aifg_ie_dt_signal(){ //precondition protocol=AIFG_MSG_DTAP; ie.iei=AIFG_IE_ID_DT_SIGNAL; ie.ptr=src[89]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_DT_SIGNAL,dst.iei); //CU_ASSERT_EQUAL(2,len); CU_ASSERT_EQUAL(0x08,dst.param.dt_signal.value); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_DT_SIGNAL,&(dst.param),buffer, 2); CU_ASSERT_EQUAL(AIFG_IEI_DT_SIGNAL,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[89],1)); } void test_aifg_ie_dt_alertPattern(){ //precondition protocol=AIFG_MSG_DTAP; ie.iei=AIFG_IE_ID_DT_ALERTPATTERN; ie.ptr=src[90]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_DT_ALERTPATTERN,dst.iei); //CU_ASSERT_EQUAL(3,len); CU_ASSERT_EQUAL(0x07,dst.param.dt_alertPattern.value); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_DT_ALERTPATTERN,&(dst.param),buffer, 0); // CU_ASSERT_EQUAL(AIFG_IEI_DT_ALERTPATTERN,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[0],src[90],2)); } void test_aifg_ie_dt_keypad(){ //precondition protocol=AIFG_MSG_DTAP; ie.iei=AIFG_IE_ID_DT_KEYPAD; ie.ptr=src[91]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_DT_KEYPAD,dst.iei); //CU_ASSERT_EQUAL(2,len); CU_ASSERT_EQUAL(0x0D,dst.param.dt_keypad.value); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_DT_KEYPAD,&(dst.param),buffer, 2); CU_ASSERT_EQUAL(AIFG_IEI_DT_KEYPAD,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[91],1)); } void test_aifg_ie_dt_timeZone(){ //precondition protocol=AIFG_MSG_DTAP; ie.iei=AIFG_IE_ID_DT_TIMEZONE; ie.ptr=src[92]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_DT_TIMEZONE,dst.iei); //CU_ASSERT_EQUAL(2,len); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_DT_TIMEZONE,&(dst.param),buffer, 2); CU_ASSERT_EQUAL(AIFG_IEI_DT_TIMEZONE,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[92],1)); } void test_aifg_ie_dt_authRAND(){ //precondition protocol=AIFG_MSG_DTAP; ie.iei=AIFG_IE_ID_DT_AUTHRAND; ie.ptr=src[93]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_DT_AUTHRAND,dst.iei); //CU_ASSERT_EQUAL(17,len); CU_ASSERT_EQUAL(0x00,dst.param.dt_authRAND.value[0]); CU_ASSERT_EQUAL(0x11,dst.param.dt_authRAND.value[1]); CU_ASSERT_EQUAL(0x22,dst.param.dt_authRAND.value[2]); CU_ASSERT_EQUAL(0x33,dst.param.dt_authRAND.value[3]); CU_ASSERT_EQUAL(0x44,dst.param.dt_authRAND.value[4]); CU_ASSERT_EQUAL(0x55,dst.param.dt_authRAND.value[5]); CU_ASSERT_EQUAL(0x66,dst.param.dt_authRAND.value[6]); CU_ASSERT_EQUAL(0x77,dst.param.dt_authRAND.value[7]); CU_ASSERT_EQUAL(0x88,dst.param.dt_authRAND.value[8]); CU_ASSERT_EQUAL(0x99,dst.param.dt_authRAND.value[9]); CU_ASSERT_EQUAL(0xAA,dst.param.dt_authRAND.value[10]); CU_ASSERT_EQUAL(0xBB,dst.param.dt_authRAND.value[11]); CU_ASSERT_EQUAL(0xCC,dst.param.dt_authRAND.value[12]); CU_ASSERT_EQUAL(0xDD,dst.param.dt_authRAND.value[13]); CU_ASSERT_EQUAL(0xEE,dst.param.dt_authRAND.value[14]); CU_ASSERT_EQUAL(0xFF,dst.param.dt_authRAND.value[15]); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_DT_AUTHRAND,&(dst.param),buffer, 0); // CU_ASSERT_EQUAL(AIFG_IEI_DT_AUTHRAND,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[0],src[93],16)); } void test_aifg_ie_dt_authSRES(){ //precondition protocol=AIFG_MSG_DTAP; ie.iei=AIFG_IE_ID_DT_AUTHSRES; ie.ptr=src[94]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_DT_AUTHSRES,dst.iei); //CU_ASSERT_EQUAL(5,len); CU_ASSERT_EQUAL(0x11,dst.param.dt_authSRES.value[0]); CU_ASSERT_EQUAL(0x12,dst.param.dt_authSRES.value[1]); CU_ASSERT_EQUAL(0x13,dst.param.dt_authSRES.value[2]); CU_ASSERT_EQUAL(0x14,dst.param.dt_authSRES.value[3]); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_DT_AUTHSRES,&(dst.param),buffer, 0); // CU_ASSERT_EQUAL(AIFG_IEI_DT_AUTHSRES,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[0],src[94],4)); } void test_aifg_ie_dt_rpInd() { //precondition protocol=AIFG_MSG_DTAP; ie.iei=AIFG_IE_ID_DT_REPEATIND; ie.ptr=src[95]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_DT_REPEATIND,dst.iei); //CU_ASSERT_EQUAL(1,len); CU_ASSERT_EQUAL(0x01,dst.param.dt_rpInd.value); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_DT_REPEATIND,&(dst.param),buffer, 2); CU_ASSERT_EQUAL(AIFG_IEI_DT_REPEATIND,buffer[0]&0xF0); CU_ASSERT_EQUAL(src[95][0],buffer[0]&0x0F); } void test_aifg_ie_dt_facility() { //precondition protocol=AIFG_MSG_DTAP; ie.iei=AIFG_IE_ID_DT_FACILITY; ie.ptr=src[96]; //test len=aifg_ie_decode(&ie,&dst); //check result CU_ASSERT_EQUAL(AIFG_IE_ID_DT_FACILITY,dst.iei); //CU_ASSERT_EQUAL(1,len); CU_ASSERT_EQUAL(0xa1,dst.param.dt_facility.components.invoke.tag); CU_ASSERT_EQUAL(0x0c,dst.param.dt_facility.components.invoke.len); CU_ASSERT_EQUAL(0x02,dst.param.dt_facility.components.invoke.invoke_id.tag); CU_ASSERT_EQUAL(0x01,dst.param.dt_facility.components.invoke.invoke_id.len); CU_ASSERT_EQUAL(0xdd,dst.param.dt_facility.components.invoke.invoke_id.id); CU_ASSERT_EQUAL(0x80,dst.param.dt_facility.components.invoke.linked_id.tag); CU_ASSERT_EQUAL(0x01,dst.param.dt_facility.components.invoke.linked_id.len); CU_ASSERT_EQUAL(0xdd,dst.param.dt_facility.components.invoke.linked_id.id); CU_ASSERT_EQUAL(1,dst.param.dt_facility.components.invoke.linked_id.flag); CU_ASSERT_EQUAL(0x02,dst.param.dt_facility.components.invoke.opCode.tag); CU_ASSERT_EQUAL(0x03,dst.param.dt_facility.components.invoke.opCode.len); CU_ASSERT_EQUAL(0x0a,dst.param.dt_facility.components.invoke.opCode.op[0]); CU_ASSERT_EQUAL(0x0b,dst.param.dt_facility.components.invoke.opCode.op[1]); CU_ASSERT_EQUAL(0x0c,dst.param.dt_facility.components.invoke.opCode.op[2]); CU_ASSERT_EQUAL(0xdd,dst.param.dt_facility.components.invoke.param.param); CU_ASSERT_EQUAL(1,dst.param.dt_facility.components.invoke.param.flag); CU_ASSERT_EQUAL(0xa2,dst.param.dt_facility.components.return_result.tag); CU_ASSERT_EQUAL(0x0d,dst.param.dt_facility.components.return_result.len); CU_ASSERT_EQUAL(0x02,dst.param.dt_facility.components.return_result.invoke_id.tag); CU_ASSERT_EQUAL(0x01,dst.param.dt_facility.components.return_result.invoke_id.len); CU_ASSERT_EQUAL(0xdd,dst.param.dt_facility.components.return_result.invoke_id.id); CU_ASSERT_EQUAL(0x30,dst.param.dt_facility.components.return_result.sequence.tag); CU_ASSERT_EQUAL(0x04,dst.param.dt_facility.components.return_result.sequence.len); CU_ASSERT_EQUAL(1,dst.param.dt_facility.components.return_result.sequence.flag); CU_ASSERT_EQUAL(0x02,dst.param.dt_facility.components.return_result.opCode.tag); CU_ASSERT_EQUAL(0x02,dst.param.dt_facility.components.return_result.opCode.len); CU_ASSERT_EQUAL(1,dst.param.dt_facility.components.return_result.opCode.flag); CU_ASSERT_EQUAL(0x0a,dst.param.dt_facility.components.return_result.opCode.op[0]); CU_ASSERT_EQUAL(0x0b,dst.param.dt_facility.components.return_result.opCode.op[1]); CU_ASSERT_EQUAL(0x11,dst.param.dt_facility.components.return_result.param.param[0]); CU_ASSERT_EQUAL(0x22,dst.param.dt_facility.components.return_result.param.param[1]); CU_ASSERT_EQUAL(0x33,dst.param.dt_facility.components.return_result.param.param[2]); CU_ASSERT_EQUAL(0x44,dst.param.dt_facility.components.return_result.param.param[3]); CU_ASSERT_EQUAL(1,dst.param.dt_facility.components.return_result.param.flag); CU_ASSERT_EQUAL(0xa3,dst.param.dt_facility.components.return_error.tag); CU_ASSERT_EQUAL(0x09,dst.param.dt_facility.components.return_error.len); CU_ASSERT_EQUAL(0x02,dst.param.dt_facility.components.return_error.invoke_id.tag); CU_ASSERT_EQUAL(0x01,dst.param.dt_facility.components.return_error.invoke_id.len); CU_ASSERT_EQUAL(0xdd,dst.param.dt_facility.components.return_error.invoke_id.id); CU_ASSERT_EQUAL(0x02,dst.param.dt_facility.components.return_error.error.tag); CU_ASSERT_EQUAL(0x03,dst.param.dt_facility.components.return_error.error.len); CU_ASSERT_EQUAL(0x01,dst.param.dt_facility.components.return_error.error.er[0]); CU_ASSERT_EQUAL(0x09,dst.param.dt_facility.components.return_error.error.er[1]); CU_ASSERT_EQUAL(0x0a,dst.param.dt_facility.components.return_error.error.er[2]); CU_ASSERT_EQUAL(0xdd,dst.param.dt_facility.components.return_error.param.param); CU_ASSERT_EQUAL(1,dst.param.dt_facility.components.return_error.param.flag); CU_ASSERT_EQUAL(0xa4,dst.param.dt_facility.components.reject.tag); CU_ASSERT_EQUAL(0x06,dst.param.dt_facility.components.reject.len); CU_ASSERT_EQUAL(0x02,dst.param.dt_facility.components.reject.invoke_id.tag); CU_ASSERT_EQUAL(0x01,dst.param.dt_facility.components.reject.invoke_id.len); CU_ASSERT_EQUAL(0xdd,dst.param.dt_facility.components.reject.invoke_id.id); CU_ASSERT_EQUAL(0x80,dst.param.dt_facility.components.reject.problem.tag); CU_ASSERT_EQUAL(1,dst.param.dt_facility.components.reject.problem.len); CU_ASSERT_EQUAL(0x00,dst.param.dt_facility.components.reject.problem.pro[0]); //test encode aifg_ie_encode(protocol,AIFG_IE_ID_DT_FACILITY,&(dst.param),buffer, 2); CU_ASSERT_EQUAL(AIFG_IEI_DT_FACILITY,buffer[0]); CU_ASSERT_EQUAL(0,memcmp(&buffer[1],src[96],49)); } //////////////////////////////////////////msg test////////////////////////////////////////// aifg_msg_t structed_msg; aifg_msg_pre_decoded predecoded; int msg_len; BYTE msgsrc[][256]= { {0x00,0x0b,0x01,0x0B, 0x05, 0x01, 0x08, 0x91, 0x81, 0x05, 0x01, 0x00, 0x03},//0-assignReq {0x00,0x1d,0x02,0x15,0x08,0x01,0x01,0x02,0x05,0x08,0x00,0x13,0x42,0x05,0x00, 0x02,0x00,0x11,0x21,0x56,0x2c,0x03,0x2d,0x10,0x33,0x21,0x3b,0x03,0x10,0x39,0xd2},//1-assignComplete {0x00,0x0f,0x03, 0x04,0x01,0x09, 0x15,0x08, 0x2d,0x10, 0x2e,0x05,0x01,0x02,0x03,0x04,0x05},//2-assignFailure {0x00,0x08,0x40, 0x01,0x01,0x02, 0x04,0x01,0x09, 0x36,},//3-block {0x00,0x04,0x41, 0x01,0x01,0x02},//4-blockAck {0x00,0x04,0x42, 0x01,0x01,0x02},//5-unblock {0x00,0x04,0x43, 0x01,0x01,0x02},//6-unblockAck {0x00,0x25,0x11, 0x04,0x01,0x09, 0x1b, 0x1a,0x08,0x00,0x85,0x47,0x9c,0x67,0x24,0x3d,0x05, 0x2e,0x05,0x01,0x02,0x03,0x04,0x05, 0x31,0x19, 0x33,0x21, 0x32,0x02, 0x3a,0X07, 0xdd,0X01,0X02,0xdd ,0X02,0X06,0X01},//7-HORequired {0x00,0x4c,0x10, 0x0b,0X04,0X01,0X09,0X83,0X79, 0x0a,0x01,0x01, 0x12,0x03,0x33,0x22,0x8d, 0x05,0x03,0x02,0x00,0x22, 0x06,0x01,0x76, 0x01,0x01,0x02, 0x19,0x01, 0x05,0x05,0x01,0x00,0x42,0x01,0x03, 0x14,0x09, 0x04,0x01,0x09, 0x31,0x19, 0x33,0x21, 0x37,0x05,0x24,0x38,0x56,0x19,0x10, 0x35, 0x39,0x03, 0x2c,0x03, 0X3a,0X07,0xdd,0X01,0X02,0xdd,0X02,0X06,0X01, 0x3d,0x09,0x00,0x00,0x36,0x85,0xef,0x03,0x47,0x87,0x42},//8-HORequest {0x00,0x14,0x12, 0x17,0x05,0x05,0x21,0x3f,0x58,0xe1, 0x21,0x56, 0x2c,0x03, 0x2d,0x10, 0x33,0x21, 0x01,0x01,0x02, 0x3b,0x03,0x10,0x39,0xd2},//9-HORequestAck {0x00,0x0d,0x13, 0x17,0x05,0x05,0x21,0x3f,0x58,0xe1, 0x05,0x03,0x02,0x00,0x22},//10-HOCmd {0x00,0x03,0x14, 0x15,0x08},//11-HOComplete {0x00,0x12,0x18, 0x0e,0xfe, 0x1a,0x08,0x00,0x85,0x47,0x9c,0x67,0x24,0x3d,0x05, 0x05,0x03,0x02,0x00,0x22},//12-HOCandidtateEnq {0x00,0x08,0x19, 0x0e,0xfe, 0x05,0x03,0x02,0x00,0x22},//13-HOCandidateResp {0x00,0x0f,0x16, 0x04,0x01,0x09, 0x15,0x08, 0x2d,0x10, 0x2e,0x05,0x01,0x02,0x03,0x04,0x05},//14-HOFailure {0x00,0x14,0x17, 0x04,0x01,0x09, 0x05,0x03,0x02,0x00,0x22, 0x21,0x56, 0x2c,0x03, 0x33,0x21, 0x3b,0x03,0x10,0x39,0xd2}, //15-HOPerformed {0x00,0x04,0x1a, 0x04,0x01,0x09},//16-HOReject {0x00,0x01,0x15},//17-HOSucceed {0x00,0x01,0x1b},//18-HODetect {0x00,0x0c,0x50, 0x0c,0xff, 0x1c,0x01, 0x05,0x03,0x02,0x00,0x22,0x0d,0x02},//19-resrcReq {0x00,0x22,0x51, 0x1c,0x01, 0x03,0x00,0x09,0x01,0x03,0x00,0x09,0x01,0x03,0x00,0x09,0x01,0x03,0x00,0x09,0x01,0x03,0x02,0x06,0x00,0x0b, 0x05,0x03,0x02,0x00,0x22, 0x22,0x84,0x62,0xf2,0x7e},//20-resrcInd {0x00,0x20,0x52, 0x08,0x08,0x49,0x06,0x20,0x12,0x75,0x21,0x07,0x94, 0x09,0X04,0X33,0X79,0X27,0X46, 0x1a,0x08,0x00,0x85,0x47,0x9c,0x67,0x24,0x3d,0x05, 0x24,0x02, 0x38,0x06},//21-paging {0x00,0x04,0x22, 0x04,0x01,0x09},//22-clearReq {0x00,0x08,0x20, 0x07,0X02,0X08,0X02, 0x04,0x01,0x09},//23-clearCmd {0x00,0x04,0x30, 0x04,0x01,0x09},//24-reset {0x00,0x09,0x32, 0x04,0x01,0x09, 0x05,0x03,0x02,0x00,0x22},//25-overload {0x00,0x18,0x36, 0x25,0xdd, 0x26,0x03,0x9d,0x20,0x81, 0x27,0x34,0x97, 0x28,0x02,0x17,0x62, 0x29,0x02,0x31,0xf2, 0x2a,0x03,0x39,0xc4,0x08},//26-mscInvokeTrace {0x00,0x16,0x37, 0x25,0xdd, 0x2b,0x02, 0x26,0x03,0x9d,0x20,0x81, 0x27,0x34,0x97, 0x28,0x02,0x17,0x62, 0x2a,0x03,0x39,0xc4,0x08},//27-bscInvokeTrace {0x00,0x06,0x54, 0x12,0x03,0x7e,0x67,0x82},//28-cmUpdate {0x00,0x0a,0x53, 0x07,0X02,0X08,0X02, 0x0a,0x01,0x01, 0x23,0x00},//29-cipherModeCmd {0x00,0x03,0x55, 0x2c,0x03},//30-cipherModeComplete {0x00,0x04,0x59, 0x04,0x01,0x09},// 31-cipherModeRej {0x00,0x1d,0x57, 0x05,0x03,0x02,0x00,0x22, 0x17,0x0B,0x05,0x24, 0xb1, 0x03,0x33,0x22,0x8d, 0x02,0x73,0xf2, 0x85, //cm request 0x21,0x56, 0x3c,0x07,0x01,0x22,0xe4,0x31,0x57,0x69,0x83, 0x3e,0x03,0x15,0x49,0xf5},//32-completeL3Info {0x00,0x06,0x25, 0x18,0xc2, 0x04,0x01,0x09},//33-sapi_n_rej {0x00,0x07,0x34, 0x01,0x01,0x02, 0x04,0x01,0x09},//34-resetCircuit {0x00,0x04,0x35, 0x01,0x01,0x02},//35-resetCircuitAck {0x00,0x0d,0x44, 0x04,0x01,0x09, 0x01,0x01,0x02, 0x1e,0x04,0x32,0x12,0x8d,0x36},//36-circuitGrpBlk {0x00,0x0a,0x45, 0x01,0x01,0x02, 0x1e,0x04,0x32,0x12,0x8d,0x36},//37-circuitGrpBlkAck {0x00,0x0a,0x46, 0x01,0x01,0x02, 0x1e,0x04,0x32,0x12,0x8d,0x36},//38-circuitGrpUnblk {0x00,0x0a,0x47, 0x01,0x01,0x02, 0x1e,0x04,0x32,0x12,0x8d,0x36},//39-circuitGrpUnblkAck {0x00,0x0a,0x26, 0x04,0x01,0x09, 0x1f,0x04,0x03,0x0a,0x38,0x89},//40-confusion {0x00,0x0a,0x48, 0x01,0x01,0x02, 0x1e,0x04,0x32,0x12,0x8d,0x36},//41-unequippedCircuit {0x00,0x1d,0x5a, 0x2f,0x11, 0x05,0x03,0x02,0x00,0x22, 0x1a,0x08,0x00,0x85,0x47,0x9c,0x67,0x24,0x3d,0x05, 0x30,0x05,0x11,0x83,0x04,0x28,0x75, 0x04,0x02,0x89,0x03},//42-loadIndication {0x00,0x03,0x28, 0x18,0xc2},//43-suspend {0x00,0x03,0x29, 0x18,0xc2},//44-suspend {0x00,0x04,0x4e, 0x04,0x01,0x09},//45-changeCircuit {0x00,0x04,0x4f, 0x01,0x01,0x02},//46-changeCircuitAck {0x00,0x06,0x2a, 0x3e,0x03,0x15,0x49,0xf5},//47-locCmd {0x00,0x06,0x2b, 0x3e,0x03,0x15,0x49,0xf5},//48-locReport {0x00,0x01,0x31},//49-resetAck {0x00,0x01,0x21},//50-clearComplete {0x00,0x01,0x56},//51-queueInd {0x00,0x01,0x58},//52-cmRequest ////////////dtap............................................... {0x01,0x00,0x0d,0x05,0x02, 0x78,0xf3,0x64,0x31,0x02, 0x17,0x02,0x73,0xf2, 0xa1, 0xa2},//53-luAccept {0x01,0x00,0x03,0x05,0x22, 0x02},//54-cmReject {0x01,0x00,0x03,0x05,0x04, 0x02},//55-luReject {0x01,0x00,0x03,0x05,0x29, 0x02},//56-abort {0x01,0x00,0x03,0x05,0x31, 0x02},//57-mmStatus {0x05,0x08, 0x19, 0x78,0xf3,0x64,0x31,0x02, 0x11, 0x02,0x73,0xf2},//58-LURequest {0x01,0x00,0x13,0x05,0x12, 0x01, 0X00,0X11,0X22,0X33,0X44,0X55,0X66,0X77,0X88,0X99,0XAA,0XBB,0XCC,0XDD,0XEE,0XFF},//59-authRequest {0x01,0x00,0x06,0x05,0x14, 0X11,0X12,0X13,0X14},//60-authResp {0x01,0x00,0x03,0x05,0x18, 0x03},//61-idRequest {0x01,0x00,0x05,0x05,0x19, 0x02,0x73,0xf2},//62-idResp {0x05,0x01, 0x11, 0x02,0x73,0xf2},//63-imsiDetachInd {0x01,0x00,0x0a,0x05,0x1a, 0x78,0xf3,0x64,0x31,0x02, 0x02,0x73,0xf2},//64-tmsiCmd {0x05,0x28, 0x01, 0x03,0x33,0x22,0x8d, 0x02,0x73,0xf2, 0x13,0x78,0xf3,0x64,0x31,0x02},//65-cmReEst_request {0x05,0x24, 0x01, 0x03,0x33,0x22,0x8d, 0x02,0x73,0xf2, 0x85},//66-cmRequest {0x01,0x00,0x1b,0x05,0x32, 0x43,0x03,0x91,0x35,0x64, 0x45,0x03,0x91,0x35,0x64, 0x46,0xdd, 0x47,0x07,0x04,0x12,0x0a,0x32,0x14,0xdd, 0x48,0x03,0x11,0x22,0x33},//67-mmInfo {0x01,0x00,0x03d,0x03,0x01, 0x1c,0x30,0xa1,0x0c,0x02,0x01,0xdd,0x80,0x01,0xdd,0x02,0x03,0x0a,0x0b,0x0c,0xdd, 0xa2,0x0d,0x02,0x01,0xdd,0x30,0x04,0x02,0x02,0x0a,0x0b,0x11,0x22,0x33,0x44, 0xa3,0x09,0x02,0x01,0xdd,0x02,0x03,0x01,0x09,0x0a,0xdd, 0xa4,0x06,0x02,0x01,0xdd,0x80,0x01,0x00, 0x1e,0x02,0xc0,0x82, 0x7e,0x03,0x01,0x19,0x83},//68-alert {0x01,0x00,0x1f,0x03,0x08, 0xd1, 0x04,0x02,0x20,0x02, 0x04,0x0d,0xa3,0xca,0x1a,0x00,0xe4,0x21,0x53,0x5b,0x60,0x21,0x5f,0x47,0xc6, 0x08,0x04,0x47,0xdd,0x96,0x81, 0x15,0x01,0x03},//69-callConfirm {0x01,0x00,0x42,0x03,0x02, 0xd1, 0x04,0x02,0x20,0x02, 0x04,0x02,0x20,0x02, 0x1c,0x30,0xa1,0x0c,0x02,0x01,0xdd,0x80,0x01,0xdd,0x02,0x03,0x0a,0x0b,0x0c,0xdd, 0xa2,0x0d,0x02,0x01,0xdd,0x30,0x04,0x02,0x02,0x0a,0x0b,0x11,0x22,0x33,0x44, 0xa3,0x09,0x02,0x01,0xdd,0x02,0x03,0x01,0x09,0x0a,0xdd, 0xa4,0x06,0x02,0x01,0xdd,0x80,0x01,0x00, 0x1e,0x02,0xc0,0x82, 0x85},//70-callProceed {0x01,0x00,0x48,0x03,0x07, 0x1c,0x30,0xa1,0x0c,0x02,0x01,0xdd,0x80,0x01,0xdd,0x02,0x03,0x0a,0x0b,0x0c,0xdd, 0xa2,0x0d,0x02,0x01,0xdd,0x30,0x04,0x02,0x02,0x0a,0x0b,0x11,0x22,0x33,0x44, 0xa3,0x09,0x02,0x01,0xdd,0x02,0x03,0x01,0x09,0x0a,0xdd, 0xa4,0x06,0x02,0x01,0xdd,0x80,0x01,0x00, 0x1e,0x02,0xc0,0x82, 0x4c,0x04,0x28,0xa3,0x89,0x37, 0x4d,0x03,0x88,0x50,0x43, 0x7e,0x03,0x01,0x19,0x83},//71-connect {0x01,0x00,0x06,0x03,0x0e, 0x04,0x02,0x20,0x02},//72-eSetup {0x01,0x00,0x0a,0x03,0x03, 0x02,0xc0,0x82, 0x7e,0x03,0x01,0x19,0x83},//73-progress {0x01,0x00,0x81,0x03,0x05, 0xd1, 0x04,0x02,0x20,0x02, 0x04,0x02,0x20,0x02, 0x1c,0x30,0xa1,0x0c,0x02,0x01,0xdd,0x80,0x01,0xdd,0x02,0x03,0x0a,0x0b,0x0c,0xdd, 0xa2,0x0d,0x02,0x01,0xdd,0x30,0x04,0x02,0x02,0x0a,0x0b,0x11,0x22,0x33,0x44, 0xa3,0x09,0x02,0x01,0xdd,0x02,0x03,0x01,0x09,0x0a,0xdd, 0xa4,0x06,0x02,0x01,0xdd,0x80,0x01,0x00, 0x1e,0x02,0xc0,0x82, 0x34,0x08, 0x5c,0x04,0x28,0xa3,0x89,0x37, 0x5d,0x03,0x88,0x50,0x43, 0x5e,0x04,0x88,0xa3,0x89,0x37, 0x6d,0x03,0x88,0x50,0x43, 0x74,0x04,0x28,0xa3,0x89,0x37, 0x75,0x03,0x88,0x50,0x43, 0xd1, 0x7c,0x02,0xdd,0xde, 0x7c,0x02,0xdd,0xde, 0xd1, 0x7d,0x03,0xa8,0x6e,0xb4, 0x7d,0x03,0xa8,0x6e,0xb4, 0x7e,0x03,0x01,0x19,0x83, 0x85, 0x19,0x01,0x02},//74-setup {0x01,0x00,0x0f,0x03,0x17, 0x02,0x20,0x02, 0x7c,0x02,0xdd,0xde, 0x7d,0x03,0xa8,0x6e,0xb4, 0xa3},//75-modify {0x01,0x00,0x0f,0x03,0x1f, 0x02,0x20,0x02, 0x7c,0x02,0xdd,0xde, 0x7d,0x03,0xa8,0x6e,0xb4, 0xa3},//76-modifyCmp {0x01,0x00,0x013,0x03,0x13, 0x02,0x20,0x02, 0x04,0x47,0xdd,0x96,0x81, 0x7c,0x02,0xdd,0xde, 0x7d,0x03,0xa8,0x6e,0xb4},//77-modifyRej {0x01,0x00,0x07,0x03,0x10, 0x03,0x01,0x19,0x83, 0xa0},//78-userInfo {0x01,0x00,0x07,0x03,0x1a, 0x04,0x47,0xdd,0x96,0x81},//79-holdRej {0x01,0x00,0x07,0x03,0x1e, 0x04,0x47,0xdd,0x96,0x81},//80-retrieveRej {0x01,0x00,0x42,0x03,0x25, 0x04,0x47,0xdd,0x96,0x81, 0x1c,0x30,0xa1,0x0c,0x02,0x01,0xdd,0x80,0x01,0xdd,0x02,0x03,0x0a,0x0b,0x0c,0xdd, 0xa2,0x0d,0x02,0x01,0xdd,0x30,0x04,0x02,0x02,0x0a,0x0b,0x11,0x22,0x33,0x44, 0xa3,0x09,0x02,0x01,0xdd,0x02,0x03,0x01,0x09,0x0a,0xdd, 0xa4,0x06,0x02,0x01,0xdd,0x80,0x01,0x00, 0x1e,0x02,0xc0,0x82, 0x7e,0x03,0x01,0x19,0x83},//81-disconnect {0x01,0x00,0x45,0x03,0x2d, 0x08,0x04,0x47,0xdd,0x96,0x81, 0x08,0x04,0x47,0xdd,0x96,0x81, 0x1c,0x30,0xa1,0x0c,0x02,0x01,0xdd,0x80,0x01,0xdd,0x02,0x03,0x0a,0x0b,0x0c,0xdd, 0xa2,0x0d,0x02,0x01,0xdd,0x30,0x04,0x02,0x02,0x0a,0x0b,0x11,0x22,0x33,0x44, 0xa3,0x09,0x02,0x01,0xdd,0x02,0x03,0x01,0x09,0x0a,0xdd, 0xa4,0x06,0x02,0x01,0xdd,0x80,0x01,0x00, 0x7e,0x03,0x01,0x19,0x83},//82-release {0x01,0x00,0x3f,0x03,0x2a, 0x08,0x04,0x47,0xdd,0x96,0x81, 0x1c,0x30,0xa1,0x0c,0x02,0x01,0xdd,0x80,0x01,0xdd,0x02,0x03,0x0a,0x0b,0x0c,0xdd, 0xa2,0x0d,0x02,0x01,0xdd,0x30,0x04,0x02,0x02,0x0a,0x0b,0x11,0x22,0x33,0x44, 0xa3,0x09,0x02,0x01,0xdd,0x02,0x03,0x01,0x09,0x0a,0xdd, 0xa4,0x06,0x02,0x01,0xdd,0x80,0x01,0x00, 0x7e,0x03,0x01,0x19,0x83},//83-releaseCmp {0x01,0x00,0x09,0x03,0x39, 0x0f, 0x08,0x04,0x47,0xdd,0x96,0x81},//84-congestCtrl {0x01,0x00,0x03,0x03,0x3e, 0x80},//85-notify {0x01,0x00,0x0b,0x03,0x3d, 0x04,0x47,0xdd,0x96,0x81, 0xc2, 0x24,0x01,0x86},//86-status {0x01,0x00,0x03,0x03,0x35, 0x0d},//87-startDTMF {0x01,0x00,0x03,0x03,0x36, 0x0d},//88-startDTMF_ack {0x01,0x00,0x07,0x03,0x37, 0x04,0x47,0xdd,0x96,0x81},//89-startDTMF_rej {0x01,0x00,0x02,0x03,0x0f},//90-connectAck {0x01,0x00,0x02,0x03,0x18},//91-hold {0x01,0x00,0x02,0x03,0x19},//92-holdAck {0x01,0x00,0x02,0x03,0x1c},//93-retrieve {0x01,0x00,0x02,0x03,0x1d},//94-retrieveAck {0x01,0x00,0x02,0x03,0x34},//95-statusEnq {0x01,0x00,0x02,0x03,0x31},//96-stopDTMF {0x01,0x00,0x02,0x03,0x32},//97-stopDTMF_ack {0x01,0x00,0x33,0x03,0x3a, 0x30,0xa1,0x0c,0x02,0x01,0xdd,0x80,0x01,0xdd,0x02,0x03,0x0a,0x0b,0x0c,0xdd, 0xa2,0x0d,0x02,0x01,0xdd,0x30,0x04,0x02,0x02,0x0a,0x0b,0x11,0x22,0x33,0x44, 0xa3,0x09,0x02,0x01,0xdd,0x02,0x03,0x01,0x09,0x0a,0xdd, 0xa4,0x06,0x02,0x01,0xdd,0x80,0x01,0x00},//98-facility {0x01,0x00,0x41,0x03,0x25, 0x04,0x47,0xdd,0x96,0x81, 0x1c,0x30,0xa1,0x0c,0x02,0x01,0xdd,0x80,0x01,0xdd,0x02,0x03,0x0a,0x0b,0x0c,0xdd, 0xa2,0x0d,0x02,0x01,0xdd,0x30,0x04,0x02,0x02,0x0a,0x0b,0x11,0x22,0x33,0x44, 0xa3,0x09,0x02,0x01,0xdd,0x02,0x03,0x01,0x09,0x0a,0xdd, 0xa4,0x06,0x02,0x01,0xdd,0x80,0x01,0x00, 0x7e,0x03,0x01,0x19,0x83, 0x7f,0x01,0xdd},//99-disconnect_mobileToNet {0x00,0x1d,0x57, 0x05,0x03,0x02,0x00,0x22, 0x17,0x10,0x06,0x27, 0x02, 0x03,0x23,0x18,0x01, 0x08,0x49,0x06,0x20,0x12,0x75,0x21,0x07,0x94, //paging response 0x21,0x56, 0x3c,0x07,0x01,0x22,0xe4,0x31,0x57,0x69,0x83, 0x3e,0x03,0x15,0x49,0xf5},//100-completeL3Info-paing response }; //bssmap.................................................. void test_aifg_msg_assignReq() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[0], &predecoded); structed_msg.id = AIFG_MSG_ID_ASSIGN_REQ; //channel type aifg_ie_decode(&(predecoded.msg.assignReq.channelType),&dst); memcpy(&(structed_msg.msg.assignReq.channelType),&(dst.param.bm_channelType), sizeof(dst.param.bm_channelType)); structed_msg.msg.assignReq.channelType.flag = 1; //cic aifg_ie_decode(&(predecoded.msg.assignReq.cic),&dst); memcpy(&(structed_msg.msg.assignReq.cic),&(dst.param.bm_cic), sizeof(dst.param.bm_cic)); structed_msg.msg.assignReq.cic.flag = 1; msg_len = aifg_msg_sd_assignReq(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len, 11); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[0][2], msg_len)); } void test_aifg_msg_assignComplete() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[1], &predecoded); structed_msg.id = AIFG_MSG_ID_ASSIGN_CMP; //cellId aifg_ie_decode(&(predecoded.msg.assignComplete.cellId),&dst); memcpy(&(structed_msg.msg.assignComplete.cellId),&(dst.param.bm_cellId), sizeof(dst.param.bm_cellId)); structed_msg.msg.assignComplete.cellId.flag = 1; //chosen channel aifg_ie_decode(&(predecoded.msg.assignComplete.chosenChannel),&dst); memcpy(&(structed_msg.msg.assignComplete.chosenChannel),&(dst.param.bm_chosenChannel), sizeof(dst.param.bm_chosenChannel)); structed_msg.msg.assignComplete.chosenChannel.flag = 1; //chosen encrypt aifg_ie_decode(&(predecoded.msg.assignComplete.chosenEncrypt),&dst); memcpy(&(structed_msg.msg.assignComplete.chosenEncrypt),&(dst.param.bm_chosenEncrypt), sizeof(dst.param.bm_chosenEncrypt)); structed_msg.msg.assignComplete.chosenEncrypt.flag = 1; //cic aifg_ie_decode(&(predecoded.msg.assignComplete.cic),&dst); memcpy(&(structed_msg.msg.assignComplete.cic),&(dst.param.bm_cic), sizeof(dst.param.bm_cic)); structed_msg.msg.assignComplete.cic.flag = 1; //circuit pool aifg_ie_decode(&(predecoded.msg.assignComplete.circuitPool),&dst); memcpy(&(structed_msg.msg.assignComplete.circuitPool),&(dst.param.bm_circuitPool), sizeof(dst.param.bm_circuitPool)); structed_msg.msg.assignComplete.circuitPool.flag = 1; //LSA id aifg_ie_decode(&(predecoded.msg.assignComplete.lsaId),&dst); memcpy(&(structed_msg.msg.assignComplete.lsaId),&(dst.param.bm_lsaId), sizeof(dst.param.bm_lsaId)); structed_msg.msg.assignComplete.lsaId.flag = 1; //rr cause aifg_ie_decode(&(predecoded.msg.assignComplete.rrcause),&dst); memcpy(&(structed_msg.msg.assignComplete.rrCause),&(dst.param.bm_rrCause), sizeof(dst.param.bm_rrCause)); structed_msg.msg.assignComplete.rrCause.flag = 1; //speech version aifg_ie_decode(&(predecoded.msg.assignComplete.speechVer),&dst); memcpy(&(structed_msg.msg.assignComplete.speechVer),&(dst.param.bm_speechVer), sizeof(dst.param.bm_speechVer)); structed_msg.msg.assignComplete.speechVer.flag = 1; msg_len = aifg_msg_sd_assignComplete(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len, 29); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[1][2], msg_len)); } void test_aifg_msg_assignFailure() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[2], &predecoded); structed_msg.id = AIFG_MSG_ID_ASSIGN_FAIL; //cause aifg_ie_decode(&(predecoded.msg.assignFailure.cause),&dst); memcpy(&(structed_msg.msg.assignFailure.cause),&(dst.param.bm_cause), sizeof(dst.param.bm_cause)); structed_msg.msg.assignFailure.cause.flag= 1; //RR cause aifg_ie_decode(&(predecoded.msg.assignFailure.rrcause),&dst); memcpy(&(structed_msg.msg.assignFailure.rrCause),&(dst.param.bm_rrCause), sizeof(dst.param.bm_rrCause)); structed_msg.msg.assignFailure.rrCause.flag= 1; //circuit pool aifg_ie_decode(&(predecoded.msg.assignFailure.circuitPool),&dst); memcpy(&(structed_msg.msg.assignFailure.circuitPool),&(dst.param.bm_circuitPool), sizeof(dst.param.bm_circuitPool)); structed_msg.msg.assignFailure.circuitPool.flag= 1; //circuit pool list aifg_ie_decode(&(predecoded.msg.assignFailure.circuitPoolList),&dst); memcpy(&(structed_msg.msg.assignFailure.circuitPoolList),&(dst.param.bm_circuitPoolList), sizeof(dst.param.bm_circuitPoolList)); structed_msg.msg.assignFailure.circuitPoolList.flag= 1; msg_len = aifg_msg_sd_assignFailure(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len, 15); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[2][2], msg_len)); } void test_aifg_msg_block() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[3], &predecoded); structed_msg.id = AIFG_MSG_ID_BLOCK; //circuit identity code aifg_ie_decode(&(predecoded.msg.block.cic),&dst); memcpy(&(structed_msg.msg.block.cic),&(dst.param.bm_cic), sizeof(dst.param.bm_cic)); structed_msg.msg.block.cic.flag= 1; //cause aifg_ie_decode(&(predecoded.msg.block.cause),&dst); memcpy(&(structed_msg.msg.block.cause),&(dst.param.bm_cause), sizeof(dst.param.bm_cause)); structed_msg.msg.block.cause.flag= 1; //connection release requested aifg_ie_decode(&(predecoded.msg.block.connectionRelReq),&dst); memcpy(&(structed_msg.msg.block.connRelReq),&(dst.param.bm_connRelReq), sizeof(dst.param.bm_connRelReq)); structed_msg.msg.block.connRelReq.flag= 1; msg_len = aifg_msg_sd_block(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len, 8); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[3][2], msg_len)); } void test_aifg_msg_blockAck() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[4], &predecoded); structed_msg.id = AIFG_MSG_ID_BLOCK_ACK; //circuit identity code aifg_ie_decode(&(predecoded.msg.blockAck.cic),&dst); memcpy(&(structed_msg.msg.blockAck.cic),&(dst.param.bm_cic), sizeof(dst.param.bm_cic)); structed_msg.msg.blockAck.cic.flag= 1; msg_len = aifg_msg_sd_blockAck(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len, 4); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[4][2], msg_len)); } void test_aifg_msg_unblock() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[5], &predecoded); structed_msg.id = AIFG_MSG_ID_UNBLOCK; //circuit identity code aifg_ie_decode(&(predecoded.msg.unblock.cic),&dst); memcpy(&(structed_msg.msg.unblock.cic),&(dst.param.bm_cic), sizeof(dst.param.bm_cic)); structed_msg.msg.unblock.cic.flag= 1; msg_len = aifg_msg_sd_unblock(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len, 4); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[5][2], msg_len)); } void test_aifg_msg_unblockAck() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[6], &predecoded); structed_msg.id = AIFG_MSG_ID_UNBLOCK_ACK; //circuit identity code aifg_ie_decode(&(predecoded.msg.unBlockAck.cic),&dst); memcpy(&(structed_msg.msg.unblockAck.cic),&(dst.param.bm_cic), sizeof(dst.param.bm_cic)); structed_msg.msg.unblockAck.cic.flag= 1; msg_len = aifg_msg_sd_unblockAck(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len, 4); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[6][2], msg_len)); } void test_aifg_msg_HORequired() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[7], &predecoded); structed_msg.id = AIFG_MSG_ID_HO_REQUIRED; //cause aifg_ie_decode(&(predecoded.msg.HORequired.cause),&dst); memcpy(&(structed_msg.msg.HORequired.cause),&(dst.param.bm_cause), sizeof(dst.param.bm_cause)); structed_msg.msg.HORequired.cause.flag= 1; //response request aifg_ie_decode(&(predecoded.msg.HORequired.respReq),&dst); memcpy(&(structed_msg.msg.HORequired.respReq),&(dst.param.bm_respReq), sizeof(dst.param.bm_respReq)); structed_msg.msg.HORequired.respReq.flag= 1; //cell identifier list aifg_ie_decode(&(predecoded.msg.HORequired.cellIdList),&dst); memcpy(&(structed_msg.msg.HORequired.prefer_cidList),&(dst.param.bm_cellIdList), sizeof(dst.param.bm_cellIdList)); structed_msg.msg.HORequired.prefer_cidList.flag= 1; //circuit pool list aifg_ie_decode(&(predecoded.msg.HORequired.circuitPoolList),&dst); memcpy(&(structed_msg.msg.HORequired.circuitPoolList),&(dst.param.bm_circuitPoolList), sizeof(dst.param.bm_circuitPoolList)); structed_msg.msg.HORequired.circuitPoolList.flag= 1; //current channel type 1 aifg_ie_decode(&(predecoded.msg.HORequired.curChannelType1),&dst); memcpy(&(structed_msg.msg.HORequired.curChannelType1),&(dst.param.bm_curChannelType1), sizeof(dst.param.bm_curChannelType1)); structed_msg.msg.HORequired.curChannelType1.flag= 1; //speech verssion aifg_ie_decode(&(predecoded.msg.HORequired.speechVer),&dst); memcpy(&(structed_msg.msg.HORequired.speechVer),&(dst.param.bm_speechVer), sizeof(dst.param.bm_speechVer)); structed_msg.msg.HORequired.speechVer.flag= 1; //queueing indicator aifg_ie_decode(&(predecoded.msg.HORequired.queInd),&dst); memcpy(&(structed_msg.msg.HORequired.queuingInd),&(dst.param.bm_queuingInd), sizeof(dst.param.bm_queuingInd)); structed_msg.msg.HORequired.queuingInd.flag= 1; //old bss to new bss infomation aifg_ie_decode(&(predecoded.msg.HORequired.oldBssToNew),&dst); memcpy(&(structed_msg.msg.HORequired.bssOldtoNew),&(dst.param.bm_bssOldtoNew), sizeof(dst.param.bm_bssOldtoNew)); structed_msg.msg.HORequired.bssOldtoNew.flag= 1; msg_len = aifg_msg_sd_HORequired(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len, 37); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[7][2], msg_len)); } /* void test_aifg_msg_HORequest() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[8], &predecoded); structed_msg.id = AIFG_MSG_ID_HO_REQUEST; //channel type aifg_ie_decode(&(predecoded.msg.HORequest.channelType),&dst); memcpy(&(structed_msg.msg.HORequest.channelType),&(dst.param.bm_channelType), sizeof(dst.param.bm_channelType)); structed_msg.msg.HORequest.channelType.flag= 1; //encryption infomation aifg_ie_decode(&(predecoded.msg.HORequest.encryptInfo),&dst); memcpy(&(structed_msg.msg.HORequest.encryptInfo),&(dst.param.bm_encryptInfo), sizeof(dst.param.bm_encryptInfo)); structed_msg.msg.HORequest.encryptInfo.flag= 1; //classmark 2 aifg_ie_decode(&(predecoded.msg.HORequest.cmInfo2),&dst); memcpy(&(structed_msg.msg.HORequest.cmInfo.cm2),&(dst.param.bm_cmInfo2), sizeof(dst.param.bm_cmInfo2)); structed_msg.msg.HORequest.cmInfo.cm2.flag= 1; //cell identifier (serving) aifg_ie_decode(&(predecoded.msg.HORequest.serving_cellId),&dst); memcpy(&(structed_msg.msg.HORequest.servingCellId),&(dst.param.bm_cellId), sizeof(dst.param.bm_cellId)); structed_msg.msg.HORequest.servingCellId.flag= 1; //priority aifg_ie_decode(&(predecoded.msg.HORequest.priority),&dst); memcpy(&(structed_msg.msg.HORequest.priority),&(dst.param.bm_priority), sizeof(dst.param.bm_priority)); structed_msg.msg.HORequest.priority.flag= 1; //circuit identity code aifg_ie_decode(&(predecoded.msg.HORequest.cic),&dst); memcpy(&(structed_msg.msg.HORequest.cic),&(dst.param.bm_cic), sizeof(dst.param.bm_cic)); structed_msg.msg.HORequest.cic.flag= 1; //dtx flag aifg_ie_decode(&(predecoded.msg.HORequest.dtxFlag),&dst); memcpy(&(structed_msg.msg.HORequest.dtxFlag),&(dst.param.bm_dtx), sizeof(dst.param.bm_dtx)); structed_msg.msg.HORequest.dtxFlag.flag= 1; //cell identifier (target) aifg_ie_decode(&(predecoded.msg.HORequest.target_cellId),&dst); memcpy(&(structed_msg.msg.HORequest.targetCellId),&(dst.param.bm_cellId), sizeof(dst.param.bm_cellId)); structed_msg.msg.HORequest.targetCellId.flag= 1; //band to be used aifg_ie_decode(&(predecoded.msg.HORequest.bandUsed),&dst); memcpy(&(structed_msg.msg.HORequest.bandUsed),&(dst.param.bm_bandUsed), sizeof(dst.param.bm_bandUsed)); structed_msg.msg.HORequest.bandUsed.flag= 1; //cause aifg_ie_decode(&(predecoded.msg.HORequest.cause),&dst); memcpy(&(structed_msg.msg.HORequest.cause),&(dst.param.bm_cause), sizeof(dst.param.bm_cause)); structed_msg.msg.HORequest.cause.flag= 1; //current channel type 1 aifg_ie_decode(&(predecoded.msg.HORequest.curChanneltype1),&dst); memcpy(&(structed_msg.msg.HORequest.curChannelType1),&(dst.param.bm_curChannelType1), sizeof(dst.param.bm_curChannelType1)); structed_msg.msg.HORequest.curChannelType1.flag= 1; //speech version aifg_ie_decode(&(predecoded.msg.HORequest.speechVer),&dst); memcpy(&(structed_msg.msg.HORequest.speechVer),&(dst.param.bm_speechVer), sizeof(dst.param.bm_speechVer)); structed_msg.msg.HORequest.speechVer.flag= 1; //group call reference aifg_ie_decode(&(predecoded.msg.HORequest.groupCallRef),&dst); memcpy(&(structed_msg.msg.HORequest.gourpRef),&(dst.param.bm_groupRef), sizeof(dst.param.bm_groupRef)); structed_msg.msg.HORequest.gourpRef.flag= 1; //talker flag aifg_ie_decode(&(predecoded.msg.HORequest.talkerFlag),&dst); memcpy(&(structed_msg.msg.HORequest.talkerFlag),&(dst.param.bm_talkerFlag), sizeof(dst.param.bm_talkerFlag)); structed_msg.msg.HORequest.talkerFlag.flag= 1; //configuration evolution indication aifg_ie_decode(&(predecoded.msg.HORequest.cfgEvoInd),&dst); memcpy(&(structed_msg.msg.HORequest.cfgEvoInd),&(dst.param.bm_cfgEvoInd), sizeof(dst.param.bm_cfgEvoInd)); structed_msg.msg.HORequest.cfgEvoInd.flag= 1; //chosen encryption algnorithm aifg_ie_decode(&(predecoded.msg.HORequest.chosenEncrypt),&dst); memcpy(&(structed_msg.msg.HORequest.chosenEncrypt),&(dst.param.bm_chosenEncrypt), sizeof(dst.param.bm_chosenEncrypt)); structed_msg.msg.HORequest.chosenEncrypt.flag= 1; //old bss to new bss aifg_ie_decode(&(predecoded.msg.HORequest.oldBssToNew),&dst); memcpy(&(structed_msg.msg.HORequest.bssOldtoNew),&(dst.param.bm_bssOldtoNew), sizeof(dst.param.bm_bssOldtoNew)); structed_msg.msg.HORequest.bssOldtoNew.flag= 1; //LSA infomation aifg_ie_decode(&(predecoded.msg.HORequest.lsaInfo),&dst); memcpy(&(structed_msg.msg.HORequest.lsaInfo),&(dst.param.bm_lsaInfo), sizeof(dst.param.bm_lsaInfo)); structed_msg.msg.HORequest.lsaInfo.flag= 1; msg_len = aifg_msg_sd_HORequest(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len, 76); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[8][2], msg_len)); } void test_aifg_msg_HORequestAck() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[9], &predecoded); structed_msg.id = AIFG_MSG_ID_HO_REQ_ACK; //layer 3 infomation // aifg_ie_decode(&(predecoded.msg.HORequestAck.l3Info),&dst); // memcpy(&(structed_msg.msg.HORequestAck.l3Info),&(dst.param.bm_l3Info), sizeof(dst.param.bm_l3Info)); // structed_msg.msg.HORequestAck.l3Info.flag= 1; //chosen channel aifg_ie_decode(&(predecoded.msg.HORequestAck.chosenChannel),&dst); memcpy(&(structed_msg.msg.HORequestAck.chosenChannel),&(dst.param.bm_chosenChannel), sizeof(dst.param.bm_chosenChannel)); structed_msg.msg.HORequestAck.chosenChannel.flag= 1; //chosen encryption algnorithm aifg_ie_decode(&(predecoded.msg.HORequestAck.chosenEncrypt),&dst); memcpy(&(structed_msg.msg.HORequestAck.chosenEncrypt),&(dst.param.bm_chosenEncrypt), sizeof(dst.param.bm_chosenEncrypt)); structed_msg.msg.HORequestAck.chosenEncrypt.flag= 1; //circuit pool aifg_ie_decode(&(predecoded.msg.HORequestAck.circuitPool),&dst); memcpy(&(structed_msg.msg.HORequestAck.circuitPool),&(dst.param.bm_circuitPool), sizeof(dst.param.bm_circuitPool)); structed_msg.msg.HORequestAck.circuitPool.flag= 1; //speech version aifg_ie_decode(&(predecoded.msg.HORequestAck.speechVer),&dst); memcpy(&(structed_msg.msg.HORequestAck.speechVer),&(dst.param.bm_speechVer), sizeof(dst.param.bm_speechVer)); structed_msg.msg.HORequestAck.speechVer.flag= 1; //circuit identity code aifg_ie_decode(&(predecoded.msg.HORequestAck.cic),&dst); memcpy(&(structed_msg.msg.HORequestAck.cic),&(dst.param.bm_cic), sizeof(dst.param.bm_cic)); structed_msg.msg.HORequestAck.cic.flag= 1; //LSA identity aifg_ie_decode(&(predecoded.msg.HORequestAck.lsaId),&dst); memcpy(&(structed_msg.msg.HORequestAck.lsaId),&(dst.param.bm_lsaId), sizeof(dst.param.bm_lsaId)); structed_msg.msg.HORequestAck.lsaId.flag= 1; msg_len = aifg_msg_sd_HORequestAck(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len, 17); CU_ASSERT_EQUAL(0, memcmp(&buffer[1], &msgsrc[9][10], msg_len-1)); } void test_aifg_msg_HOCmd() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[10], &predecoded); structed_msg.id = AIFG_MSG_ID_HO_CMD; //l3Info not be test //cell identifier aifg_ie_decode(&(predecoded.msg.HOCmd.cellId),&dst); memcpy(&(structed_msg.msg.HOCmd.cellId),&(dst.param.bm_cellId), sizeof(dst.param.bm_cellId)); structed_msg.msg.HOCmd.cellId.flag= 1; msg_len = aifg_msg_sd_HOCmd(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len, 6); CU_ASSERT_EQUAL(0, memcmp(&buffer[1], &msgsrc[10][10], msg_len-1)); } void test_aifg_msg_HOComplete() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[11], &predecoded); structed_msg.id = AIFG_MSG_ID_HO_CMP; //RR cause aifg_ie_decode(&(predecoded.msg.HOComplete.rrcause),&dst); memcpy(&(structed_msg.msg.HOComplete.rrCause),&(dst.param.bm_rrCause), sizeof(dst.param.bm_rrCause)); structed_msg.msg.HOComplete.rrCause.flag= 1; msg_len = aifg_msg_sd_HOComplete(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len, 3); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[11][2], msg_len)); } */ void test_aifg_msg_HOCandidateEnq() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[12], &predecoded); structed_msg.id = AIFG_MSG_ID_HO_CAN_ENQ; //number of mss aifg_ie_decode(&(predecoded.msg.HOCandEnq.msNum),&dst); memcpy(&(structed_msg.msg.HOCandidateEnq.msNum),&(dst.param.bm_msNum), sizeof(dst.param.bm_msNum)); structed_msg.msg.HOCandidateEnq.msNum.flag= 1; //cell identifier list aifg_ie_decode(&(predecoded.msg.HOCandEnq.cellIdList),&dst); memcpy(&(structed_msg.msg.HOCandidateEnq.cidList),&(dst.param.bm_cellIdList), sizeof(dst.param.bm_cellIdList)); structed_msg.msg.HOCandidateEnq.cidList.flag= 1; //cell identifier aifg_ie_decode(&(predecoded.msg.HOCandEnq.cellId),&dst); memcpy(&(structed_msg.msg.HOCandidateEnq.cellId),&(dst.param.bm_cellId), sizeof(dst.param.bm_cellId)); structed_msg.msg.HOCandidateEnq.cellId.flag= 1; msg_len = aifg_msg_sd_HOCandEnq(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len, 18); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[12][2], msg_len)); } void test_aifg_msg_HOCandidateResp() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[13], &predecoded); structed_msg.id = AIFG_MSG_ID_HO_CAN_RESP; //number of mss aifg_ie_decode(&(predecoded.msg.HOCandResp.msNum),&dst); memcpy(&(structed_msg.msg.HOCandidateResp.msNum),&(dst.param.bm_msNum), sizeof(dst.param.bm_msNum)); structed_msg.msg.HOCandidateResp.msNum.flag= 1; //cell identifier aifg_ie_decode(&(predecoded.msg.HOCandResp.cellId),&dst); memcpy(&(structed_msg.msg.HOCandidateResp.cellId),&(dst.param.bm_cellId), sizeof(dst.param.bm_cellId)); structed_msg.msg.HOCandidateResp.cellId.flag= 1; msg_len = aifg_msg_sd_HOCandResp(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len, 8); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[13][2], msg_len)); } void test_aifg_msg_HOFailure() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[14], &predecoded); structed_msg.id = AIFG_MSG_ID_HO_FAIL; //cause aifg_ie_decode(&(predecoded.msg.HOFailure.cause),&dst); memcpy(&(structed_msg.msg.HOFailure.cause),&(dst.param.bm_cause), sizeof(dst.param.bm_cause)); structed_msg.msg.HOFailure.cause.flag= 1; //RR cause aifg_ie_decode(&(predecoded.msg.HOFailure.rrcause),&dst); memcpy(&(structed_msg.msg.HOFailure.rrCause),&(dst.param.bm_rrCause), sizeof(dst.param.bm_rrCause)); structed_msg.msg.HOFailure.rrCause.flag= 1; //circuit pool aifg_ie_decode(&(predecoded.msg.HOFailure.circuitPool),&dst); memcpy(&(structed_msg.msg.HOFailure.circuitPool),&(dst.param.bm_circuitPool), sizeof(dst.param.bm_circuitPool)); structed_msg.msg.HOFailure.circuitPool.flag= 1; //circuit pool list aifg_ie_decode(&(predecoded.msg.HOFailure.circuitPoolList),&dst); memcpy(&(structed_msg.msg.HOFailure.circuitPoolList),&(dst.param.bm_circuitPoolList), sizeof(dst.param.bm_circuitPoolList)); structed_msg.msg.HOFailure.circuitPoolList.flag= 1; msg_len = aifg_msg_sd_HOFailure(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len, 15); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[14][2], msg_len)); } void test_aifg_msg_HOPerformed() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[15], &predecoded); structed_msg.id = AIFG_MSG_ID_HO_PERFORMED; //cause aifg_ie_decode(&(predecoded.msg.HOPerformed.cause),&dst); memcpy(&(structed_msg.msg.HOPerformed.cause),&(dst.param.bm_cause), sizeof(dst.param.bm_cause)); structed_msg.msg.HOPerformed.cause.flag= 1; //cell identifier aifg_ie_decode(&(predecoded.msg.HOPerformed.cellId),&dst); memcpy(&(structed_msg.msg.HOPerformed.cellId),&(dst.param.bm_cellId), sizeof(dst.param.bm_cellId)); structed_msg.msg.HOPerformed.cellId.flag= 1; //chosen channel aifg_ie_decode(&(predecoded.msg.HOPerformed.chosenChannel),&dst); memcpy(&(structed_msg.msg.HOPerformed.chosenChannel),&(dst.param.bm_chosenChannel), sizeof(dst.param.bm_chosenChannel)); structed_msg.msg.HOPerformed.chosenChannel.flag= 1; //chosen encryption algnorithm aifg_ie_decode(&(predecoded.msg.HOPerformed.chosenEncrypt),&dst); memcpy(&(structed_msg.msg.HOPerformed.chosenEncrypt),&(dst.param.bm_chosenEncrypt), sizeof(dst.param.bm_chosenEncrypt)); structed_msg.msg.HOPerformed.chosenEncrypt.flag= 1; //speech version aifg_ie_decode(&(predecoded.msg.HOPerformed.speechVer),&dst); memcpy(&(structed_msg.msg.HOPerformed.speechVer),&(dst.param.bm_speechVer), sizeof(dst.param.bm_speechVer)); structed_msg.msg.HOPerformed.speechVer.flag= 1; //LSA identifier aifg_ie_decode(&(predecoded.msg.HOPerformed.lsaId),&dst); memcpy(&(structed_msg.msg.HOPerformed.lsaId),&(dst.param.bm_lsaId), sizeof(dst.param.bm_lsaId)); structed_msg.msg.HOPerformed.lsaId.flag= 1; msg_len = aifg_msg_sd_HOPerformed(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len, 20); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[15][2], msg_len)); } void test_aifg_msg_HOReject() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[16], &predecoded); structed_msg.id = AIFG_MSG_ID_HO_REQ_REJ; //cause aifg_ie_decode(&(predecoded.msg.HORequiredRej.cause),&dst); memcpy(&(structed_msg.msg.HOReject.cause),&(dst.param.bm_cause), sizeof(dst.param.bm_cause)); structed_msg.msg.HOReject.cause.flag= 1; msg_len = aifg_msg_sd_HORequiredRej(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len, 4); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[16][2], msg_len)); } void test_aifg_msg_HOSucceed() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[17], &predecoded); structed_msg.id = AIFG_MSG_ID_HO_SUC; msg_len = aifg_msg_sd_HOSucceed(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len, 1); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[17][2], msg_len)); } void test_aifg_msg_HODetect() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[18], &predecoded); structed_msg.id = AIFG_MSG_ID_HO_DETECT; msg_len = aifg_msg_sd_HODetect(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len, 1); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[18][2], msg_len)); } void test_aifg_msg_resrcReq() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[19], &predecoded); structed_msg.id = AIFG_MSG_ID_RESRC_REQ; //periodicity aifg_ie_decode(&(predecoded.msg.resrcReq.periodicity),&dst); memcpy(&(structed_msg.msg.resourceReq.periodicity),&(dst.param.bm_periodicity), sizeof(dst.param.bm_periodicity)); structed_msg.msg.resourceReq.periodicity.flag= 1; //resource indication method aifg_ie_decode(&(predecoded.msg.resrcReq.resrcIndMethod),&dst); memcpy(&(structed_msg.msg.resourceReq.resrcIndMethod),&(dst.param.bm_resrcIndMethod), sizeof(dst.param.bm_resrcIndMethod)); structed_msg.msg.resourceReq.resrcIndMethod.flag= 1; //cell identifier aifg_ie_decode(&(predecoded.msg.resrcReq.cellId),&dst); memcpy(&(structed_msg.msg.resourceReq.cellId),&(dst.param.bm_cellId), sizeof(dst.param.bm_cellId)); structed_msg.msg.resourceReq.cellId.flag= 1; //extend resource indicator aifg_ie_decode(&(predecoded.msg.resrcReq.extResrcInd),&dst); memcpy(&(structed_msg.msg.resourceReq.extResrcInd),&(dst.param.bm_extResrcInd), sizeof(dst.param.bm_extResrcInd)); structed_msg.msg.resourceReq.extResrcInd.flag= 1; msg_len = aifg_msg_sd_resrcReq(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len, 12); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[19][2], msg_len)); } void test_aifg_msg_resrcInd() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[20], &predecoded); structed_msg.id = AIFG_MSG_ID_RESRC_IND; //resource indication method aifg_ie_decode(&(predecoded.msg.resrcInd.resrcIndMethod),&dst); memcpy(&(structed_msg.msg.resourceInd.resrcIndMethod),&(dst.param.bm_resrcIndMethod), sizeof(dst.param.bm_resrcIndMethod)); structed_msg.msg.resourceInd.resrcIndMethod.flag= 1; //resource available aifg_ie_decode(&(predecoded.msg.resrcInd.resrcAvail),&dst); memcpy(&(structed_msg.msg.resourceInd.resrcAvail),&(dst.param.bm_resrcAvail), sizeof(dst.param.bm_resrcAvail)); structed_msg.msg.resourceInd.resrcAvail.flag= 1; //cell identifier aifg_ie_decode(&(predecoded.msg.resrcInd.cellId),&dst); memcpy(&(structed_msg.msg.resourceInd.cellId),&(dst.param.bm_cellId), sizeof(dst.param.bm_cellId)); structed_msg.msg.resourceInd.cellId.flag= 1; //total resource accessable aifg_ie_decode(&(predecoded.msg.resrcInd.totalResrc),&dst); memcpy(&(structed_msg.msg.resourceInd.totalResrc),&(dst.param.bm_totalResrc), sizeof(dst.param.bm_totalResrc)); structed_msg.msg.resourceInd.totalResrc.flag= 1; msg_len = aifg_msg_sd_resrcInd(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len, 34); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[20][2], msg_len)); } void test_aifg_msg_paging() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[21], &predecoded); structed_msg.id = AIFG_MSG_ID_PAGING; //imsi aifg_ie_decode(&(predecoded.msg.paging.imsi),&dst); memcpy(&(structed_msg.msg.paging.imsi),&(dst.param.bm_imsi), sizeof(dst.param.bm_imsi)); structed_msg.msg.paging.imsi.flag= 1; //tmsi aifg_ie_decode(&(predecoded.msg.paging.tmsi),&dst); memcpy(&(structed_msg.msg.paging.tmsi),&(dst.param.bm_tmsi), sizeof(dst.param.bm_tmsi)); structed_msg.msg.paging.tmsi.flag= 1; //cell identifier list aifg_ie_decode(&(predecoded.msg.paging.cellIdList),&dst); memcpy(&(structed_msg.msg.paging.cidList),&(dst.param.bm_cellIdList), sizeof(dst.param.bm_cellIdList)); structed_msg.msg.paging.cidList.flag= 1; //channel needed aifg_ie_decode(&(predecoded.msg.paging.channelNeeded),&dst); memcpy(&(structed_msg.msg.paging.channelNeeded),&(dst.param.bm_channelNeeded), sizeof(dst.param.bm_channelNeeded)); structed_msg.msg.paging.channelNeeded.flag= 1; //eMLPP priority aifg_ie_decode(&(predecoded.msg.paging.eMLPPpri),&dst); memcpy(&(structed_msg.msg.paging.eMLPP),&(dst.param.bm_eMLPP), sizeof(dst.param.bm_eMLPP)); structed_msg.msg.paging.eMLPP.flag= 1; msg_len = aifg_msg_sd_paging(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len, 31); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[21][2], msg_len)); //for unit test memcpy(&bm_paging, &structed_msg, sizeof(structed_msg)); } void test_aifg_msg_clearReq() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[22], &predecoded); structed_msg.id = AIFG_MSG_ID_CLR_REQ; //cause aifg_ie_decode(&(predecoded.msg.clearReq.cause),&dst); memcpy(&(structed_msg.msg.clearReq.cause),&(dst.param.bm_cause), sizeof(dst.param.bm_cause)); structed_msg.msg.clearReq.cause.flag= 1; msg_len = aifg_msg_sd_clearReq(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len, 4); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[22][2], msg_len)); //for unit test use memcpy(&bm_clearReq, &structed_msg, sizeof(structed_msg)); } void test_aifg_msg_clearCmd() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[23], &predecoded); structed_msg.id = AIFG_MSG_ID_CLR_CMD; //layer 3 header infomation aifg_ie_decode(&(predecoded.msg.clearCmd.l3HeaderInfo),&dst); memcpy(&(structed_msg.msg.clearCmd.l3HeaderInfo),&(dst.param.bm_L3HeaderInfo), sizeof(dst.param.bm_L3HeaderInfo)); structed_msg.msg.clearCmd.l3HeaderInfo.flag= 1; //cause aifg_ie_decode(&(predecoded.msg.clearCmd.cause),&dst); memcpy(&(structed_msg.msg.clearCmd.cause),&(dst.param.bm_cause), sizeof(dst.param.bm_cause)); structed_msg.msg.clearCmd.cause.flag= 1; msg_len = aifg_msg_sd_clearCmd(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len, 8); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[23][2], msg_len)); //for unit test use memcpy(&bm_clearCmd, &structed_msg, sizeof(structed_msg)); } void test_aifg_msg_reset() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[24], &predecoded); structed_msg.id = AIFG_MSG_ID_RESET; //cause aifg_ie_decode(&(predecoded.msg.reset.cause),&dst); memcpy(&(structed_msg.msg.reset.cause),&(dst.param.bm_cause), sizeof(dst.param.bm_cause)); structed_msg.msg.reset.cause.flag= 1; msg_len = aifg_msg_sd_reset(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len, 4); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[24][2], msg_len)); } void test_aifg_msg_overload() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[25], &predecoded); structed_msg.id = AIFG_MSG_ID_OVERLOAD; //cause aifg_ie_decode(&(predecoded.msg.overload.cause),&dst); memcpy(&(structed_msg.msg.overload.cause),&(dst.param.bm_cause), sizeof(dst.param.bm_cause)); structed_msg.msg.overload.cause.flag= 1; //cell identifier aifg_ie_decode(&(predecoded.msg.overload.cellId),&dst); memcpy(&(structed_msg.msg.overload.cellId),&(dst.param.bm_cellId), sizeof(dst.param.bm_cellId)); structed_msg.msg.overload.cellId.flag= 1; msg_len = aifg_msg_sd_overload(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len, 9); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[25][2], msg_len)); } void test_aifg_msg_mscInvokeTrace() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[26], &predecoded); structed_msg.id = AIFG_MSG_ID_MSC_INVK_TRACE; //trace type aifg_ie_decode(&(predecoded.msg.mscTrace.traceType),&dst); memcpy(&(structed_msg.msg.mscInvokeTrace.traceType),&(dst.param.bm_traceType), sizeof(dst.param.bm_traceType)); structed_msg.msg.mscInvokeTrace.traceType.flag= 1; //triggerid aifg_ie_decode(&(predecoded.msg.mscTrace.triggerId),&dst); memcpy(&(structed_msg.msg.mscInvokeTrace.tiggerId),&(dst.param.bm_triggerId), sizeof(dst.param.bm_triggerId)); structed_msg.msg.mscInvokeTrace.tiggerId.flag= 1; //trace reference aifg_ie_decode(&(predecoded.msg.mscTrace.traceRef),&dst); memcpy(&(structed_msg.msg.mscInvokeTrace.traceRef),&(dst.param.bm_traceRef), sizeof(dst.param.bm_traceRef)); structed_msg.msg.mscInvokeTrace.traceRef.flag= 1; //transactionid aifg_ie_decode(&(predecoded.msg.mscTrace.transId),&dst); memcpy(&(structed_msg.msg.mscInvokeTrace.transId),&(dst.param.bm_transId), sizeof(dst.param.bm_transId)); structed_msg.msg.mscInvokeTrace.transId.flag= 1; //mobile identity aifg_ie_decode(&(predecoded.msg.mscTrace.mobileId),&dst); memcpy(&(structed_msg.msg.mscInvokeTrace.mobileId),&(dst.param.mobileId), sizeof(dst.param.mobileId)); structed_msg.msg.mscInvokeTrace.mobileId.flag= 1; //OMCId aifg_ie_decode(&(predecoded.msg.mscTrace.omcId),&dst); memcpy(&(structed_msg.msg.mscInvokeTrace.omcId),&(dst.param.bm_omcId), sizeof(dst.param.bm_omcId)); structed_msg.msg.mscInvokeTrace.omcId.flag= 1; msg_len = aifg_msg_sd_mscTrace(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len, 24); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[26][2], msg_len)); } void test_aifg_msg_bscInvokeTrace() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[27], &predecoded); structed_msg.id = AIFG_MSG_ID_BSC_INVK_TRACE; //trace type aifg_ie_decode(&(predecoded.msg.bscTrace.traceType),&dst); memcpy(&(structed_msg.msg.bscInvokeTrace.traceType),&(dst.param.bm_traceType), sizeof(dst.param.bm_traceType)); structed_msg.msg.bscInvokeTrace.traceType.flag= 1; //triggerid aifg_ie_decode(&(predecoded.msg.bscTrace.triggerId),&dst); memcpy(&(structed_msg.msg.bscInvokeTrace.tiggerId),&(dst.param.bm_triggerId), sizeof(dst.param.bm_triggerId)); structed_msg.msg.bscInvokeTrace.tiggerId.flag= 1; //trace reference aifg_ie_decode(&(predecoded.msg.bscTrace.traceRef),&dst); memcpy(&(structed_msg.msg.bscInvokeTrace.traceRef),&(dst.param.bm_traceRef), sizeof(dst.param.bm_traceRef)); structed_msg.msg.bscInvokeTrace.traceRef.flag= 1; //transactionid aifg_ie_decode(&(predecoded.msg.bscTrace.transId),&dst); memcpy(&(structed_msg.msg.bscInvokeTrace.transId),&(dst.param.bm_transId), sizeof(dst.param.bm_transId)); structed_msg.msg.bscInvokeTrace.transId.flag= 1; //forward indicator aifg_ie_decode(&(predecoded.msg.bscTrace.forwardInd),&dst); memcpy(&(structed_msg.msg.bscInvokeTrace.forwardInd),&(dst.param.bm_fowardInd), sizeof(dst.param.bm_fowardInd)); structed_msg.msg.bscInvokeTrace.forwardInd.flag= 1; //OMCId aifg_ie_decode(&(predecoded.msg.bscTrace.omcId),&dst); memcpy(&(structed_msg.msg.bscInvokeTrace.omcId),&(dst.param.bm_omcId), sizeof(dst.param.bm_omcId)); structed_msg.msg.bscInvokeTrace.omcId.flag= 1; msg_len = aifg_msg_sd_bscTrace(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len, 22); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[27][2], msg_len)); } void test_aifg_msg_cmUpdate() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[28], &predecoded); structed_msg.id = AIFG_MSG_ID_CM_UPDATE; //classmark information type 2 aifg_ie_decode(&(predecoded.msg.cmUpdate.cmInfo2),&dst); memcpy(&(structed_msg.msg.cmUpdate.cm2),&(dst.param.bm_cmInfo2), sizeof(dst.param.bm_cmInfo2)); structed_msg.msg.cmUpdate.cm2.flag= 1; //classmark information type 3 not be tested msg_len = aifg_msg_sd_cmUpdate(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len, 6); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[28][2], msg_len)); } void test_aifg_msg_cipherModeCmd() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[29], &predecoded); structed_msg.id = AIFG_MSG_ID_CIPHER_MODE_CMD; //layer 3 header infomation aifg_ie_decode(&(predecoded.msg.cipherModeCmd.l3HeaderInfo),&dst); memcpy(&(structed_msg.msg.cipherModeCmd.l3HeaderInfo),&(dst.param.bm_L3HeaderInfo), sizeof(dst.param.bm_L3HeaderInfo)); structed_msg.msg.cipherModeCmd.l3HeaderInfo.flag= 1; //encryption information aifg_ie_decode(&(predecoded.msg.cipherModeCmd.encryptInfo),&dst); memcpy(&(structed_msg.msg.cipherModeCmd.encryptInfo),&(dst.param.bm_encryptInfo), sizeof(dst.param.bm_encryptInfo)); structed_msg.msg.cipherModeCmd.encryptInfo.flag= 1; //cipher response mode aifg_ie_decode(&(predecoded.msg.cipherModeCmd.cipherRespMode),&dst); memcpy(&(structed_msg.msg.cipherModeCmd.cipherRespMode),&(dst.param.bm_cipherRespMode), sizeof(dst.param.bm_cipherRespMode)); structed_msg.msg.cipherModeCmd.cipherRespMode.flag= 1; msg_len = aifg_msg_sd_cipherModeCmd(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len, 10); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[29][2], msg_len)); } void test_aifg_msg_cipherModeComplete() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[30], &predecoded); structed_msg.id = AIFG_MSG_ID_CIPHER_MODE_CMP; //layer 3 message contents not be tested because not done in the ie_decode&ie_encode //chosen encryption algorithm aifg_ie_decode(&(predecoded.msg.cipherModeComp.chosenEncrypt),&dst); memcpy(&(structed_msg.msg.cipherModeComplete.chosenEncrypt),&(dst.param.bm_chosenEncrypt), sizeof(dst.param.bm_chosenEncrypt)); structed_msg.msg.cipherModeComplete.chosenEncrypt.flag= 1; msg_len = aifg_msg_sd_cipherModeComplete(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len, 3); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[30][2], msg_len)); } void test_aifg_msg_cipherModeReject() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[31], &predecoded); structed_msg.id = AIFG_MSG_ID_CIPHER_MODE_REJ; //cause aifg_ie_decode(&(predecoded.msg.cipherModeRej.cause),&dst); memcpy(&(structed_msg.msg.cipherModeReject.cause),&(dst.param.bm_cause), sizeof(dst.param.bm_cause)); structed_msg.msg.cipherModeReject.cause.flag= 1; msg_len = aifg_msg_sd_cipherModeRej(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len, 4); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[31][2], msg_len)); } void test_aifg_msg_completeL3Info() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); memset(&l3Info,0,sizeof(l3Info)); //test aifg_msg_proc(msgsrc[32], &predecoded); structed_msg.id = AIFG_MSG_ID_L3_INFO; //cell identifier aifg_ie_decode(&(predecoded.msg.completeL3Info.cellId),&dst); memcpy(&(structed_msg.msg.completeL3Info.cellId),&(dst.param.bm_cellId), sizeof(dst.param.bm_cellId)); structed_msg.msg.completeL3Info.cellId.flag= 1; //layer 3 infomation //CM service type structed_msg.msg.completeL3Info.l3Info.ptr = &msgsrc[32][10]; structed_msg.msg.completeL3Info.l3Info.len = 11; /* l3Info.id = AIFG_MSG_ID_CM_REQUEST; aifg_ie_decode(&(predecoded.msg.completeL3Info.l3msg.msg.cmRequest.type),&dst); memcpy(&(l3Info.msg.cmRequest.cmType),&(dst.param.dt_cmType), sizeof(dst.param.dt_cmType)); l3Info.msg.cmRequest.cmType.flag= 1; //ciphering key sequence number aifg_ie_decode(&(predecoded.msg.completeL3Info.l3msg.msg.cmRequest.cipherKeySeq),&dst); memcpy(&(l3Info.msg.cmRequest.cipherKey),&(dst.param.dt_cipherKey), sizeof(dst.param.dt_cipherKey)); l3Info.msg.cmRequest.cipherKey.flag= 1; //mobile station classmark 2 aifg_ie_decode(&(predecoded.msg.completeL3Info.l3msg.msg.cmRequest.cm2),&dst); memcpy(&(l3Info.msg.cmRequest.cmInfo2),&(dst.param.dt_cmInfo2), sizeof(dst.param.dt_cmInfo2)); l3Info.msg.cmRequest.cmInfo2.flag= 1; //mobile identity aifg_ie_decode(&(predecoded.msg.completeL3Info.l3msg.msg.cmRequest.mobileId),&dst); memcpy(&(l3Info.msg.cmRequest.mobileId),&(dst.param.mobileId), sizeof(dst.param.mobileId)); l3Info.msg.cmRequest.mobileId.flag= 1; //priority level aifg_ie_decode(&(predecoded.msg.completeL3Info.l3msg.msg.cmRequest.priority),&dst); memcpy(&(l3Info.msg.cmRequest.priority),&(dst.param.dt_priority), sizeof(dst.param.dt_priority)); l3Info.msg.cmRequest.priority.flag= 1; memcpy(&(structed_msg.msg.completeL3Info.l3Info), &l3Info, sizeof(l3Info)); */ //chosen channel aifg_ie_decode(&(predecoded.msg.completeL3Info.chosenChannel),&dst); memcpy(&(structed_msg.msg.completeL3Info.chosenChannel),&(dst.param.bm_chosenChannel), sizeof(dst.param.bm_chosenChannel)); structed_msg.msg.completeL3Info.chosenChannel.flag= 1; //LSA identity list aifg_ie_decode(&(predecoded.msg.completeL3Info.lsaIdList),&dst); memcpy(&(structed_msg.msg.completeL3Info.lsaIdList),&(dst.param.bm_lsaIdList), sizeof(dst.param.bm_lsaIdList)); structed_msg.msg.completeL3Info.lsaIdList.flag= 1; //location information aifg_ie_decode(&(predecoded.msg.completeL3Info.locInfo),&dst); memcpy(&(structed_msg.msg.completeL3Info.locInfo),&(dst.param.bm_locInfo), sizeof(dst.param.bm_locInfo)); structed_msg.msg.completeL3Info.locInfo.flag= 1; msg_len = aifg_msg_sd_completeL3Info(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len, 35); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[32][2],35)); //for unit test use memcpy(&bm_completeL3, &structed_msg, sizeof(structed_msg)); } void test_aifg_msg_SAPI_n_Reject() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[33], &predecoded); structed_msg.id = AIFG_MSG_ID_SAPI_REJ; //dlci aifg_ie_decode(&(predecoded.msg.sapi_n_rej.dlci),&dst); memcpy(&(structed_msg.msg.SAPI_n_Reject.dlci),&(dst.param.bm_dlci), sizeof(dst.param.bm_dlci)); structed_msg.msg.SAPI_n_Reject.dlci.flag= 1; //cause aifg_ie_decode(&(predecoded.msg.sapi_n_rej.cause),&dst); memcpy(&(structed_msg.msg.SAPI_n_Reject.cause),&(dst.param.bm_cause), sizeof(dst.param.bm_cause)); structed_msg.msg.SAPI_n_Reject.cause.flag= 1; msg_len = aifg_msg_sd_sapi_n_rej(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len, 6); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[33][2], msg_len)); } void test_aifg_msg_resetCircuit() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[34], &predecoded); structed_msg.id = AIFG_MSG_ID_RESET_CC; //circuit identifier code aifg_ie_decode(&(predecoded.msg.resetCircuit.cic),&dst); memcpy(&(structed_msg.msg.resetCircuit.cic),&(dst.param.bm_cic), sizeof(dst.param.bm_cic)); structed_msg.msg.resetCircuit.cic.flag= 1; //cause aifg_ie_decode(&(predecoded.msg.resetCircuit.cause),&dst); memcpy(&(structed_msg.msg.resetCircuit.cause),&(dst.param.bm_cause), sizeof(dst.param.bm_cause)); structed_msg.msg.resetCircuit.cause.flag= 1; msg_len = aifg_msg_sd_resetCircuit(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len, 7); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[34][2], msg_len)); } void test_aifg_msg_resetCircuitAck() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[35], &predecoded); structed_msg.id = AIFG_MSG_ID_RESET_CC_ACK; //circuit identifier code aifg_ie_decode(&(predecoded.msg.resetCircuitAck.cic),&dst); memcpy(&(structed_msg.msg.resetCircuitAck.cic),&(dst.param.bm_cic), sizeof(dst.param.bm_cic)); structed_msg.msg.resetCircuitAck.cic.flag= 1; msg_len = aifg_msg_sd_resetCircuitAck(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,4); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[35][2], msg_len)); } void test_aifg_msg_circuitGrpBlk() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[36], &predecoded); structed_msg.id = AIFG_MSG_ID_CC_GROUP_BLK; //cause aifg_ie_decode(&(predecoded.msg.ccGroupBlock.cause),&dst); memcpy(&(structed_msg.msg.ccGroupBlock.cause),&(dst.param.bm_cause), sizeof(dst.param.bm_cause)); structed_msg.msg.ccGroupBlock.cause.flag= 1; //cic aifg_ie_decode(&(predecoded.msg.ccGroupBlock.cic),&dst); memcpy(&(structed_msg.msg.ccGroupBlock.cic),&(dst.param.bm_cic), sizeof(dst.param.bm_cic)); structed_msg.msg.ccGroupBlock.cic.flag= 1; //cic list aifg_ie_decode(&(predecoded.msg.ccGroupBlock.cicList),&dst); memcpy(&(structed_msg.msg.ccGroupBlock.cicList),&(dst.param.bm_cicList), sizeof(dst.param.bm_cicList)); structed_msg.msg.ccGroupBlock.cicList.flag= 1; msg_len = aifg_msg_sd_ccGrpBlk(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,13); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[36][2], msg_len)); } void test_aifg_msg_circuitGrpBlkAck() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[37], &predecoded); structed_msg.id = AIFG_MSG_ID_CC_GROUP_BLK_ACK; //cic aifg_ie_decode(&(predecoded.msg.ccGroupBlockAck.cic),&dst); memcpy(&(structed_msg.msg.ccGroupBlockAck.cic),&(dst.param.bm_cic), sizeof(dst.param.bm_cic)); structed_msg.msg.ccGroupBlockAck.cic.flag= 1; //cic list aifg_ie_decode(&(predecoded.msg.ccGroupBlockAck.cicList),&dst); memcpy(&(structed_msg.msg.ccGroupBlockAck.cicList),&(dst.param.bm_cicList), sizeof(dst.param.bm_cicList)); structed_msg.msg.ccGroupBlockAck.cicList.flag= 1; msg_len = aifg_msg_sd_ccGroupBlockAck(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,10); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[37][2], msg_len)); } void test_aifg_msg_circuitGrpUnblk() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[38], &predecoded); structed_msg.id = AIFG_MSG_ID_CC_GROUP_UNBLK; //cic aifg_ie_decode(&(predecoded.msg.ccGroupUnblock.cic),&dst); memcpy(&(structed_msg.msg.ccGroupUnblock.cic),&(dst.param.bm_cic), sizeof(dst.param.bm_cic)); structed_msg.msg.ccGroupUnblock.cic.flag= 1; //cic list aifg_ie_decode(&(predecoded.msg.ccGroupUnblock.cicList),&dst); memcpy(&(structed_msg.msg.ccGroupUnblock.cicList),&(dst.param.bm_cicList), sizeof(dst.param.bm_cicList)); structed_msg.msg.ccGroupUnblock.cicList.flag= 1; msg_len = aifg_msg_sd_ccGroupUnblock(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,10); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[38][2], msg_len)); } void test_aifg_msg_circuitGrpUnblkAck() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[39], &predecoded); structed_msg.id = AIFG_MSG_ID_CC_GROUP_UNBLK_ACK; //cic aifg_ie_decode(&(predecoded.msg.ccGroupUnblockAck.cic),&dst); memcpy(&(structed_msg.msg.ccGroupUnblockAck.cic),&(dst.param.bm_cic), sizeof(dst.param.bm_cic)); structed_msg.msg.ccGroupUnblockAck.cic.flag= 1; //cic list aifg_ie_decode(&(predecoded.msg.ccGroupUnblockAck.cicList),&dst); memcpy(&(structed_msg.msg.ccGroupUnblockAck.cicList),&(dst.param.bm_cicList), sizeof(dst.param.bm_cicList)); structed_msg.msg.ccGroupUnblockAck.cicList.flag= 1; msg_len = aifg_msg_sd_ccGroupUnblockAck(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,10); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[39][2], msg_len)); } void test_aifg_msg_confusion() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[40], &predecoded); structed_msg.id = AIFG_MSG_ID_CONFUSION; //cause aifg_ie_decode(&(predecoded.msg.confusion.cause),&dst); memcpy(&(structed_msg.msg.confusion.cause),&(dst.param.bm_cause), sizeof(dst.param.bm_cause)); structed_msg.msg.confusion.cause.flag= 1; //diagnostics aifg_ie_decode(&(predecoded.msg.confusion.diagnostics),&dst); memcpy(&(structed_msg.msg.confusion.diagnostics),&(dst.param.bm_diagnostics), sizeof(dst.param.bm_diagnostics)); structed_msg.msg.confusion.diagnostics.flag= 1; msg_len = aifg_msg_sd_confusion(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,10); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[40][2], msg_len)); } void test_aifg_msg_unequippedCircuit() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[41], &predecoded); structed_msg.id = AIFG_MSG_ID_UNEQUIP_CC; //cic aifg_ie_decode(&(predecoded.msg.upequipCircuit.cic),&dst); memcpy(&(structed_msg.msg.unequippedCircuit.cic),&(dst.param.bm_cic), sizeof(dst.param.bm_cic)); structed_msg.msg.unequippedCircuit.cic.flag= 1; //cic list aifg_ie_decode(&(predecoded.msg.upequipCircuit.cicList),&dst); memcpy(&(structed_msg.msg.unequippedCircuit.cicList),&(dst.param.bm_cicList), sizeof(dst.param.bm_cicList)); structed_msg.msg.unequippedCircuit.cicList.flag= 1; msg_len = aifg_msg_sd_unequippedCircuit(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,10); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[41][2], msg_len)); } void test_aifg_msg_loadIndication() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[42], &predecoded); structed_msg.id = AIFG_MSG_ID_LOAD_IND; //time indication aifg_ie_decode(&(predecoded.msg.loadInd.timeInd),&dst); memcpy(&(structed_msg.msg.loadInd.timeInd),&(dst.param.bm_timeId), sizeof(dst.param.bm_timeId)); structed_msg.msg.loadInd.timeInd.flag= 1; //cell identity aifg_ie_decode(&(predecoded.msg.loadInd.cellId),&dst); memcpy(&(structed_msg.msg.loadInd.cellId),&(dst.param.bm_cellId), sizeof(dst.param.bm_cellId)); structed_msg.msg.loadInd.cellId.flag= 1; //cell identity list aifg_ie_decode(&(predecoded.msg.loadInd.cellIdList),&dst); memcpy(&(structed_msg.msg.loadInd.cidList),&(dst.param.bm_cellIdList), sizeof(dst.param.bm_cellIdList)); structed_msg.msg.loadInd.cidList.flag= 1; //resource situation aifg_ie_decode(&(predecoded.msg.loadInd.resrcSit),&dst); memcpy(&(structed_msg.msg.loadInd.resrcSit),&(dst.param.bm_resrcSit), sizeof(dst.param.bm_resrcSit)); structed_msg.msg.loadInd.resrcSit.flag= 1; //cause aifg_ie_decode(&(predecoded.msg.loadInd.cause),&dst); memcpy(&(structed_msg.msg.loadInd.cause),&(dst.param.bm_cause), sizeof(dst.param.bm_cause)); structed_msg.msg.loadInd.cause.flag= 1; msg_len = aifg_msg_sd_loadInd(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,29); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[42][2], msg_len)); } void test_aifg_msg_suspend() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[43], &predecoded); structed_msg.id = AIFG_MSG_ID_SUSPEND; //dlci aifg_ie_decode(&(predecoded.msg.suspend.dlci),&dst); memcpy(&(structed_msg.msg.suspend.dlci),&(dst.param.bm_dlci), sizeof(dst.param.bm_dlci)); structed_msg.msg.suspend.dlci.flag= 1; msg_len = aifg_msg_sd_suspend(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,3); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[43][2], msg_len)); } void test_aifg_msg_resume() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[44], &predecoded); structed_msg.id = AIFG_MSG_ID_RESUME; //dlci aifg_ie_decode(&(predecoded.msg.resume.dlci),&dst); memcpy(&(structed_msg.msg.resume.dlci),&(dst.param.bm_dlci), sizeof(dst.param.bm_dlci)); structed_msg.msg.resume.dlci.flag= 1; msg_len = aifg_msg_sd_resume(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,3); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[44][2], msg_len)); } void test_aifg_msg_changeCircuit() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[45], &predecoded); structed_msg.id = AIFG_MSG_ID_CHANGE_CC; //cause aifg_ie_decode(&(predecoded.msg.changeCC.cause),&dst); memcpy(&(structed_msg.msg.changeCircuit.cause),&(dst.param.bm_cause), sizeof(dst.param.bm_cause)); structed_msg.msg.changeCircuit.cause.flag= 1; msg_len = aifg_msg_sd_changeCircuit(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,4); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[45][2], msg_len)); } void test_aifg_msg_changeCCAck() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[46], &predecoded); structed_msg.id = AIFG_MSG_ID_CHANGE_CC_ACK; //cic aifg_ie_decode(&(predecoded.msg.changeCCAck.circuitId),&dst); memcpy(&(structed_msg.msg.changeCircuitAck.cic),&(dst.param.bm_cic), sizeof(dst.param.bm_cic)); structed_msg.msg.changeCircuitAck.cic.flag= 1; msg_len = aifg_msg_sd_changeCircuitAck(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,4); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[46][2], msg_len)); } void test_aifg_msg_locCmd() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[47], &predecoded); structed_msg.id = AIFG_MSG_ID_LOC_INFO_CMD; //location information aifg_ie_decode(&(predecoded.msg.locInfoCmd.locInfo),&dst); memcpy(&(structed_msg.msg.locCmd.locInfo),&(dst.param.bm_locInfo), sizeof(dst.param.bm_locInfo)); structed_msg.msg.locCmd.locInfo.flag= 1; msg_len = aifg_msg_sd_locCmd(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,6); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[47][2], msg_len)); } void test_aifg_msg_locReport() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[48], &predecoded); structed_msg.id = AIFG_MSG_ID_LOC_INFO_RPT; //location information aifg_ie_decode(&(predecoded.msg.locInfoReport.locInfo),&dst); memcpy(&(structed_msg.msg.locReport.locInfo),&(dst.param.bm_locInfo), sizeof(dst.param.bm_locInfo)); structed_msg.msg.locReport.locInfo.flag= 1; /*/cause aifg_ie_decode(&(predecoded.msg.locInfoReport.cause),&dst); memcpy(&(structed_msg.msg.locReport.cause),&(dst.param.bm_cause), sizeof(dst.param.bm_cause)); structed_msg.msg.locReport.cause.flag= 1;*/ msg_len = aifg_msg_sd_locReport(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,6); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[48][2], msg_len)); } void test_aifg_msg_resetAck() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[49], &predecoded); structed_msg.id = AIFG_MSG_ID_RESET_ACK; msg_len = aifg_msg_sd_resetAck(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,1); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[49][2], msg_len)); } void test_aifg_msg_clearComplete() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[50], &predecoded); structed_msg.id = AIFG_MSG_ID_CLR_CMP; msg_len = aifg_msg_sd_clearComplete(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,1); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[50][2], msg_len)); } void test_aifg_msg_queueInd() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[51], &predecoded); structed_msg.id = AIFG_MSG_ID_QUEUE_IND; msg_len = aifg_msg_sd_queueInd(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,1); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[51][2], msg_len)); } void test_aifg_msg_cmkRequest() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[52], &predecoded); structed_msg.id = AIFG_MSG_ID_CLASSMARK_REQ; msg_len = aifg_msg_sd_classmarkReq(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,1); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[52][2], msg_len)); } ///////////////dtap msg //////////////////////////////////////////////////////////// void test_aifg_msg_luAccept() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[53], &predecoded); structed_msg.id = AIFG_MSG_ID_LU_ACCEPT; //location area identification aifg_ie_decode(&(predecoded.msg.luAccept.lai),&dst); memcpy(&(structed_msg.msg.luAccept.lai),&(dst.param.dt_lai), sizeof(dst.param.dt_lai)); structed_msg.msg.luAccept.lai.flag= 1; //mobile identity aifg_ie_decode(&(predecoded.msg.luAccept.mobileId),&dst); memcpy(&(structed_msg.msg.luAccept.mobileId),&(dst.param.mobileId), sizeof(dst.param.mobileId)); structed_msg.msg.luAccept.mobileId.flag= 1; //follow on proceed aifg_ie_decode(&(predecoded.msg.luAccept.followOnProc),&dst); memcpy(&(structed_msg.msg.luAccept.followOnProceed),&(dst.param.dt_followOnProceed), sizeof(dst.param.dt_followOnProceed)); structed_msg.msg.luAccept.followOnProceed.flag= 1; //CTS permission aifg_ie_decode(&(predecoded.msg.luAccept.ctsPerm),&dst); memcpy(&(structed_msg.msg.luAccept.CTSPermission),&(dst.param.dt_CTSPermission), sizeof(dst.param.dt_CTSPermission)); structed_msg.msg.luAccept.CTSPermission.flag= 1; msg_len = aifg_msg_sd_luAccept(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,12); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[53][4], msg_len)); } void test_aifg_msg_cmReject() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[54], &predecoded); structed_msg.id = AIFG_MSG_ID_CM_REJECT; //reject cause aifg_ie_decode(&(predecoded.msg.cmRej.rejCause),&dst); memcpy(&(structed_msg.msg.cmReject.rejectCause),&(dst.param.dt_rejectCause), sizeof(dst.param.dt_rejectCause)); structed_msg.msg.cmReject.rejectCause.flag= 1; msg_len = aifg_msg_sd_cmRej(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,2); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[54][4], msg_len)); } void test_aifg_msg_luReject() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[55], &predecoded); structed_msg.id = AIFG_MSG_ID_LU_REJECT; //reject cause aifg_ie_decode(&(predecoded.msg.luReject.rejCause),&dst); memcpy(&(structed_msg.msg.luReject.rejectCause),&(dst.param.dt_rejectCause), sizeof(dst.param.dt_rejectCause)); structed_msg.msg.luReject.rejectCause.flag= 1; msg_len = aifg_msg_sd_luReject(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,2); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[55][4], msg_len)); } void test_aifg_msg_abort() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[56], &predecoded); structed_msg.id = AIFG_MSG_ID_ABORT; //reject cause aifg_ie_decode(&(predecoded.msg.abort.rejCause),&dst); memcpy(&(structed_msg.msg.abort.rejectCause),&(dst.param.dt_rejectCause), sizeof(dst.param.dt_rejectCause)); structed_msg.msg.abort.rejectCause.flag= 1; msg_len = aifg_msg_sd_abort(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,2); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[56][4], msg_len)); } void test_aifg_msg_mmStatus() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[57], &predecoded); structed_msg.id = AIFG_MSG_ID_MM_STATUS; //reject cause aifg_ie_decode(&(predecoded.msg.mmStatus.rejCause),&dst); memcpy(&(structed_msg.msg.mmStatus.rejectCause),&(dst.param.dt_rejectCause), sizeof(dst.param.dt_rejectCause)); structed_msg.msg.mmStatus.rejectCause.flag= 1; msg_len = aifg_msg_sd_mmStatus(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,2); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[57][4], msg_len)); } void test_aifg_msg_luRequest() { memset(&l3Info,0,sizeof(l3Info)); memset(&predecode_l3msg,0,sizeof(predecode_l3msg)); //test aifg_msg_decode_embeded_l3msg(msgsrc[58], &predecode_l3msg); l3Info.id = AIFG_MSG_ID_LU_REQUEST; //location updating type aifg_ie_decode(&(predecode_l3msg.msg.luRequest.type),&dst); memcpy(&(l3Info.msg.luRequest.luType),&(dst.param.dt_luType), sizeof(dst.param.dt_luType)); l3Info.msg.luRequest.luType.flag= 1; //ciphering key sequence number aifg_ie_decode(&(predecode_l3msg.msg.luRequest.cipherKeySeq),&dst); memcpy(&(l3Info.msg.luRequest.cipherKey),&(dst.param.dt_cipherKey), sizeof(dst.param.dt_cipherKey)); l3Info.msg.luRequest.cipherKey.flag= 1; //location area identification aifg_ie_decode(&(predecode_l3msg.msg.luRequest.lai),&dst); memcpy(&(l3Info.msg.luRequest.lai),&(dst.param.dt_lai), sizeof(dst.param.dt_lai)); l3Info.msg.luRequest.lai.flag= 1; //mobile station classmark 1 aifg_ie_decode(&(predecode_l3msg.msg.luRequest.cm1),&dst); memcpy(&(l3Info.msg.luRequest.cmInfo1),&(dst.param.dt_cmInfo1), sizeof(dst.param.dt_cmInfo1)); l3Info.msg.luRequest.cmInfo1.flag= 1; //mobile identity aifg_ie_decode(&(predecode_l3msg.msg.luRequest.mobileId),&dst); memcpy(&(l3Info.msg.luRequest.mobileId),&(dst.param.mobileId), sizeof(dst.param.mobileId)); l3Info.msg.luRequest.mobileId.flag= 1; msg_len = aifg_msg_encode_embeded_l3msg(&l3Info, buffer); CU_ASSERT_EQUAL(msg_len,12); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[58][0], msg_len)); } void test_aifg_msg_authRequest () { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[59], &predecoded); structed_msg.id = AIFG_MSG_ID_AUTH_REQUEST; //ciphering key sequence number aifg_ie_decode(&(predecoded.msg.authReq.cipherKeySeq),&dst); memcpy(&(structed_msg.msg.authRequest.cipherKey),&(dst.param.dt_cipherKey), sizeof(dst.param.dt_cipherKey)); structed_msg.msg.authRequest.cipherKey.flag= 1; //authentication parameter RAND aifg_ie_decode(&(predecoded.msg.authReq.authParamRAND),&dst); memcpy(&(structed_msg.msg.authRequest.authRAND),&(dst.param.dt_authRAND), sizeof(dst.param.dt_authRAND)); structed_msg.msg.authRequest.authRAND.flag= 1; msg_len = aifg_msg_sd_authReq(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,18); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[59][4], msg_len)); } void test_aifg_msg_authResp () { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[60], &predecoded); structed_msg.id = AIFG_MSG_ID_AUTH_RESPONSE; //authentication parameter SRES aifg_ie_decode(&(predecoded.msg.authResp.authParamSRES),&dst); memcpy(&(structed_msg.msg.authResp.authSRES),&(dst.param.dt_authSRES), sizeof(dst.param.dt_authSRES)); structed_msg.msg.authResp.authSRES.flag= 1; msg_len = aifg_msg_sd_authResp(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,5); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[60][4], msg_len)); } void test_aifg_msg_idRequest () { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[61], &predecoded); structed_msg.id = AIFG_MSG_ID_ID_REQUEST; //identity type aifg_ie_decode(&(predecoded.msg.idReq.type),&dst); memcpy(&(structed_msg.msg.idRequest.idType),&(dst.param.dt_idType), sizeof(dst.param.dt_idType)); structed_msg.msg.idRequest.idType.flag= 1; msg_len = aifg_msg_sd_idReq(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,2); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[61][4], msg_len)); } void test_aifg_msg_idResp () { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[62], &predecoded); structed_msg.id = AIFG_MSG_ID_ID_RESPONSE; //mobile identity aifg_ie_decode(&(predecoded.msg.idResp.mobileId),&dst); memcpy(&(structed_msg.msg.idResp.mobileId),&(dst.param.mobileId), sizeof(dst.param.mobileId)); structed_msg.msg.idResp.mobileId.flag= 1; msg_len = aifg_msg_sd_idResp(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,4); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[62][4], msg_len)); } void test_aifg_msg_imsiDetachInd () { memset(&l3Info,0,sizeof(l3Info)); memset(&predecode_l3msg,0,sizeof(predecode_l3msg)); //test aifg_msg_decode_embeded_l3msg(msgsrc[63], &predecode_l3msg); l3Info.id = AIFG_MSG_ID_IMSI_DETACH_IND; //mobile station classmark 1 aifg_ie_decode(&(predecode_l3msg.msg.imsiDetachInd.cm1),&dst); memcpy(&(l3Info.msg.imsiDetachInd.cmInfo1),&(dst.param.dt_cmInfo1), sizeof(dst.param.dt_cmInfo1)); l3Info.msg.imsiDetachInd.cmInfo1.flag= 1; //mobile identity aifg_ie_decode(&(predecode_l3msg.msg.imsiDetachInd.mobileId),&dst); memcpy(&(l3Info.msg.imsiDetachInd.mobileId),&(dst.param.mobileId), sizeof(dst.param.mobileId)); l3Info.msg.imsiDetachInd.mobileId.flag= 1; msg_len = aifg_msg_encode_embeded_l3msg(&l3Info, buffer); CU_ASSERT_EQUAL(msg_len,6); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[63][0], msg_len)); } void test_aifg_msg_tmsiCmd() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[64], &predecoded); structed_msg.id = AIFG_MSG_ID_TMSI_REALLOC_CMD; //location area identification aifg_ie_decode(&(predecoded.msg.tmsiReallocCmd.lai),&dst); memcpy(&(structed_msg.msg.tmsiCmd.lai),&(dst.param.dt_lai), sizeof(dst.param.dt_lai)); structed_msg.msg.tmsiCmd.lai.flag= 1; //mobile identity aifg_ie_decode(&(predecoded.msg.tmsiReallocCmd.mobileId),&dst); memcpy(&(structed_msg.msg.tmsiCmd.mobileId),&(dst.param.mobileId), sizeof(dst.param.mobileId)); structed_msg.msg.tmsiCmd.mobileId.flag= 1; msg_len = aifg_msg_sd_tmsiReallocCmd(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,9); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[64][4], msg_len)); } void test_aifg_msg_cmReEst_Request () { memset(&l3Info,0,sizeof(l3Info)); memset(&predecode_l3msg,0,sizeof(predecode_l3msg)); //test aifg_msg_decode_embeded_l3msg(msgsrc[65], &predecode_l3msg); l3Info.id = AIFG_MSG_ID_CM_REEST_REQUEST; //ciphering key sequence number aifg_ie_decode(&(predecode_l3msg.msg.cmReEstReq.cipherKeySeq),&dst); memcpy(&(l3Info.msg.cmReEstReq.cipherKey),&(dst.param.dt_cipherKey), sizeof(dst.param.dt_cipherKey)); l3Info.msg.cmReEstReq.cipherKey.flag= 1; //mobile station classmark 2 aifg_ie_decode(&(predecode_l3msg.msg.cmReEstReq.cm2),&dst); memcpy(&(l3Info.msg.cmReEstReq.cmInfo2),&(dst.param.dt_cmInfo2), sizeof(dst.param.dt_cmInfo2)); l3Info.msg.cmReEstReq.cmInfo2.flag= 1; //mobile identity aifg_ie_decode(&(predecode_l3msg.msg.cmReEstReq.mobileId),&dst); memcpy(&(l3Info.msg.cmReEstReq.mobileId),&(dst.param.mobileId), sizeof(dst.param.mobileId)); l3Info.msg.cmReEstReq.mobileId.flag= 1; //location area identification aifg_ie_decode(&(predecode_l3msg.msg.cmReEstReq.lai),&dst); memcpy(&(l3Info.msg.cmReEstReq.lai),&(dst.param.dt_lai), sizeof(dst.param.dt_lai)); l3Info.msg.cmReEstReq.lai.flag= 1; msg_len = aifg_msg_encode_embeded_l3msg(&l3Info, buffer); CU_ASSERT_EQUAL(msg_len,16); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[65][0], msg_len)); } void test_aifg_msg_cmRequest() { memset(&l3Info,0,sizeof(l3Info)); memset(&predecode_l3msg,0,sizeof(predecode_l3msg)); //test aifg_msg_decode_embeded_l3msg(msgsrc[66], &predecode_l3msg); l3Info.id = AIFG_MSG_ID_CM_REQUEST; //CM service type aifg_ie_decode(&(predecode_l3msg.msg.cmRequest.type),&dst); memcpy(&(l3Info.msg.cmRequest.cmType),&(dst.param.dt_cmType), sizeof(dst.param.dt_cmType)); l3Info.msg.cmRequest.cmType.flag= 1; //ciphering key sequence number aifg_ie_decode(&(predecode_l3msg.msg.cmRequest.cipherKeySeq),&dst); memcpy(&(l3Info.msg.cmRequest.cipherKey),&(dst.param.dt_cipherKey), sizeof(dst.param.dt_cipherKey)); l3Info.msg.cmRequest.cipherKey.flag= 1; //mobile station classmark 2 aifg_ie_decode(&(predecode_l3msg.msg.cmRequest.cm2),&dst); memcpy(&(l3Info.msg.cmRequest.cmInfo2),&(dst.param.dt_cmInfo2), sizeof(dst.param.dt_cmInfo2)); l3Info.msg.cmRequest.cmInfo2.flag= 1; //mobile identity aifg_ie_decode(&(predecode_l3msg.msg.cmRequest.mobileId),&dst); memcpy(&(l3Info.msg.cmRequest.mobileId),&(dst.param.mobileId), sizeof(dst.param.mobileId)); l3Info.msg.cmRequest.mobileId.flag= 1; //priority level aifg_ie_decode(&(predecode_l3msg.msg.cmRequest.priority),&dst); memcpy(&(l3Info.msg.cmRequest.priority),&(dst.param.dt_priority), sizeof(dst.param.dt_priority)); l3Info.msg.cmRequest.priority.flag= 1; msg_len = aifg_msg_encode_embeded_l3msg(&l3Info, buffer); CU_ASSERT_EQUAL(msg_len,11); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[66][0], msg_len)); } void test_aifg_msg_mmInfo () { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[67], &predecoded); structed_msg.id = AIFG_MSG_ID_MM_INFO; //full name for network aifg_ie_decode(&(predecoded.msg.mmInfo.fullNetworkName),&dst); memcpy(&(structed_msg.msg.mmInfo.fullName),&(dst.param.dt_nwName), sizeof(dst.param.dt_nwName)); structed_msg.msg.mmInfo.fullName.flag= 1; //short name for network aifg_ie_decode(&(predecoded.msg.mmInfo.shortNetworkName),&dst); memcpy(&(structed_msg.msg.mmInfo.shortName),&(dst.param.dt_nwName), sizeof(dst.param.dt_nwName)); structed_msg.msg.mmInfo.shortName.flag= 1; //time zone aifg_ie_decode(&(predecoded.msg.mmInfo.timeZone),&dst); memcpy(&(structed_msg.msg.mmInfo.timeZone),&(dst.param.dt_timeZone), sizeof(dst.param.dt_timeZone)); structed_msg.msg.mmInfo.timeZone.flag= 1; //time zone and time aifg_ie_decode(&(predecoded.msg.mmInfo.timeZoneAndTime),&dst); memcpy(&(structed_msg.msg.mmInfo.tzTime),&(dst.param.dt_tzTime), sizeof(dst.param.dt_tzTime)); structed_msg.msg.mmInfo.tzTime.flag= 1; //LSA identifier aifg_ie_decode(&(predecoded.msg.mmInfo.lsaId),&dst); memcpy(&(structed_msg.msg.mmInfo.lsaId),&(dst.param.dt_lsaId), sizeof(dst.param.dt_lsaId)); structed_msg.msg.mmInfo.lsaId.flag= 1; msg_len = aifg_msg_sd_mmInfo(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,26); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[67][4], msg_len)); } void test_aifg_msg_alert () { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[68], &predecoded); structed_msg.id = AIFG_MSG_ID_ALERTING; //facility ..........dt_facility not done aifg_ie_decode(&(predecoded.msg.alert.facility),&dst); memcpy(&(structed_msg.msg.alert.facility),&(dst.param.dt_facility), sizeof(dst.param.dt_facility)); structed_msg.msg.alert.facility.flag= 1; //progress indicator aifg_ie_decode(&(predecoded.msg.alert.progressInd),&dst); memcpy(&(structed_msg.msg.alert.progInd),&(dst.param.dt_progInd), sizeof(dst.param.dt_progInd)); structed_msg.msg.alert.progInd.flag= 1; //user-user aifg_ie_decode(&(predecoded.msg.alert.user_user),&dst); memcpy(&(structed_msg.msg.alert.uu),&(dst.param.dt_uu), sizeof(dst.param.dt_uu)); structed_msg.msg.alert.uu.flag= 1; msg_len = aifg_msg_sd_alert(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,60); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[68][4], msg_len)); } void test_aifg_msg_callConfirm () { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[69], &predecoded); structed_msg.id = AIFG_MSG_ID_CALL_CONFIRMED; //repeat indicator aifg_ie_decode(&(predecoded.msg.callConfirm.reptInd),&dst); memcpy(&(structed_msg.msg.callConfirm.rpInd),&(dst.param.dt_rpInd), sizeof(dst.param.dt_rpInd)); structed_msg.msg.callConfirm.rpInd.flag= 1; //bearer capability 1 aifg_ie_decode(&(predecoded.msg.callConfirm.bearCap1),&dst); memcpy(&(structed_msg.msg.callConfirm.bc1),&(dst.param.dt_bc), sizeof(dst.param.dt_bc)); structed_msg.msg.callConfirm.bc1.flag= 1; //bearer capability 2 aifg_ie_decode(&(predecoded.msg.callConfirm.bearCap2),&dst); memcpy(&(structed_msg.msg.callConfirm.bc2),&(dst.param.dt_bc), sizeof(dst.param.dt_bc)); structed_msg.msg.callConfirm.bc2.flag= 1; //cause aifg_ie_decode(&(predecoded.msg.callConfirm.cause),&dst); memcpy(&(structed_msg.msg.callConfirm.cause),&(dst.param.dt_cause), sizeof(dst.param.dt_cause)); structed_msg.msg.callConfirm.cause.flag= 1; //call control capabilities aifg_ie_decode(&(predecoded.msg.callConfirm.ccCap),&dst); memcpy(&(structed_msg.msg.callConfirm.ccCap),&(dst.param.dt_ccCap), sizeof(dst.param.dt_ccCap)); structed_msg.msg.callConfirm.ccCap.flag= 1; msg_len = aifg_msg_sd_callConfirm(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,30); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[69][4], msg_len)); } void test_aifg_msg_callProceed() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[70], &predecoded); structed_msg.id = AIFG_MSG_ID_CALL_PROCEEDING; //repeat indicator aifg_ie_decode(&(predecoded.msg.callProceed.reptInd),&dst); memcpy(&(structed_msg.msg.callProceed.rpInd),&(dst.param.dt_rpInd), sizeof(dst.param.dt_rpInd)); structed_msg.msg.callProceed.rpInd.flag= 1; //bearer capability 1 aifg_ie_decode(&(predecoded.msg.callProceed.bearCap1),&dst); memcpy(&(structed_msg.msg.callProceed.bc1),&(dst.param.dt_bc), sizeof(dst.param.dt_bc)); structed_msg.msg.callProceed.bc1.flag= 1; //bearer capability 2 aifg_ie_decode(&(predecoded.msg.callProceed.bearCap2),&dst); memcpy(&(structed_msg.msg.callProceed.bc2),&(dst.param.dt_bc), sizeof(dst.param.dt_bc)); structed_msg.msg.callProceed.bc2.flag= 1; //test facility aifg_ie_decode(&(predecoded.msg.callProceed.facility),&dst); memcpy(&(structed_msg.msg.callProceed.facility),&(dst.param.dt_facility), sizeof(dst.param.dt_facility)); structed_msg.msg.callProceed.facility.flag= 1; //progress indicator aifg_ie_decode(&(predecoded.msg.callProceed.progressInd),&dst); memcpy(&(structed_msg.msg.callProceed.progInd),&(dst.param.dt_progInd), sizeof(dst.param.dt_progInd)); structed_msg.msg.callProceed.progInd.flag= 1; //priority level aifg_ie_decode(&(predecoded.msg.callProceed.priority),&dst); memcpy(&(structed_msg.msg.callProceed.priority),&(dst.param.dt_priority), sizeof(dst.param.dt_priority)); structed_msg.msg.callProceed.priority.flag= 1; msg_len = aifg_msg_sd_callProceed(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,65); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[70][4], msg_len)); } void test_aifg_msg_connect() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[71], &predecoded); structed_msg.id = AIFG_MSG_ID_CONNECT; // test facility aifg_ie_decode(&(predecoded.msg.connect.facility),&dst); memcpy(&(structed_msg.msg.connect.facility),&(dst.param.dt_facility), sizeof(dst.param.dt_facility)); structed_msg.msg.connect.facility.flag= 1; //progress indicator aifg_ie_decode(&(predecoded.msg.connect.progressInd),&dst); memcpy(&(structed_msg.msg.connect.progInd),&(dst.param.dt_progInd), sizeof(dst.param.dt_progInd)); structed_msg.msg.connect.progInd.flag= 1; //connected number aifg_ie_decode(&(predecoded.msg.connect.connNum),&dst); memcpy(&(structed_msg.msg.connect.connNum),&(dst.param.dt_connNum), sizeof(dst.param.dt_connNum)); structed_msg.msg.connect.connNum.flag= 1; //connected subaddress aifg_ie_decode(&(predecoded.msg.connect.connSubaddr),&dst); memcpy(&(structed_msg.msg.connect.connSubAddr),&(dst.param.dt_connSubAddr), sizeof(dst.param.dt_connSubAddr)); structed_msg.msg.connect.connSubAddr.flag= 1; //user-user aifg_ie_decode(&(predecoded.msg.connect.user_user),&dst); memcpy(&(structed_msg.msg.connect.uu),&(dst.param.dt_uu), sizeof(dst.param.dt_uu)); structed_msg.msg.connect.uu.flag= 1; msg_len = aifg_msg_sd_connect(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,0x47); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[71][4], msg_len)); } void test_aifg_msg_eSetup() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[72], &predecoded); structed_msg.id = AIFG_MSG_ID_EMERGENCY_SETUP; //bearer capability aifg_ie_decode(&(predecoded.msg.eSetup.bearCap),&dst); memcpy(&(structed_msg.msg.eSetup.bc),&(dst.param.dt_bc), sizeof(dst.param.dt_bc)); structed_msg.msg.eSetup.bc.flag= 1; msg_len = aifg_msg_sd_eSetup(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,5); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[72][4], msg_len)); } void test_aifg_msg_progress() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[73], &predecoded); structed_msg.id = AIFG_MSG_ID_PROGRESS; //progress indicator aifg_ie_decode(&(predecoded.msg.progress.progressInd),&dst); memcpy(&(structed_msg.msg.progress.progInd),&(dst.param.dt_progInd), sizeof(dst.param.dt_progInd)); structed_msg.msg.progress.progInd.flag= 1; //user-user aifg_ie_decode(&(predecoded.msg.progress.user_user),&dst); memcpy(&(structed_msg.msg.progress.uu),&(dst.param.dt_uu), sizeof(dst.param.dt_uu)); structed_msg.msg.progress.uu.flag= 1; msg_len = aifg_msg_sd_progress(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,9); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[73][4], msg_len)); } void test_aifg_msg_setup() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[74], &predecoded); structed_msg.id = AIFG_MSG_ID_SETUP; //BC repeat indicator aifg_ie_decode(&(predecoded.msg.setup.reptInd_bc),&dst); memcpy(&(structed_msg.msg.setup.bc_rpInd),&(dst.param.dt_rpInd), sizeof(dst.param.dt_rpInd)); structed_msg.msg.setup.bc_rpInd.flag= 1; //bearer capability 1 aifg_ie_decode(&(predecoded.msg.setup.bearCap1),&dst); memcpy(&(structed_msg.msg.setup.bc1),&(dst.param.dt_bc), sizeof(dst.param.dt_bc)); structed_msg.msg.setup.bc1.flag= 1; //bearer capability 2 aifg_ie_decode(&(predecoded.msg.setup.bearCap2),&dst); memcpy(&(structed_msg.msg.setup.bc2),&(dst.param.dt_bc), sizeof(dst.param.dt_bc)); structed_msg.msg.setup.bc2.flag= 1; //test facility aifg_ie_decode(&(predecoded.msg.setup.facility),&dst); memcpy(&(structed_msg.msg.setup.facility),&(dst.param.dt_facility), sizeof(dst.param.dt_facility)); structed_msg.msg.setup.facility.flag= 1; //progress indicator aifg_ie_decode(&(predecoded.msg.setup.progressInd),&dst); memcpy(&(structed_msg.msg.setup.progInd),&(dst.param.dt_progInd), sizeof(dst.param.dt_progInd)); structed_msg.msg.setup.progInd.flag= 1; //signal aifg_ie_decode(&(predecoded.msg.setup.signal),&dst); memcpy(&(structed_msg.msg.setup.signal),&(dst.param.dt_signal), sizeof(dst.param.dt_signal)); structed_msg.msg.setup.signal.flag= 1; //calling party BCD number aifg_ie_decode(&(predecoded.msg.setup.callingBCD),&dst); memcpy(&(structed_msg.msg.setup.callingNum),&(dst.param.dt_callingNum), sizeof(dst.param.dt_callingNum)); structed_msg.msg.setup.callingNum.flag= 1; //calling party subaddress aifg_ie_decode(&(predecoded.msg.setup.callingSubaddr),&dst); memcpy(&(structed_msg.msg.setup.callingSubAddr),&(dst.param.dt_callingSubAddr), sizeof(dst.param.dt_callingSubAddr)); structed_msg.msg.setup.callingSubAddr.flag= 1; //called party BCD number aifg_ie_decode(&(predecoded.msg.setup.calledBCD),&dst); memcpy(&(structed_msg.msg.setup.calledNum),&(dst.param.dt_calledNum), sizeof(dst.param.dt_calledNum)); structed_msg.msg.setup.calledNum.flag= 1; //called party subaddress aifg_ie_decode(&(predecoded.msg.setup.calledSubaddr),&dst); memcpy(&(structed_msg.msg.setup.calledSubAddr),&(dst.param.dt_calledSubAddr), sizeof(dst.param.dt_calledSubAddr)); structed_msg.msg.setup.calledSubAddr.flag= 1; //redirecting party BCD aifg_ie_decode(&(predecoded.msg.setup.redirBCD),&dst); memcpy(&(structed_msg.msg.setup.redirNum),&(dst.param.dt_redirNum), sizeof(dst.param.dt_redirNum)); structed_msg.msg.setup.redirNum.flag= 1; //redirecting party subaddr aifg_ie_decode(&(predecoded.msg.setup.redirSubaddr),&dst); memcpy(&(structed_msg.msg.setup.redirSubAddr),&(dst.param.dt_redirSubAddr), sizeof(dst.param.dt_redirSubAddr)); structed_msg.msg.setup.redirSubAddr.flag= 1; //LLC repeat indicator aifg_ie_decode(&(predecoded.msg.setup.reptInd_llc),&dst); memcpy(&(structed_msg.msg.setup.llc_rpInd),&(dst.param.dt_rpInd), sizeof(dst.param.dt_rpInd)); structed_msg.msg.setup.llc_rpInd.flag= 1; //low layer compatibility 1 aifg_ie_decode(&(predecoded.msg.setup.lowLComp1),&dst); memcpy(&(structed_msg.msg.setup.loComp1),&(dst.param.dt_loComp), sizeof(dst.param.dt_loComp)); structed_msg.msg.setup.loComp1.flag= 1; //low layer compatibility 2 aifg_ie_decode(&(predecoded.msg.setup.lowLComp2),&dst); memcpy(&(structed_msg.msg.setup.loComp2),&(dst.param.dt_loComp), sizeof(dst.param.dt_loComp)); structed_msg.msg.setup.loComp2.flag= 1; //HLC repeat indicator aifg_ie_decode(&(predecoded.msg.setup.reptInd_hlc),&dst); memcpy(&(structed_msg.msg.setup.hlc_rpInd),&(dst.param.dt_rpInd), sizeof(dst.param.dt_rpInd)); structed_msg.msg.setup.hlc_rpInd.flag= 1; //high layer compatibility 1 aifg_ie_decode(&(predecoded.msg.setup.highLComp1),&dst); memcpy(&(structed_msg.msg.setup.hiComp1),&(dst.param.dt_hiComp), sizeof(dst.param.dt_hiComp)); structed_msg.msg.setup.hiComp1.flag= 1; //high layer compatibility 2 aifg_ie_decode(&(predecoded.msg.setup.highLComp2),&dst); memcpy(&(structed_msg.msg.setup.hiComp2),&(dst.param.dt_hiComp), sizeof(dst.param.dt_hiComp)); structed_msg.msg.setup.hiComp2.flag= 1; //user-user aifg_ie_decode(&(predecoded.msg.setup.user_user),&dst); memcpy(&(structed_msg.msg.setup.uu),&(dst.param.dt_uu), sizeof(dst.param.dt_uu)); structed_msg.msg.setup.uu.flag= 1; //priority aifg_ie_decode(&(predecoded.msg.setup.priority),&dst); memcpy(&(structed_msg.msg.setup.priority),&(dst.param.dt_priority), sizeof(dst.param.dt_priority)); structed_msg.msg.setup.priority.flag= 1; //alert aifg_ie_decode(&(predecoded.msg.setup.alert),&dst); memcpy(&(structed_msg.msg.setup.alertPattern),&(dst.param.dt_alertPattern), sizeof(dst.param.dt_alertPattern)); structed_msg.msg.setup.alertPattern.flag= 1; msg_len = aifg_msg_sd_setup(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,0x80); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[74][4], msg_len)); //for unit test memcpy(&bm_setup, &structed_msg, sizeof(structed_msg)); } void test_aifg_msg_modify() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[75], &predecoded); structed_msg.id = AIFG_MSG_ID_MODIFY; //bearer capability aifg_ie_decode(&(predecoded.msg.modify.bearCap),&dst); memcpy(&(structed_msg.msg.modify.bc),&(dst.param.dt_bc), sizeof(dst.param.dt_bc)); structed_msg.msg.modify.bc.flag= 1; //low layer compatibility aifg_ie_decode(&(predecoded.msg.modify.lowLComp),&dst); memcpy(&(structed_msg.msg.modify.loComp),&(dst.param.dt_loComp), sizeof(dst.param.dt_loComp)); structed_msg.msg.modify.loComp.flag= 1; //high layer compatibility aifg_ie_decode(&(predecoded.msg.modify.highLComp),&dst); memcpy(&(structed_msg.msg.modify.hiComp),&(dst.param.dt_hiComp), sizeof(dst.param.dt_hiComp)); structed_msg.msg.modify.hiComp.flag= 1; //reverse call setup direction aifg_ie_decode(&(predecoded.msg.modify.revCallSetDir),&dst); memcpy(&(structed_msg.msg.modify.revCallDir),&(dst.param.dt_revCallDir), sizeof(dst.param.dt_revCallDir)); structed_msg.msg.modify.revCallDir.flag= 1; msg_len = aifg_msg_sd_modify(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,14); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[75][4], msg_len)); } void test_aifg_msg_modifyCmp() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[76], &predecoded); structed_msg.id = AIFG_MSG_ID_MODIFY_CMP; //bearer capability aifg_ie_decode(&(predecoded.msg.modifyComplete.bearCap),&dst); memcpy(&(structed_msg.msg.modifyCmp.bc),&(dst.param.dt_bc), sizeof(dst.param.dt_bc)); structed_msg.msg.modifyCmp.bc.flag= 1; //low layer compatibility aifg_ie_decode(&(predecoded.msg.modifyComplete.lowLComp),&dst); memcpy(&(structed_msg.msg.modifyCmp.loComp),&(dst.param.dt_loComp), sizeof(dst.param.dt_loComp)); structed_msg.msg.modifyCmp.loComp.flag= 1; //high layer compatibility aifg_ie_decode(&(predecoded.msg.modifyComplete.highLComp),&dst); memcpy(&(structed_msg.msg.modifyCmp.hiComp),&(dst.param.dt_hiComp), sizeof(dst.param.dt_hiComp)); structed_msg.msg.modifyCmp.hiComp.flag= 1; //reverse call setup direction aifg_ie_decode(&(predecoded.msg.modifyComplete.revCallSetDir),&dst); memcpy(&(structed_msg.msg.modifyCmp.revCallDir),&(dst.param.dt_revCallDir), sizeof(dst.param.dt_revCallDir)); structed_msg.msg.modifyCmp.revCallDir.flag= 1; msg_len = aifg_msg_sd_modifyCmp(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,14); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[76][4], msg_len)); } void test_aifg_msg_modifyRej() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[77], &predecoded); structed_msg.id = AIFG_MSG_ID_MODIFY_REJECT; //bearer capability aifg_ie_decode(&(predecoded.msg.modifyRej.bearCap),&dst); memcpy(&(structed_msg.msg.modifyRej.bc),&(dst.param.dt_bc), sizeof(dst.param.dt_bc)); structed_msg.msg.modifyRej.bc.flag= 1; //cause aifg_ie_decode(&(predecoded.msg.modifyRej.cause),&dst); memcpy(&(structed_msg.msg.modifyRej.cause),&(dst.param.dt_cause), sizeof(dst.param.dt_cause)); structed_msg.msg.modifyRej.cause.flag= 1; //low layer compatibility aifg_ie_decode(&(predecoded.msg.modifyRej.lowLComp),&dst); memcpy(&(structed_msg.msg.modifyRej.loComp),&(dst.param.dt_loComp), sizeof(dst.param.dt_loComp)); structed_msg.msg.modifyRej.loComp.flag= 1; //high layer compatibility aifg_ie_decode(&(predecoded.msg.modifyRej.highLComp),&dst); memcpy(&(structed_msg.msg.modifyRej.hiComp),&(dst.param.dt_hiComp), sizeof(dst.param.dt_hiComp)); structed_msg.msg.modifyRej.hiComp.flag= 1; msg_len = aifg_msg_sd_modifyRej(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,18); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[77][4], msg_len)); } void test_aifg_msg_userInfo() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[78], &predecoded); structed_msg.id = AIFG_MSG_ID_USER_INFO; //user-user aifg_ie_decode(&(predecoded.msg.userInfo.user_user),&dst); memcpy(&(structed_msg.msg.userInfo.uu),&(dst.param.dt_uu), sizeof(dst.param.dt_uu)); structed_msg.msg.userInfo.uu.flag= 1; //more data aifg_ie_decode(&(predecoded.msg.userInfo.moreDate),&dst); memcpy(&(structed_msg.msg.userInfo.moreData),&(dst.param.dt_moreData), sizeof(dst.param.dt_moreData)); structed_msg.msg.userInfo.moreData.flag= 1; msg_len = aifg_msg_sd_userInfo(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,6); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[78][4], msg_len)); } void test_aifg_msg_holdRej() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[79], &predecoded); structed_msg.id = AIFG_MSG_ID_HOLD_REJECT; //cause aifg_ie_decode(&(predecoded.msg.holdRej.cause),&dst); memcpy(&(structed_msg.msg.holdRej.cause),&(dst.param.dt_cause), sizeof(dst.param.dt_cause)); structed_msg.msg.holdRej.cause.flag= 1; msg_len = aifg_msg_sd_holdRej(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,6); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[79][4], msg_len)); } void test_aifg_msg_retrieveRej() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[80], &predecoded); structed_msg.id = AIFG_MSG_ID_RETRIEVE_REJECT; //cause aifg_ie_decode(&(predecoded.msg.retrieveRej.cause),&dst); memcpy(&(structed_msg.msg.retrieveRej.cause),&(dst.param.dt_cause), sizeof(dst.param.dt_cause)); structed_msg.msg.retrieveRej.cause.flag= 1; msg_len = aifg_msg_sd_retrieveRej(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,6); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[80][4], msg_len)); } void test_aifg_msg_disconnect() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[81], &predecoded); structed_msg.id = AIFG_MSG_ID_DISCONNECT; //cause aifg_ie_decode(&(predecoded.msg.disconnect.cause),&dst); memcpy(&(structed_msg.msg.disconnect.cause),&(dst.param.dt_cause), sizeof(dst.param.dt_cause)); structed_msg.msg.disconnect.cause.flag= 1; // test facility aifg_ie_decode(&(predecoded.msg.disconnect.facility),&dst); memcpy(&(structed_msg.msg.disconnect.facility),&(dst.param.dt_facility), sizeof(dst.param.dt_facility)); structed_msg.msg.disconnect.facility.flag= 1; //progress indicator aifg_ie_decode(&(predecoded.msg.disconnect.progressInd),&dst); memcpy(&(structed_msg.msg.disconnect.progInd),&(dst.param.dt_progInd), sizeof(dst.param.dt_progInd)); structed_msg.msg.disconnect.progInd.flag= 1; //user-user aifg_ie_decode(&(predecoded.msg.disconnect.user_user),&dst); memcpy(&(structed_msg.msg.disconnect.uu),&(dst.param.dt_uu), sizeof(dst.param.dt_uu)); structed_msg.msg.disconnect.uu.flag= 1; msg_len = aifg_msg_sd_disconnect(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,0x41); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[81][4], msg_len)); } void test_aifg_msg_release() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[82], &predecoded); structed_msg.id = AIFG_MSG_ID_RELEASE; //cause 1 aifg_ie_decode(&(predecoded.msg.release.cause1),&dst); memcpy(&(structed_msg.msg.release.cause1),&(dst.param.dt_cause), sizeof(dst.param.dt_cause)); structed_msg.msg.release.cause1.flag= 1; //cause 2 aifg_ie_decode(&(predecoded.msg.release.cause2),&dst); memcpy(&(structed_msg.msg.release.cause2),&(dst.param.dt_cause), sizeof(dst.param.dt_cause)); structed_msg.msg.release.cause2.flag= 1; // test facility aifg_ie_decode(&(predecoded.msg.release.facility),&dst); memcpy(&(structed_msg.msg.release.facility),&(dst.param.dt_facility), sizeof(dst.param.dt_facility)); structed_msg.msg.release.facility.flag= 1; //user-user aifg_ie_decode(&(predecoded.msg.release.user_user),&dst); memcpy(&(structed_msg.msg.release.uu),&(dst.param.dt_uu), sizeof(dst.param.dt_uu)); structed_msg.msg.release.uu.flag= 1; msg_len = aifg_msg_sd_release(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,0x44); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[82][4], msg_len)); } void test_aifg_msg_releaseCmp() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[83], &predecoded); structed_msg.id = AIFG_MSG_ID_RELEASE_CMP; //cause aifg_ie_decode(&(predecoded.msg.releaseComp.cause),&dst); memcpy(&(structed_msg.msg.releaseCmp.cause),&(dst.param.dt_cause), sizeof(dst.param.dt_cause)); structed_msg.msg.releaseCmp.cause.flag= 1; //test facility aifg_ie_decode(&(predecoded.msg.releaseComp.facility),&dst); memcpy(&(structed_msg.msg.releaseCmp.facility),&(dst.param.dt_facility), sizeof(dst.param.dt_facility)); structed_msg.msg.releaseCmp.facility.flag= 1; //user-user aifg_ie_decode(&(predecoded.msg.releaseComp.user_user),&dst); memcpy(&(structed_msg.msg.releaseCmp.uu),&(dst.param.dt_uu), sizeof(dst.param.dt_uu)); structed_msg.msg.releaseCmp.uu.flag= 1; msg_len = aifg_msg_sd_releaseCmp(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,0x3e); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[83][4], msg_len)); } void test_aifg_msg_congestCtrl() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[84], &predecoded); structed_msg.id = AIFG_MSG_ID_CONGESTION_CTRL; //congestion level aifg_ie_decode(&(predecoded.msg.congestCtrl.congestLev),&dst); memcpy(&(structed_msg.msg.congestCtrl.congestLevel),&(dst.param.dt_congestLevel), sizeof(dst.param.dt_congestLevel)); structed_msg.msg.congestCtrl.congestLevel.flag= 1; //cause aifg_ie_decode(&(predecoded.msg.congestCtrl.cause),&dst); memcpy(&(structed_msg.msg.congestCtrl.cause),&(dst.param.dt_cause), sizeof(dst.param.dt_cause)); structed_msg.msg.congestCtrl.cause.flag= 1; msg_len = aifg_msg_sd_congestCtrl(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,8); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[84][4], msg_len)); } void test_aifg_msg_notify() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[85], &predecoded); structed_msg.id = AIFG_MSG_ID_NOTIFY; //notification indicator aifg_ie_decode(&(predecoded.msg.notify.notifyInd),&dst); memcpy(&(structed_msg.msg.notify.notificationInd),&(dst.param.dt_notificationInd), sizeof(dst.param.dt_notificationInd)); structed_msg.msg.notify.notificationInd.flag= 1; msg_len = aifg_msg_sd_notify(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,2); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[85][4], msg_len)); } void test_aifg_msg_status() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[86], &predecoded); structed_msg.id = AIFG_MSG_ID_STATUS; //cause aifg_ie_decode(&(predecoded.msg.status.cause),&dst); memcpy(&(structed_msg.msg.status.cause),&(dst.param.dt_cause), sizeof(dst.param.dt_cause)); structed_msg.msg.status.cause.flag= 1; //call state aifg_ie_decode(&(predecoded.msg.status.callState),&dst); memcpy(&(structed_msg.msg.status.callStat),&(dst.param.dt_callStat), sizeof(dst.param.dt_callStat)); structed_msg.msg.status.callStat.flag= 1; //auxiliary states aifg_ie_decode(&(predecoded.msg.status.auxState),&dst); memcpy(&(structed_msg.msg.status.auxStat),&(dst.param.dt_auxStat), sizeof(dst.param.dt_auxStat)); structed_msg.msg.status.auxStat.flag= 1; msg_len = aifg_msg_sd_status(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,10); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[86][4], msg_len)); } void test_aifg_msg_startDTMF() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[87], &predecoded); structed_msg.id = AIFG_MSG_ID_START_DTMF; //keypad facility aifg_ie_decode(&(predecoded.msg.startDTMF.keypadFacility),&dst); memcpy(&(structed_msg.msg.startDTMF.keypad),&(dst.param.dt_keypad), sizeof(dst.param.dt_keypad)); structed_msg.msg.startDTMF.keypad.flag= 1; msg_len = aifg_msg_sd_startDTMF(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,2); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[87][4], msg_len)); } void test_aifg_msg_startDTMF_ack() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[88], &predecoded); structed_msg.id = AIFG_MSG_ID_START_DTMF_ACK; //keypad facility aifg_ie_decode(&(predecoded.msg.startDTMFAck.keypadFacility),&dst); memcpy(&(structed_msg.msg.startDTMF_ack.keypad),&(dst.param.dt_keypad), sizeof(dst.param.dt_keypad)); structed_msg.msg.startDTMF_ack.keypad.flag= 1; msg_len = aifg_msg_sd_startDTMFAck(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,2); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[88][4], msg_len)); } void test_aifg_msg_startDTMF_rej() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[89], &predecoded); structed_msg.id = AIFG_MSG_ID_START_DTMF_REJECT; //cause aifg_ie_decode(&(predecoded.msg.startDTMFRej.cause),&dst); memcpy(&(structed_msg.msg.startDTMF_rej.cause),&(dst.param.dt_cause), sizeof(dst.param.dt_cause)); structed_msg.msg.startDTMF_rej.cause.flag= 1; msg_len = aifg_msg_sd_startDTMFRej(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,6); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[89][4], msg_len)); } //////////////////////////////// void test_aifg_msg_connectAck() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[90], &predecoded); structed_msg.id = AIFG_MSG_ID_CONNECT_ACK; msg_len = aifg_msg_sd_connectAck(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,1); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[90][4], msg_len)); } void test_aifg_msg_hold() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[91], &predecoded); structed_msg.id = AIFG_MSG_ID_HOLD; msg_len = aifg_msg_sd_hold(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,1); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[91][4], msg_len)); } void test_aifg_msg_holdAck() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[92], &predecoded); structed_msg.id = AIFG_MSG_ID_HOLD_ACK; msg_len = aifg_msg_sd_holdAck(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,1); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[92][4], msg_len)); } void test_aifg_msg_retrieve() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[93], &predecoded); structed_msg.id = AIFG_MSG_ID_RETRIEVE; msg_len = aifg_msg_sd_retrieve(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,1); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[93][4], msg_len)); } void test_aifg_msg_retrieveAck() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[94], &predecoded); structed_msg.id = AIFG_MSG_ID_RETRIEVE_ACK; msg_len = aifg_msg_sd_retrieveAck(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,1); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[94][4], msg_len)); } void test_aifg_msg_statusEnq() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[95], &predecoded); structed_msg.id = AIFG_MSG_ID_STATUS_ENQ; msg_len = aifg_msg_sd_statusEnq(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,1); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[95][4], msg_len)); } void test_aifg_msg_stopDTMF() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[96], &predecoded); structed_msg.id = AIFG_MSG_ID_STOP_DTMF; msg_len = aifg_msg_sd_stopDTMF(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,1); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[96][4], msg_len)); } void test_aifg_msg_stopDTMF_ack() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[97], &predecoded); structed_msg.id = AIFG_MSG_ID_STOP_DTMF_ACK; msg_len = aifg_msg_sd_stopDTMFAck(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,1); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[97][4], msg_len)); } void test_aifg_msg_facility() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[98], &predecoded); structed_msg.id = AIFG_MSG_ID_FACILITY; //facility aifg_ie_decode(&(predecoded.msg.facility.facility),&dst); memcpy(&(structed_msg.msg.facility.facility),&(dst.param.dt_facility), sizeof(dst.param.dt_facility)); structed_msg.msg.facility.facility.flag= 1; msg_len = aifg_msg_sd_facility(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,0x32); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[98][4], msg_len)); } void test_aifg_msg_disconnect_mobileToNet() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); //test aifg_msg_proc(msgsrc[99], &predecoded); structed_msg.id = AIFG_MSG_ID_DISCONNECT; //cause aifg_ie_decode(&(predecoded.msg.disconnect.cause),&dst); memcpy(&(structed_msg.msg.disconnect.cause),&(dst.param.dt_cause), sizeof(dst.param.dt_cause)); structed_msg.msg.disconnect.cause.flag= 1; //facility aifg_ie_decode(&(predecoded.msg.disconnect.facility),&dst); memcpy(&(structed_msg.msg.disconnect.facility),&(dst.param.dt_facility), sizeof(dst.param.dt_facility)); structed_msg.msg.disconnect.facility.flag= 1; //user-user aifg_ie_decode(&(predecoded.msg.disconnect.user_user),&dst); memcpy(&(structed_msg.msg.disconnect.uu),&(dst.param.dt_uu), sizeof(dst.param.dt_uu)); structed_msg.msg.disconnect.uu.flag= 1; //SS version aifg_ie_decode(&(predecoded.msg.disconnect.ssVer),&dst); memcpy(&(structed_msg.msg.disconnect.ssVer),&(dst.param.dt_ssVer), sizeof(dst.param.dt_ssVer)); structed_msg.msg.disconnect.ssVer.flag= 1; msg_len = aifg_msg_sd_disconnect(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len,0x40); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[99][4], msg_len)); } /* void test_aifg_msg_pagingResp() { memset(&l3Info,0,sizeof(l3Info)); memset(&predecode_l3msg,0,sizeof(predecode_l3msg)); //test aifg_msg_decode_embeded_l3msg(msgsrc[100], &predecode_l3msg); l3Info.id = AIFG_MSG_ID_PAGING_RESP; //ciphering key sequence number aifg_ie_decode(&(predecode_l3msg.msg.pagingResp.cipherKeySeq),&dst); memcpy(&(l3Info.msg.pagingResp.cipherKey),&(dst.param.dt_cipherKey), sizeof(dst.param.dt_cipherKey)); l3Info.msg.pagingResp.cipherKey.flag= 1; //Mobile Station Classmark 2 aifg_ie_decode(&(predecode_l3msg.msg.pagingResp.cm2),&dst); memcpy(&l3Info.msg.pagingResp.cmInfo2,&dst.param.dt_cmInfo2, sizeof(dst.param.dt_cmInfo2)); l3Info.msg.pagingResp.cmInfo2.flag= 1; //mobile identity aifg_ie_decode(&(predecode_l3msg.msg.pagingResp.mobileId),&dst); memcpy(&(l3Info.msg.pagingResp.mobileId),&(dst.param.mobileId), sizeof(dst.param.mobileId)); l3Info.msg.pagingResp.mobileId.flag= 1; msg_len = aifg_msg_encode_embeded_l3msg(&l3Info, buffer); CU_ASSERT_EQUAL(msg_len,16); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[100][0], msg_len)); //for unit test memcpy(&rr_pagingResp, &structed_msg, sizeof(structed_msg)); } */ void test_aifg_msg_pagingResp() { memset(&structed_msg,0,sizeof(structed_msg)); memset(&predecoded,0,sizeof(predecoded)); memset(&l3Info,0,sizeof(l3Info)); //test aifg_msg_proc(msgsrc[100], &predecoded); structed_msg.id = AIFG_MSG_ID_L3_INFO; //cell identifier aifg_ie_decode(&(predecoded.msg.completeL3Info.cellId),&dst); memcpy(&(structed_msg.msg.completeL3Info.cellId),&(dst.param.bm_cellId), sizeof(dst.param.bm_cellId)); structed_msg.msg.completeL3Info.cellId.flag= 1; //layer 3 infomation //Paging response structed_msg.msg.completeL3Info.l3Info.ptr = &msgsrc[100][10]; structed_msg.msg.completeL3Info.l3Info.len = 16; /* l3Info.id = AIFG_MSG_ID_PAGING_RESP; //ciphering key sequence number aifg_ie_decode(&(predecoded.msg.completeL3Info.l3msg.msg.pagingResp.cipherKeySeq),&dst); memcpy(&(l3Info.msg.pagingResp.cipherKey),&(dst.param.dt_cipherKey), sizeof(dst.param.dt_cipherKey)); l3Info.msg.pagingResp.cipherKey.flag= 1; //Mobile Station Classmark 2 aifg_ie_decode(&(predecoded.msg.completeL3Info.l3msg.msg.pagingResp.cm2),&dst); memcpy(&l3Info.msg.pagingResp.cmInfo2,&dst.param.dt_cmInfo2, sizeof(dst.param.dt_cmInfo2)); l3Info.msg.pagingResp.cmInfo2.flag= 1; //mobile identity aifg_ie_decode(&(predecoded.msg.completeL3Info.l3msg.msg.pagingResp.mobileId),&dst); memcpy(&(l3Info.msg.pagingResp.mobileId),&(dst.param.mobileId), sizeof(dst.param.mobileId)); l3Info.msg.pagingResp.mobileId.flag= 1; memcpy(&(structed_msg.msg.completeL3Info.l3Info), &l3Info, sizeof(l3Info)); */ //chosen channel aifg_ie_decode(&(predecoded.msg.completeL3Info.chosenChannel),&dst); memcpy(&(structed_msg.msg.completeL3Info.chosenChannel),&(dst.param.bm_chosenChannel), sizeof(dst.param.bm_chosenChannel)); structed_msg.msg.completeL3Info.chosenChannel.flag= 1; //LSA identity list aifg_ie_decode(&(predecoded.msg.completeL3Info.lsaIdList),&dst); memcpy(&(structed_msg.msg.completeL3Info.lsaIdList),&(dst.param.bm_lsaIdList), sizeof(dst.param.bm_lsaIdList)); structed_msg.msg.completeL3Info.lsaIdList.flag= 1; //location information aifg_ie_decode(&(predecoded.msg.completeL3Info.locInfo),&dst); memcpy(&(structed_msg.msg.completeL3Info.locInfo),&(dst.param.bm_locInfo), sizeof(dst.param.bm_locInfo)); structed_msg.msg.completeL3Info.locInfo.flag= 1; msg_len = aifg_msg_sd_completeL3Info(&structed_msg, buffer); CU_ASSERT_EQUAL(msg_len, 40); CU_ASSERT_EQUAL(0, memcmp(buffer, &msgsrc[100][2],40)); //for unit test use memcpy(&rr_pagingResp, &structed_msg, sizeof(structed_msg)); } //////////////////////////////////////////////////////////////////////////// int aifg_code_test() { CU_pSuite pSuite = NULL; ie.hi_lo_flag=0; aifg_init(); /* initialize the CUnit test registry */ if (CUE_SUCCESS != CU_initialize_registry()) goto ERR_PROC; /* add static test suite to the registry */ pSuite = CU_add_suite("Test ie encode/decode", NULL, NULL); if (NULL == pSuite) { CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_cic,src={0x01,0x02}", test_aifg_ie_bm_cic)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_resrcAvail,src={0x00,0x09,0x01,0x03,0x00,0x09,0x01,0x03,0x00,0x09,0x01,0x03,0x00,0x09,0x01,0x03,0x02,0x06,0x00,0x0b}", test_aifg_ie_bm_resrcAvail)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_cause,src={0x01,0x09}", test_aifg_ie_bm_cause)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_cause_ext,src={0x02,0x89,0x10}", test_aifg_ie_bm_cause_ext)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_cellId_00,src={0x08,0x00,0x13,0x42,0x05,0x00,0x02,0x00,0x11}", test_aifg_ie_bm_cellId_00)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_cellId_01,src={0x05,0x01,0x00,0x42,0x01,0x03}", test_aifg_ie_bm_cellId_01)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_cellId_02,src={0x03,0x02,0x00,0x22}", test_aifg_ie_bm_cellId_02)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_priority,src={0x03,0x42,0x00,0x22}", test_aifg_ie_bm_priority)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_tsmi,src={0x04,0xf7,0x03,0x12,0x2a}", test_aifg_ie_bm_tmsi)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_encryptInfo_Noencryption,src={0x01,0x01}", test_aifg_ie_bm_encryptInfo_NOencryption)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_encryptInfo_A5,src={0x09,0x12,0x08,0x15,0x34,0x67,0xa2,0x8d,0x46,0x8f}", test_aifg_ie_bm_encryptInfo_A5)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_channelType_speech,src={0X04,0X01,0X09,0X83,0X79}", test_aifg_ie_bm_channelType_speech)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_channelType_data,src={0x04,0x02,0x0a,0xf5,0x07}", test_aifg_ie_bm_channelType_data)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_extResourceInd,src={0x02}", test_aifg_ie_bm_extResourceInd)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_cmInfo2,src={0x03,0x7e,0x67,0x82}", test_aifg_ie_bm_cmInfo2)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ //to resolve /*if (NULL == CU_add_test(pSuite, "aifg_ie_bm_l3Info,src={0x04,0x05,0x21,0x3f,0x58,0xe1}", test_aifg_ie_bm_l3Info)){ CU_cleanup_registry(); goto ERR_PROC; }*/ /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_cidList_00,src={0x08,0x00,0x85,0x47,0x9c,0x67,0x24,0x3d,0x05}", test_aifg_ie_bm_cidList_00)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_cidList_01,src={0x05,0x01,0x23,0x07,0x4f,0x39}", test_aifg_ie_bm_cidList_01)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_cidList_02,src={0x03,0x02,0x77,0x64}", test_aifg_ie_bm_cidList_02)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_cidList_04,src={0x06,0x04,0x4e,0x39,0x58,0x7c,0x0a}", test_aifg_ie_bm_cidList_04)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_cidList_05,src={0x03,0x05,0x21,0xf3}", test_aifg_ie_bm_cidList_05)){//<<<<<<<<<<<<<<<<<<<<<<<<<<<< CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_cicList,src={0x04,0x32,0x12,0x8d,0x36}", test_aifg_ie_bm_cicList)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_diagnostics,src={0x04,0x03,0x0Fa,0x38,0x89}", test_aifg_ie_bm_diagnostics)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_chosenChannel,src={0x56}", test_aifg_ie_bm_chosenChannel)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_totalResrc,src={0x84,0x62,0xf2,0x7e}", test_aifg_ie_bm_totalResrc)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_triggerId,src={0x03,0x9d,0x20,0x81}", test_aifg_ie_bm_triggerId)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_mobileId,src={0x02,0x31,0xf2}", test_aifg_ie_bm_mobileId)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_circuitPoolList,src={0x05,0x01,0x02,0x03,0x04,0x05}", test_aifg_ie_bm_circuitPoolList)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_resrcSit,src={0x05,0x11,0x83,0x04,0x28,0x75}", test_aifg_ie_bm_resrcSit)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_curChannelType1,src={0x19}", test_aifg_ie_bm_curChannelType1)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_groupRef,src={0x05,0x24,0x38,0x56,0x19,0x10}", test_aifg_ie_bm_groupRef)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_lsaId,src={0x03,0x10,0x39,0xd2}", test_aifg_ie_bm_lsaId)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_lsaIdList,src={0x07,0x01,0x22,0xe4,0x31,0x57,0x69,0x83}", test_aifg_ie_bm_lsaIdList)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_lsaInfo,src={0x09,0x00,0x00,0x36,0x85,0xef,0x03,0x47,0x87,0x42}", test_aifg_ie_bm_lsaInfo)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_locInfo,src={0x03,0x15,0x49,0xf5}", test_aifg_ie_bm_locInfo)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_omcId,src={0x03,0x39,0xc4,0x08}", test_aifg_ie_bm_omcId)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_bssOldtoNew,src={0X07, ,0X01,0X02, ,0X02,0X06,0X01}", test_aifg_ie_bm_bssOldtoNew)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_periodicity,src={0Xff}", test_aifg_ie_bm_periodicity)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_msNum,src={0Xfe}", test_aifg_ie_bm_msNum)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_bandUsed,src={0x09}", test_aifg_ie_bm_bandUsed)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_rrCause,src={0X08}", test_aifg_ie_bm_rrCause)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_dlci,src={0XC2}", test_aifg_ie_bm_dlci)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_dtx,src={0x01}", test_aifg_ie_bm_dtx)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_resrcIndMethod,src={0X01}}", test_aifg_ie_bm_resrcIndMethod)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_cipherRespMode,src={0X00}", test_aifg_ie_bm_cipherRespMode)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_channelNeeded,src={0X02}", test_aifg_ie_bm_channelNeeded)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_traceType,src={0xdd}", test_aifg_ie_bm_traceType)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_traceRef,src={0x34,0x97}", test_aifg_ie_bm_traceRef)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_transId,src={0x02,0x17,0x62}", test_aifg_ie_bm_transId)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_forwardInd,src={0x02}", test_aifg_ie_bm_fowardInd)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_chosenEncrypt,src={0X03}", test_aifg_ie_bm_chosenEncrypt)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_circuitPool,src={0X10}", test_aifg_ie_bm_circuitPool)){ CU_cleanup_registry(); goto ERR_PROC; }/* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_timeInd,src={0X11}", test_aifg_ie_bm_timeInd)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_speechVer,src={0X21}", test_aifg_ie_bm_speechVer)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_queuingInd,src={0X02}", test_aifg_ie_bm_queuingInd)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_assignReq,src={0X01}", test_aifg_ie_bm_assignReq)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_eMLPP,src={0X06}", test_aifg_ie_bm_eMLPP)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_configInd,src={0x03}", test_aifg_ie_bm_configInd)){ CU_cleanup_registry(); goto ERR_PROC; } /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_bm_tmsi,src={0X04,0X33,0X79,0X27,0X46}", test_aifg_ie_bm_tmsi)){ CU_cleanup_registry(); goto ERR_PROC; } ////////////////////////TEST DTAP//////////////////////////////// /* add test cases to test suite */ if (NULL == CU_add_test(pSuite, "aifg_ie_dt_broadcastRef,src={0x10,0x34,0x78,0x69,0x20}", test_aifg_ie_dt_broadcastRef)){ CU_cleanup_registry(); goto ERR_PROC; } if (NULL == CU_add_test(pSuite, "aifg_ie_dt_cmInfo1,src={0x11}", test_aifg_ie_dt_cmInfo1)){ CU_cleanup_registry(); goto ERR_PROC; } if (NULL == CU_add_test(pSuite, "aifg_ie_dt_cmInfo2,src={0x03,0x33,0x22,0x8d}", test_aifg_ie_dt_cmInfo2)){ CU_cleanup_registry(); goto ERR_PROC; } if (NULL == CU_add_test(pSuite, "aifg_ie_dt_mobileId,src={0x02,0x73,0xf2}", test_aifg_ie_dt_mobileId)){ CU_cleanup_registry(); goto ERR_PROC; } if (NULL == CU_add_test(pSuite, "aifg_ie_dt_lai,src={0x78,0xf3,0x64,0x31,0x02}", test_aifg_ie_dt_lai)){ CU_cleanup_registry(); goto ERR_PROC; } if (NULL == CU_add_test(pSuite, "aifg_ie_dt_luType,src={0x09}", test_aifg_ie_dt_luType)){ CU_cleanup_registry(); goto ERR_PROC; } if (NULL == CU_add_test(pSuite, "aifg_ie_dt_nwName,src={0x03,0x91,0x35,0x64}", test_aifg_ie_dt_nwName)){ CU_cleanup_registry(); goto ERR_PROC; } if (NULL == CU_add_test(pSuite, "aifg_ie_dt_tzTime,src={0x07,0x04,0x12,0x0a,0x32,0x14,0xdd}", test_aifg_ie_dt_tzTime)){ CU_cleanup_registry(); goto ERR_PROC; } if (NULL == CU_add_test(pSuite, "aifg_ie_dt_progInd,src={0x02,0xc0,0x82}", test_aifg_ie_dt_progInd)){ CU_cleanup_registry(); goto ERR_PROC; } if (NULL == CU_add_test(pSuite, "aifg_ie_dt_uu,src={0x03,0x01,0x19,0x83}", test_aifg_ie_dt_uu)){ CU_cleanup_registry(); goto ERR_PROC; } if (NULL == CU_add_test(pSuite, "aifg_ie_dt_bc_0,src={0x02,0x20,0x02}", test_aifg_ie_dt_bc_0)){ CU_cleanup_registry(); goto ERR_PROC; } if (NULL == CU_add_test(pSuite, "aifg_ie_dt_bc,src={0x13,0xa3,0xca,0x1a,0x00,0xe4,0x21,0x53,0x5b,0x60,0x21,0x5f,0x47,0xc6}", test_aifg_ie_dt_bc)){ CU_cleanup_registry(); goto ERR_PROC; } if (NULL == CU_add_test(pSuite, "aifg_ie_dt_cause,src={0x04,0x47,0xdd,0x96,0x81}", test_aifg_ie_dt_cause)){ CU_cleanup_registry(); goto ERR_PROC; } if (NULL == CU_add_test(pSuite, "aifg_ie_dt_ccCap,src={0x01,0x03}", test_aifg_ie_dt_ccCap)){ CU_cleanup_registry(); goto ERR_PROC; } if (NULL == CU_add_test(pSuite, "aifg_ie_dt_connNum,src={0x04,0x28,0xa3,0x89,0x37}", test_aifg_ie_dt_connNum)){ CU_cleanup_registry(); goto ERR_PROC; } if (NULL == CU_add_test(pSuite, "aifg_ie_dt_connSubAddr,src={0x03,0x88,0x50,0x43}", test_aifg_ie_dt_connSubAddr)){ CU_cleanup_registry(); goto ERR_PROC; } if (NULL == CU_add_test(pSuite, "aifg_ie_dt_ssVer,src={0x01,0xdd}", test_aifg_ie_dt_ssVer)){ CU_cleanup_registry(); goto ERR_PROC; } if (NULL == CU_add_test(pSuite, "aifg_ie_dt_hiComp,src={0x03,0xa8,0x6e,0xb4}", test_aifg_ie_dt_hiComp)){ CU_cleanup_registry(); goto ERR_PROC; } if (NULL == CU_add_test(pSuite, "aifg_ie_dt_loComp,src={0x02,0xdd,0xde}", test_aifg_ie_dt_loComp)){ CU_cleanup_registry(); goto ERR_PROC; } if (NULL == CU_add_test(pSuite, "aifg_ie_dt_callStat,src={0xc2}", test_aifg_ie_dt_callStat)){ CU_cleanup_registry(); goto ERR_PROC; } if (NULL == CU_add_test(pSuite, "aifg_ie_dt_auxStat,src={0x01,0x86}", test_aifg_ie_dt_auxStat)){ CU_cleanup_registry(); goto ERR_PROC; } if (NULL == CU_add_test(pSuite, "aifg_ie_dt_lsaId,src={0x03,0x11,0x22,0x33}", test_aifg_ie_dt_lsaId)){ CU_cleanup_registry(); goto ERR_PROC; } if (NULL == CU_add_test(pSuite, "aifg_ie_dt_rejectCause,src={0X02}", test_aifg_ie_dt_rejectCause)){ CU_cleanup_registry(); goto ERR_PROC; } if (NULL == CU_add_test(pSuite, "aifg_ie_dt_cmType,src={0X0B}", test_aifg_ie_dt_cmType)){ CU_cleanup_registry(); goto ERR_PROC; } if (NULL == CU_add_test(pSuite, "aifg_ie_dt_cipherKey,src={0X01}", test_aifg_ie_dt_cipherKey)){ CU_cleanup_registry(); goto ERR_PROC; } if (NULL == CU_add_test(pSuite, "aifg_ie_dt_priority,src={0X05}", test_aifg_ie_dt_priority)){ CU_cleanup_registry(); goto ERR_PROC; } if (NULL == CU_add_test(pSuite, "aifg_ie_dt_idType,src={0X03}", test_aifg_ie_dt_idType)){ CU_cleanup_registry(); goto ERR_PROC; }if (NULL == CU_add_test(pSuite, "aifg_ie_dt_congestLevel,src={0X0F}", test_aifg_ie_dt_congestLevel)){ CU_cleanup_registry(); goto ERR_PROC; }if (NULL == CU_add_test(pSuite, "aifg_ie_dt_notificationInd,src={0x80}", test_aifg_ie_dt_notificationInd)){ CU_cleanup_registry(); goto ERR_PROC; }if (NULL == CU_add_test(pSuite, "aifg_ie_dt_signal,src={0x08}", test_aifg_ie_dt_signal)){ CU_cleanup_registry(); goto ERR_PROC; } if (NULL == CU_add_test(pSuite, "aifg_ie_dt_alertPattern,src={0X01,0X07}", test_aifg_ie_dt_alertPattern)){ CU_cleanup_registry(); goto ERR_PROC; } if (NULL == CU_add_test(pSuite, "aifg_ie_dt_keypad,src={0X0D}", test_aifg_ie_dt_keypad)){ CU_cleanup_registry(); goto ERR_PROC; } if (NULL == CU_add_test(pSuite, "aifg_ie_dt_timeZone,src={0XDD}", test_aifg_ie_dt_timeZone)){ CU_cleanup_registry(); goto ERR_PROC; } if (NULL == CU_add_test(pSuite, "aifg_ie_dt_authRAND,src={0X00,0X11,0X22,0X33,0X44,0X55,0X66,0X77,0X88,0X99,0XAA,0XBB,0XCC,0XDD,0XEE,0XFF}", test_aifg_ie_dt_authRAND)){ CU_cleanup_registry(); goto ERR_PROC; } if (NULL == CU_add_test(pSuite, "aifg_ie_dt_authSRES,src={0X11,0X12,0X13,0X14}", test_aifg_ie_dt_authSRES)){ CU_cleanup_registry(); goto ERR_PROC; } if (NULL == CU_add_test(pSuite, "aifg_ie_dt_rpInd,src={0X01}", test_aifg_ie_dt_rpInd)){ CU_cleanup_registry(); goto ERR_PROC; } if (NULL == CU_add_test(pSuite, "aifg_ie_dt_facility", test_aifg_ie_dt_facility)){ CU_cleanup_registry(); goto ERR_PROC; } //message decode/encode test /* add static test suite to the registry */ pSuite = CU_add_suite("Test message encode/decode", NULL, NULL); if (NULL == pSuite) { CU_cleanup_registry(); goto ERR_PROC; } //assign request if (NULL == CU_add_test(pSuite, "assign request", test_aifg_msg_assignReq)){ CU_cleanup_registry(); goto ERR_PROC; } //assign complete if (NULL == CU_add_test(pSuite, "assign complete", test_aifg_msg_assignComplete)){ CU_cleanup_registry(); goto ERR_PROC; } //assign failure if (NULL == CU_add_test(pSuite, "assign failure", test_aifg_msg_assignFailure)){ CU_cleanup_registry(); goto ERR_PROC; } //block if (NULL == CU_add_test(pSuite, "block", test_aifg_msg_block)){ CU_cleanup_registry(); goto ERR_PROC; } //blocking acknowledge // if (NULL == CU_add_test(pSuite, "blocking acknowledge", test_aifg_msg_blockAck)){ // CU_cleanup_registry(); // goto ERR_PROC; // } //unblock if (NULL == CU_add_test(pSuite, "unblock", test_aifg_msg_unblock)){ CU_cleanup_registry(); goto ERR_PROC; } //unblock Ack // if (NULL == CU_add_test(pSuite, "unblock acknowledge", test_aifg_msg_unblockAck)){ // CU_cleanup_registry(); // goto ERR_PROC; // } //handover required if (NULL == CU_add_test(pSuite, "handover required", test_aifg_msg_HORequired)){ CU_cleanup_registry(); goto ERR_PROC; } /* //handover request if (NULL == CU_add_test(pSuite, "handover request", test_aifg_msg_HORequest)){ CU_cleanup_registry(); goto ERR_PROC; } //handover request ack if (NULL == CU_add_test(pSuite, "handover request Ack", test_aifg_msg_HORequestAck)){ CU_cleanup_registry(); goto ERR_PROC; } //handover command if (NULL == CU_add_test(pSuite, "handover command", test_aifg_msg_HOCmd)){ CU_cleanup_registry(); goto ERR_PROC; } //handover complete if (NULL == CU_add_test(pSuite, "handover complete", test_aifg_msg_HOComplete)){ CU_cleanup_registry(); goto ERR_PROC; } */ //handover candidate enquire if (NULL == CU_add_test(pSuite, "handover candidate enquire", test_aifg_msg_HOCandidateEnq)){ CU_cleanup_registry(); goto ERR_PROC; } //handover candidate response if (NULL == CU_add_test(pSuite, "handover candidate response", test_aifg_msg_HOCandidateResp)){ CU_cleanup_registry(); goto ERR_PROC; } //handover failure if (NULL == CU_add_test(pSuite, "handover failure", test_aifg_msg_HOFailure)){ CU_cleanup_registry(); goto ERR_PROC; } //handover performed if (NULL == CU_add_test(pSuite, "handover performed", test_aifg_msg_HOPerformed)){ CU_cleanup_registry(); goto ERR_PROC; } //handover reject if (NULL == CU_add_test(pSuite, "handover reject", test_aifg_msg_HOReject)){ CU_cleanup_registry(); goto ERR_PROC; } //handover succeed if (NULL == CU_add_test(pSuite, "handover succeed", test_aifg_msg_HOSucceed)){ CU_cleanup_registry(); goto ERR_PROC; } //handover detect if (NULL == CU_add_test(pSuite, "handover detect", test_aifg_msg_HODetect)){ CU_cleanup_registry(); goto ERR_PROC; } //resource request if (NULL == CU_add_test(pSuite, "resource request", test_aifg_msg_resrcReq)){ CU_cleanup_registry(); goto ERR_PROC; } //resource indication if (NULL == CU_add_test(pSuite, "resource indication", test_aifg_msg_resrcInd)){ CU_cleanup_registry(); goto ERR_PROC; } //paging if (NULL == CU_add_test(pSuite, "paging", test_aifg_msg_paging)){ CU_cleanup_registry(); goto ERR_PROC; } //clear request if (NULL == CU_add_test(pSuite, "clear request", test_aifg_msg_clearReq)){ CU_cleanup_registry(); goto ERR_PROC; } //clear command if (NULL == CU_add_test(pSuite, "clear command", test_aifg_msg_clearCmd)){ CU_cleanup_registry(); goto ERR_PROC; } //reset if (NULL == CU_add_test(pSuite, "reset", test_aifg_msg_reset)){ CU_cleanup_registry(); goto ERR_PROC; } //overload if (NULL == CU_add_test(pSuite, "overload", test_aifg_msg_overload)){ CU_cleanup_registry(); goto ERR_PROC; } //MSC invoke trace if (NULL == CU_add_test(pSuite, "MSC invoke trace", test_aifg_msg_mscInvokeTrace)){ CU_cleanup_registry(); goto ERR_PROC; } //BSC invoke trace if (NULL == CU_add_test(pSuite, "BSC invoke trace", test_aifg_msg_bscInvokeTrace)){ CU_cleanup_registry(); goto ERR_PROC; } //classmark update if (NULL == CU_add_test(pSuite, "classmark update", test_aifg_msg_cmUpdate)){ CU_cleanup_registry(); goto ERR_PROC; } //cipher mode command if (NULL == CU_add_test(pSuite, "cipher mode command", test_aifg_msg_cipherModeCmd)){ CU_cleanup_registry(); goto ERR_PROC; } //cipher mode complete if (NULL == CU_add_test(pSuite, "cipher mode complete", test_aifg_msg_cipherModeComplete)){ CU_cleanup_registry(); goto ERR_PROC; } //cipher mode reject if (NULL == CU_add_test(pSuite, "cipher mode reject", test_aifg_msg_cipherModeReject)){ CU_cleanup_registry(); goto ERR_PROC; } //complete layer 3 information if (NULL == CU_add_test(pSuite, "complete layer 3 information", test_aifg_msg_completeL3Info)){ CU_cleanup_registry(); goto ERR_PROC; } //SAPI_n_reject if (NULL == CU_add_test(pSuite, "SAPI_n_Reject", test_aifg_msg_SAPI_n_Reject)){ CU_cleanup_registry(); goto ERR_PROC; } //reset circuit if (NULL == CU_add_test(pSuite, "reset circuit", test_aifg_msg_resetCircuit)){ CU_cleanup_registry(); goto ERR_PROC; } //reset circuit Ack // if (NULL == CU_add_test(pSuite, "reset circuit Ack", test_aifg_msg_resetCircuitAck)){ // CU_cleanup_registry(); // goto ERR_PROC; // } //circuit group block if (NULL == CU_add_test(pSuite, "circuit group block", test_aifg_msg_circuitGrpBlk)){ CU_cleanup_registry(); goto ERR_PROC; } //circuit group block Ack // if (NULL == CU_add_test(pSuite, "circuit group block Ack", test_aifg_msg_circuitGrpBlkAck)){ // CU_cleanup_registry(); // goto ERR_PROC; // } //circuit group unblock if (NULL == CU_add_test(pSuite, "circuit group unblock", test_aifg_msg_circuitGrpUnblk)){ CU_cleanup_registry(); goto ERR_PROC; } //circuit group unblock Ack // if (NULL == CU_add_test(pSuite, "circuit group unblock Ack", test_aifg_msg_circuitGrpUnblkAck)){ // CU_cleanup_registry(); // goto ERR_PROC; // } //confusion if (NULL == CU_add_test(pSuite, "confusion", test_aifg_msg_confusion)){ CU_cleanup_registry(); goto ERR_PROC; } //unequipped circuit if (NULL == CU_add_test(pSuite, "unequipped circuit", test_aifg_msg_unequippedCircuit)){ CU_cleanup_registry(); goto ERR_PROC; } //load indication if (NULL == CU_add_test(pSuite, "load indication", test_aifg_msg_loadIndication)){ CU_cleanup_registry(); goto ERR_PROC; } //suspend if (NULL == CU_add_test(pSuite, "suspend", test_aifg_msg_suspend)){ CU_cleanup_registry(); goto ERR_PROC; } //resume if (NULL == CU_add_test(pSuite, "resume", test_aifg_msg_resume)){ CU_cleanup_registry(); goto ERR_PROC; } //change circuit // if (NULL == CU_add_test(pSuite, "change circuit", test_aifg_msg_changeCircuit)){ // CU_cleanup_registry(); // goto ERR_PROC; // } //change circuit Ack // if (NULL == CU_add_test(pSuite, "change circuit Ack", test_aifg_msg_changeCCAck)){ // CU_cleanup_registry(); // goto ERR_PROC; // } //location information command if (NULL == CU_add_test(pSuite, "location information command", test_aifg_msg_locCmd)){ CU_cleanup_registry(); goto ERR_PROC; } //location information report if (NULL == CU_add_test(pSuite, "location information report", test_aifg_msg_locReport)){ CU_cleanup_registry(); goto ERR_PROC; } //reset Ack if (NULL == CU_add_test(pSuite, "reset Ack", test_aifg_msg_resetAck)){ CU_cleanup_registry(); goto ERR_PROC; } //clear complete if (NULL == CU_add_test(pSuite, "clear complete", test_aifg_msg_clearComplete)){ CU_cleanup_registry(); goto ERR_PROC; } //queuing indication if (NULL == CU_add_test(pSuite, "queuing indication", test_aifg_msg_queueInd)){ CU_cleanup_registry(); goto ERR_PROC; } //classmark request if (NULL == CU_add_test(pSuite, "classmark request", test_aifg_msg_cmkRequest)){ CU_cleanup_registry(); goto ERR_PROC; } //...................................dtap................................................................ //location updating accept if (NULL == CU_add_test(pSuite, "location updating accept", test_aifg_msg_luAccept)){ CU_cleanup_registry(); goto ERR_PROC; } //classmark reject if (NULL == CU_add_test(pSuite, "classmark reject", test_aifg_msg_cmReject)){ CU_cleanup_registry(); goto ERR_PROC; } //location updating reject if (NULL == CU_add_test(pSuite, "locatin updating reject", test_aifg_msg_luAccept)){ CU_cleanup_registry(); goto ERR_PROC; } //abort if (NULL == CU_add_test(pSuite, "abort", test_aifg_msg_abort)){ CU_cleanup_registry(); goto ERR_PROC; } //MM status if (NULL == CU_add_test(pSuite, "MM status", test_aifg_msg_mmStatus)){ CU_cleanup_registry(); goto ERR_PROC; } //loaction updating request if (NULL == CU_add_test(pSuite, "location updating request", test_aifg_msg_luRequest)){ CU_cleanup_registry(); goto ERR_PROC; } //authentication request if (NULL == CU_add_test(pSuite, "authentication request", test_aifg_msg_authRequest)){ CU_cleanup_registry(); goto ERR_PROC; } //authentication response if (NULL == CU_add_test(pSuite, "authentication response", test_aifg_msg_authResp)){ CU_cleanup_registry(); goto ERR_PROC; } //identity request if (NULL == CU_add_test(pSuite, "identity request", test_aifg_msg_idRequest)){ CU_cleanup_registry(); goto ERR_PROC; } //identity response if (NULL == CU_add_test(pSuite, "identity response", test_aifg_msg_idResp)){ CU_cleanup_registry(); goto ERR_PROC; } //IMSI detach indication if (NULL == CU_add_test(pSuite, "IMSI detach indication", test_aifg_msg_imsiDetachInd)){ CU_cleanup_registry(); goto ERR_PROC; } //TMSI command if (NULL == CU_add_test(pSuite, "TMSI command", test_aifg_msg_tmsiCmd)){ CU_cleanup_registry(); goto ERR_PROC; } //CM re-establishment request if (NULL == CU_add_test(pSuite, "CM re-establishment request", test_aifg_msg_cmReEst_Request)){ CU_cleanup_registry(); goto ERR_PROC; } //CM service request if (NULL == CU_add_test(pSuite, "CM service request", test_aifg_msg_cmRequest)){ CU_cleanup_registry(); goto ERR_PROC; } //MM information if (NULL == CU_add_test(pSuite, "MM information", test_aifg_msg_mmInfo)){ CU_cleanup_registry(); goto ERR_PROC; } //alerting if (NULL == CU_add_test(pSuite, "alerting", test_aifg_msg_alert)){ CU_cleanup_registry(); goto ERR_PROC; } //call confirmed if (NULL == CU_add_test(pSuite, "call confirmed", test_aifg_msg_callConfirm)){ CU_cleanup_registry(); goto ERR_PROC; } //call proceeding if (NULL == CU_add_test(pSuite, "call proceeding", test_aifg_msg_callProceed)){ CU_cleanup_registry(); goto ERR_PROC; } //connect if (NULL == CU_add_test(pSuite, "connect", test_aifg_msg_connect)){ CU_cleanup_registry(); goto ERR_PROC; } //emergency setup if (NULL == CU_add_test(pSuite, "emergency setup", test_aifg_msg_eSetup)){ CU_cleanup_registry(); goto ERR_PROC; } //progress if (NULL == CU_add_test(pSuite, "progress", test_aifg_msg_progress)){ CU_cleanup_registry(); goto ERR_PROC; } //setupu if (NULL == CU_add_test(pSuite, "setup", test_aifg_msg_setup)){ CU_cleanup_registry(); goto ERR_PROC; } //modify if (NULL == CU_add_test(pSuite, "modify", test_aifg_msg_modify)){ CU_cleanup_registry(); goto ERR_PROC; } //modify complete if (NULL == CU_add_test(pSuite, "modify complete", test_aifg_msg_modifyCmp)){ CU_cleanup_registry(); goto ERR_PROC; } //modify reject if (NULL == CU_add_test(pSuite, "modify reject", test_aifg_msg_modifyRej)){ CU_cleanup_registry(); goto ERR_PROC; } //user information if (NULL == CU_add_test(pSuite, "user information", test_aifg_msg_userInfo)){ CU_cleanup_registry(); goto ERR_PROC; } //hold reject if (NULL == CU_add_test(pSuite, "hold reject", test_aifg_msg_holdRej)){ CU_cleanup_registry(); goto ERR_PROC; } //retrieve reject if (NULL == CU_add_test(pSuite, "retrieve reject", test_aifg_msg_retrieveRej)){ CU_cleanup_registry(); goto ERR_PROC; } //disconnect if (NULL == CU_add_test(pSuite, "disconnect", test_aifg_msg_disconnect)){ CU_cleanup_registry(); goto ERR_PROC; } //release if (NULL == CU_add_test(pSuite, "release", test_aifg_msg_release)){ CU_cleanup_registry(); goto ERR_PROC; } //release complete if (NULL == CU_add_test(pSuite, "release complete", test_aifg_msg_releaseCmp)){ CU_cleanup_registry(); goto ERR_PROC; } //congestion control if (NULL == CU_add_test(pSuite, "congestion control", test_aifg_msg_congestCtrl)){ CU_cleanup_registry(); goto ERR_PROC; } //notify if (NULL == CU_add_test(pSuite, "notify", test_aifg_msg_notify)){ CU_cleanup_registry(); goto ERR_PROC; } //status if (NULL == CU_add_test(pSuite, "status", test_aifg_msg_status)){ CU_cleanup_registry(); goto ERR_PROC; } //start DTMF if (NULL == CU_add_test(pSuite, "start DTMF", test_aifg_msg_startDTMF)){ CU_cleanup_registry(); goto ERR_PROC; } //start DTMF acknowledge if (NULL == CU_add_test(pSuite, "start DTMF acknowledge", test_aifg_msg_startDTMF_ack)){ CU_cleanup_registry(); goto ERR_PROC; } //start DTMF reject if (NULL == CU_add_test(pSuite, "start DTMF reject", test_aifg_msg_startDTMF_rej)){ CU_cleanup_registry(); goto ERR_PROC; } //connect acknowledge if (NULL == CU_add_test(pSuite, "connect acknowledge", test_aifg_msg_connectAck)){ CU_cleanup_registry(); goto ERR_PROC; } //hold if (NULL == CU_add_test(pSuite, "hold", test_aifg_msg_hold)){ CU_cleanup_registry(); goto ERR_PROC; } //hold acknowledge if (NULL == CU_add_test(pSuite, "hold acknowledge", test_aifg_msg_holdAck)){ CU_cleanup_registry(); goto ERR_PROC; } //retrieve if (NULL == CU_add_test(pSuite, "retrieve", test_aifg_msg_retrieve)){ CU_cleanup_registry(); goto ERR_PROC; } //retrieve acknowledge if (NULL == CU_add_test(pSuite, "retrieve acknowledge", test_aifg_msg_retrieveAck)){ CU_cleanup_registry(); goto ERR_PROC; } //status enquiry if (NULL == CU_add_test(pSuite, "status enquiry", test_aifg_msg_statusEnq)){ CU_cleanup_registry(); goto ERR_PROC; } //stop DTMF if (NULL == CU_add_test(pSuite, "stop DTMF", test_aifg_msg_stopDTMF)){ CU_cleanup_registry(); goto ERR_PROC; } //stop DTMF acknowledge if (NULL == CU_add_test(pSuite, "stop DTMF acknowledge", test_aifg_msg_stopDTMF_ack)){ CU_cleanup_registry(); goto ERR_PROC; } //facility if (NULL == CU_add_test(pSuite, "facility", test_aifg_msg_facility)){ CU_cleanup_registry(); goto ERR_PROC; } //disconnect(mobile station to network) if (NULL == CU_add_test(pSuite, "disconnect_mobileToNet", test_aifg_msg_disconnect_mobileToNet)){ CU_cleanup_registry(); goto ERR_PROC; } //paging response if (NULL == CU_add_test(pSuite, "paging response", test_aifg_msg_pagingResp)){ CU_cleanup_registry(); goto ERR_PROC; } /* Run all tests using the automated interface */ // CU_basic_set_mode(CU_BRM_VERBOSE); // CU_basic_run_tests(); CU_automated_run_tests(); CU_list_tests_to_file(); /* Clean up registry and return */ CU_cleanup_registry(); return 1; ERR_PROC: return 0; } //Dynamic test---------------------------------------------------------------------- //stub function definition #define MSC_SPC 0 #define BSC_SPC 1 #define MSC_PORT 4321 #define BSC_PORT 1234 #define MSC_LINK 10 #define BSC_LINK 20 int bsc_cg, msc_cg; SP_UiPriPara msg_buffer[64]; int pMsg_h = 0 ,pMsg_t = 0; aifg_msg_pre_decoded aifg_msg; static u8 ascii[16] = {0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46}; void HexToDisplay(u8 *from_hex, u8 from_len) { int i = 0; for (i = 0; i < from_len; i++) { putchar(ascii[from_hex[i] >> 4]); putchar(ascii[from_hex[i] & 0x0f]); putchar(' '); } putchar('\n'); } int PostSp ( SP_UiPriPara * pUiPriParam ) { if(pMsg_h != ((pMsg_t+1) & 0x3F)){ printf("\nSCCP SD:"); switch(pUiPriParam->uUiPri){ case N_UNITDATA_REQ: if(pUiPriParam->tPriUnion.tPriNUDataReq.tCDA.DPC == BSC_SPC) pUiPriParam->tPriUnion.tPriNUDataReq.tCGA.DPC = MSC_SPC; else pUiPriParam->tPriUnion.tPriNUDataReq.tCGA.DPC = BSC_SPC; msg_buffer[pMsg_t].uUiPri = N_UNITDATA_IND; memcpy(&msg_buffer[pMsg_t].tPriUnion.tPriNUDataInd.tCDA, &pUiPriParam->tPriUnion.tPriNUDataReq.tCDA, sizeof(pUiPriParam->tPriUnion.tPriNUDataReq.tCDA)); memcpy(&msg_buffer[pMsg_t].tPriUnion.tPriNUDataInd.tCGA, &pUiPriParam->tPriUnion.tPriNUDataReq.tCGA, sizeof(pUiPriParam->tPriUnion.tPriNUDataReq.tCGA)); memcpy(&msg_buffer[pMsg_t].tPriUnion.tPriNUDataInd.tUD, &pUiPriParam->tPriUnion.tPriNUDataReq.tUD, sizeof(pUiPriParam->tPriUnion.tPriNUDataReq.tUD)); printf("TYPE: UDT\n"); printf("%d => %d\n", pUiPriParam->tPriUnion.tPriNUDataInd.tCGA.DPC, pUiPriParam->tPriUnion.tPriNUDataInd.tCDA.DPC); printf("CONTENT: "); HexToDisplay(pUiPriParam->tPriUnion.tPriNUDataReq.tUD.aUserData, pUiPriParam->tPriUnion.tPriNUDataReq.tUD.uDataLen); break; case N_CONNECT_REQ: if(MSC_SPC == pUiPriParam->tPriUnion.tPriNConnReq.tCDA.DPC){ pUiPriParam->wConnId = BSC_LINK; msg_buffer[pMsg_t].wConnId = MSC_LINK; } else{ pUiPriParam->wConnId = MSC_LINK; msg_buffer[pMsg_t].wConnId = BSC_LINK; } msg_buffer[pMsg_t].uUiPri = N_CONNECT_IND; msg_buffer[pMsg_t].tPriUnion.tPriNConnInd.uOptFlag = 0x04; memcpy(&msg_buffer[pMsg_t].tPriUnion.tPriNConnInd.tCDA, &pUiPriParam->tPriUnion.tPriNConnReq.tCDA, sizeof(pUiPriParam->tPriUnion.tPriNConnReq.tCDA)); memcpy(&msg_buffer[pMsg_t].tPriUnion.tPriNConnInd.tUD, &pUiPriParam->tPriUnion.tPriNConnReq.tUD, sizeof(pUiPriParam->tPriUnion.tPriNUDataReq.tUD)); printf("TYPE: CR\n"); printf("CDA: %d\n", pUiPriParam->tPriUnion.tPriNConnReq.tCDA.DPC); printf("LINK ID: %d\n", pUiPriParam->wConnId); printf("CONTENT: "); HexToDisplay(pUiPriParam->tPriUnion.tPriNConnReq.tUD.aUserData, pUiPriParam->tPriUnion.tPriNConnReq.tUD.uDataLen); break; case N_CONNECT_RSP: if(pUiPriParam->wConnId == MSC_LINK) msg_buffer[pMsg_t].wConnId = BSC_LINK; else msg_buffer[pMsg_t].wConnId = MSC_LINK; msg_buffer[pMsg_t].uUiPri = N_CONNECT_CFM; if(0x08 == pUiPriParam->tPriUnion.tPriNConnRsp.uOptFlag) msg_buffer[pMsg_t].tPriUnion.tPriNConnCfm.uOptFlag = 0x04; else msg_buffer[pMsg_t].tPriUnion.tPriNConnCfm.uOptFlag = 0; memcpy(&msg_buffer[pMsg_t].tPriUnion.tPriNConnCfm.tUD, &pUiPriParam->tPriUnion.tPriNConnRsp.tUD, sizeof(pUiPriParam->tPriUnion.tPriNConnRsp.tUD)); printf("TYPE: CC\n"); printf("LINK ID: %d\n", pUiPriParam->wConnId); printf("CONTENT: "); HexToDisplay(pUiPriParam->tPriUnion.tPriNConnRsp.tUD.aUserData, pUiPriParam->tPriUnion.tPriNConnRsp.tUD.uDataLen); break; case N_DISCONNECT_REQ: if(pUiPriParam->wConnId == MSC_LINK) msg_buffer[pMsg_t].wConnId = BSC_LINK; else msg_buffer[pMsg_t].wConnId = MSC_LINK; msg_buffer[pMsg_t].uUiPri = N_DISCONNECT_IND; printf("TYPE: RLSD\n"); printf("LINK ID: %d\n", pUiPriParam->wConnId); break; case N_DATA_REQ: if(pUiPriParam->wConnId == MSC_LINK) msg_buffer[pMsg_t].wConnId = BSC_LINK; else msg_buffer[pMsg_t].wConnId = MSC_LINK; msg_buffer[pMsg_t].uUiPri = N_DATA_IND; memcpy(&msg_buffer[pMsg_t].tPriUnion.tPriNDataInd.tUD, &pUiPriParam->tPriUnion.tPriNDataReq.tUD, sizeof(pUiPriParam->tPriUnion.tPriNDataReq.tUD)); printf("TYPE: DT1\n"); printf("LINK ID: %d\n", pUiPriParam->wConnId); printf("CONTENT: "); HexToDisplay(pUiPriParam->tPriUnion.tPriNDataReq.tUD.aUserData, pUiPriParam->tPriUnion.tPriNDataReq.tUD.uDataLen); break; default: assert(0); break; } pMsg_t = ((pMsg_t + 1) & 0x3F); } return 0; } int SpSubmit ( SP_UiPriPara * pUiPriParam , BYTE uUlSapId ) { if(pMsg_h != pMsg_t){ memcpy(pUiPriParam, &msg_buffer[pMsg_h], sizeof(SP_UiPriPara)); pMsg_h = ((pMsg_h + 1) & 0x3F); //print printf("\nSCCP RV:"); switch(pUiPriParam->uUiPri){ case N_UNITDATA_IND: printf("TYPE: UDT\n"); printf("%d <= %d\n", pUiPriParam->tPriUnion.tPriNUDataInd.tCDA.DPC, pUiPriParam->tPriUnion.tPriNUDataInd.tCGA.DPC); printf("CONTENT: "); HexToDisplay(pUiPriParam->tPriUnion.tPriNUDataInd.tUD.aUserData, pUiPriParam->tPriUnion.tPriNUDataInd.tUD.uDataLen); break; case N_CONNECT_IND: printf("TYPE: CR\n"); printf("CDA: %d\n", pUiPriParam->tPriUnion.tPriNConnInd.tCDA.DPC); printf("LINK ID: %d\n", pUiPriParam->wConnId); printf("CONTENT: "); HexToDisplay(pUiPriParam->tPriUnion.tPriNConnInd.tUD.aUserData, pUiPriParam->tPriUnion.tPriNConnInd.tUD.uDataLen); break; case N_CONNECT_CFM: printf("TYPE: CC\n"); printf("LINK ID: %d\n", pUiPriParam->wConnId); printf("CONTENT: "); HexToDisplay(pUiPriParam->tPriUnion.tPriNConnCfm.tUD.aUserData, pUiPriParam->tPriUnion.tPriNConnCfm.tUD.uDataLen); break; case N_DISCONNECT_IND: printf("TYPE: RLC\n"); printf("LINK ID: %d\n", pUiPriParam->wConnId); break; case N_DATA_IND: printf("TYPE: DT1\n"); printf("LINK ID: %d\n", pUiPriParam->wConnId); printf("CONTENT: "); HexToDisplay(pUiPriParam->tPriUnion.tPriNDataInd.tUD.aUserData, pUiPriParam->tPriUnion.tPriNDataInd.tUD.uDataLen); break; default: assert(0); break; } return 1; } return 0; } int test_call_back_msc(aifg_indication ind, aifg_msg_pre_decoded *msg) { printf("MSC call back called\n"); memcpy(&aifg_msg, msg, sizeof(aifg_msg)); if(msg->port == -1){ msg->port = MSC_PORT; } return 1; } int test_call_back_bsc(aifg_indication ind, aifg_msg_pre_decoded *msg) { printf("BSC call back called\n"); memcpy(&aifg_msg, msg, sizeof(aifg_msg)); if(msg->port == -1){ msg->port = BSC_PORT; } return 1; } //end of stub function definition int test_aifg_reset_proc() { int i=0; //Precondition printf("\nTest case: Creating and reseting circuit group\n"); aifg_bind(AIFG_SAP_MSC, test_call_back_msc); aifg_bind(AIFG_SAP_BSC, test_call_back_bsc); msc_cg = aifg_createCircuitGroup(AIFG_SAP_MSC, BSC_SPC, AIFG_NI_INTERNATIONAL); bsc_cg = aifg_createCircuitGroup(AIFG_SAP_BSC, MSC_SPC, AIFG_NI_INTERNATIONAL); aifg_set_running_mode(AIFG_RUN_MODE_SINGLE, 0); //waiting reset completed while(i++ < 6000){ aifg_proc(); } //Post condition printf("\nTest case: Creating and reseting circuit group completed!\n"); return 1; } int test_aifg_sccp_link_setup() { int msc_status = 0; int bsc_status = 0; printf("\nTest case: Sccp link setup and release\n"); while(1){ switch(bsc_status){ case 0: //send complete l3 information aifg_send(AIFG_SAP_BSC, bsc_cg, BSC_PORT, &bm_completeL3); bsc_status++; break; case 1: //wait cm accept if(aifg_msg.type == AIFG_MSG_ID_CM_ACCEPT) bsc_status++; break; case 2: //send clear request aifg_send(AIFG_SAP_BSC, bsc_cg, BSC_PORT, &bm_clearReq); bsc_status++; break; case 3: //wait clear command if(aifg_msg.type == AIFG_MSG_ID_CLR_CMD) bsc_status++; break; case 4: //send clear completed bm_clearComplete.id = AIFG_MSG_ID_CLR_CMP; aifg_send(AIFG_SAP_BSC, bsc_cg, BSC_PORT, &bm_clearComplete); bsc_status++; break; default: break; } switch(msc_status){ case 0: //wait complete l3 information if(aifg_msg.type == AIFG_MSG_ID_L3_INFO) msc_status++; break; case 1: //send cm service accept dt_cmAccept.id = AIFG_MSG_ID_CM_ACCEPT; aifg_send(AIFG_SAP_MSC, msc_cg, MSC_PORT, &dt_cmAccept); msc_status++; break; case 2: //wait clear request if(aifg_msg.type == AIFG_MSG_ID_CLR_REQ) msc_status++; break; case 3: //send clear command aifg_send(AIFG_SAP_MSC, msc_cg, MSC_PORT, &bm_clearCmd); msc_status++; break; case 4: //wait clear completed if(aifg_msg.type == AIFG_MSG_ID_CLR_CMP) msc_status++; break; default: printf("Test case: Sccp link setup and release completed!\n"); return 1; break; } aifg_proc(); } return 0; } int test_aifg_paging() { int msc_status = 0; int bsc_status = 0; printf("\nTest case: Paging procedure\n"); while(1){ switch(msc_status){ case 0: //send paging request aifg_paging(AIFG_SAP_MSC, msc_cg, MSC_PORT, &bm_paging); msc_status++; break; case 1: //wait paging resp if(aifg_msg.type == AIFG_MSG_ID_L3_INFO && aifg_msg.msg.completeL3Info.l3msg.id == AIFG_MSG_ID_PAGING_RESP) msc_status++; break; case 2: //send setup aifg_send(AIFG_SAP_MSC, msc_cg, MSC_PORT, &bm_setup); msc_status++; break; case 3: //wait call confirm if(aifg_msg.type == AIFG_MSG_ID_CALL_CONFIRMED) msc_status++; break; case 4: //send clear command aifg_send(AIFG_SAP_MSC, msc_cg, MSC_PORT, &bm_clearCmd); msc_status++; break; case 5: //wait clear completed if(aifg_msg.type == AIFG_MSG_ID_CLR_CMP) msc_status++; break; default: printf("Test case: Paging procedure completed!\n"); return 1; break; } switch(bsc_status){ case 0: //wait paging request if(aifg_msg.type == AIFG_MSG_ID_PAGING){ bsc_status++; memset(&aifg_msg, 0, sizeof(aifg_msg)); } break; case 1: //wait a second paging request if(aifg_msg.type == AIFG_MSG_ID_PAGING){ bsc_status++; } break; case 2: //send paging response aifg_send(AIFG_SAP_BSC, bsc_cg, BSC_PORT, &rr_pagingResp); bsc_status++; break; case 3: //wait setup if(aifg_msg.type == AIFG_MSG_ID_SETUP){ bsc_status++; } break; case 4: //send call confirm dt_callCfm.id = AIFG_MSG_ID_CALL_CONFIRMED; dt_callCfm.msg.dtap_msg.ptr = msgsrc[69]; dt_callCfm.msg.dtap_msg.len = 34; aifg_send(AIFG_SAP_BSC, bsc_cg, BSC_PORT, &dt_callCfm); bsc_status++; break; case 5: //wait clear cmd if(aifg_msg.type == AIFG_MSG_ID_CLR_CMD) bsc_status++; break; case 6: //send clear complete bm_clearComplete.id = AIFG_MSG_ID_CLR_CMP; aifg_send(AIFG_SAP_BSC, bsc_cg, BSC_PORT, &bm_clearComplete); bsc_status++; break; default: break; } aifg_proc(); } printf("\nTest case: Paging completed\n"); return 0; } int aifg_unit_test() { int status = 0; //init pMsg_h = pMsg_t = 0; aifg_init(); while(1){ switch(status){ case 0: //creat sap and circuit group if(1 == test_aifg_reset_proc()) status++; break; case 1: //setup up sccp link if(1 == test_aifg_sccp_link_setup()) status++; break; case 2: //paging if(1 == test_aifg_paging()) status++; break; default: goto FINISH; break; } } FINISH: return 0; }