ymodem.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #ifndef __YMODEM_H__
  2. #define __YMODEM_H__
  3. #include "board.h"
  4. #ifdef __cplusplus
  5. extern "C" {
  6. #endif
  7. #define YMODEM_FLAG_UNKNOWN (0x0001u)
  8. #define YMODEM_FLAG_BLK_END (0x0002u)
  9. #define YMODEM_FLAG_FILE_END (0x0004u)
  10. #define YMODEM_SOH (0x01u)
  11. #define YMODEM_STX (0x02u)
  12. #define YMODEM_EOT (0x04u)
  13. #define YMODEM_ACK (0x06u)
  14. #define YMODEM_NAK (0x15u)
  15. #define YMODEM_CAN (0x18u)
  16. #define YMODEM_C (0x43u)
  17. #define YMODEM_LONG_SIZE (1024)
  18. #define YMODEM_SHORT_SIZE (128)
  19. #define YMODEM_GOOD_CRC (0x0000u)
  20. #define YMODEM_BUF_DEPTH (2048+256)
  21. typedef struct {
  22. uint8_t HeadByte;
  23. uint8_t BlkSeq;
  24. uint16_t Flag;
  25. uint16_t CalCRC;
  26. uint16_t ByteLeft;
  27. uint16_t ByteIdx;
  28. uint16_t WrAddr;
  29. uint16_t AckAddr;
  30. uint16_t RdAddr;
  31. uint32_t Fsize;
  32. uint32_t MaxSize;
  33. uint32_t FlashAddr;
  34. uint8_t *Buf;
  35. } ymodem_cntxt_t;
  36. extern ymodem_cntxt_t ymodem_cntxt;
  37. extern uint16_t ymodem_crc(uint8_t byte, uint16_t crc_old);
  38. extern void ymodem_rx_byte(uint8_t RxByte, void *arg);
  39. extern uint16_t ymodem_rx_file(ymodem_cntxt_t *p);
  40. extern uint16_t FIFO_to_MCU_pp(uint8_t last_blk, uint8_t *buf, uint16_t waddr, uint16_t raddr, uint32_t *faddr);
  41. #ifdef __cplusplus
  42. }
  43. #endif
  44. #endif