/* * lightsens.c * * Created on: 23.10.2011 * Author: Roland */ #include "Types.h" #include "FreeRTOS.h" #include "queue.h" #define TASK_PRIORITY_lightsens ( tskIDLE_PRIORITY + 2 ) #define TASK_STACK_SIZE_lightsens ( ( unsigned short ) 64 ) /* Globals */ static Task_Param_t TaskParam_LightSens; /* * Wake up other tasks, send them messages telling what to do, * wait for them to have processed the commands or not, maybe * put them to sleep again, ... * */ static void lightsens_Process_Task(void *Param) { Message_t Msg; portCHAR chBufLSe[10] = "Seas Knl!"; if(NULL == TaskParam_LightSens.QueueHandles.hxq_LightSens) { return; } Msg.Sender = Sender_LightSens; Msg.pData = chBufLSe; xQueueSend(TaskParam_LightSens.QueueHandles.hxq_Kernel, &Msg, MS(10)); while(1) { if( xQueueReceive( TaskParam_LightSens.QueueHandles.hxq_LightSens, &Msg, MS(5))) { /* * switch Msg.Sender * */ Msg.Sender = Sender_LightSens; Msg.pData = chBufLSe; xQueueSend(TaskParam_LightSens.QueueHandles.hxq_Kernel, &Msg, MS(10)); } } } Status_t lightsens_Init_LightSens(QH_t hxQueues) { TaskParam_LightSens.QueueHandles = hxQueues; if(!xTaskCreate( lightsens_Process_Task, (signed char *) "LightSensor", TASK_STACK_SIZE_lightsens, &TaskParam_LightSens, TASK_PRIORITY_lightsens, &(TaskParam_LightSens.hxTask_Self))) return STATUS_ERROR_INIT; /*TODO: check for success and pass it over to caller. */ return STATUS_OK; }