Browse Source

init

master
zhaohe 1 year ago
parent
commit
a2dc4e648f
  1. 15
      usrc/base/device_info.cpp
  2. 26
      usrc/base/hardware.cpp
  3. 15
      usrc/base/hardware.hpp
  4. 21
      usrc/project_configs.h
  5. 19
      usrc/protocol_impl/protocol_impl_service.cpp
  6. 2
      zsdk

15
usrc/base/device_info.cpp

@ -1,9 +1,20 @@
#include "device_info.hpp" #include "device_info.hpp"
#include "iflytop_canbus_protocol/iflytop_canbus_protocol.hpp" #include "iflytop_canbus_protocol/iflytop_canbus_protocol.hpp"
#include "zsdk/zsdk.hpp"
uint16_t deviceInfo_init() { return 0; }
uint16_t deviceInfo_getBoardId() { return DEVICE_ID; }
using namespace iflytop;
static ZGPIO id_from_machine; // 消毒机上的开关
uint16_t deviceInfo_init() {
id_from_machine.initAsInput(DEVICE_ID_OFF_PIN, kxs_gpio_nopull, kxs_gpio_no_irq, false);
return 0;
}
uint16_t deviceInfo_getBoardId() {
int32_t off = id_from_machine.read() ? 1 : 0;
return DEVICE_ID_START + off;
}
uint16_t deviceInfo_getProjectId() { return PROJECT_ID; } uint16_t deviceInfo_getProjectId() { return PROJECT_ID; }
uint16_t deviceInfo_getBoardType() { return BOARD_TYPE; } uint16_t deviceInfo_getBoardType() { return BOARD_TYPE; }
uint16_t deviceInfo_getProtocolVersion() { return PROTOCOL_VERSION; } uint16_t deviceInfo_getProtocolVersion() { return PROTOCOL_VERSION; }

26
usrc/base/hardware.cpp

@ -11,12 +11,13 @@ using namespace iflytop;
***********************************************************************************************************************/ ***********************************************************************************************************************/
static osThreadId H2O2CaptureThreadId; static osThreadId H2O2CaptureThreadId;
static osThreadId AdcCaptureThreadId;
static osThreadId AlarmLightThreadId;
/*********************************************************************************************************************** /***********************************************************************************************************************
* FUNC * * FUNC *
***********************************************************************************************************************/ ***********************************************************************************************************************/
static void c_onH2O2CaptureThread(void const* argument) { Hardware::ins().onH2O2CaptureThread(); } static void c_onH2O2CaptureThread(void const* argument) { Hardware::ins().onH2O2CaptureThread(); }
static void c_onAlarmLightThread(void const* argument) { Hardware::ins().onAlarmLightThread(); }
int32_t Hardware::readSwitchGroup() { int32_t Hardware::readSwitchGroup() {
int32_t id = 0; int32_t id = 0;
@ -33,6 +34,8 @@ void Hardware::setAlarmLight(bool r, bool g, bool y) {
m_alarmLightY.write(y); m_alarmLightY.write(y);
} }
void Hardware::setAlarmLight(light_state_t state) { m_alarmLightState = state; }
void Hardware::init() { void Hardware::init() {
m_alarmLightR.initAsOutput(PD7, kxs_gpio_nopull, true, false); m_alarmLightR.initAsOutput(PD7, kxs_gpio_nopull, true, false);
m_alarmLightG.initAsOutput(PD9, kxs_gpio_nopull, true, false); m_alarmLightG.initAsOutput(PD9, kxs_gpio_nopull, true, false);
@ -48,6 +51,7 @@ void Hardware::init() {
ZLOGI(TAG, "switch group:%d id_from_machine %d", readSwitchGroup(), id_from_machine.read()); ZLOGI(TAG, "switch group:%d id_from_machine %d", readSwitchGroup(), id_from_machine.read());
setAlarmLight(kdisconnected);
/** /**
* @brief HMP110 * @brief HMP110
*/ */
@ -92,6 +96,9 @@ void Hardware::init() {
osThreadDef(H2O2CaptureThread, c_onH2O2CaptureThread, osPriorityNormal, 0, 1024); osThreadDef(H2O2CaptureThread, c_onH2O2CaptureThread, osPriorityNormal, 0, 1024);
H2O2CaptureThreadId = osThreadCreate(osThread(H2O2CaptureThread), NULL); H2O2CaptureThreadId = osThreadCreate(osThread(H2O2CaptureThread), NULL);
osThreadDef(AlarmLightThread, c_onAlarmLightThread, osPriorityNormal, 0, 1024);
AlarmLightThreadId = osThreadCreate(osThread(AlarmLightThread), NULL);
} }
/*********************************************************************************************************************** /***********************************************************************************************************************
@ -207,4 +214,19 @@ void Hardware::onH2O2CaptureThread() {
} }
#endif #endif
} }
}
}
void Hardware::onAlarmLightThread() {
while (1) {
osDelay(100);
if (m_alarmLightState == kdisconnected) {
static bool state;
setAlarmLight(false, state, false);
state = !state;
} else if (m_alarmLightState == kconnected) {
setAlarmLight(true, true, false);
} else if (m_alarmLightState == kerror) {
setAlarmLight(true, false, false);
}
}
}

15
usrc/base/hardware.hpp

@ -15,7 +15,15 @@
void hardware_init(); void hardware_init();
namespace iflytop { namespace iflytop {
typedef enum {
kdisconnected,
kconnected,
kerror,
} light_state_t;
class Hardware { class Hardware {
public:
#ifdef H2O2_SENSOR_TYPE_HMP110 #ifdef H2O2_SENSOR_TYPE_HMP110
ModbusBlockHost m_H2o2Sensor_ModbusBlockHost; // ModbusBlockHost m_H2o2Sensor_ModbusBlockHost; //
ZADC m_H2o2Sensor_H2O2Adc; // H2O2传感器控制 ZADC m_H2o2Sensor_H2O2Adc; // H2O2传感器控制
@ -42,6 +50,8 @@ class Hardware {
ZGPIO id_from_machine; // 消毒机上的开关 ZGPIO id_from_machine; // 消毒机上的开关
light_state_t m_alarmLightState = kdisconnected;
public: public:
static Hardware& ins() { static Hardware& ins() {
static Hardware ins; static Hardware ins;
@ -50,9 +60,11 @@ class Hardware {
void init(); void init();
void setAlarmLight(bool r, bool g, bool y);
int32_t readSwitchGroup(); int32_t readSwitchGroup();
void setAlarmLight(bool r, bool g, bool y);
void setAlarmLight(light_state_t state);
bool h2o2_sensor_is_online(); bool h2o2_sensor_is_online();
int32_t h2o2_sensor_read_calibration_date(int32_t* year, int32_t* month, int32_t* day); int32_t h2o2_sensor_read_calibration_date(int32_t* year, int32_t* month, int32_t* day);
int32_t h2o2_sensor_read_sub_ic_errorcode(); int32_t h2o2_sensor_read_sub_ic_errorcode();
@ -61,6 +73,7 @@ class Hardware {
public: public:
void onH2O2CaptureThread(); void onH2O2CaptureThread();
void onAlarmLightThread();
}; };
} // namespace iflytop } // namespace iflytop

21
usrc/project_configs.h

@ -18,16 +18,17 @@
* @brief * @brief
* *
*/ */
#define SOFTWARE_VERSION 1 // 软件版本
#define HARDWARE_VERSION 1 // 硬件版本
#define PROJECT "h2o2_ext_sensor" // 工程名称
#define SN_HEADER "SN" // SN号前缀
#define DEVICE_ID (kFixBoardId_H2O2SensorStart) // 设备ID
#define PROJECT_ID kh2o2_ext_sensor // 项目ID
#define BOARD_TYPE kBoardType_H2O2Sensor // 板子类型
#define DEBUG_UART huart1 // 调试串口
#define DEBUG_LIGHT_GPIO PE2 // 调试指示灯
#define SOFTWARE_VERSION 1 // 软件版本
#define HARDWARE_VERSION 1 // 硬件版本
#define PROJECT "h2o2_ext_sensor" // 工程名称
#define SN_HEADER "SN" // SN号前缀
#define PROJECT_ID kh2o2_ext_sensor // 项目ID
#define BOARD_TYPE kBoardType_H2O2Sensor // 板子类型
#define DEBUG_UART huart1 // 调试串口
#define DEBUG_LIGHT_GPIO PE2 // 调试指示灯
// #define H2O2_SENSOR_TYPE_HPP272 // #define H2O2_SENSOR_TYPE_HPP272
#define H2O2_SENSOR_TYPE_HMP110 #define H2O2_SENSOR_TYPE_HMP110
#define DEVICE_ID_START (kFixBoardId_H2O2SensorStart) // 设备ID
#define DEVICE_ID_OFF_PIN PE8 // 设备ID偏移引脚

19
usrc/protocol_impl/protocol_impl_service.cpp

@ -10,6 +10,7 @@ using namespace iflytop;
***********************************************************************************************************************/ ***********************************************************************************************************************/
static osThreadId PacketRxThreadId; static osThreadId PacketRxThreadId;
static osThreadId DeviceStateMonitorThreadId;
static void onPacketRxThreadStart(void const* argument) { static void onPacketRxThreadStart(void const* argument) {
while (true) { while (true) {
@ -18,6 +19,21 @@ static void onPacketRxThreadStart(void const* argument) {
} }
} }
static void onDeviceStateMonitorThreadStart(void const* argument) {
while (true) {
osDelay(1000);
if (Hardware::ins().h2o2_sensor_read_sub_ic_errorcode() != 0) {
Hardware::ins().setAlarmLight(kerror);
} else {
if (zcanbus_is_connected()) {
Hardware::ins().setAlarmLight(kconnected);
} else {
Hardware::ins().setAlarmLight(kdisconnected);
}
}
}
}
static void zcanbus_on_rx(uint8_t from, uint8_t to, uint8_t* rawpacket, size_t len) { // static void zcanbus_on_rx(uint8_t from, uint8_t to, uint8_t* rawpacket, size_t len) { //
zcanbus_packet_t* packet = (zcanbus_packet_t*)rawpacket; zcanbus_packet_t* packet = (zcanbus_packet_t*)rawpacket;
ZLOGI(TAG, "process packet from %d to %d, function_id %d, len %d", from, to, packet->function_id, len); ZLOGI(TAG, "process packet from %d to %d, function_id %d, len %d", from, to, packet->function_id, len);
@ -62,4 +78,7 @@ void protocol_impl_service_init() { //
osThreadDef(PacketRxThread, onPacketRxThreadStart, osPriorityNormal, 0, 1024); osThreadDef(PacketRxThread, onPacketRxThreadStart, osPriorityNormal, 0, 1024);
PacketRxThreadId = osThreadCreate(osThread(PacketRxThread), NULL); PacketRxThreadId = osThreadCreate(osThread(PacketRxThread), NULL);
osThreadDef(DeviceStateMonitorThread, onDeviceStateMonitorThreadStart, osPriorityNormal, 0, 1024);
DeviceStateMonitorThreadId = osThreadCreate(osThread(DeviceStateMonitorThread), NULL);
} }

2
zsdk

@ -1 +1 @@
Subproject commit c2474e3a744e93d4deec57effbc10f66f187b7eb
Subproject commit 71777bf1162edf229517047c572d2a401ce37ee3
Loading…
Cancel
Save