Add Shell Uart and queue for shell cmds (not tested)

main
Simon Frei 4 years ago
parent d9f05dcaf5
commit 6f132fbe40
  1. 91
      ADIS_tinyK22_SplitFlap/.cproject
  2. 6
      ADIS_tinyK22_SplitFlap/ADIS_tinyK22_SplitFlap.mex
  3. 7
      ADIS_tinyK22_SplitFlap/board/clock_config.c
  4. 2283
      ADIS_tinyK22_SplitFlap/drivers/fsl_lpuart.c
  5. 1064
      ADIS_tinyK22_SplitFlap/drivers/fsl_lpuart.h
  6. 7
      ADIS_tinyK22_SplitFlap/source/IncludeMcuLibConfig.h
  7. 6
      ADIS_tinyK22_SplitFlap/source/platform.c
  8. 53
      ADIS_tinyK22_SplitFlap/source/shell.c
  9. 19
      ADIS_tinyK22_SplitFlap/source/shell.h

@ -105,6 +105,7 @@
<listOptionValue builtIn="false" value="__USE_CMSIS"/>
<listOptionValue builtIn="false" value="DEBUG"/>
<listOptionValue builtIn="false" value="__NEWLIB__"/>
<listOptionValue builtIn="false" value="SDK_OS_FREE_RTOS"/>
</option>
<option id="com.crt.advproject.gcc.fpu.1162476593" name="Floating point" superClass="com.crt.advproject.gcc.fpu" useByScannerDiscovery="true" value="com.crt.advproject.gcc.fpu.fpv4.hard" valueType="enumerated"/>
<option id="com.crt.advproject.gcc.thumb.512416703" name="Thumb mode" superClass="com.crt.advproject.gcc.thumb" useByScannerDiscovery="false" value="true" valueType="boolean"/>
@ -123,15 +124,9 @@
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/component/uart}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/component/lists}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/board}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/board}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/freertos/freertos_kernel/include}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/freertos/freertos_kernel/portable/GCC/ARM_CM4F}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/source}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/drivers}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/device}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/CMSIS}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/component/serial_manager}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/utilities}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/component/uart}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/component/lists}&quot;"/>
<listOptionValue builtIn="false" value="${MCULIB}/"/>
<listOptionValue builtIn="false" value="${MCULIB}/config"/>
<listOptionValue builtIn="false" value="${MCULIB}/config/fonts"/>
@ -210,8 +205,33 @@
<option id="com.crt.advproject.gas.arch.59322756" name="Architecture" superClass="com.crt.advproject.gas.arch" value="com.crt.advproject.gas.target.cm4" valueType="enumerated"/>
<option id="gnu.both.asm.option.flags.crt.538274977" name="Assembler flags" superClass="gnu.both.asm.option.flags.crt" value="-c -x assembler-with-cpp -D__NEWLIB__" valueType="string"/>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.both.asm.option.include.paths.1038992328" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/drivers}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/device}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/CMSIS}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/component/serial_manager}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/utilities}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/component/uart}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/component/lists}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/board}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/freertos/freertos_kernel/include}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/freertos/freertos_kernel/portable/GCC/ARM_CM4F}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/source}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${MCULIB}/&quot;"/>
<listOptionValue builtIn="false" value="&quot;${MCULIB}/config&quot;"/>
<listOptionValue builtIn="false" value="&quot;${MCULIB}/config/fonts&quot;"/>
<listOptionValue builtIn="false" value="&quot;${MCULIB}/fonts&quot;"/>
<listOptionValue builtIn="false" value="&quot;${MCULIB}/src&quot;"/>
<listOptionValue builtIn="false" value="&quot;${MCULIB}/FreeRTOS/Source/include&quot;"/>
<listOptionValue builtIn="false" value="&quot;${MCULIB}/FreeRTOS/Source/portable/GCC/ARM_CM4F&quot;"/>
<listOptionValue builtIn="false" value="&quot;${MCULIB}/SEGGER_RTT&quot;"/>
<listOptionValue builtIn="false" value="&quot;${MCULIB}/SEGGER_Sysview&quot;"/>
<listOptionValue builtIn="false" value="&quot;${MCULIB}/TraceRecorder&quot;"/>
<listOptionValue builtIn="false" value="&quot;${MCULIB}/TraceRecorder/config&quot;"/>
<listOptionValue builtIn="false" value="&quot;${MCULIB}/TraceRecorder/include&quot;"/>
<listOptionValue builtIn="false" value="&quot;${MCULIB}/TraceRecorder/streamports/Jlink_RTT/include&quot;"/>
<listOptionValue builtIn="false" value="&quot;${MCULIB}/HD44780&quot;"/>
<listOptionValue builtIn="false" value="&quot;${MCULIB}/FatFS&quot;"/>
<listOptionValue builtIn="false" value="&quot;${MCULIB}/FatFS/source&quot;"/>
</option>
<option id="gnu.both.asm.option.warnings.nowarn.2107355947" name="Suppress warnings (-W)" superClass="gnu.both.asm.option.warnings.nowarn"/>
<option id="gnu.both.asm.option.version.1901879634" name="Announce version (-v)" superClass="gnu.both.asm.option.version"/>
@ -463,6 +483,7 @@
<listOptionValue builtIn="false" value="__USE_CMSIS"/>
<listOptionValue builtIn="false" value="NDEBUG"/>
<listOptionValue builtIn="false" value="__NEWLIB__"/>
<listOptionValue builtIn="false" value="SDK_OS_FREE_RTOS"/>
</option>
<option id="gnu.c.compiler.option.preprocessor.undef.symbol.1092760296" name="Undefined symbols (-U)" superClass="gnu.c.compiler.option.preprocessor.undef.symbol" useByScannerDiscovery="false"/>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.c.compiler.option.include.paths.2049780101" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
@ -474,15 +495,25 @@
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/component/uart}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/component/lists}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/board}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/board}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/freertos/freertos_kernel/include}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/freertos/freertos_kernel/portable/GCC/ARM_CM4F}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/source}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/drivers}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/device}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/CMSIS}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/component/serial_manager}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/utilities}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/component/uart}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/component/lists}&quot;"/>
<listOptionValue builtIn="false" value="&quot;../Debug/${MCULIB}/&quot;"/>
<listOptionValue builtIn="false" value="&quot;../Debug/${MCULIB}/config&quot;"/>
<listOptionValue builtIn="false" value="&quot;../Debug/${MCULIB}/config/fonts&quot;"/>
<listOptionValue builtIn="false" value="&quot;../Debug/${MCULIB}/fonts&quot;"/>
<listOptionValue builtIn="false" value="&quot;../Debug/${MCULIB}/src&quot;"/>
<listOptionValue builtIn="false" value="&quot;../Debug/${MCULIB}/FreeRTOS/Source/include&quot;"/>
<listOptionValue builtIn="false" value="&quot;../Debug/${MCULIB}/FreeRTOS/Source/portable/GCC/ARM_CM4F&quot;"/>
<listOptionValue builtIn="false" value="&quot;../Debug/${MCULIB}/SEGGER_RTT&quot;"/>
<listOptionValue builtIn="false" value="&quot;../Debug/${MCULIB}/SEGGER_Sysview&quot;"/>
<listOptionValue builtIn="false" value="&quot;../Debug/${MCULIB}/TraceRecorder&quot;"/>
<listOptionValue builtIn="false" value="&quot;../Debug/${MCULIB}/TraceRecorder/config&quot;"/>
<listOptionValue builtIn="false" value="&quot;../Debug/${MCULIB}/TraceRecorder/include&quot;"/>
<listOptionValue builtIn="false" value="&quot;../Debug/${MCULIB}/TraceRecorder/streamports/Jlink_RTT/include&quot;"/>
<listOptionValue builtIn="false" value="&quot;../Debug/${MCULIB}/HD44780&quot;"/>
<listOptionValue builtIn="false" value="&quot;../Debug/${MCULIB}/FatFS&quot;"/>
<listOptionValue builtIn="false" value="&quot;../Debug/${MCULIB}/FatFS/source&quot;"/>
</option>
<option id="gnu.c.compiler.option.include.files.1847403210" name="Include files (-include)" superClass="gnu.c.compiler.option.include.files" useByScannerDiscovery="false"/>
<option id="gnu.c.compiler.option.optimization.flags.115821318" name="Other optimization flags" superClass="gnu.c.compiler.option.optimization.flags" useByScannerDiscovery="false" value="-fno-common" valueType="string"/>
@ -541,8 +572,33 @@
<option id="com.crt.advproject.gas.arch.1053219152" name="Architecture" superClass="com.crt.advproject.gas.arch" value="com.crt.advproject.gas.target.cm4" valueType="enumerated"/>
<option id="gnu.both.asm.option.flags.crt.289110214" name="Assembler flags" superClass="gnu.both.asm.option.flags.crt" value="-c -x assembler-with-cpp -D__NEWLIB__" valueType="string"/>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.both.asm.option.include.paths.1130502917" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/drivers}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/device}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/CMSIS}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/component/serial_manager}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/utilities}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/component/uart}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/component/lists}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/board}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/freertos/freertos_kernel/include}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/freertos/freertos_kernel/portable/GCC/ARM_CM4F}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/source}&quot;"/>
<listOptionValue builtIn="false" value="&quot;../Debug/${MCULIB}/&quot;"/>
<listOptionValue builtIn="false" value="&quot;../Debug/${MCULIB}/config&quot;"/>
<listOptionValue builtIn="false" value="&quot;../Debug/${MCULIB}/config/fonts&quot;"/>
<listOptionValue builtIn="false" value="&quot;../Debug/${MCULIB}/fonts&quot;"/>
<listOptionValue builtIn="false" value="&quot;../Debug/${MCULIB}/src&quot;"/>
<listOptionValue builtIn="false" value="&quot;../Debug/${MCULIB}/FreeRTOS/Source/include&quot;"/>
<listOptionValue builtIn="false" value="&quot;../Debug/${MCULIB}/FreeRTOS/Source/portable/GCC/ARM_CM4F&quot;"/>
<listOptionValue builtIn="false" value="&quot;../Debug/${MCULIB}/SEGGER_RTT&quot;"/>
<listOptionValue builtIn="false" value="&quot;../Debug/${MCULIB}/SEGGER_Sysview&quot;"/>
<listOptionValue builtIn="false" value="&quot;../Debug/${MCULIB}/TraceRecorder&quot;"/>
<listOptionValue builtIn="false" value="&quot;../Debug/${MCULIB}/TraceRecorder/config&quot;"/>
<listOptionValue builtIn="false" value="&quot;../Debug/${MCULIB}/TraceRecorder/include&quot;"/>
<listOptionValue builtIn="false" value="&quot;../Debug/${MCULIB}/TraceRecorder/streamports/Jlink_RTT/include&quot;"/>
<listOptionValue builtIn="false" value="&quot;../Debug/${MCULIB}/HD44780&quot;"/>
<listOptionValue builtIn="false" value="&quot;../Debug/${MCULIB}/FatFS&quot;"/>
<listOptionValue builtIn="false" value="&quot;../Debug/${MCULIB}/FatFS/source&quot;"/>
</option>
<option id="gnu.both.asm.option.warnings.nowarn.449849235" name="Suppress warnings (-W)" superClass="gnu.both.asm.option.warnings.nowarn"/>
<option id="gnu.both.asm.option.version.1751918560" name="Announce version (-v)" superClass="gnu.both.asm.option.version"/>
@ -677,6 +733,7 @@
</folderInfo>
<sourceEntries>
<entry flags="LOCAL|VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="CMSIS"/>
<entry excluding="FreeRTOS/Source/portable/GCC/RISC-V|FreeRTOS/Source/portable/GCC/ARM_CM33|TraceRecorder|SEGGER_Sysview|minIni|LittlevGL|littleFS|HD44780|fonts|FatFS" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="McuLib"/>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="board"/>
<entry flags="LOCAL|VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="component"/>
<entry flags="LOCAL|VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="device"/>
@ -712,7 +769,7 @@
<storageModule moduleId="com.nxp.mcuxpresso.core.datamodels">
<sdkName>SDK_2.x_MK22FN512xxx12</sdkName>
<sdkVersion>2.12.0</sdkVersion>
<sdkComponents>middleware.baremetal.MK22F51212;platform.drivers.smc.MK22F51212;platform.drivers.port.MK22F51212;platform.drivers.dspi.MK22F51212;platform.drivers.adc16.MK22F51212;platform.drivers.uart.MK22F51212;platform.drivers.clock.MK22F51212;platform.drivers.rtc.MK22F51212;platform.drivers.common.MK22F51212;platform.drivers.i2c.MK22F51212;platform.drivers.gpio.MK22F51212;device.MK22F51212_system.MK22F51212;device.MK22F51212_CMSIS.MK22F51212;CMSIS_Include_core_cm.MK22F51212;platform.utilities.assert.MK22F51212;component.serial_manager_uart.MK22F51212;utility.debug_console.MK22F51212;component.serial_manager.MK22F51212;component.uart_adapter.MK22F51212;component.lists.MK22F51212;project_template.MK22F51212.MK22F51212;device.MK22F51212_startup.MK22F51212;platform.drivers.sim.MK22F51212;</sdkComponents>
<sdkComponents>platform.drivers.smc.MK22F51212;platform.drivers.port.MK22F51212;platform.drivers.dspi.MK22F51212;platform.drivers.adc16.MK22F51212;platform.drivers.uart.MK22F51212;platform.drivers.clock.MK22F51212;platform.drivers.rtc.MK22F51212;platform.drivers.common.MK22F51212;platform.drivers.i2c.MK22F51212;platform.drivers.gpio.MK22F51212;device.MK22F51212_system.MK22F51212;device.MK22F51212_CMSIS.MK22F51212;CMSIS_Include_core_cm.MK22F51212;platform.utilities.assert.MK22F51212;component.serial_manager_uart.MK22F51212;utility.debug_console.MK22F51212;component.serial_manager.MK22F51212;component.uart_adapter.MK22F51212;component.lists.MK22F51212;project_template.MK22F51212.MK22F51212;device.MK22F51212_startup.MK22F51212;platform.drivers.sim.MK22F51212;middleware.freertos-kernel.MK22F51212;platform.drivers.lpuart.MK22F51212;</sdkComponents>
<package>MK22FN512VLH12</package>
<core>cm4</core>
<coreId>core0_MK22FN512xxx12</coreId>

@ -75,11 +75,15 @@
<clock_output id="Flash_clock.outFreq" value="10.48576 MHz" locked="false" accuracy=""/>
<clock_output id="FlexBus_clock.outFreq" value="10.48576 MHz" locked="false" accuracy=""/>
<clock_output id="LPO_clock.outFreq" value="1 kHz" locked="false" accuracy=""/>
<clock_output id="LPUARTCLK.outFreq" value="20.97152 MHz" locked="false" accuracy=""/>
<clock_output id="MCGFFCLK.outFreq" value="32.768 kHz" locked="false" accuracy=""/>
<clock_output id="PLLFLLCLK.outFreq" value="20.97152 MHz" locked="false" accuracy=""/>
<clock_output id="System_clock.outFreq" value="20.97152 MHz" locked="false" accuracy=""/>
</clock_outputs>
<clock_settings/>
<clock_settings>
<setting id="LPUARTClkConfig" value="yes" locked="false"/>
<setting id="SIM.LPUARTSRCSEL.sel" value="SIM.PLLFLLSEL" locked="false"/>
</clock_settings>
<called_from_default_init>true</called_from_default_init>
</clock_configuration>
</clock_configurations>

@ -50,6 +50,7 @@ processor_version: 12.0.0
#define MCG_PLL_DISABLE 0U /*!< MCGPLLCLK disabled */
#define OSC_CAP0P 0U /*!< Oscillator 0pF capacitor load */
#define OSC_ER_CLK_DISABLE 0U /*!< Disable external reference clock */
#define SIM_LPUART_CLK_SEL_PLLFLLSEL_CLK 1U /*!< LPUART clock select: PLLFLLSEL output clock */
#define SIM_OSC32KSEL_OSC32KCLK_CLK 0U /*!< OSC32KSEL select: OSC32KCLK clock */
#define SIM_PLLFLLSEL_MCGFLLCLK_CLK 0U /*!< PLLFLL select: MCGFLLCLK clock */
@ -97,9 +98,13 @@ outputs:
- {id: Flash_clock.outFreq, value: 10.48576 MHz}
- {id: FlexBus_clock.outFreq, value: 10.48576 MHz}
- {id: LPO_clock.outFreq, value: 1 kHz}
- {id: LPUARTCLK.outFreq, value: 20.97152 MHz}
- {id: MCGFFCLK.outFreq, value: 32.768 kHz}
- {id: PLLFLLCLK.outFreq, value: 20.97152 MHz}
- {id: System_clock.outFreq, value: 20.97152 MHz}
settings:
- {id: LPUARTClkConfig, value: 'yes'}
- {id: SIM.LPUARTSRCSEL.sel, value: SIM.PLLFLLSEL}
* BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS **********/
/* clang-format on */
@ -165,5 +170,7 @@ void BOARD_BootClockRUN(void)
CLOCK_SetSimConfig(&simConfig_BOARD_BootClockRUN);
/* Set SystemCoreClock variable. */
SystemCoreClock = BOARD_BOOTCLOCKRUN_CORE_CLOCK;
/* Set LPUART clock source. */
CLOCK_SetLpuartClock(SIM_LPUART_CLK_SEL_PLLFLLSEL_CLK);
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -95,6 +95,13 @@ add_compile_options(-include "../config/IncludeMcuLibConfig.h")
#define McuCriticalSection_CONFIG_USE_RTOS_CRITICAL_SECTION (1) /* no native Extensa implementation yet */
#endif
#define McuULN2003_CONFIG_USE_ACCELERATION (1)
/* Mcu log */
#define McuLog_CONFIG_IS_ENABLED (1)
/* Mcu Shell Uart*/
#define McuShell_CONFIG_PROJECT_NAME_STRING "SPLITFLAP"
#define McuLib_CONFIG_CPU_VARIANT McuLib_CONFIG_CPU_VARIANT_NXP_K22FN
#define McuShellUart_CONFIG_UART McuShellUart_CONFIG_UART_K22FN512_LPUART0_C3_C4
#define McuShellUart_CONFIG_UART_GET_CLOCK_FREQ_SELECT kCLOCK_PllFllSelClk
/* ------------------- RTOS ---------------------------*/
#define McuLib_CONFIG_SDK_USE_FREERTOS (1)
/* #define configUSE_SEGGER_SYSTEM_VIEWER_HOOKS (1) */

@ -16,6 +16,8 @@
#include "McuRTT.h"
#include "McuShell.h"
#include "shell.h"
#include "McuShellUart.h"
#include "McuLog.h"
void PL_Init(void){
@ -32,6 +34,8 @@ void PL_Init(void){
McuULN2003_Init();
McuRTT_Init();
McuShell_Init();
McuShellUart_Init();
McuLog_Init();
SHELL_Init();
SF_InitConfig();
}
@ -40,6 +44,8 @@ void PL_Init(void){
void PL_Deinit(void){
SF_DeInitConfig();
SHELL_Deinit();
McuLog_Deinit();
McuShellUart_Deinit();
McuShell_Deinit();
McuRTT_Deinit();
McuULN2003_Deinit();

@ -7,14 +7,24 @@
#include "platform.h"
#include "Shell.h"
#include "McuShell.h"
#include "McuRTOS.h"
#include "McuRTT.h"
#include "McuArmTools.h"
#include "McuShellUart.h"
#include "McuLog.h"
#include "McuUtility.h"
#define SHELL_CMD_ELEM_SIZE (sizeof(Shell_cmd_s))
static QueueHandle_t shellCmdQueue;
static uint8_t splitFlapId = 0;
static void vQueueShellCmd(Shell_cmd_s shellCmd){
if(xQueueSendToBack(shellCmdQueue, &shellCmd, pdMS_TO_TICKS(100)) != pdPASS){
McuLog_warn("Failed adding shell cmd to queue, maybe full?");
}
}
static uint8_t ParseCommand(const uint8_t *cmd, bool *handled, McuShell_ConstStdIOType *io){
uint8_t size = sizeof(SHELL_CMD_IDENTIFY_SF)-1;
if (McuUtility_strcmp((char*)cmd, McuShell_CMD_HELP)==0) {
@ -25,9 +35,8 @@ static uint8_t ParseCommand(const uint8_t *cmd, bool *handled, McuShell_ConstStd
McuShell_SendHelpStr((unsigned char*)" help", (const unsigned char*)"Print help this message\r\n", io->stdOut);
McuShell_SendHelpStr((unsigned char*)SHELL_CMD_IDENTIFY_SF, (const unsigned char*)"<SplitFlapId> (uint8_t)\r\n", io->stdOut);
McuShell_SendHelpStr((unsigned char*)" ", (const unsigned char*)"the number printed on the splitflap\r\n", io->stdOut);
McuShell_SendHelpStr((unsigned char*)" ", (const unsigned char*)"Splitflap Number:16\n", io->stdOut);
McuShell_SendHelpStr((unsigned char*)" ", (const unsigned char*)"Splitflap Number:16\r\n", io->stdOut);
McuShell_SendHelpStr((unsigned char*)SHELL_CMD_POWEROFF_RPI, (const unsigned char*)"power of the raspberry pi\r\n", io->stdOut);
*handled = TRUE;
return ERR_OK;
} else if(McuUtility_strncmp((char*)cmd, SHELL_CMD_IDENTIFY_SF, size) == 0){
@ -37,7 +46,13 @@ static uint8_t ParseCommand(const uint8_t *cmd, bool *handled, McuShell_ConstStd
// Do not save id
return ERR_FAILED;
}
}
Shell_cmd_s shellCmd = {.shellCmd = Shell_Identify_SF, .value = (uint32_t)splitFlapId};
vQueueShellCmd(shellCmd);
} else if(McuUtility_strcmp((char*)cmd,SHELL_CMD_POWEROFF_RPI) == 0){
// shutown rpi
Shell_cmd_s shellCmd = {.shellCmd = Shell_Powerof_rpi, .value = 0};
vQueueShellCmd(shellCmd);
}
return ERR_OK;
}
@ -58,11 +73,15 @@ typedef struct {
static const SHELL_IODesc ios[] =
{
// {&McuShellUart_stdio, McuShellUart_DefaultShellBuffer, sizeof(McuShellUart_DefaultShellBuffer)},
{&McuShellUart_stdio, McuShellUart_DefaultShellBuffer, sizeof(McuShellUart_DefaultShellBuffer)},
{&McuRTT_stdio, McuRTT_DefaultShellBuffer, sizeof(McuRTT_DefaultShellBuffer)},
// {&USB_CdcStdio, USB_CdcDefaultShellBuffer, sizeof(USB_CdcDefaultShellBuffer)},
};
QueueHandle_t SHELL_GetShellCmdQueueHandle() {
return shellCmdQueue;
}
void SHELL_SendChar(unsigned char ch) {
for(int i=0;i<sizeof(ios)/sizeof(ios[0]);i++) {
McuShell_SendCh(ch, ios[i].stdio->stdOut);
@ -111,8 +130,26 @@ void SHELL_Init(void) {
McuLog_fatal("failed creating Shell task");
for(;;){} /* error! probably out of memory */
}
McuShell_SetStdio(McuRTT_GetStdio()); /* use RTT as the default */
vTaskStartScheduler();
// McuShell_SetStdio(McuRTT_GetStdio()); /* use RTT as the default */
if(McuShell_SetStdio(&McuShellUart_stdio) != ERR_OK){
// couldnt set uart as stdio, try set RTT
McuLog_warn("Failed to choose UART for shell, try RTT");
if(McuShell_SetStdio(McuRTT_GetStdio())!= ERR_OK){ /* use RTT as the default */
//couldnt set rtt!!
McuLog_fatal("failed to set rtt as default for shell");
for(;;){}
}else{
McuLog_info("RTT set for shell");
}
}else{
McuLog_info("UART set for shell");
}
shellCmdQueue = xQueueCreate(SHELL_CMD_QUEUE_LENGTH,SHELL_CMD_ELEM_SIZE);
if(shellCmdQueue == NULL){
McuLog_fatal("failed to create shell cmd queue!");
for(;;){}
}
vQueueAddToRegistry(shellCmdQueue, "Shell CMD Queue");
}
void SHELL_Deinit(void) {}

@ -8,13 +8,32 @@
#define SHELL_H_
#include "McuShell.h"
#include "McuRTOS.h"
#define SHELL_CMD_IDENTIFY_SF "Splitflap Number:"
#define SHELL_CMD_POWEROFF_RPI "Shutdown RPI"
#define SHELL_CMD_QUEUE_LENGTH 5
typedef enum ShellCmd {
Shell_Identify_SF,
Shell_Powerof_rpi
}Shell_cmd_t;
typedef struct ShellCmd_s {
Shell_cmd_t shellCmd;
uint32_t value;
}Shell_cmd_s;
#ifdef __cplusplus
extern "C" {
#endif
QueueHandle_t SHELL_GetShellCmdQueueHandle();
/*!
* \brief Send a string to all supported I/Os
* \param str String to send

Loading…
Cancel
Save