flipper_i32hex_file.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #pragma once
  2. #include <furi_hal.h>
  3. typedef struct FlipperI32HexFile FlipperI32HexFile;
  4. typedef enum {
  5. FlipperI32HexFileStatusOK = 0,
  6. FlipperI32HexFileStatusData = 2,
  7. FlipperI32HexFileStatusUdateAddr = 3,
  8. FlipperI32HexFileStatusEofFile = 4,
  9. FlipperI32HexFileStatusOpenFileWrite = 5,
  10. FlipperI32HexFileStatusOpenFileRead = 6,
  11. // Errors
  12. FlipperI32HexFileStatusErrorCrc = (-1),
  13. FlipperI32HexFileStatusErrorOverflow = (-2),
  14. FlipperI32HexFileStatusErrorData = (-3),
  15. FlipperI32HexFileStatusErrorUnsupportedCommand = (-4),
  16. FlipperI32HexFileStatusErrorNoOpenFile = (-5),
  17. FlipperI32HexFileStatusErrorFileWrite = (-6),
  18. FlipperI32HexFileStatusErrorFileRead = (-7),
  19. FlipperI32HexFileStatusReserved =
  20. 0x7FFFFFFF, ///< Prevents enum down-size compiler optimization.
  21. } FlipperI32HexFileStatus;
  22. typedef struct {
  23. FlipperI32HexFileStatus status;
  24. uint32_t data_size;
  25. } FlipperI32HexFileRet;
  26. FlipperI32HexFile* flipper_i32hex_file_open_write(const char* name, uint32_t start_addr);
  27. FlipperI32HexFile* flipper_i32hex_file_open_read(const char* name);
  28. void flipper_i32hex_file_close(FlipperI32HexFile* instance);
  29. FlipperI32HexFileRet flipper_i32hex_file_bin_to_i32hex_set_data(
  30. FlipperI32HexFile* instance,
  31. uint8_t* data,
  32. uint32_t data_size);
  33. FlipperI32HexFileRet flipper_i32hex_file_bin_to_i32hex_set_end_line(FlipperI32HexFile* instance);
  34. const char* flipper_i32hex_file_get_string(FlipperI32HexFile* instance);
  35. void flipper_i32hex_file_bin_to_i32hex_set_addr(FlipperI32HexFile* instance, uint32_t addr);
  36. bool flipper_i32hex_file_check(FlipperI32HexFile* instance);
  37. FlipperI32HexFileRet flipper_i32hex_file_i32hex_to_bin_get_data(
  38. FlipperI32HexFile* instance,
  39. uint8_t* data,
  40. uint32_t data_size);