nfc_worker.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #pragma once
  2. #include "nfc_device.h"
  3. typedef struct NfcWorker NfcWorker;
  4. typedef enum {
  5. // Init states
  6. NfcWorkerStateNone,
  7. NfcWorkerStateBroken,
  8. NfcWorkerStateReady,
  9. // Main worker states
  10. NfcWorkerStateRead,
  11. NfcWorkerStateUidEmulate,
  12. NfcWorkerStateMfUltralightEmulate,
  13. NfcWorkerStateMfClassicEmulate,
  14. NfcWorkerStateMfClassicUserDictAttack,
  15. NfcWorkerStateMfClassicFlipperDictAttack,
  16. // Debug
  17. NfcWorkerStateEmulateApdu,
  18. NfcWorkerStateField,
  19. // Transition
  20. NfcWorkerStateStop,
  21. } NfcWorkerState;
  22. typedef enum {
  23. // Reserve first 50 events for application events
  24. NfcWorkerEventReserved = 50,
  25. // Nfc read events
  26. NfcWorkerEventReadUidNfcB,
  27. NfcWorkerEventReadUidNfcV,
  28. NfcWorkerEventReadUidNfcF,
  29. NfcWorkerEventReadUidNfcA,
  30. NfcWorkerEventReadMfUltralight,
  31. NfcWorkerEventReadMfDesfire,
  32. NfcWorkerEventReadMfClassicDone,
  33. NfcWorkerEventReadMfClassicLoadKeyCache,
  34. NfcWorkerEventReadMfClassicDictAttackRequired,
  35. NfcWorkerEventReadBankCard,
  36. // Nfc worker common events
  37. NfcWorkerEventSuccess,
  38. NfcWorkerEventFail,
  39. NfcWorkerEventAborted,
  40. NfcWorkerEventCardDetected,
  41. NfcWorkerEventNoCardDetected,
  42. // Mifare Classic events
  43. NfcWorkerEventNoDictFound,
  44. NfcWorkerEventNewSector,
  45. NfcWorkerEventFoundKeyA,
  46. NfcWorkerEventFoundKeyB,
  47. } NfcWorkerEvent;
  48. typedef bool (*NfcWorkerCallback)(NfcWorkerEvent event, void* context);
  49. NfcWorker* nfc_worker_alloc();
  50. NfcWorkerState nfc_worker_get_state(NfcWorker* nfc_worker);
  51. void nfc_worker_free(NfcWorker* nfc_worker);
  52. void nfc_worker_start(
  53. NfcWorker* nfc_worker,
  54. NfcWorkerState state,
  55. NfcDeviceData* dev_data,
  56. NfcWorkerCallback callback,
  57. void* context);
  58. void nfc_worker_stop(NfcWorker* nfc_worker);