#ifndef ACVXbeePicUART_h #define ACVXbeePicUART_h #include "BITDEFS.h" //#define UARTdebug /*------------ UART Message Byte Indices -------------*/ //Xbee Received Message Byte Order, Data only #define Byte_API 0 #define Byte_AddressHigh 1 #define Byte_AddressLow 2 #define Byte_MessageType 4 //needs to be masked with MessageTypeMask #define Byte_Command 5 //Teammate Finding #define Byte_Team 6 //Atoll Reply #define Byte_Atoll 6 #define Byte_Reply 7 #define Byte_NewOwner 8 //CVC Instruction #define Byte_Servos 6 #define Byte_Motor0 7 #define Byte_Motor1 8 //Xbee Status Message Byte Order #define Byte_FrameID 1 #define Byte_Status 2 /*------------ SPI Message Byte Indices --------------*/ //SPI Received Message Byte Order #define Byte_CardType 0 #define Byte_S1 1 #define Byte_S2 2 #define Byte_S3 3 #define Byte_SK1 4 #define Byte_SK2 5 #define Byte_SK3 6 /*------------------ Message Bytes -------------------*/ //Message Headers #define Start_Atoll 0xAA #define Start_Color 0xCC #define Start_Xbee 0x7E #define Start_Motor 0xB9 //Xbee APIs #define API_Transmit 0x01 #define API_Status 0x89 #define API_Receive 0x81 //Xbee FrameIDs #define FrameID_NoAck 0x00 //won't receive an Ack //Xbee Adresses #define Address_CVCHigh 0x20 #define Address_CVCLow 0x86 #define Address_AVCHigh 0x21 #define Address_AVCLow 0x86 #define Address_BroadcastHigh 0xFF #define Address_BroadcastLow 0xFF //Message Type #define MessageTypeMask BIT1HI #define MessageType_Direct 0x00 #define MessageType_Broadcast BIT1HI //Xbee Options #define Option_None 0x00 //Xbee Checksum #define Checksum_Total 0xFF //Xbee Transmit Statuses #define Status_Success 0x00 #define Status_NoACK 0x01 #define Status_CCAFailure 0x02 #define Status_Purged 0x03 //Xbee Command Types #define Command_Capture 0x66 #define Command_Reply 0x67 #define Command_FindTeam 0x89 #define Command_Announce 0xAB #define Command_C2B 0xCD #define Command_B2C 0xEF //Atoll Numbers #define Atoll_1 0x01 #define Atoll_2 0x02 #define Atoll_3 0x03 #define Atoll_4 0x04 #define Atoll_5 0x05 #define Atoll_Error 0x00 //for table lookup //Team Colors #define Team_Red 0xFE #define Team_RedPending 0xFD #define Team_Green 0x01 #define Team_GreenPending 0x02 #define Team_None 0x88 #define Team_Error 0x00 //for table lookup //Atoll Capture Replies #define Reply_Success 0xFF #define Reply_Failure 0x00 /*------------- RFID Card Serial Numbers -------------*/ unsigned char ColorLookup[3][4] = { {Team_Red, 0x35, 0xD5, 0xEC}, {Team_Green, 0x35, 0x9C, 0x5A}, {Team_None, 0x32, 0x9E, 0x06} //Team_White }; unsigned char AtollLookup[10][4] = { {Atoll_1, 0x5E, 0x6F, 0x47}, {Atoll_1, 0x5F, 0x31, 0x66}, {Atoll_2, 0x83, 0xCF, 0xC8}, {Atoll_2, 0x83, 0xFC, 0xE0}, {Atoll_3, 0x83, 0xC7, 0x36}, {Atoll_3, 0x83, 0xDD, 0x31}, {Atoll_4, 0x83, 0xE0, 0xF5}, {Atoll_4, 0x83, 0xED, 0xF0}, {Atoll_5, 0x84, 0x08, 0x5E}, {Atoll_5, 0x84, 0x0C, 0x6A} }; /*-------------- Servo Masks and Bytes ---------------*/ #define Servo_None 0b00000000 #define Servo_Green 0b00001000 #define Servo_Red 0b00000100 #define Motor_Stop 0x00 unsigned char TimeoutServos[2] = {Servo_Green, Servo_Red}; /*--------------- State Machine States ---------------*/ typedef enum { Transmit_Idle = 0, Transmit_XbeeInProgress, Transmit_MotorInProgress } TransmitState_t; typedef enum { Receive_Idle = 0, Receive_LengthHigh, Receive_LengthLow, Receive_Data, Receive_Checksum } ReceiveState_t; typedef enum { SPI_Idle = 0, SPI_Data } SPIState_t; /*----------------Function Prototypes ----------------*/ void InitTimer0(void); /*------------- SPI Function Prototypes --------------*/ void InitSPI(void); void UpdateSPI(void); unsigned char CheckSPIMessageFlag(void); //1 for atoll, 2 for color unsigned char ReadSPIMessage(unsigned char Index); /*------------- UART Function Prototypes -------------*/ void InitUART(void); void UpdateUART(void); unsigned char CheckXbeeTransmitOK(void); //1 if ok to add to message unsigned char CheckMotorTransmitOK(void); unsigned char StartXbeeTransmission(unsigned char FrameID, unsigned char Address_High, unsigned char Address_Low); unsigned char AddTransmissionData(unsigned char ByteToAdd); unsigned char FinishXbeeTransmission(void); unsigned char CreateMotorTransmission( unsigned char ServosByte, unsigned char Motor0Byte, unsigned char Motor1Byte); unsigned char CheckReceiveMessageFlag(void); unsigned char ReadXbeeMessage(unsigned char Index); #endif