Example #1
0
/*
 * Convert an array of 16-bit integers from HP's big-endian form to the
 * native byte order required by the host processor.
 */
static void
convert_int16_array(int num_ints, const byte * pinbuff, int16 * poutbuff)
{
    while (num_ints-- > 0) {
        *poutbuff++ = make_int16(pinbuff);
        pinbuff += 2;
    }
}
Example #2
0
int rau_app_analysis_data(SOCKET client,char *pbuf,int len)
{

    int ret = -1;
    short cmd = 0,cmd_h=0xffff,cmd_l=0xffff, ver = 0;	
    int cmd_index = 0;
    int datalen = 0;	
    LClock_t EndClock;
    
    if(*pbuf!=0x02)
    {
    	hclog("消息头错误\n");
        ret = HEAD_ERROR;
    	return ret;
    }
    pbuf++;
    ver = make_int16(pbuf);
    hclog("protocol version number:%d\n",(unsigned int)ver);
    pbuf+=2;

    cmd = make_int16(pbuf);
    hclog("command number:0x%02x\n",(unsigned int)cmd);
    cmd_h=cmd&0xff00;
    cmd_l=cmd&0x00ff;
    pbuf+=2;

    cmd_index = make_int32(pbuf);
    hclog("command index:%d\n",(unsigned int)cmd_index);
    pbuf+=4;

    datalen = make_int32(pbuf);
    hclog("datalen:%d\n",(unsigned int)datalen);
    pbuf+=4;

    ret = cmd_l;
    if((cmd_l == CMD_LOGIN) && (cmd_h ==CMD_RESPONSE) && (cmd_index==gclient_cmd_index))/*登陆成功*/
    {
        hlog("login success\n");
        client_get_member_list(client);
    } 
    else if((cmd_l == CMD_GET_MEMBER_LIST) && (cmd_h ==CMD_RESPONSE) && (cmd_index==gclient_cmd_index))/*返回成员列表*/
    {
        char com_rbuf[MAX_LOG_LEN]={0};
        int rlen = 0;        
        rt_memset(com_rbuf,0,MAX_LOG_LEN);
        hlog("return member\n");
        client_save_member_list(pbuf,datalen);
    }
    else if((cmd_l == CMD_SEND_MESSAGE) && (cmd_h ==CMD_RESPONSE) /*&& (cmd_index==gclient_cmd_index)*/)/*消息发送成功*/
    {
        hlog("send message success\n");
    }
    else if((cmd_l == CMD_FORWARD_MESSAGE) && (cmd_h ==0))
    {
        hlog("receive message\n");
        EndClock=GetClock();
        hlog("UsedClock:%lf\n",EndClock);        
        //printf_buf(pbuf,datalen);
        client_recvice_message(pbuf,datalen);
        client_send_receive_success(client,pbuf,cmd_index);
        
    }
    else
    {
    	hclog("unknow cmd number received:%d",(unsigned int)cmd);
    }

    return ret;
    
}
Example #3
0
int client_data_proc(char* data, int len, send_data_t* sptr)
{
	int ret=0;
	int mlen=0;
	short cmd;
	int dlen,index,srcid,destid,dataLen;
	char from[MAX_NAME_LEN]={0};
	char to[MAX_NAME_LEN]={0};
	char rdata[128]={0};
	char flag,dataType;
	char* p = data;
	if(data==NULL || len<=0)
		return ret;
	hlog("processRecvMsg()--len:%d\n",len);
	if(*p!=0x02)
	{
		hlog("processRecvMsg()--msg not begin with 0x02\n");
		return ret;
	}

	p++;
	dlen = make_int32(p);
	p+=4;
	p+=2;//version
	cmd = make_int16(p);//ntohs((u_short)*p);
	p+=2;
	index = make_int32(p);//ntohl((u_int)*p);
	p+=4;
	flag = *p;
	p++;

	if(cmd == MSG_CMD_SEND_DATA)
	{
		srcid = make_int32(p);
		p+=4;
		destid = make_int32(p);
		p+=4;
		dataType = *p;
		p++;
		dataLen = make_int32(p);
		p+=4;
		if(DEVICE_ID == destid)
		{
			//send to comm port and wait response
/*			rcu_uart_write(p,dataLen);
			dlen=rcu_uart_read(rdata,128);
			if(dlen<128)
			{
				p = rdata;
				return getSendMsgData(srcid,rdata,dlen,sptr);
			}*/
			sprintf(rdata,"got %s",p);
                    dlen = strlen(rdata);
			return getSendMsgData(srcid,rdata,dlen,sptr);
		}
		
	}


#if 0
	p++;
	p+=2;//version
	cmd = make_int16(p);//ntohs((u_short)*p);
	p+=2;
	index = make_int32(p);//ntohl((u_int)*p);
	p+=4;
	dlen = make_int32(p);//ntohl((u_int)*p);
	p+=4;

	hlog("recv msg,cmd:%d,index:%d,dlen:%d\n",(int)cmd,index,dlen);

	if(cmd == 0x0004)
	{
		strcpy(from,p);
//		hlog("msg from:%s\n",from);
		p+=MAX_NAME_LEN;
		strcpy(to,p);
//		hlog("msg to:%s\n",to);
		p+=MAX_NAME_LEN;
//		hlog("msg content:%s\n",p);
		mlen = dlen-2*MAX_NAME_LEN;
		p[mlen]=0;
#ifdef DEV_RAU
		rcu_uart_write("\nRECV:",6);
		rcu_uart_write(p,mlen);
		rcu_uart_write("\n",1);
		//ret = getAckMsgData(cmd,index,sptr);
		dlen=rcu_uart_read(rdata,128);
		if(dlen<128)
		{
			p = rdata;
		}
		else
		{
			dlen = mlen;
		}
#endif
		ret = getForwardReply(index,from,to,p,dlen,sptr);
	}
	else if(cmd == 0x0104)
	{
		strcpy(from,p);
//		hlog("msg from:%s\n",from);
		p+=MAX_NAME_LEN;
		strcpy(to,p);
//		hlog("msg to:%s\n",to);
		p+=MAX_NAME_LEN;
//		hlog("msg content:%s",p);
		mlen = dlen-2*MAX_NAME_LEN;
		p[mlen]=0;

		//ret = getAckMsgData(cmd,index,sptr);
		ret = 0;
	}
	else if(cmd == 0x0103)
	{
		hlog("recv ack msg.....\n");
/*		char tmp[MAX_NAME_LEN+1]={0};
		TCHAR utmp[2*MAX_NAME_LEN+2]={0};
		m_devlist.ResetContent();

		int num = dlen/(MAX_NAME_LEN+1);
		hlog("get device list num:%d\n",num);
//		p+=4;
		for(int i=0;i<num;i++)
		{
			strcpy_s(tmp,p);
		#ifdef UNICODE  
			MultiByteToWideChar(CP_ACP, 0, tmp, -1, utmp, 2*MAX_NAME_LEN);  
		#else  
			strcpy_s(buf, str);  
		#endif  
			m_devlist.AddString(utmp);
			if(i<(num-1))
				p+=(MAX_NAME_LEN+1);
		}	
*/
	}
#endif
	return ret;
}