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