I am trying to run the bsec library in combination with an http server, but the bsec library for the bme680 overrules the standard while(1) loop which I want to use to poll the request to the server. The problem when polling the server in the write output function is that it takes a while before the response.
Can I use the bsec library for the bme680 in a mbed+rtos configuration or is it not thread save? If it is not thread save I there a possiblity?
Solved! Go to Solution.
In bsec_integration.c sample code, the while(1) loop in bsec_iot_loop() provides an example of implementation of the library's workflow. The blocking period (sleep() in the example) could alternatively be used to complete other tasks.
If we take a look at the implementation of the BSEC Arduino library, the run() function is non-blocking, and calling BSEC only if the expected period was elapsed since the previous call. Could such a method be implemented in your project to cover both http polling and BSEC in a single loop? The only requirement for BSEC to run properly would be that the next run() call should happen within the expected sampling period (i.e. the http polling should not be blocking either).
If the above doesn't cover your use-case, feel free to share some code snippet if possible to have a deep look.