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.

79 lines
2.2 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. #include "main.hpp"
  2. #include <signal.h>
  3. #include <sqlite3.h>
  4. #include "iflytop/components/uart_printer/uart_printer.hpp"
  5. using namespace iflytop;
  6. using namespace core;
  7. using namespace std;
  8. namespace iflytop {
  9. bool g_in_test = false;
  10. };
  11. /*******************************************************************************
  12. * MAIN => MAIN *
  13. *******************************************************************************/
  14. Main *Main::g_main;
  15. int main(int argc, char *argv[]) {
  16. Main main;
  17. Main::g_main = &main;
  18. main.run(argc, argv);
  19. }
  20. void Main::onsignal(int signo) { exit(0); }
  21. void Main::run(int argc, char *argv[]) {
  22. // ::signal(SIGINT, Main::_onsignal);
  23. thread.reset(new Thread("main", [&]() { exit(main(argc, argv)); }));
  24. while (true) sleep(1000);
  25. }
  26. int Main::main(int argc, char *argv[]) {
  27. /**
  28. * @brief
  29. */
  30. string test_mode = "false";
  31. auto cli = ((required("--test_mode") & value("test_mode", test_mode)).doc("test_mode"));
  32. if (!parse(argc, argv, cli)) {
  33. test_mode = "false";
  34. // cout << make_man_page(cli, argv[0]);
  35. // exit(-1);
  36. }
  37. if (test_mode == "false") {
  38. g_in_test = false;
  39. } else {
  40. g_in_test = true;
  41. }
  42. // g_in_test = false;
  43. // logger->info("test_mode:{}:{}", test_mode, g_in_test);
  44. /**
  45. * @brief
  46. */
  47. logger->info("system setup start.");
  48. spdlog::flush_on(spdlog::level::debug);
  49. logger->info("#");
  50. logger->info("# company:{}", "ifytop");
  51. logger->info("# version:{}", VERSION);
  52. logger->info("# project:{}", PROJECT_NAME);
  53. logger->info("#");
  54. logger->info("build {}.....", "Config");
  55. // 构造GConfig
  56. BUILD_AND_REG_SERRVICE(GConfig);
  57. GET_SERVICE(GConfig)->initialize();
  58. BUILD_AND_REG_SERRVICE(UartPrinter);
  59. GET_SERVICE(UartPrinter)->initialize("/dev/ttyS5", "9600");
  60. /**
  61. * @brief
  62. */
  63. // if (!device_id.empty()) GET_SERVICE(GConfig)->set_deviceId(device_id);
  64. auto config = GET_SERVICE(GConfig);
  65. // 构造MainControlService
  66. BUILD_AND_REG_SERRVICE(MainControlService);
  67. GET_SERVICE(MainControlService)->initialize();
  68. logger->info("system setup end.");
  69. while (true) sleep(1000);
  70. }