Example #1
0
/////////////////////////////////////////////////////////////////////
//	函数名称:Class_Table_Check
//	函数功能:课程表检测,检测是否有定时开关机信息
//	入口参数:
//
//	出口参数:无
////////////////////////////////////////////////////////////////////
BYTE Class_Table_Check(void)
{
    struct CLASS_TABLE_REC *pClass;
    struct REALTIME_TYPE *ptime;
    BYTE *pBase, i, buf[3];
    struct MSG_REV_TYPE Rev;
    if ((gClassT.Curr_rec == 0) || (gClassT.Curr_rec > 7))
        return FALSE;
    Rev.Type = DEV_XCOM_TIME;
    pBase = (BYTE *)(gClassT.Class_Table_Rec + 3);
    ptime = RealTime_Get();

    for (i = 0; i <= gClassT.Curr_rec; i++)
    {
        pClass = (struct CLASS_TABLE_REC *)(pBase + i * sizeof(struct CLASS_TABLE_REC));
        if ((pClass->class_begin.hour == ptime->hour) && (pClass->class_begin.min == ptime->min))
        {
            if (gDeviceTable.Class.Flag & CLASS_TASK_FLAG_OVER)
            {
                buf[0] = MSG_DEV_MAINBARD;
                buf[1] = MSG_OPTION_CLASS_BEGIN;
                buf[2] = 3;
                Msg_send(buf, 3, (uint8 *)&Rev);
                return TRUE;
            }
        }
        else if ((pClass->class_over.hour == ptime->hour) && (pClass->class_over.min == ptime->min))
        {
            if (gDeviceTable.Class.Flag & CLASS_TASK_FLAG_OVER)
                return FALSE;
            buf[0] = MSG_DEV_MAINBARD;
            buf[1] = MSG_OPTION_CLASS_OVER;
            buf[2] = 0;
            Msg_send(buf, 3, (uint8 *)&Rev);
            return TRUE;
        }
    }
    return FALSE;
}
Example #2
0
////////////////////////////////////////////////////////////////////
//	函数名称:void UDP_msg_rev(uint8 *p)
//	函数功能:网络命令解析
//	入口参数:
//
//
//	出口参数:无
////////////////////////////////////////////////////////////////////
void UDP_msg_rev(uint8 *pdata)
{
    struct tagIC2CMD_Header cmd;
    NetP *pnet;
    BYTE buf[8], rev_buf[12];
    struct BASE_MSG *pmsg;
    struct MSG_REV_TYPE *prev;
    memcpy((BYTE *)&cmd, pdata + sizeof( struct XCOM_REV_TYPE), sizeof(struct tagIC2CMD_Header));
    pnet = (NetP *)Get_NetPort();
    if (cmd.dwSyncHead != CMD_ABLE_ICII) return;
    IPDword_TO_Byte(buf, cmd.dwToIP);
    if ((cmd.byteProtocolType & CMD_SENDER_ACK) == CMD_SENDER_ACK)
    {

        buf[0] = MSG_DEV_MAINBARD;
        buf[1] = MSG_OPTION_COMM;
        buf[2] = cmd.byteFrameIndex;
        buf[3] = DEV_XCOM_UDP;
        Task_Rec_Del(buf, 4); //删除消息列表中的重发消息
    }
    else
    {
        if (buf[3] == 0xff)
        {
            pmsg = (struct BASE_MSG *)(pdata + sizeof(struct XCOM_REV_TYPE) + sizeof(struct tagIC2CMD_Header));
            if (pmsg->option == MSG_OPTION_FILE_REQ) return;
        }
        UDP_Send_ACK(pdata);
        prev = (struct MSG_REV_TYPE *)rev_buf;
        prev->Type = DEV_XCOM_UDP;
        IPDword_TO_Byte(buf, cmd.dwFromIP);
        memcpy(prev->des_ip, buf, 4);
        /*
        pmsg=(struct BASE_MSG)pdata+sizeof(struct XCOM_REV_TYPE)+sizeof(struct tagIC2CMD_Header);
           p=(uint8 *)pmsg+2;
           if ((pmsg->device==MSG_DEV_MAINBARD)&&(pmsg->option==MSG_OPTION_CLASS_BEGIN))
           	{*p=4;
           	}
           if ((pmsg->device==MSG_DEV_MAINBARD)&&(pmsg->option==MSG_OPTION_CLASS_OVER))
           	{*p=0;
           	}
                      */
        Msg_send((uint8 *)pdata + sizeof(struct XCOM_REV_TYPE) + sizeof(struct tagIC2CMD_Header), cmd.wDataLen, rev_buf);
    }
    pnet = pnet;
}
Example #3
0
/*==============================================================================
* Name	 :	void Client_test_cb(struct ev_loop* lp, ev_io* wt, int ev)
* Abstr	 :	Check the connection is established successful or not
* Params :	struct ev_loop* lp: inner event loop
*			ev_io* 			wt: socket io watcher
*			int 			ev: specific event
* Return :	
* Modify :	
*=============================================================================*/
static void Client_test_cb(struct ev_loop* lp, ev_io* wt, int ev)
{	
	int8				err;
	uint16			len;	/* msg length */
	CONN_INFO*			conn;	/* connection with servant server */

	err = EXEC_SUCS;
	len	= 0;
	conn = container_of(wt, CONN_INFO, io_wt);

	/* stop the socket io watcher */
	ev_io_stop(host_loop, wt); 
	ev_async_send(host_loop, &async_wt);

	/* check the result of connect */
	switch (ev) {
	case EV_WRITE:	/* connect success */
		log_debug(log_cat, "%s: connect success [s_fd=%d]", &conn->name[0], conn->fd);
		conn->is_alive = TRUE;
		/* send login msg */
		err = Msg_send(&(conn->fd), &(conn->s_buf[0]), &(conn->name[0]));
		if (!err) {
			Client_switch_to_recv(conn);
		} else {
			Client_switch_to_stop(conn);
		}
		break;
	case EV_READ:
	case (EV_READ | EV_WRITE):
	default:		/* connect failed */
		log_fatal(log_cat, "%s: connect failed [s_fd=%d] [%s]", 
				  &conn->name[0], conn->fd, strerror(errno));
		Client_switch_to_stop(conn);
		break;
	}
}
Example #4
0
////////////////////////////////////////////////////////////////////
//	函数名称:
//	函数功能:处理
//	入口参数:void *pdata
//
//			MSG_OPTION_CLASS_BEGIN
//	出口参数:无
////////////////////////////////////////////////////////////////////
//void K8_UDP_Rec_Process( tagCommand *pcommand, eip *prec)
void K8_UDP_Rec_Process( void *pdata, eip *prec)
{
    uint8 buf[300] = {0}, rev_buf[80], n, *p;
    uint16 i;
    struct MSG_REV_TYPE  rec_type;
    struct SFILE_TRANSLATE_TYPE File_type;
    struct BASE_MSG Base_msg;
    tagCommand pcommand;
    
    p = (uint8 *)pdata;
    Mem_Copy((uint8 *)&pcommand, p, sizeof( tagCommand));   

    rec_type.Type = DEV_XCOM_UDP;
    rec_type.des_ip[0] = prec->SourceIp[0];
    rec_type.des_ip[1] = prec->SourceIp[1];
    rec_type.des_ip[2] = prec->SourceIp[2];
    rec_type.des_ip[3] = prec->SourceIp[3];

    memcpy(&rev_buf, &rec_type, sizeof(struct MSG_REV_TYPE));
    
    //memcpy(&buf[4], p + sizeof(struct BASE_MSG) + sizeof(struct SFILE_TRANSLATE_TYPE), sizeof(tagCommand));
    

    Base_msg.device = MSG_DEV_LMT;

    //IP_printf("recive S:%x R:%x C:%x F:%x\n",pcommand->sender,pcommand->receiver,pcommand->command,pcommand->flag);
    //buf[0]=MSG_DEV_LMT;
    switch(pcommand.command)
    {
    case EMCOMMANDREMOTECONTROLLER:
        Base_msg.device = MSG_DEV_LAN_KB;
        Base_msg.option = MSG_OPTION_LAN_KEY;
        buf[2] = KEY_VAL;
        switch(pcommand.flag)
        {
        case EMRCACTIONPOWERON:
            buf[3] = KEY_CLASS_BEGIN;
            buf[4] = KEY_CLASS_BEGIN >> 8;
            break;
        case EMRCACTIONPOWEROFF:
            buf[3] = KEY_CLASS_BEGIN;
            buf[4] = KEY_CLASS_BEGIN >> 8;
            break;
        case EMRCACTIONRECORDSTART:
            buf[3] = KEY_REC_PUSH ;
            buf[4] = KEY_REC_PUSH >> 8;
            break;
        case EMRCACTIONRECORDPAUSE:
            buf[3] = KEY_REC_PUSH;
            buf[4] = KEY_REC_PUSH >> 8;
            break;
        case EMRCACTIONRECORDSTOP:
            buf[3] = KEY_REC_STOP;
            buf[4] = KEY_REC_STOP >> 8;
            break;
        case EMRCACTIONDEVPC:
            buf[3] = KEY_DEVICE_PC;
            buf[4] = KEY_DEVICE_PC >> 8;
            break;
        case EMRCACTIONDEVNPC:
            buf[3] = KEY_DEVICE_NPC;
            buf[4] = KEY_DEVICE_NPC >> 8;
            break;
        case EMRCACTIONDEVSHOW:
            buf[3] = KEY_DEVICE_SHOW;
            buf[4] = KEY_DEVICE_SHOW >> 8;
            break;
        }
        break;
    case EMCOMMANDHEARTBEAT:
        Base_msg.option = MSG_OPTION_REC_K8;
        break;
    case EMCOMMANDCOM1:
    case EMCOMMANDCOM2:
    case EMCOMMANDCOM3:
    case EMCOMMANDCOM4:
    case EMCOMMANDSETBAUDRATE:
        Base_msg.option = MSG_OPTION_SCAMERA_CONTRL;
        break;
    case EMCOMMANDRESET:
        Base_msg.option = MSG_OPTION_RESET;
        break;
    case EMCOMMANDFILEREQ:
        Base_msg.option = MSG_OPTION_FILE_REQ;

        File_type.FileType = FILE_TYPE_TABLE;
        File_type.FilePage = pcommand.flag;
        memcpy(&buf[2], &File_type, sizeof(struct SFILE_TRANSLATE_TYPE));
        break;
    case EMCOMMANDFILESEND:
        Base_msg.option = MSG_OPTION_FILE_SEND;
        File_type.FileType = FILE_TYPE_TABLE;
        File_type.FilePage = pcommand.flag;
        memcpy(&buf[2], &File_type, sizeof(struct SFILE_TRANSLATE_TYPE));
        break;
    default:
        Base_msg.option = MSG_OPTION_NONE;
        break;
    }
    //Msg_send(buf,sizeof(tagCommand)+4,rev_buf);
    memcpy(&buf[0], &Base_msg, sizeof(struct BASE_MSG));
    if(Base_msg.option == MSG_OPTION_FILE_SEND)
    {   
        n = sizeof(struct BASE_MSG) + sizeof(struct SFILE_TRANSLATE_TYPE);
        memcpy(&buf[n], p + sizeof(tagCommand), 256);
        //IP_printf_256(&buf[n]);
        Msg_send(buf, sizeof(struct BASE_MSG) + sizeof(struct SFILE_TRANSLATE_TYPE) +256, rev_buf);
       
    }
    else
    {
        Msg_send(buf, 30, rev_buf);
    }

    //IP_printf("buf:%x %x %x %x %x %x %x %x %x %x\n",buf[0],buf[1],buf[2],buf[3],buf[4],buf[5],buf[6],buf[7],buf[8],buf[9]);
    

}