diff --git a/.project/cmake/deps.cmake b/.project/cmake/deps.cmake index e90e48f..2b7d8e6 100644 --- a/.project/cmake/deps.cmake +++ b/.project/cmake/deps.cmake @@ -12,3 +12,4 @@ include(${CMAKE_SOURCE_DIR}/dep/zlinuxcomponents/aiui_ws/module.cmake) include( ${CMAKE_SOURCE_DIR}/dep/zlinuxcomponents/iflytop_can_protocol_stack/module.cmake ) +include(${CMAKE_SOURCE_DIR}/dep/zlinuxcomponents/i2c/module.cmake) diff --git a/.project/cmake/host.cmake b/.project/cmake/host.cmake index abaac15..76abd8c 100644 --- a/.project/cmake/host.cmake +++ b/.project/cmake/host.cmake @@ -16,4 +16,4 @@ zadd_executable_simple( # src/test/socketcan.cpp src/service/main_control_service.cpp # # -) \ No newline at end of file +) diff --git a/.project/cmake/target.cmake b/.project/cmake/target.cmake index 5600491..f349abe 100644 --- a/.project/cmake/target.cmake +++ b/.project/cmake/target.cmake @@ -20,3 +20,5 @@ zadd_executable_simple( # zadd_executable_simple(TARGET test_can.out SRC src/test/test_can.cpp) zadd_executable_simple(TARGET dump_can_driver_info.out SRC src/test/dump_can_driver_info.cpp) +zadd_executable_simple(TARGET test_i2c_eeprom.out SRC src/test/test_i2c_eeprom.cpp) + \ No newline at end of file diff --git a/dep/zlinuxcomponents b/dep/zlinuxcomponents index 52d35b4..30d516c 160000 --- a/dep/zlinuxcomponents +++ b/dep/zlinuxcomponents @@ -1 +1 @@ -Subproject commit 52d35b4005bf9f24d571a850d47fa7926e98c7fa +Subproject commit 30d516c35407b43df206927af3734a42a1abdd10 diff --git a/src/service/host_hardware_device_service.cpp b/src/service/host_hardware_device_service.cpp new file mode 100644 index 0000000..1ac2644 --- /dev/null +++ b/src/service/host_hardware_device_service.cpp @@ -0,0 +1,7 @@ +#include "host_hardware_device_service.hpp" + +using namespace iflytop; +using namespace core; + +HostHardwareDeviceService::HostHardwareDeviceService(){}; +void HostHardwareDeviceService::initialize() {} diff --git a/src/service/host_hardware_device_service.hpp b/src/service/host_hardware_device_service.hpp new file mode 100644 index 0000000..a0e9c7c --- /dev/null +++ b/src/service/host_hardware_device_service.hpp @@ -0,0 +1,47 @@ +// +// Created by zwsd +// + +#pragma once +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "iflytopcpp/core/spdlogfactory/logger.hpp" +#include "iflytopcpp/core/thread/thread.hpp" +// +#include "zlinuxcomponents/iflytop_can_protocol_stack/iflytop_can_protocol_controler.hpp" +#include "zlinuxcomponents/iflytop_can_protocol_stack/iflytop_virtual_can_slave.hpp" +/** + * @brief + * + * service: HostHardwareDeviceService + * + * 监听事件: + * 依赖状态: + * 依赖服务: + * 作用: + * + */ + +namespace iflytop { +using namespace std; +using namespace core; +class HostHardwareDeviceService : public enable_shared_from_this { + ENABLE_LOGGER(HostHardwareDeviceService); + + shared_ptr m_localVirtualCanSlave; // Controler本身也作为一个从机存在 + shared_ptr m_iflytopCanProtocolControler; + + public: + HostHardwareDeviceService(); + + void initialize(); +}; +} // namespace iflytop \ No newline at end of file diff --git a/src/service/main_control_service.cpp b/src/service/main_control_service.cpp index 5f77e70..062dde8 100644 --- a/src/service/main_control_service.cpp +++ b/src/service/main_control_service.cpp @@ -13,26 +13,9 @@ void MainControlService::initialize() { localVirtualCanSlaveInitialize(); iflytopCanProtocolControler.reset(new IflytopCanProtocolControler()); iflytopCanProtocolControler->initialize(m_zconfig->get_pipettingRobotCanIFName(), m_zconfig->get_iflytopSubDeviceCanBitrate(), false); - iflytopCanProtocolControler->addVirtualCanSlave(m_localVirtualCanSlave); iflytopCanProtocolControler->start(); }; void MainControlService::localVirtualCanSlaveInitialize() { - m_localVirtualCanSlave.reset(new IflytopVirtualCanSlave()); - m_localVirtualCanSlave->initialize(LINUX_HARDWARE_ID); - m_localVirtualCanSlave->activeReg(REG_REBOOT_FLAG, icps::kw | icps::kr, 0); - m_localVirtualCanSlave->activeReg(REG_DEVICE_ID, icps::kr, LINUX_HARDWARE_ID); - m_localVirtualCanSlave->activeReg(REG_EXCEPTION_FLAG, icps::kw | icps::kr, 0); - m_localVirtualCanSlave->setOnHostRegisterReadEvent( // - [this](icps::Reg_t& reg, int32_t& value) { // - return icps::kSuccess; - }); - m_localVirtualCanSlave->setOnHostRegisterWriteEvent( // - [this](icps::Reg_t& reg, int32_t oldvalue, int32_t& newvalue) { // - return icps::kSuccess; - }); - m_localVirtualCanSlave->setOnRegisterValueAutoReportEvent( // - [this](icps::Reg_t& reg, int32_t& value) { // - return; - }); + } diff --git a/src/service/main_control_service.hpp b/src/service/main_control_service.hpp index 05f4707..9a83a57 100644 --- a/src/service/main_control_service.hpp +++ b/src/service/main_control_service.hpp @@ -47,7 +47,6 @@ class MainControlService : public enable_shared_from_this { shared_ptr m_zconfig; - shared_ptr m_localVirtualCanSlave; shared_ptr iflytopCanProtocolControler; public: diff --git a/src/test/test_i2c_eeprom.cpp b/src/test/test_i2c_eeprom.cpp new file mode 100644 index 0000000..2a76e64 --- /dev/null +++ b/src/test/test_i2c_eeprom.cpp @@ -0,0 +1,63 @@ +#include + +#include "zlinuxcomponents/zmainhelper.hpp" +// +#include "iflytopcpp/core/spdlogfactory/logger.hpp" +#include "iflytopcpp/core/thread/thread.hpp" +#include "spdlog/spdlog.h" +// + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "zlinuxcomponents/i2c/i2c_bus.hpp" +#include "zlinuxcomponents/i2c/m24lr64e.hpp" + +using namespace iflytop; +using namespace core; +using namespace std; +using namespace clipp; + +/***********************************************************************/ +/***********************************************************************/ +/***********************************************************************/ +/***********************************************************************/ +class Main { + ENABLE_LOGGER(Main); + unique_ptr thread; + + shared_ptr m_i2c_bus = nullptr; + shared_ptr m_m24lr64e = nullptr; + + public: + Main(/* args */) {} + ~Main() {} + void run(int argc, char* argv[]) { + thread.reset(new Thread("main", [&]() { exit(main(argc, argv)); })); + while (true) sleep(1000); + } + void onSIGINT() { exit(0); } + int main(int argCount, char* argValues[]) { // + m_i2c_bus.reset(new I2CBus()); + m_m24lr64e.reset(new M24LR64E()); + + m_i2c_bus->open("/dev/i2c-1"); + m_m24lr64e->initialize(m_i2c_bus); + + m_m24lr64e->dump_eeprom(); + logger->info("dump eeprom done"); + + return 0; + } +}; +MAIN_ENTRY(); +// ip link set can0 down +// ip link set can0 type can bitrate 500000 +// ip link set can0 up