forked from adafruit/Adafruit_BMP085_Unified
Converted to C++ and esp-idf
This commit is contained in:
@@ -41,6 +41,8 @@
|
|||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
|
#include <espchrono.h>
|
||||||
|
|
||||||
#include "Adafruit_BMP085_U.h"
|
#include "Adafruit_BMP085_U.h"
|
||||||
|
|
||||||
static bmp085_calib_data
|
static bmp085_calib_data
|
||||||
@@ -253,8 +255,9 @@ Adafruit_BMP085_Unified::Adafruit_BMP085_Unified(int32_t sensorID) {
|
|||||||
@brief Setups the HW
|
@brief Setups the HW
|
||||||
*/
|
*/
|
||||||
/**************************************************************************/
|
/**************************************************************************/
|
||||||
bool Adafruit_BMP085_Unified::begin(bmp085_mode_t mode) {
|
bool Adafruit_BMP085_Unified::begin(bool skipWireBegin, bmp085_mode_t mode) {
|
||||||
// Enable I2C
|
// Enable I2C
|
||||||
|
if (!skipWireBegin)
|
||||||
Wire.begin();
|
Wire.begin();
|
||||||
|
|
||||||
/* Mode boundary check */
|
/* Mode boundary check */
|
||||||
@@ -440,20 +443,21 @@ float Adafruit_BMP085_Unified::seaLevelForAltitude(float altitude,
|
|||||||
@brief Provides the sensor_t data for this sensor
|
@brief Provides the sensor_t data for this sensor
|
||||||
*/
|
*/
|
||||||
/**************************************************************************/
|
/**************************************************************************/
|
||||||
void Adafruit_BMP085_Unified::getSensor(sensor_t *sensor) {
|
sensor_t Adafruit_BMP085_Unified::getSensor() {
|
||||||
/* Clear the sensor_t object */
|
sensor_t sensor;
|
||||||
memset(sensor, 0, sizeof(sensor_t));
|
|
||||||
|
|
||||||
/* Insert the sensor name in the fixed length char array */
|
/* Insert the sensor name in the fixed length char array */
|
||||||
strncpy(sensor->name, "BMP085", sizeof(sensor->name) - 1);
|
strncpy(sensor.name, "BMP085", sizeof(sensor.name) - 1);
|
||||||
sensor->name[sizeof(sensor->name) - 1] = 0;
|
sensor.name[sizeof(sensor.name) - 1] = 0;
|
||||||
sensor->version = 1;
|
|
||||||
sensor->sensor_id = _sensorID;
|
sensor.version = 1;
|
||||||
sensor->type = SENSOR_TYPE_PRESSURE;
|
sensor.sensor_id = _sensorID;
|
||||||
sensor->min_delay = 0;
|
sensor.type = SENSOR_TYPE_PRESSURE;
|
||||||
sensor->max_value = 1100.0F; // 300..1100 hPa
|
sensor.min_delay = 0;
|
||||||
sensor->min_value = 300.0F;
|
sensor.max_value = 1100.0F; // 300..1100 hPa
|
||||||
sensor->resolution = 0.01F; // Datasheet states 0.01 hPa resolution
|
sensor.min_value = 300.0F;
|
||||||
|
sensor.resolution = 0.01F; // Datasheet states 0.01 hPa resolution
|
||||||
|
return sensor;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**************************************************************************/
|
/**************************************************************************/
|
||||||
@@ -461,18 +465,19 @@ void Adafruit_BMP085_Unified::getSensor(sensor_t *sensor) {
|
|||||||
@brief Reads the sensor and returns the data as a sensors_event_t
|
@brief Reads the sensor and returns the data as a sensors_event_t
|
||||||
*/
|
*/
|
||||||
/**************************************************************************/
|
/**************************************************************************/
|
||||||
bool Adafruit_BMP085_Unified::getEvent(sensors_event_t *event) {
|
std::optional<sensors_event_t> Adafruit_BMP085_Unified::getEvent() {
|
||||||
|
sensors_event_t event;
|
||||||
|
|
||||||
|
event.version = sizeof(sensors_event_t);
|
||||||
|
event.sensor_id = _sensorID;
|
||||||
|
event.type = SENSOR_TYPE_PRESSURE;
|
||||||
|
event.timestamp = espchrono::millis_clock::now();
|
||||||
|
|
||||||
|
{
|
||||||
float pressure_kPa;
|
float pressure_kPa;
|
||||||
|
|
||||||
/* Clear the event */
|
|
||||||
memset(event, 0, sizeof(sensors_event_t));
|
|
||||||
|
|
||||||
event->version = sizeof(sensors_event_t);
|
|
||||||
event->sensor_id = _sensorID;
|
|
||||||
event->type = SENSOR_TYPE_PRESSURE;
|
|
||||||
event->timestamp = 0;
|
|
||||||
getPressure(&pressure_kPa);
|
getPressure(&pressure_kPa);
|
||||||
event->pressure = pressure_kPa / 100.0F;
|
event.pressure = pressure_kPa / 100.0F;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return event;
|
||||||
}
|
}
|
||||||
|
@@ -93,7 +93,7 @@ public:
|
|||||||
* @param mode Mode to set, ultra high-res by default
|
* @param mode Mode to set, ultra high-res by default
|
||||||
* @return Returns true if successful
|
* @return Returns true if successful
|
||||||
*/
|
*/
|
||||||
bool begin(bmp085_mode_t mode = BMP085_MODE_ULTRAHIGHRES);
|
bool begin(bool skipWireBegin = false, bmp085_mode_t mode = BMP085_MODE_ULTRAHIGHRES);
|
||||||
/*!
|
/*!
|
||||||
* @brief Gets the temperature over I2C from the BMP085
|
* @brief Gets the temperature over I2C from the BMP085
|
||||||
* @param temp Temperature
|
* @param temp Temperature
|
||||||
@@ -143,8 +143,8 @@ public:
|
|||||||
* @brief Used to read the sensor
|
* @brief Used to read the sensor
|
||||||
* @return Returns an event
|
* @return Returns an event
|
||||||
*/
|
*/
|
||||||
bool getEvent(sensors_event_t *);
|
std::optional<sensors_event_t> getEvent() override;
|
||||||
void getSensor(sensor_t *);
|
sensor_t getSensor() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int32_t computeB5(int32_t ut);
|
int32_t computeB5(int32_t ut);
|
||||||
|
32
CMakeLists.txt
Normal file
32
CMakeLists.txt
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
set(headers
|
||||||
|
Adafruit_BMP085_U.h
|
||||||
|
)
|
||||||
|
|
||||||
|
set(sources
|
||||||
|
Adafruit_BMP085_U.cpp
|
||||||
|
)
|
||||||
|
|
||||||
|
set(dependencies
|
||||||
|
arduino-esp32
|
||||||
|
Adafruit_Sensor
|
||||||
|
)
|
||||||
|
|
||||||
|
idf_component_register(
|
||||||
|
INCLUDE_DIRS
|
||||||
|
.
|
||||||
|
SRCS
|
||||||
|
${headers}
|
||||||
|
${sources}
|
||||||
|
REQUIRES
|
||||||
|
${dependencies}
|
||||||
|
)
|
||||||
|
|
||||||
|
target_compile_options(${COMPONENT_TARGET}
|
||||||
|
PRIVATE
|
||||||
|
-fstack-reuse=all
|
||||||
|
-fstack-protector-all
|
||||||
|
-Wno-unused-function
|
||||||
|
-Wno-deprecated-declarations
|
||||||
|
-Wno-missing-field-initializers
|
||||||
|
-Wno-parentheses
|
||||||
|
)
|
Reference in New Issue
Block a user