Rev 339 | Blame | Last modification | View Log | SVN | RSS feed
/*********************************************************************** Defines functs and funccs and other global definitions.*********************************************************************** FileName: $HeadURL: https://svn.auml.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/Include/funcdefs.h $* Last changed: $LastChangedDate: 2007-02-25 21:15:41 +0100 (Sun, 25 Feb 2007) $* By: $LastChangedBy: johboh $* Revision: $Revision: 341 $********************************************************************/#include <typedefs.h>#define DEFAULT_ID 0x78 // Default ID for bootloader/node when no id is set.#define NODE_ID_EE 0x00 // EEPROM first index where to look for ID and NID.// NODE_ID_EE = NODE_HAS_ID if has correct ID, otherwise use DEFAULT_ID and DEFAULT_NID// NODE_ID_EE + 1 = ID#define NODE_HAS_ID 0x2A // Value which indicate valid ID and NID.typedef enum _PACKET_TYPE {ptBOOT=0x0,ptPGM=0x1} PACKET_TYPE;typedef enum _BOOT_TYPE {btADDR=0x0,btPGM=0x1,btDONE=0x2,btACK=0x4,btNACK=0x5,btCRC=0x6,btCHANGEID=0x7} BOOT_TYPE;typedef enum _PGM_CLASS {pcCTRL=0x0,pcSENSOR=0x1,pcACTUATOR=0x2} PGM_CLASS;typedef struct _CAN_BOOT_PACKET{BOOT_TYPE type; //3BYTE offset; //8BYTE rid; //8} CAN_BOOT_PACKET;typedef struct _CAN_PGM_PACKET{PGM_CLASS class; //4WORD id; //15} CAN_PGM_PACKET;typedef struct _CAN_PACKET{PACKET_TYPE type;CAN_PGM_PACKET pgm;CAN_BOOT_PACKET boot;BYTE sid; //8BYTE length;BYTE data[8];} CAN_PACKET;// When CAN_BOOT_PACKET.type==btADDR// data[2] = ADDRU// data[1] = ADDRH// data[0] = ADDRL// When CAN_BOOT_PACKET.type==btCRC// data[4] = CRCH// data[3] = CRCL// data[2] = ADDRU// data[1] = ADDRH// data[0] = ADDRL// When CAN_BOOT_PACKET.type==btCHANGEID// data[0] = new idtypedef enum _PGM_CTRL_TYPE {pctBOOTBOOT=0x0,pctAPPBOOT=0x1,pctHEARTBEAT=0x2} PGM_CTRL_TYPE;// When CAN_PGM_PACKET.type==pcCTRL// When CAN_PGM_PACKET.id==pctBOOTBOOT// data[0] = startup reasontypedef enum _PGM_SENSOR_TYPE {pstIR=0x0,pstTEMP_INSIDE=0x1, pstTEMP_OUTSIDE=0x2, pstTEMP_FREEZER=0x3, pstTEMP_REFRIGERATOR=0x4,pstDOOR_FREEZER=0x5, pstDOOR_REFRIGERATOR=0x6,pstBLIND_TR=0x7} PGM_SENSOR_TYPE;// When CAN_PGM_PACKET.type==pcSENSOR// When CAN_PGM_PACKET.id==pstIR// data[3] = type// data[2] = toogle// data[1] = addr// data[0] = data// When CAN_PGM_PACKET.id==pstTEMP_*// data[1] = integer value -127 to 127// data[0] = decimal value 0-9// When CAN_PGM_PACKET.id==pstBLIND_*// data[0] = Precent value 0-100typedef enum _PGM_ACTUATOR_TYPE {patBLIND_TR=0x7} PGM_ACTUATOR_TYPE;// When CAN_PGM_PACKET.type==pcACTUATOR// When CAN_PGM_PACKET.id==pstBLIND_*// data[0] = Precent value 0-100