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

6
components/sensors/tmp117/tmp117.hpp

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

Loading…
Cancel
Save