From 487ac25e494a4be06bcd9a2d934ccb43a90cc17a Mon Sep 17 00:00:00 2001 From: schneider <schneider@blinkenlichts.net> Date: Tue, 28 Apr 2020 19:09:44 +0200 Subject: [PATCH] feat(bsec): Apply default configuration if there is no config file --- epicardium/modules/bsec.c | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/epicardium/modules/bsec.c b/epicardium/modules/bsec.c index b0ed3991..30e83fd7 100644 --- a/epicardium/modules/bsec.c +++ b/epicardium/modules/bsec.c @@ -12,8 +12,13 @@ #include "max32665.h" #include "gcr_regs.h" + +#include <string.h> #include <stdio.h> +// From generic_18v_3s_4d/bsec_serialized_configurations_iaq.c +static const uint8_t bsec_config_generic_18v_3s_4d[454] = {4,7,4,1,61,0,0,0,0,0,0,0,174,1,0,0,48,0,1,0,0,192,168,71,64,49,119,76,0,0,225,68,137,65,0,63,205,204,204,62,0,0,64,63,205,204,204,62,0,0,0,0,216,85,0,100,0,0,0,0,0,0,0,0,28,0,2,0,0,244,1,225,0,25,0,0,128,64,0,0,32,65,144,1,0,0,112,65,0,0,0,63,16,0,3,0,10,215,163,60,10,215,35,59,10,215,35,59,9,0,5,0,0,0,0,0,1,88,0,9,0,7,240,150,61,0,0,0,0,0,0,0,0,28,124,225,61,52,128,215,63,0,0,160,64,0,0,0,0,0,0,0,0,205,204,12,62,103,213,39,62,230,63,76,192,0,0,0,0,0,0,0,0,145,237,60,191,251,58,64,63,177,80,131,64,0,0,0,0,0,0,0,0,93,254,227,62,54,60,133,191,0,0,64,64,12,0,10,0,0,0,0,0,0,0,0,0,229,0,254,0,2,1,5,48,117,100,0,44,1,112,23,151,7,132,3,197,0,92,4,144,1,64,1,64,1,144,1,48,117,48,117,48,117,48,117,100,0,100,0,100,0,48,117,48,117,48,117,100,0,100,0,48,117,48,117,100,0,100,0,100,0,100,0,48,117,48,117,48,117,100,0,100,0,100,0,48,117,48,117,100,0,100,0,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,255,255,255,255,255,255,255,255,220,5,220,5,220,5,255,255,255,255,255,255,220,5,220,5,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,44,1,0,0,0,0,52,233,0,0}; + /**********************************************************************************************************************/ /* header files */ /**********************************************************************************************************************/ @@ -83,12 +88,12 @@ void output_ready( (unsigned int)(breath_voc_equivalent * 1e6)); } -static int bsec_load(char *path, uint8_t *buffer, uint32_t n_buffer) +static uint32_t bsec_load(char *path, uint8_t *buffer, uint32_t n_buffer) { uint32_t len = 0; int fd, res; - printf("BSEC load %s %d\n", path, (int)n_buffer); + printf("BSEC load %s %lu\n", path, n_buffer); if ((fd = epic_file_open(path, "r")) < 0) { printf("Open failed\n"); @@ -107,7 +112,7 @@ static int bsec_load(char *path, uint8_t *buffer, uint32_t n_buffer) goto done; } - if (epic_file_read(fd, buffer, header) != header) { + if (epic_file_read(fd, buffer, header) != (int)header) { printf("Read failed\n"); goto done; } @@ -158,7 +163,7 @@ void state_save(const uint8_t *state_buffer, uint32_t length) goto done; } - if (epic_file_write(fd, state_buffer, header) != header) { + if (epic_file_write(fd, state_buffer, header) != (int)header) { printf("Write failed\n"); goto done; } @@ -198,7 +203,15 @@ i2c_read(uint8_t addr, uint8_t reg, uint8_t *p_buf, uint16_t size) */ uint32_t config_load(uint8_t *config_buffer, uint32_t n_buffer) { - return bsec_load("bsec_iaq.config", config_buffer, n_buffer); + uint32_t len = bsec_load("bsec_iaq.config", config_buffer, n_buffer); + + if (len == 0) { + printf("Using default bsec_config_generic_18v_3s_4d\n"); + len = sizeof(bsec_config_generic_18v_3s_4d); + memcpy(config_buffer, bsec_config_generic_18v_3s_4d, len); + } + + return len; } #if 0 @@ -266,10 +279,12 @@ void vBSECTask(void *pvParameters) ); #endif if (ret.bme680_status) { + printf("bme680 init failed\n"); /* Could not intialize BME680 or BSEC library */ while (1) ; } else if (ret.bsec_status) { + printf("bsec init failed\n"); /* Could not intialize BSEC library */ while (1) ; -- GitLab