Skip to content

Commit

Permalink
Add .clang-format
Browse files Browse the repository at this point in the history
  • Loading branch information
pimvanpelt committed Jan 9, 2020
1 parent 255e2d8 commit 3a8773f
Show file tree
Hide file tree
Showing 11 changed files with 406 additions and 297 deletions.
5 changes: 5 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
BasedOnStyle: Google
AllowShortFunctionsOnASingleLine: false
SpaceAfterCStyleCast: true
PointerBindsToType: false
DerivePointerBinding: false
97 changes: 56 additions & 41 deletions src/barometer_drv.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,65 +17,72 @@
#include "mgos.h"

#ifdef MGOS_HAVE_BAROMETER
#include <math.h>

#include "mgos_barometer.h"
#include "mgos_prometheus_sensors.h"
#include <math.h>

#define NUM_BARO 5
#define NUM_BARO 5
struct mgos_barometer *s_barometer[NUM_BARO];

static void barometer_prometheus_metrics(struct mg_connection *nc, void *user_data) {
static void barometer_prometheus_metrics(struct mg_connection *nc,
void *user_data) {
struct mgos_barometer_stats stats;
float temperature = NAN, humidity = NAN, pressure = NAN;

for (int i = 0; i < NUM_BARO && s_barometer[i]; i++) {
const char *type = mgos_barometer_get_device_name(s_barometer[i]);
const char *type = mgos_barometer_get_name(s_barometer[i]);

if (mgos_barometer_get_temperature(s_barometer[i], &temperature)) {
mgos_prometheus_metrics_printf(nc, GAUGE,
"temperature", "Temperature in Celcius",
"{sensor=\"%d\",type=\"%s\"} %f", i, type, temperature);
mgos_prometheus_metrics_printf(
nc, GAUGE, "temperature", "Temperature in Celcius",
"{sensor=\"%d\",type=\"%s\"} %f", i, type, temperature);
}

if (mgos_barometer_get_pressure(s_barometer[i], &pressure)) {
mgos_prometheus_metrics_printf(nc, GAUGE,
"pressure", "Barometer pressure in Pascals",
"{sensor=\"%d\", type=\"%s\"} %f", i, type, pressure);
mgos_prometheus_metrics_printf(
nc, GAUGE, "pressure", "Barometer pressure in Pascals",
"{sensor=\"%d\", type=\"%s\"} %f", i, type, pressure);
}

if (mgos_barometer_get_humidity(s_barometer[i], &humidity)) {
mgos_prometheus_metrics_printf(nc, GAUGE,
"humidity", "Relative humidity percentage",
"{sensor=\"%d\",type=\"%s\"} %f", i, type, humidity);
mgos_prometheus_metrics_printf(
nc, GAUGE, "humidity", "Relative humidity percentage",
"{sensor=\"%d\",type=\"%s\"} %f", i, type, humidity);
}

if (mgos_barometer_get_stats(s_barometer[i], &stats)) {
mgos_prometheus_metrics_printf(nc, COUNTER,
"sensor_read_total", "Total reads from sensor",
"{sensor=\"%d\",type=\"%s\"} %u", i, type, stats.read);
mgos_prometheus_metrics_printf(nc, COUNTER,
"sensor_read_success_total", "Total successful reads from sensor",
"{sensor=\"%d\",type=\"%s\"} %u", i, type, stats.read_success);
mgos_prometheus_metrics_printf(nc, COUNTER,
"sensor_read_success_cached_total", "Total successful cached reads from sensor",
"{sensor=\"%d\",type=\"%s\"} %u", i, type, stats.read_success_cached);
uint32_t errors = stats.read - stats.read_success - stats.read_success_cached;
mgos_prometheus_metrics_printf(nc, COUNTER,
"sensor_read_error_total", "Total unsuccessful reads from sensor",
"{sensor=\"%d\",type=\"%s\"} %u", i, type, errors);
mgos_prometheus_metrics_printf(nc, COUNTER,
"sensor_read_success_usecs_total", "Total microseconds spent in reads from sensor",
"{sensor=\"%d\",type=\"%s\"} %f", i, type, stats.read_success_usecs);
mgos_prometheus_metrics_printf(
nc, COUNTER, "sensor_read_total", "Total reads from sensor",
"{sensor=\"%d\",type=\"%s\"} %u", i, type, stats.read);
mgos_prometheus_metrics_printf(nc, COUNTER, "sensor_read_success_total",
"Total successful reads from sensor",
"{sensor=\"%d\",type=\"%s\"} %u", i, type,
stats.read_success);
mgos_prometheus_metrics_printf(
nc, COUNTER, "sensor_read_success_cached_total",
"Total successful cached reads from sensor",
"{sensor=\"%d\",type=\"%s\"} %u", i, type, stats.read_success_cached);
uint32_t errors =
stats.read - stats.read_success - stats.read_success_cached;
mgos_prometheus_metrics_printf(nc, COUNTER, "sensor_read_error_total",
"Total unsuccessful reads from sensor",
"{sensor=\"%d\",type=\"%s\"} %u", i, type,
errors);
mgos_prometheus_metrics_printf(
nc, COUNTER, "sensor_read_success_usecs_total",
"Total microseconds spent in reads from sensor",
"{sensor=\"%d\",type=\"%s\"} %f", i, type, stats.read_success_usecs);
}
}

(void)user_data;
(void)humidity;
(void) user_data;
(void) humidity;
}

static void barometer_timer_cb(void *user_data) {
struct mgos_barometer *baro = (struct mgos_barometer *)user_data;
const char * type = mgos_barometer_get_device_name(baro);
struct mgos_barometer *baro = (struct mgos_barometer *) user_data;
const char *type = mgos_barometer_get_name(baro);

float temperature = NAN, humidity = NAN, pressure = NAN;
struct mgos_barometer_stats stats_before, stats_after;
Expand All @@ -88,39 +95,47 @@ static void barometer_timer_cb(void *user_data) {
mgos_barometer_get_stats(baro, &stats_after);

usecs = stats_after.read_success_usecs - stats_before.read_success_usecs;
LOG(LL_INFO, ("%s temperature=%.2fC humidity=%.1f%% pressure=%.0fPa usecs=%u", type, temperature, humidity, pressure, usecs));
LOG(LL_INFO, ("%s temperature=%.2fC humidity=%.1f%% pressure=%.0fPa usecs=%u",
type, temperature, humidity, pressure, usecs));

(void)user_data;
(void) user_data;
}

static struct mgos_barometer *barometer_create(struct mgos_i2c *i2c, uint8_t i2caddr, enum mgos_barometer_type type) {
static struct mgos_barometer *barometer_create(struct mgos_i2c *i2c,
uint8_t i2caddr,
enum mgos_barometer_type type) {
struct mgos_barometer *b;

b = mgos_barometer_create_i2c(i2c, i2caddr, type);
if (!b) {
return NULL;
}
mgos_barometer_set_cache_ttl(b, 1000);
mgos_set_timer(mgos_sys_config_get_sensors_barometer_period() * 1000, true, barometer_timer_cb, b);
mgos_set_timer(mgos_sys_config_get_sensors_barometer_period() * 1000, true,
barometer_timer_cb, b);
return b;
}

void barometer_drv_init() {
int num_baro = 0;

if ((s_barometer[num_baro] = barometer_create(mgos_i2c_get_global(), 0x76, BARO_BME280))) {
if ((s_barometer[num_baro] =
barometer_create(mgos_i2c_get_global(), 0x76, BARO_BME280))) {
num_baro++;
}

if ((s_barometer[num_baro] = barometer_create(mgos_i2c_get_global(), 0x60, BARO_MPL115))) {
if ((s_barometer[num_baro] =
barometer_create(mgos_i2c_get_global(), 0x60, BARO_MPL115))) {
num_baro++;
}

if ((s_barometer[num_baro] = barometer_create(mgos_i2c_get_global(), 0x60, BARO_MPL3115))) {
if ((s_barometer[num_baro] =
barometer_create(mgos_i2c_get_global(), 0x60, BARO_MPL3115))) {
num_baro++;
}

if ((s_barometer[num_baro] = barometer_create(mgos_i2c_get_global(), 0x77, BARO_MS5611))) {
if ((s_barometer[num_baro] =
barometer_create(mgos_i2c_get_global(), 0x77, BARO_MS5611))) {
num_baro++;
}

Expand Down
86 changes: 52 additions & 34 deletions src/bme280_drv.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,11 @@
#include "mgos_bme280.h"
#include "mgos_prometheus_sensors.h"

static struct mgos_bme280 * s_bme280;
static struct mgos_bme280 *s_bme280;
static struct mgos_bme280_data s_bme280_data;

static void bme280_prometheus_metrics(struct mg_connection *nc, void *user_data) {
static void bme280_prometheus_metrics(struct mg_connection *nc,
void *user_data) {
bool bme280;
struct mgos_bme280_stats stats;

Expand All @@ -32,40 +33,50 @@ static void bme280_prometheus_metrics(struct mg_connection *nc, void *user_data)
}
bme280 = mgos_bme280_is_bme280(s_bme280);

mgos_prometheus_metrics_printf(nc, GAUGE,
"pressure", "Barometer pressure in HPa",
"{sensor=\"0\", type=\"BM%s280\"} %f", bme280 ? "E" : "P", s_bme280_data.press);
mgos_prometheus_metrics_printf(nc, GAUGE, "pressure",
"Barometer pressure in HPa",
"{sensor=\"0\", type=\"BM%s280\"} %f",
bme280 ? "E" : "P", s_bme280_data.press);

mgos_prometheus_metrics_printf(nc, GAUGE,
"temperature", "Temperature in Celcius",
"{sensor=\"0\",type=\"BM%s280\"} %f", bme280 ? "E" : "P", s_bme280_data.temp);
mgos_prometheus_metrics_printf(nc, GAUGE, "temperature",
"Temperature in Celcius",
"{sensor=\"0\",type=\"BM%s280\"} %f",
bme280 ? "E" : "P", s_bme280_data.temp);

if (mgos_bme280_is_bme280(s_bme280)) {
mgos_prometheus_metrics_printf(nc, GAUGE,
"humidity", "Relative humidity in percent",
"{sensor=\"0\",type=\"BM%s280\"} %f", bme280 ? "E" : "P", s_bme280_data.humid);
mgos_prometheus_metrics_printf(nc, GAUGE, "humidity",
"Relative humidity in percent",
"{sensor=\"0\",type=\"BM%s280\"} %f",
bme280 ? "E" : "P", s_bme280_data.humid);
}

if (mgos_bme280_getStats(s_bme280, &stats)) {
mgos_prometheus_metrics_printf(nc, COUNTER,
"sensor_read_total", "Total reads from sensor",
"{sensor=\"0\",type=\"BM%s280\"} %u", bme280 ? "E" : "P", stats.read);
mgos_prometheus_metrics_printf(nc, COUNTER,
"sensor_read_success_total", "Total successful reads from sensor",
"{sensor=\"0\",type=\"BM%s280\"} %u", bme280 ? "E" : "P", stats.read_success);
mgos_prometheus_metrics_printf(nc, COUNTER,
"sensor_read_success_cached_total", "Total successful cached reads from sensor",
"{sensor=\"0\",type=\"BM%s280\"} %u", bme280 ? "E" : "P", stats.read_success_cached);
uint32_t errors = stats.read - stats.read_success - stats.read_success_cached;
mgos_prometheus_metrics_printf(nc, COUNTER,
"sensor_read_error_total", "Total unsuccessful reads from sensor",
"{sensor=\"0\",type=\"BM%s280\"} %u", bme280 ? "E" : "P", errors);
mgos_prometheus_metrics_printf(nc, COUNTER,
"sensor_read_success_usecs_total", "Total microseconds spent in reads from sensor",
"{sensor=\"0\",type=\"BM%s280\"} %f", bme280 ? "E" : "P", stats.read_success_usecs);
mgos_prometheus_metrics_printf(
nc, COUNTER, "sensor_read_total", "Total reads from sensor",
"{sensor=\"0\",type=\"BM%s280\"} %u", bme280 ? "E" : "P", stats.read);
mgos_prometheus_metrics_printf(nc, COUNTER, "sensor_read_success_total",
"Total successful reads from sensor",
"{sensor=\"0\",type=\"BM%s280\"} %u",
bme280 ? "E" : "P", stats.read_success);
mgos_prometheus_metrics_printf(
nc, COUNTER, "sensor_read_success_cached_total",
"Total successful cached reads from sensor",
"{sensor=\"0\",type=\"BM%s280\"} %u", bme280 ? "E" : "P",
stats.read_success_cached);
uint32_t errors =
stats.read - stats.read_success - stats.read_success_cached;
mgos_prometheus_metrics_printf(nc, COUNTER, "sensor_read_error_total",
"Total unsuccessful reads from sensor",
"{sensor=\"0\",type=\"BM%s280\"} %u",
bme280 ? "E" : "P", errors);
mgos_prometheus_metrics_printf(
nc, COUNTER, "sensor_read_success_usecs_total",
"Total microseconds spent in reads from sensor",
"{sensor=\"0\",type=\"BM%s280\"} %f", bme280 ? "E" : "P",
stats.read_success_usecs);
}

(void)user_data;
(void) user_data;
}

static void bme280_timer_cb(void *user_data) {
Expand All @@ -79,21 +90,28 @@ static void bme280_timer_cb(void *user_data) {
usecs = stats_after.read_success_usecs - stats_before.read_success_usecs;

if (mgos_bme280_is_bme280(s_bme280)) {
LOG(LL_INFO, ("BME280 sensor=0 humidity=%.2f%% temperature=%.2fC pressure=%.1fHPa usecs=%u", s_bme280_data.humid, s_bme280_data.temp, s_bme280_data.press, usecs));
LOG(LL_INFO,
("BME280 sensor=0 humidity=%.2f%% temperature=%.2fC pressure=%.1fHPa "
"usecs=%u",
s_bme280_data.humid, s_bme280_data.temp, s_bme280_data.press, usecs));
} else {
LOG(LL_INFO, ("BMP280 sensor=0 temperature=%.2fC pressure=%.1fHPa usecs=%u", s_bme280_data.temp, s_bme280_data.press, usecs));
LOG(LL_INFO, ("BMP280 sensor=0 temperature=%.2fC pressure=%.1fHPa usecs=%u",
s_bme280_data.temp, s_bme280_data.press, usecs));
}

(void)user_data;
(void) user_data;
}

void bme280_drv_init() {
s_bme280 = mgos_bme280_i2c_create(mgos_sys_config_get_sensors_bme280_i2caddr());
s_bme280 =
mgos_bme280_i2c_create(mgos_sys_config_get_sensors_bme280_i2caddr());
if (s_bme280) {
mgos_set_timer(mgos_sys_config_get_sensors_bme280_period() * 1000, true, bme280_timer_cb, NULL);
mgos_set_timer(mgos_sys_config_get_sensors_bme280_period() * 1000, true,
bme280_timer_cb, NULL);
mgos_prometheus_metrics_add_handler(bme280_prometheus_metrics, NULL);
} else {
LOG(LL_ERROR, ("Could not create BME280 sensor on I2C address 0x%02x", mgos_sys_config_get_sensors_bme280_i2caddr()));
LOG(LL_ERROR, ("Could not create BME280 sensor on I2C address 0x%02x",
mgos_sys_config_get_sensors_bme280_i2caddr()));
}
}

Expand Down
62 changes: 35 additions & 27 deletions src/ccs811_drv.c
Original file line number Diff line number Diff line change
Expand Up @@ -22,36 +22,41 @@

static struct mgos_ccs811 *s_ccs811;

static void ccs811_prometheus_metrics(struct mg_connection *nc, void *user_data) {
static void ccs811_prometheus_metrics(struct mg_connection *nc,
void *user_data) {
struct mgos_ccs811_stats stats;

mgos_prometheus_metrics_printf(nc, GAUGE,
"eco2", "Effective CO2 in ppm",
"{sensor=\"0\",type=\"CCS811\"} %f", mgos_ccs811_get_eco2(s_ccs811));
mgos_prometheus_metrics_printf(nc, GAUGE,
"tvoc", "Total Volatile Organic Compounds in ppb",
"{sensor=\"0\",type=\"CCS811\"} %f", mgos_ccs811_get_tvoc(s_ccs811));
mgos_prometheus_metrics_printf(nc, GAUGE, "eco2", "Effective CO2 in ppm",
"{sensor=\"0\",type=\"CCS811\"} %f",
mgos_ccs811_get_eco2(s_ccs811));
mgos_prometheus_metrics_printf(
nc, GAUGE, "tvoc", "Total Volatile Organic Compounds in ppb",
"{sensor=\"0\",type=\"CCS811\"} %f", mgos_ccs811_get_tvoc(s_ccs811));

if (mgos_ccs811_getStats(s_ccs811, &stats)) {
mgos_prometheus_metrics_printf(nc, COUNTER,
"sensor_read_total", "Total reads from sensor",
"{sensor=\"0\",type=\"CCS811\"} %u", stats.read);
mgos_prometheus_metrics_printf(nc, COUNTER,
"sensor_read_success_total", "Total successful reads from sensor",
"{sensor=\"0\",type=\"CCS811\"} %u", stats.read_success);
mgos_prometheus_metrics_printf(nc, COUNTER,
"sensor_read_success_cached_total", "Total successful cached reads from sensor",
"{sensor=\"0\",type=\"CCS811\"} %u", stats.read_success_cached);
uint32_t errors = stats.read - stats.read_success - stats.read_success_cached;
mgos_prometheus_metrics_printf(nc, COUNTER,
"sensor_read_error_total", "Total unsuccessful reads from sensor",
mgos_prometheus_metrics_printf(
nc, COUNTER, "sensor_read_total", "Total reads from sensor",
"{sensor=\"0\",type=\"CCS811\"} %u", stats.read);
mgos_prometheus_metrics_printf(nc, COUNTER, "sensor_read_success_total",
"Total successful reads from sensor",
"{sensor=\"0\",type=\"CCS811\"} %u",
stats.read_success);
mgos_prometheus_metrics_printf(
nc, COUNTER, "sensor_read_success_cached_total",
"Total successful cached reads from sensor",
"{sensor=\"0\",type=\"CCS811\"} %u", stats.read_success_cached);
uint32_t errors =
stats.read - stats.read_success - stats.read_success_cached;
mgos_prometheus_metrics_printf(nc, COUNTER, "sensor_read_error_total",
"Total unsuccessful reads from sensor",
"{sensor=\"0\",type=\"CCS811\"} %u", errors);
mgos_prometheus_metrics_printf(nc, COUNTER,
"sensor_read_success_usecs_total", "Total microseconds spent in reads from sensor",
"{sensor=\"0\",type=\"CCS811\"} %f", stats.read_success_usecs);
mgos_prometheus_metrics_printf(
nc, COUNTER, "sensor_read_success_usecs_total",
"Total microseconds spent in reads from sensor",
"{sensor=\"0\",type=\"CCS811\"} %f", stats.read_success_usecs);
}

(void)user_data;
(void) user_data;
}

static void ccs811_timer_cb(void *user_data) {
Expand All @@ -65,15 +70,18 @@ static void ccs811_timer_cb(void *user_data) {
mgos_ccs811_getStats(s_ccs811, &stats_after);

usecs = stats_after.read_success_usecs - stats_before.read_success_usecs;
LOG(LL_INFO, ("CCS811 sensor=0 eCO2=%.0fppm TVOC=%.0fppb usecs=%u", eco2, tvoc, usecs));
LOG(LL_INFO, ("CCS811 sensor=0 eCO2=%.0fppm TVOC=%.0fppb usecs=%u", eco2,
tvoc, usecs));

(void)user_data;
(void) user_data;
}

void ccs811_drv_init() {
s_ccs811 = mgos_ccs811_create(mgos_i2c_get_global(), mgos_sys_config_get_sensors_ccs811_i2caddr());
s_ccs811 = mgos_ccs811_create(mgos_i2c_get_global(),
mgos_sys_config_get_sensors_ccs811_i2caddr());
if (s_ccs811) {
mgos_set_timer(mgos_sys_config_get_sensors_ccs811_period() * 1000, true, ccs811_timer_cb, NULL);
mgos_set_timer(mgos_sys_config_get_sensors_ccs811_period() * 1000, true,
ccs811_timer_cb, NULL);
mgos_prometheus_metrics_add_handler(ccs811_prometheus_metrics, NULL);
}
}
Expand Down
Loading

0 comments on commit 3a8773f

Please sign in to comment.