Move from has_* to capabilities bits
This commit is contained in:
@ -99,12 +99,12 @@ void mgos_barometer_destroy(struct mgos_barometer **sensor) {
|
|||||||
|
|
||||||
bool mgos_barometer_has_thermometer(struct mgos_barometer *sensor) {
|
bool mgos_barometer_has_thermometer(struct mgos_barometer *sensor) {
|
||||||
if (!sensor) return false;
|
if (!sensor) return false;
|
||||||
return sensor->has_thermometer;
|
return (sensor->capabilities & MGOS_BAROMETER_CAP_THERMOMETER);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool mgos_barometer_has_barometer(struct mgos_barometer *sensor) {
|
bool mgos_barometer_has_barometer(struct mgos_barometer *sensor) {
|
||||||
if (!sensor) return false;
|
if (!sensor) return false;
|
||||||
return sensor->has_barometer;
|
return (sensor->capabilities & MGOS_BAROMETER_CAP_BAROMETER);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool mgos_barometer_read(struct mgos_barometer *sensor) {
|
bool mgos_barometer_read(struct mgos_barometer *sensor) {
|
||||||
|
@ -20,8 +20,10 @@ bool mgos_barometer_bme280_detect(struct mgos_barometer *dev) {
|
|||||||
if (val == 0x58) // Mass production BMP280
|
if (val == 0x58) // Mass production BMP280
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (val == 0x60) // Mass production BME280
|
if (val == 0x60) { // Mass production BME280
|
||||||
|
dev->capabilities|=MGOS_BAROMETER_CAP_HYGROMETER;
|
||||||
return true;
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -52,8 +54,8 @@ bool mgos_barometer_bme280_create(struct mgos_barometer *dev) {
|
|||||||
if (!mgos_i2c_write_reg_b(dev->i2c, dev->i2caddr, BME280_REG_CTRL_MEAS, BME280_MODE_NORMAL | BME280_OVERSAMP_1X << 2 | BME280_OVERSAMP_1X << 5))
|
if (!mgos_i2c_write_reg_b(dev->i2c, dev->i2caddr, BME280_REG_CTRL_MEAS, BME280_MODE_NORMAL | BME280_OVERSAMP_1X << 2 | BME280_OVERSAMP_1X << 5))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
dev->has_barometer=true;
|
dev->capabilities|=MGOS_BAROMETER_CAP_BAROMETER;
|
||||||
dev->has_thermometer=true;
|
dev->capabilities|=MGOS_BAROMETER_CAP_THERMOMETER;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -29,13 +29,17 @@ typedef bool (*mgos_barometer_mag_create_fn)(struct mgos_barometer *dev);
|
|||||||
typedef bool (*mgos_barometer_mag_destroy_fn)(struct mgos_barometer *dev);
|
typedef bool (*mgos_barometer_mag_destroy_fn)(struct mgos_barometer *dev);
|
||||||
typedef bool (*mgos_barometer_mag_read_fn)(struct mgos_barometer *dev);
|
typedef bool (*mgos_barometer_mag_read_fn)(struct mgos_barometer *dev);
|
||||||
|
|
||||||
|
#define MGOS_BAROMETER_CAP_BAROMETER (0x01)
|
||||||
|
#define MGOS_BAROMETER_CAP_THERMOMETER (0x02)
|
||||||
|
#define MGOS_BAROMETER_CAP_HYGROMETER (0x04)
|
||||||
|
|
||||||
struct mgos_barometer {
|
struct mgos_barometer {
|
||||||
struct mgos_i2c * i2c;
|
struct mgos_i2c * i2c;
|
||||||
uint8_t i2caddr;
|
uint8_t i2caddr;
|
||||||
uint16_t cache_ttl_ms;
|
uint16_t cache_ttl_ms;
|
||||||
enum mgos_barometer_type type;
|
enum mgos_barometer_type type;
|
||||||
bool has_thermometer;
|
|
||||||
bool has_barometer;
|
uint8_t capabilities;
|
||||||
|
|
||||||
mgos_barometer_mag_detect_fn detect;
|
mgos_barometer_mag_detect_fn detect;
|
||||||
mgos_barometer_mag_create_fn create;
|
mgos_barometer_mag_create_fn create;
|
||||||
|
@ -28,8 +28,8 @@ bool mgos_barometer_mpl115_create(struct mgos_barometer *dev) {
|
|||||||
mpl115_data->c12=(float)c12/(1<<22);
|
mpl115_data->c12=(float)c12/(1<<22);
|
||||||
dev->user_data=mpl115_data;
|
dev->user_data=mpl115_data;
|
||||||
|
|
||||||
dev->has_barometer=true;
|
dev->capabilities|=MGOS_BAROMETER_CAP_BAROMETER;
|
||||||
dev->has_thermometer=true;
|
dev->capabilities|=MGOS_BAROMETER_CAP_THERMOMETER;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,8 +49,8 @@ bool mgos_barometer_mpl3115_create(struct mgos_barometer *dev) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
dev->has_barometer = true;
|
dev->capabilities|=MGOS_BAROMETER_CAP_BAROMETER;
|
||||||
dev->has_thermometer = true;
|
dev->capabilities|=MGOS_BAROMETER_CAP_THERMOMETER;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user