1756 lines
45 KiB
C
1756 lines
45 KiB
C
/* HLR CDMA cdr coding */
|
|
/* Created by daniel:2005-06-21 */
|
|
/* Modify by daniel:2005-06-21 */
|
|
/* -------------------------------- */
|
|
|
|
#include "../../public/src/include/asn1.h"
|
|
#include "../../public/src/include/includes.h"
|
|
#include "../../public/src/include/pub_fmt.h"
|
|
#include "../../sccp/src/include/sccp.h"
|
|
#include "./mapp/map_const.h"
|
|
#include "xap_cdmacdr.h"
|
|
|
|
char *is41_sequenceTag(char *tag,int sequence);
|
|
|
|
void encode_param_CallLocation(DMH_CallLocation *ptr,ASN_BUF *asn_buf,int *buf_len,char tag1[64])
|
|
{
|
|
u32 flag;
|
|
char tag[64];
|
|
u8 offset=1;
|
|
u8 temp[8];
|
|
|
|
flag = ptr->param_flag;
|
|
|
|
*buf_len = AddTLV(tag1,0,temp,0x60,asn_buf);
|
|
|
|
if (flag & BIT0_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_HCOORD);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->HcoordinateLen % 3,ptr->Hcoordinate,0x40,asn_buf);
|
|
}
|
|
if (flag & BIT1_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_NPANXX);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),3,ptr->NPANXX,0x40,asn_buf);
|
|
}
|
|
if (flag & BIT2_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_PLNAM);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->PlaceNameLen % 20,ptr->PlaceName,0x40,asn_buf);
|
|
}
|
|
if (flag & BIT3_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_SPNAM);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),2,ptr->StateProvinceName,0x40,asn_buf);
|
|
}
|
|
if (flag & BIT4_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_VCOORD);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->VcoordinateLen % 3,ptr->Vcoordinate,0x40,asn_buf);
|
|
}
|
|
if (flag & BIT5_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_LATA);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->LocalAccessTransportAreaLen % 4,ptr->LocalAccessTransportArea,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT6_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_WCNTRY);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),3,ptr->WorldCountry,0x40,asn_buf);
|
|
}
|
|
}
|
|
|
|
void encode_param_cnvusg(DMH_ConversationUsage *ptr,ASN_BUF *asn_buf,int *buf_len,char tag1[64])
|
|
{
|
|
u32 flag;
|
|
char tag[64];
|
|
u8 offset=1;
|
|
u8 temp[8];
|
|
|
|
flag = ptr->param_flag;
|
|
|
|
*buf_len = AddTLV(tag1,0,temp,0x60,asn_buf);
|
|
|
|
if (flag & BIT0_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_DUR);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->durLen % 5,ptr->dur,0x40,asn_buf);
|
|
}
|
|
if (flag & BIT1_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_TOD);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->todLen % 4,ptr->tod,0x40,asn_buf);
|
|
}
|
|
if (flag & BIT2_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_DATE);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),3,ptr->Date,0x40,asn_buf);
|
|
}
|
|
if (flag & BIT3_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_RELIND);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),1,&ptr->relind,0x40,asn_buf);
|
|
}
|
|
if (flag & BIT4_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_TDO);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->tdoLen % 3,ptr->tdo,0x40,asn_buf);
|
|
}
|
|
if (flag & BIT5_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_NUMOCT);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->numoctLen % 5,ptr->numoct,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT6_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_NUMPKT);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->numpktLen % 5,ptr->numpkt,0x40,asn_buf);
|
|
}
|
|
}
|
|
|
|
void encode_param_swid(DMH_SwitchID *ptr,ASN_BUF *asn_buf,int *buf_len,char tag1[64])
|
|
{
|
|
u32 flag;
|
|
char tag[64];
|
|
u8 temp[8];
|
|
|
|
flag = ptr->param_flag;
|
|
|
|
*buf_len = AddTLV(tag1,0,temp,0x60,asn_buf);
|
|
|
|
if (flag & BIT0_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_SWNO);
|
|
*buf_len = AddTLV(tag,1,&ptr->swno,0x40,asn_buf);
|
|
}
|
|
if (flag & BIT1_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_SID);
|
|
*buf_len = AddTLV(tag,2,ptr->sid,0x40,asn_buf);
|
|
}
|
|
if (flag & BIT2_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_BRI);
|
|
*buf_len = AddTLV(tag,2,ptr->bri,0x40,asn_buf);
|
|
}
|
|
if (flag & BIT3_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_MYTYP);
|
|
*buf_len = AddTLV(tag,1,&ptr->mytyp,0x40,asn_buf);
|
|
}
|
|
}
|
|
|
|
void encode_param_bfpath(DMH_BeginForwardPath *ptr,ASN_BUF *asn_buf,int *buf_len,char tag1[64])
|
|
{
|
|
u32 flag;
|
|
char tag[64];
|
|
|
|
flag = ptr->param_flag;
|
|
|
|
if (flag & BIT0_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_CELLID);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,1),ptr->cellidLen % 3,ptr->cellid,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT1_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_MODIND);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,2),1,&ptr->modind,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT2_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_RCHNUM);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,3),ptr->rchnumLen % 3,ptr->rchnum,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT3_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_TKNUM);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,4),ptr->tknumLen % 3,ptr->tknum,0x40,asn_buf);
|
|
}
|
|
|
|
//optional part will be encoded in the future
|
|
}
|
|
|
|
void encode_param_achusg(DMH_AirChannelUsage *ptr,ASN_BUF *asn_buf,int *buf_len,char tag1[64])
|
|
{
|
|
u32 flag;
|
|
char tag[64];
|
|
u8 temp[8];
|
|
u8 offset=1;
|
|
|
|
flag = ptr->param_flag;
|
|
|
|
*buf_len = AddTLV(tag,0,temp,0x60,asn_buf);
|
|
|
|
if (flag & BIT0_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_DUR);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->durLen % 5,ptr->dur,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT1_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_TOD);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->todLen % 4,ptr->tod,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT2_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_DATE);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),3,ptr->Date,0x40,asn_buf);
|
|
}
|
|
|
|
//optional part will be encoded in the future
|
|
}
|
|
|
|
void encode_param_fbusg(DMH_FeatureBridgeUsage *ptr,ASN_BUF *asn_buf,int *buf_len,char tag1[64])
|
|
{
|
|
u32 flag;
|
|
char tag[64];
|
|
u8 temp[8];
|
|
u8 offset=1;
|
|
|
|
flag = ptr->param_flag;
|
|
|
|
*buf_len = AddTLV(tag1,0,temp,0x60,asn_buf);
|
|
|
|
if (flag & BIT0_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_FBIND);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),1,&ptr->fbind,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT1_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_DUR);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->durLen % 5,ptr->dur,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT2_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_RLEG);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->rlegLen % 3,ptr->rleg,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT3_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_TOD);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->todLen % 4,ptr->tod,0x40,asn_buf);
|
|
}
|
|
|
|
//optional part will be encoded in the future
|
|
}
|
|
|
|
void encode_param_incusg(DMH_IncomingTrunkUsage *ptr,ASN_BUF *asn_buf,int *buf_len,char tag1[64])
|
|
{
|
|
u32 flag;
|
|
char tag[64];
|
|
u8 temp[8];
|
|
u8 offset=1;
|
|
|
|
flag = ptr->param_flag;
|
|
|
|
*buf_len = AddTLV(tag1,0,temp,0x60,asn_buf);
|
|
|
|
if (flag & BIT0_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_DUR);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->durLen % 5,ptr->dur,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT1_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_TOD);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->todLen % 4,ptr->tod,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT2_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_TKNUM);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->tknumLen % 3,ptr->tknum,0x40,asn_buf);
|
|
}
|
|
|
|
//optional part will be encoded in the future
|
|
}
|
|
|
|
void encode_param_ogtusg(DMH_OutgoingTrunkUsage *ptr,ASN_BUF *asn_buf,int *buf_len,char tag1[64])
|
|
{
|
|
u32 flag;
|
|
char tag[64];
|
|
u8 temp[8];
|
|
u8 offset=1;
|
|
|
|
flag = ptr->param_flag;
|
|
|
|
*buf_len = AddTLV(tag1,0,temp,0x60,asn_buf);
|
|
|
|
if (flag & BIT0_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_DUR);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->durLen % 5,ptr->dur,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT1_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_TOD);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->todLen % 4,ptr->tod,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT2_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_TKNUM);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->tknumLen % 3,ptr->tknum,0x40,asn_buf);
|
|
}
|
|
|
|
//optional part will be encoded in the future
|
|
}
|
|
|
|
void encode_param_audsub(DMH_AuditSubrecord *ptr,ASN_BUF *asn_buf,int *buf_len,char tag1[64])
|
|
{
|
|
u32 flag;
|
|
char tag[64];
|
|
u8 offset=1;
|
|
u8 temp[8];
|
|
|
|
flag = ptr->param_flag;
|
|
|
|
if (flag & BIT0_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_AUDSN);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->audsnLen % 5,ptr->audsn,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT1_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_ACHDUR);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->achdurLen % 5,ptr->achdur,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT2_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_CNVDUR);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->cnvdurLen % 5,ptr->cnvdur,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT3_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_FBDUR);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->fbdurLen % 5,ptr->fbdur,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT4_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_IECCDUR);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->ieccdurLen % 5,ptr->ieccdur,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT5_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_INCDUR);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->incdurLen % 5,ptr->incdur,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT6_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_NUMACT);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->numactLen % 5,ptr->numact,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT7_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_NUMCHRG);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->numchrgLen % 5,ptr->numchrg,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT8_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_NUMEVT);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->numevtLen % 5,ptr->numevt,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT9_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_NUMLEG);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->numlegLen % 5,ptr->numleg,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT10_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_NUMSEG);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->numsegLen % 5,ptr->numseg,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT11_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_OGTDUR);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->ogtdurLen % 5,ptr->ogtdur,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT12_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_NUMFAL);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->numfalLen % 5,ptr->numfal,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT13_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_NUMORG);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->numorgLen % 8,ptr->numorg,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT14_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_NUMRED);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->numredLen % 5,ptr->numred,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT15_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_NUMTRM);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->numtrmLen % 5,ptr->numtrm,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT16_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_NUMAUX);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->numauxLen % 5,ptr->numaux,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT17_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_NUMOCT);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->numoctLen % 5,ptr->numoct,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT18_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_NUMPKT);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->numpktLen % 5,ptr->numpkt,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT19_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_IWFDUR);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->iwfdurLen % 5,ptr->iwfdur,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT20_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_FILLIND);//FaultyParameter
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),0,temp,0x60,asn_buf);
|
|
|
|
sprintf(tag,"%s.%d.%d",tag1,DMHPAR_FILLIND,DMHPAR_FPARM);//FaultyParameter
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,1),ptr->fillind.FaultyParameter.ParameterIdentifierLen % 17,ptr->fillind.FaultyParameter.ParameterIdentifier,0x40,asn_buf);
|
|
|
|
sprintf(tag,"%s.%d.%d",tag1,DMHPAR_FILLIND,DMHPAR_FILLIC);//FillIndicatorCode
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,2),1,&ptr->fillind.FillIndicatorCode,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT21_TRUE)
|
|
{
|
|
if (ptr->retind.param_flag & 3)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_RETIND);//FaultyParameter
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),0,temp,0x60,asn_buf);
|
|
}
|
|
|
|
if (ptr->retind.param_flag & BIT0_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d.%d",tag1,DMHPAR_RETIND,DMHPAR_RICODE);//ReturnIndicatorCode
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,3),1,&ptr->retind.ReturnIndicatorCode,0x40,asn_buf);
|
|
}
|
|
if (ptr->retind.param_flag & BIT1_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d.%d",tag1,DMHPAR_RETIND,DMHPAR_FPARM);//FaultyParameter
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,4),ptr->retind.FaultyParameter.ParameterIdentifierLen % 17,ptr->retind.FaultyParameter.ParameterIdentifier,0x40,asn_buf);
|
|
}
|
|
}
|
|
}
|
|
|
|
void encode_param_idsub(DMH_IdentitySubrecord *ptr,ASN_BUF *asn_buf,int *buf_len,char tag1[64])
|
|
{
|
|
u32 flag;
|
|
char tag[64];
|
|
u8 offset=1;
|
|
|
|
flag = ptr->param_flag;
|
|
|
|
if (flag & BIT0_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_DATE,offset++);
|
|
*buf_len = AddTLV(tag,3,ptr->Date,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT1_TRUE)
|
|
{
|
|
if (ptr->Choice1.ChoiceFlag == 0)
|
|
{
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_ESN,offset++);
|
|
*buf_len = AddTLV(tag,4,ptr->Choice1.esn,0x40,asn_buf);
|
|
}
|
|
else
|
|
{
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_IMEI,offset++);
|
|
*buf_len = AddTLV(tag,5,ptr->Choice1.imei,0x40,asn_buf);
|
|
}
|
|
}
|
|
|
|
if (flag & BIT2_TRUE)
|
|
{
|
|
switch (ptr->Choice2.ChoiceFlag)
|
|
{
|
|
case 0:
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_MIN,offset++);
|
|
*buf_len = AddTLV(tag,5,ptr->Choice2.min,0x40,asn_buf);
|
|
break;
|
|
case 1:
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_IMSI,offset++);
|
|
*buf_len = AddTLV(tag,8,ptr->Choice2.imsi,0x40,asn_buf);
|
|
break;
|
|
case 2:
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_NEICLNP,offset++);
|
|
*buf_len = AddTLV(tag,19,ptr->Choice2.neiclnp,0x40,asn_buf);
|
|
break;
|
|
case 3:
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_NEIIP,offset++);
|
|
*buf_len = AddTLV(tag,4,ptr->Choice2.neiip,0x40,asn_buf);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (flag & BIT3_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_TDO,offset++);
|
|
*buf_len = AddTLV(tag,ptr->tdoLen % 3,ptr->tdo,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT4_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_TOD,offset++);
|
|
*buf_len = AddTLV(tag,ptr->todLen % 4,ptr->tod,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT5_TRUE)
|
|
{
|
|
switch (ptr->Choice3.ChoiceFlag)
|
|
{
|
|
case 0:
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_ASWID,offset++);
|
|
encode_param_swid(&ptr->Choice3.aswid,asn_buf,buf_len,tag);
|
|
break;
|
|
case 1:
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_OSWID,offset++);
|
|
encode_param_swid(&ptr->Choice3.oswid,asn_buf,buf_len,tag);
|
|
break;
|
|
case 2:
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_SSWID,offset++);
|
|
encode_param_swid(&ptr->Choice3.sswid,asn_buf,buf_len,tag);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (flag & BIT6_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_BIN,offset++);
|
|
*buf_len = AddTLV(tag,ptr->binLen % 5,ptr->bin,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT7_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_HSWID,offset++);
|
|
encode_param_swid(&ptr->hswid,asn_buf,buf_len,tag);
|
|
}
|
|
|
|
if (flag & BIT8_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_MDN,offset++);
|
|
*buf_len = AddTLV(tag,ptr->mdnLen % 9,ptr->mdn,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT9_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d-%d.%d",tag1,DMHPAR_FILLIND,offset++,DMHPAR_FPARM);//FaultyParameter
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,1),ptr->fillind.FaultyParameter.ParameterIdentifierLen % 17,ptr->fillind.FaultyParameter.ParameterIdentifier,0x40,asn_buf);
|
|
|
|
sprintf(tag,"%s.%d-%d.%d",tag1,DMHPAR_FILLIND,offset++,DMHPAR_FILLIC);//FillIndicatorCode
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,2),1,&ptr->fillind.FillIndicatorCode,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT10_TRUE)
|
|
{
|
|
if (ptr->retind.param_flag & BIT0_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d-%d.%d",tag1,DMHPAR_RETIND,offset++,DMHPAR_RICODE);//ReturnIndicatorCode
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,1),1,&ptr->retind.ReturnIndicatorCode,0x40,asn_buf);
|
|
}
|
|
if (ptr->retind.param_flag & BIT1_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d-%d.%d",tag1,DMHPAR_RETIND,offset++,DMHPAR_FPARM);//FaultyParameter
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,2),ptr->retind.FaultyParameter.ParameterIdentifierLen % 17,ptr->retind.FaultyParameter.ParameterIdentifier,0x40,asn_buf);
|
|
}
|
|
}
|
|
}
|
|
|
|
void encode_param_evtsub(DMH_EventSubrecord *ptr,ASN_BUF *asn_buf,int *buf_len,char tag1[64])
|
|
{
|
|
u32 flag;
|
|
char tag[64];
|
|
u8 temp[8];
|
|
u8 offset=1;
|
|
|
|
flag = ptr->param_flag;
|
|
|
|
if (flag & BIT0_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_EVTIND);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),1,&ptr->evtind,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT1_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_RIN);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->rinLen % 5,ptr->rin,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT2_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_ASWID,offset++);
|
|
encode_param_swid(&ptr->aswid,asn_buf,buf_len,tag);
|
|
}
|
|
|
|
if (flag & BIT3_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_AUTHCNT);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),1,&ptr->authcnt,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT4_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_AUTHDEN);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),1,&ptr->authden,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT5_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_AUTHTYP);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),1,&ptr->authtyp,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT6_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_BIN);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->binLen % 5,ptr->bin,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT7_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_DATE);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),3,ptr->Date,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT8_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_DENACC);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),1,&ptr->denacc,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT9_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_FEATIND);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),1,&ptr->featind,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT10_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_FEATOPN);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),1,&ptr->featopn,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT11_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_FRIND);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),1,&ptr->frind,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT12_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_OSWID,offset++);
|
|
encode_param_swid(&ptr->oswid,asn_buf,buf_len,tag);
|
|
}
|
|
|
|
if (flag & BIT13_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_RBIN);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->rbinLen % 5,ptr->rbin,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT14_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_SRT);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),1,&ptr->srt,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT15_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_SSWID,offset++);
|
|
encode_param_swid(&ptr->sswid,asn_buf,buf_len,tag);
|
|
}
|
|
|
|
if (flag & BIT16_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_TDO);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->tdoLen % 5,ptr->tdo,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT17_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_TOD);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->todLen % 4,ptr->tod,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT18_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_FILLIND);//FaultyParameter
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),0,temp,0x60,asn_buf);
|
|
|
|
sprintf(tag,"%s.%d.%d",tag1,DMHPAR_FILLIND,DMHPAR_FPARM);//FaultyParameter
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,1),ptr->fillind.FaultyParameter.ParameterIdentifierLen % 17,ptr->fillind.FaultyParameter.ParameterIdentifier,0x40,asn_buf);
|
|
|
|
sprintf(tag,"%s.%d.%d",tag1,DMHPAR_FILLIND,DMHPAR_FILLIC);//FillIndicatorCode
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,2),1,&ptr->fillind.FillIndicatorCode,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT19_TRUE)
|
|
{
|
|
if (ptr->retind.param_flag & 3)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_RETIND);//FaultyParameter
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),0,temp,0x60,asn_buf);
|
|
}
|
|
|
|
if (ptr->retind.param_flag & BIT0_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d.%d",tag1,DMHPAR_RETIND,DMHPAR_RICODE);//ReturnIndicatorCode
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,3),1,&ptr->retind.ReturnIndicatorCode,0x40,asn_buf);
|
|
}
|
|
if (ptr->retind.param_flag & BIT1_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d.%d",tag1,DMHPAR_RETIND,DMHPAR_FPARM);//FaultyParameter
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,4),ptr->retind.FaultyParameter.ParameterIdentifierLen % 17,ptr->retind.FaultyParameter.ParameterIdentifier,0x40,asn_buf);
|
|
}
|
|
}
|
|
}
|
|
|
|
void encode_param_chrgsub(DMH_ChargeSubrecord *ptr,ASN_BUF *asn_buf,int *buf_len,char tag1[64])
|
|
{
|
|
u32 flag;
|
|
char tag[64];
|
|
u8 offset=1;
|
|
u8 temp[8];
|
|
|
|
flag = ptr->param_flag;
|
|
|
|
if (flag & BIT0_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_CHRGAMT);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->chrgamtLen % 5,ptr->chrgamt,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT1_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_CHRGIND);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),1,&ptr->chrgind,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT2_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_CHRGTAX);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->chrgtaxLen % 5,ptr->chrgtax,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT3_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_CHRGTIND);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),1,&ptr->chrgtind,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT4_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_CHRGUNIT);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),1,&ptr->chrgunit,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT5_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_DUR);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->durLen % 5,ptr->dur,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT6_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_MRPI);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),1,&ptr->mrpi,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT7_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_PLNAM);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->plnamLen % 21,ptr->plnam,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT8_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_RPI);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),1,&ptr->rpi,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT9_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_SPNAM);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),2,ptr->spnam,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT10_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_TTIND);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),1,&ptr->ttind,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT11_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_WCNTRY);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),3,ptr->wcntry,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT12_TRUE)
|
|
{
|
|
if (ptr->Choice.ChoiceFlag == 0)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_LNUM);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),1,&ptr->Choice.lnum,0x40,asn_buf);
|
|
}
|
|
else
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_SEGNUM);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),1,&ptr->Choice.segnum,0x40,asn_buf);
|
|
}
|
|
}
|
|
|
|
if (flag & BIT13_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_CHRGTCOD);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->chrgtcodLen % 3,ptr->chrgtcod,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT14_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_CHRGTTBL);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),1,&ptr->chrgttbl,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT15_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_NUMOCT);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->numoctLen % 5,ptr->numoct,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT16_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_NUMPKT);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->numpktLen % 5,ptr->numpkt,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT17_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_SELUSE);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->seluseLen % 101,ptr->seluse,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT18_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_SUCOD);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),1,&ptr->sucod,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT19_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_TEXIND);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),1,&ptr->texind,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT20_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_FILLIND);//FaultyParameter
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),0,temp,0x60,asn_buf);
|
|
|
|
sprintf(tag,"%s.%d.%d",tag1,DMHPAR_FILLIND,DMHPAR_FPARM);//FaultyParameter
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,1),ptr->fillind.FaultyParameter.ParameterIdentifierLen % 17,ptr->fillind.FaultyParameter.ParameterIdentifier,0x40,asn_buf);
|
|
|
|
sprintf(tag,"%s.%d.%d",tag1,DMHPAR_FILLIND,DMHPAR_FILLIC);//FillIndicatorCode
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,2),1,&ptr->fillind.FillIndicatorCode,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT21_TRUE)
|
|
{
|
|
if (ptr->retind.param_flag & 3)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_RETIND);//FaultyParameter
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),0,temp,0x60,asn_buf);
|
|
}
|
|
|
|
if (ptr->retind.param_flag & BIT0_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d.%d",tag1,DMHPAR_RETIND,DMHPAR_RICODE);//ReturnIndicatorCode
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,3),1,&ptr->retind.ReturnIndicatorCode,0x40,asn_buf);
|
|
}
|
|
if (ptr->retind.param_flag & BIT1_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d.%d",tag1,DMHPAR_RETIND,DMHPAR_FPARM);//FaultyParameter
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,4),ptr->retind.FaultyParameter.ParameterIdentifierLen % 17,ptr->retind.FaultyParameter.ParameterIdentifier,0x40,asn_buf);
|
|
}
|
|
}
|
|
}
|
|
|
|
void encode_param_actsub(DMH_ActivitySubrecord *ptr,ASN_BUF *asn_buf,int *buf_len,char tag1[64])
|
|
{
|
|
u32 flag;
|
|
char tag[64];
|
|
u8 temp[8];
|
|
u8 offset=1;
|
|
|
|
flag = ptr->param_flag;
|
|
|
|
if (flag & BIT0_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_ACTIND);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),1,&ptr->actind,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT1_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_RIN);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->rinLen % 5,ptr->rin,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT2_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_AUTHDEN);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),1,&ptr->authden,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT3_TRUE)//BeginForwardPath, encode in the future
|
|
{}
|
|
|
|
if (flag & BIT4_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_BIN);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->binLen % 5,ptr->bin,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT5_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_DATE);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),3,ptr->Date,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT6_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_DENACC);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),1,&ptr->denacc,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT7_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_SRT);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),1,&ptr->srt,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT8_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_SSWID,offset++);
|
|
encode_param_swid(&ptr->sswid,asn_buf,buf_len,tag);
|
|
}
|
|
|
|
if (flag & BIT9_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_TDO);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->tdoLen % 3,ptr->tdo,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT10_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_TOD);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->todLen % 4,ptr->tod,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT11_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_FILLIND);//FaultyParameter
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),0,temp,0x60,asn_buf);
|
|
|
|
sprintf(tag,"%s.%d.%d",tag1,DMHPAR_FILLIND,DMHPAR_FPARM);//FaultyParameter
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,1),ptr->fillind.FaultyParameter.ParameterIdentifierLen % 17,ptr->fillind.FaultyParameter.ParameterIdentifier,0x40,asn_buf);
|
|
|
|
sprintf(tag,"%s.%d.%d",tag1,DMHPAR_FILLIND,DMHPAR_FILLIC);//FillIndicatorCode
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,2),1,&ptr->fillind.FillIndicatorCode,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT12_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_RSEG);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->rsegLen % 4,ptr->rseg,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT13_TRUE)
|
|
{
|
|
if (ptr->retind.param_flag & 3)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_RETIND);//FaultyParameter
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),0,temp,0x60,asn_buf);
|
|
}
|
|
|
|
if (ptr->retind.param_flag & BIT0_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d.%d",tag1,DMHPAR_RETIND,DMHPAR_RICODE);//ReturnIndicatorCode
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,3),1,&ptr->retind.ReturnIndicatorCode,0x40,asn_buf);
|
|
}
|
|
if (ptr->retind.param_flag & BIT1_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d.%d",tag1,DMHPAR_RETIND,DMHPAR_FPARM);//FaultyParameter
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,4),ptr->retind.FaultyParameter.ParameterIdentifierLen % 17,ptr->retind.FaultyParameter.ParameterIdentifier,0x40,asn_buf);
|
|
}
|
|
}
|
|
}
|
|
|
|
void encode_param_airssub(DMH_AirSegmentSubrecord *ptr,ASN_BUF *asn_buf,int *buf_len,char tag1[64])
|
|
{
|
|
u32 flag;
|
|
char tag[64];
|
|
u8 offset=1;
|
|
|
|
flag = ptr->param_flag;
|
|
|
|
if (flag & BIT0_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_ACHUSG,offset++);
|
|
encode_param_achusg(&ptr->achusg,asn_buf,buf_len,tag);
|
|
}
|
|
|
|
if (flag & BIT1_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_SEGNUM,offset++);
|
|
*buf_len = AddTLV(tag,1,&ptr->segnum,0x40,asn_buf);
|
|
}
|
|
|
|
//optional part will be encoded in the future
|
|
}
|
|
|
|
void encode_param_falsub(DMH_FeatureActivationLegSubrecord *ptr,ASN_BUF *asn_buf,int *buf_len,char tag1[64])
|
|
{
|
|
u32 flag;
|
|
char tag[64];
|
|
u8 offset=1;
|
|
|
|
flag = ptr->param_flag;
|
|
|
|
if (flag & BIT0_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_DIALDGTS);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->dialdgtsLen & 31,ptr->dialdgts,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT1_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_LNUM);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),1,&ptr->lnum,0x40,asn_buf);
|
|
}
|
|
|
|
//optional part will be encoded in the future
|
|
if (flag & BIT13_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_FRIND);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),1,&ptr->frind,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT15_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_LLIND);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),0,&ptr->llind,0x40,asn_buf);
|
|
}
|
|
}
|
|
|
|
void encode_param_olsub(DMH_OriginationLegSubrecord *ptr,ASN_BUF *asn_buf,int *buf_len,char tag1[64])
|
|
{
|
|
u32 flag;
|
|
char tag[64];
|
|
u8 offset=1;
|
|
|
|
flag = ptr->param_flag;
|
|
|
|
if (flag & BIT0_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_BILLIND,offset++);
|
|
*buf_len = AddTLV(tag,1,&ptr->billind,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT1_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_DIALDGTS,offset++);
|
|
*buf_len = AddTLV(tag,ptr->dialdgtsLen & 31,ptr->dialdgts,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT2_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_LNUM,offset++);
|
|
*buf_len = AddTLV(tag,1,&ptr->lnum,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT8_TRUE)
|
|
{//Called Location
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_CDLOC,offset++);
|
|
encode_param_CallLocation(&ptr->CalledLocation,asn_buf,buf_len,tag);
|
|
}
|
|
|
|
if (flag & BIT11_TRUE)
|
|
{//Calling Location
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_CGLOC,offset++);
|
|
encode_param_CallLocation(&ptr->CallingLocation,asn_buf,buf_len,tag);
|
|
}
|
|
|
|
if (flag & BIT14_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_CNVUSG,offset++);
|
|
encode_param_cnvusg(&ptr->cnvusg,asn_buf,buf_len,tag);
|
|
}
|
|
|
|
if (flag & BIT16_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_FBUSG,offset++);
|
|
encode_param_fbusg(&ptr->fbusg,asn_buf,buf_len,tag);
|
|
}
|
|
|
|
if (flag & BIT19_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_LLIND,offset++);
|
|
*buf_len = AddTLV(tag,0,&ptr->llind,0x40,asn_buf);
|
|
}
|
|
if (flag & BIT20_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_OGTUSG,offset++);
|
|
encode_param_ogtusg(&ptr->ogtusg,asn_buf,buf_len,tag);
|
|
}
|
|
|
|
//optional part will be encoded in the future
|
|
}
|
|
|
|
void encode_param_pacasub(DMH_PACASegmentSubrecord *ptr,ASN_BUF *asn_buf,int *buf_len,char tag1[64])
|
|
{
|
|
u32 flag;
|
|
char tag[64];
|
|
|
|
flag = ptr->param_flag;
|
|
|
|
if (flag & BIT0_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_CELLID);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,1),ptr->cellidLen % 3,ptr->cellid,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT1_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_DUR);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,2),ptr->durLen % 5,ptr->dur,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT2_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_PACAIND);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,3),1,&ptr->pacaind,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT3_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_SEGNUM);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,4),1,&ptr->segnum,0x40,asn_buf);
|
|
}
|
|
|
|
//optional part will be encoded in the future
|
|
}
|
|
|
|
void encode_param_rlsub(DMH_RedirectionLegSubrecord *ptr,ASN_BUF *asn_buf,int *buf_len,char tag1[64])
|
|
{
|
|
u32 flag;
|
|
char tag[64];
|
|
u8 offset=1;
|
|
|
|
flag = ptr->param_flag;
|
|
|
|
if (flag & BIT0_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_BILLIND);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),1,&ptr->billind,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT1_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_CDDGTS);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->cddgtsLen % 10,ptr->cddgts,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT2_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_INCUSG,offset++);
|
|
encode_param_incusg(&ptr->incusg,asn_buf,buf_len,tag);
|
|
}
|
|
|
|
if (flag & BIT3_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_LNUM);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),1,&ptr->lnum,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT4_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_REDIND);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),1,&ptr->redind,0x40,asn_buf);
|
|
}
|
|
|
|
//optional part will be encoded in the future
|
|
if (flag & BIT6_TRUE)
|
|
{//Called Location
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_CDLOC,offset++);
|
|
encode_param_CallLocation(&ptr->CalledLocation,asn_buf,buf_len,tag);
|
|
}
|
|
|
|
if (flag & BIT8_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_CGDGTS);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->cgdgtsLen % 10,ptr->cgdgts,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT9_TRUE)
|
|
{//Calling Location
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_CGLOC,offset++);
|
|
encode_param_CallLocation(&ptr->CallingLocation,asn_buf,buf_len,tag);
|
|
}
|
|
|
|
if (flag & BIT12_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_CNVUSG,offset++);
|
|
encode_param_cnvusg(&ptr->cnvusg,asn_buf,buf_len,tag);
|
|
}
|
|
|
|
if (flag & BIT13_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_DESTDGTS);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),ptr->destdgtsLen % 10,ptr->destdgts,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT18_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_LLIND,offset++);
|
|
*buf_len = AddTLV(tag,0,&ptr->llind,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT19_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_OGTUSG,offset++);
|
|
encode_param_ogtusg(&ptr->ogtusg,asn_buf,buf_len,tag);
|
|
}
|
|
}
|
|
|
|
void encode_param_tssub(DMH_TandemSegmentSubrecord *ptr,ASN_BUF *asn_buf,int *buf_len,char tag1[64])
|
|
{
|
|
u32 flag;
|
|
char tag[64];
|
|
u8 offset=1;
|
|
|
|
flag = ptr->param_flag;
|
|
|
|
if (flag & BIT0_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_OGTUSG,offset++);
|
|
encode_param_ogtusg(&ptr->ogtusg,asn_buf,buf_len,tag);
|
|
}
|
|
|
|
if (flag & BIT1_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_SEGNUM);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,offset++),4,&ptr->segnum,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT2_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_TSWID,offset++);
|
|
encode_param_swid(&ptr->tswid,asn_buf,buf_len,tag);
|
|
}
|
|
|
|
//optional part will be encoded in the future
|
|
}
|
|
|
|
void encode_param_tlsub(DMH_TerminationLegSubrecord *ptr,ASN_BUF *asn_buf,int *buf_len,char tag1[64])
|
|
{
|
|
u32 flag;
|
|
char tag[64];
|
|
u8 offset=1;
|
|
|
|
flag = ptr->param_flag;
|
|
|
|
if (flag & BIT0_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_BILLIND,offset++);
|
|
*buf_len = AddTLV(tag,1,&ptr->billind,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT1_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_LNUM,offset++);
|
|
*buf_len = AddTLV(tag,1,&ptr->lnum,0x40,asn_buf);
|
|
}
|
|
|
|
//optional part will be encoded in the future
|
|
if (flag & BIT6_TRUE)
|
|
{//Called Location
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_CDLOC,offset++);
|
|
encode_param_CallLocation(&ptr->CalledLocation,asn_buf,buf_len,tag);
|
|
}
|
|
|
|
|
|
if (flag & BIT9_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_CGDGTS,offset++);
|
|
*buf_len = AddTLV(tag,ptr->cgdgtsLen,ptr->cgdgts,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT10_TRUE)
|
|
{//Calling Location
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_CGLOC,offset++);
|
|
encode_param_CallLocation(&ptr->CallingLocation,asn_buf,buf_len,tag);
|
|
}
|
|
|
|
if (flag & BIT13_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_CNVUSG,offset++);
|
|
encode_param_cnvusg(&ptr->cnvusg,asn_buf,buf_len,tag);
|
|
}
|
|
if (flag & BIT16_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_FBUSG,offset++);
|
|
encode_param_fbusg(&ptr->fbusg,asn_buf,buf_len,tag);
|
|
}
|
|
if (flag & BIT17_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_INCUSG,offset++);
|
|
encode_param_incusg(&ptr->incusg,asn_buf,buf_len,tag);
|
|
}
|
|
if (flag & BIT19_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d-%d",tag1,DMHPAR_LLIND,offset++);
|
|
*buf_len = AddTLV(tag,0,&ptr->llind,0x40,asn_buf);
|
|
}
|
|
|
|
}
|
|
|
|
void encode_param_auxlsub(DMH_AuxiliaryLegSubrecord *ptr,ASN_BUF *asn_buf,int *buf_len,char tag1[64])
|
|
{
|
|
u32 flag;
|
|
char tag[64];
|
|
|
|
flag = ptr->param_flag;
|
|
|
|
if (flag & BIT0_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_BILLIND);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,1),1,&ptr->billind,0x40,asn_buf);
|
|
}
|
|
|
|
if (flag & BIT1_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_LNUM);
|
|
*buf_len = AddTLV(is41_sequenceTag(tag,2),1,&ptr->lnum,0x40,asn_buf);
|
|
}
|
|
|
|
//optional part will be encoded in the future
|
|
}
|
|
|
|
int assign_DMHEventJacket(DMH_EventJacket *ptr,u8 *buf)
|
|
{
|
|
ASN_BUF asn_buf;
|
|
int buf_len=0;
|
|
u32 flag;
|
|
char tag[64];
|
|
char tag1[64];
|
|
u8 temp[8];
|
|
u8 offset=1;
|
|
|
|
flag = ptr->param_flag;
|
|
AsnEncode(buf,256,&asn_buf);
|
|
|
|
sprintf(tag,"%d",DMHPAR_EJCKT);
|
|
buf_len = AddTLV(tag,0,temp,0x60,&asn_buf);
|
|
|
|
if (flag & BIT0_TRUE)
|
|
{
|
|
sprintf(tag,"%d.%d-%d",DMHPAR_EJCKT,DMHPAR_AUDSUB,offset++);
|
|
buf_len = AddTLV(tag,0,temp,0x60,&asn_buf);
|
|
|
|
encode_param_audsub(&ptr->audsub,&asn_buf,&buf_len,tag);
|
|
}
|
|
if (flag & BIT1_TRUE)
|
|
{
|
|
sprintf(tag,"%d.%d-%d",DMHPAR_EJCKT,DMHPAR_IDSUB,offset++);
|
|
buf_len = AddTLV(tag,0,temp,0x60,&asn_buf);
|
|
encode_param_idsub(&ptr->idsub,&asn_buf,&buf_len,tag);
|
|
}
|
|
|
|
sprintf(tag1,"%d.16-%d",DMHPAR_EJCKT,offset);
|
|
buf_len = AddTLV(tag1,0,temp,0x20,&asn_buf);
|
|
|
|
if (flag & BIT2_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_EVTSUB);
|
|
buf_len = AddTLV(tag,0,temp,0x60,&asn_buf);
|
|
encode_param_evtsub(&ptr->evtsub,&asn_buf,&buf_len,tag);
|
|
}
|
|
if (flag & BIT3_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_CHRGSUB);
|
|
buf_len = AddTLV(tag,0,temp,0x60,&asn_buf);
|
|
encode_param_chrgsub(&ptr->chrgsub,&asn_buf,&buf_len,tag);
|
|
}
|
|
|
|
return buf_len;
|
|
}
|
|
|
|
int assign_DMH_ActivityJacket(DMH_ActivityJacket *ptr,u8 *buf)
|
|
{
|
|
ASN_BUF asn_buf;
|
|
int buf_len=0;
|
|
u32 flag;
|
|
char tag[64];
|
|
char tag1[64];
|
|
u8 temp[8];
|
|
u8 offset=1;
|
|
|
|
flag = ptr->param_flag;
|
|
AsnEncode(buf,256,&asn_buf);
|
|
|
|
sprintf(tag,"%d",DMHPAR_AJCKT);
|
|
buf_len = AddTLV(tag,0,temp,0x60,&asn_buf);
|
|
|
|
if (flag & BIT0_TRUE)
|
|
{
|
|
sprintf(tag,"%d.%d-%d",DMHPAR_AJCKT,DMHPAR_AUDSUB,offset++);
|
|
buf_len = AddTLV(tag,0,temp,0x60,&asn_buf);
|
|
encode_param_audsub(&ptr->audsub,&asn_buf,&buf_len,tag);
|
|
}
|
|
if (flag & BIT1_TRUE)
|
|
{
|
|
sprintf(tag,"%d.%d-%d",DMHPAR_AJCKT,DMHPAR_IDSUB,offset++);
|
|
buf_len = AddTLV(tag,0,temp,0x60,&asn_buf);
|
|
encode_param_idsub(&ptr->idsub,&asn_buf,&buf_len,tag);
|
|
}
|
|
|
|
sprintf(tag1,"%d.16-%d",DMHPAR_AJCKT,offset);
|
|
buf_len = AddTLV(tag1,0,temp,0x20,&asn_buf);
|
|
|
|
if (flag & BIT2_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_ACTSUB);
|
|
buf_len = AddTLV(tag,0,temp,0x60,&asn_buf);
|
|
encode_param_actsub(&ptr->actsub,&asn_buf,&buf_len,tag);
|
|
}
|
|
if (flag & BIT3_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_CHRGSUB);
|
|
buf_len = AddTLV(tag,0,temp,0x60,&asn_buf);
|
|
encode_param_chrgsub(&ptr->chrgsub,&asn_buf,&buf_len,tag);
|
|
}
|
|
|
|
return buf_len;
|
|
}
|
|
|
|
int assign_DMH_CallJacket(DMH_CallJacket *ptr,u8 *buf)
|
|
{
|
|
ASN_BUF asn_buf;
|
|
int buf_len=0;
|
|
u32 flag;
|
|
char tag[64];
|
|
char tag1[64];
|
|
u8 temp[8];
|
|
u8 offset=1;
|
|
|
|
flag = ptr->param_flag;
|
|
AsnEncode(buf,256,&asn_buf);
|
|
|
|
sprintf(tag,"%d",DMHPAR_CJCKT);
|
|
buf_len = AddTLV(tag,0,temp,0x60,&asn_buf);
|
|
|
|
if (flag & BIT0_TRUE)
|
|
{
|
|
sprintf(tag,"%d.%d-%d",DMHPAR_CJCKT,DMHPAR_AUDSUB,offset++);
|
|
buf_len = AddTLV(tag,0,temp,0x60,&asn_buf);
|
|
encode_param_audsub(&ptr->audsub,&asn_buf,&buf_len,tag);
|
|
}
|
|
if (flag & BIT1_TRUE)
|
|
{
|
|
sprintf(tag,"%d.%d-%d",DMHPAR_CJCKT,DMHPAR_IDSUB,offset++);
|
|
buf_len = AddTLV(tag,0,temp,0x60,&asn_buf);
|
|
encode_param_idsub(&ptr->idsub,&asn_buf,&buf_len,tag);
|
|
}
|
|
|
|
sprintf(tag1,"%d.16-%d",DMHPAR_CJCKT,offset);
|
|
buf_len = AddTLV(tag1,0,temp,0x20,&asn_buf);
|
|
|
|
if (flag & BIT2_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_ACTSUB);
|
|
buf_len = AddTLV(tag,0,temp,0x60,&asn_buf);
|
|
encode_param_actsub(&ptr->actsub,&asn_buf,&buf_len,tag);
|
|
}
|
|
|
|
if (flag & BIT3_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_AIRSSUB);
|
|
buf_len = AddTLV(tag,0,temp,0x60,&asn_buf);
|
|
encode_param_airssub(&ptr->airssub,&asn_buf,&buf_len,tag);
|
|
}
|
|
|
|
if (flag & BIT4_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_CHRGSUB);
|
|
buf_len = AddTLV(tag,0,temp,0x60,&asn_buf);
|
|
encode_param_chrgsub(&ptr->chrgsub,&asn_buf,&buf_len,tag);
|
|
}
|
|
|
|
if (flag & BIT5_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_FALSUB);
|
|
buf_len = AddTLV(tag,0,temp,0x60,&asn_buf);
|
|
encode_param_falsub(&ptr->falsub,&asn_buf,&buf_len,tag);
|
|
}
|
|
|
|
if (flag & BIT6_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_OLSUB);
|
|
buf_len = AddTLV(tag,0,temp,0x60,&asn_buf);
|
|
encode_param_olsub(&ptr->olsub,&asn_buf,&buf_len,tag);
|
|
}
|
|
|
|
if (flag & BIT7_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_PACASUB);
|
|
buf_len = AddTLV(tag,0,temp,0x60,&asn_buf);
|
|
encode_param_pacasub(&ptr->pacasub,&asn_buf,&buf_len,tag);
|
|
}
|
|
|
|
if (flag & BIT8_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_RLSUB);
|
|
buf_len = AddTLV(tag,0,temp,0x60,&asn_buf);
|
|
encode_param_rlsub(&ptr->rlsub,&asn_buf,&buf_len,tag);
|
|
}
|
|
|
|
if (flag & BIT9_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_TSSUB);
|
|
buf_len = AddTLV(tag,0,temp,0x60,&asn_buf);
|
|
encode_param_tssub(&ptr->tssub,&asn_buf,&buf_len,tag);
|
|
}
|
|
|
|
if (flag & BIT10_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_TLSUB);
|
|
buf_len = AddTLV(tag,0,temp,0x60,&asn_buf);
|
|
encode_param_tlsub(&ptr->tlsub,&asn_buf,&buf_len,tag);
|
|
}
|
|
|
|
if (flag & BIT11_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_AUXLSUB);
|
|
buf_len = AddTLV(tag,0,temp,0x60,&asn_buf);
|
|
encode_param_auxlsub(&ptr->auxlsub,&asn_buf,&buf_len,tag);
|
|
}
|
|
|
|
return buf_len;
|
|
}
|
|
|
|
int assign_DMH_LegJacket(DMH_LegJacket *ptr,u8 *buf)
|
|
{
|
|
ASN_BUF asn_buf;
|
|
int buf_len=0;
|
|
u32 flag;
|
|
char tag[64];
|
|
char tag1[64];
|
|
u8 temp[8];
|
|
u8 offset=1;
|
|
|
|
flag = ptr->param_flag;
|
|
AsnEncode(buf,256,&asn_buf);
|
|
|
|
sprintf(tag,"%d",DMHPAR_LJCKT);
|
|
buf_len = AddTLV(tag,0,temp,0x60,&asn_buf);
|
|
|
|
if (flag & BIT0_TRUE)
|
|
{
|
|
sprintf(tag,"%d.%d-%d",DMHPAR_LJCKT,DMHPAR_IDSUB,offset++);
|
|
buf_len = AddTLV(tag,0,temp,0x60,&asn_buf);
|
|
encode_param_idsub(&ptr->idsub,&asn_buf,&buf_len,tag);
|
|
}
|
|
|
|
sprintf(tag1,"%d.16-%d",DMHPAR_LJCKT,offset);
|
|
buf_len = AddTLV(tag1,0,temp,0x20,&asn_buf);
|
|
|
|
if (flag & BIT1_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_CHRGSUB);
|
|
buf_len = AddTLV(tag,0,temp,0x60,&asn_buf);
|
|
encode_param_chrgsub(&ptr->chrgsub,&asn_buf,&buf_len,tag);
|
|
}
|
|
|
|
if (flag & BIT2_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_FALSUB);
|
|
buf_len = AddTLV(tag,0,temp,0x60,&asn_buf);
|
|
encode_param_falsub(&ptr->falsub,&asn_buf,&buf_len,tag);
|
|
}
|
|
|
|
if (flag & BIT3_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_OLSUB);
|
|
buf_len = AddTLV(tag,0,temp,0x60,&asn_buf);
|
|
encode_param_olsub(&ptr->olsub,&asn_buf,&buf_len,tag);
|
|
}
|
|
|
|
if (flag & BIT4_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_RLSUB);
|
|
buf_len = AddTLV(tag,0,temp,0x60,&asn_buf);
|
|
encode_param_rlsub(&ptr->rlsub,&asn_buf,&buf_len,tag);
|
|
}
|
|
|
|
if (flag & BIT5_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_TLSUB);
|
|
buf_len = AddTLV(tag,0,temp,0x60,&asn_buf);
|
|
encode_param_tlsub(&ptr->tlsub,&asn_buf,&buf_len,tag);
|
|
}
|
|
|
|
if (flag & BIT6_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_AUXLSUB);
|
|
buf_len = AddTLV(tag,0,temp,0x60,&asn_buf);
|
|
encode_param_auxlsub(&ptr->auxlsub,&asn_buf,&buf_len,tag);
|
|
}
|
|
|
|
return buf_len;
|
|
}
|
|
|
|
int assign_DMH_SegmentJacket(DMH_SegmentJacket *ptr,u8 *buf)
|
|
{
|
|
ASN_BUF asn_buf;
|
|
int buf_len=0;
|
|
u32 flag;
|
|
char tag[64];
|
|
char tag1[64];
|
|
u8 temp[8];
|
|
u8 offset=1;
|
|
|
|
flag = ptr->param_flag;
|
|
AsnEncode(buf,256,&asn_buf);
|
|
|
|
sprintf(tag,"%d",DMHPAR_SJCKT);
|
|
buf_len = AddTLV(tag,0,temp,0x60,&asn_buf);
|
|
|
|
if (flag & BIT0_TRUE)
|
|
{
|
|
sprintf(tag,"%d.%d-%d",DMHPAR_SJCKT,DMHPAR_IDSUB,offset++);
|
|
buf_len = AddTLV(tag,0,temp,0x60,&asn_buf);
|
|
encode_param_idsub(&ptr->idsub,&asn_buf,&buf_len,tag);
|
|
}
|
|
|
|
sprintf(tag1,"%d.16-%d",DMHPAR_SJCKT,offset);
|
|
buf_len = AddTLV(tag1,0,temp,0x20,&asn_buf);
|
|
|
|
if (flag & BIT1_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_ACTSUB);
|
|
buf_len = AddTLV(tag,0,temp,0x60,&asn_buf);
|
|
encode_param_actsub(&ptr->actsub,&asn_buf,&buf_len,tag);
|
|
}
|
|
|
|
if (flag & BIT2_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_AIRSSUB);
|
|
buf_len = AddTLV(tag,0,temp,0x60,&asn_buf);
|
|
encode_param_airssub(&ptr->airssub,&asn_buf,&buf_len,tag);
|
|
}
|
|
|
|
if (flag & BIT3_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_CHRGSUB);
|
|
buf_len = AddTLV(tag,0,temp,0x60,&asn_buf);
|
|
encode_param_chrgsub(&ptr->chrgsub,&asn_buf,&buf_len,tag);
|
|
}
|
|
|
|
if (flag & BIT4_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_PACASUB);
|
|
buf_len = AddTLV(tag,0,temp,0x60,&asn_buf);
|
|
encode_param_pacasub(&ptr->pacasub,&asn_buf,&buf_len,tag);
|
|
}
|
|
|
|
if (flag & BIT5_TRUE)
|
|
{
|
|
sprintf(tag,"%s.%d",tag1,DMHPAR_TSSUB);
|
|
buf_len = AddTLV(tag,0,temp,0x60,&asn_buf);
|
|
encode_param_tssub(&ptr->tssub,&asn_buf,&buf_len,tag);
|
|
}
|
|
|
|
return buf_len;
|
|
}
|
|
|
|
|
|
void encode_DMH_date(u8 *date)
|
|
{
|
|
time_t tick;
|
|
struct tm *tm_ptr;
|
|
|
|
time(&tick);
|
|
tm_ptr = gmtime(&tick);
|
|
date[0] = tm_ptr->tm_year-84; //+1900-1984
|
|
date[1] = tm_ptr->tm_mon+1;
|
|
date[2] = tm_ptr->tm_mday;
|
|
}
|
|
|
|
u8 encode_DMH_TimeDateOffset(u8 *TimeDateOffset)
|
|
{
|
|
struct timeval tv;
|
|
struct timezone tz;
|
|
|
|
gettimeofday(&tv, &tz);
|
|
return encode_integer(TimeDateOffset,tz.tz_minuteswest);
|
|
}
|
|
|
|
u8 encode_DMH_TimeOfDay(u8 *TimeOfDay)
|
|
{
|
|
struct timeval tv;
|
|
struct timezone tz;
|
|
u32 time;
|
|
|
|
gettimeofday(&tv, &tz);
|
|
|
|
time = (tv.tv_sec%86400)*10+tv.tv_usec/100000;
|
|
|
|
return encode_integer(TimeOfDay, time);
|
|
}
|