ublox_worker.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #pragma once
  2. #include "ublox_device.h"
  3. typedef struct UbloxWorker UbloxWorker;
  4. typedef enum {
  5. UbloxWorkerStateNone,
  6. UbloxWorkerStateReady,
  7. UbloxWorkerStateRead,
  8. UbloxWorkerStateSyncTime,
  9. UbloxWorkerStateResetOdometer,
  10. UbloxWorkerStateStop,
  11. } UbloxWorkerState;
  12. typedef enum {
  13. // reserve space for application events
  14. UbloxWorkerEventReserved = 50,
  15. UbloxWorkerEventSuccess,
  16. UbloxWorkerEventFailed,
  17. UbloxWorkerEventDataReady,
  18. UbloxWorkerEventOdoReset,
  19. // specific event to update the screen on log state changed
  20. UbloxWorkerEventLogStateChanged,
  21. } UbloxWorkerEvent;
  22. typedef void (*UbloxWorkerCallback)(UbloxWorkerEvent event, void* context);
  23. UbloxWorker* ublox_worker_alloc();
  24. UbloxWorkerState ublox_worker_get_state(UbloxWorker* ublox_worker);
  25. void ublox_worker_free(UbloxWorker* ublox_worker);
  26. void ublox_worker_start(
  27. UbloxWorker* ublox_worker,
  28. UbloxWorkerState state,
  29. UbloxWorkerCallback callback,
  30. void* context);
  31. void ublox_worker_stop(UbloxWorker* ublox_worker);
  32. UbloxMessage* ublox_worker_i2c_transfer(UbloxMessage* message_tx, uint8_t read_length);
  33. bool ublox_worker_init_gps();
  34. void ublox_worker_read_nav_messages(void* context);
  35. void ublox_worker_sync_to_gps_time(void* context);