示例#1
0
static int set_remote_device_property(bt_bdaddr_t *remote_addr,
						const bt_property_t *property)
{
	struct hal_cmd_set_remote_device_prop *cmd;
	uint8_t buf[sizeof(*cmd) + property->len];

	DBG("bdaddr: %s prop: %s", bdaddr2str(remote_addr),
				bt_property_type_t2str(property->type));

	if (!interface_ready())
		return BT_STATUS_NOT_READY;

	cmd = (void *) buf;

	memcpy(cmd->bdaddr, remote_addr, sizeof(cmd->bdaddr));

	/* type match IPC type */
	cmd->type = property->type;
	cmd->len = property->len;
	memcpy(cmd->val, property->val, property->len);

	return hal_ipc_cmd(HAL_SERVICE_ID_BLUETOOTH,
					HAL_OP_SET_REMOTE_DEVICE_PROP,
					sizeof(buf), cmd, 0, NULL, NULL);
}
示例#2
0
static int get_adapter_property(bt_property_type_t type)
{
	struct hal_cmd_get_adapter_prop cmd;

	DBG("prop: %s (%d)", bt_property_type_t2str(type), type);

	if (!interface_ready())
		return BT_STATUS_NOT_READY;

	/* type match IPC type */
	cmd.type = type;

	return hal_ipc_cmd(HAL_SERVICE_ID_BLUETOOTH, HAL_OP_GET_ADAPTER_PROP,
					sizeof(cmd), &cmd, 0, NULL, NULL);
}
示例#3
0
static int get_remote_device_property(bt_bdaddr_t *remote_addr,
						bt_property_type_t type)
{
	struct hal_cmd_get_remote_device_prop cmd;

	DBG("bdaddr: %s prop: %s", bdaddr2str(remote_addr),
						bt_property_type_t2str(type));

	if (!interface_ready())
		return BT_STATUS_NOT_READY;

	memcpy(cmd.bdaddr, remote_addr, sizeof(cmd.bdaddr));

	/* type match IPC type */
	cmd.type = type;

	return hal_ipc_cmd(HAL_SERVICE_ID_BLUETOOTH,
					HAL_OP_GET_REMOTE_DEVICE_PROP,
					sizeof(cmd), &cmd, 0, NULL, NULL);
}
const char *btproperty2str(const bt_property_t *property)
{
	static char buf[4096];
	char *p;

	p = buf + sprintf(buf, "type=%s len=%d val=",
					bt_property_type_t2str(property->type),
					property->len);

	switch (property->type) {
	case BT_PROPERTY_BDNAME:
	case BT_PROPERTY_REMOTE_FRIENDLY_NAME:
		snprintf(p, property->len + 1, "%s",
					((bt_bdname_t *) property->val)->name);
		break;

	case BT_PROPERTY_BDADDR:
		sprintf(p, "%s", bdaddr2str((bt_bdaddr_t *) property->val));
		break;

	case BT_PROPERTY_CLASS_OF_DEVICE:
		sprintf(p, "%06x", *((int *) property->val));
		break;

	case BT_PROPERTY_TYPE_OF_DEVICE:
		sprintf(p, "%s", bt_device_type_t2str(
				*((bt_device_type_t *) property->val)));
		break;

	case BT_PROPERTY_REMOTE_RSSI:
		sprintf(p, "%d", *((char *) property->val));
		break;

	case BT_PROPERTY_ADAPTER_SCAN_MODE:
		sprintf(p, "%s",
			bt_scan_mode_t2str(*((bt_scan_mode_t *) property->val)));
		break;

	case BT_PROPERTY_ADAPTER_DISCOVERY_TIMEOUT:
		sprintf(p, "%d", *((int *) property->val));
		break;

	case BT_PROPERTY_ADAPTER_BONDED_DEVICES:
		{
			int count = property->len / sizeof(bt_bdaddr_t);
			char *ptr = property->val;

			strcat(p, "{");

			while (count--) {
				strcat(p, bdaddr2str((bt_bdaddr_t *) ptr));
				if (count)
					strcat(p, ", ");
				ptr += sizeof(bt_bdaddr_t);
			}

			strcat(p, "}");

		}
		break;

	case BT_PROPERTY_UUIDS:
		{
			int count = property->len / sizeof(bt_uuid_t);
			uint8_t *ptr = property->val;

			strcat(p, "{");

			while (count--) {
				strcat(p, btuuid2str(ptr));
				if (count)
					strcat(p, ", ");
				ptr += sizeof(bt_uuid_t);
			}

			strcat(p, "}");

		}
		break;

	case BT_PROPERTY_SERVICE_RECORD:
		{
			bt_service_record_t *rec = property->val;

			sprintf(p, "{%s, %d, %s}", btuuid2str(rec->uuid.uu),
						rec->channel, rec->name);
		}
		break;

	default:
		sprintf(p, "%p", property->val);
	}

	return buf;
}