#ifndef RADIO_DEF_H #define RADIO_DEF_H //Buffer Sizes #define TX_NUM_MESSAGES 4 #define RX_NUM_MESSAGES 4 #define RADIO_INC_TX(x) if(++x>=TX_NUM_MESSAGES)x=0 #define RADIO_INC_RX(x) if(++x>=RX_NUM_MESSAGES)x=0 //Message Overhead #define RADIO_LEN_START_SEQ 4 #define RADIO_LEN_ADDR 2 #define RADIO_LEN_TYPE 1 #define RADIO_LEN_LEN 1 #define RADIO_LEN_CRC 2 #define RADIO_LEN_HEADER (RADIO_LEN_START_SEQ+RADIO_LEN_ADDR+RADIO_LEN_TYPE+RADIO_LEN_LEN) #define RADIO_OVERHEAD (RADIO_LEN_HEADER+RADIO_LEN_CRC) //Message Parameter Positions #define RADIO_POS_SEQ0 0 #define RADIO_POS_SEQ1 1 #define RADIO_POS_SEQ2 2 #define RADIO_POS_SEQ3 3 #define RADIO_POS_DEST 4 #define RADIO_POS_SRC 5 #define RADIO_POS_TYPE 6 #define RADIO_POS_LEN 7 #define RADIO_POS_DATA (RADIO_POS_LEN+1) //Message Constants #define RADIO_START_BYTE0 0xFF #define RADIO_START_BYTE1 0x00 #define RADIO_START_BYTE2 0xBE #define RADIO_START_BYTE3 0xEF #define RADIO_HS_NONE 0 #define RADIO_HS_ACK 1 #define RADIO_HS_NACK 2 //Message Types #define RADIO_MSG_TYPE_DATA 0x00 #define RADIO_MSG_TYPE_ACK 0x01 #define RADIO_MSG_TYPE_NACK 0x02 //I/O Location #define RADIO_DDR DDRD #define RADIO_PORT PORTD #define RADIO_PIN PIND #define RADIO_RX_EN 3 #define RADIO_TX_EN 2 //TX States #define RADIO_TX_STATE_SEND 0 #define RADIO_TX_STATE_HS 1 #define RADIO_TX_STATE_COMP 2 #define RADIO_TX_STATE_FAIL 3 #define RADIO_TX_STATE_RETX 4 #define RADIO_TX_STATE_IDLE 5 //RX States #define RADIO_RX_CHAR_STATE_0 0 #define RADIO_RX_CHAR_STATE_1 1 #define RADIO_RX_CHAR_STATE_2 2 #define RADIO_RX_CHAR_STATE_3 3 #define RADIO_RX_CHAR_STATE_OK 4 //Modes #define RADIO_MODE_TX 0 #define RADIO_MODE_RX 1 //Timeouts #define RADIO_TX_TIMEOUT 5 //TX state machine timeout (ms). #define RADIO_CHAR_TIMEOUT 5 //RX character timeout (ms). #define RADIO_HS_TIMEOUT 500 //Handshake timeout (ms). #define RADIO_RETX_TIMEOUT 100 //Retransmit timeout (ms).//FIXME Replace this with LFSR. void radio_switch_mode(unsigned char mode,unsigned char pri); unsigned int crc16(unsigned char len, unsigned char *payload); //unsigned char next_retx_timeout(void); signed char radio_send_msg(unsigned char dest, unsigned char retransmit, unsigned char type, unsigned char len, unsigned char *payload); signed char radio_send_pri(unsigned char dest, unsigned char type, unsigned char len, unsigned char *payload); void radio_send_hs(unsigned char src,unsigned char type); //void radio_send_hs_debug(unsigned char src,unsigned char type,unsigned char len,unsigned char *payload); #endif