From 6b4c156ae0f3007ff16c9699ca4ef30baf098f91 Mon Sep 17 00:00:00 2001 From: leo Date: Wed, 30 Mar 2022 22:09:02 +0200 Subject: [PATCH] convenience function --- CMakeLists.txt | 4 ++-- include/scd4x_data.h | 5 +++++ scd4x_config.c | 17 +++++++++++++++++ 3 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 scd4x_config.c diff --git a/CMakeLists.txt b/CMakeLists.txt index f42e0da..c60a917 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,3 +1,3 @@ -idf_component_register(SRCS "sensirion_common.c" "sensirion_i2c.c" "sensirion_i2c_hal.c" "scd4x_i2c.c" +idf_component_register(SRCS "sensirion_common.c" "sensirion_i2c.c" "sensirion_i2c_hal.c" "scd4x_i2c.c" "scd4x_config.c" INCLUDE_DIRS "include" - REQUIRES "driver") + REQUIRES driver nvs_flash) diff --git a/include/scd4x_data.h b/include/scd4x_data.h index c8818e7..a3e1bc3 100644 --- a/include/scd4x_data.h +++ b/include/scd4x_data.h @@ -1,6 +1,8 @@ #ifndef SCD4X_DATA_H #define SCD4X_DATA_H +#include "nvs_flash.h" + struct scd4x_data { uint16_t co2; int32_t temperature; @@ -11,7 +13,10 @@ typedef struct scd4x_data scd4x_data_t; struct scd4x_config { scd4x_data_t* measure; uint16_t delay; + uint8_t mode; }; typedef struct scd4x_config scd4x_config_t; +scd4x_config_t* get_sensor_configuration(nvs_handle_t nvs); + #endif diff --git a/scd4x_config.c b/scd4x_config.c new file mode 100644 index 0000000..79fcdb9 --- /dev/null +++ b/scd4x_config.c @@ -0,0 +1,17 @@ +#include "nvs_flash.h" + +#include "scd4x_data.h" + +scd4x_config_t* get_sensor_configuration(nvs_handle_t nvs){ + scd4x_data_t* data = malloc(sizeof(scd4x_data_t)); + uint16_t conf = 0; + ESP_ERROR_CHECK(nvs_get_u16(nvs, "sensor_conf", &conf)); + + scd4x_config_t* config = malloc(sizeof(scd4x_config_t)); + *config = (scd4x_config_t) { + .measure = data, + .delay = (conf >> 2), + .mode = (conf & 0b11) + }; + return config; +}