QtBootSender.cpp 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. #include "QtBootSender.h"
  2. #include "memutil.h"
  3. #include "charset.h"
  4. #include "sp_env.h"
  5. int qt_gui_create_format(sp_gui_format_t** p_gui)
  6. {
  7. int result = 0;
  8. sp_gui_format_t* gui = ZALLOC_T(sp_gui_format_t);
  9. if (gui != nullptr) {
  10. gui->gui_inst = (void*)(new QtBootSender());
  11. gui->display = &qt_gui_display;
  12. gui->hide = &qt_gui_undisplay;
  13. gui->show_entity_info = &qt_gui_show_entity_info;
  14. gui->show_running_info = &qt_gui_show_running_info;
  15. gui->post_message = &qt_gui_post_message;
  16. *p_gui = gui;
  17. }
  18. return result;
  19. }
  20. void qt_gui_destroy_format(sp_gui_format_t* p_gui)
  21. {
  22. if (p_gui->gui_inst) {
  23. delete ((QtBootSender*)p_gui->gui_inst);
  24. }
  25. FREE(p_gui);
  26. }
  27. namespace
  28. {
  29. MessageType MappingTypeFromGUI2Msg(int type)
  30. {
  31. switch (type) {
  32. case GUI_DISPLAY_ELEM_LOG_DEBUG:
  33. case GUI_DISPLAY_ELEM_LOG_EVENT:
  34. return TextEvent;
  35. break;
  36. case GUI_DISPLAY_ELEM_LOG_WARN:
  37. return TextWarn;
  38. break;
  39. case GUI_DISPLAY_ELEM_LOG_ERROR:
  40. return TextError;
  41. break;
  42. case GUI_DISPLAY_ELEM_LOG_FATAL:
  43. return TextFatal;
  44. break;
  45. case GUI_DISPLAY_ELEM_BLUESCREEN:
  46. return DisplayBlueScreen;
  47. break;
  48. case GUI_DISPLAY_ELEM_FATAL_ERROR:
  49. return TextFatal;
  50. break;
  51. case GUI_DISPLAY_ELEM_FATAL_BLOCK:
  52. return TextBlock;
  53. break;
  54. case GUI_DISPLAY_ELEM_NOTIFY_INFO:
  55. return TextNotifyInfo;
  56. break;
  57. case GUI_DISPLAY_ELEM_NOTIFY_WARN:
  58. return TextNotifyWarn;
  59. break;
  60. case GUI_DISPLAY_ELEM_NOTIFY_ERROR:
  61. return TextNotifyError;
  62. break;
  63. case GUI_DISPLAY_ELEM_STARTUP_INFO:
  64. return ModStartupInfo;
  65. break;
  66. case GUI_DISPLAY_ELEM_LOG_OTHER:
  67. return StageChangeInfo;
  68. default:
  69. return MsgTypeMax;
  70. break;
  71. }
  72. }
  73. }
  74. int qt_gui_show_running_info(void* gui, const char* msg, int type)
  75. {
  76. QtBootSender* senderInst = (QtBootSender*)gui;
  77. #if defined(_MSC_VER)
  78. senderInst->SendShowMessage(msg, MappingTypeFromGUI2Msg(type));
  79. #else
  80. bool done = false;
  81. if (!toolkit_detect_utf8_str(msg)) {
  82. const int len = toolkit_gbk2utf8((char*)msg, strlen(msg) + 1, NULL, 0);
  83. if (len > 0) {
  84. char* temp = CALLOC_T(len, char);
  85. memset(temp, 0, len);
  86. if (toolkit_gbk2utf8((char*)msg, strlen(msg) + 1, temp, len) > 0) {
  87. senderInst->SendShowMessage(temp, MappingTypeFromGUI2Msg(type));
  88. done = true;
  89. }
  90. FREE(temp);
  91. }
  92. }
  93. if (!done) {
  94. senderInst->SendShowMessage(msg, MappingTypeFromGUI2Msg(type));
  95. }
  96. #endif //_MSC_VER
  97. return 0;
  98. }
  99. int qt_gui_show_entity_info(void* gui, const char* entity, int state)
  100. {
  101. QtBootSender* senderInst = (QtBootSender*)gui;
  102. sp_env_t *env = sp_get_env();
  103. QEntityActiveInfo entityInfo;
  104. entityInfo.entityName = entity;
  105. entityInfo.entityState = static_cast<EntityState>(state);
  106. sp_mod_mgr_t *mod_mgr = env->mod_mgr;
  107. sp_entity_t *ent = sp_mod_mgr_find_entity_by_name(mod_mgr, entity);
  108. if (ent) {
  109. entityInfo.entityDevId = ent->instance_id;
  110. entityInfo.entityState = static_cast<EntityState>(ent->state);
  111. entityInfo.entityPID = ent->mod->process.pid;
  112. sp_cfg_shell_entity_t *cfg_ent = sp_cfg_get_entity_by_idx(env->cfg, ent->cfg->idx);
  113. if(cfg_ent) {
  114. char szv[64] = {0};
  115. sprintf(szv, "V%d.%d.%d", cfg_ent->version.major, cfg_ent->version.minor, cfg_ent->version.revision);
  116. entityInfo.entityVerStr = szv;
  117. } else {
  118. entityInfo.entityVerStr = "V0.0.0";
  119. }
  120. } else {
  121. entityInfo.entityDevId = 0;
  122. entityInfo.entityPID = 0;
  123. entityInfo.entityVerStr = "V0.0.0";
  124. }
  125. senderInst->SendEntityInfo(entityInfo);
  126. return 0;
  127. }
  128. int qt_gui_display(void* gui)
  129. {
  130. QtBootSender* senderInst = (QtBootSender*)gui;
  131. senderInst->SendShowMessage("", DisplayShow);
  132. return 0;
  133. }
  134. int qt_gui_undisplay(void* gui)
  135. {
  136. QtBootSender* senderInst = (QtBootSender*)gui;
  137. senderInst->SendShowMessage("", DisplayHide);
  138. return 0;
  139. }
  140. void qt_gui_post_message(void* gui, unsigned long param1, unsigned long param2)
  141. {
  142. QtBootSender* senderInst = (QtBootSender*)gui;
  143. senderInst->SendShowMessage("", MappingTypeFromGUI2Msg(param1), (int)param2);
  144. return;
  145. }