-
Notifications
You must be signed in to change notification settings - Fork 2
/
EasyCon_API.h
146 lines (117 loc) · 3.86 KB
/
EasyCon_API.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#ifndef _EASY_CON_API_H_
#define _EASY_CON_API_H_
/**********************************************************************/
// some incude files for var type, you need change to your device framework files
/**********************************************************************/
#include <stdint.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
#include "HID.h"
/**********************************************************************/
// EasyCon API, you need set the MEM_SIZE that could use in your SRAM and (EEPROM or Flash)
// EEPROM or Flash need 4 bytes more than MEM_SIZE, so make sure you have enough space for it
/**********************************************************************/
// need EEPROM or Flash Size = MEM_SIZE + 4
#define MEM_SIZE 924
// hid report interval some usb must >7 AVR jsut 2 enough
// too small will make NS cant recognize
#define ECHO_INTERVAL 2
/**********************************************************************/
// EasyCon API, you need to call them in somewhere
/**********************************************************************/
/* the main tick for 1 ms
* need call in a 1 ms timer
*/
extern void EasyCon_tick(void);
/* serial state machine
* need call when get a new serial data from uart
* no data return -1
*/
extern void EasyCon_serial_task(int16_t byte);
/* check if need send report.
* need call in hid send task
*/
extern bool EasyCon_need_send_report(void);
/* need call when a report sent
*
*/
extern void EasyCon_report_send_callback(void);
/**********************************************************************/
// EasyCon API, you need to implement all of the API
/**********************************************************************/
/* EasyCon read 1 byte from E2Prom or flash
* need implement
*/
extern uint8_t EasyCon_read_byte(uint16_t addr);
/* EasyCon write n byte to E2Prom or flash
* need implement
*/
extern void EasyCon_write_data(uint16_t addr,uint8_t* data,uint16_t len);
/* EasyCon start read to E2Prom or flash callback
* optional implement
*/
extern void EasyCon_read_start();
/* EasyCon start write to E2Prom or flash callback
* optional implement
*/
extern void EasyCon_write_start(uint8_t mode);
/* EasyCon write to E2Prom or flash end callback
* optional implement
*/
extern void EasyCon_write_end(uint8_t mode);
/* running led on
* need implement
*/
extern void EasyCon_runningLED_on(void);
/* running led off
* need implement
*/
extern void EasyCon_runningLED_off(void);
/* data led blink
* need implement,no block
*/
extern void EasyCon_blink_led(void);
/* serial send 1 byte
* need implement,block
*/
extern void EasyCon_serial_send(const char DataByte);
// about hid report
/* reset hid report to default.
* need implement
*/
extern void reset_hid_report(void);
/* set left stick in hid report.
* need implement
*/
extern void set_left_stick(const uint8_t LX, const uint8_t LY);
/* set right stick in hid report.
* need implement
*/
extern void set_right_stick(const uint8_t RX, const uint8_t RY);
/* set button in hid report.
* need implement
*/
extern void set_buttons(const uint16_t Button);
/* set button press in hid report.
* need implement
*/
extern void press_buttons(const uint16_t Button);
/* set buttons release in hid report.
* need implement
*/
extern void release_buttons(const uint16_t Button);
/* set HAT in hid report.
* need implement
*/
extern void set_HAT_switch(const uint8_t HAT);
/**********************************************************************/
// here is some func that could control EasyCon, no need implement
/**********************************************************************/
extern void EasyCon_script_init(void);
extern void EasyCon_script_task(void);
extern void EasyCon_script_auto_start(void);
extern bool EasyCon_is_script_running(void);
extern void EasyCon_script_start(void);
extern void EasyCon_script_stop(void);
#endif