Files
svc.ems/plat/bicc/src.old/bicc_msg.c
2024-09-27 15:39:34 +08:00

1286 lines
33 KiB
C

#include "./include/inc.h"
#include "./include/var_ext.h"
BiccMsg_union msg_union[BICC_MAX_PORT];
//static up_message_2 up_msg;
extern void apm_decode(ApmUser_struct *ptr, const u8 *flw_ptr, u8 length);
extern u32 apm_encode(u8 *flw_ptr, const ApmUser_struct *ptr);
extern void bicc_prm2msg(BiccMsg_union *msg_ptr, BiccWritePrim_union *prm_ptr, u8 msg_type);
void bicc_decode_app(AppTrans_struct *ptr, const u8 *flw_ptr, u8 length)
{
int i = 0;
ptr->pres = 1;
ptr->aci[0] = flw_ptr[i];
if((flw_ptr[i++] >> 7) == 0)
ptr->aci[1] = flw_ptr[i++];
ptr->sni = (flw_ptr[i] >> 1) & 0x01;
ptr->rci = flw_ptr[i++] & 0x01;
ptr->si = (flw_ptr[i] >> 6) & 0x01;
ptr->segment = flw_ptr[i] & 0x3f;
if((flw_ptr[i++] >> 7) == 0)
ptr->slr = flw_ptr[i++] & 0x7f;
if(length > i)
apm_decode(&ptr->apm_info, flw_ptr+i, length-i);
}
u32 bicc_encode_app(u8 *flw_ptr, const AppTrans_struct *ptr)
{
int i = 0;
flw_ptr[i++] = ptr->aci[0] | 0x80;
// if((ptr->aci[0] >> 7) == 0)
// flw_ptr[i++] = ptr->aci[1];
flw_ptr[i++] = (ptr->sni << 1) + ptr->rci;
flw_ptr[i++] = ((ptr->si << 6) + ptr->segment) | 0x80;
return i + apm_encode(flw_ptr+i, &ptr->apm_info);
}
void bicc_decode_backcall(BackCallInd_struct *ptr, const u8 *flw_ptr)
{
ptr->pres = 1;
ptr->val[0] = flw_ptr[0];
ptr->val[1] = flw_ptr[1];
}
u32 bicc_encode_backcall(u8 *flw_ptr, const BackCallInd_struct *ptr)
{
flw_ptr[0] = ptr->val[0];
flw_ptr[1] = ptr->val[1];
return 2;
}
void bicc_decode_calledptynum(CalledPtyNum_struct *ptr, const u8 *flw_ptr, u8 length)
{
u32 i, j;
u8 num_len;
const u8 *num_ptr;
if(length <= 2)
return;
ptr->pres = 1;
ptr->nai = flw_ptr[0] & 0x7f;
ptr->inn = flw_ptr[1] >> 7;
ptr->npi = (flw_ptr[1] >> 4) & 0x07;
num_len = length - 2;
num_ptr = flw_ptr + 2;
for(i = 0, j = 0; i < num_len; i++)
{
ptr->digit[j++] = num_ptr[i] & 0x0f;
ptr->digit[j++] = num_ptr[i] >> 4;
}
if((flw_ptr[0] >> 7) && (j > 0))
j--;
ptr->numOfDigit = j;
}
u32 bicc_encode_calledptynum(u8 *flw_ptr, const CalledPtyNum_struct *ptr)
{
u32 i, j;
u8 num_len;
u8 *num_ptr;
num_len = ptr->numOfDigit/2 + (ptr->numOfDigit & 0x01);
num_ptr = flw_ptr + 2;
flw_ptr[0] = (ptr->numOfDigit << 7) + ptr->nai;
flw_ptr[1] = ((ptr->inn << 7) + (ptr->npi << 4)) & 0xf0;
for(i = 0, j = 0; i < num_len; i++)
{
num_ptr[i] = ptr->digit[j++] & 0x0f;
num_ptr[i] += ptr->digit[j++] << 4;
}
if(ptr->numOfDigit & 0x01)
num_ptr[i] &= 0x0f;
return num_len + 2;
}
void bicc_decode_callingptynum(CallingPtyNum_struct *ptr, const u8 *flw_ptr, u8 length)
{
u32 i, j;
u8 num_len;
const u8 *num_ptr;
if(length <= 2)
return;
ptr->pres = 1;
ptr->nai = flw_ptr[0] & 0x7f;
ptr->ni = flw_ptr[1] >> 7;
ptr->npi = (flw_ptr[1] >> 4) & 0x07;
ptr->apri = (flw_ptr[1] >> 2) & 0x03;
ptr->si = flw_ptr[1] & 0x03;
num_len = length - 2;
num_ptr = flw_ptr + 2;
for(i = 0, j = 0; i < num_len; i++)
{
ptr->digit[j++] = num_ptr[i] & 0x0f;
ptr->digit[j++] = num_ptr[i] >> 4;
}
if((flw_ptr[0] >> 7) && (j > 0))
j--;
ptr->numOfDigit = j;
}
u32 bicc_encode_callingptynum(u8 *flw_ptr, const CallingPtyNum_struct *ptr)
{
u32 i, j;
u8 num_len;
u8 *num_ptr;
num_len = ptr->numOfDigit/2 + (ptr->numOfDigit & 0x01);
num_ptr = flw_ptr + 2;
flw_ptr[0] = (ptr->numOfDigit << 7) + ptr->nai;
flw_ptr[1] = (ptr->ni << 7) + (ptr->npi << 4) + (ptr->apri << 2) + ptr->si;
for(i = 0, j = 0; i < num_len; i++)
{
num_ptr[i] = ptr->digit[j++] & 0x0f;
num_ptr[i] += ptr->digit[j++] << 4;
}
if(ptr->numOfDigit & 0x01)
num_ptr[i] &= 0x0f;
return num_len + 2;
}
void bicc_decode_callingptycat(CallingPtyCat_struct *ptr, const u8 *flw_ptr)
{
ptr->pres = 1;
ptr->val = *flw_ptr;
}
u32 bicc_encode_callingptycat(u8 *flw_ptr, const CallingPtyCat_struct *ptr)
{
flw_ptr[0] = ptr->val;
return 1;
}
u32 bicc_encode_cause(u8 *flw_ptr, const CauseInd_struct *ptr)
{
flw_ptr[0] = ((ptr->codingStd << 5) + ptr->location) & 0x7f;
flw_ptr[1] = 0x80 | ptr->causeVal;
return 2;
}
void bicc_decode_cause(CauseInd_struct *ptr, const u8 *flw_ptr, u8 length)
{
ptr->pres = 1;
ptr->codingStd = (flw_ptr[0] >> 5) & 0x03;
ptr->location = flw_ptr[0] & 0x0f;
ptr->causeVal = flw_ptr[1] & 0x7f;
}
void bicc_decode_cicgrpspv(CicGrpSpv_struct *ptr, const u8 *flw_ptr)
{
ptr->pres = 1;
ptr->val = *flw_ptr;
}
u32 bicc_encode_cicgrpspv(u8 *flw_ptr, const CicGrpSpv_struct *ptr)
{
flw_ptr[0] = ptr->val;
return 1;
}
void bicc_decode_collectcallreq(CollectCallReq_struct *ptr, const u8 *flw_ptr)
{
ptr->pres = 1;
ptr->val = *flw_ptr;
}
u32 bicc_encode_collectcallreq(u8 *flw_ptr, const CollectCallReq_struct *ptr)
{
flw_ptr[0] = ptr->val;
return 1;
}
void bicc_decode_conftreat(ConfTreatInd_struct *ptr, const u8 *flw_ptr)
{
ptr->pres = 1;
ptr->val = *flw_ptr;
}
u32 bicc_encode_conftreat(u8 *flw_ptr, const ConfTreatInd_struct *ptr)
{
flw_ptr[0] = ptr->val;
return 1;
}
void bicc_decode_connnum(ConnNum_struct *ptr, const u8 *flw_ptr, u8 length)
{
u32 i, j;
u8 num_len;
const u8 *num_ptr;
if(length <= 2)
return;
ptr->pres = 1;
ptr->nai = flw_ptr[0] & 0x7f;
ptr->npi = (flw_ptr[1] >> 4) & 0x07;
ptr->apri = (flw_ptr[1] >> 2) & 0x03;
ptr->si = flw_ptr[1] & 0x03;
num_len = length - 2;
num_ptr = flw_ptr + 2;
for(i = 0, j = 0; i < num_len; i++)
{
ptr->digit[j++] = num_ptr[i] & 0x0f;
ptr->digit[j++] = num_ptr[i] >> 4;
}
if((flw_ptr[0] >> 7) && (j > 0))
j--;
ptr->numOfDigit = j;
}
u32 bicc_encode_connnum(u8 *flw_ptr, const ConnNum_struct *ptr)
{
u32 i, j;
u8 num_len;
u8 *num_ptr;
num_len = ptr->numOfDigit/2 + (ptr->numOfDigit & 0x01);
num_ptr = flw_ptr + 2;
flw_ptr[0] = (ptr->numOfDigit << 7) + ptr->nai;
flw_ptr[1] = ((ptr->npi << 4) + (ptr->apri << 2) + ptr->si) & 0x7f;
for(i = 0, j = 0; i < num_len; i++)
{
num_ptr[i] = ptr->digit[j++] & 0x0f;
num_ptr[i] += ptr->digit[j++] << 4;
}
if(ptr->numOfDigit & 0x01)
num_ptr[i] &= 0x0f;
return num_len + 2;
}
void bicc_decode_genericnumber(GenericNumber_struct *ptr, const u8 *flw_ptr, u8 length)
{
u32 i, j;
u8 num_len;
const u8 *num_ptr;
if(length <= 3)
return;
ptr->pres = 1;
ptr->nqi = flw_ptr[0];
ptr->nai = flw_ptr[1] & 0x7f;
ptr->ni = flw_ptr[2] >> 7;
ptr->npi = (flw_ptr[2] >> 4) & 0x07;
ptr->apri = (flw_ptr[2] >> 2) & 0x03;
ptr->si = flw_ptr[2] & 0x03;
num_len = length - 3;
num_ptr = flw_ptr + 3;
for(i = 0, j = 0; i < num_len; i++)
{
ptr->digit[j++] = num_ptr[i] & 0x0f;
ptr->digit[j++] = num_ptr[i] >> 4;
}
if((flw_ptr[1] >> 7) && (j > 0))
j--;
ptr->numOfDigit = j;
}
void bicc_decode_genericDigits(GenericDigits_struct *ptr, const u8 *flw_ptr, u8 length)
{
u8 num_len;
int i, j;
const u8 *num_ptr;
if(length < 3)
return;
ptr->pres = 1;
ptr->typeOfDigits = flw_ptr[0] & 0x1f;
ptr->encodeScheme = flw_ptr[0] & 0xE0;
num_len = length - 2;
num_ptr = flw_ptr + 2;
for(i = 0, j = 0; i < num_len; i++)
{
ptr->digits[j++] = num_ptr[i] & 0x0f;
ptr->digits[j++] = num_ptr[i] >> 4;
}
if((flw_ptr[0] >> 5) && (j > 0))
j--;
ptr->numOfDigit = j;
}
void bicc_decode_correlationid(CorrelationId_struct *ptr, const u8 *flw_ptr, u8 length)
{
bicc_decode_genericDigits(ptr, flw_ptr, length);
}
u32 bicc_encode_genericnumber(u8 *flw_ptr, const GenericNumber_struct *ptr)
{
u32 i, j;
u8 num_len;
u8 *num_ptr;
num_len = ptr->numOfDigit/2 + (ptr->numOfDigit & 0x01);
num_ptr = flw_ptr + 3;
flw_ptr[0] = ptr->nqi;
flw_ptr[1] = (ptr->numOfDigit << 7) + ptr->nai;
flw_ptr[2] = (ptr->ni << 7) + (ptr->npi << 4) + (ptr->apri << 2) + ptr->si;
for(i = 0, j = 0; i < num_len; i++)
{
num_ptr[i] = ptr->digit[j++] & 0x0f;
num_ptr[i] += ptr->digit[j++] << 4;
}
if(ptr->numOfDigit & 0x01)
num_ptr[i] &= 0x0f;
return num_len + 3;
}
u32 bicc_encode_genericDigits(u8 *flw_ptr, const GenericDigits_struct *ptr)
{
u32 i, j;
u8 num_len;
u8 *num_ptr;
num_ptr = flw_ptr + 1;
flw_ptr[0] = (ptr->encodeScheme << 5) + ptr->typeOfDigits;
flw_ptr[1] = ptr->numOfDigit & 0xff;
num_len = ptr->numOfDigit/2 + (ptr->numOfDigit & 0x01);
for(i = 0, j = 0; i < num_len; i++)
{
num_ptr[i] = ptr->digits[j++] & 0x0f;
num_ptr[i] += ptr->digits[j++] << 4;
}
if(ptr->numOfDigit & 0x01)
num_ptr[i] &= 0x0f;
return num_len + 2;
}
u32 bicc_encode_correlationid(u8 *flw_ptr, const CorrelationId_struct *ptr)
{
return bicc_encode_genericDigits(flw_ptr, ptr);
}
void bicc_decode_eventinfo(EventInfo_struct *ptr, const u8 *flw_ptr)
{
ptr->pres = 1;
ptr->val = *flw_ptr;
}
u32 bicc_encode_eventinfo(u8 *flw_ptr, const EventInfo_struct *ptr)
{
flw_ptr[0] = ptr->val;
return 1;
}
void bicc_decode_fwdcall(FwdCallInd_struct *ptr, const u8 *flw_ptr)
{
ptr->pres = 1;
ptr->val[0] = flw_ptr[0];
ptr->val[1] = flw_ptr[1];
}
u32 bicc_encode_fwdcall(u8 *flw_ptr, const FwdCallInd_struct *ptr)
{
flw_ptr[0] = ptr->val[0];
flw_ptr[1] = ptr->val[1];
return 2;
}
void bicc_decode_natconn(NatConnInd_struct *ptr, const u8 *flw_ptr)
{
ptr->pres = 1;
ptr->val = *flw_ptr;
}
u32 bicc_encode_natconn(u8 *flw_ptr, const NatConnInd_struct *ptr)
{
flw_ptr[0] = ptr->val;
return 1;
}
void bicc_decode_origcallednum(OrigCalledNum_struct *ptr, const u8 *flw_ptr, u8 length)
{
u32 i, j;
u8 num_len;
const u8 *num_ptr;
if(length <= 2)
return;
ptr->pres = 1;
ptr->nai = flw_ptr[0] & 0x7f;
ptr->npi = (flw_ptr[1] >> 4) & 0x07;
ptr->apri = (flw_ptr[1] >> 2) & 0x03;
num_len = length - 2;
num_ptr = flw_ptr + 2;
for(i = 0, j = 0; i < num_len; i++)
{
ptr->digit[j++] = num_ptr[i] & 0x0f;
ptr->digit[j++] = num_ptr[i] >> 4;
}
if((flw_ptr[0] >> 7) && (j > 0))
j--;
ptr->numOfDigit = j;
}
u32 bicc_encode_origcallednum(u8 *flw_ptr, const OrigCalledNum_struct *ptr)
{
u32 i, j;
u8 num_len;
u8 *num_ptr;
num_len = ptr->numOfDigit/2 + (ptr->numOfDigit & 0x01);
num_ptr = flw_ptr + 2;
flw_ptr[0] = (ptr->numOfDigit << 7) + ptr->nai;
flw_ptr[1] = ((ptr->npi << 4) + (ptr->apri << 2)) & 0x7c;
for(i = 0, j = 0; i < num_len; i++)
{
num_ptr[i] = ptr->digit[j++] & 0x0f;
num_ptr[i] += ptr->digit[j++] << 4;
}
if(ptr->numOfDigit & 0x01)
num_ptr[i] &= 0x0f;
return num_len + 2;
}
void bicc_decode_rangestatus(RangeStatus_struct *ptr, const u8 *flw_ptr, u8 length, u8 need_status)
{
u8 status_len;
ptr->pres = 1;
ptr->range = flw_ptr[0];
if(need_status == 1)
{
status_len = (((flw_ptr[0]+1)&0x07) == 0)? ((flw_ptr[0]+1)>>3) : (((flw_ptr[0]+1)>>3) + 1);
memcpy(ptr->status, flw_ptr+1, status_len);
}
}
u32 bicc_encode_rangestatus(u8 *flw_ptr, const RangeStatus_struct *ptr, u8 need_status)
{
u8 status_len;
flw_ptr[0] = ptr->range;
if(need_status == 1)
{
status_len = (((ptr->range+1)&0x07) == 0)? ((ptr->range+1)>>3) : (((ptr->range+1)>>3) + 1);
memcpy(flw_ptr+1, ptr->status, status_len);
}
else
status_len = 0;
return status_len + 1;
}
void bicc_decode_redirgnum(RedirgNum_struct *ptr, const u8 *flw_ptr, u8 length)
{
u32 i, j;
u8 num_len;
const u8 *num_ptr;
if(length <= 2)
return;
ptr->pres = 1;
ptr->nai = flw_ptr[0] & 0x7f;
ptr->npi = (flw_ptr[1] >> 4) & 0x07;
ptr->apri = (flw_ptr[1] >> 2) & 0x03;
num_len = length - 2;
num_ptr = flw_ptr + 2;
for(i = 0, j = 0; i < num_len; i++)
{
ptr->digit[j++] = num_ptr[i] & 0x0f;
ptr->digit[j++] = num_ptr[i] >> 4;
}
if((flw_ptr[0] >> 7) && (j > 0))
j--;
ptr->numOfDigit = j;
}
void bicc_decode_redirinfo(RedirInfo_struct *ptr, u8 *flw_ptr, u8 length)
{
if(length <= 2)
return;
ptr->redInd = flw_ptr[0] & 0x07;
ptr->origRedirReason = (flw_ptr[0] >> 4) & 0x0f;
ptr->redirCounter = flw_ptr[1] & 0x07;
ptr->redirReason = (flw_ptr[1] >> 4) & 0x0f;
}
u32 bicc_encode_redirgnum(u8 *flw_ptr, const RedirgNum_struct *ptr)
{
u32 i, j;
u8 num_len;
u8 *num_ptr;
num_len = ptr->numOfDigit/2 + (ptr->numOfDigit & 0x01);
num_ptr = flw_ptr + 2;
flw_ptr[0] = (ptr->numOfDigit << 7) + ptr->nai;
flw_ptr[1] = ((ptr->npi << 4) + (ptr->apri << 2)) & 0x7c;
for(i = 0, j = 0; i < num_len; i++)
{
num_ptr[i] = ptr->digit[j++] & 0x0f;
num_ptr[i] += ptr->digit[j++] << 4;
}
if(ptr->numOfDigit & 0x01)
num_ptr[i] &= 0x0f;
return num_len + 2;
}
u32 bicc_encode_redirinfo(u8 *flw_ptr, const RedirInfo_struct *ptr)
{
flw_ptr[0] = (ptr->origRedirReason << 4) + ptr->redInd;
flw_ptr[1] = (ptr->redirReason << 4) + ptr->redirCounter;
return 2;
}
void bicc_decode_scfid(ScfId_struct *ptr, const u8 *flw_ptr, u8 length)
{
bicc_decode_genericDigits(ptr, flw_ptr, length);
}
u32 bicc_encode_scfid(u8 *flw_ptr, const ScfId_struct *ptr)
{
return bicc_encode_genericDigits(flw_ptr, ptr);
}
void bicc_decode_subseqnum(SubseqNum_struct *ptr, const u8 *flw_ptr, u8 length)
{
u32 i, j;
u8 num_len;
const u8 *num_ptr;
if(length <= 1)
return;
ptr->pres = 1;
num_len = length - 1;
num_ptr = flw_ptr + 1;
for(i = 0, j = 0; i < num_len; i++)
{
ptr->digit[j++] = num_ptr[i] & 0x0f;
ptr->digit[j++] = num_ptr[i] >> 4;
}
if((flw_ptr[0] >> 7) && (j > 0))
j--;
ptr->numOfDigit = j;
}
u32 bicc_encode_subseqnum(u8 *flw_ptr, const SubseqNum_struct *ptr)
{
u32 i, j;
u8 num_len;
u8 *num_ptr;
num_len = ptr->numOfDigit/2 + (ptr->numOfDigit & 0x01);
num_ptr = flw_ptr + 1;
flw_ptr[0] = (ptr->numOfDigit & 0x01) << 7;
for(i = 0, j = 0; i < num_len; i++)
{
num_ptr[i] = ptr->digit[j++] & 0x0f;
num_ptr[i] += ptr->digit[j++] << 4;
}
if(ptr->numOfDigit & 0x01)
num_ptr[i] &= 0x0f;
return num_len + 2;
}
void bicc_decode_susres(SusResInd_struct *ptr, const u8 *flw_ptr)
{
ptr->pres = 1;
ptr->val = *flw_ptr;
}
u32 bicc_encode_susres(u8 *flw_ptr, const SusResInd_struct *ptr)
{
flw_ptr[0] = ptr->val;
return 1;
}
void bicc_decode_transmedreq(TransMedReq_struct *ptr, const u8 *flw_ptr)
{
ptr->pres = 1;
ptr->val = *flw_ptr;
}
u32 bicc_encode_transmedreq(u8 *flw_ptr, const TransMedReq_struct *ptr)
{
flw_ptr[0] = ptr->val;
return 1;
}
void bicc_decode_utuind(UserToUserInd_struct *ptr, const u8 *flw_ptr)
{
ptr->pres = 1;
ptr->val = *flw_ptr;
}
u32 bicc_encode_utuind(u8 *flw_ptr, const UserToUserInd_struct *ptr)
{
flw_ptr[0] = ptr->val;
return 1;
}
void bicc_decode_utuinfo(UserToUserInfo_struct *ptr, const u8 *flw_ptr, u8 length)
{
if((length == 0) || (length > 129))
return;
ptr->pres = 1;
ptr->len = length;
memcpy(ptr->val, flw_ptr, length);
}
u32 bicc_encode_utuinfo(u8 *flw_ptr, const UserToUserInfo_struct *ptr)
{
memcpy(flw_ptr, ptr->val, ptr->len);
return ptr->len;
}
void bicc_decode_calldiverinfo(CallDiverInfo_struct *ptr, const u8 *flw_ptr)
{
ptr->pres = 1;
ptr->notifSubsOption = flw_ptr[0]&0x07;
ptr->redirReason = (flw_ptr[0]>>3)&0x0f;
}
u32 bicc_encode_calldiverinfo(u8 *flw_ptr, const CallDiverInfo_struct *ptr)
{
flw_ptr[0] = ((ptr->redirReason)<<3) + (ptr->notifSubsOption);
return 1;
}
void bicc_decode_optBackCallInd(OptBackCallInd_struct *ptr, const u8 *flw_ptr)
{
ptr->pres = 1;
ptr->inbandInfoInd = flw_ptr[0]&0x01;
ptr->callDiverOccurInd = flw_ptr[0]&0x02;
ptr->simpSegmInd = flw_ptr[0]&0x04;
ptr->mlppUserInd = flw_ptr[0]&0x08;
}
u32 bicc_encode_optBackCallInd(u8 *flw_ptr, const OptBackCallInd_struct *ptr)
{
flw_ptr[0] = (((ptr->mlppUserInd)<<3)+((ptr->simpSegmInd)<<2)+((ptr->callDiverOccurInd<<1))+(ptr->inbandInfoInd))&0x0f;
return 1;
}
void bicc_send_acm(u32 pid)
{
BICC_Port_struct *port_ptr = &Bicc_Data.port_data[pid];
BiccAcm_struct *acm_ptr = &msg_union[pid].acm;
u8 *flw_ptr = port_ptr->s_mtp_msg.msgList; //message flow pointer
u8 *pointer_ptr;
bicc_prm2msg(&msg_union[pid], &writePrim_union[pid], M_ACM);
*(flw_ptr++) = M_ACM;
flw_ptr += bicc_encode_backcall(flw_ptr, &acm_ptr->backCall);
pointer_ptr = flw_ptr;
flw_ptr++;
*pointer_ptr = 0;
if(acm_ptr->app.pres == 1)
{
flw_ptr[0] = P_APPTRANS;
flw_ptr[1] = bicc_encode_app(flw_ptr+2, &acm_ptr->app);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = 1;
}
if(acm_ptr->cause.pres == 1)
{
flw_ptr[0] = P_CAUSEIND;
flw_ptr[1] = bicc_encode_cause(flw_ptr+2, &acm_ptr->cause);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = 1;
}
if(acm_ptr->confTreat.pres == 1)
{
flw_ptr[0] = P_CONFTREATIND;
flw_ptr[1] = bicc_encode_conftreat(flw_ptr+2, &acm_ptr->confTreat);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = 1;
}
if(acm_ptr->optBackCall.pres == 1)
{
flw_ptr[0] = P_OPTBACKCALLIND;
flw_ptr[1] = bicc_encode_optBackCallInd(flw_ptr+2, &acm_ptr->optBackCall);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = 1;
}
if(acm_ptr->utuInd.pres == 1)
{
flw_ptr[0] = P_UTUIND;
flw_ptr[1] = bicc_encode_utuind(flw_ptr+2, &acm_ptr->utuInd);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = 1;
}
if(acm_ptr->utuInfo.pres == 1)
{
flw_ptr[0] = P_UTUINFO;
flw_ptr[1] = bicc_encode_utuinfo(flw_ptr+2, &acm_ptr->utuInfo);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = 1;
}
if(*pointer_ptr != 0)
*(flw_ptr++) = 0; //End of optional parameters
port_ptr->s_mtp_msg.len = flw_ptr - port_ptr->s_mtp_msg.msgList;
BICC_msdc_proc(pid, &(port_ptr->s_mtp_msg));
}
void bicc_send_anm(u32 pid)
{
BICC_Port_struct *port_ptr = &Bicc_Data.port_data[pid];
BiccAnm_struct *anm_ptr = &msg_union[pid].anm;
u8 *flw_ptr = port_ptr->s_mtp_msg.msgList; //message flow pointer
u8 *pointer_ptr;
bicc_prm2msg(&msg_union[pid], &writePrim_union[pid], M_ANM);
*(flw_ptr++) = M_ANM;
pointer_ptr = flw_ptr;
flw_ptr++;
*pointer_ptr = 0;
if(anm_ptr->app.pres == 1)
{
flw_ptr[0] = P_APPTRANS;
flw_ptr[1] = bicc_encode_app(flw_ptr+2, &anm_ptr->app);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = 1;
}
if(anm_ptr->backCall.pres == 1)
{
flw_ptr[0] = P_BACKCALLIND;
flw_ptr[1] = bicc_encode_backcall(flw_ptr+2, &anm_ptr->backCall);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = 1;
}
if(anm_ptr->confTreat.pres == 1)
{
flw_ptr[0] = P_CONFTREATIND;
flw_ptr[1] = bicc_encode_conftreat(flw_ptr+2, &anm_ptr->confTreat);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = 1;
}
if(anm_ptr->connNum.pres == 1)
{
flw_ptr[0] = P_CONNNUM;
flw_ptr[1] = bicc_encode_connnum(flw_ptr+2, &anm_ptr->connNum);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = 1;
}
if(anm_ptr->utuInd.pres == 1)
{
flw_ptr[0] = P_UTUIND;
flw_ptr[1] = bicc_encode_utuind(flw_ptr+2, &anm_ptr->utuInd);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = 1;
}
if(anm_ptr->utuInfo.pres == 1)
{
flw_ptr[0] = P_UTUINFO;
flw_ptr[1] = bicc_encode_utuinfo(flw_ptr+2, &anm_ptr->utuInfo);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = 1;
}
if(*pointer_ptr != 0)
*(flw_ptr++) = 0; //End of optional parameters
port_ptr->s_mtp_msg.len = flw_ptr - port_ptr->s_mtp_msg.msgList;
BICC_msdc_proc(pid, &(port_ptr->s_mtp_msg));
}
void bicc_send_apm(u32 pid)
{
BICC_Port_struct *port_ptr = &Bicc_Data.port_data[pid];
BiccApm_struct *apm_ptr = &msg_union[pid].apm;
u8 *flw_ptr = port_ptr->s_mtp_msg.msgList; //message flow pointer
u8 *pointer_ptr;
bicc_prm2msg(&msg_union[pid], &writePrim_union[pid], M_APM);
*(flw_ptr++) = M_APM;
pointer_ptr = flw_ptr;
flw_ptr++;
*pointer_ptr = 0;
if(apm_ptr->app.pres == 1)
{
flw_ptr[0] = P_APPTRANS;
flw_ptr[1] = bicc_encode_app(flw_ptr+2, &apm_ptr->app);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = 1;
}
if(*pointer_ptr != 0)
*(flw_ptr++) = 0; //End of optional parameters
port_ptr->s_mtp_msg.len = flw_ptr - port_ptr->s_mtp_msg.msgList;
BICC_msdc_proc(pid, &(port_ptr->s_mtp_msg));
}
void bicc_send_cpg(u32 pid)
{
BICC_Port_struct *port_ptr = &Bicc_Data.port_data[pid];
BiccCpg_struct *cpg_ptr = &msg_union[pid].cpg;
u8 *flw_ptr = port_ptr->s_mtp_msg.msgList; //message flow pointer
u8 *pointer_ptr;
bicc_prm2msg(&msg_union[pid], &writePrim_union[pid], M_CPG);
*(flw_ptr++) = M_CPG;
flw_ptr += bicc_encode_eventinfo(flw_ptr, &cpg_ptr->eventInfo);
pointer_ptr = flw_ptr;
flw_ptr++;
*pointer_ptr = 0;
if(cpg_ptr->app.pres == 1)
{
flw_ptr[0] = P_APPTRANS;
flw_ptr[1] = bicc_encode_app(flw_ptr+2, &cpg_ptr->app);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = 1;
}
if(cpg_ptr->backCall.pres == 1)
{
flw_ptr[0] = P_BACKCALLIND;
flw_ptr[1] = bicc_encode_backcall(flw_ptr+2, &cpg_ptr->backCall);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = 1;
}
if(cpg_ptr->calldiver.pres == 1)
{
flw_ptr[0] = P_CALLDIVERINFO;
flw_ptr[1] = bicc_encode_calldiverinfo(flw_ptr+2, &cpg_ptr->calldiver);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = 1;
}
if(cpg_ptr->cause.pres == 1)
{
flw_ptr[0] = P_CAUSEIND;
flw_ptr[1] = bicc_encode_cause(flw_ptr+2, &cpg_ptr->cause);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = 1;
}
if(cpg_ptr->confTreat.pres == 1)
{
flw_ptr[0] = P_CONFTREATIND;
flw_ptr[1] = bicc_encode_conftreat(flw_ptr+2, &cpg_ptr->confTreat);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = 1;
}
if(cpg_ptr->connNum.pres == 1)
{
flw_ptr[0] = P_CONNNUM;
flw_ptr[1] = bicc_encode_connnum(flw_ptr+2, &cpg_ptr->connNum);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = 1;
}
if(cpg_ptr->utuInd.pres == 1)
{
flw_ptr[0] = P_UTUIND;
flw_ptr[1] = bicc_encode_utuind(flw_ptr+2, &cpg_ptr->utuInd);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = 1;
}
if(cpg_ptr->utuInfo.pres == 1)
{
flw_ptr[0] = P_UTUINFO;
flw_ptr[1] = bicc_encode_utuinfo(flw_ptr+2, &cpg_ptr->utuInfo);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = 1;
}
if(*pointer_ptr != 0)
*(flw_ptr++) = 0; //End of optional parameters
port_ptr->s_mtp_msg.len = flw_ptr - port_ptr->s_mtp_msg.msgList;
BICC_msdc_proc(pid, &(port_ptr->s_mtp_msg));
}
void bicc_send_cgb(u32 pid)
{
BICC_Port_struct *port_ptr = &Bicc_Data.port_data[pid];
BiccCgb_struct *cgb_ptr = &msg_union[pid].cgb;
u8 *flw_ptr = port_ptr->s_mtp_msg.msgList; //message flow pointer
u8 *pointer_ptr;
bicc_prm2msg(&msg_union[pid], &writePrim_union[pid], M_CGB);
*(flw_ptr++) = M_CGB;
flw_ptr += bicc_encode_cicgrpspv(flw_ptr, &cgb_ptr->cicGrpSpv);
pointer_ptr = flw_ptr;
flw_ptr++;
*pointer_ptr = 1;
flw_ptr[0] = bicc_encode_rangestatus(flw_ptr+1, &cgb_ptr->rangeStatus, 1);
flw_ptr += flw_ptr[0] + 1;
port_ptr->s_mtp_msg.len = flw_ptr - port_ptr->s_mtp_msg.msgList;
BICC_msdc_proc(pid, &(port_ptr->s_mtp_msg));
}
void bicc_send_cgba(u32 pid)
{
BICC_Port_struct *port_ptr = &Bicc_Data.port_data[pid];
BiccCgba_struct *cgba_ptr = &msg_union[pid].cgba;
u8 *flw_ptr = port_ptr->s_mtp_msg.msgList; //message flow pointer
u8 *pointer_ptr;
bicc_prm2msg(&msg_union[pid], &writePrim_union[pid], M_CGBA);
*(flw_ptr++) = M_CGBA;
flw_ptr += bicc_encode_cicgrpspv(flw_ptr, &cgba_ptr->cicGrpSpv);
pointer_ptr = flw_ptr;
flw_ptr++;
*pointer_ptr = 1;
flw_ptr[0] = bicc_encode_rangestatus(flw_ptr+1, &cgba_ptr->rangeStatus, 1);
flw_ptr += flw_ptr[0] + 1;
port_ptr->s_mtp_msg.len = flw_ptr - port_ptr->s_mtp_msg.msgList;
BICC_msdc_proc(pid, &(port_ptr->s_mtp_msg));
}
void bicc_send_cgu(u32 pid)
{
BICC_Port_struct *port_ptr = &Bicc_Data.port_data[pid];
BiccCgu_struct *cgu_ptr = &msg_union[pid].cgu;
u8 *flw_ptr = port_ptr->s_mtp_msg.msgList; //message flow pointer
u8 *pointer_ptr;
bicc_prm2msg(&msg_union[pid], &writePrim_union[pid], M_CGU);
*(flw_ptr++) = M_CGU;
flw_ptr += bicc_encode_cicgrpspv(flw_ptr, &cgu_ptr->cicGrpSpv);
pointer_ptr = flw_ptr;
flw_ptr++;
*pointer_ptr = 1;
flw_ptr[0] = bicc_encode_rangestatus(flw_ptr+1, &cgu_ptr->rangeStatus, 1);
flw_ptr += flw_ptr[0] + 1;
port_ptr->s_mtp_msg.len = flw_ptr - port_ptr->s_mtp_msg.msgList;
BICC_msdc_proc(pid, &(port_ptr->s_mtp_msg));
}
void bicc_send_cgua(u32 pid)
{
BICC_Port_struct *port_ptr = &Bicc_Data.port_data[pid];
BiccCgua_struct *cgua_ptr = &msg_union[pid].cgua;
u8 *flw_ptr = port_ptr->s_mtp_msg.msgList; //message flow pointer
u8 *pointer_ptr;
bicc_prm2msg(&msg_union[pid], &writePrim_union[pid], M_CGUA);
*(flw_ptr++) = M_CGUA;
flw_ptr += bicc_encode_cicgrpspv(flw_ptr, &cgua_ptr->cicGrpSpv);
pointer_ptr = flw_ptr;
flw_ptr++;
*pointer_ptr = 1;
flw_ptr[0] = bicc_encode_rangestatus(flw_ptr+1, &cgua_ptr->rangeStatus, 1);
flw_ptr += flw_ptr[0] + 1;
port_ptr->s_mtp_msg.len = flw_ptr - port_ptr->s_mtp_msg.msgList;
BICC_msdc_proc(pid, &(port_ptr->s_mtp_msg));
}
void bicc_send_grs(u32 pid)
{
BICC_Port_struct *port_ptr = &Bicc_Data.port_data[pid];
BiccGrs_struct *grs_ptr = &msg_union[pid].grs;
u8 *flw_ptr = port_ptr->s_mtp_msg.msgList; //message flow pointer
u8 *pointer_ptr;
bicc_prm2msg(&msg_union[pid], &writePrim_union[pid], M_GRS);
*(flw_ptr++) = M_GRS;
pointer_ptr = flw_ptr;
flw_ptr++;
*pointer_ptr = 1;
flw_ptr[0] = bicc_encode_rangestatus(flw_ptr+1, &grs_ptr->rangeStatus, 0);
flw_ptr += flw_ptr[0] + 1;
port_ptr->s_mtp_msg.len = flw_ptr - port_ptr->s_mtp_msg.msgList;
BICC_msdc_proc(pid, &(port_ptr->s_mtp_msg));
}
void bicc_send_gra(u32 pid)
{
BICC_Port_struct *port_ptr = &Bicc_Data.port_data[pid];
BiccGra_struct *gra_ptr = &msg_union[pid].gra;
u8 *flw_ptr = port_ptr->s_mtp_msg.msgList; //message flow pointer
u8 *pointer_ptr;
bicc_prm2msg(&msg_union[pid], &writePrim_union[pid], M_GRA);
*(flw_ptr++) = M_GRA;
pointer_ptr = flw_ptr;
flw_ptr++;
*pointer_ptr = 1;
flw_ptr[0] = bicc_encode_rangestatus(flw_ptr+1, &gra_ptr->rangeStatus, 1);
flw_ptr += flw_ptr[0] + 1;
port_ptr->s_mtp_msg.len = flw_ptr - port_ptr->s_mtp_msg.msgList;
BICC_msdc_proc(pid, &(port_ptr->s_mtp_msg));
}
void bicc_send_con(u32 pid)
{
BICC_Port_struct *port_ptr = &Bicc_Data.port_data[pid];
BiccCon_struct *con_ptr = &msg_union[pid].con;
u8 *flw_ptr = port_ptr->s_mtp_msg.msgList; //message flow pointer
u8 *pointer_ptr;
bicc_prm2msg(&msg_union[pid], &writePrim_union[pid], M_CON);
*(flw_ptr++) = M_CON;
flw_ptr += bicc_encode_backcall(flw_ptr, &con_ptr->backCall);
pointer_ptr = flw_ptr;
flw_ptr++;
*pointer_ptr = 0;
if(con_ptr->app.pres == 1)
{
flw_ptr[0] = P_APPTRANS;
flw_ptr[1] = bicc_encode_app(flw_ptr+2, &con_ptr->app);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = 1;
}
if(con_ptr->confTreat.pres == 1)
{
flw_ptr[0] = P_CONFTREATIND;
flw_ptr[1] = bicc_encode_conftreat(flw_ptr+2, &con_ptr->confTreat);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = 1;
}
if(con_ptr->connNum.pres == 1)
{
flw_ptr[0] = P_CONNNUM;
flw_ptr[1] = bicc_encode_connnum(flw_ptr+2, &con_ptr->connNum);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = 1;
}
if(con_ptr->utuInd.pres == 1)
{
flw_ptr[0] = P_UTUIND;
flw_ptr[1] = bicc_encode_utuind(flw_ptr+2, &con_ptr->utuInd);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = 1;
}
if(con_ptr->utuInfo.pres == 1)
{
flw_ptr[0] = P_UTUINFO;
flw_ptr[1] = bicc_encode_utuinfo(flw_ptr+2, &con_ptr->utuInfo);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = 1;
}
if(*pointer_ptr != 0)
*(flw_ptr++) = 0; //End of optional parameters
port_ptr->s_mtp_msg.len = flw_ptr - port_ptr->s_mtp_msg.msgList;
BICC_msdc_proc(pid, &(port_ptr->s_mtp_msg));
}
void bicc_send_iam(u32 pid)
{
BICC_Port_struct *port_ptr = &Bicc_Data.port_data[pid];
BiccIam_struct *iam_ptr = &msg_union[pid].iam;
u8 *flw_ptr = port_ptr->s_mtp_msg.msgList; //message flow pointer
u8 *pointer_ptr;
u8 opt_pointer;
bicc_prm2msg(&msg_union[pid], &writePrim_union[pid], M_IAM);
*(flw_ptr++) = M_IAM;
flw_ptr += bicc_encode_natconn(flw_ptr, &iam_ptr->natConn);
flw_ptr += bicc_encode_fwdcall(flw_ptr, &iam_ptr->fwdCall);
flw_ptr += bicc_encode_callingptycat(flw_ptr, &iam_ptr->callingPtyCat);
flw_ptr += bicc_encode_transmedreq(flw_ptr, &iam_ptr->transMedReq);
pointer_ptr = flw_ptr;
flw_ptr += 2;
*(pointer_ptr++) = 2;
*pointer_ptr = 0;
flw_ptr[0] = bicc_encode_calledptynum(flw_ptr+1, &iam_ptr->calledPtyNum);
opt_pointer = flw_ptr[0] + 2;
flw_ptr += flw_ptr[0] + 1;
if(iam_ptr->app.pres == 1)
{
flw_ptr[0] = P_APPTRANS;
flw_ptr[1] = bicc_encode_app(flw_ptr+2, &iam_ptr->app);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = opt_pointer;
}
if(iam_ptr->callingPtyNum.pres == 1)
{
flw_ptr[0] = P_CALLINGPTYNUM;
flw_ptr[1] = bicc_encode_callingptynum(flw_ptr+2, &iam_ptr->callingPtyNum);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = opt_pointer;
}
if(iam_ptr->collectCallReq.pres == 1)
{
flw_ptr[0] = P_COLLECTCALLREQ;
flw_ptr[1] = bicc_encode_collectcallreq(flw_ptr+2, &iam_ptr->collectCallReq);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = opt_pointer;
}
if(iam_ptr->confTreat.pres == 1)
{
flw_ptr[0] = P_CONFTREATIND;
flw_ptr[1] = bicc_encode_conftreat(flw_ptr+2, &iam_ptr->confTreat);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = opt_pointer;
}
if(iam_ptr->correlationId.pres == 1)
{
flw_ptr[0] = P_CORRELATIONID;
flw_ptr[1] = bicc_encode_correlationid(flw_ptr+2, &iam_ptr->correlationId);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = opt_pointer;
}
if(iam_ptr->origCalledNum.pres == 1)
{
flw_ptr[0] = P_ORIGCALLEDNUM;
flw_ptr[1] = bicc_encode_origcallednum(flw_ptr+2, &iam_ptr->origCalledNum);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = opt_pointer;
}
if(iam_ptr->redirgNum.pres == 1)
{
flw_ptr[0] = P_REDIRGNUM;
flw_ptr[1] = bicc_encode_redirgnum(flw_ptr+2, &iam_ptr->redirgNum);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = opt_pointer;
}
if(iam_ptr->redirInfo.pres == 1)
{
flw_ptr[0] = P_REDIRINFO;
flw_ptr[1] = bicc_encode_redirinfo(flw_ptr+2, &iam_ptr->redirInfo);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = opt_pointer;
}
if(iam_ptr->scfId.pres == 1)
{
flw_ptr[0] = P_SCFID;
flw_ptr[1] = bicc_encode_scfid(flw_ptr+2, &iam_ptr->scfId);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = opt_pointer;
}
if(iam_ptr->utuInd.pres == 1)
{
flw_ptr[0] = P_UTUIND;
flw_ptr[1] = bicc_encode_utuind(flw_ptr+2, &iam_ptr->utuInd);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = opt_pointer;
}
if(iam_ptr->utuInfo.pres == 1)
{
flw_ptr[0] = P_UTUINFO;
flw_ptr[1] = bicc_encode_utuinfo(flw_ptr+2, &iam_ptr->utuInfo);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = opt_pointer;
}
if(*pointer_ptr != 0)
*(flw_ptr++) = 0; //End of optional parameters
port_ptr->s_mtp_msg.len = flw_ptr - port_ptr->s_mtp_msg.msgList;
BICC_msdc_proc(pid, &(port_ptr->s_mtp_msg));
}
void bicc_send_rel(u32 pid)
{
BICC_Port_struct *port_ptr = &Bicc_Data.port_data[pid];
BiccRel_struct *rel_ptr = &msg_union[pid].rel;
u8 *flw_ptr = port_ptr->s_mtp_msg.msgList; //message flow pointer
u8 *pointer_ptr;
u8 opt_pointer;
bicc_prm2msg(&msg_union[pid], &writePrim_union[pid], M_REL);
*(flw_ptr++) = M_REL;
pointer_ptr = flw_ptr;
flw_ptr += 2;
*(pointer_ptr++) = 2;
*pointer_ptr = 0;
flw_ptr[0] = bicc_encode_cause(flw_ptr+1, &rel_ptr->cause);
opt_pointer = flw_ptr[0] + 2;
flw_ptr += flw_ptr[0] + 1;
if(rel_ptr->utuInd.pres == 1)
{
flw_ptr[0] = P_UTUIND;
flw_ptr[1] = bicc_encode_utuind(flw_ptr+2, &rel_ptr->utuInd);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = opt_pointer;
}
if(rel_ptr->utuInfo.pres == 1)
{
flw_ptr[0] = P_UTUINFO;
flw_ptr[1] = bicc_encode_utuinfo(flw_ptr+2, &rel_ptr->utuInfo);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = opt_pointer;
}
if(*pointer_ptr != 0)
*(flw_ptr++) = 0; //End of optional parameters
port_ptr->s_mtp_msg.len = flw_ptr - port_ptr->s_mtp_msg.msgList;
BICC_msdc_proc(pid, &(port_ptr->s_mtp_msg));
}
void bicc_send_rlc(u32 pid)
{
BICC_Port_struct *port_ptr = &Bicc_Data.port_data[pid];
BiccRlc_struct *rlc_ptr = &msg_union[pid].rlc;
u8 *flw_ptr = port_ptr->s_mtp_msg.msgList; //message flow pointer
u8 *pointer_ptr;
bicc_prm2msg(&msg_union[pid], &writePrim_union[pid], M_RLC);
*(flw_ptr++) = M_RLC;
pointer_ptr = flw_ptr;
flw_ptr++;
*pointer_ptr = 0;
if(rlc_ptr->cause.pres == 1)
{
flw_ptr[0] = P_CAUSEIND;
flw_ptr[1] = bicc_encode_cause(flw_ptr+2, &rlc_ptr->cause);
flw_ptr += flw_ptr[1] + 2;
*pointer_ptr = 1;
}
if(*pointer_ptr != 0)
*(flw_ptr++) = 0; //End of optional parameters
port_ptr->s_mtp_msg.len = flw_ptr - port_ptr->s_mtp_msg.msgList;
BICC_msdc_proc(pid, &(port_ptr->s_mtp_msg));
}
void bicc_send_rsc(u32 pid)
{
BICC_Port_struct *port_ptr = &Bicc_Data.port_data[pid];
u8 *flw_ptr = port_ptr->s_mtp_msg.msgList; //message flow pointer
*(flw_ptr++) = M_RSC;
port_ptr->s_mtp_msg.len = flw_ptr - port_ptr->s_mtp_msg.msgList;
BICC_msdc_proc(pid, &(port_ptr->s_mtp_msg));
}
void bicc_send_res(u32 pid)
{
BICC_Port_struct *port_ptr = &Bicc_Data.port_data[pid];
BiccRes_struct *res_ptr = &msg_union[pid].res;
u8 *flw_ptr = port_ptr->s_mtp_msg.msgList; //message flow pointer
u8 *pointer_ptr;
bicc_prm2msg(&msg_union[pid], &writePrim_union[pid], M_RES);
*(flw_ptr++) = M_RES;
flw_ptr += bicc_encode_susres(flw_ptr, &res_ptr->susRes);
pointer_ptr = flw_ptr;
flw_ptr++;
*pointer_ptr = 0;
if(*pointer_ptr != 0)
*(flw_ptr++) = 0; //End of optional parameters
port_ptr->s_mtp_msg.len = flw_ptr - port_ptr->s_mtp_msg.msgList;
BICC_msdc_proc(pid, &(port_ptr->s_mtp_msg));
}
void bicc_send_sus(u32 pid)
{
BICC_Port_struct *port_ptr = &Bicc_Data.port_data[pid];
BiccSus_struct *sus_ptr = &msg_union[pid].sus;
u8 *flw_ptr = port_ptr->s_mtp_msg.msgList; //message flow pointer
u8 *pointer_ptr;
bicc_prm2msg(&msg_union[pid], &writePrim_union[pid], M_SUS);
*(flw_ptr++) = M_SUS;
flw_ptr += bicc_encode_susres(flw_ptr, &sus_ptr->susRes);
pointer_ptr = flw_ptr;
flw_ptr++;
*pointer_ptr = 0;
if(*pointer_ptr != 0)
*(flw_ptr++) = 0; //End of optional parameters
port_ptr->s_mtp_msg.len = flw_ptr - port_ptr->s_mtp_msg.msgList;
BICC_msdc_proc(pid, &(port_ptr->s_mtp_msg));
}
void bicc_send_sam(u32 pid)
{
BICC_Port_struct *port_ptr = &Bicc_Data.port_data[pid];
BiccSam_struct *sam_ptr = &msg_union[pid].sam;
u8 *flw_ptr = port_ptr->s_mtp_msg.msgList; //message flow pointer
u8 *pointer_ptr;
bicc_prm2msg(&msg_union[pid], &writePrim_union[pid], M_SAM);
*(flw_ptr++) = M_SAM;
pointer_ptr = flw_ptr;
flw_ptr += 2;
*(pointer_ptr++) = 2;
*pointer_ptr = 0;
flw_ptr[0] = bicc_encode_subseqnum(flw_ptr+1, &sam_ptr->subseqNum);
flw_ptr += flw_ptr[0] + 1;
if(*pointer_ptr != 0)
*(flw_ptr++) = 0; //End of optional parameters
port_ptr->s_mtp_msg.len = flw_ptr - port_ptr->s_mtp_msg.msgList;
BICC_msdc_proc(pid, &(port_ptr->s_mtp_msg));
}