common.c 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #include "common.h"
  2. #include <furi/furi.h>
  3. #include <furi_hal.h>
  4. #include "../../services/convert/convert.h"
  5. static const uint8_t hid_number_keys[10] = {
  6. HID_KEYBOARD_0,
  7. HID_KEYBOARD_1,
  8. HID_KEYBOARD_2,
  9. HID_KEYBOARD_3,
  10. HID_KEYBOARD_4,
  11. HID_KEYBOARD_5,
  12. HID_KEYBOARD_6,
  13. HID_KEYBOARD_7,
  14. HID_KEYBOARD_8,
  15. HID_KEYBOARD_9};
  16. void totp_type_code_worker_execute_automation(
  17. TOTP_AUTOMATION_PRESS_KEY key_press_fn,
  18. const char* string,
  19. uint8_t string_length,
  20. TokenAutomationFeature features) {
  21. furi_delay_ms(500);
  22. uint8_t i = 0;
  23. while(i < string_length && string[i] != 0) {
  24. uint8_t digit = CONVERT_CHAR_TO_DIGIT(string[i]);
  25. if(digit > 9) break;
  26. uint8_t hid_kb_key = hid_number_keys[digit];
  27. (*key_press_fn)(hid_kb_key);
  28. i++;
  29. }
  30. if(features & TOKEN_AUTOMATION_FEATURE_ENTER_AT_THE_END) {
  31. furi_delay_ms(30);
  32. (*key_press_fn)(HID_KEYBOARD_RETURN);
  33. }
  34. if(features & TOKEN_AUTOMATION_FEATURE_TAB_AT_THE_END) {
  35. furi_delay_ms(30);
  36. (*key_press_fn)(HID_KEYBOARD_TAB);
  37. }
  38. }