Revision 183 trunk/common/tooltron.h

tooltron.h (revision 183)
13 13
 * You should have received a copy of the Lesser GNU General Public License
14 14
 * along with Tooltron.  If not, see <http://www.gnu.org/licenses/>.
15 15
 *
16
 * Copyright 2009 Kevin Woo <kwoo@2ndt.com>
16
 * Copyright 2009 Kevin Woo <kwoo@2ndt.com>, Brad Neuman <bneuman@andrew.cmu.edu>
17 17
 *
18 18
 ********/
19 19
#ifndef _TOOLTRON_H_
20 20
#define _TOOLTRON_H_
21 21

  
22
#include <stdint.h>
23

  
24
/****** Message Dictionary ******/
25
// Commonly used message bytes
22 26
#define DELIM      '^'
23 27
#define SERVER     1
24 28
#define ACK_CRC    ADDR ^ SERVER
25 29

  
26
#define TT_GET_KEY 'k'
27
#define TT_ACK     'a'
28
#define TT_NACK    'n'
29
#define TT_TO      'f'
30
#define TT_TIMEOUT 't'
31
#define TT_RESET   'r'
32
#define TT_BOOT    'b'
33
#define TT_PROGM   'p'
34
#define TT_PROGD   'd'
35
#define TT_BAD     0
30
// These are the bytes used in the messaage types
31
#define TT_GET_KEY 'k'      // Get a key from the keyboard
32
#define TT_ACK     'a'      // Ack
33
#define TT_NACK    'n'      // Nack
34
#define TT_TO      'f'      // State timeout
35
#define TT_TIMEOUT 't'      // Packet timeout
36
#define TT_RESET   'r'      // Tool reset request
37
#define TT_BOOT    'b'      // Tool boot message
38
#define TT_PROGM   'p'      // Program mode request
39
#define TT_PROGD   'd'      // Program data
40
#define TT_BAD     0        // If there was a packet parsing error
36 41

  
42
// Number of bytes that the PROGx packets have in the payload
37 43
#define PROGM_PACKET_SIZE 2
38 44
#define PROGD_PACKET_SIZE 32
39 45

  
40
#define PAGE_SIZE 32
46
// Packet handler states
47
typedef enum {
48
    sd,         // Looking for start delimiter
49
    src,        // Looking for source
50
    dest,       // Looking for destination
51
    comd,       // Looking for command
52
    read,       // Reading payload
53
    cs         // Calculate checksum
54
} state_t;
41 55

  
56
// Tool timeout?
42 57
#define TIMEOUT_SECONDS 10 
43 58

  
59
// Memory locations
60
#define MAIN_ADDR 0x0       // User code starts here
61
#define BOOT_START 0x400    // Bootloader code starts here
62

  
63
/****** Utility Definitions ******/
64
#define TRUE  0
65
#define FALSE 1
66

  
67
/****** Jump Table ******/
68
// Jump table addresses
69
// If the bootloader changes, you must change the jump table addresses!
70
#define JT_INIT_UART        0x0
71
#define JT_UART_GET_BYTE    0x0
72
#define JT_UART_SEND_BYTE   0x0
73
#define JT_PARSE_PACKET     0x0
74
#define JT_SEND_PACKET      0x0
75

  
76

  
77
// Jump table functions for locations that are in the bootloader
78
#ifdef TOOLBOX
79
void (*init_uart)(uint16_t baud) = JT_INIT_UART;
80
int8_t (*uart_get_byte)(uint8_t *output_byte) = JT_UART_GET_BYTE;
81
void (*uart_send_byte)(uint8_t data) = JT_UART_SEND_BYTE;
82
void (*uart_toggle_transmit)(uint8_t state) = JT_UART_TOGGLE_TRANSMIT;
83
char (*parse_packet)(uint8_t *mbuf) = JT_PARSE_PACKET;
84
void (*send_packet)(uint8_t cmd) = JT_SEND_PACKET;
44 85
#endif
86

  
87

  
88
#endif

Also available in: Unified diff