@@ -80,6 +80,8 @@ static u32_t data_send_interval_s = CONFIG_ENVIRONMENT_DATA_SEND_INTERVAL;
8080static bool backoff_enabled ;
8181static bool initialized ;
8282
83+ static struct k_work_q * env_sensors_work_q ;
84+
8385static int settings_set (const char * key , size_t len_rd ,
8486 settings_read_cb read_cb , void * cb_arg )
8587{
@@ -242,8 +244,9 @@ int env_sensors_get_air_quality(env_sensor_data_t *sensor_data)
242244
243245static inline int submit_poll_work (const u32_t delay_s )
244246{
245- return k_delayed_work_submit (& env_sensors_poller ,
246- K_SECONDS ((u32_t )delay_s ));
247+ return k_delayed_work_submit_to_queue (env_sensors_work_q ,
248+ & env_sensors_poller ,
249+ K_SECONDS ((u32_t )delay_s ));
247250}
248251
249252int env_sensors_poll (void )
@@ -266,11 +269,16 @@ static void env_sensors_poll_fn(struct k_work *work)
266269 CONFIG_ENVIRONMENT_DATA_BACKOFF_TIME : data_send_interval_s );
267270}
268271
269- int env_sensors_init_and_start (const env_sensors_data_ready_cb cb )
272+ int env_sensors_init_and_start (struct k_work_q * work_q ,
273+ const env_sensors_data_ready_cb cb )
270274{
271275 return_values_init bsec_ret ;
272276 int ret ;
273277
278+ if ((work_q == NULL ) || (cb == NULL )) {
279+ return - EINVAL ;
280+ }
281+
274282 i2c_master = device_get_binding ("I2C_2" );
275283 if (!i2c_master ) {
276284 LOG_ERR ("cannot bind to BME680" );
@@ -298,6 +306,8 @@ int env_sensors_init_and_start(const env_sensors_data_ready_cb cb)
298306
299307 data_ready_cb = cb ;
300308
309+ env_sensors_work_q = work_q ;
310+
301311 k_delayed_work_init (& env_sensors_poller , env_sensors_poll_fn );
302312
303313 initialized = true;
0 commit comments