You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

127 lines
3.5 KiB

12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
11 months ago
12 months ago
11 months ago
12 months ago
  1. #include <stddef.h>
  2. #include <stdio.h>
  3. //
  4. #include "base/appdep.hpp"
  5. //
  6. #include "app/dmapp.hpp"
  7. #include "app/ext_ch_selector_app.hpp"
  8. #include "app/exth2o2_sensor.hpp"
  9. //
  10. #include "board/public_board.hpp"
  11. //
  12. #include "base/protocol_processer_mgr.hpp"
  13. #include "protocol_processer_impl/public_cmd_processer.hpp"
  14. //
  15. #define TAG "main"
  16. using namespace iflytop;
  17. extern void umain();
  18. extern "C" {
  19. void StartDefaultTask(void const* argument) { umain(); }
  20. }
  21. /*******************************************************************************
  22. * MAIN *
  23. *******************************************************************************/
  24. extern "C" {
  25. }
  26. void debug_light_ctrl() {
  27. static uint32_t lastcall = 0;
  28. static bool light_status = false;
  29. if (!gInitErrorFlag) {
  30. if (zhas_passedms(lastcall) > 300) {
  31. PublicBoard::ins()->toggleDebugLight();
  32. lastcall = zget_ticket();
  33. }
  34. } else {
  35. if (zhas_passedms(lastcall) > 30) {
  36. PublicBoard::ins()->toggleDebugLight();
  37. lastcall = zget_ticket();
  38. }
  39. }
  40. }
  41. #define REG_PROCESSER(processer) ProtocolProcesserMgr::ins()->regProcesser(processer);
  42. /* IWDG init function */
  43. void MX_IWDG_Init(void) {
  44. hiwdg.Instance = IWDG;
  45. hiwdg.Init.Prescaler = IWDG_PRESCALER_256;
  46. hiwdg.Init.Reload = 501;
  47. if (HAL_IWDG_Init(&hiwdg) != HAL_OK) {
  48. Error_Handler();
  49. }
  50. }
  51. void umain() {
  52. gBoardFlagSetResetFlag();
  53. PORT::idtable_init();
  54. deviceInfo_init();
  55. // config_init();
  56. AppPeriodTaskMgr::ins()->initialize();
  57. PublicBoard::ins()->initialize();
  58. ZLOGI(TAG, "======================= boardinfo ==================== ");
  59. ZLOGI(TAG, "project : %s ", PROJECT);
  60. ZLOGI(TAG, "version : %d ", SOFTWARE_VERSION);
  61. ZLOGI(TAG, "pversion : %d", deviceInfo_getProtocolVersion());
  62. ZLOGI(TAG, "sn : %s", sn_get_str());
  63. ZLOGI(TAG, "boardTypeId : %s(%d)", BoardTypeId2Str(PublicBoard::ins()->getBoardTypeId()), PublicBoard::ins()->getBoardTypeId());
  64. ZLOGI(TAG, "boardId : %d", PublicBoard::ins()->getBoardId());
  65. ZLOGI(TAG, "=");
  66. zcanbus_init(PublicBoard::ins()->getBoardId());
  67. ProtocolProcesserMgr::ins()->initialize();
  68. PublicCmdProcesser::ins()->initialize();
  69. switch (PublicBoard::ins()->getBoardTypeId()) {
  70. case kDrawBarDMLiquidCtrlBoard:
  71. case kDrawBarDMPowerCtrlBoard:
  72. // not suppport now
  73. gInitErrorFlag = true;
  74. break;
  75. case kLargeSpaceDMLiquidCtrlBoard:
  76. case kLargeSpaceDMPowerCtrlBoard:
  77. case kSmallSpaceDMLiquidCtrlBoard:
  78. case kSmallSpaceDMPowerCtrlBoard:
  79. case kPipeDMLiquidCtrlBoard:
  80. case kPipeDMPowerCtrlBoard:
  81. DisinfectionApp::ins()->initialize();
  82. break;
  83. case kDrawBarDMExtChSelector:
  84. ExtChSelector::ins()->initialize();
  85. break;
  86. case kH2O2SensorBoard:
  87. ExtH2O2Sensor::ins()->initialize();
  88. break;
  89. default:
  90. gInitErrorFlag = true;
  91. break;
  92. }
  93. ZLOGI(TAG, "======================= init processer ================ ");
  94. ProtocolProcesserMgr::ins()->startSchedule(PublicBoard::ins()->getBoardId());
  95. ZLOGI(TAG, "=");
  96. AppPeriodTaskMgr::ins()->startScheduler();
  97. ZLOGI(TAG, "======================= sysinfo ======================= ");
  98. SysMgr::ins()->initedFinished();
  99. SysMgr::ins()->dumpSysInfo();
  100. ZLOGI(TAG, "=");
  101. uint8_t resetReason = SysMgr::ins()->chipGetResetReason();
  102. zcanbus_send_report(kreport_device_reset, &resetReason, 1, 100);
  103. MX_IWDG_Init();
  104. while (true) {
  105. osDelay(30);
  106. debug_light_ctrl();
  107. HAL_IWDG_Refresh(&hiwdg);
  108. }
  109. }