ocs init
This commit is contained in:
490
plat/xapp/src/mapp/is41_coding.c
Normal file
490
plat/xapp/src/mapp/is41_coding.c
Normal file
@@ -0,0 +1,490 @@
|
||||
/* MAP Update Location c file */
|
||||
/* created by daniel zhang 2004-06-17 */
|
||||
/* last modufy by xinyu yan 2006-05-15 */
|
||||
/* ------------------------------------ */
|
||||
|
||||
#include "map_includes.h"
|
||||
#include "map_code.h"
|
||||
|
||||
/* external functions */
|
||||
void is41_debug(DWORD mask, const char *fmt, ...);
|
||||
void is41_showbuf(DWORD mask, BYTE *buf, int len);
|
||||
|
||||
static int (*is41_assign_arg[128]) ();
|
||||
static int (*is41_assign_rsp[128]) ();
|
||||
static int (*is41_extract_arg[128]) ();
|
||||
static int (*is41_extract_rsp[128]) ();
|
||||
static char is41_opr_string[128][48] = {
|
||||
"",
|
||||
"HandoffMeasurementRequest",
|
||||
"FacilitiesDirective",
|
||||
"MobileOnChannel",
|
||||
"HandoffBack",
|
||||
"FacilitiesRelease",
|
||||
"QualificationRequest",
|
||||
"QualificationDirective",
|
||||
"Blocking",
|
||||
"Unblocking",
|
||||
"ResetCircuit",
|
||||
"TrunkTest",
|
||||
"TrunkTestDisconnect",
|
||||
"RegistrationNotification",
|
||||
"RegistrationCancellation",
|
||||
"LocationRequest",
|
||||
"RoutingRequest",
|
||||
"FeatureRequest",
|
||||
"ServiceProfileRequest",
|
||||
"ServiceProfileDirective",
|
||||
"UnreliableRoamerDataDirective",
|
||||
"CallDataREquest",
|
||||
"MSInactive",
|
||||
"TransferToNumberRequest",
|
||||
"RedirectionRequest",
|
||||
"HandoffToThird",
|
||||
"FlashRequest",
|
||||
"AuthenticationDirective",
|
||||
"AuthenticationRequest",
|
||||
"BaseStationChallenge",
|
||||
"AuthenticationFailureReport",
|
||||
"CountRequest",
|
||||
"InterSystemPage",
|
||||
"UnsolicitedResponse",
|
||||
"BulkDeregistration",
|
||||
"HandoffMeasurementRequest2",
|
||||
"FacilitiesDirective2",
|
||||
"HandoffBack2",
|
||||
"HandoffToThird2",
|
||||
"AuthenticationDirectiveForward",
|
||||
"AuthenticationStatusReport",
|
||||
"InformationBackward",
|
||||
"InformationDirective",
|
||||
"InformationForward",
|
||||
"InterSystemAnswer",
|
||||
"InterSystemPage2",
|
||||
"InterSystemSetup",
|
||||
"OriginationRequest",
|
||||
"RandomVariableRequest",
|
||||
"RedirectionDirective",
|
||||
"RemoteUserInteractionDirective",
|
||||
"SMSDeliveryBackward",
|
||||
"SMSDeliveryForward",
|
||||
"SMSDeliveryPointToPoint",
|
||||
"SMSNotification",
|
||||
"SMSRequest",
|
||||
"", "", "", "", "", "", "", "",
|
||||
"AnalyzedInformation",
|
||||
"ConnectionFailureReport",
|
||||
"ConnectResource",
|
||||
"DisconnectResource",
|
||||
"FacilitySelectedAndAvailable",
|
||||
"InstructionRequest",
|
||||
"Modify",
|
||||
"ResetTimer",
|
||||
"Search",
|
||||
"SeizeResource",
|
||||
"SRFDirective",
|
||||
"TBusy",
|
||||
"TNoAnswer",
|
||||
"", "", "",
|
||||
"BulkDisconnection",
|
||||
"CallControlDirective",
|
||||
"OAnswer",
|
||||
"ODisconnect",
|
||||
"CallRecoveryReport",
|
||||
"TAnswer",
|
||||
"TDisconnect",
|
||||
"UnreliableCallData",
|
||||
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
|
||||
"ShortMessageAnalyzed",
|
||||
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""
|
||||
};
|
||||
|
||||
void is41_register_encode_arg(u8 opr_code, int (*func)())
|
||||
{
|
||||
is41_assign_arg[opr_code] = func;
|
||||
}
|
||||
|
||||
void is41_register_encode_rsp(u8 opr_code, int (*func)())
|
||||
{
|
||||
is41_assign_rsp[opr_code] = func;
|
||||
}
|
||||
|
||||
void is41_register_decode_arg(u8 opr_code, int (*func)())
|
||||
{
|
||||
is41_extract_arg[opr_code] = func;
|
||||
}
|
||||
|
||||
void is41_register_decode_rsp(u8 opr_code, int (*func)())
|
||||
{
|
||||
is41_extract_rsp[opr_code] = func;
|
||||
}
|
||||
|
||||
void init_assignFunc_pointer()
|
||||
{
|
||||
is41_register_encode_arg(IS41OPR_AuthenticationDirective, assign_is41AuthenticationDirective_arg);
|
||||
is41_register_encode_rsp(IS41OPR_AuthenticationDirective, assign_is41AuthenticationDirective_rsp);
|
||||
|
||||
is41_register_encode_arg(IS41OPR_AuthenticationFailureReport, assign_is41AuthenticationFailureReport_arg);
|
||||
is41_register_encode_rsp(IS41OPR_AuthenticationFailureReport, assign_is41AuthenticationFailureReport_rsp);
|
||||
|
||||
is41_register_encode_arg(IS41OPR_AuthenticationRequest, assign_is41AuthenticationRequest_arg);
|
||||
is41_register_encode_rsp(IS41OPR_AuthenticationRequest, assign_is41AuthenticationRequest_rsp);
|
||||
|
||||
is41_register_encode_arg(IS41OPR_AuthenticationStatusReport, assign_is41AuthenticationStatusReport_arg);
|
||||
is41_register_encode_rsp(IS41OPR_AuthenticationStatusReport, assign_is41AuthenticationStatusReport_rsp);
|
||||
|
||||
is41_register_encode_arg(IS41OPR_AuthenticationDirectiveForward, assign_is41AuthenticationDirectiveForward_arg);
|
||||
|
||||
is41_register_encode_arg(IS41OPR_BaseStationChallenge, assign_is41BaseStationChallenge_arg);
|
||||
is41_register_encode_rsp(IS41OPR_BaseStationChallenge, assign_is41BaseStationChallenge_rsp);
|
||||
|
||||
is41_register_encode_arg(IS41OPR_CountRequest, assign_is41CountRequest_arg);
|
||||
is41_register_encode_rsp(IS41OPR_CountRequest, assign_is41CountRequest_rsp);
|
||||
|
||||
is41_register_encode_arg(IS41OPR_SMSDeliveryBackward, assign_Is41SmsDeliveryBackward_arg);
|
||||
is41_register_encode_rsp(IS41OPR_SMSDeliveryBackward, assign_Is41SmsDeliveryBackward_rsp);
|
||||
|
||||
is41_register_encode_arg(IS41OPR_SMSDeliveryForward, assign_Is41SmsDeliveryForward_arg);
|
||||
is41_register_encode_rsp(IS41OPR_SMSDeliveryForward, assign_Is41SmsDeliveryForward_rsp);
|
||||
|
||||
is41_register_encode_arg(IS41OPR_SMSDeliveryPointToPoint, assign_Is41SmsDeliveryPointToPoint_arg);
|
||||
is41_register_encode_rsp(IS41OPR_SMSDeliveryPointToPoint, assign_Is41SmsDeliveryPointToPoint_rsp);
|
||||
|
||||
is41_register_encode_arg(IS41OPR_SMSNotification, assign_Is41SmsNotification_arg);
|
||||
is41_register_encode_rsp(IS41OPR_SMSNotification, assign_Is41SmsNotification_rsp);
|
||||
|
||||
is41_register_encode_arg(IS41OPR_SMSRequest, assign_Is41SmsRequest_arg);
|
||||
is41_register_encode_rsp(IS41OPR_SMSRequest, assign_Is41SmsRequest_rsp);
|
||||
|
||||
is41_register_encode_arg(IS41OPR_RegistrationNotification, assign_is41RegistrationNotification_arg);
|
||||
is41_register_encode_rsp(IS41OPR_RegistrationNotification, assign_is41RegistrationNotification_rsp);
|
||||
is41_register_encode_arg(IS41OPR_RegistrationCancellation, assign_is41RegistrationCancellation_arg);
|
||||
is41_register_encode_rsp(IS41OPR_RegistrationCancellation, assign_is41RegistrationCancellation_rsp);
|
||||
is41_register_encode_arg(IS41OPR_LocationRequest, assign_is41LocationRequest_arg);
|
||||
is41_register_encode_rsp(IS41OPR_LocationRequest, assign_is41LocationRequest_rsp);
|
||||
is41_register_encode_arg(IS41OPR_RoutingRequest, assign_is41RoutingRequest_arg);
|
||||
is41_register_encode_rsp(IS41OPR_RoutingRequest, assign_is41RoutingRequest_rsp);
|
||||
is41_register_encode_arg(IS41OPR_MSInactive, assign_is41MSInactive_arg);
|
||||
is41_register_encode_rsp(IS41OPR_MSInactive, assign_is41MSInactive_rsp);
|
||||
|
||||
is41_register_encode_arg(IS41OPR_FeatureRequest, assign_is41FeatureRequest_arg);
|
||||
is41_register_encode_rsp(IS41OPR_FeatureRequest, assign_is41FeatureRequest_rsp);
|
||||
|
||||
is41_register_encode_arg(IS41OPR_QualificationDirective, assign_is41QualificationDirective_arg);
|
||||
is41_register_encode_rsp(IS41OPR_QualificationDirective, assign_is41QualificationDirective_rsp);
|
||||
|
||||
is41_register_encode_arg(IS41OPR_TransferToNumberRequest, assign_is41TransferToNumberRequest_arg);
|
||||
is41_register_encode_rsp(IS41OPR_TransferToNumberRequest, assign_is41TransferToNumberRequest_rsp);
|
||||
|
||||
is41_register_encode_arg(IS41OPR_RedirectionRequest, assign_is41RedirectionRequest_arg);
|
||||
is41_register_encode_rsp(IS41OPR_RedirectionRequest, assign_is41RedirectionRequest_rsp);
|
||||
|
||||
is41_register_encode_arg(IS41OPR_OriginationRequest, assign_is41OriginationRequest_arg);
|
||||
is41_register_encode_rsp(IS41OPR_OriginationRequest, assign_is41OriginationRequest_rsp);
|
||||
|
||||
is41_register_encode_arg(IS41OPR_AnalyzedInformation, assign_is41AnalyzedInformation_arg);
|
||||
is41_register_encode_rsp(IS41OPR_AnalyzedInformation, assign_is41AnalyzedInformation_rsp);
|
||||
|
||||
is41_register_encode_arg(IS41OPR_OAnswer, assign_is41OAnswer_arg);
|
||||
|
||||
is41_register_encode_arg(IS41OPR_ODisconnect, assign_is41ODisconnect_arg);
|
||||
is41_register_encode_rsp(IS41OPR_ODisconnect, assign_is41ODisconnect_rsp);
|
||||
|
||||
is41_register_encode_arg(IS41OPR_TAnswer, assign_is41TAnswer_arg);
|
||||
|
||||
is41_register_encode_arg(IS41OPR_TDisconnect, assign_is41TDisconnect_arg);
|
||||
is41_register_encode_rsp(IS41OPR_TDisconnect, assign_is41TDisconnect_rsp);
|
||||
|
||||
is41_register_encode_arg(IS41OPR_CallControlDirective, assign_is41CallControlDirective_arg);
|
||||
is41_register_encode_rsp(IS41OPR_CallControlDirective, assign_is41CallControlDirective_rsp);
|
||||
|
||||
is41_register_encode_arg(IS41OPR_SeizeResource, assign_is41SeizeResource_arg);
|
||||
is41_register_encode_rsp(IS41OPR_SeizeResource, assign_is41SeizeResource_rsp);
|
||||
|
||||
is41_register_encode_arg(IS41OPR_ConnectResource, assign_is41ConnectResource_arg);
|
||||
|
||||
is41_register_encode_arg(IS41OPR_SRFDirective, assign_is41SRFDirective_arg);
|
||||
is41_register_encode_rsp(IS41OPR_SRFDirective, assign_is41SRFDirective_rsp);
|
||||
|
||||
is41_register_encode_arg(IS41OPR_ShortMessageAnalyzed, assign_is41ShortMessageAnalyzed_arg);
|
||||
is41_register_encode_rsp(IS41OPR_ShortMessageAnalyzed, assign_is41ShortMessageAnalyzed_rsp);
|
||||
}
|
||||
|
||||
void init_extractFunc_pointer()
|
||||
{
|
||||
is41_register_decode_arg(IS41OPR_AuthenticationDirective, extract_is41AuthenticationDirective_arg);
|
||||
is41_register_decode_rsp(IS41OPR_AuthenticationDirective, extract_is41AuthenticationDirective_rsp);
|
||||
|
||||
is41_register_decode_arg(IS41OPR_AuthenticationFailureReport, extract_is41AuthenticationFailureReport_arg);
|
||||
is41_register_decode_rsp(IS41OPR_AuthenticationFailureReport, extract_is41AuthenticationFailureReport_rsp);
|
||||
|
||||
is41_register_decode_arg(IS41OPR_AuthenticationRequest, extract_is41AuthenticationRequest_arg);
|
||||
is41_register_decode_rsp(IS41OPR_AuthenticationRequest, extract_is41AuthenticationRequest_rsp);
|
||||
|
||||
is41_register_decode_arg(IS41OPR_AuthenticationStatusReport, extract_is41AuthenticationStatusReport_arg);
|
||||
is41_register_decode_rsp(IS41OPR_AuthenticationStatusReport, extract_is41AuthenticationStatusReport_rsp);
|
||||
|
||||
is41_register_decode_arg(IS41OPR_AuthenticationDirectiveForward, extract_is41AuthenticationDirectiveForward_arg);
|
||||
|
||||
is41_register_decode_arg(IS41OPR_BaseStationChallenge, extract_is41BaseStationChallenge_arg);
|
||||
is41_register_decode_rsp(IS41OPR_BaseStationChallenge, extract_is41BaseStationChallenge_rsp);
|
||||
|
||||
is41_register_decode_arg(IS41OPR_CountRequest, extract_is41CountRequest_arg);
|
||||
is41_register_decode_rsp(IS41OPR_CountRequest, extract_is41CountRequest_rsp);
|
||||
|
||||
is41_register_decode_arg(IS41OPR_SMSDeliveryBackward, extract_Is41SmsDeliveryBackward_arg);
|
||||
is41_register_decode_rsp(IS41OPR_SMSDeliveryBackward, extract_Is41SmsDeliveryBackward_rsp);
|
||||
|
||||
is41_register_decode_arg(IS41OPR_SMSDeliveryForward, extract_Is41SmsDeliveryForward_arg);
|
||||
is41_register_decode_rsp(IS41OPR_SMSDeliveryForward, extract_Is41SmsDeliveryForward_rsp);
|
||||
|
||||
is41_register_decode_arg(IS41OPR_SMSDeliveryPointToPoint, extract_Is41SmsDeliveryPointToPoint_arg);
|
||||
is41_register_decode_rsp(IS41OPR_SMSDeliveryPointToPoint, extract_Is41SmsDeliveryPointToPoint_rsp);
|
||||
|
||||
is41_register_decode_arg(IS41OPR_SMSNotification, extract_Is41SmsNotification_arg);
|
||||
is41_register_decode_rsp(IS41OPR_SMSNotification, extract_Is41SmsNotification_rsp);
|
||||
|
||||
is41_register_decode_arg(IS41OPR_SMSRequest, extract_Is41SmsRequest_arg);
|
||||
is41_register_decode_rsp(IS41OPR_SMSRequest, extract_Is41SmsRequest_rsp);
|
||||
|
||||
is41_register_decode_arg(IS41OPR_RegistrationNotification, extract_is41RegistrationNotification_arg);
|
||||
is41_register_decode_rsp(IS41OPR_RegistrationNotification, extract_is41RegistrationNotification_rsp);
|
||||
is41_register_decode_arg(IS41OPR_RegistrationCancellation, extract_is41RegistrationCancellation_arg);
|
||||
is41_register_decode_rsp(IS41OPR_RegistrationCancellation, extract_is41RegistrationCancellation_rsp);
|
||||
is41_register_decode_arg(IS41OPR_LocationRequest, extract_is41LocationRequest_arg);
|
||||
is41_register_decode_rsp(IS41OPR_LocationRequest, extract_is41LocationRequest_rsp);
|
||||
is41_register_decode_arg(IS41OPR_RoutingRequest, extract_is41RoutingRequest_arg);
|
||||
is41_register_decode_rsp(IS41OPR_RoutingRequest, extract_is41RoutingRequest_rsp);
|
||||
is41_register_decode_arg(IS41OPR_MSInactive, extract_is41MSInactive_arg);
|
||||
is41_register_decode_rsp(IS41OPR_MSInactive, extract_is41MSInactive_rsp);
|
||||
|
||||
is41_register_decode_arg(IS41OPR_FeatureRequest, extract_is41FeatureRequest_arg);
|
||||
is41_register_decode_rsp(IS41OPR_FeatureRequest, extract_is41FeatureRequest_rsp);
|
||||
|
||||
is41_register_decode_arg(IS41OPR_QualificationDirective, extract_is41QualificationDirective_arg);
|
||||
is41_register_decode_rsp(IS41OPR_QualificationDirective, extract_is41QualificationDirective_rsp);
|
||||
|
||||
is41_register_decode_arg(IS41OPR_TransferToNumberRequest, extract_is41TransferToNumberRequest_arg);
|
||||
is41_register_decode_rsp(IS41OPR_TransferToNumberRequest, extract_is41TransferToNumberRequest_rsp);
|
||||
|
||||
is41_register_decode_arg(IS41OPR_RedirectionRequest, extract_is41RedirectionRequest_arg);
|
||||
is41_register_decode_rsp(IS41OPR_RedirectionRequest, extract_is41RedirectionRequest_rsp);
|
||||
|
||||
is41_register_decode_arg(IS41OPR_OriginationRequest, extract_is41OriginationRequest_arg);
|
||||
is41_register_decode_rsp(IS41OPR_OriginationRequest, extract_is41OriginationRequest_rsp);
|
||||
|
||||
is41_register_decode_arg(IS41OPR_AnalyzedInformation, extract_is41AnalyzedInformation_arg);
|
||||
is41_register_decode_rsp(IS41OPR_AnalyzedInformation, extract_is41AnalyzedInformation_rsp);
|
||||
|
||||
is41_register_decode_arg(IS41OPR_OAnswer, extract_is41OAnswer_arg);
|
||||
|
||||
is41_register_decode_arg(IS41OPR_ODisconnect, extract_is41ODisconnect_arg);
|
||||
is41_register_decode_rsp(IS41OPR_ODisconnect, extract_is41ODisconnect_rsp);
|
||||
|
||||
is41_register_decode_arg(IS41OPR_TAnswer, extract_is41TAnswer_arg);
|
||||
|
||||
is41_register_decode_arg(IS41OPR_TDisconnect, extract_is41TDisconnect_arg);
|
||||
is41_register_decode_rsp(IS41OPR_TDisconnect, extract_is41TDisconnect_rsp);
|
||||
|
||||
is41_register_decode_arg(IS41OPR_CallControlDirective, extract_is41CallControlDirective_arg);
|
||||
is41_register_decode_rsp(IS41OPR_CallControlDirective, extract_is41CallControlDirective_rsp);
|
||||
|
||||
is41_register_decode_arg(IS41OPR_SeizeResource, extract_is41SeizeResource_arg);
|
||||
is41_register_decode_rsp(IS41OPR_SeizeResource, extract_is41SeizeResource_rsp);
|
||||
|
||||
is41_register_decode_arg(IS41OPR_ConnectResource, extract_is41ConnectResource_arg);
|
||||
|
||||
is41_register_decode_arg(IS41OPR_SRFDirective, extract_is41SRFDirective_arg);
|
||||
is41_register_decode_rsp(IS41OPR_SRFDirective, extract_is41SRFDirective_rsp);
|
||||
|
||||
is41_register_decode_arg(IS41OPR_ShortMessageAnalyzed, extract_is41ShortMessageAnalyzed_arg);
|
||||
is41_register_decode_rsp(IS41OPR_ShortMessageAnalyzed, extract_is41ShortMessageAnalyzed_rsp);
|
||||
}
|
||||
|
||||
int is41_u8Type_to_charType(u8 type,char *cType)
|
||||
{
|
||||
if(type >= 128)
|
||||
return 0;
|
||||
else if(strlen(is41_opr_string[type]) == 0)
|
||||
return 0;
|
||||
strcpy(cType, is41_opr_string[type]);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*int is41_u8Type_to_charType(u8 type,char *cType)
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
// Authentication service operation
|
||||
case IS41OPR_AuthenticationDirective:
|
||||
sprintf(cType,"AuthenticationDirective");
|
||||
break;
|
||||
case IS41OPR_AuthenticationFailureReport:
|
||||
sprintf(cType,"AuthenticationFailureReport");
|
||||
break;
|
||||
case IS41OPR_AuthenticationRequest:
|
||||
sprintf(cType,"AuthenticationRequest");
|
||||
break;
|
||||
case IS41OPR_AuthenticationStatusReport:
|
||||
sprintf(cType,"AuthenticationStatusReport");
|
||||
break;
|
||||
case IS41OPR_AuthenticationDirectiveForward:
|
||||
sprintf(cType,"AuthenticationDirectiveForward");
|
||||
break;
|
||||
case IS41OPR_CountRequest:
|
||||
sprintf(cType,"CountRequest");
|
||||
break;
|
||||
case IS41OPR_BaseStationChallenge:
|
||||
sprintf(cType,"BaseStationChallenge");
|
||||
break;
|
||||
case IS41OPR_SMSDeliveryBackward:
|
||||
sprintf(cType,"SMSDeliveryBackward");
|
||||
break;
|
||||
case IS41OPR_SMSDeliveryForward:
|
||||
sprintf(cType,"SMSDeliveryForward");
|
||||
break;
|
||||
case IS41OPR_SMSDeliveryPointToPoint:
|
||||
sprintf(cType,"SMSDeliveryPointToPoint");
|
||||
break;
|
||||
case IS41OPR_SMSNotification:
|
||||
sprintf(cType,"IS41OPR_SMSNotification");
|
||||
break;
|
||||
case IS41OPR_SMSRequest:
|
||||
sprintf(cType,"SMSRequest");
|
||||
break;
|
||||
|
||||
case IS41OPR_RegistrationNotification:
|
||||
sprintf(cType,"REGNOT");
|
||||
break;
|
||||
case IS41OPR_RegistrationCancellation:
|
||||
sprintf(cType,"REGCANC");
|
||||
break;
|
||||
case IS41OPR_LocationRequest:
|
||||
sprintf(cType,"LOCREQ");
|
||||
break;
|
||||
case IS41OPR_RoutingRequest:
|
||||
sprintf(cType,"ROUTREQ");
|
||||
break;
|
||||
case IS41OPR_MSInactive:
|
||||
sprintf(cType,"MSINACT");
|
||||
break;
|
||||
case IS41OPR_FeatureRequest:
|
||||
sprintf(cType,"FEATREQ");
|
||||
break;
|
||||
case IS41OPR_QualificationDirective:
|
||||
sprintf(cType,"QUALDIR");
|
||||
break;
|
||||
case IS41OPR_TransferToNumberRequest:
|
||||
sprintf(cType,"TRANUMREQ");
|
||||
break;
|
||||
case IS41OPR_RedirectionRequest:
|
||||
sprintf(cType,"REDREQ");
|
||||
break;
|
||||
|
||||
default: // unknown operation
|
||||
// sprintf(info_str,"MAPP error:the operation is unknown:%d",opr_ptr->message_type);
|
||||
// xap_send_error(info_str);
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}*/
|
||||
|
||||
int build_is41param(struct MapOprSrv_struct *opr_ptr,u8 *buf) // build is41 service paramter
|
||||
{
|
||||
ASN_BUF asn_buf;
|
||||
u8 seq_flag=1;
|
||||
int param_len = 0;
|
||||
u8 info_str[1024];
|
||||
char charName[128];
|
||||
|
||||
if (opr_ptr == NULL || buf == NULL)
|
||||
return 0;
|
||||
if (!is41_u8Type_to_charType(opr_ptr->message_type,charName))
|
||||
{
|
||||
is41_debug(IS41DB_ENCODE,"[IS41-Encode]Building param,Operation code:%d not correct",opr_ptr->message_type);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (opr_ptr->message_flag == MAP_REQUEST)
|
||||
{
|
||||
is41_debug(IS41DB_ENCODE,"[IS41-Encode] MAP_REQUEST,OPRType=%s",charName);
|
||||
param_len = (*is41_assign_arg[opr_ptr->message_type]) (opr_ptr,buf);
|
||||
}
|
||||
else if (opr_ptr->message_flag == MAP_RESPONSE)
|
||||
{
|
||||
is41_debug(IS41DB_ENCODE,"[IS41-Encode] MAP_RESPONSE,OPRType=%s",charName);
|
||||
param_len = (*is41_assign_rsp[opr_ptr->message_type])(opr_ptr,buf);
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
|
||||
if (seq_flag == 1 && param_len > 0)
|
||||
{
|
||||
memcpy(info_str,buf,param_len%1024);
|
||||
AsnEncode(buf,256,&asn_buf);
|
||||
param_len = AddTLV(SET_NATIONAL,param_len,info_str,0xe0,&asn_buf);
|
||||
is41_debug(IS41DB_ENCODE,"[IS41-Encode] Completed,len=%d",param_len);
|
||||
is41_showbuf(IS41DB_ENCODE,buf,param_len);
|
||||
}
|
||||
else
|
||||
{
|
||||
AsnEncode(buf,256,&asn_buf);
|
||||
param_len = AddTLV(SET_NATIONAL,0,info_str,0xc0,&asn_buf);
|
||||
is41_debug(IS41DB_ENCODE,"[IS41-Encode] Completed,paramlen=0");
|
||||
is41_showbuf(IS41DB_ENCODE,buf,param_len);
|
||||
}
|
||||
return param_len;
|
||||
}
|
||||
|
||||
u8 extract_is41param(struct MapOprSrv_struct *opr_ptr,u8 opr_code,u8 opr_flag,u32 pre_param_len,u8 *pre_param)
|
||||
{
|
||||
ASN_BUF asn_buf;
|
||||
// u8 info_str[1024];
|
||||
u8 param[1024];
|
||||
int param_len;
|
||||
char charName[128];
|
||||
|
||||
asn_decode(pre_param,1,&asn_buf);
|
||||
param_len = get_tlv(SET_NATIONAL,param,&asn_buf);
|
||||
|
||||
if (param_len == -1) // not has sequence id
|
||||
{
|
||||
param_len = pre_param_len;
|
||||
memcpy(param,pre_param,param_len);
|
||||
}
|
||||
|
||||
if (!is41_u8Type_to_charType(opr_code,charName))
|
||||
{
|
||||
is41_debug(IS41DB_ENCODE,"[IS41-Encode]Extracting param,Operation code:%d not correct",opr_code);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (opr_flag == MAP_INDICATE)
|
||||
{
|
||||
is41_debug(IS41DB_DECODE,"[IS41-Decode]USER->IS41P,IS41_INDICATE,OPRType=%s",charName);
|
||||
is41_showbuf(IS41DB_DECODE,param,param_len);
|
||||
if (*is41_extract_arg[opr_code] != NULL)
|
||||
{
|
||||
return (*is41_extract_arg[opr_code])(opr_ptr,param_len,param);
|
||||
}
|
||||
else
|
||||
{
|
||||
is41_debug(IS41DB_ERR,"[IS41-Decode]No decode function for IS41_INDICATE opr_code=%d",opr_code);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
else if (opr_flag == MAP_CONFIRM)
|
||||
{
|
||||
is41_debug(IS41DB_DECODE,"[IS41-Decode]USER->IS41P,MAP_CONFIRM,OPRType=%s",charName);
|
||||
is41_showbuf(IS41DB_DECODE,param,param_len);
|
||||
if (*is41_extract_rsp[opr_code] != NULL)
|
||||
return (*is41_extract_rsp[opr_code])(opr_ptr,param_len,param);
|
||||
else
|
||||
{
|
||||
is41_debug(IS41DB_ERR,"[IS41-Decode]No decode function for IS41_CONFIRM opr_code=%d",opr_code);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
Reference in New Issue
Block a user