avr_isp.h 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #pragma once
  2. #include <furi_hal.h>
  3. typedef struct AvrIsp AvrIsp;
  4. typedef void (*AvrIspCallback)(void* context);
  5. struct AvrIspSignature {
  6. uint8_t vendor;
  7. uint8_t part_family;
  8. uint8_t part_number;
  9. };
  10. typedef struct AvrIspSignature AvrIspSignature;
  11. AvrIsp* avr_isp_alloc(void);
  12. void avr_isp_free(AvrIsp* instance);
  13. void avr_isp_set_tx_callback(AvrIsp* instance, AvrIspCallback callback, void* context);
  14. bool avr_isp_auto_set_spi_speed_start_pmode(AvrIsp* instance);
  15. AvrIspSignature avr_isp_read_signature(AvrIsp* instance);
  16. void avr_isp_end_pmode(AvrIsp* instance);
  17. bool avr_isp_erase_chip(AvrIsp* instance);
  18. uint8_t avr_isp_spi_transaction(
  19. AvrIsp* instance,
  20. uint8_t cmd,
  21. uint8_t addr_hi,
  22. uint8_t addr_lo,
  23. uint8_t data);
  24. bool avr_isp_read_page(
  25. AvrIsp* instance,
  26. uint32_t memtype,
  27. uint16_t addr,
  28. uint16_t page_size,
  29. uint8_t* data,
  30. uint32_t data_size);
  31. bool avr_isp_write_page(
  32. AvrIsp* instance,
  33. uint32_t mem_type,
  34. uint32_t mem_size,
  35. uint16_t addr,
  36. uint16_t page_size,
  37. uint8_t* data,
  38. uint32_t data_size);
  39. uint8_t avr_isp_read_lock_byte(AvrIsp* instance);
  40. bool avr_isp_write_lock_byte(AvrIsp* instance, uint8_t lock);
  41. uint8_t avr_isp_read_fuse_low(AvrIsp* instance);
  42. bool avr_isp_write_fuse_low(AvrIsp* instance, uint8_t lfuse);
  43. uint8_t avr_isp_read_fuse_high(AvrIsp* instance);
  44. bool avr_isp_write_fuse_high(AvrIsp* instance, uint8_t hfuse);
  45. uint8_t avr_isp_read_fuse_extended(AvrIsp* instance);
  46. bool avr_isp_write_fuse_extended(AvrIsp* instance, uint8_t efuse);
  47. void avr_isp_write_extended_addr(AvrIsp* instance, uint8_t extended_addr);