static portTASK_FUNCTION(ShellTask, pvParameters) { #if PL_HAS_USB_CDC static unsigned char cdc_buf[48]; #endif #if PL_HAS_BLUETOOTH static unsigned char bluetooth_buf[48]; #endif static unsigned char localConsole_buf[48]; #if CLS1_DEFAULT_SERIAL CLS1_ConstStdIOTypePtr ioLocal = CLS1_GetStdio(); #endif (void)pvParameters; /* not used */ #if PL_HAS_USB_CDC cdc_buf[0] = '\0'; #endif #if PL_HAS_BLUETOOTH bluetooth_buf[0] = '\0'; #endif localConsole_buf[0] = '\0'; #if CLS1_DEFAULT_SERIAL (void)CLS1_ParseWithCommandTable((unsigned char*)CLS1_CMD_HELP, ioLocal, CmdParserTable); #endif for(;;) { #if CLS1_DEFAULT_SERIAL (void)CLS1_ReadAndParseWithCommandTable(localConsole_buf, sizeof(localConsole_buf), ioLocal, CmdParserTable); #endif #if PL_HAS_USB_CDC (void)CLS1_ReadAndParseWithCommandTable(cdc_buf, sizeof(cdc_buf), &CDC_stdio, CmdParserTable); #endif #if PL_HAS_BLUETOOTH (void)CLS1_ReadAndParseWithCommandTable(bluetooth_buf, sizeof(bluetooth_buf), &BT_stdio, CmdParserTable); #endif #if PL_HAS_SHELL_QUEUE /*! \todo Handle shell queue */ unsigned char ch; while((ch=SQUEUE_ReceiveChar()) && ch!='\0') { #if CLS1_DEFAULT_SERIAL ioLocal->stdOut(ch); #endif #if PL_HAS_USB_CDC CDC_stdio.stdOut(ch); #endif #if PL_HAS_BLUETOOTH BT_stdio.stdOut(ch); /* copy on Bluetooth */ #endif } #endif FRTOS1_vTaskDelay(50/portTICK_RATE_MS); } /* for */ }
/*! * \brief Called from the application task. This function checks the Radio RX queue and checks if it contains stdio messages. * If so, it dispatches it to the corresponding shell queues. */ void RSTDIO_Print(CLS1_ConstStdIOTypePtr io) { unsigned char ch; for(;;) { /* breaks */ ch = RSTDIO_ReceiveChar(RSTDIO_RxStdOutQ); if(ch=='\0') { break; /* get out of for loop */ } io->stdOut(ch); /* output character */ } for(;;) { /* breaks */ ch = RSTDIO_ReceiveChar(RSTDIO_RxStdErrQ); if(ch=='\0') { break; /* get out of for loop */ } io->stdErr(ch); /* output character */ } }
static void HandleQueues(CLS1_ConstStdIOTypePtr io) { #if PL_HAS_QUEUE unsigned char ch; for(;;) { /* breaks */ ch=QUEUE_ReceiveChar(QUEUE_StdOut); if(ch=='\0') { break; /* get out of for loop */ } io->stdOut(ch); /* output character */ } for(;;) { /* breaks */ ch=QUEUE_ReceiveChar(QUEUE_StdErr); if(ch=='\0') { break; /* get out of for loop */ } io->stdErr(ch); /* output character */ } #endif }
static portTASK_FUNCTION(ShellTask, pvParameters) { #if PL_HAS_RSTDIO static unsigned char radio_cmd_buf[48]; CLS1_ConstStdIOType *ioRemote = RSTDIO_GetStdioRx(); #endif #if CLS1_DEFAULT_SERIAL CLS1_ConstStdIOTypePtr ioLocal = CLS1_GetStdio(); #endif (void)pvParameters; /* not used */ #if CLS1_DEFAULT_SERIAL (void)CLS1_ParseWithCommandTable((unsigned char*)CLS1_CMD_HELP, ioLocal, CmdParserTable); #endif for(;;) { #if CLS1_DEFAULT_SERIAL (void)CLS1_ReadAndParseWithCommandTable(localConsole_buf, sizeof(localConsole_buf), ioLocal, CmdParserTable); #endif #if PL_HAS_RSTDIO RSTDIO_Print(ioLocal); /* dispatch incoming messages */ (void)CLS1_ReadAndParseWithCommandTable(radio_cmd_buf, sizeof(radio_cmd_buf), ioRemote, CmdParserTable); #endif #if PL_HAS_BLUETOOTH (void)CLS1_ReadAndParseWithCommandTable(bluetooth_buf, sizeof(bluetooth_buf), &BT_stdio, CmdParserTable); #endif #if PL_HAS_SHELL_QUEUE { unsigned char ch; while((ch=SQUEUE_ReceiveChar()) && ch!='\0') { #if CLS1_DEFAULT_SERIAL ioLocal->stdOut(ch); #endif #if PL_HAS_BLUETOOTH BT_stdio.stdOut(ch); /* copy on Bluetooth */ #endif } } #endif FRTOS1_vTaskDelay(50/portTICK_RATE_MS); } /* for */ }
static void ShellTask(void *pvParameters) { static unsigned char localConsole_buf[48]; #if PL_CONFIG_HAS_USB_CDC static unsigned char cdc_buf[48]; #endif #if PL_CONFIG_HAS_BLUETOOTH static unsigned char bluetooth_buf[48]; #endif #if PL_CONFIG_HAS_SEGGER_RTT static unsigned char rtt_buf[48]; #endif #if CLS1_DEFAULT_SERIAL CLS1_ConstStdIOTypePtr ioLocal = CLS1_GetStdio(); #endif #if PL_CONFIG_HAS_RADIO && RNET_CONFIG_REMOTE_STDIO static unsigned char radio_cmd_buf[48]; CLS1_ConstStdIOType *ioRemote = RSTDIO_GetStdioRx(); #endif (void)pvParameters; /* not used */ #if PL_CONFIG_HAS_USB_CDC cdc_buf[0] = '\0'; #endif #if PL_CONFIG_HAS_BLUETOOTH bluetooth_buf[0] = '\0'; #endif #if PL_CONFIG_HAS_SEGGER_RTT rtt_buf[0] = '\0'; #endif localConsole_buf[0] = '\0'; #if CLS1_DEFAULT_SERIAL (void)CLS1_ParseWithCommandTable((unsigned char*)CLS1_CMD_HELP, ioLocal, CmdParserTable); #endif #if PL_CONFIG_HAS_RADIO && RNET_CONFIG_REMOTE_STDIO radio_cmd_buf[0] = '\0'; #endif for(;;) { #if CLS1_DEFAULT_SERIAL (void)CLS1_ReadAndParseWithCommandTable(localConsole_buf, sizeof(localConsole_buf), ioLocal, CmdParserTable); #endif #if PL_CONFIG_HAS_USB_CDC #if SHELL_COPY_CDC_TO_UART (void)CLS1_ReadAndParseWithCommandTable(cdc_buf, sizeof(cdc_buf), &CopyCDCtoUARTStdio, CmdParserTable); #else (void)CLS1_ReadAndParseWithCommandTable(cdc_buf, sizeof(cdc_buf), &CDC_stdio, CmdParserTable); #endif #endif #if PL_CONFIG_HAS_BLUETOOTH (void)CLS1_ReadAndParseWithCommandTable(bluetooth_buf, sizeof(bluetooth_buf), &BT_stdio, CmdParserTable); #endif #if PL_CONFIG_HAS_SEGGER_RTT (void)CLS1_ReadAndParseWithCommandTable(rtt_buf, sizeof(rtt_buf), &RTT_Stdio, CmdParserTable); #endif #if PL_CONFIG_HAS_RADIO && RNET_CONFIG_REMOTE_STDIO RSTDIO_Print(ioLocal); /* dispatch incoming messages */ (void)CLS1_ReadAndParseWithCommandTable(radio_cmd_buf, sizeof(radio_cmd_buf), ioRemote, CmdParserTable); #endif #if PL_CONFIG_HAS_SHELL_QUEUE #if PL_CONFIG_HAS_SQUEUE_SINGLE_CHAR { /*! \todo Handle shell queue */ unsigned char ch; while((ch=SQUEUE_ReceiveChar()) && ch!='\0') { #if CLS1_DEFAULT_SERIAL ioLocal->stdOut(ch); #endif #if PL_CONFIG_HAS_BLUETOOTH BT_stdio.stdOut(ch); /* copy on Bluetooth */ #endif #if PL_CONFIG_HAS_USB_CDC CDC_stdio.stdOut(ch); /* copy on USB CDC */ #endif } } #else /* PL_CONFIG_HAS_SQUEUE_SINGLE_CHAR */ { const unsigned char *msg; msg = SQUEUE_ReceiveMessage(); if (msg!=NULL) { CLS1_SendStr(msg, CLS1_GetStdio()->stdOut); FRTOS1_vPortFree((void*)msg); } } #endif /* PL_CONFIG_HAS_SQUEUE_SINGLE_CHAR */ #endif /* PL_CONFIG_HAS_SHELL_QUEUE */ FRTOS1_vTaskDelay(10/portTICK_RATE_MS); } /* for */ }