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