Subversion Repositories Code-Repo

Rev

Rev 274 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 274 Rev 276
Line 2... Line 2...
2
#define	CONTROLLERS_H
2
#define	CONTROLLERS_H
3
 
3
 
4
#define CONTROLLER_CMD_READ     0xA
4
#define CONTROLLER_CMD_READ     0xA
5
#define CONTROLLER_CMD_WRITE    0xB
5
#define CONTROLLER_CMD_WRITE    0xB
6
#define CONTROLLER_CMD_RESET    0xC
6
#define CONTROLLER_CMD_RESET    0xC
-
 
7
#define CONTROLLER_CMD_ACTIVE   0xD
7
 
8
 
8
#define CONTROLLER_BTN_DEFAULT  0xC0
-
 
9
#define CONTROLLER_LED_DEFAULT  0x00
-
 
10
 
-
 
11
#define CONTROLLER_PREFIX_ADDRESS   0xA0
9
#define CONTROLLER_PREFIX_ADDRESS   0x10
12
#define CONTROLLER_START_ADDRESS    0x01
10
#define CONTROLLER_START_ADDRESS    0x01
13
#define CONTROLLER_END_ADDRESS      0x08
11
#define CONTROLLER_END_ADDRESS      0x08
14
 
12
 
15
#define CONTROLLER_MAX_COUNT    8
13
#define CONTROLLER_MAX_COUNT    4
-
 
14
 
-
 
15
#define CONTROLLER_BRIGHTNESS_HIGH  0x80
-
 
16
 
-
 
17
typedef union {
-
 
18
    struct {
-
 
19
        unsigned BTN_L_N    :1;
-
 
20
        unsigned BTN_L_E    :1;
-
 
21
        unsigned BTN_R_E    :1;
-
 
22
        unsigned BTN_R_N    :1;
-
 
23
        unsigned BTN_R_S    :1;
-
 
24
        unsigned BTN_R_W    :1;
-
 
25
        unsigned BTN_L_S    :1;
-
 
26
        unsigned BTN_L_W    :1;
-
 
27
    };
-
 
28
    uint8_t w;
-
 
29
} CTRL_BTN_STATUS;
-
 
30
 
-
 
31
typedef union {
-
 
32
    struct {
-
 
33
        uint8_t LED_0;
-
 
34
        uint8_t LED_1;
-
 
35
        uint8_t LED_2;
-
 
36
        uint8_t LED_3;
-
 
37
        uint8_t LED_4;
-
 
38
        uint8_t LED_5;
-
 
39
        uint8_t LED_6;
-
 
40
        uint8_t LED_7;
-
 
41
        uint8_t LED_N;
-
 
42
        uint8_t LED_W;
-
 
43
        uint8_t LED_E;
-
 
44
        uint8_t LED_S;
-
 
45
        uint8_t LED_A;
-
 
46
        uint8_t LED_B;
-
 
47
        uint8_t LED_C;
-
 
48
        uint8_t LED_D;
-
 
49
    } single;
-
 
50
    uint8_t w[16];
-
 
51
} CTRL_LED_VALUES;
16
 
52
 
17
typedef struct {
53
typedef struct {
18
    uint8_t connected_controllers[CONTROLLER_MAX_COUNT];
54
    void (*change_callback)(uint8_t controller, CTRL_BTN_STATUS values);
19
    uint8_t led_status[CONTROLLER_MAX_COUNT][2];
-
 
20
    uint8_t btn_prev[CONTROLLER_MAX_COUNT];
-
 
21
    uint8_t btn_last[CONTROLLER_MAX_COUNT];
-
 
22
 
55
 
23
    uint8_t connected_count;
56
    uint8_t connected_count;
-
 
57
    uint8_t connected_controllers[CONTROLLER_MAX_COUNT];
-
 
58
    CTRL_LED_VALUES led_status[CONTROLLER_MAX_COUNT];
-
 
59
    CTRL_BTN_STATUS btn_prev[CONTROLLER_MAX_COUNT];
-
 
60
    CTRL_BTN_STATUS btn_curr[CONTROLLER_MAX_COUNT];
-
 
61
    
24
} CONTROLLER_DATA;
62
} CONTROLLER_DATA;
25
 
63
 
26
void Controller_Init(CONTROLLER_DATA *data);
64
void Controller_Init(CONTROLLER_DATA *data,
-
 
65
        void (*change_callback)(uint8_t controller, CTRL_BTN_STATUS values));
27
void Controller_Poll_Connected(void);
66
void Controller_Poll_Connected(void);
28
void Controller_Update(void);
67
void Controller_Update(void);
29
void Controller_Set_Leds(uint8_t controller, uint16_t value);
68
void Controller_Set_Left_Leds(uint8_t controller, uint8_t value);
-
 
69
void Controller_Set_Middle_Leds(uint8_t controller, uint8_t value);
-
 
70
void Controller_Set_Right_Leds(uint8_t controller, uint8_t value);
-
 
71
 
-
 
72
uint8_t Controller_Get_Connected(void);
-
 
73
void Controller_Set_Active(uint8_t controller);
30
uint8_t Controller_Query(uint8_t controller);
74
void Controller_Set_Idle(uint8_t controller);
31
 
75
 
32
#endif	/* CONTROLLERS_H */
76
#endif	/* CONTROLLERS_H */
33
 
77