#include "task_function.h" /* Start user code for import. Do not edit comment generated here */ #include "freertos_start.h" #include "platform.h" #include "r_cg_serial.h" #include "rl78g14fpbdef.h" volatile bool g_task_CONIO_error = false; #define CON_RECV_DEMO_SIZE 3 #if defined(RENESAS_SIMULATOR_DEBUGGING) /* Hardware or Renesas RL78 Simulator */ #define LED1_ERROR_BLINK_FREQUENCY_MS pdMS_TO_TICKS( !IsRenesasSimDebugMode() ? 200 : 20 ) #define CON_RECV_TIMEOUT_MS pdMS_TO_TICKS( !IsRenesasSimDebugMode() ? 60 * 1000UL : 600L ) //#define CON_RECV_TIMEOUT_MS pdMS_TO_TICKS( !IsRenesasSimDebugMode() ? 60 * 1000UL : portMAX_DELAY ) /* for debug */ //#define CON_RECV_TIMEOUT_MS pdMS_TO_TICKS( !IsRenesasSimDebugMode() ? 60 * 1000UL : 0 ) /* for debug */ #else /* Hardware */ #define LED1_ERROR_BLINK_FREQUENCY_MS pdMS_TO_TICKS( 200 ) #define CON_RECV_TIMEOUT_MS pdMS_TO_TICKS( 60 * 1000UL ) #endif /* End user code. Do not edit comment generated here */ void task_CONIO(void * pvParameters) { /* Start user code for function. Do not edit comment generated here */ volatile uint8_t recv_buff[CON_RECV_DEMO_SIZE + 1]; volatile uint8_t err_type; BaseType_t ret; INTERNAL_NOT_USED( pvParameters ); U_UART3_ASYNC_Start( semaphore_handle_CON_TX_READY, semaphore_handle_CON_RX_READY ); for (;;) { memset( (char *)recv_buff, 0, CON_RECV_DEMO_SIZE + 1 ); U_UART3_DTC_Receive( recv_buff, CON_RECV_DEMO_SIZE, &err_type ); ret = xSemaphoreTake( semaphore_handle_CON_RX_READY, CON_RECV_TIMEOUT_MS ); nop(); /* for breakpoint, check timing chart on Simulator GUI */ if (pdPASS == ret && 0 == err_type) { taskENTER_CRITICAL(); vPrintString( "Received Message: " ); vPrintString( (char *)recv_buff ); vPrintString( "\n" ); taskEXIT_CRITICAL(); } else { if (pdFAIL == ret) { U_UART3_DTC_Receive_Abort(); /* or Retry U_UART3_DTC_Receive() */ vPrintString( "Timeout Error\n" ); } else { if (SCI_EVT_FRAMING_ERR & err_type) { vPrintString( "Framing Error\n" ); } if (SCI_EVT_PARITY_ERR & err_type) { vPrintString( "Parity Error\n" ); } if (SCI_EVT_OVFL_ERR & err_type) { vPrintString( "Overrun Error\n" ); } } g_task_CONIO_error = true; LED1 = LED_ON; while (true == g_task_CONIO_error) { vTaskDelay( LED1_ERROR_BLINK_FREQUENCY_MS ); LED1 = ~LED1; } LED1 = LED_OFF; continue; } U_UART3_DTC_Send( (uint8_t *)recv_buff, CON_RECV_DEMO_SIZE ); ret = xSemaphoreTake( semaphore_handle_CON_TX_READY, portMAX_DELAY ); nop(); /* for breakpoint, check timing chart on Simulator GUI */ } /* End user code. Do not edit comment generated here */ }