Browse Source

zcan_board_module_supoort temperature

master
zhaohe 2 years ago
parent
commit
cc8a5b4f9a
  1. 1
      chip/api/zi_api.hpp
  2. 12
      chip/api/zi_temperature.hpp
  3. 3
      components/subcanmodule/zcancmder_subboard_initer.cpp
  4. 3
      components/subcanmodule/zcancmder_subboard_initer.hpp
  5. 22
      components/zcancmder/zcan_board_module.cpp
  6. 8
      components/zcancmder/zcan_board_module.hpp

1
chip/api/zi_api.hpp

@ -1,3 +1,4 @@
#pragma once
#include "zi_adc.hpp"
#include "sdk\components\zprotocols\zcancmder_v2\api\errorcode.hpp"
#include "zi_temperature.hpp"

12
chip/api/zi_temperature.hpp

@ -0,0 +1,12 @@
#pragma once
#include <stdint.h>
namespace iflytop {
using namespace std;
class ZITemperatureSensor {
public:
virtual ~ZITemperatureSensor(){};
virtual int32_t getTemperature(int32_t& sensorval) = 0;
};
} // namespace iflytop

3
components/subcanmodule/zcancmder_subboard_initer.cpp

@ -70,9 +70,11 @@ void ZCancmderSubboardIniter::initmodule() {
ZCanBoardModule::hardware_config_t hcfg = {};
static_assert(ZARRAY_SIZE(hcfg.input) == ZARRAY_SIZE(m_cfg.input_gpio));
static_assert(ZARRAY_SIZE(hcfg.output) == ZARRAY_SIZE(m_cfg.output_gpio));
static_assert(ZARRAY_SIZE(hcfg.temperature_sensor) == ZARRAY_SIZE(m_cfg.temperature_sensor));
memcpy(&hcfg.input, &m_cfg.input_gpio, sizeof(m_cfg.input_gpio));
memcpy(&hcfg.output, &m_cfg.output_gpio, sizeof(m_cfg.output_gpio));
memcpy(&hcfg.temperature_sensor, &m_cfg.temperature_sensor, sizeof(m_cfg.temperature_sensor));
boardmodule.initialize(get_module_id(0), &hcfg);
ziProtocolParser.registerModule(&boardmodule);
@ -86,7 +88,6 @@ void ZCancmderSubboardIniter::register_module(ZIModule* module) {
void ZCancmderSubboardIniter::loop() {
while (true) {
OSDefaultSchduler::getInstance()->loop();
zcanCmder.loop();
cmder.schedule();

3
components/subcanmodule/zcancmder_subboard_initer.hpp

@ -5,9 +5,9 @@
#include "sdk\components\zcancmder\zcan_board_module.hpp"
#include "sdk\components\zcancmder\zcanreceiver.hpp"
#include "sdk\components\zprotocol_helper\micro_computer_module_device_script_cmder_paser.hpp"
#include "sdk\components\zprotocols\zcancmder_v2\protocol_event_bus_sender.hpp"
#include "sdk\components\zprotocols\zcancmder_v2\protocol_parser.hpp"
#include "sdk\components\zprotocols\zcancmder_v2\zmodule_device_manager.hpp"
#include "sdk\components\zprotocols\zcancmder_v2\protocol_event_bus_sender.hpp"
#ifdef HAL_CAN_MODULE_ENABLED
namespace iflytop {
@ -17,6 +17,7 @@ class ZCancmderSubboardIniter {
int32_t deviceId;
ZGPIO::InputGpioCfg_t input_gpio[16];
ZGPIO::OutputGpioCfg_t output_gpio[16];
ZITemperatureSensor* temperature_sensor[8];
} cfg_t;
private:

22
components/zcancmder/zcan_board_module.cpp

@ -47,6 +47,15 @@ int32_t ZCanBoardModule::module_xxx_reg(int32_t param_id, bool read, int32_t &va
PROCESS_REG(kreg_module_initflag, /* */ REG_GET(module_get_inited_flag()), module_set_inited_flag(val));
PROCESS_REG(kreg_module_output_state, /* */ REG_GET(readoutput()), ACTION_NONE);
PROCESS_REG(kreg_module_input_state, /* */ REG_GET(readinput()), ACTION_NONE);
PROCESS_REG(kreg_sensor_temperature0, readTemperature(0, val), ACTION_NONE);
PROCESS_REG(kreg_sensor_temperature1, readTemperature(1, val), ACTION_NONE);
PROCESS_REG(kreg_sensor_temperature2, readTemperature(2, val), ACTION_NONE);
PROCESS_REG(kreg_sensor_temperature3, readTemperature(3, val), ACTION_NONE);
PROCESS_REG(kreg_sensor_temperature4, readTemperature(4, val), ACTION_NONE);
PROCESS_REG(kreg_sensor_temperature5, readTemperature(5, val), ACTION_NONE);
PROCESS_REG(kreg_sensor_temperature6, readTemperature(6, val), ACTION_NONE);
PROCESS_REG(kreg_sensor_temperature7, readTemperature(7, val), ACTION_NONE);
default:
return err::kmodule_not_find_config_index;
break;
@ -79,4 +88,15 @@ int32_t ZCanBoardModule::readoutput() {
}
}
return outputval;
}
}
int32_t ZCanBoardModule::readTemperature(int32_t sensorId, int32_t &temperature_val) {
if (sensorId < 0 || sensorId >= ZARRAY_SIZE(temperature_sensor)) {
return err::kmodule_not_find_config_index;
}
if (temperature_sensor[sensorId] == nullptr) {
return err::kmodule_not_find_config_index;
}
return temperature_sensor[sensorId]->getTemperature(temperature_val);
}

8
components/zcancmder/zcan_board_module.hpp

@ -4,6 +4,9 @@
#pragma once
#include "sdk/os/zos.hpp"
//
#include "sdk/chip/api/zi_temperature.hpp"
#include "sdk\chip\api\zi_adc.hpp"
#include "sdk\components\zprotocols\zcancmder_v2\api\api.hpp"
/**
@ -31,6 +34,7 @@ class ZCanBoardModule : public ZIModule {
typedef struct {
ZGPIO::InputGpioCfg_t input[16];
ZGPIO::OutputGpioCfg_t output[16];
ZITemperatureSensor *temperature_sensor[8];
} hardware_config_t;
hardware_config_t m_cfg;
@ -42,6 +46,8 @@ class ZCanBoardModule : public ZIModule {
int32_t m_input_num = 0;
int32_t m_output_num = 0;
ZITemperatureSensor *temperature_sensor[8];
public:
virtual ~ZCanBoardModule() {}
@ -61,6 +67,8 @@ class ZCanBoardModule : public ZIModule {
int32_t module_xxx_reg(int32_t param_id, bool read, int32_t &param_value);
int32_t readinput();
int32_t readoutput();
int32_t readTemperature(int32_t sensorId, int32_t &temperature_val);
};
} // namespace iflytop
Loading…
Cancel
Save