⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 inet_line_msg.c

📁 message dispatch,for rtems or linux
💻 C
📖 第 1 页 / 共 3 页
字号:
 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 + -