generate_totp_code.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. #pragma once
  2. #include <stdlib.h>
  3. #include <furi/core/mutex.h>
  4. #include "../../types/token_info.h"
  5. typedef uint8_t TotpGenerateCodeWorkerEvent;
  6. typedef void (*TOTP_NEW_CODE_GENERATED_HANDLER)(bool time_left, void* context);
  7. typedef void (*TOTP_CODE_LIFETIME_CHANGED_HANDLER)(float code_lifetime_percent, void* context);
  8. typedef struct TotpGenerateCodeWorkerContext TotpGenerateCodeWorkerContext;
  9. enum TotGenerateCodeWorkerEvents {
  10. TotpGenerateCodeWorkerEventReserved = 0b00,
  11. TotpGenerateCodeWorkerEventStop = 0b01,
  12. TotpGenerateCodeWorkerEventForceUpdate = 0b10
  13. };
  14. TotpGenerateCodeWorkerContext* totp_generate_code_worker_start(
  15. char* code_buffer,
  16. const TokenInfo* token_info,
  17. FuriMutex* code_buffer_sync,
  18. float timezone_offset,
  19. uint8_t* iv);
  20. void totp_generate_code_worker_stop(TotpGenerateCodeWorkerContext* context);
  21. void totp_generate_code_worker_notify(
  22. TotpGenerateCodeWorkerContext* context,
  23. TotpGenerateCodeWorkerEvent event);
  24. void totp_generate_code_worker_set_code_generated_handler(
  25. TotpGenerateCodeWorkerContext* context,
  26. TOTP_NEW_CODE_GENERATED_HANDLER on_new_code_generated_handler,
  27. void* on_new_code_generated_handler_context);
  28. void totp_generate_code_worker_set_lifetime_changed_handler(
  29. TotpGenerateCodeWorkerContext* context,
  30. TOTP_CODE_LIFETIME_CHANGED_HANDLER on_code_lifetime_changed_handler,
  31. void* on_code_lifetime_changed_handler_context);