static cli_cmd_t s_cli_cmd[] = {
{.name = "switch", .func = switch_test, .help = "switch test"},
{.name = "kv", .func = tal_kv_cmd, .help = "kv test"},
{.name = "sys", .func = system_cmd, .help = "system cmd"},
{.name = "reset", .func = reset, .help = "reset iot"},
{.name = "stop", .func = stop, .help = "stop iot"},
{.name = "start", .func = start, .help = "start iot"},
{.name = "mem", .func = mem, .help = "mem size"},
{.name = "netmgr", .func = netmgr_cmd, .help = "netmgr cmd"},
};
/**
* @brief
*
*/
void tuya_app_cli_init(void)
{
tal_cli_cmd_register(s_cli_cmd, sizeof(s_cli_cmd) / sizeof(s_cli_cmd[0]));
}
driver_uart_dev
Demo:static void *send_test(void *times)
{
/*send thread*/
struct timeval start, end;
int32_t i = 0;
uint32_t j = 0;
uint32_t tmp = 0;
uint32_t exe_count = 0;
int32_t ret = 0;
float ts = 0;
printf("Start send thread\n");
sleep(1);
if (test_count == 0) {
tmp = 10;
} else
tmp = test_count;
for (j = 0; j < tmp; j++) {
if (test_count == 0)
j = 0;
sleep(1);
printf("This is uart send %d times\n", ++exe_count);
gettimeofday(&start, NULL);
for (i = 0; i < test_size * 1024; i = i + FRAME_LEN) {
ret = write(g_fd, &send_buffer[i], FRAME_LEN);
if (ret < FRAME_LEN) {
printf("write ttyS2 error\n");
return NULL;
}
}
#if 1
gettimeofday(&end, NULL);
// printf("start %ld sec, %ld usec, end %ld sec, %ld usec\n", start.tv_sec, start.tv_usec, end.tv_sec, end.tv_usec);
ts = ((end.tv_sec * 1000000 + end.tv_usec) - (start.tv_sec * 1000000 + start.tv_usec)) / 1000;
printf("send %dKbytes,time:%fms, BPS:%f\n", test_size, ts, test_size * 1000 / (ts / 1000));
#endif
}
close(g_fd);
return NULL;
}
实际应用中,我们需要设计一套简洁而高效的通信协议,定义命令格式、参数传递方式以及错误处理机制,确保两个系统之间的通信可靠性和实时性。