Update TODO part of readme
[lpctools] / isp_utils.h
1 /*********************************************************************
2  *
3  *   LPC ISP - Utility functions
4  *
5  *
6  *  Copyright (C) 2012 Nathael Pajani <nathael.pajani@nathael.net>
7  *
8  *  This program is free software: you can redistribute it and/or modify
9  *  it under the terms of the GNU General Public License as published by
10  *  the Free Software Foundation, either version 3 of the License, or
11  *  (at your option) any later version.
12  *
13  *  This program is distributed in the hope that it will be useful,
14  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  *  GNU General Public License for more details.
17  *
18  *  You should have received a copy of the GNU General Public License
19  *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
20  *
21  *********************************************************************/
24 #ifndef ISP_UTILS_H
25 #define ISP_UTILS_H
28 /* ---- CRP Protection values ---------------------------------------------------*/
29 #define CRP_OFFSET  0x000002FC
30 #define CRP_NO_ISP  0x4E697370
31 #define CRP_CRP1    0x12345678
32 #define CRP_CRP2    0x87654321
33 #define CRP_CRP3    0x43218765
36 void isp_dump(const unsigned char* buf, unsigned int buf_size);
39 /* ---- Serial utility functions ---------------------------------------------------*/
41 /* Open the serial device and set it up.
42  * Returns 0 on success, negativ value on error.
43  * Actal setup is done according to LPC11xx user's manual.
44  * Only baudrate can be changed using command line option.
45  */
46 int isp_serial_open(int baudrate, char* serial_device);
47 void isp_serial_close(void);
49 /* Empty internal buffer of USB-serial bridge
50  * Some USB-Serial bridge include an internal buffer which must be emptied
51  * before sending the first command in order to be able to read the replies
52  * or the bridge would drop the reply if it's internal buffer is full.
53  */
54 void isp_serial_flush_input(void);
56 /* Simple write() wrapper, with trace if enabled */
57 int isp_serial_write(const char* buf, unsigned int buf_size);
59 /* Empty read buffer between commands
60  * The micor-controller has echo on, so we must read the echoed command
61  * before reading the reply.
62  */
63 void isp_serial_empty_buffer();
65 /* Try to read at least "min_read" characters from the serial line.
66  * Returns -1 on error, 0 on end of file, or read count otherwise.
67  */
68 int isp_serial_read(char* buf, unsigned int buf_size, unsigned int min_read);
71 /* ---- UU_Encoding utility functions ----------------------------------------------*/
72 int isp_uu_encode(char* dest, char* src, unsigned int orig_size);
74 int isp_uu_decode(char* dest, char* src, unsigned int orig_size);
77 /* ---- File utility functions ----------------------------------------------*/
78 int isp_buff_to_file(char* data, unsigned int len, char* filename);
80 int isp_file_to_buff(char* data, unsigned int len, char* filename);
82 #endif /* ISP_UTILS_H */