Открытое аудио соединение SCO с IOBluetoothAddSCOAudioDevice - PullRequest
3 голосов
/ 20 августа 2011

Я пытаюсь эмулировать устройство HandsFree из Mac OS X.

  1. Я правильно рекламирую свою услугу SDP как Handsfree
  2. Я могу подключить свой телефон Android к компьютеру, который называется устройством «HandsFree»
  3. Я могу отправить пару AT-команд (AT + BRST, CIND, CMER), чтобы установить соединение уровня обслуживания
  4. Затем я устанавливаю аудиодрайвер для маршрутизации всего входящего / исходящего звука на / с устройства

К сожалению, похоже, что канал SCO никогда не открывается. Мой телефон Android все еще издает звук (т. Е. При нажатии клавиатуры набора номера) на свой динамик.

При настройке звука в Mac OS X я могу видеть свое устройство как устройство ввода / вывода, но уровень звука никогда не меняется.

Вот мой код:

(void)rfcommChannelData:(IOBluetoothRFCOMMChannel*)rfcommChannel data:(void *)dataPointer length:(size_t)dataLength
{
        ... STATE MACHINE GOES HERE and SEND AT COMMANDS ...
        ... AT CMER OK RECEIVED ...

    ret = IOBluetoothAddSCOAudioDevice([[rfcommChannel getDevice] getDeviceRef], NULL);

    if (ret != kIOReturnSuccess ){
        IOBluetoothRemoveSCOAudioDevice([[rfcommChannel getDevice] getDeviceRef]);
        NSLog(@"%@", @"Deleting previously audio device");
        ret = IOBluetoothAddSCOAudioDevice([[rfcommChannel getDevice] getDeviceRef], NULL);
        if (ret != kIOReturnSuccess) {
            NSLog(@"%@", @"Can't install Audio Driver");
        }
    }

Есть идеи, почему Audio Driver установлен и сообщается системой, но не может открыть соединение SCO?

...