Project

General

Profile

Statistics
| Revision:

root / trunk / common / tooltron.h @ 186

History | View | Annotate | Download (2.86 KB)

1
/********
2
 * This file is part of Tooltron.
3
 *
4
 * Tooltron is free software: you can redistribute it and/or modify
5
 * it under the terms of the Lesser GNU General Public License as published by
6
 * the Free Software Foundation, either version 3 of the License, or
7
 * (at your option) any later version.
8
 *
9
 * Tooltron is distributed in the hope that it will be useful,
10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
 * Lesser GNU General Public License for more details.
13
 * You should have received a copy of the Lesser GNU General Public License
14
 * along with Tooltron.  If not, see <http://www.gnu.org/licenses/>.
15
 *
16
 * Copyright 2009 Kevin Woo <kwoo@2ndt.com>, Brad Neuman <bneuman@andrew.cmu.edu>
17
 *
18
 ********/
19
#ifndef _TOOLTRON_H_
20
#define _TOOLTRON_H_
21

    
22
#include <stdint.h>
23

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

    
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
41

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

    
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;
55

    
56
// Tool timeout?
57
#define TIMEOUT_SECONDS 10 
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 (*uart_init)(uint16_t baud) = JT_UART_INIT;
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;
85
#endif
86

    
87

    
88
#endif