89 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			C
		
	
	
	
/**
 | 
						|
  ******************************************************************************
 | 
						|
  * @file    IAP_Main/Inc/ymodem.h 
 | 
						|
  * @author  MCD Application Team
 | 
						|
  * @brief   This file provides all the software function headers of the ymodem.c 
 | 
						|
  *          file.
 | 
						|
  ******************************************************************************
 | 
						|
  * @attention
 | 
						|
  *
 | 
						|
  * <h2><center>© Copyright (c) 2016 STMicroelectronics.
 | 
						|
  * All rights reserved.</center></h2>
 | 
						|
  *
 | 
						|
  * This software component is licensed by ST under BSD 3-Clause license,
 | 
						|
  * the "License"; You may not use this file except in compliance with the
 | 
						|
  * License. You may obtain a copy of the License at:
 | 
						|
  *                        opensource.org/licenses/BSD-3-Clause
 | 
						|
  *
 | 
						|
  ******************************************************************************
 | 
						|
  */ 
 | 
						|
 | 
						|
/* Define to prevent recursive inclusion -------------------------------------*/
 | 
						|
#ifndef __YMODEM_H_
 | 
						|
#define __YMODEM_H_
 | 
						|
 | 
						|
/* Includes ------------------------------------------------------------------*/
 | 
						|
/* Exported types ------------------------------------------------------------*/
 | 
						|
 | 
						|
/**
 | 
						|
  * @brief  Comm status structures definition
 | 
						|
  */
 | 
						|
typedef enum
 | 
						|
{
 | 
						|
  COM_OK       = 0x00,
 | 
						|
  COM_ERROR    = 0x01,
 | 
						|
  COM_ABORT    = 0x02,
 | 
						|
  COM_TIMEOUT  = 0x03,
 | 
						|
  COM_DATA     = 0x04,
 | 
						|
  COM_LIMIT    = 0x05
 | 
						|
} COM_StatusTypeDef;
 | 
						|
/**
 | 
						|
  * @}
 | 
						|
  */
 | 
						|
 | 
						|
/* Exported constants --------------------------------------------------------*/
 | 
						|
/* Packet structure defines */
 | 
						|
#define PACKET_HEADER_SIZE      ((uint32_t)3)
 | 
						|
#define PACKET_DATA_INDEX       ((uint32_t)4)
 | 
						|
#define PACKET_START_INDEX      ((uint32_t)1)
 | 
						|
#define PACKET_NUMBER_INDEX     ((uint32_t)2)
 | 
						|
#define PACKET_CNUMBER_INDEX    ((uint32_t)3)
 | 
						|
#define PACKET_TRAILER_SIZE     ((uint32_t)2)
 | 
						|
#define PACKET_OVERHEAD_SIZE    (PACKET_HEADER_SIZE + PACKET_TRAILER_SIZE - 1)
 | 
						|
#define PACKET_SIZE             ((uint32_t)128)
 | 
						|
#define PACKET_1K_SIZE          ((uint32_t)1024)
 | 
						|
 | 
						|
/* /-------- Packet in IAP memory ------------------------------------------\
 | 
						|
 * | 0      |  1    |  2     |  3   |  4      | ... | n+4     | n+5  | n+6  | 
 | 
						|
 * |------------------------------------------------------------------------|
 | 
						|
 * | unused | start | number | !num | data[0] | ... | data[n] | crc0 | crc1 |
 | 
						|
 * \------------------------------------------------------------------------/
 | 
						|
 * the first byte is left unused for memory alignment reasons                 */
 | 
						|
 | 
						|
#define FILE_NAME_LENGTH        ((uint32_t)64)
 | 
						|
#define FILE_SIZE_LENGTH        ((uint32_t)16)
 | 
						|
 | 
						|
#define SOH                     ((uint8_t)0x01)  /* start of 128-byte data packet */
 | 
						|
#define STX                     ((uint8_t)0x02)  /* start of 1024-byte data packet */
 | 
						|
#define EOT                     ((uint8_t)0x04)  /* end of transmission */
 | 
						|
#define ACK                     ((uint8_t)0x06)  /* acknowledge */
 | 
						|
#define NAK                     ((uint8_t)0x15)  /* negative acknowledge */
 | 
						|
#define CA                      ((uint32_t)0x18) /* two of these in succession aborts transfer */
 | 
						|
#define CRC16                   ((uint8_t)0x43)  /* 'C' == 0x43, request 16-bit CRC */
 | 
						|
#define NEGATIVE_BYTE           ((uint8_t)0xFF)
 | 
						|
 | 
						|
#define ABORT1                  ((uint8_t)0x41)  /* 'A' == 0x41, abort by user */
 | 
						|
#define ABORT2                  ((uint8_t)0x61)  /* 'a' == 0x61, abort by user */
 | 
						|
 | 
						|
#define NAK_TIMEOUT             ((uint32_t)0x100000)
 | 
						|
#define DOWNLOAD_TIMEOUT        ((uint32_t)1000) /* One second retry delay */
 | 
						|
#define MAX_ERRORS              ((uint32_t)5)
 | 
						|
 | 
						|
/* Exported functions ------------------------------------------------------- */
 | 
						|
COM_StatusTypeDef Ymodem_Receive(uint32_t *p_size);
 | 
						|
COM_StatusTypeDef Ymodem_Transmit(uint8_t *p_buf, const uint8_t *p_file_name, uint32_t file_size);
 | 
						|
 | 
						|
#endif  /* __YMODEM_H_ */
 | 
						|
 | 
						|
/*******************(C)COPYRIGHT STMicroelectronics ********END OF FILE********/
 |