[go: up one dir, main page]

Menu

[r1]: / xmodem.h  Maximize  Restore  History

Download this file

101 lines (86 with data), 3.3 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
/**************************************************************************
*
* Written by Cencong Su (cencong.su@gmail.com)
*
***************************************************************************
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above author notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above author notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
* OF SUCH DAMAGE.
*
**********************************************************************//*!
*
* @file xmodem.h
*
* @author Cencong Su
*
* @briefHeader file of xmodem module
*
***************************************************************************/
#ifndef __XMODEM_H__
#define __XMODEM_H__
/** Type definition for xmodem module */
typedef unsigned char uint8_t;
typedef unsigned short int uint16_t;
typedef unsigned long int uint32_t;
typedef unsigned char bool;
/** Parameter of xmodem module */
#define DLY_1S 1000 ///<
#define MAX_RETRANS 10 ///<Maximum re-transmit time
/** Target dependent:definition */
/** Special byte definition of xmodem protocal */
#define SOH 0x01
#define STX 0x02
#define EOT 0x04
#define ACK 0x06
#define NAK 0x15
#define CAN 0x18
#define CTRLZ 0x1A ///<End of file
#define USE_CRC 'C'
#define DATA_OFFSET 3
#define PACKET_LEN 128
/** Convert an u16_t from host- to network byte order */
#define hsb2lsb(s) s = (((s & 0xff) << 8) | ((s & 0xff00) >> 8));
#pragma pack(1)
typedef struct xmodem_packet
{
uint8_t soh;
uint8_t packet_num;
uint8_t pkt_num_cmplemt;
uint8_t data[PACKET_LEN];
union{
uint8_t chksum;
uint16_t crc;
}chk_code;
}XMODEM_PACKET, *XMODEM_PACKET_PTR;
#pragma pack()
/** define return value for function xmodem_parse_pkt() */
typedef enum
{
PARS_OK,
PARS_ERR,
PARS_CAN,
PARS_EOT,
}xmodem_parse_pkt_ret;
#define REMOTE_CANCEL -1 ///<remote cancel
#define COM_TIMEOUT -2 ///<communication timeout
extern uint32_t xmodem_recv(uint8_t *dest, uint32_t destsz);
extern int xmodemTransmit(unsigned char *src, int srcsz);
#endif