diff --git a/include/impl/user_ccs811_impl.h b/include/impl/user_ccs811_impl.h index 4e5dd1d..ed0c45e 100644 --- a/include/impl/user_ccs811_impl.h +++ b/include/impl/user_ccs811_impl.h @@ -24,4 +24,6 @@ ccs811_ret_t user_ccs811_impl_read_register_cb(user_ccs811_impl_t *impl, ccs811_ret_t user_ccs811_impl_write_register_cb(user_ccs811_impl_t *impl, uint8_t reg, uint8_t *data, uint8_t len); +ccs811_ret_t user_ccs811_impl_delay_ms_cb(user_ccs811_impl_t *impl, uint32_t delay_ms); + #endif \ No newline at end of file diff --git a/lib/ccs811_tvoc/ccs811_tvoc.c b/lib/ccs811_tvoc/ccs811_tvoc.c index ba2b41a..991d2ce 100644 --- a/lib/ccs811_tvoc/ccs811_tvoc.c +++ b/lib/ccs811_tvoc/ccs811_tvoc.c @@ -5,7 +5,7 @@ ccs811_ret_t _ccs811_app_start(ccs811_t *ccs); ccs811_ret_t _ccs811_set_mode(ccs811_t *ccs, uint8_t mode); -ccs811_ret_t ccs811_init(ccs811_t *ccs, uint8_t addr, void *arg) { +ccs811_ret_t ccs811_init(ccs811_t *ccs) { if(_ccs811_sw_reset(ccs) == CCS_FAIL) return CCS_FAIL; ccs->cb.delay_ms_cb(ccs->user_data, 5); if(_ccs811_app_start(ccs) == CCS_FAIL) return CCS_FAIL; diff --git a/lib/ccs811_tvoc/ccs811_tvoc.h b/lib/ccs811_tvoc/ccs811_tvoc.h index 4b67bf1..24878fe 100644 --- a/lib/ccs811_tvoc/ccs811_tvoc.h +++ b/lib/ccs811_tvoc/ccs811_tvoc.h @@ -14,7 +14,6 @@ typedef struct { } ccs811_result_t; typedef struct { - ccs811_ret_t (*set_nwake_cb)(void *handle, uint8_t is_awake); ccs811_ret_t (*delay_ms_cb)(void *handle, uint32_t msec); ccs811_ret_t (*read_register_cb)(void *handle, uint8_t reg, uint8_t *data, uint8_t len); ccs811_ret_t (*write_register_cb)(void *handle, uint8_t reg, uint8_t *data, uint8_t len); @@ -26,7 +25,7 @@ typedef struct { ccs811_cb_t cb; } ccs811_t; -ccs811_ret_t ccs811_init(ccs811_t *ccs, uint8_t addr, void *arg); +ccs811_ret_t ccs811_init(ccs811_t *ccs); ccs811_ret_t ccs811_set_env_data(ccs811_t *ccs, double temperature, double humidity); ccs811_ret_t ccs811_read_baseline(ccs811_t *ccs, uint8_t *baseline); ccs811_ret_t ccs811_store_baseline(ccs811_t *ccs, uint8_t *baseline); diff --git a/misc/agent_config.cfg.example b/misc/agent_config.cfg.example index afe9c8a..3c4efed 100644 --- a/misc/agent_config.cfg.example +++ b/misc/agent_config.cfg.example @@ -16,10 +16,10 @@ agent: { tvoc: { i2c: { path = "/dev/i2c-1"; - addr = 0x58; + addr = 0x5a; }; nwake_pin: { - path = "/dev/i2c-1"; + path = "/dev/gpiochip1"; line = 5; }; }; diff --git a/misc/agent_config.cfg.pine64 b/misc/agent_config.cfg.pine64 index ea82ea3..3baf1a8 100644 --- a/misc/agent_config.cfg.pine64 +++ b/misc/agent_config.cfg.pine64 @@ -15,10 +15,10 @@ agent: { tvoc: { i2c: { path = "/dev/i2c-1"; - addr = 0x58; + addr = 0x5a; }; nwake_pin: { - path = "/dev/i2c-1"; + path = "/dev/gpiochip1"; line = 5; }; }; diff --git a/misc/agent_config.cfg.rpi4 b/misc/agent_config.cfg.rpi4 index b4538dd..bac9e2f 100644 --- a/misc/agent_config.cfg.rpi4 +++ b/misc/agent_config.cfg.rpi4 @@ -15,11 +15,11 @@ agent: { tvoc: { i2c: { path = "/dev/i2c-1"; - addr = 0x58; + addr = 0x5a; }; nwake_pin: { - path = "/dev/i2c-1"; - line = 5; + path = "/dev/gpiochip0"; + line = 6; }; }; diff --git a/src/impl/user_ccs811_impl.c b/src/impl/user_ccs811_impl.c index 8c76a6d..ec46f81 100644 --- a/src/impl/user_ccs811_impl.c +++ b/src/impl/user_ccs811_impl.c @@ -99,6 +99,11 @@ ccs811_ret_t user_ccs811_impl_read_register_cb(user_ccs811_impl_t *impl, return CCS_FAIL; } + USER_LOG(USER_LOG_DEBUG, "I2C register read: reg=%d, len=%d", reg, len); + for(uint8_t i = 0; i < len; i++) { + USER_LOG(USER_LOG_DEBUG, "I2C register read: reg=%d, data=0x%02x", reg, data[i]); + } + return CCS_OK; } @@ -120,6 +125,8 @@ ccs811_ret_t user_ccs811_impl_write_register_cb(user_ccs811_impl_t *impl, ret = CCS_FAIL; } + USER_LOG(USER_LOG_DEBUG, "I2C register write: reg=%d", reg); + free(tx_buf); return ret; diff --git a/src/tasks/user_tvoc_task.c b/src/tasks/user_tvoc_task.c index 8fd1162..b8712a9 100644 --- a/src/tasks/user_tvoc_task.c +++ b/src/tasks/user_tvoc_task.c @@ -23,11 +23,34 @@ int user_tvoc_task_deinit(void) { } void *user_tvoc_task(void *arguments) { + + user_ccs811_impl_t impl; + + user_ccs811_impl_init(&impl); + + ccs811_t ccs = { + .cb = + { + .write_register_cb = (ccs811_ret_t (*)(void *, uint8_t, uint8_t *, uint8_t))user_ccs811_impl_write_register_cb, + .read_register_cb = (ccs811_ret_t(*)(void *, uint8_t, uint8_t *, uint8_t))user_ccs811_impl_read_register_cb, + .delay_ms_cb = (ccs811_ret_t (*)(void *, uint32_t))user_ccs811_impl_delay_ms_cb, + }, + .user_data = &impl, + }; + + ccs811_init(&ccs); + ccs811_set_env_data(&ccs, 26.000, 40.000); + while(g_running && !g_lvgl_ready) { sleep(1); } while(g_running) { + ccs811_result_t result; + ccs811_measure(&ccs, &result); + USER_LOG(USER_LOG_INFO, "CCS: %d, %d", result.eco2, result.tvoc); sleep(1); } + + user_ccs811_impl_deinit(&impl); } diff --git a/src/utils/user_log_util.c b/src/utils/user_log_util.c index 815d928..d0b1dc7 100644 --- a/src/utils/user_log_util.c +++ b/src/utils/user_log_util.c @@ -45,6 +45,7 @@ void user_log_print(user_log_level_t level, char *fmt, ...) { fprintf(stderr, "[% 9d]%s ", time(NULL), level_str); vfprintf(stderr, fmt, args); fprintf(stderr, "\n"); + fflush(stderr); va_end(args); }