void RSTDIO_Init(void) { RSTDIO_dstAddr = RNWK_ADDR_BROADCAST; RSTDIO_RxStdInQ = FRTOS1_xQueueCreate(RSTDIO_QUEUE_LENGTH, RSTDIO_QUEUE_ITEM_SIZE); if (RSTDIO_RxStdInQ==NULL) { for(;;){} /* out of memory? */ } RSTDIO_RxStdOutQ = FRTOS1_xQueueCreate(RSTDIO_QUEUE_LENGTH, RSTDIO_QUEUE_ITEM_SIZE); if (RSTDIO_RxStdOutQ==NULL) { for(;;){} /* out of memory? */ } RSTDIO_RxStdErrQ = FRTOS1_xQueueCreate(RSTDIO_QUEUE_LENGTH, RSTDIO_QUEUE_ITEM_SIZE); if (RSTDIO_RxStdErrQ==NULL) { for(;;){} /* out of memory? */ } RSTDIO_TxStdInQ = FRTOS1_xQueueCreate(RSTDIO_QUEUE_LENGTH, RSTDIO_QUEUE_ITEM_SIZE); if (RSTDIO_TxStdInQ==NULL) { for(;;){} /* out of memory? */ } RSTDIO_TxStdOutQ = FRTOS1_xQueueCreate(RSTDIO_QUEUE_LENGTH, RSTDIO_QUEUE_ITEM_SIZE); if (RSTDIO_TxStdOutQ==NULL) { for(;;){} /* out of memory? */ } RSTDIO_TxStdErrQ = FRTOS1_xQueueCreate(RSTDIO_QUEUE_LENGTH, RSTDIO_QUEUE_ITEM_SIZE); if (RSTDIO_TxStdErrQ==NULL) { for(;;){} /* out of memory? */ } #if PL_HAS_RTOS_TRACE RTOSTRC1_vTraceSetQueueName(RSTDIO_RxStdInQ, "RxStdIn"); RTOSTRC1_vTraceSetQueueName(RSTDIO_RxStdOutQ, "RxStdOut"); RTOSTRC1_vTraceSetQueueName(RSTDIO_RxStdErrQ, "RxStdErr"); RTOSTRC1_vTraceSetQueueName(RSTDIO_TxStdInQ, "TxStdIn"); RTOSTRC1_vTraceSetQueueName(RSTDIO_TxStdOutQ, "TxStdOut"); RTOSTRC1_vTraceSetQueueName(RSTDIO_TxStdErrQ, "TxStdErr"); #endif }
static portTASK_FUNCTION(vMasterTask, pvParameters) { xSemaphoreHandle sem = NULL; (void)pvParameters; /* parameter not used */ FRTOS1_vSemaphoreCreateBinary(sem); if (sem==NULL) { /* semaphore creation failed */ for(;;){} /* error */ } #if PL_HAS_RTOS_TRACE RTOSTRC1_vTraceSetQueueName(sem, "IPC_Sem"); #endif /* create slave task */ if (FRTOS1_xTaskCreate(vSlaveTask, "Slave", configMINIMAL_STACK_SIZE, sem, tskIDLE_PRIORITY+1, NULL) != pdPASS) { for(;;){} /* error */ } for(;;) { if (sem != NULL) { /* valid semaphore? */ (void)xSemaphoreGive(sem); /* give control to other task */ FRTOS1_vTaskDelay(1000/portTICK_RATE_MS); } } }