static void cmd_status(int argcp, char **argvp) { resp_begin(rsp_STATUS); switch(conn_state) { case STATE_CONNECTING: send_sym(tag_CONNSTATE, st_CONNECTING); send_str(tag_DEVICE, opt_dst); break; case STATE_CONNECTED: send_sym(tag_CONNSTATE, st_CONNECTED); send_str(tag_DEVICE, opt_dst); break; case STATE_SCANNING: send_sym(tag_CONNSTATE, st_SCANNING); send_str(tag_DEVICE, opt_dst); break; case STATE_ADVERTISING: send_sym(tag_CONNSTATE, st_ADVERTISING); send_str(tag_DEVICE, opt_dst); break; default: send_sym(tag_CONNSTATE, st_DISCONNECTED); break; } send_uint(tag_MTU, opt_mtu); send_str(tag_SEC_LEVEL, opt_sec_level); resp_end(); }
static void resp_mgmt_with_data(unsigned int data) { resp_begin(rsp_MGMT); send_sym(tag_ERRCODE, err_SUCCESS); send_uint(tag_DATA, data); resp_end(); }
static void resp_error_comm(unsigned int bt_err) { resp_begin(rsp_ERROR); send_sym(tag_ERRCODE, err_COMM_ERR); // BT error code (BT spec Vol2 PartD) or 0 if NA send_uint(tag_BT_ERR, bt_err); resp_end(); }
static void cmd_info(int argcp, char **argvp) { struct hci_dev_info di = { 0 }; char s[18]; hci_devinfo(opt_src_idx, &di); if (ba2str(&di.bdaddr, s) != 17) memset(s, 0xFF, sizeof(s) - 1); resp_begin(rsp_MGMT); send_sym(tag_ERRCODE, err_SUCCESS); /* Always returns the programmed public bdaddr of the device */ send_str(tag_ADDR, s); send_str(tag_TYPE, "public"); resp_end(); }
static void resp_error(const char *errcode) { resp_begin(rsp_ERROR); send_sym(tag_ERRCODE, errcode); resp_end(); }
static void resp_mgmt(const char *errcode) { resp_begin(rsp_MGMT); send_sym(tag_ERRCODE, errcode); resp_end(); }