📄 inet_line_msg.c
字号:
Input: lineid.
Output: None
Return: None
Others: None
Histrory: 2006-08-14,yuste,Created
*************************************************************************/
int inet_send_line_disc_to_csc(INT8U lineid)
{
UBYTE** shdl;
struct INET_MSG* rptr;
struct INET_TOCSC_LINE_DISC_t *line_disc_msg;
shdl = GetMem(INET_MSG_HEAD_LEN+sizeof(struct INET_TOCSC_LINE_DISC_t));
rptr = (struct INET_MSG*)*shdl;
line_disc_msg = (struct INET_TOCSC_LINE_DISC_t*) (*shdl + INET_MSG_HEAD_LEN);
rptr->stsk = INET_INET_TASK_ID;
rptr->rtsk = INET_CSC_TASK_ID;
rptr->msgid = TEL_DISCONN_REQ;
rptr->len = 2;
line_disc_msg->lineid = lineid;
line_disc_msg->cause = 0x0;
inet_msg_dump((INT8U*) (* shdl));
SndMsg(rptr->rtsk, shdl);
return(0);
}
/************************************************************************
Function: forward_tel_dtmf_req_to_csc
Description:
Input: msg.
Output: None
Return: None
Others: None
Histrory: 2006-08-06,yuste,Created
*************************************************************************/
int inet_send_dtmf_req_to_csc(INT8U msg_action, INT8U msg_lineid, INT8U *callee_num)
{
UBYTE** shdl;
struct INET_MSG* sptr;
UBYTE dtmf_len;
struct INET_TEL_DTMF_REQ_t *struct_tgt_msg;
shdl = GetMem(INET_DTMF_REQUEST_LEN);
sptr = (struct INET_MSG*)*shdl;
struct_tgt_msg = (struct INET_TEL_DTMF_REQ_t*) (*shdl + INET_MSG_HEAD_LEN);
sptr->stsk = INET_INET_TASK_ID;
sptr->rtsk = INET_CSC_TASK_ID;
sptr->msgid = TEL_DTMF_REQ;
sptr->len = 3;
struct_tgt_msg->action = msg_action;
struct_tgt_msg->lineid = msg_lineid;
dtmf_len = callee_num[0];
memcpy(struct_tgt_msg->dtmf_num, callee_num, dtmf_len+1);
sptr->len += dtmf_len;
inet_msg_dump((INT8U*) (* shdl));
/* send message to tel/sip module */
SndMsg(sptr->rtsk,shdl);
return OK;
}
/************************************************************************
Function: inet_send_page_req_to_csc
Description:
Input: page_req_msg.
Output: None
Return: None
Others: None
Histrory: 2006-08-06,yuste,Created
*************************************************************************/
int inet_send_page_req_to_csc(struct INET_CSC_PAGE_REQ_t* struct_src_msg)
{
UBYTE** shdl;
struct INET_MSG* sptr;
INT8U *pmsg;
INT8U index;
shdl = GetMem(MAX_INET_MSG_LEN); /* 10 airext, 40 callingid, and other */
sptr = (struct INET_MSG*)*shdl;
pmsg = *shdl;
sptr->stsk = INET_INET_TASK_ID;
sptr->rtsk = INET_CSC_TASK_ID;
sptr->msgid = TEL_PAGE_REQ;
sptr->len = 0x05;
index = INET_MSG_HEAD_LEN;
pmsg[index++] = struct_src_msg->lineid;
pmsg[index++] = struct_src_msg->action;
pmsg[index++] = struct_src_msg->call_type;
pmsg[index++] = struct_src_msg->ext_count;
if(struct_src_msg->ext_count > 0x0){
memcpy(&pmsg[index], &struct_src_msg->airext[0], struct_src_msg->ext_count);
index += struct_src_msg->ext_count;
sptr->len += struct_src_msg->ext_count;
}
pmsg[index++] = struct_src_msg->callid_len;
if(struct_src_msg->callid_len > 0x0){
memcpy(&pmsg[index], &struct_src_msg->calling_num[0], struct_src_msg->callid_len);
index += struct_src_msg->callid_len;
sptr->len += struct_src_msg->callid_len;
}
inet_msg_dump((INT8U*) (* shdl));
SndMsg(sptr->rtsk,shdl);
return OK;
}
/************************************************************************
Function: inet_send_tel_line_status_notify_to_csc
Description: notify pstn or sip line status.
Input: page_req_msg.
Output: None
Return: None
Others: None
Histrory: 2006-09-04,yuste,Created
*************************************************************************/
int inet_send_line_status_notify_to_csc(INT8U msg_action, INT8U msg_lineid)
{
UBYTE** shdl;
struct INET_MSG* sptr;
struct INET_LINE_STATUS_NOTIFY_t *struct_tgt_msg;
shdl = GetMem(sizeof(struct INET_LINE_STATUS_NOTIFY_t) + INET_MSG_HEAD_LEN);
sptr = (struct INET_MSG*)*shdl;
struct_tgt_msg = (struct INET_LINE_STATUS_NOTIFY_t*) (*shdl + INET_MSG_HEAD_LEN);
sptr->stsk = INET_INET_TASK_ID;
sptr->rtsk = INET_CSC_TASK_ID;
sptr->msgid = TEL_LINK_STATUS_NOTIFY;
sptr->len = 0x02;
struct_tgt_msg->status = msg_action;
struct_tgt_msg->lineid = msg_lineid;
inet_msg_dump((INT8U*) (* shdl));
SndMsg(sptr->rtsk,shdl);
return OK;
}
/************************************************************************
Function: inet_send_page_rsp_ack_to_csc
Description:
Input: page_rsp_ack.
Output: None
Return: None
Others: None
Histrory: 2006-08-06,yuste,Created
*************************************************************************/
int inet_send_page_rsp_ack_to_csc(struct INET_TEL_PAGE_RSP_ACK_t* page_rsp_ack)
{
UBYTE** shdl;
struct INET_MSG* sptr;
struct INET_TEL_PAGE_RSP_ACK_t *struct_tgt_msg;
shdl = GetMem(sizeof(struct INET_TEL_PAGE_RSP_ACK_t) + INET_MSG_HEAD_LEN);
sptr = (struct INET_MSG*)*shdl;
struct_tgt_msg = (struct INET_TEL_PAGE_RSP_ACK_t*) (*shdl + INET_MSG_HEAD_LEN);
sptr->stsk = INET_INET_TASK_ID;
sptr->rtsk = INET_CSC_TASK_ID;
sptr->msgid = TEL_LINE_RSP_ACK;
sptr->len = 0x04;
struct_tgt_msg->lineid = page_rsp_ack->lineid;
struct_tgt_msg->action = page_rsp_ack->action;
struct_tgt_msg->tch = page_rsp_ack->tch;
struct_tgt_msg->cause = page_rsp_ack->cause;
inet_msg_dump((INT8U*) (* shdl));
SndMsg(sptr->rtsk,shdl);
return OK;
}
/************************************************************************
Function: inet_msg_dump
Description: Print the message content.
Input: msg-->message to be printed
Output: None
Return: None
Others: None
Histrory: 2006-08-08,yuste,Created
*************************************************************************/
void inet_msg_dump(UBYTE* msg)
{
UBYTE* msg_p;
UWORD msg_len;
UBYTE buf_len;
UBYTE temp;
UWORD i;
static BYTE msg_buf[MAX_INET_MSG_DUMP_LEN*3+10] = {0};
if(NULL == msg)
{
//inet_syslog(LOG_WARNING,"\n\r[INET] ($) null mesage pointer!");
printk("\n\r[INET] ($) null mesage pointer!");
return;
}
if(1 == inet_sys_data.inet_msg_dump)
{
msg_p = msg;
memcpy(&msg_len, &msg[6], 0x02);
//msg_len = (msg_p[7] << 8) + msg_p[6];
msg_len += INET_MSG_HEAD_LEN;
memcpy(msg_buf, "\n\r[inet snd]++++++ ", 19);
buf_len = 19;
if((MAX_INET_MSG_DUMP_LEN*3) <= (msg_len*3 + buf_len))
{
msg_len = MAX_INET_MSG_DUMP_LEN - buf_len/3 - 1;
}
for(i=0; i<msg_len; i++)
{
temp = *msg_p;
if((temp >> 4) < 10)
{
msg_buf[buf_len + i*3] = (temp >> 4) + 0x30;
}
else
{
msg_buf[buf_len + i*3] = (temp >> 4) + 0x57;
}
if((temp & 0x0f) < 10)
{
msg_buf[buf_len + i*3 + 1] = (temp & 0x0f) + 0x30;
}
else
{
msg_buf[buf_len + i*3 + 1] = (temp & 0x0f) + 0x57;
}
msg_buf[buf_len + i*3 + 2] = 0x20;
msg_p += sizeof(UBYTE);
}
msg_buf[msg_len*3 + buf_len] = '\0';
//tracef("%s", (char*)msg_buf);
inet_syslog(LOG_INFO,"%s",(char*)msg_buf);
}
return;
}
/************************************************************************
Function: inet_msg_dump_receive
Description: Print the message content.
Input: msg-->message to be printed
Output: None
Return: None
Others: None
Histrory: 2006-08-08,yuste,Created
*************************************************************************/
void inet_msg_dump_recv(UBYTE* msg, INT16U len)
{
UBYTE* msg_p;
UWORD msg_len;
UBYTE buf_len;
UBYTE temp;
UWORD i;
static BYTE msg_buf[MAX_INET_MSG_DUMP_LEN*3+10] = {0};
if(NULL == msg)
{
//inet_syslog(LOG_WARNING,"\n\r[INET] ($) null mesage pointer!");
printk("\n\r[INET] ($) null mesage pointer!");
return;
}
if(1 == inet_sys_data.inet_msg_dump)
{
msg_p = msg;
if(len == 0x0){
memcpy(&msg_len, &msg[6], 0x02);
//msg_len = (msg_p[7] << 8) + msg_p[6];
msg_len += INET_MSG_HEAD_LEN;
memcpy(msg_buf, "\n\r[inet rcv]++++++ ", 19);
}
else{
msg_len = len;
memcpy(msg_buf, "\n\r[iudp rcv]++++++ ", 19);
}
buf_len = 19;
if((MAX_INET_MSG_DUMP_LEN*3) <= (msg_len*3 + buf_len))
{
msg_len = MAX_INET_MSG_DUMP_LEN - buf_len/3 - 1;
}
for(i=0; i<msg_len; i++)
{
temp = *msg_p;
if((temp >> 4) < 10)
{
msg_buf[buf_len + i*3] = (temp >> 4) + 0x30;
}
else
{
msg_buf[buf_len + i*3] = (temp >> 4) + 0x57;
}
if((temp & 0x0f) < 10)
{
msg_buf[buf_len + i*3 + 1] = (temp & 0x0f) + 0x30;
}
else
{
msg_buf[buf_len + i*3 + 1] = (temp & 0x0f) + 0x57;
}
msg_buf[buf_len + i*3 + 2] = 0x20;
msg_p += sizeof(UBYTE);
}
msg_buf[msg_len*3 + buf_len] = '\0';
//tracef("%s", (char*)msg_buf);
inet_syslog(LOG_INFO,"%s",(char*)msg_buf);
}
return;
}
/* 2006-10-12 for debug */
int inet_simulate_tel_line_rsp(INT8U msg_action, INT8U msg_lineid, INT8U msg_tch)
{
UBYTE** shdl;
struct INET_MSG* sptr;
INT8U *pmsg;
INT8U index;
shdl = GetMem(0x03 + INET_MSG_HEAD_LEN);
sptr = (struct INET_MSG*)*shdl;
pmsg = *shdl;
sptr->stsk = INET_TEL_TASK_ID;
sptr->rtsk = INET_CSC_TASK_ID;
sptr->msgid = TEL_LINE_RSP;
sptr->len = 0x03;
index = INET_MSG_HEAD_LEN;
pmsg[index++] = msg_action;
pmsg[index++] = msg_lineid;
pmsg[index++] = msg_tch;
inet_msg_dump((INT8U*) (* shdl));
SndMsg(INET_INET_TASK_ID,shdl); /* send to inet module for debug */
return OK;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -