ibutton_scene_info.c 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #include "../ibutton_i.h"
  2. #include <toolbox/path.h>
  3. void ibutton_scene_info_on_enter(void* context) {
  4. iButton* ibutton = context;
  5. Widget* widget = ibutton->widget;
  6. iButtonKey* key = ibutton->key;
  7. const uint8_t* key_data = ibutton_key_get_data_p(key);
  8. FuriString* key_name;
  9. key_name = furi_string_alloc();
  10. path_extract_filename(ibutton->file_path, key_name, true);
  11. ibutton_text_store_set(ibutton, "%s", furi_string_get_cstr(key_name));
  12. widget_add_text_box_element(
  13. widget, 0, 0, 128, 23, AlignCenter, AlignCenter, ibutton->text_store, true);
  14. switch(ibutton_key_get_type(key)) {
  15. case iButtonKeyDS1990:
  16. ibutton_text_store_set(
  17. ibutton,
  18. "%02X %02X %02X %02X %02X %02X %02X %02X",
  19. key_data[0],
  20. key_data[1],
  21. key_data[2],
  22. key_data[3],
  23. key_data[4],
  24. key_data[5],
  25. key_data[6],
  26. key_data[7]);
  27. widget_add_string_element(widget, 64, 36, AlignCenter, AlignBottom, FontPrimary, "Dallas");
  28. break;
  29. case iButtonKeyMetakom:
  30. ibutton_text_store_set(
  31. ibutton, "%02X %02X %02X %02X", key_data[0], key_data[1], key_data[2], key_data[3]);
  32. widget_add_string_element(
  33. widget, 64, 36, AlignCenter, AlignBottom, FontPrimary, "Metakom");
  34. break;
  35. case iButtonKeyCyfral:
  36. ibutton_text_store_set(ibutton, "%02X %02X", key_data[0], key_data[1]);
  37. widget_add_string_element(widget, 64, 36, AlignCenter, AlignBottom, FontPrimary, "Cyfral");
  38. break;
  39. }
  40. widget_add_string_element(
  41. widget, 64, 50, AlignCenter, AlignBottom, FontSecondary, ibutton->text_store);
  42. view_dispatcher_switch_to_view(ibutton->view_dispatcher, iButtonViewWidget);
  43. furi_string_free(key_name);
  44. }
  45. bool ibutton_scene_info_on_event(void* context, SceneManagerEvent event) {
  46. UNUSED(context);
  47. UNUSED(event);
  48. return false;
  49. }
  50. void ibutton_scene_info_on_exit(void* context) {
  51. iButton* ibutton = context;
  52. ibutton_text_store_clear(ibutton);
  53. widget_reset(ibutton->widget);
  54. }