ibutton_key.cpp 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. #include "ibutton_key.h"
  2. #include <furi.h>
  3. uint8_t iButtonKey::get_size() {
  4. return IBUTTON_KEY_DATA_SIZE;
  5. }
  6. void iButtonKey::set_data(uint8_t* _data, uint8_t _data_count) {
  7. furi_check(_data_count > 0);
  8. furi_check(_data_count <= get_size());
  9. memset(data, 0, get_size());
  10. memcpy(data, _data, _data_count);
  11. }
  12. void iButtonKey::clear_data() {
  13. memset(data, 0, get_size());
  14. }
  15. uint8_t* iButtonKey::get_data() {
  16. return data;
  17. }
  18. uint8_t iButtonKey::get_type_data_size() {
  19. return get_type_data_size_by_type(type);
  20. }
  21. void iButtonKey::set_name(const char* _name) {
  22. strlcpy(name, _name, IBUTTON_KEY_NAME_SIZE);
  23. }
  24. char* iButtonKey::get_name() {
  25. return name;
  26. }
  27. void iButtonKey::set_type(iButtonKeyType _key_type) {
  28. type = _key_type;
  29. }
  30. iButtonKeyType iButtonKey::get_key_type() {
  31. return type;
  32. }
  33. const char* iButtonKey::get_key_type_string_by_type(iButtonKeyType key_type) {
  34. switch(key_type) {
  35. case iButtonKeyType::KeyCyfral:
  36. return "Cyfral";
  37. break;
  38. case iButtonKeyType::KeyMetakom:
  39. return "Metakom";
  40. break;
  41. case iButtonKeyType::KeyDallas:
  42. return "Dallas";
  43. break;
  44. default:
  45. furi_crash("Invalid iButton type");
  46. return "";
  47. break;
  48. }
  49. }
  50. bool iButtonKey::get_key_type_by_type_string(const char* type_string, iButtonKeyType* key_type) {
  51. if(strcmp(type_string, get_key_type_string_by_type(iButtonKeyType::KeyCyfral)) == 0) {
  52. *key_type = iButtonKeyType::KeyCyfral;
  53. } else if(strcmp(type_string, get_key_type_string_by_type(iButtonKeyType::KeyMetakom)) == 0) {
  54. *key_type = iButtonKeyType::KeyMetakom;
  55. } else if(strcmp(type_string, get_key_type_string_by_type(iButtonKeyType::KeyDallas)) == 0) {
  56. *key_type = iButtonKeyType::KeyDallas;
  57. } else {
  58. return false;
  59. }
  60. return true;
  61. }
  62. uint8_t iButtonKey::get_type_data_size_by_type(iButtonKeyType key_type) {
  63. uint8_t size = 0;
  64. switch(key_type) {
  65. case iButtonKeyType::KeyCyfral:
  66. size = 2;
  67. break;
  68. case iButtonKeyType::KeyMetakom:
  69. size = 4;
  70. break;
  71. case iButtonKeyType::KeyDallas:
  72. size = 8;
  73. break;
  74. }
  75. return size;
  76. }
  77. iButtonKey::iButtonKey() {
  78. }