ymodem.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. // Author: NiuJiuRu
  2. // Email: niujiuru@qq.com
  3. // Date: 2025-12-20
  4. #ifndef __YMODEM_H__
  5. #define __YMODEM_H__
  6. #define PACKET_SEQNO_INDEX (1)
  7. #define PACKET_SEQNO_COMP_INDEX (2)
  8. #define PACKET_HEADER (3) /* start, block, block-complement */
  9. #define PACKET_TRAILER (2) /* CRC bytes */
  10. #define PACKET_OVERHEAD (PACKET_HEADER + PACKET_TRAILER)
  11. #define PACKET_SIZE (128)
  12. #define PACKET_1K_SIZE (1024)
  13. #define PACKET_TIMEOUT (1000) /* milliseconds */
  14. #define FILE_NAME_LENGTH (64)
  15. #define FILE_SIZE_LENGTH (16)
  16. /* ASCII control codes: */
  17. #define SOH (0x01) /* start of 128-byte data packet */
  18. #define STX (0x02) /* start of 1024-byte data packet */
  19. #define EOT (0x04) /* end of transmission */
  20. #define ACK (0x06) /* receive OK */
  21. #define NAK (0x15) /* receiver error; retry */
  22. #define CAN (0x18) /* two of these in succession aborts transfer */
  23. #define CRC (0x43) /* use in place of first NAK for CRC mode */
  24. /* Number of consecutive receive errors before giving up: */
  25. #define MAX_ERRORS (5)
  26. /* Number of startup wait attempts before giving up: */
  27. #define MAX_START_WAITS (30)
  28. #define UART_MODULE_NAME "YMODEM" /* 串口模块名称 */
  29. #define UART_DEVICE_NAME "/dev/ttymxc2" /* 串口设备名称 */
  30. #define UART_BAUD_RATE 115200 /* 串口的波特率 */
  31. #define UART_PARITY_CHECK "none" /* 串口的校验位 */
  32. #include "../swapi/include_swapiLib.h"
  33. #ifdef __cplusplus
  34. extern "C"
  35. {
  36. #endif
  37. // 通过串口使用 YMODEM 协议接收多个文件, >=0 实际成功接收的文件数, <0 接收过程中发生的错误
  38. int ymodem_recv_files(const char *dir);
  39. // 通过串口使用 YMODEM 协议发送一个文件, >=0 实际成功发送的字节数, <0 发送过程中发生的错误
  40. int ymodem_send_file(const char *path);
  41. #ifdef __cplusplus
  42. }
  43. #endif
  44. #endif /* __YMODEM_H__ */