diff --git a/README.md b/README.md index 8bc1824..de41812 100644 --- a/README.md +++ b/README.md @@ -23,13 +23,16 @@ 5. 远程控制功能 必须要完成的功能: -6. 软件升级功能 +6. 软件升级功能,frp +7. 程序重启 //补充协议 1. 时间修改 2. getState时,传感器信息的上报,所有受控设备的开关状态 3. 修改密码时,需要传递旧密码。 4. 设置的默认配置信息name错误 +5. 排液,加液,液体体积 +6. 开关量状态上报,压力传感器状态上报 ---------------------------------- diff --git a/iflytoplinuxsdk b/iflytoplinuxsdk index 419371f..4b77d8a 160000 --- a/iflytoplinuxsdk +++ b/iflytoplinuxsdk @@ -1 +1 @@ -Subproject commit 419371f95936fa7f49389fbc07bac250f21240a9 +Subproject commit 4b77d8a85c6627652a1f8933042b1e8d79454e46 diff --git a/src/service/iflytop_can_host_device.cpp b/src/service/iflytop_can_host_device.cpp index d253e29..842ef70 100644 --- a/src/service/iflytop_can_host_device.cpp +++ b/src/service/iflytop_can_host_device.cpp @@ -1 +1,44 @@ -#include "iflytop_can_host_device.hpp" \ No newline at end of file +#include "iflytop_can_host_device.hpp" +using namespace std; +using namespace iflytop; + +void IflytopCanHostDevice::initialize(string can_if_name, int baudrate, bool enablLoopback) { + // m_iflytopCanProtocolStack.reset(new IflytopCanProtocolStack()); + + m_can_if_name = can_if_name; + m_baudrate = baudrate; + m_enablLoopback = enablLoopback; + resetSocketCan(); +} +void IflytopCanHostDevice::startListen() {} + +void IflytopCanHostDevice::processRx(shared_ptr frame) { + if (!frame) { + return; + } + if (frame->getCanIdentifier() == socketcan::kextFrame && // + frame->getFanFrameType() == socketcan::kdataframe) { + /** + * @brief 接收can消息 + */ + + } else { + logger->warn("Rx unknown can frame"); + } +} +void IflytopCanHostDevice::resetSocketCan() { + auto socketCanConfig = make_shared(); + socketCanConfig->enablLoopback = m_enablLoopback; // 根据 SocketCan::dumpCanDriverInfo() 的输出,确定该标志位是false还是true + socketCanConfig->m_canName = m_can_if_name; + socketCanConfig->m_canBaudrate = m_baudrate; + socketCanConfig->m_canfilters = {}; + + logger->info("initialize() m_canName:{} {}", socketCanConfig->m_canName, socketCanConfig->m_canBaudrate); + + m_socketCan.reset(new SocketCan()); + m_socketCan->initialize(socketCanConfig); + m_socketCan->startListen(); + m_socketCan->onSocketCanFrame.connect([this](shared_ptr canframe) { // + processRx(canframe); + }); +} \ No newline at end of file diff --git a/src/service/iflytop_can_host_device.hpp b/src/service/iflytop_can_host_device.hpp index c330d6c..80a1847 100644 --- a/src/service/iflytop_can_host_device.hpp +++ b/src/service/iflytop_can_host_device.hpp @@ -9,11 +9,31 @@ #include #include #include + +#include "iflytop/core/basic/nlohmann/json.hpp" +#include "iflytop/core/driver/socketcan/socket_can.hpp" +#include "iflytop/core/spdlogfactory/logger.hpp" +#include "zservice_container/zservice_container.hpp" + namespace iflytop { using namespace std; class IflytopCanHostDevice { + ENABLE_LOGGER(IflytopCanHostDevice); + shared_ptr m_socketCan; + + string m_can_if_name; + int m_baudrate; + bool m_enablLoopback; + public: - IflytopCanHostDevice(){}; + IflytopCanHostDevice(){}; + + void initialize(string can_if_name, int baudrate, bool enablLoopback); + void startListen(); + + void processRx(shared_ptr frame); + + private: + void resetSocketCan(); }; } // namespace iflytop -