Esempio n. 1
0
/*
 * Set the Bluetooth adapter Device Class.
 *
 * Parameters:
 *     dd: A opened HCI device.
 *     cls: The new Device Class value.
 *
 * Returns:
 *     0 on success or a negative error code (defined in error.h) on failure.
 */
static int set_device_class(int dd, uint32_t cls)
{
	int errsv;  /* saved errno */

	if (hci_write_class_of_dev(dd, cls, 2000) < 0) {
		errsv = errno;
		log_ec(errsv, "Can't write HCI Device Class");
		return hidc_convert_errno(errsv);
	}

	return 0;
}
Esempio n. 2
0
/**
 * Spoofs the device class. cls is a string in the format 0xffffff.
 */
int spoof_device_class(int hdev, char *cls) {
	int s = hci_open_dev(hdev);
	if (s < 0) {
		LOGE("Cannot open device hci%d: %s (%d)\n", hdev, strerror(errno), errno);
		return errno;
	}
	uint32_t cod = strtoul(cls, NULL, 16);
	if (hci_write_class_of_dev(s, cod, 2000) < 0) {
		LOGE("Cannor write class for hci%d: %s(%d)\n", hdev, strerror(errno), errno);
		return errno;
	}
	return 0;

}
Esempio n. 3
0
/*
 * \brief This function writes the device class for a given device number.
 *
 * \param device_number  the device number
 * \param devclass       the device class to write
 *
 * \return 0 if successful, -1 otherwise
 */
int bt_write_device_class(int device_number, uint32_t devclass)
{
  int ret = 0;

  int s = hci_open_dev (device_number);

  if(hci_write_class_of_dev(s, devclass, HCI_REQ_TIMEOUT) < 0)
  {
    ret = -1;
  }

  close(s);

  return ret;
}
Esempio n. 4
0
bool CBlueZStack::SetServiceClasses(int classes)
{
    unsigned char cls[3];
    if (hci_read_class_of_dev(m_fd, cls, BLUEZ_TIMEOUT) < 0) {
        PERROR("error reading device class");
        return false;
    }
    classes |= cls[1] << 8;
    classes |= cls[2];
    if (hci_write_class_of_dev(m_fd, classes, BLUEZ_TIMEOUT) < 0) {
        PERROR("error writing device class");
        return false;
    }
    return true;
}