Does your clock time have 32 bits output or 64 bits?
its 32 bits -> type is uint32_t
get_timestamp_us is micro second unit. Why did you multiply 1000000 and devide clock_second?
the output of clock_time is the system time in ticks, not ms or us which is why I've had to divide by CLOCK_SECOND which converts to s, and multiply before the divide to not lose resolution and get us.
If you don't have any system clock which is 64 bits, need to make it your own timestamp.
Since, BSEC library checks it how long it BME688 can sleep.
I managed to fix the problem, the cause was that I had divided by 128 to get the clock in seconds BEFORE i cast to int64_t. Casting afterwards allowed the clock the manage its max value as it normally would do. In other words, because the clock never reached the max value of a uint32_t the clock never knew it had reset.
The sensor takes 10 or so minutes but it seems to be getting accuracy readings now (1/2/3) which is great.
Thanks for your help Minhwan walking through the steps.