main_awtk.c 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. /**
  2. * @file main
  3. *
  4. */
  5. /*********************
  6. * INCLUDES
  7. *********************/
  8. #include <stdlib.h>
  9. #include <unistd.h>
  10. #include "FreeRTOS.h"
  11. #include "task.h"
  12. #include "queue.h"
  13. #include "board.h"
  14. #include "chip.h"
  15. #include "animation.h"
  16. #include "sfud.h"
  17. #include "romfile.h"
  18. #include "ota_update.h"
  19. #include "sysinfo.h"
  20. #ifdef WIFI_SUPPORT
  21. #include "carlink_ey.h"
  22. #include "carlink_ec.h"
  23. #endif
  24. #include "test_demo.h"
  25. #ifdef USE_ULOG
  26. #ifdef ULOG_EASYFLASH_BACKEND_ENABLE
  27. #include "easyflash.h"
  28. #include "ulog_easyflash.h"
  29. #endif
  30. #ifdef ULOG_FILE_BACKEND_ENABLE
  31. #include "ulog_file.h"
  32. #endif
  33. #endif
  34. #undef TASK_STATUS_MONITOR
  35. extern int ark_network_init();
  36. extern int tp_init(void);
  37. extern int gui_app_start(int lcd_w, int lcd_h);
  38. #ifdef ULOG_BACKEND_USING_CONSOLE
  39. extern int ulog_console_backend_init(void);
  40. #endif
  41. extern int get_usb_mode();
  42. extern int ark_network_init(void);
  43. extern void ncm_update_demo();
  44. extern void ncm_log_demo();
  45. extern void wifi_update_demo(void);
  46. extern void vRegisterSampleCLICommands( void );
  47. extern void vUARTCommandConsoleStart( uint16_t usStackSize, UBaseType_t uxPriority );
  48. #ifdef CARLINK_ENABLE
  49. static char qr_text_buf[100] = {0}; //手机互联二维码数据缓存
  50. int get_qr_text_buf(char *buf, int len)
  51. {
  52. int ret = -1;
  53. int qr_len = strlen(qr_text_buf);
  54. if ((qr_len > 0) && (len > qr_len)) {
  55. strcpy(buf, qr_text_buf);
  56. ret = 0;
  57. }
  58. return ret;
  59. }
  60. void set_qr_text_buf(const char *str)
  61. {
  62. if (strlen(str) < sizeof(qr_text_buf)) {
  63. strcpy(qr_text_buf, str);
  64. }
  65. }
  66. #endif
  67. static void awtk_run_thread(void *param)
  68. {
  69. gui_app_start (OSD_WIDTH, OSD_HEIGHT);
  70. printf("### ERR: %s exit.\n", __func__);
  71. vTaskDelete(NULL);
  72. }
  73. static void awtk_thread(void *param)
  74. {
  75. printf("awtk thread start.\n");
  76. #if DEVICE_TYPE_SELECT != EMMC_FLASH
  77. /* initialize the spi flash */
  78. sfud_init();
  79. #ifdef SPI0_QSPI_MODE
  80. sfud_qspi_fast_read_enable(sfud_get_device(0), 4);
  81. #endif
  82. #else
  83. mmcsd_wait_cd_changed(portMAX_DELAY);
  84. #endif
  85. #ifdef USE_ULOG
  86. ulog_init();
  87. #ifdef ULOG_BACKEND_USING_CONSOLE
  88. ulog_console_backend_init();
  89. #endif
  90. #ifdef ULOG_EASYFLASH_BACKEND_ENABLE
  91. easyflash_init();
  92. ulog_ef_backend_init();
  93. #endif
  94. #ifdef ULOG_FILE_BACKEND_ENABLE
  95. usb_wait_stor_dev_pluged(portMAX_DELAY);
  96. ulog_file_backend_init();
  97. #endif
  98. TRACE_INFO("use ulog.\n");
  99. //read_all_flash_log();
  100. #endif
  101. /* read sysinfo */
  102. ReadSysInfo();
  103. empty_chip_update_demo();
  104. /* initialize carback */
  105. #ifdef CARBACK_DETECT
  106. carback_init();
  107. #endif
  108. /* play animation */
  109. #if ANIMATION_POLICY != ANIMATION_NONE
  110. animation_init();
  111. animation_start();
  112. #endif
  113. /* uart rx demo */
  114. //uart_rx_demo();
  115. /* read sd card demo */
  116. #ifdef SDMMC1_SUPPORT
  117. #if SDMMC_TEST
  118. sdcard_read_demo();
  119. #endif
  120. #endif
  121. #ifdef USB_SUPPORT
  122. if (get_usb_mode()) {
  123. ark_network_init();
  124. #ifdef NCM_UPDATE_SUPPORT
  125. ncm_update_demo();
  126. #endif
  127. #ifdef NCM_LOG_SUPPORT
  128. ncm_log_demo();
  129. #endif
  130. } else {
  131. #if defined(WIFI_UPDATE_SUPPORT)
  132. wifi_update_demo();
  133. #elif USB_TEST
  134. usb_read_demo();
  135. #endif
  136. }
  137. #endif
  138. #ifdef MAILBOX_SUPPORT
  139. #if CAN_UPDATE_TEST
  140. CanUpdateReceiveDemo();
  141. #endif
  142. #endif
  143. #ifdef WIFI_SUPPORT
  144. #if WIFI_TEST
  145. wifi_demo_test();
  146. #else
  147. #if USE_LWIP && (0 == CARLINK_EY && 0 == CARLINK_EC)
  148. ark_network_init();
  149. #endif
  150. #if CARLINK_EY
  151. set_carlink_display_info(0, 0, LCD_WIDTH, LCD_HEIGHT);
  152. set_carlink_video_info(LCD_WIDTH, LCD_HEIGHT, 30);
  153. carlink_ey_init();
  154. #endif
  155. #if CARLINK_EC
  156. set_carlink_display_info(0, 0, LCD_WIDTH, LCD_HEIGHT);
  157. set_carlink_video_info(LCD_WIDTH, LCD_HEIGHT, 30);
  158. carlink_ec_init(0, NULL);
  159. #endif
  160. #endif
  161. #endif
  162. /* read romfile */
  163. ReadRomFile();
  164. #ifdef AUDIO_REPLAY
  165. #if REPLAY_TEST
  166. wavplay_demo();
  167. #endif
  168. #endif
  169. #ifdef AUDIO_RECORD
  170. #if RECORD_TEST
  171. wavrecord_demo();
  172. #endif
  173. #endif
  174. #ifdef TP_SUPPORT
  175. tp_init();
  176. #endif
  177. #ifdef ETH_SUPPORT
  178. #if ETH_TEST
  179. eth_test_demo();
  180. #endif
  181. #endif
  182. xTaskCreate(awtk_run_thread, "awtk_gui", 32768, NULL, configMAX_PRIORITIES/2, NULL);
  183. #if ANIMATION_POLICY == ANIMATION_NONE
  184. /* Disable video layer and Enable UI layer when no animation */
  185. vTaskDelay(pdMS_TO_TICKS(10));
  186. ark_lcd_osd_enable(LCD_UI_LAYER, 1);
  187. ark_lcd_set_osd_sync(LCD_UI_LAYER);
  188. ark_lcd_osd_enable(LCD_VIDEO_LAYER, 0);
  189. ark_lcd_set_osd_sync(LCD_VIDEO_LAYER);
  190. #endif
  191. while(1) {
  192. #if TASK_STATUS_MONITOR
  193. static uint32_t idletick = 0;
  194. uint8_t CPU_RunInfo[1024];
  195. if (xTaskGetTickCount() - idletick > configTICK_RATE_HZ * 10) {
  196. memset(CPU_RunInfo,0,1024);
  197. vTaskList((char *)&CPU_RunInfo); //获取任务运行时间信息
  198. printf("---------------------------------------------\r\n");
  199. printf("Task State Priority Stack #\r\n");
  200. printf("%s", CPU_RunInfo);
  201. printf("---------------------------------------------\r\n");
  202. memset(CPU_RunInfo,0,1024);
  203. vTaskGetRunTimeStats((char *)&CPU_RunInfo);
  204. printf("Task Abs Time % Time\r\n");
  205. printf("%s", CPU_RunInfo);
  206. printf("---------------------------------------------\r\n\n");
  207. idletick = xTaskGetTickCount();
  208. }
  209. #endif
  210. vTaskDelay(pdMS_TO_TICKS(10)); /*Just to let the system breath*/
  211. }
  212. }
  213. void main_awtk(void)
  214. {
  215. /* Start the task that manages the command console for FreeRTOS+CLI. */
  216. vUARTCommandConsoleStart( ( configMINIMAL_STACK_SIZE * 3 ), tskIDLE_PRIORITY );
  217. /* Register the standard CLI commands. */
  218. vRegisterSampleCLICommands();
  219. xTaskCreate(awtk_thread, "awtk", 32768, NULL, tskIDLE_PRIORITY + 1, NULL);
  220. }