Condition for oscillatord to be initialized properly are too strict, with no pps gnss we are locked in a loop until we have one, so (for instance), as a side effect, oscillatord main loop never start and some of the features aren't working properly, here we noticed that gnss is not connected to shared data exposed by monitoring-socket so ubx data are fetched but monitoring keeps sending dummy/default values.
We need to segregate what's about disciplining, which may indeed stay blocked in init without good conditions, and what's about basic daemon feature (here, monitoring and exposing system status properly), which should always be working even with poor conditions.
To fix GNSS case, a good start could be modifying/moving/deleting the loop (do ... while ...) line 386 in oscillatord.c and adapt the code consequently, there are probably other similar issues in the code.
Condition for oscillatord to be initialized properly are too strict, with no pps gnss we are locked in a loop until we have one, so (for instance), as a side effect, oscillatord main loop never start and some of the features aren't working properly, here we noticed that gnss is not connected to shared data exposed by monitoring-socket so ubx data are fetched but monitoring keeps sending dummy/default values.
We need to segregate what's about disciplining, which may indeed stay blocked in init without good conditions, and what's about basic daemon feature (here, monitoring and exposing system status properly), which should always be working even with poor conditions.
To fix GNSS case, a good start could be modifying/moving/deleting the loop (do ... while ...) line 386 in oscillatord.c and adapt the code consequently, there are probably other similar issues in the code.