/** * @file main_common.c * @author Alvin Young (impressionyang@outlook.com) * @brief * @version 0.1 * @date 2024-12-04 * * _ _ * (_)_ _ ___ _______ ___ ___ (_)__ ___ __ _____ ____ ___ _ * / / ' \/ _ \/ __/ -_|_-<(_- * Date Version Author Description * 2024-12-04 v1.0 Alvin Young 首次创建 * * */ /* Define to prevent recursive inclusion -------------------------------------*/ /* Includes ------------------------------------------------------------------*/ #include "main_common.h" #include #include #include "shell_port.h" #include "main_app.h" #include "imp_msg_queue.h" #include "esp_log.h" #include "shell_port.h" #include "usb_setup.h" /* define --------------------------------------------------------------------*/ /* typedef -------------------------------------------------------------------*/ /* variables -----------------------------------------------------------------*/ /// @brief 所有Task的命名集合,名字长度不能超过configMAX_TASK_NAME_LEN = 16 char* imp_main_task_table[] = { "idle", "main_task", "ext_trans_task", "display", "audio", "switch_key", }; /* Private function(only *.c) -----------------------------------------------*/ char cdc_print_buf[1024] = { 0 }; uint8_t _imp_set_out_port(int argc, char** argv) { if (argc < 2) { cdc_printf("too few arg\r\n"); return 1; } uint8_t type = atoi(argv[1]); cdc_printf("set outport type %d\r\n", type); imp_comp_out_port_ioctl(EM_IMP_OUT_PORT_CMD_SET_OUT_TYPE, (uint8_t*)&type, 1); return 0; } SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN), oport, _imp_set_out_port, set out port); /* Exported functions --------------------------------------------------------*/ uint8_t imp_main_common_init() { cdc_usb_init(); imp_comp_out_port_init(); ESP_LOGI("app_main", "imp_comp_out_port_init ok"); imp_comp_out_port_ioctl(EM_IMP_OUT_PORT_CMD_SET_OUT_READ_FUNC, (uint8_t*)cdc_usb_read_bytes, 0); imp_comp_out_port_ioctl(EM_IMP_OUT_PORT_CMD_SET_OUT_WRIT_FUNC, (uint8_t*)cdc_usb_writ_bytes, 0); ESP_LOGI("app_main", "out port ok"); cdc_printf("out port ok\r\n"); vTaskDelay(10); userShellInit(); vTaskDelay(10); cdc_printf("imp_main_common_init ok\r\n"); return 0; } int cdc_printf(const char* fmt, ...) { va_list args; int n = 0; int idx = 0; va_start(args, fmt); n = vsnprintf(cdc_print_buf, sizeof(cdc_print_buf), fmt, args); if (n > 64) { while (idx < n) { if (n - idx > 64) { imp_comp_out_port_write(EM_IMP_OUT_PORT_TYPE_STRING, (uint8_t*)cdc_print_buf + idx, 64); idx += 64; } else { imp_comp_out_port_write(EM_IMP_OUT_PORT_TYPE_STRING, (uint8_t*)cdc_print_buf + idx, n - idx); idx += 64; } } } else if (n > 0) { imp_comp_out_port_write(EM_IMP_OUT_PORT_TYPE_STRING, (uint8_t*)cdc_print_buf, n); } va_end(args); return n; } /* * EOF */