/********************************************************************** Project: Automatic cat feeder Date: march 19 2006 Author: Jean-François Martel Target: PIC 18F252 Compiler: Microchip mcc18 Filename: Protocol.h File description: Communication protocol implementation. jean-francois.martel@polymtl.ca **********************************************************************/ #ifndef PROTOCOLDEFS_H #define PROTOCOLDEFS_H //Protocol buffer specific definitionsazsdf #define MAX_MESSAGE_SIZE 0xFFFF #define FRAME_HEADER 0x8A #define DATA_START 11 #define ACK 0xA3 #define NAK 0x90 #define BROADCAST_VALUE 0xFF enum eFrameIndex { FRAME_HEADER_INDEX, FRAME_SENDER_ID_INDEX, FRAME_SENDER_ADDRESS_INDEX, FRAME_DEST_ID_INDEX, FRAME_DEST_ADDRESS_INDEX, FRAME_FLAGS_INDEX, FRAME_COMMAND_INDEX, FRAME_SIZE1_INDEX, FRAME_SIZE2_INDEX, FRAME_DATA_INDEX }; enum DEVICES_IDS { ID_MASTER, //Master Controller ID_CONSOLE, //LCD Console ID_PC, //PC ID_AV_MUX, //Audio Video Multiplexer ID_IR_REMOTE, //Infra red transmitter ID_DEADBOLT, ID_RECEIVER_AMP, ID_SMS_CLIENT, ID_ETHERNET_VIRTUAL, ID_SPRINKLER_DEVICE, ID_SPRINKLER_INTERFACE, ID_DEADBOLT_INTERFACE, ID_NB_DEVICE_ID }; // Commands definitions enum MASTER_CMD { RX_MASTER_GET_STATUS, TX_MASTER_STATUS, TX_MASTER_ACK, RX_MASTER_SET_NET_INFO, RX_MASTER_GET_NET_INFO, TX_MASTER_NET_INFO, RX_MASTER_SEND_DEVICE_CMD, TX_MASTER_SEND_DEVICE_CMD_ACK, RX_MASTER_SET_WEATHER_INFO, TX_MASTER_SET_WEATHER_INFO_ACK, RX_MASTER_SET_MAIL_MSG, TX_MASTER_SET_MAIL_MSG_ACK, RX_MASTER_NEW_OUTLOOK_EMAILS, TX_MASTER_NEW_OUTLOOK_EMAILS_ACK, RX_MASTER_TODAYS_EVENTS, TX_MASTER_TODAYS_EVENTS_ACK }; //CONSOLE enum CONSOLE_CMD { RX_CONSOLE_GET_STATUS, TX_CONSOLE_STATUS, TX_CONSOLE_ACK, RX_START_CALIBRATION, RX_GET_CONSOLE_EVENT_MSG, TX_CONSOLE_EVENT_MSG, RX_CONSOLE_SHOW_CALLER_ID, RX_SET_TIME, RX_SET_WEATHER, RX_SEND_NEW_MAIL_MSG, RX_SEND_NEW_MAIL_MSG_ACK, RX_NEW_OUTLOOK_EMAILS, TX_NEW_OUTLOOK_EMAILS_ACK, RX_TODAYS_EVENTS, TX_TODAYS_EVENTS_ACK, LAST_CONSOLE_CMD }; enum IR_REMOTE_CMDS { TX_IR_REMOTE_ACK = 1, RX_GET_STATUS, TX_REMOTE_STATUS, RX_TRANSMIT_CMD, RX_LEARN_IR_CMD, TX_LEARN_IR_CMD_FINISHED, RX_GET_IR_DATA, TX_SEND_IR_DATA, RX_SET_IR_CMD, RX_SET_IR_DATA, RX_GET_IR_CMD, TX_SEND_IR_CMD, MAX_IR_REMOTE_CMD }; //The SMS remote interface commands enum SMS_CLIENT_CMDS { SMS_CLIENT_DEVICE_ACK = 1, SMS_CLIENT_DEVICE_STATUS_REQUEST, SMS_CLIENT_DEVICE_STATUS_RESPONSE, SMS_CLIENT_DEVICE_DID_INFO_REQUEST, SMS_CLIENT_DEVICE_DID_INFO_RESPONSE, SMS_CLIENT_DEVICE_GET_ALL_MSG_REQUEST, SMS_CLIENT_DEVICE_GET_ALL_MSG_RESPONSE, SMS_CLIENT_DEVICE_NEW_MSG_NOTIFICATION, SMS_CLIENT_DEVICE_SEND_SMS_REQUEST, SMS_CLIENT_DEVICE_SEND_SMS_ACK, SMS_CLIENT_DEVICE_GET_CONTACTS_REQUEST, SMS_CLIENT_DEVICE_GET_CONTACTS_RESPONSE,//12 SMS_CLIENT_DEVICE_CONTACTS_CHANGED_NOTIFICATION, SMS_CLIENT_DEVICE_MAX_MSG }; //The actual deadbolt device commands enum DEADBOLT_CMDS { DEADBOLT_DEVICE_ACK = 1, DEADBOLT_DEVICE_STATUS_REQUEST, DEADBOLT_DEVICE_STATUS_RESPONSE, MAX_DEADBOLT_DEVICE_CMD }; //The actual sprinkler module device commands enum SPRINKLER_DEVICE_CMDS { SPRINKLER_DEVICE_ACK = 1, SPRINKLER_DEVICE_STATUS_REQUEST, SPRINKLER_DEVICE_STATUS_RESPONSE, MAX_SPRINKLER_DEVICE_CMD }; //The sprinkler interface commands enum SPRINKLER_INTERFACE_CMDS { SPRINKLER_INTERFACE_ACK = 1, SPRINKLER_INTERFACE_STATUS_REQUEST, SPRINKLER_INTERFACE_STATUS_RESPONSE, MAX_SPRINKLER_INTERFACE_CMD }; enum ETHERNET_NETWORK_VIRTUAL_CMDS { ETH_NETWK_DEVICE_INFO_REQUEST = 0xD0, ETH_NETWK_DEVICE_INFO_RESPONSE, ETH_NETWK_SET_DEVICE_INFO_ACK, ETH_NETWK_CONNECTION_REFUSED, MAX_ETHERNET_NETWORK_VIRTUAL_CMDS }; #endif