📄 xmodem.h
字号:
#ifndef __XMODEM_H
#define __XMODEM_H
#define DATA_NUM_PER_PACKET 128
#define CRC_DATA_NUM_PER_PACKET 2
#define MAX_SEQ_NO 255
#define XMODEM_PAKET_LENGTH (1+1+1+128+2)
#define RETURN_NO_ERR 0
#define RETURN_ERR 1
#define TRUE 1
#define FALSE 0
/* CRC-CCITT 16 is based on the polynomial x^16+x^12+x^5+1, and the reference value is 0x1021 */
#define CRC16_POLY 0x1021
enum DownLoadState
{
START_OF_HEADER,
SEQUENCE_NO,
COMP_OF_SEQ_NO,
DATA,
C_R_C
};
enum CNTLCHAR
{
SOH = 0X01,
STX = 0x02,
ETX = 0x03,
EOT = 0X04,
ACK = 0X06,
NAK = 0X15,
CAN = 0X18,
C = 0X43
};
enum XModemSendState
{
NOTSTART,
STARTED
};
struct XMODEM_PacketStruct
{
unsigned char SOH; // Start of Header
unsigned char SeqNo; // Sequence No.
unsigned char CmpOfSeqNo; // Compensate of Sequence No.
unsigned char Data[ DATA_NUM_PER_PACKET ]; // Data
unsigned char CRC[ CRC_DATA_NUM_PER_PACKET ]; // CRC
};
extern unsigned long XMODEM_StartOfHeader ( void );
extern unsigned long XMODEM_SequenceNo ( void );
extern unsigned long XMODEM_CompOfSeqNo ( void );
extern unsigned long XMODEM_Data ( void );
extern unsigned long XMODEM_Crc( void );
extern unsigned long XMODEM_Load( unsigned char *start_addr, unsigned long dwAllowedMem );
extern unsigned long XMODEM_Dump( unsigned char *str, unsigned long size );
extern void XMODEM_Purge( void );
extern void XMODEM_ProduceSendString( unsigned char *str, unsigned char *buffer, unsigned long order, unsigned long frames, unsigned char last_frame_len );
extern void XMODEM_LeaveProcess( void );
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -