Browse Source

add reactionConfigCardInfo

master
zhaohe 2 years ago
parent
commit
fac91211ea
  1. 2
      dep/zlinuxcomponents
  2. 73
      src/service/main_control_service.cpp
  3. 20
      src/service/main_control_service.hpp

2
dep/zlinuxcomponents

@ -1 +1 @@
Subproject commit 56911115467fcf5f1022531ed2234a3f9baf1a66
Subproject commit 6057e71efa1dfce3104cf6b25a5cb19f61bd5db9

73
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<RestfulServer::Context> context, std::shared_ptr<ConnectionState>) {
return std::make_shared<HttpResponse>(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<RestfulServer::Context>, std::shared_ptr<ConnectionState>) {
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<HttpResponse>(200, "OK", HttpErrorCode::Ok, WebSocketHttpHeaders(), j.dump());
}
HttpResponsePtr MainControlService::reactionConfigCardInfo_trigger_once_report( //
HttpRequestPtr, shared_ptr<RestfulServer::Context>, std::shared_ptr<ConnectionState>) {
createReactionConfigCardInfoReportAndSend();
return std::make_shared<HttpResponse>(200, "OK", HttpErrorCode::Ok, WebSocketHttpHeaders(), "");
}
HttpResponsePtr MainControlService::reactionConfigCardInfo_read_state( //
HttpRequestPtr, shared_ptr<RestfulServer::Context>, std::shared_ptr<ConnectionState>) {
bool online = m_reaction_config_card->isOnline();
string onlinestr = online ? "1" : "0";
return std::make_shared<HttpResponse>(200, "OK", HttpErrorCode::Ok, WebSocketHttpHeaders(), onlinestr);
}

20
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<MainControlService> {
ENABLE_LOGGER(MainControlService);
shared_ptr<GConfig> m_zconfig;
shared_ptr<GConfig> m_zconfig;
shared_ptr<IflytopCanProtocolControler> m_iflytopCanProtocolControler;
shared_ptr<RestfulServer> m_restfulServer;
shared_ptr<IflytopCanProtocolControler> iflytopCanProtocolControler;
shared_ptr<M24LR64E> m_reaction_config_card;
public:
MainControlService(){};
@ -59,6 +64,13 @@ class MainControlService : public enable_shared_from_this<MainControlService> {
system(order.c_str());
}
void localVirtualCanSlaveInitialize();
private:
HttpResponsePtr reactionConfigCardInfo_read(HttpRequestPtr, shared_ptr<RestfulServer::Context>, std::shared_ptr<ConnectionState>);
HttpResponsePtr reactionConfigCardInfo_trigger_once_report(HttpRequestPtr, shared_ptr<RestfulServer::Context>, std::shared_ptr<ConnectionState>);
HttpResponsePtr reactionConfigCardInfo_read_state(HttpRequestPtr, shared_ptr<RestfulServer::Context>, std::shared_ptr<ConnectionState>);
HttpResponsePtr hello_world(HttpRequestPtr, shared_ptr<RestfulServer::Context>, std::shared_ptr<ConnectionState>);
void createReactionConfigCardInfoReportAndSend();
};
} // namespace iflytop
Loading…
Cancel
Save