furi_hal_version.h 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. /**
  2. * @file furi_hal_version.h
  3. * Version HAL API
  4. */
  5. #pragma once
  6. #include <stdbool.h>
  7. #include <stdint.h>
  8. #include <string.h>
  9. #include <lib/toolbox/version.h>
  10. #ifdef __cplusplus
  11. extern "C" {
  12. #endif
  13. #define FURI_HAL_VERSION_NAME_LENGTH 8
  14. #define FURI_HAL_VERSION_ARRAY_NAME_LENGTH (FURI_HAL_VERSION_NAME_LENGTH + 1)
  15. /** BLE symbol + "Flipper " + name */
  16. #define FURI_HAL_VERSION_DEVICE_NAME_LENGTH (1 + 8 + FURI_HAL_VERSION_ARRAY_NAME_LENGTH)
  17. /** OTP Versions enum */
  18. typedef enum {
  19. FuriHalVersionOtpVersion0 = 0x00,
  20. FuriHalVersionOtpVersion1 = 0x01,
  21. FuriHalVersionOtpVersion2 = 0x02,
  22. FuriHalVersionOtpVersionEmpty = 0xFFFFFFFE,
  23. FuriHalVersionOtpVersionUnknown = 0xFFFFFFFF,
  24. } FuriHalVersionOtpVersion;
  25. /** Device Colors */
  26. typedef enum {
  27. FuriHalVersionColorUnknown = 0x00,
  28. FuriHalVersionColorBlack = 0x01,
  29. FuriHalVersionColorWhite = 0x02,
  30. } FuriHalVersionColor;
  31. /** Device Regions */
  32. typedef enum {
  33. FuriHalVersionRegionUnknown = 0x00,
  34. FuriHalVersionRegionEuRu = 0x01,
  35. FuriHalVersionRegionUsCaAu = 0x02,
  36. FuriHalVersionRegionJp = 0x03,
  37. } FuriHalVersionRegion;
  38. /** Device Display */
  39. typedef enum {
  40. FuriHalVersionDisplayUnknown = 0x00,
  41. FuriHalVersionDisplayErc = 0x01,
  42. FuriHalVersionDisplayMgg = 0x02,
  43. } FuriHalVersionDisplay;
  44. /** Init flipper version
  45. */
  46. void furi_hal_version_init();
  47. /** Check target firmware version
  48. *
  49. * @return true if target and real matches
  50. */
  51. bool furi_hal_version_do_i_belong_here();
  52. /** Get model name
  53. *
  54. * @return model name C-string
  55. */
  56. const char* furi_hal_version_get_model_name();
  57. /** Get OTP version
  58. *
  59. * @return OTP Version
  60. */
  61. const FuriHalVersionOtpVersion furi_hal_version_get_otp_version();
  62. /** Get hardware version
  63. *
  64. * @return Hardware Version
  65. */
  66. const uint8_t furi_hal_version_get_hw_version();
  67. /** Get hardware target
  68. *
  69. * @return Hardware Target
  70. */
  71. const uint8_t furi_hal_version_get_hw_target();
  72. /** Get hardware body
  73. *
  74. * @return Hardware Body
  75. */
  76. const uint8_t furi_hal_version_get_hw_body();
  77. /** Get hardware body color
  78. *
  79. * @return Hardware Color
  80. */
  81. const FuriHalVersionColor furi_hal_version_get_hw_color();
  82. /** Get hardware connect
  83. *
  84. * @return Hardware Interconnect
  85. */
  86. const uint8_t furi_hal_version_get_hw_connect();
  87. /** Get hardware region
  88. *
  89. * @return Hardware Region
  90. */
  91. const FuriHalVersionRegion furi_hal_version_get_hw_region();
  92. /** Get hardware display id
  93. *
  94. * @return Display id
  95. */
  96. const FuriHalVersionDisplay furi_hal_version_get_hw_display();
  97. /** Get hardware timestamp
  98. *
  99. * @return Hardware Manufacture timestamp
  100. */
  101. const uint32_t furi_hal_version_get_hw_timestamp();
  102. /** Get pointer to target name
  103. *
  104. * @return Hardware Name C-string
  105. */
  106. const char* furi_hal_version_get_name_ptr();
  107. /** Get pointer to target device name
  108. *
  109. * @return Hardware Device Name C-string
  110. */
  111. const char* furi_hal_version_get_device_name_ptr();
  112. /** Get pointer to target ble local device name
  113. *
  114. * @return Ble Device Name C-string
  115. */
  116. const char* furi_hal_version_get_ble_local_device_name_ptr();
  117. /** Get BLE MAC address
  118. *
  119. * @return pointer to BLE MAC address
  120. */
  121. const uint8_t* furi_hal_version_get_ble_mac();
  122. /** Get address of version structure of bootloader, stored in chip flash.
  123. *
  124. * @return Address of boot version structure.
  125. */
  126. const struct Version* furi_hal_version_get_bootloader_version();
  127. /** Get address of version structure of firmware.
  128. *
  129. * @return Address of firmware version structure.
  130. */
  131. const struct Version* furi_hal_version_get_firmware_version();
  132. /** Get platform UID size in bytes
  133. *
  134. * @return UID size in bytes
  135. */
  136. size_t furi_hal_version_uid_size();
  137. /** Get const pointer to UID
  138. *
  139. * @return pointer to UID
  140. */
  141. const uint8_t* furi_hal_version_uid();
  142. #ifdef __cplusplus
  143. }
  144. #endif