Added option to set i2c address in measure...Once in lib

This commit is contained in:
Robert Jaakke 2020-06-10 10:03:02 +02:00
parent 9d2d22558c
commit 325564fbc7
3 changed files with 48 additions and 8 deletions

View File

@ -183,7 +183,23 @@ int16_t LOLIN_HP303B::standby(void)
*/
int16_t LOLIN_HP303B::measureTempOnce(float &result)
{
return measureTempOnce(result, m_tempOsr);
return measureTempOnce(result, m_slaveAddress, m_tempOsr);
}
/**
* performs one temperature measurement and writes result to the given address
*
* &result: reference to a 32-Bit signed Integer value where the result will be written
* It will not be written if result==NULL
* returns: 0 on success
* -4 if the HP303B is could not finish its measurement in time
* -3 if the HP303B is already busy
* -2 if the object initialization failed
* -1 on other fail
*/
int16_t LOLIN_HP303B::measureTempOnce(float &result, uint8_t slaveAddress)
{
return measureTempOnce(result, slaveAddress, m_tempOsr);
}
/**
@ -202,8 +218,11 @@ int16_t LOLIN_HP303B::measureTempOnce(float &result)
* -2 if the object initialization failed
* -1 on other fail
*/
int16_t LOLIN_HP303B::measureTempOnce(float &result, uint8_t oversamplingRate)
int16_t LOLIN_HP303B::measureTempOnce(float &result, uint8_t slaveAddress, uint8_t oversamplingRate)
{
//Set I2C bus connection
m_slaveAddress = slaveAddress;
//Start measurement
int16_t ret = startMeasureTempOnce(oversamplingRate);
if(ret!=HP303B__SUCCEEDED)
@ -288,7 +307,23 @@ int16_t LOLIN_HP303B::startMeasureTempOnce(uint8_t oversamplingRate)
*/
int16_t LOLIN_HP303B::measurePressureOnce(float &result)
{
return measurePressureOnce(result, m_prsOsr);
return measurePressureOnce(result, m_slaveAddress, m_prsOsr);
}
/**
* performs one pressure measurement and writes result to the given address
*
* &result: reference to a 32-Bit signed Integer value where the result will be written
* It will not be written if result==NULL
* returns: 0 on success
* -4 if the HP303B is could not finish its measurement in time
* -3 if the HP303B is already busy
* -2 if the object initialization failed
* -1 on other fail
*/
int16_t LOLIN_HP303B::measurePressureOnce(float &result, uint8_t slaveAddress)
{
return measurePressureOnce(result, slaveAddress, m_prsOsr);
}
/**
@ -307,8 +342,11 @@ int16_t LOLIN_HP303B::measurePressureOnce(float &result)
* -2 if the object initialization failed
* -1 on other fail
*/
int16_t LOLIN_HP303B::measurePressureOnce(float &result, uint8_t oversamplingRate)
int16_t LOLIN_HP303B::measurePressureOnce(float &result, uint8_t slaveAddress, uint8_t oversamplingRate)
{
//Set I2C bus connection
m_slaveAddress = slaveAddress;
//start the measurement
int16_t ret = startMeasurePressureOnce(oversamplingRate);
if(ret != HP303B__SUCCEEDED)

View File

@ -35,11 +35,13 @@ public:
//Command Mode
int16_t measureTempOnce(float &result);
int16_t measureTempOnce(float &result, uint8_t oversamplingRate);
int16_t measureTempOnce(float &result, uint8_t slaveAddress);
int16_t measureTempOnce(float &result, uint8_t slaveAddress, uint8_t oversamplingRate);
int16_t startMeasureTempOnce(void);
int16_t startMeasureTempOnce(uint8_t oversamplingRate);
int16_t measurePressureOnce(float &result);
int16_t measurePressureOnce(float &result, uint8_t oversamplingRate);
int16_t measurePressureOnce(float &result, uint8_t slaveAddress);
int16_t measurePressureOnce(float &result, uint8_t slaveAddress, uint8_t oversamplingRate);
int16_t startMeasurePressureOnce(void);
int16_t startMeasurePressureOnce(uint8_t oversamplingRate);
int16_t getSingleResult(float &result);

View File

@ -58,11 +58,11 @@ bool HP303B_Read(uint8_t hp303b_idx)
float p;
int16_t ret;
ret = HP303BSensor.measureTempOnce(t, hp303b_cfg.oversampling);
ret = HP303BSensor.measureTempOnce(t, hp303b_sensor[hp303b_idx].address, hp303b_cfg.oversampling);
if (ret != 0)
return false;
ret = HP303BSensor.measurePressureOnce(p, hp303b_cfg.oversampling);
ret = HP303BSensor.measurePressureOnce(p, hp303b_sensor[hp303b_idx].address, hp303b_cfg.oversampling);
if (ret != 0)
return false;