Subversion Repositories HomeAutomation

Rev

Details | Last modification | View Log | SVN | RSS feed

Rev Author Line No. Line
61 jimmy 1
#ifndef PROTOCOL_H_
2
#define PROTOCOL_H_
3
 
4
 
5
/*-----------------------------------------------------------------------------
6
 * Includes
7
 *---------------------------------------------------------------------------*/
8
#include <inttypes.h>
9
#include <can.h>
10
 
11
 
12
/*-----------------------------------------------------------------------------
13
 * Type Definitions
14
 *---------------------------------------------------------------------------*/
15
/**
16
 * Protocol Message Type.
17
 * A protocol message has the following structure:
18
 *      -------- 29bit IDENT --------- -- 8 bytes data --
19
 *      <FUNC><RID><SID><RIDEN><RESVD>  <data7>...<data0>
20
 */
21
typedef struct {
22
    /*
23
     * Header section.
24
     */
25
    union {
26
        uint32_t Raw;
27
 
28
        struct {
29
            unsigned RESVD:2;
30
            unsigned RIDEN:1;
31
            unsigned SID:7;
32
            unsigned RID:7;
33
            unsigned FUNC:12;
34
            unsigned __unused:3;    /* pad to 32bit */
35
        } Fields;
36
    } Header;
37
 
38
    /*
39
     * Data section.
40
     */
41
    union {
42
        /* read as 8bit unsigned data */
43
        uint8_t bytes[8];
44
 
45
        /* read as 16bit unsigned data */
46
        uint16_t words[4];
47
 
48
        /* read as 32bit unsigned data */
49
        uint32_t dwords[2];
50
    } Data;
51
} ProtocolMessage_t;
52
 
53
 
54
/*-----------------------------------------------------------------------------
55
 * Public Function Prototypes
56
 *---------------------------------------------------------------------------*/
127 jimmy 57
void ProtocolParseCanMessage(Can_Message_t *cmsg);
61 jimmy 58
 
59
 
60
#endif /*PROTOCOL_H_*/