Rev 358 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed
| Rev 358 | Rev 363 | ||
|---|---|---|---|
| Line 2... | Line 2... | ||
| 2 | * |
2 | * |
| 3 | * Defines functs and funccs and other global definitions. |
3 | * Defines functs and funccs and other global definitions. |
| 4 | * |
4 | * |
| 5 | ********************************************************************* |
5 | ********************************************************************* |
| 6 | * FileName: $HeadURL: https://svn.auml.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/Include/funcdefs.h $ |
6 | * FileName: $HeadURL: https://svn.auml.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/Include/funcdefs.h $ |
| 7 | * Last changed: $LastChangedDate: 2007-03- |
7 | * Last changed: $LastChangedDate: 2007-03-13 18:29:20 +0100 (Tue, 13 Mar 2007) $ |
| 8 | * By: $LastChangedBy: johboh $ |
8 | * By: $LastChangedBy: johboh $ |
| 9 | * Revision: $Revision: |
9 | * Revision: $Revision: 363 $ |
| 10 | ********************************************************************/ |
10 | ********************************************************************/ |
| 11 | 11 | ||
| 12 | #include <typedefs.h> |
12 | #include <typedefs.h> |
| - | 13 | #include <pgmtypes.h> |
|
| 13 | 14 | ||
| 14 | #define DEFAULT_ID 0x78 // Default ID for bootloader/node when no id is set. |
15 | #define DEFAULT_ID 0x78 // Default ID for bootloader/node when no id is set. |
| 15 | #define NODE_ID_EE 0x00 // EEPROM first index where to look for ID and NID. |
16 | #define NODE_ID_EE 0x00 // EEPROM first index where to look for ID and NID. |
| 16 | // NODE_ID_EE = NODE_HAS_ID if has correct ID, otherwise use DEFAULT_ID and DEFAULT_NID |
17 | // NODE_ID_EE = NODE_HAS_ID if has correct ID, otherwise use DEFAULT_ID and DEFAULT_NID |
| 17 | // NODE_ID_EE + 1 = ID |
18 | // NODE_ID_EE + 1 = ID |
| 18 | #define NODE_HAS_ID 0x2A // Value which indicate valid ID and NID. |
19 | #define NODE_HAS_ID 0x2A // Value which indicate valid ID and NID. |
| 19 | 20 | ||
| 20 | - | ||
| 21 | - | ||
| 22 | typedef enum _PACKET_TYPE {ptBOOT=0x0,ptPGM=0x1} PACKET_TYPE; |
- | |
| 23 | typedef enum _BOOT_TYPE {btADDR=0x0,btPGM=0x1,btDONE=0x2,btACK=0x4,btNACK=0x5,btCRC=0x6,btCHANGEID=0x7} BOOT_TYPE; |
- | |
| 24 | typedef enum _PGM_CLASS {pcCTRL=0x0,pcSENSOR=0x1,pcACTUATOR=0x2} PGM_CLASS; |
- | |
| 25 | 21 | ||
| 26 | typedef struct _CAN_BOOT_PACKET |
22 | typedef struct _CAN_BOOT_PACKET |
| 27 | { |
23 | { |
| 28 | BOOT_TYPE type; //3 |
24 | BOOT_TYPE type; //3 |
| 29 | BYTE offset; //8 |
25 | BYTE offset; //8 |
| 30 | BYTE rid; //8 |
26 | BYTE rid; //8 |
| 31 | } CAN_BOOT_PACKET; |
27 | } CAN_BOOT_PACKET; |
| 32 | 28 | ||
| 33 | 29 | ||
| 34 | typedef struct _CAN_PGM_PACKET |
30 | typedef struct _CAN_PGM_PACKET |
| 35 | { |
31 | { |
| 36 | PGM_CLASS class; //4 |
32 | PGM_CLASS class; //4 |
| 37 | WORD id; //15 |
33 | WORD id; //15 |
| 38 | } CAN_PGM_PACKET; |
34 | } CAN_PGM_PACKET; |
| 39 | 35 | ||
| 40 | typedef struct _CAN_PACKET |
36 | typedef struct _CAN_PACKET |
| Line 44... | Line 40... | ||
| 44 | CAN_BOOT_PACKET boot; |
40 | CAN_BOOT_PACKET boot; |
| 45 | BYTE sid; //8 |
41 | BYTE sid; //8 |
| 46 | BYTE length; |
42 | BYTE length; |
| 47 | BYTE data[8]; |
43 | BYTE data[8]; |
| 48 | } CAN_PACKET; |
44 | } CAN_PACKET; |
| 49 | 45 | ||
| 50 | 46 | ||
| 51 | 47 | ||
| 52 | // When CAN_BOOT_PACKET.type==btADDR |
48 | // When CAN_BOOT_PACKET.type==btADDR |
| 53 | // data[2] = ADDRU |
49 | // data[2] = ADDRU |
| 54 | // data[1] = ADDRH |
50 | // data[1] = ADDRH |
| 55 | // data[0] = ADDRL |
51 | // data[0] = ADDRL |
| 56 | 52 | ||
| 57 | // When CAN_BOOT_PACKET.type==btCRC |
53 | // When CAN_BOOT_PACKET.type==btCRC |
| 58 | // data[4] = CRCH |
54 | // data[4] = CRCH |
| 59 | // data[3] = CRCL |
55 | // data[3] = CRCL |
| 60 | // data[2] = ADDRU |
56 | // data[2] = ADDRU |
| 61 | // data[1] = ADDRH |
57 | // data[1] = ADDRH |
| 62 | // data[0] = ADDRL |
58 | // data[0] = ADDRL |
| 63 | 59 | ||
| 64 | // When CAN_BOOT_PACKET.type==btCHANGEID |
60 | // When CAN_BOOT_PACKET.type==btCHANGEID |
| 65 | // data[0] = new id |
61 | // data[0] = new id |
| 66 | - | ||
| 67 | typedef enum _PGM_CTRL_TYPE {pctBOOTBOOT=0x0,pctAPPBOOT=0x1,pctHEARTBEAT=0x2} PGM_CTRL_TYPE; |
- | |
| 68 | // When CAN_PGM_PACKET.type==pcCTRL |
- | |
| 69 | // When CAN_PGM_PACKET.id==pctBOOTBOOT |
- | |
| 70 | // data[2] = startup reason |
- | |
| 71 | // data[1] = Bootloader version high byte. |
- | |
| 72 | // data[0] = Bootloader version low byte. |
- | |
| 73 | // When CAN_PGM_PACKET.id==pctAPPBOOT |
- | |
| 74 | // data[1] = Application version high byte. |
- | |
| 75 | // data[0] = Application version low byte. |
- | |
| 76 | - | ||
| 77 | typedef enum _PGM_SENSOR_TYPE { |
- | |
| 78 | pstIR=0x0, |
- | |
| 79 | pstTEMP_INSIDE=0x1, pstTEMP_OUTSIDE=0x2, pstTEMP_FREEZER=0x3, pstTEMP_REFRIGERATOR=0x4,pstTEMP_DOOR_OUTSIDE=0x8, |
- | |
| 80 | pstDOOR_FREEZER=0x5, pstDOOR_REFRIGERATOR=0x6,pstDOOR_OUTSIDE=0x09, |
- | |
| 81 | pstBLIND_TR=0x7 |
- | |
| 82 | } PGM_SENSOR_TYPE; |
- | |
| 83 | // When CAN_PGM_PACKET.type==pcSENSOR |
- | |
| 84 | // When CAN_PGM_PACKET.id==pstIR |
- | |
| 85 | // data[3] = type |
- | |
| 86 | // data[2] = toogle |
- | |
| 87 | // data[1] = addr |
- | |
| 88 | // data[0] = data |
- | |
| 89 | - | ||
| 90 | // When CAN_PGM_PACKET.id==pstTEMP_* |
- | |
| 91 | // data[1] = integer value -127 to 127 |
- | |
| 92 | // data[0] = decimal value 0-9 |
- | |
| 93 | - | ||
| 94 | // When CAN_PGM_PACKET.id==pstBLIND_* |
- | |
| 95 | // data[0] = Precent value 0-100 |
- | |
| 96 | - | ||
| 97 | typedef enum _PGM_ACTUATOR_TYPE { |
- | |
| 98 | patBLIND_TR=0x7 |
- | |
| 99 | } PGM_ACTUATOR_TYPE; |
- | |
| 100 | // When CAN_PGM_PACKET.type==pcACTUATOR |
- | |
| 101 | // When CAN_PGM_PACKET.id==pstBLIND_* |
- | |
| 102 | // data[0] = Precent value 0-100 |
- | |
| 103 | - | ||
| 104 | - | ||
| 105 | - | ||
| 106 | - | ||
| 107 | - | ||
| 108 | - | ||
| 109 | 62 | ||