Browse Source

update

master
zhaohe 1 year ago
parent
commit
78f92f9c25
  1. 19
      components/sensors/tmp117/tmp117.cpp
  2. 6
      components/sensors/tmp117/tmp117.hpp

19
components/sensors/tmp117/tmp117.cpp

@ -17,15 +17,17 @@ using namespace iflytop;
TMP117::TMP117(/* args */) {}
TMP117::~TMP117() {}
void TMP117::initializate(I2C_HandleTypeDef* i2c, ID_t id) {
void TMP117::initializate(I2C_HandleTypeDef* i2c, i2c_reset_cb_t i2cResetCb, ID_t id) {
m_i2c = i2c;
m_id = id;
m_lastCallStatus = HAL_OK;
m_i2cResetCb = i2cResetCb;
setConfiguration(0x0220);
setTemperatureOffset(0x0000);
}
m_isOnlineWhenPowerOn = isOnline();
}
bool TMP117::isOnline() {
getTemperature();
return m_lastCallStatus == HAL_OK;
@ -46,7 +48,6 @@ const char* TMP117::getLastCallStatusString() {
return "UNKNOWN";
}
}
float TMP117::getTemperature() {
uint16_t ret = 0;
readreg(TemperatureRegister, (uint16_t*)&ret);
@ -74,13 +75,12 @@ bool TMP117::writereg(uint8_t regoff, uint16_t data) {
suc = _writereg(regoff, data);
if (suc) break;
/**
* @brief
* TODO
* 305s左右I2C之后可以恢复正常
* I2C来解决这个问题
*/
ZLOGW(TAG, "writereg fail, reset i2c");
HAL_I2C_DeInit(m_i2c);
HAL_I2C_Init(m_i2c);
// ZLOGW(TAG, "writereg fail, reset i2c");
if (m_i2cResetCb) m_i2cResetCb();
}
HAL_Delay(1);
return suc;
@ -91,12 +91,11 @@ bool TMP117::readreg(uint8_t regoff, uint16_t* data) {
suc = _readreg(regoff, data);
if (suc) break;
/**
* @brief
* TODO
* 305s左右I2C之后可以恢复正常
* I2C来解决这个问题
*/
HAL_I2C_DeInit(m_i2c);
HAL_I2C_Init(m_i2c);
if (m_i2cResetCb) m_i2cResetCb();
}
HAL_Delay(1);
return suc;

6
components/sensors/tmp117/tmp117.hpp

@ -20,6 +20,8 @@
#ifdef HAL_I2C_MODULE_ENABLED
namespace iflytop {
typedef void (*i2c_reset_cb_t)();
class TMP117 : public ZITemperatureSensor {
public:
typedef enum {
@ -50,6 +52,8 @@ class TMP117 : public ZITemperatureSensor {
ID_t m_id;
HAL_StatusTypeDef m_lastCallStatus;
i2c_reset_cb_t m_i2cResetCb;
bool m_isOnlineWhenPowerOn = false;
public:
TMP117(/* args */);
@ -61,7 +65,7 @@ class TMP117 : public ZITemperatureSensor {
* @param i2c
* @param id
*/
void initializate(I2C_HandleTypeDef* i2c, ID_t id);
void initializate(I2C_HandleTypeDef* i2c, i2c_reset_cb_t i2cResetCb, ID_t id);
/**
* @brief

Loading…
Cancel
Save