bam_eep.h



/****************************************************************************/
/*     MODULE:	bam_eep.h                                                   */
/*   FUNCTION:	EEPROM programming definitions and prototypes.                     */
/*    HISTORY:	4-3-96 L.R. Erickson - Original			                    */
/****************************************************************************/

#ifndef INCL_BAM_EEP
#define INCL_BAM_EEP



/********************************************************/
/*  defines                                           */
/********************************************************/

#define EEP_TX_BUF_SIZE 6s
#define EEP_RX_BUF_SIZE 22
#define MAX_PROG_CHARS 16

#define EEP_WT_MSG_STATE 0 
#define EEP_WT_CMD_STATE 1 
#define EEP_WT_CNT_STATE 2 
#define EEP_WT_HI_ADD_STATE 3
#define EEP_WT_LO_ADD_STATE 4
#define EEP_WT_DATA_STATE 5
#define EEP_WT_CHK_STATE 6

#define EEP_BUF_ERR 0 
#define EEP_CMD_STATE_ERR 1
#define EEP_FE_ERR 2
#define EEP_OE_ERR 3
#define EEP_UNK_CMD_ERR 4
#define EEP_MAX_CNT_ERR 5
#define EEP_CHK_SUM_ERR 6
#define EEP_PROG_CMD_ACK 7
#define EEP_PROG_CMD_DONE 8
#define EEP_PROG_CMD_FAIL 9

#define EEP_PROG_CMD 1

#define EEP_REPLY 1

/********************************************************
 typedefs
********************************************************/

typedef volatile struct EEP_TX_struct {
    unsigned char head_index ;
    unsigned char tail_index ;
    unsigned char tx_buf[EEP_TX_BUF_SIZE] ;
    unsigned char tx_busy ;
    } EEP_TX_struct ;

typedef volatile struct EEP_RX_struct {
    unsigned char head_index ;
    unsigned char tail_index ;
    unsigned char rx_buf[EEP_RX_BUF_SIZE] ;
    unsigned char rx_stat[EEP_RX_BUF_SIZE] ;
    unsigned char rx_crash ;
    unsigned char rx_proc_state ;
    unsigned char rx_proc_chksum ;
    unsigned char rx_proc_cmd ;
    unsigned char rx_proc_cnt ;
    unsigned char rx_data_cnt ;
    unsigned int  rx_proc_ld_add ;
    unsigned char rx_prog_chars[MAX_PROG_CHARS] ;
    } EEP_RX_struct ;

/********************************************************/
/* Function prototypes                                  */
/********************************************************/

#ifdef SRC_BAM_EEP

void eep_main(void) ;
void eep_transmit(void) ;
void eep_receive(void) ;
void init_eep_data(void) ;
void process_eep_char(void) ;
void send_eep_msg(int) ;
unsigned char eep_chk_ch_bit(unsigned char, unsigned char) ;
unsigned char write_eeprom(void) ;

#pragma model(kc)

#define TRUE 1
#define FALSE 0

#else

extern void eep_main(void) ;
extern void eep_transmit(void) ;
extern void eep_receive(void) ;

#endif

#endif