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

📄 monitorloop.c

📁 vxworks嵌入式程序
💻 C
字号:
#include "kernal.h"
#include "kernal.c"

#define MONITOR_LOOP_CMD_DATA 1

//defined in kernel.c, Information of remote users
extern REMOTE_USER_INFO online_user[MAX_REMOTE_USER];

//defined in kernel.c, the parameters in the runtime.
extern SYSTEM_RUNTIME   runtime;

void mlNetSend(MONITOR_MESSAGE *msg);

//function: monitorLoop()
//description: 任务入口函数
//arguments: no
//return: no
void monitorLoop(void)
{
    S32 ret;
    while(1)
    {
        ret = receive_message();     //lack argument
        if (ret < sizeof(CMD_MESSAGE))
        	continue;

        switch(msg->cmd)
            {
                case MONITOR_LOOP_CMD_DATA:
                    mlNetSend(msg);
                    break;
                default:
                    break;
            }
                
    }
}

//function: mlNetSend()
//description: 有数据到达的时候,将数据发送给用户。
//arguments: MONITOR_MESSAGE
//return: no
void mlNetSend(MONITOR_MESSAGE *msg)
{
    S32 i;
    struct sockaddr_in to;
    for (i = 0; i < MAX_REMOTE_USER; i++)
    {
        switch(online_user[i].user_type)
        {
            case FRAME_USER:
            	if (mpGetType() != VIDEO_I_FRAME)
            		continue;
            	switch(online_user[i].trans_type)
            	{
            	    case UI_TCP:
            	    	mpSend(msg->datahead, online_user[i].socket_handle);
            	    	break;
            	    case UI_UDP:
            	    case UI_MC:
            	    	to.sin_len = sizeof(struct sockaddr);
            	    	to.sin_family = AF_INET;
            	    	to.sin_port = htons(online_user[i].port);
            	    	to.sin_addr.s_addr = htonl(
            	    		online_user[i].ipaddress.long_address);
            	    	mpSendto(msg->datahead, runtime.mc_socket, &to);
            	    	break;
            	    default:
            	}
            	break;
            case TALK_USER:
            	if (mpGetType() != AUDIO_FRAME)
           		continue;
            	switch(online_user[i].trans_type)
            	{
            	    case UI_TCP:
            	    	mpSend(msg->datahead, online_user[i].socket_handle);
            	    	break;
            	    case UI_UDP:
            	    case UI_MC:
            	    	to.sin_len = sizeof(struct sockaddr);
            	    	to.sin_family = AF_INET;
            	    	to.sin_port = htons(online_user[i].port);
            	    	to.sin_addr.s_addr = htonl(
            	    		online_user[i].ipaddress.long_address);
            	    	mpSendto(msg->datahead, runtime.mc_socket, &to);
            	    	break;
            	    default:
            	}
            	break;
            case VIDEO_USER:
            	switch(online_user[i].trans_type)
            	{
            	    case UI_TCP:
            	    	mpSend(msg->datahead, online_user[i].socket_handle);
            	    	break;
            	    case UI_UDP:
            	    case UI_MC:
            	    	to.sin_len = sizeof(struct sockaddr);
            	    	to.sin_family = AF_INET;
            	    	to.sin_port = htons(online_user[i].port);
            	    	to.sin_addr.s_addr = htonl(
            	   		online_user[i].ipaddress.long_address);
            	    	mpSendto(msg->datahead, runtime.mc_socket, &to);
            	    	break;
            	    default:
            	}
            	break;
            default:
        }
    }
    return;
}

⌨️ 快捷键说明

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