Subversion Repositories HomeAutomation

Rev

Rev 342 | Blame | Last modification | View Log | SVN | RSS feed

  1. /*********************************************************************
  2.  *
  3.  *   Defines functs and funccs and other global definitions.
  4.  *
  5.  *********************************************************************
  6.  * FileName:            $HeadURL: https://svn.auml.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/Include/funcdefs.h $
  7.  * Last changed:    $LastChangedDate: 2007-03-04 14:49:20 +0100 (Sun, 04 Mar 2007) $
  8.  * By:          $LastChangedBy: johboh $
  9.  * Revision:        $Revision: 358 $
  10.  ********************************************************************/
  11.  
  12. #include <typedefs.h>
  13.  
  14. #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.                 // NODE_ID_EE = NODE_HAS_ID if has correct ID, otherwise use DEFAULT_ID and DEFAULT_NID
  17.                 // NODE_ID_EE + 1 = ID
  18. #define NODE_HAS_ID 0x2A    // Value which indicate valid ID and NID.
  19.  
  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.  
  26. typedef struct _CAN_BOOT_PACKET
  27. {
  28.     BOOT_TYPE type; //3
  29.     BYTE    offset; //8
  30.     BYTE       rid; //8
  31. } CAN_BOOT_PACKET;
  32.  
  33.  
  34. typedef struct _CAN_PGM_PACKET
  35. {
  36.     PGM_CLASS class; //4
  37.     WORD         id; //15
  38. } CAN_PGM_PACKET;
  39.  
  40. typedef struct _CAN_PACKET
  41. {
  42.     PACKET_TYPE     type;
  43.     CAN_PGM_PACKET   pgm;
  44.     CAN_BOOT_PACKET boot;
  45.     BYTE             sid; //8
  46.     BYTE          length;
  47.     BYTE         data[8];
  48. } CAN_PACKET;
  49.  
  50.  
  51.  
  52. // When CAN_BOOT_PACKET.type==btADDR
  53. // data[2] = ADDRU
  54. // data[1] = ADDRH
  55. // data[0] = ADDRL
  56.  
  57. // When CAN_BOOT_PACKET.type==btCRC
  58. // data[4] = CRCH
  59. // data[3] = CRCL
  60. // data[2] = ADDRU
  61. // data[1] = ADDRH
  62. // data[0] = ADDRL
  63.  
  64. // When CAN_BOOT_PACKET.type==btCHANGEID
  65. // 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.  
  110.