//===========================================================================
//文件名称：task_server.c
//功能概要：定义task_server任务
//版权所有：苏州大学飞思卡尔嵌入式中心(sumcu.suda.edu.cn)
//===========================================================================
#include "app_inc.h"

//===========================================================================
//函数名称：task_server
//参数说明：无意义
//函数返回：无
//功能概要：任务创建3个客户端任务，然后等待接收消息。在接收到消息之后，
//          任务将消息回发到发送方。
//===========================================================================
void task_server(uint32_t param)
{
	_mqx_uint msg[MSG_SIZE];//任务的消息缓冲区
	_mqx_uint i;
   //创建NUM_CLIENTS个客户任务
   for (i = 0; i < NUM_CLIENTS; i++) 
   {
      _task_create(0, TASK_CLIENT, (uint_32)i);
   } 
   while (TRUE) 
   {
	   //从服务器端消息队列中接收消息，若消息队列空，则阻塞任务，无限等待消息到来
	   _lwmsgq_receive((pointer) server_queue, msg,
				LWMSGQ_RECEIVE_BLOCK_ON_EMPTY, 0, 0);
		printf("Server received message:%c \n", msg[0]);
		//将收到的消息回发给发送方，若消息队列满，则阻塞任务，无限等待消息队列中出现空位
		_lwmsgq_send((pointer) client_queue, msg, LWMSGQ_SEND_BLOCK_ON_FULL);
		printf("Server post the message back.\n", msg[0]);
		_time_delay(1000);
   }

}
