From fac91211ea8b5087a6cd898c718666821e4c4021 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Sat, 3 Jun 2023 17:05:11 +0800 Subject: [PATCH] add reactionConfigCardInfo --- dep/zlinuxcomponents | 2 +- src/service/main_control_service.cpp | 73 +++++++++++++++++++++++++++++++++--- src/service/main_control_service.hpp | 20 ++++++++-- 3 files changed, 85 insertions(+), 10 deletions(-) diff --git a/dep/zlinuxcomponents b/dep/zlinuxcomponents index 5691111..6057e71 160000 --- a/dep/zlinuxcomponents +++ b/dep/zlinuxcomponents @@ -1 +1 @@ -Subproject commit 56911115467fcf5f1022531ed2234a3f9baf1a66 +Subproject commit 6057e71efa1dfce3104cf6b25a5cb19f61bd5db9 diff --git a/src/service/main_control_service.cpp b/src/service/main_control_service.cpp index f9f8a89..8cd4a09 100644 --- a/src/service/main_control_service.cpp +++ b/src/service/main_control_service.cpp @@ -7,14 +7,77 @@ using namespace iflytop; using namespace core; using namespace std; +#define BIND + void MainControlService::initialize() { GET_TO_SERVICE(m_zconfig); - localVirtualCanSlaveInitialize(); - iflytopCanProtocolControler.reset(new IflytopCanProtocolControler()); - iflytopCanProtocolControler->initialize(m_zconfig->get_iflytopSubDeviceCanIFName(), m_zconfig->get_iflytopSubDeviceCanBitrate(), false); - iflytopCanProtocolControler->start(); + m_iflytopCanProtocolControler.reset(new IflytopCanProtocolControler()); + m_iflytopCanProtocolControler->initialize(m_zconfig->get_iflytopSubDeviceCanIFName(), m_zconfig->get_iflytopSubDeviceCanBitrate(), false); + m_iflytopCanProtocolControler->start(); + + m_restfulServer.reset(new RestfulServer()); + m_restfulServer->regAPI("/hello_world", RESTFUL_SERVER_BIND(MainControlService::hello_world)); + m_restfulServer->regAPI("/api1/reaction_config_card_info/read", RESTFUL_SERVER_BIND(MainControlService::reactionConfigCardInfo_read)); + m_restfulServer->regAPI("/api1/reaction_config_card_info/trigger_once_report", + RESTFUL_SERVER_BIND(MainControlService::reactionConfigCardInfo_trigger_once_report)); + m_restfulServer->regAPI("/api1/reaction_config_card_info/read_state", RESTFUL_SERVER_BIND(MainControlService::reactionConfigCardInfo_read_state)); + m_restfulServer->start(20000, 20001, "0.0.0.0"); + + m_reaction_config_card.reset(new M24LR64E()); + m_reaction_config_card->initialize("/dev/i2c-1"); + m_reaction_config_card->startAutoDetect(); + m_reaction_config_card->onConnected.connect([this](bool connected) { + if (connected) { + logger->info("reaction_config_card connected"); + + } else { + logger->info("reaction_config_card disconnected"); + } + }); }; -void MainControlService::localVirtualCanSlaveInitialize() { +HttpResponsePtr MainControlService::hello_world( // + HttpRequestPtr request, shared_ptr context, std::shared_ptr) { + return std::make_shared(200, "OK", HttpErrorCode::Ok, WebSocketHttpHeaders(), "hello_world"); +} +/******************************************************************************* + * reactionConfigCardInfo * + *******************************************************************************/ +void MainControlService::createReactionConfigCardInfoReportAndSend() { +#if 0 + M24LR64E::EEPROMContent content; + bool suc = m_reaction_config_card->readEEPROM(content); + if (suc) { + string contentstr = StringUtils().bytesToString((const uint8_t*)content.data, content.size); + m_restfulServer->reportEvent("readReactionConfigCardInfoReportEvent", "string", contentstr); + } +#else + m_restfulServer->reportEvent("readReactionConfigCardInfoReportEvent", "string", + "AB1234AB1234AB1234AB1234AB1234AB1234AB1234AB1234AB1234AB1234AB1234AB1234AB1234AB1234AB1234AB1234AB1234AB1234AB1234AB1234AB1234A" + "B1234AB1234AB1234AB1234AB1234AB1234AB1234AB1234AB1234AB1234AB1234AB1234AB1234AB1234AB1234AB1234AB1234AB1234"); +#endif +} + +HttpResponsePtr MainControlService::reactionConfigCardInfo_read( // + HttpRequestPtr, shared_ptr, std::shared_ptr) { + json j; + M24LR64E::EEPROMContent content; + bool suc = m_reaction_config_card->readEEPROM(content); + if (suc) { + string contentstr = StringUtils().bytesToString((const uint8_t*)content.data, content.size); + j["content"] = contentstr; + } + return std::make_shared(200, "OK", HttpErrorCode::Ok, WebSocketHttpHeaders(), j.dump()); +} +HttpResponsePtr MainControlService::reactionConfigCardInfo_trigger_once_report( // + HttpRequestPtr, shared_ptr, std::shared_ptr) { + createReactionConfigCardInfoReportAndSend(); + return std::make_shared(200, "OK", HttpErrorCode::Ok, WebSocketHttpHeaders(), ""); +} +HttpResponsePtr MainControlService::reactionConfigCardInfo_read_state( // + HttpRequestPtr, shared_ptr, std::shared_ptr) { + bool online = m_reaction_config_card->isOnline(); + string onlinestr = online ? "1" : "0"; + return std::make_shared(200, "OK", HttpErrorCode::Ok, WebSocketHttpHeaders(), onlinestr); } diff --git a/src/service/main_control_service.hpp b/src/service/main_control_service.hpp index 2b4f98e..8326090 100644 --- a/src/service/main_control_service.hpp +++ b/src/service/main_control_service.hpp @@ -24,8 +24,10 @@ #include "iflytopcpp/core/components/jobs/work_queue.hpp" #include "iflytopcpp/core/components/timer/simple_timer.hpp" #include "zlinuxcomponents/alsaplayer/smart_soundbox_player.hpp" -#include "zlinuxcomponents/iflytop_can_protocol_stack/iflytop_can_protocol_controler.hpp" +#include "zlinuxcomponents/i2c/m24lr64e.hpp" #include "zlinuxcomponents/iflytop_can_protocol_stack/basic/iflytop_virtual_can_slave.hpp" +#include "zlinuxcomponents/iflytop_can_protocol_stack/iflytop_can_protocol_controler.hpp" +#include "zlinuxcomponents/restful_server/restful_server.hpp" /** * @brief @@ -45,9 +47,12 @@ using namespace core; class MainControlService : public enable_shared_from_this { ENABLE_LOGGER(MainControlService); - shared_ptr m_zconfig; + shared_ptr m_zconfig; + + shared_ptr m_iflytopCanProtocolControler; + shared_ptr m_restfulServer; - shared_ptr iflytopCanProtocolControler; + shared_ptr m_reaction_config_card; public: MainControlService(){}; @@ -59,6 +64,13 @@ class MainControlService : public enable_shared_from_this { system(order.c_str()); } - void localVirtualCanSlaveInitialize(); + + private: + HttpResponsePtr reactionConfigCardInfo_read(HttpRequestPtr, shared_ptr, std::shared_ptr); + HttpResponsePtr reactionConfigCardInfo_trigger_once_report(HttpRequestPtr, shared_ptr, std::shared_ptr); + HttpResponsePtr reactionConfigCardInfo_read_state(HttpRequestPtr, shared_ptr, std::shared_ptr); + HttpResponsePtr hello_world(HttpRequestPtr, shared_ptr, std::shared_ptr); + + void createReactionConfigCardInfoReportAndSend(); }; } // namespace iflytop \ No newline at end of file