xref: /OK3568_Linux_fs/external/rkwifibt-app/test/rkbtsource_common.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun #ifndef __RK_BT_SOURCE_COMMON__
2*4882a593Smuzhiyun #define __RK_BT_SOURCE_COMMON__
3*4882a593Smuzhiyun 
4*4882a593Smuzhiyun #ifndef msleep
5*4882a593Smuzhiyun #define msleep(x) usleep(x * 1000)
6*4882a593Smuzhiyun #endif
7*4882a593Smuzhiyun 
8*4882a593Smuzhiyun #define PRINT_FLAG_RKBTSOURCE "[RK_BT_RKBTSOURCE]"
9*4882a593Smuzhiyun #define PRINT_FLAG_SCAN "[RK_BT_SCAN]"
10*4882a593Smuzhiyun #define PRINT_FLAG_ERR "[RK_BT_ERROR]"
11*4882a593Smuzhiyun #define PRINT_FLAG_SUCESS "[RK_BT_SUCESS]"
12*4882a593Smuzhiyun 
13*4882a593Smuzhiyun #define RKBTSOURCE_SERVER_SOCKET_PATH "/tmp/rockchip_btsource_server"
14*4882a593Smuzhiyun #define RKBTSOURCE_CLIENT_SOCKET_PATH "/tmp/rockchip_btsource_client"
15*4882a593Smuzhiyun 
16*4882a593Smuzhiyun /* The order must correspond to bt_command_table */
17*4882a593Smuzhiyun enum rk_bt_source_cmd {
18*4882a593Smuzhiyun 	RK_BT_INIT = 1,
19*4882a593Smuzhiyun 	RK_BT_DEINIT,
20*4882a593Smuzhiyun 	RK_BT_SCAN_ON,
21*4882a593Smuzhiyun 	RK_BT_SCAN_OFF,
22*4882a593Smuzhiyun 	RK_BT_SOURCE_OPEN,
23*4882a593Smuzhiyun 	RK_BT_SOURCE_CLOSE,
24*4882a593Smuzhiyun 	RK_BT_SOURCE_CONNECT,
25*4882a593Smuzhiyun 	RK_BT_SOURCE_DISCONNECT,
26*4882a593Smuzhiyun 	RK_BT_SOURCE_REMOVE,
27*4882a593Smuzhiyun 	RK_BT_GET_PAIRED_DEVICES,
28*4882a593Smuzhiyun 	RK_BT_SPP_LISTEN,
29*4882a593Smuzhiyun 	RK_BT_SPP_CONNECT,
30*4882a593Smuzhiyun 	RK_BT_SPP_WRITE,
31*4882a593Smuzhiyun 	RK_BT_SPP_CLOSE,
32*4882a593Smuzhiyun 	RK_BT_PING,
33*4882a593Smuzhiyun };
34*4882a593Smuzhiyun 
35*4882a593Smuzhiyun enum rk_bt_evt {
36*4882a593Smuzhiyun 	RK_BT_EVT_INIT_OK = 1,
37*4882a593Smuzhiyun 	RK_BT_EVT_DEINIT_OK,
38*4882a593Smuzhiyun 	RK_BT_EVT_SCAN_ON,
39*4882a593Smuzhiyun 	RK_BT_EVT_SCANNING,
40*4882a593Smuzhiyun 	RK_BT_EVT_SCAN_OFF,
41*4882a593Smuzhiyun 	RK_BT_EVT_SCAN_ADD_DEV,
42*4882a593Smuzhiyun 	RK_BT_EVT_SCAN_CHANGE_DEV,
43*4882a593Smuzhiyun 	RK_BT_EVT_SCAN_REMOVE_DEV,
44*4882a593Smuzhiyun 	RK_BT_EVT_SOURCE_OPEN,
45*4882a593Smuzhiyun 	RK_BT_EVT_SOURCE_CLOSE,
46*4882a593Smuzhiyun 	RK_BT_EVT_SOURCE_CONNECTED,
47*4882a593Smuzhiyun 	RK_BT_EVT_SOURCE_DISCONNECTED,
48*4882a593Smuzhiyun 	RK_BT_EVT_SOURCE_CONNECT_FAILED,
49*4882a593Smuzhiyun 	RK_BT_EVT_SOURCE_REMOVED,
50*4882a593Smuzhiyun 	RK_BT_EVT_SPP_CONNECTED,
51*4882a593Smuzhiyun 	RK_BT_EVT_SPP_DISCONNECTED,
52*4882a593Smuzhiyun 	RK_BT_EVT_SPP_CONNECT_FAILED,
53*4882a593Smuzhiyun 	RK_BT_EVT_SPP_CLIENT_FD,
54*4882a593Smuzhiyun 	RK_BT_EVT_PAIRED_DEV,
55*4882a593Smuzhiyun 	RK_BT_EVT_PONG,
56*4882a593Smuzhiyun };
57*4882a593Smuzhiyun 
58*4882a593Smuzhiyun typedef struct {
59*4882a593Smuzhiyun 	enum rk_bt_evt evt_id;
60*4882a593Smuzhiyun 	const char *desc;
61*4882a593Smuzhiyun } bt_evt_str_t;
62*4882a593Smuzhiyun 
63*4882a593Smuzhiyun static bt_evt_str_t bt_evt_str_table[] = {
64*4882a593Smuzhiyun 	{0, "rkbt null"},
65*4882a593Smuzhiyun 	{RK_BT_EVT_INIT_OK, "rkbt init ok"},
66*4882a593Smuzhiyun 	{RK_BT_EVT_DEINIT_OK, "rkbt deinit ok"},
67*4882a593Smuzhiyun 	{RK_BT_EVT_SCAN_ON, "rkbt scan on ok"},
68*4882a593Smuzhiyun 	{RK_BT_EVT_SCANNING, "rkbt scaning"},
69*4882a593Smuzhiyun 	{RK_BT_EVT_SCAN_OFF, "rkbt scan off"},
70*4882a593Smuzhiyun 	{RK_BT_EVT_SCAN_ADD_DEV, "rkbt scan found dev"},
71*4882a593Smuzhiyun 	{RK_BT_EVT_SCAN_REMOVE_DEV, "rkbt scan disapper dev"},
72*4882a593Smuzhiyun 	{RK_BT_EVT_SOURCE_OPEN, "rkbt a2dp source open"},
73*4882a593Smuzhiyun 	{RK_BT_EVT_SOURCE_CONNECTED, "rkbt connect ok"},
74*4882a593Smuzhiyun 	{RK_BT_EVT_SOURCE_DISCONNECTED, "rkbt disconnect ok"},
75*4882a593Smuzhiyun 	{RK_BT_EVT_SOURCE_REMOVED, "rkbt remove ok"},
76*4882a593Smuzhiyun };
77*4882a593Smuzhiyun 
78*4882a593Smuzhiyun #define RKBTSOURCE_MSG_INIT_OK "rkbt init ok"
79*4882a593Smuzhiyun #define RKBTSOURCE_MSG_DEINIT_OK "rkbt deinit ok"
80*4882a593Smuzhiyun #define RKBTSOURCE_MSG_SCAN_OFF "rkbt scan off"
81*4882a593Smuzhiyun #define RKBTSOURCE_MSG_CONNECT_OK "rkbt connect ok"
82*4882a593Smuzhiyun #define RKBTSOURCE_MSG_CONNECT_ERR "rkbt connect err"
83*4882a593Smuzhiyun #define RKBTSOURCE_MSG_DISCONNECT_OK "rkbt disconnect ok"
84*4882a593Smuzhiyun #define RKBTSOURCE_MSG_REMOVE_OK "rkbt remove ok"
85*4882a593Smuzhiyun #define RKBTSOURCE_MSG_ERR "rkbt exec err"
86*4882a593Smuzhiyun 
87*4882a593Smuzhiyun typedef struct {
88*4882a593Smuzhiyun 	char name[128];
89*4882a593Smuzhiyun 	char addr[18];
90*4882a593Smuzhiyun 	char role;
91*4882a593Smuzhiyun 	char change;
92*4882a593Smuzhiyun 	int rssi;
93*4882a593Smuzhiyun 	int is_connected;
94*4882a593Smuzhiyun } scan_device_t;
95*4882a593Smuzhiyun 
96*4882a593Smuzhiyun enum rk_bt_msg_type {
97*4882a593Smuzhiyun 	RK_BT_CMD = 1,
98*4882a593Smuzhiyun 	RK_BT_EVT,
99*4882a593Smuzhiyun };
100*4882a593Smuzhiyun 
101*4882a593Smuzhiyun typedef struct {
102*4882a593Smuzhiyun 	enum rk_bt_msg_type type;
103*4882a593Smuzhiyun 	char id;
104*4882a593Smuzhiyun 	char addr[24];
105*4882a593Smuzhiyun 	char data[24];
106*4882a593Smuzhiyun 	scan_device_t dev;
107*4882a593Smuzhiyun } bt_msg_t;
108*4882a593Smuzhiyun 
109*4882a593Smuzhiyun typedef struct {
110*4882a593Smuzhiyun 	const char *cmd;
111*4882a593Smuzhiyun 	int cmd_id;
112*4882a593Smuzhiyun } bt_commands_t;
113*4882a593Smuzhiyun 
114*4882a593Smuzhiyun static bt_commands_t bt_command_tbs[] = {
115*4882a593Smuzhiyun 	{"", NULL},
116*4882a593Smuzhiyun 	{"init bluetooth", RK_BT_INIT},
117*4882a593Smuzhiyun 	{"deinit bluetooth", RK_BT_DEINIT},
118*4882a593Smuzhiyun 	{"open a2dp source", RK_BT_SOURCE_OPEN},
119*4882a593Smuzhiyun 	{"close a2dp source", RK_BT_SOURCE_OPEN},
120*4882a593Smuzhiyun 	{"scan on", RK_BT_SCAN_ON},
121*4882a593Smuzhiyun 	{"scan off", RK_BT_SCAN_OFF},
122*4882a593Smuzhiyun 	{"connect [address]", RK_BT_SOURCE_CONNECT},
123*4882a593Smuzhiyun 	{"disconnect [address]", RK_BT_SOURCE_DISCONNECT},
124*4882a593Smuzhiyun 	{"remove [address]", RK_BT_SOURCE_REMOVE},
125*4882a593Smuzhiyun 	{"get paired devices", RK_BT_GET_PAIRED_DEVICES},
126*4882a593Smuzhiyun 	{"spp listen", RK_BT_SPP_LISTEN},
127*4882a593Smuzhiyun 	{"spp connect", RK_BT_SPP_CONNECT},
128*4882a593Smuzhiyun 	{"spp write", RK_BT_SPP_WRITE},
129*4882a593Smuzhiyun 	{"spp close", RK_BT_SPP_CLOSE},
130*4882a593Smuzhiyun 	{"ping", RK_BT_PING},
131*4882a593Smuzhiyun };
132*4882a593Smuzhiyun 
133*4882a593Smuzhiyun #define BT_SHARE_MSG_MAGIC 0x42544D41
134*4882a593Smuzhiyun #define BT_CMD_CONNECT 1
135*4882a593Smuzhiyun #define BT_CMD_DISCONNECT 2
136*4882a593Smuzhiyun #define BT_CMD_SCAN_DEV 3
137*4882a593Smuzhiyun #define BT_CMD_SCAN_START 4
138*4882a593Smuzhiyun #define BT_CMD_SCAN_STOP 5
139*4882a593Smuzhiyun 
140*4882a593Smuzhiyun typedef struct{
141*4882a593Smuzhiyun 	char dev_name[128];
142*4882a593Smuzhiyun 	char addr[18];
143*4882a593Smuzhiyun 	int signal_qua;
144*4882a593Smuzhiyun 	char online;
145*4882a593Smuzhiyun 	char connect;
146*4882a593Smuzhiyun } bluetooch_dev_t;
147*4882a593Smuzhiyun 
148*4882a593Smuzhiyun #endif
149