Files
luban-lite-t3e-pro/packages/third-party/rtt_auto_exe_cmd/cmd_auto_excute.c
2025-09-30 11:56:06 +08:00

89 lines
2.4 KiB
C

/*
* Copyright (c) 2023, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2023/1/29 supperthomas Add first version
*/
#include "rtthread.h"
#include "msh.h"
#ifdef LPKG_USING_RTT_AUTO_EXE_CMD
#else
#define RTT_AUTO_CMD_THREAD_STACK_SIZE 20480
#define RTT_AUTO_CMD_THREAD_PRIORITY 10
#define RTT_AUTO_INIT_TIME_MS 5000
#define RTT_CMD_1_STR "version"
#define RTT_CMD_1_DELAY 1000
#define RTT_CMD_2_STR "free"
#define RTT_CMD_2_DELAY 1000
#define RTT_CMD_LOOP_1_STR "ps"
#define RTT_CMD_LOOP_1_DELAY_TIME 2000
#define RTT_CMD_LOOP_2_STR "help"
#define RTT_CMD_LOOP_2_DELAY_TIME 2000
#define RTT_CMD_LOOP_TIME 3
#endif
typedef struct
{
char *cmd_string;
rt_uint32_t delay_time;
} rtt_cmd_array;
rtt_cmd_array rtt_cmd_init_array[]=
{
{RTT_CMD_1_STR,RTT_CMD_1_DELAY},
{RTT_CMD_2_STR,RTT_CMD_2_DELAY}
};
#ifdef RTT_CMD_LOOP_FLAG
rtt_cmd_array rtt_cmd_loop_array[]=
{
{RTT_CMD_LOOP_1_STR,RTT_CMD_LOOP_1_DELAY_TIME},
{RTT_CMD_LOOP_2_STR,RTT_CMD_LOOP_2_DELAY_TIME}
};
#endif
static void auto_cmd_thread_entry(void *parameter)
{
rt_thread_mdelay(RTT_AUTO_INIT_TIME_MS);
for(int i = 0;i < sizeof(rtt_cmd_init_array)/sizeof(rtt_cmd_array);i++)
{
if(rtt_cmd_init_array[i].cmd_string != RT_NULL)
{
msh_exec(rtt_cmd_init_array[i].cmd_string,rt_strlen(rtt_cmd_init_array[i].cmd_string));
rt_thread_mdelay(rtt_cmd_init_array[i].delay_time);
}
}
#ifdef RTT_CMD_LOOP_FLAG
rt_uint32_t loop_time = RTT_CMD_LOOP_TIME;
while(loop_time--)
{
for(int i = 0;i < sizeof(rtt_cmd_loop_array)/sizeof(rtt_cmd_array);i++)
{
if(rtt_cmd_loop_array[i].cmd_string != RT_NULL)
{
msh_exec(rtt_cmd_loop_array[i].cmd_string,rt_strlen(rtt_cmd_loop_array[i].cmd_string));
rt_thread_mdelay(rtt_cmd_loop_array[i].delay_time);
}
}
}
#endif
}
static int cmd_auto_exe(void)
{
rt_thread_t tid;
rt_kprintf("\r\n Hello RTT_AUTO_EXE thread CREATE!\r\n");
tid = rt_thread_create("RTT_AUTO_EXE", auto_cmd_thread_entry, RT_NULL,
RTT_AUTO_CMD_THREAD_STACK_SIZE, RTT_AUTO_CMD_THREAD_PRIORITY, 20);
RT_ASSERT(tid != RT_NULL);
rt_thread_startup(tid);
return 0;
}
INIT_APP_EXPORT(cmd_auto_exe);