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

📄 inet_line_msg.c

📁 message dispatch,for rtems or linux
💻 C
📖 第 1 页 / 共 3 页
字号:
	else
	{      
		dtmf_len = struct_src_msg->dtmf_num[0];
		if(dtmf_len > 0x0){
			memcpy(struct_tgt_msg->dtmf_num, struct_src_msg->dtmf_num, dtmf_len+1);
			sptr->len += dtmf_len;
			}
	}


	/* dump current message */
	inet_syslog(LOG_INFO,"\n\r[INET]   line(%d) DTMF req sent.", line_id);
	inet_msg_dump((INT8U*) (* shdl));

	/* send message to tel/sip module */
	SndMsg(sptr->rtsk,shdl);  
	
	return OK;

}


/************************************************************************
 Function:      inet_send_hs_offhook_ind_to_csc
 Description:  HS_offhook_ind, or inet_hs_offhook_ind, only change the src taskid and target taskid.
 Input:          lineid.
 Output:        None
 Return:        None
 Others:        None
 Histrory:      2006-08-14,yuste,Created
*************************************************************************/
int inet_send_hs_offhook_ind_to_csc(INT8U lineid)
{
	UBYTE** shdl;
	struct INET_MSG*      rptr; 
	INT8U	*poffhook;

	shdl = GetMem(INET_MSG_HEAD_LEN+1);           

	rptr = (struct INET_MSG*)*shdl; 
	poffhook = *shdl;
	
	rptr->stsk = INET_INET_TASK_ID;
	rptr->rtsk = INET_CSC_TASK_ID;
	rptr->msgid = TEL_OFF_HOOK;
	rptr->len = 1;

	poffhook[INET_MSG_HEAD_LEN] = lineid;

	inet_msg_dump((INT8U*) (* shdl));

	SndMsg(rptr->rtsk, shdl);
	
	return(0);
}

/************************************************************************
 Function:      inet_send_line_release_req_to_telsip
 Description:   send csc_line_release to sip or tel, csc_line_release may not bring the allocated lineid.
 			according to lineid, get target module(SIP or TEL).
 Input:           lineid, msg
 Output:        None 
 Return:        None
 Others:        None
 Histrory:      2006-08-14,yuste,Created
*************************************************************************/
int inet_send_line_release_req_to_telsip(INT8U lineid)
{
	UBYTE** shdl;
	struct INET_MSG*      rptr; 
	struct 	INET_TOTEL_LINE_RELEASE_t  *t_msg;

	shdl = GetMem( INET_MSG_HEAD_LEN+ sizeof(struct INET_TOTEL_LINE_RELEASE_t));           

	rptr = (struct INET_MSG*)*shdl; 
	t_msg = (struct INET_TOTEL_LINE_RELEASE_t*)(*shdl+INET_MSG_HEAD_LEN);	/* CSC_LINE_REQ */
	
	rptr->stsk = INET_CSC_TASK_ID;

	if( (lineid & 0x10) == 0x10 ){   /* to sip */
		rptr->stsk = INET_INET_TASK_ID;
		rptr->rtsk = INET_SIP_TASK_ID;
		}
	else
		rptr->rtsk = INET_TEL_TASK_ID;	

	rptr->msgid = CSC_LINE_REL_REQ;
	rptr->len = 0x02;        /* need not airext */
	
	t_msg->lineid = lineid;		/* sip or tel or hs */
	t_msg->cause = 0x0;

	inet_msg_dump((INT8U*) (* shdl));

	SndMsg(rptr->rtsk, shdl);
	
	return(0);

}



/************************************************************************
 Function:      inet_send_hs_mode_rsp
 Description:  
 Input:           lineid, msg
 Output:        None 
 Return:        None
 Others:        None
 Histrory:      2006-09-04,yuste,Created
*************************************************************************/
int inet_send_hs_work_mode_rsp_to_tel(struct	INET_HS_WORK_MODE_RSP_t	*hs_mode_rsp_msg)
{
	UBYTE** shdl;
	struct INET_MSG* sptr;
	struct INET_HS_WORK_MODE_RSP_t   *struct_tgt_msg;

	shdl = GetMem(sizeof(struct INET_HS_WORK_MODE_RSP_t) + INET_MSG_HEAD_LEN);           
	sptr = (struct INET_MSG*)*shdl; 
	struct_tgt_msg = (struct INET_HS_WORK_MODE_RSP_t*) (*shdl + INET_MSG_HEAD_LEN); 


	sptr->stsk = INET_CSC_TASK_ID;
	sptr->rtsk = INET_TEL_TASK_ID;
	sptr->msgid = CSC_HS_MODE_RSP; 
	sptr->len = 0x02;    

	struct_tgt_msg->mode = hs_mode_rsp_msg->mode;    
	struct_tgt_msg->result = hs_mode_rsp_msg->result;    

	inet_msg_dump((INT8U*) (* shdl));

	SndMsg(sptr->rtsk,shdl);  
	
	return OK;

}


/************************************************************************
 Function:      inet_send_user_mode_rsp_to_tel
 Description:  
 Input:           lineid, msg
 Output:        None 
 Return:        None
 Others:        None
 Histrory:      2006-09-04,yuste,Created
*************************************************************************/
int inet_send_user_mode_rsp_to_tel(struct	INET_HS_USER_MODE_RSP_t	*user_mode_rsp_msg)
{
	UBYTE** shdl;
	struct INET_MSG* sptr;
	struct INET_HS_USER_MODE_RSP_t   *struct_tgt_msg;

	shdl = GetMem(sizeof(struct INET_HS_USER_MODE_RSP_t) + INET_MSG_HEAD_LEN);           
	sptr = (struct INET_MSG*)*shdl; 
	struct_tgt_msg = (struct INET_HS_USER_MODE_RSP_t*) (*shdl + INET_MSG_HEAD_LEN); 

	sptr->stsk = INET_CSC_TASK_ID;
	sptr->rtsk = INET_TEL_TASK_ID;
	sptr->msgid = CSC_USER_MODE_RSP; 
	sptr->len = 0x02;    

	struct_tgt_msg->mode = user_mode_rsp_msg->mode;    
	struct_tgt_msg->result = user_mode_rsp_msg->result;    

	inet_msg_dump((INT8U*) (* shdl));

	SndMsg(sptr->rtsk,shdl);  
	
	return OK;

}


/************************************************************************
 Function:      inet_send_max_so_num_to_tel
 Description:  
 Input:           max_so_num
 Output:        None 
 Return:        None
 Others:        None
 Histrory:      2006-09-04,yuste,Created
*************************************************************************/
int inet_send_max_so_num_to_tel(UBYTE max_so_num)
{
	UBYTE** shdl;
	struct INET_MSG* sptr;
	INT8U	*pmsg;
	INT8U	index;

	shdl = GetMem(1 + INET_MSG_HEAD_LEN);           
	sptr = (struct INET_MSG*)*shdl; 
	pmsg = *shdl;

	sptr->stsk = INET_CSC_TASK_ID;
	sptr->rtsk = INET_TEL_TASK_ID;
	sptr->msgid = CSC_INFORM_SO_NUM; 
	sptr->len = 0x01;    
	
	index = INET_MSG_HEAD_LEN;

	pmsg[index] = max_so_num;

	inet_msg_dump((INT8U*) (* shdl));

	SndMsg(sptr->rtsk,shdl);  
	
	return OK;

}


/************************************************************************
 Function:      inet_send_net_mode_rsp_to_tel
 Description:  
 Input:           lineid, msg
 Output:        None 
 Return:        None
 Others:        None
 Histrory:      2006-09-04,yuste,Created
*************************************************************************/
int inet_send_net_mode_rsp_to_tel(struct INET_NET_MODE_RSP_t	*net_mode_rsp_msg)
{
	UBYTE** shdl;
	struct INET_MSG* sptr;
	struct INET_NET_MODE_RSP_t   *struct_tgt_msg;

	shdl = GetMem(sizeof(struct INET_NET_MODE_RSP_t) + INET_MSG_HEAD_LEN);           
	sptr = (struct INET_MSG*)*shdl; 
	struct_tgt_msg = (struct INET_NET_MODE_RSP_t*) (*shdl + INET_MSG_HEAD_LEN); 

	sptr->stsk = INET_CSC_TASK_ID;
	sptr->rtsk = INET_TEL_TASK_ID;
	sptr->msgid = CSC_NET_MODE_RSP; 
	sptr->len = 0x01;    

	struct_tgt_msg->result = net_mode_rsp_msg->result;    

	inet_msg_dump((INT8U*) (* shdl));

	SndMsg(sptr->rtsk,shdl);  
	
	return OK;

}


/************************************************************************
 Function:      inet_send_access_code_rsp_to_tel
 Description:  
 Input:           lineid, msg
 Output:        None 
 Return:        None
 Others:        None
 Histrory:      2006-09-04,yuste,Created
*************************************************************************/
int inet_send_access_code_rsp_to_tel(struct INET_ACCESS_CODE_RSP_t	*access_code_rsp_msg)
{
	UBYTE** shdl;
	struct INET_MSG* sptr;
	struct INET_ACCESS_CODE_RSP_t   *struct_tgt_msg;

	shdl = GetMem(sizeof(struct INET_ACCESS_CODE_RSP_t) + INET_MSG_HEAD_LEN);           
	sptr = (struct INET_MSG*)*shdl; 
	struct_tgt_msg = (struct INET_ACCESS_CODE_RSP_t*) (*shdl + INET_MSG_HEAD_LEN); 

	sptr->stsk = INET_CSC_TASK_ID;
	sptr->rtsk = INET_TEL_TASK_ID;
	sptr->msgid = CSC_AREA_COD_ACK; 
	sptr->len = 0x0a;    

	struct_tgt_msg->result = access_code_rsp_msg->result;    
	struct_tgt_msg->oper_flag = access_code_rsp_msg->oper_flag;    
	memcpy(struct_tgt_msg->access_code, access_code_rsp_msg->access_code, 0x08);    

	inet_msg_dump((INT8U*) (* shdl));

	SndMsg(sptr->rtsk,shdl);  
	
	return OK;

}


/************************************************************************
 Function:      inet_send_link_req_to_mc
 Description:   
 Input:         
 Output:        None 
 Return:        None
 Others:        None
 Histrory:      2006-08-14,yuste,Created
*************************************************************************/
int inet_send_link_req_to_mc(struct INET_MC_LINK_REQ_t  *link_req)
{
	UBYTE** shdl;
	struct 	INET_MSG* sptr;
	INT8U	*pmsg;
	INT8U	index;

	shdl = GetMem(sizeof(struct INET_MC_LINK_REQ_t) + INET_MSG_HEAD_LEN);           
	sptr = (struct INET_MSG*)*shdl; 
	pmsg = *shdl;

	sptr->stsk = INET_INET_TASK_ID;
	sptr->rtsk = INET_MC_TASK_ID;

	sptr->msgid = INET_MC_LINK_REQ; 
	sptr->len = 0x17;    

	index = INET_MSG_HEAD_LEN;

	pmsg[index++] = link_req->action;
	pmsg[index++] = link_req->lineid;
	pmsg[index++] = link_req->tone_type;
	pmsg[index++] = link_req->codec_type;
	pmsg[index++] = link_req->inband_dtmf_rcv;
	pmsg[index++] = link_req->src_type;
	
	memcpy(&pmsg[index], &link_req->src_address, 0x04);
	index += 4;
	memcpy(&pmsg[index], &link_req->src_udp_port, 0x02);
	index += 2;
	memcpy(&pmsg[index], &link_req->src_local_udp_port, 0x02);
	index += 2;
	pmsg[index++] = link_req->tgt_type;
	memcpy(&pmsg[index], &link_req->tgt_address, 0x04);
	index += 4;
	memcpy(&pmsg[index], &link_req->tgt_udp_port, 0x02);
	index += 2;
	memcpy(&pmsg[index], &link_req->tgt_local_udp_port, 0x02);
	index += 2;

	inet_msg_dump((INT8U*) (* shdl));

	SndMsg(sptr->rtsk,shdl);  
	
	return OK;
	
}

/************************************************************************
 Function:      inet_send_link_req_to_mc
 Description:   
 Input:         
 Output:        None 
 Return:        None
 Others:        None
 Histrory:      2007-03-14,yuste,Created
*************************************************************************/
int inet_send_link_ta_insert_to_mc(struct INET_LINK_TA_INSERT_t  *ta_insert)
{
	UBYTE** shdl;
	struct 	INET_MSG* sptr;
	INT8U	*pmsg;
	INT8U	index;

	shdl = GetMem(sizeof(struct INET_LINK_TA_INSERT_t) + INET_MSG_HEAD_LEN);           
	sptr = (struct INET_MSG*)*shdl; 
	pmsg = *shdl;

	sptr->stsk = INET_INET_TASK_ID;
	sptr->rtsk = INET_MC_TASK_ID;

	sptr->msgid = INET_MC_TA_INSERT_REQ; 
	sptr->len = 0x03;    

	index = INET_MSG_HEAD_LEN;

	pmsg[index++] = ta_insert->action;
	pmsg[index++] = ta_insert->lineid;
	pmsg[index++] = ta_insert->ta_type;

	inet_msg_dump((INT8U*) (* shdl));

	SndMsg(sptr->rtsk,shdl);  
	
	return OK;
	
}

/************************************************************************
 Function:      inet_send_dtmf_req_to_mc
 Description:   
 Input:         
 Output:        None 
 Return:        None
 Others:        None
 Histrory:      2006-08-14,yuste,Created
*************************************************************************/
int inet_send_dtmf_req_to_mc(struct INET_MC_DTMF_SND_REQ_t  *mc_dtmf_snd)
{
	UBYTE** shdl;
	struct INET_MSG* sptr;
	struct INET_MC_DTMF_SND_REQ_t  *target_msg;


	shdl = GetMem(INET_DTMF_REQUEST_LEN);           
	sptr = (struct INET_MSG*)*shdl; 
	target_msg = (struct INET_MC_DTMF_SND_REQ_t*) (*shdl + INET_MSG_HEAD_LEN); 

	sptr->stsk = INET_INET_TASK_ID;
	sptr->rtsk = INET_MC_TASK_ID;

	sptr->msgid = INET_MC_DTMF_SND_REQ; 
	sptr->len = 0x02;    

	target_msg->lineid = mc_dtmf_snd->lineid;
	target_msg->dtmf_len = mc_dtmf_snd->dtmf_len;

	memcpy(target_msg->dtmf, mc_dtmf_snd->dtmf, target_msg->dtmf_len);

	sptr->len += 	target_msg->dtmf_len;

	inet_msg_dump((INT8U*) (* shdl));

	SndMsg(sptr->rtsk,shdl);  
	
	return OK;
	
}


/************************************************************************
 Function:      inet_send_line_disc_to_csc
 Description:  .

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -