Subversion Repositories HomeAutomation

Rev

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

  1. /*********************************************************************
  2.  *
  3.  *                  CAN.c header file
  4.  *
  5.  *********************************************************************
  6.  * FileName:        CAN.h
  7.  *
  8.  * Author               Date    Comment
  9.  *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  10.  * Johan Böhlin     21-10-06    Original        (Rev 1.0)
  11.  ********************************************************************/
  12. // $Id: CAN.h 80 2006-11-11 20:22:39Z johboh $
  13.  
  14.  
  15. #ifndef CAN_H
  16. #define CAN_H
  17.  
  18. #include <CANdefs.h>
  19. #include <compiler.h>
  20. #include <typedefs.h>
  21.  
  22.  
  23. typedef struct _CAN_PROTO_MESSAGE
  24. {
  25.     BYTE funct; //4
  26.     WORD funcc; //10
  27.     BYTE nid; //6
  28.     WORD sid; //9
  29.     BYTE data_length;//5
  30.     BOOL remote_request; //1
  31.     BYTE data[8];
  32. } CAN_PROTO_MESSAGE;
  33.  
  34.  
  35. //<FUNCT>
  36. #define FUNCT_BOOTLOADER 0x0
  37.  
  38. //<FUNCC> configuration packet
  39. #define FUNCC_BOOT_INIT 0b0000000001 //för att initiera en programmering.
  40. #define FUNCC_BOOT_ADDR 0b0000000010  //för att ändra adress.
  41. #define FUNCC_BOOT_DONE 0b0000000101  //för att avsluta en programmering.
  42.  
  43. //<FUNCC> program packet
  44. #define FUNCC_BOOT_PGM 0b0000000011 //för att indikera att detta är programdata som ska skrivas.
  45.  
  46. //<FUNCC> ack packet
  47. #define FUNCC_BOOT_ACK 0b0000000100 //för att indikera att detta är en ACK.
  48.  
  49. #define MY_ID 0x78
  50. #define MY_NID 0x00
  51.  
  52. #define ADDRL_INDEX 0
  53. #define ADDRH_INDEX 1
  54. #define ADDRU_INDEX 2
  55. #define RID_LOW_INDEX 4
  56. #define RID_HIGH_INDEX 5
  57. #define ERR_INDEX 4
  58.  
  59. //<ERR> 8 bitar feltyp
  60. #define ERR_NO_ERROR 0x00 //= inget fel
  61. #define ERR_ERROR 0x01 //= fel
  62.  
  63.  
  64. typedef enum {PRIO_LOWEST=0,PRIO_LOW=1,PRIO_HIGH=2,PRIO_HIGEST=3} CAN_PRIORITY;
  65.  
  66.  
  67. void canInit(void);
  68. BOOL canSendMessage(CAN_PROTO_MESSAGE cm, CAN_PRIORITY prio);
  69.  
  70. #endif //CAN.h
  71.