From owner-freebsd-bluetooth@FreeBSD.ORG Tue Oct 7 16:13:16 2008 Return-Path: Delivered-To: freebsd-bluetooth@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 05B641065689 for ; Tue, 7 Oct 2008 16:13:16 +0000 (UTC) (envelope-from maksim.yevmenkin@gmail.com) Received: from ik-out-1112.google.com (ik-out-1112.google.com [66.249.90.183]) by mx1.freebsd.org (Postfix) with ESMTP id 5E3CE8FC41 for ; Tue, 7 Oct 2008 16:13:15 +0000 (UTC) (envelope-from maksim.yevmenkin@gmail.com) Received: by ik-out-1112.google.com with SMTP id c29so2277235ika.3 for ; Tue, 07 Oct 2008 09:13:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to :subject:cc:in-reply-to:mime-version:content-type:references; bh=uicQB8UjsenYmrd4dNDdlJgiHtm5y1PeBQRcpJJ+YEE=; b=BDWIDgRa9YD/NwZEo0dNfnoRWwokCxc+3i+K0JbMjhoNnTGaTwvBEiU3j8BVvv4gis mytTfP2EO02LbLUDX2iHgmcbMPciKXkglJFt7Ege9i7iOSzfQuKbxfVAegGKh03MRL4Z Sz7FomCcDLPefg9Ov/P7oD604Xx4unkm53738= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:references; b=KZznk3sxDNRJ+RB2F86WZN0MyjVP4MlCPbHucBTfEfBiIoHsNuGXyl9pbfoJsnR5ub VB6iCZ0xIHP4X4BY8wfPb6SlvdoLRVId6rGTC9Poh0dOoGrWUiEScYJnNmF/8LZXzOUS e9Vi7W8exJv8bZGzzhnG5FWbH0yzqfJkJL2iM= Received: by 10.86.61.13 with SMTP id j13mr6203786fga.69.1223395994068; Tue, 07 Oct 2008 09:13:14 -0700 (PDT) Received: by 10.86.28.20 with HTTP; Tue, 7 Oct 2008 09:13:13 -0700 (PDT) Message-ID: Date: Tue, 7 Oct 2008 09:13:13 -0700 From: "Maksim Yevmenkin" To: vova@fbsd.ru In-Reply-To: <1223106788.4832.25.camel@localhost> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_35222_13101688.1223395994077" References: <3a386af20809261420j535680e8pf44453dbf6f84b20@mail.gmail.com> <1223034512.1842.111.camel@localhost> <1223106788.4832.25.camel@localhost> Cc: freebsd-bluetooth@freebsd.org Subject: Re: Bluetooth audio (once again) X-BeenThere: freebsd-bluetooth@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Using Bluetooth in FreeBSD environments List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Oct 2008 16:13:16 -0000 ------=_Part_35222_13101688.1223395994077 Content-Type: text/plain; charset=KOI8-R Content-Transfer-Encoding: base64 Content-Disposition: inline T24gMTAvNC8wOCwgVmxhZGltaXIgR3JlYmVuc2NoaWtvdiA8dm92YUBmYnNkLnJ1PiB3cm90ZToK PiD3IEZyaSwgMDMvMTAvMjAwOCDXIDA5OjQ1IC0wNzAwLCBNYWtzaW0gWWV2bWVua2luINDJ28XU Ogo+Cj4KPiAgPiA+ICA+IHNjbyBzb2NrZXRzIHN1cHBvcnQgd2FzIGFsc28gYWRkZWQsIGhvd2V2 ZXIgMSkgc2NvIHNvY2tldHMgaG9vayBpcwo+ICA+ID4gID4gKm5vdCogY29ubmVjdGVkIGJ5IGRl ZmF1bHQgYW5kIDIpIHRoZXJlIGFyZSBzb21lIGtub3duIHByb2JsZW1zIHdpdGgKPiAgPiA+ICA+ IHRoZSBjb2RlLiBtb3JlIHNwZWNpZmljYWxseSBwcm9ibGVtcyBhcmUgcmVsYXRlZCB0byAiYnJv a2VuIiBibHVldG9vdGgKPiAgPiA+ICA+IGRldmljZXMgYW5kIHRoZSB3YXkgdGhleSByZXBvcnQg c2NvIGJ1ZmZlciBzaXplL3BhY2tldCBjb3VudC4gaSBoYXBwZW4KPiAgPiA+ICA+IHRvIGhhdmUg ZmV3IG9mIHRob3NlIGRldmljZXMuIHdlIG5lZWQgdG8gaGF2ZSBhIHdheSB0byBoYW5kbGUgdGhv c2UKPiAgPiA+ICA+IGtpbmQgb2YgZGV2aWNlcyBuaWNlbHkuCj4gID4gPgo+ICA+ID4gSSBoYXZl IFBsYXRyb25pY3MgUDU5MCBoZWFkc2V0IHdpdGggYWR2YW5jZWQgYXVkaW8gYW5kIE5va2lhIGhl YWRzZXQuIEkKPiAgPiA+ICBtYXkgdG8gY2hlY2sgdGhlbSBhZ2FpbnN0IG91ciBibHVldG9vdGgg c3RhY2suCj4KPgo+IEkgYml0IHN0cmFuZ2UgdGhhdCBJIGNhbiBpbnF1aXJ5IGFuZCBsMnBpbmcg ZGV2aWNlLCBidXQgY2FuJ3QgbGlzdAo+ICBzZXJ2aWNlczoKPgo+ICAjIGwycGluZyAtYSBwNTkw Cj4gIDAgYnl0ZXMgZnJvbSBwNTkwIHNlcV9ubz0wIHRpbWU9MTc5NC4zNDggbXMgcmVzdWx0PTB4 Ngo+ICAwIGJ5dGVzIGZyb20gcDU5MCBzZXFfbm89MSB0aW1lPTIwMjMuNDAxIG1zIHJlc3VsdD0w eDYKPiAgMCBieXRlcyBmcm9tIHA1OTAgc2VxX25vPTIgdGltZT0xNzYxLjQ3NSBtcyByZXN1bHQ9 MHg2Cj4gIF5DCj4gICMgbDJjb250cm9sIC1hIHA1OTAgUmVhZF9DaGFubmVsX0xpc3QKPiAgbDJj b250cm9sOiBDb3VsZCBub3QgYmluZCBzb2NrZXQsIGJkYWRkcj0wMDoxOTo3ZjoxYjpkZTo3Nzog TmV0d29yayBpcwo+ICBkb3duCgpwbGVhc2UgcmVhZCBtYW4gcGFnZSBmb3IgbDJjb250cm9sKDgp IHV0aWxpdHkuIG1vcmUgc3BlY2lmaWNhbGx5LAoKIgogICAgVGhlIGwyY29udHJvbCB1dGlsaXR5 IGNvbm5lY3RzIHRvIHRoZSAqbG9jYWwqIGRldmljZSB3aXRoIHRoZSBzcGVjaWZpZWQKICAgICBC RF9BRERSIGFuZCBhdHRlbXB0cyB0byBzZW5kIHRoZSBzcGVjaWZpZWQgY29tbWFuZC4KIgoKbDJj b250cm9sKDgpIHdpbGwgZHVtcCBpbmZvcm1hdGlvbiBhYm91dCBvcGVuIGNoYW5uZWxzIGFzIHNl ZW4gYnkKKmxvY2FsKiBkZXZpY2UuIE5PVCByZW1vdGUuIHRoZXJlZm9yIGlzIGRvZXMgbm90IG1h a2UgbXVjaCBzZW5zZSB0bwpwdXQgKnJlbW90ZSogYmRfYWRkciBhcyBwYXJhbWV0ZXIuIGl0IHdp bGwgbmV2ZXIgd29yay4KCj4gIFNob3VsZCBJIGRvICJwYWlyaW5nIiBzb21laG93ID8KCmdlbmVy YWxseSBzcGVha2luZywgeWVzLiB1c3VhbGx5IHBhaXJpbmcgaGFwcGVucyB3aGVuIGhvc3QgKGku ZS4gcGMpCmlzIHRyeWluZyB0byBjb25uZWN0IHRvIHRoZSBoZWFkc2V0J3MgcmZjb21tIGNoYW5u ZWwuIGluIG1vc3QgY2FzZXMsCnRoZSBoZWFkc2V0IHdpbGwgcmVxdWVzdCBhdXRoZW50aWNhdGlv bi4gaG93ZXZlciwgaWYgaXQgZG9lcyBub3QsIHVzZQpoY2NvbnRyb2woOCkgd3JpdGVfYXV0aGVu dGljYXRpb25fZW5hYmxlIGNvbW1hbmQgb24gaG9zdCdzIGRldmljZSB0bwpmb3JjZSBhdXRoZW50 aWNhdGlvbiAoaS5lLiBwYXJpbmcpCgo+ICA+IG9rLmJlIHdhcm5lZCwgeW91IHdpbGwgbmVlZCB0 byB3cml0ZSBzb21lIGNvZGUgZm9yIHRoYXQuIGl0cwo+ICA+IHJlbGF0aXZlbHkgc2ltcGxlLiBi YXNpY2FsbHkgb3BlbiBhbiByZmNvbW0gc29ja2V0IGFuZCB0aGVuIG9wZW4gYSBzY28KPiAgPiBz b2NrZXQuIGkgY2FuIHByb3ZpZGUgZXhhbXBsZXMgaWYgeW91IHdhbnQgbWUgdG8uCj4KPiBQbGVh c2UsIHNlbmQgbWUgYW4gZXhhbXBsZSBpZiB5b3UgaGF2ZS4KCmF0dGFjaGVkCgp0aGFua3MsCm1h eAo= ------=_Part_35222_13101688.1223395994077 Content-Type: application/octet-stream; name=scotest.c Content-Transfer-Encoding: base64 X-Attachment-Id: f_fm0q6rq1 Content-Disposition: attachment; filename=scotest.c I2luY2x1ZGUgPHN5cy90eXBlcy5oPgojaW5jbHVkZSA8c3lzL2JpdHN0cmluZy5oPgojaW5jbHVk ZSA8c3lzL2VuZGlhbi5oPgojaW5jbHVkZSA8c3lzL3NvY2tldC5oPgojaW5jbHVkZSA8c3lzL3Vu Lmg+CiNpbmNsdWRlIDxlcnIuaD4KI2luY2x1ZGUgPGZjbnRsLmg+CiNpbmNsdWRlIDxuZXRkYi5o PgojaW5jbHVkZSA8bmV0Z3JhcGgvYmx1ZXRvb3RoL2luY2x1ZGUvbmdfaGNpLmg+CiNpbmNsdWRl IDxuZXRncmFwaC9ibHVldG9vdGgvaW5jbHVkZS9uZ19sMmNhcC5oPgojaW5jbHVkZSA8bmV0Z3Jh cGgvYmx1ZXRvb3RoL2luY2x1ZGUvbmdfYnRzb2NrZXQuaD4KI2luY2x1ZGUgPHN0ZGlvLmg+CiNp bmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgojaW5jbHVkZSA8dW5pc3RkLmg+ CiNpbmNsdWRlIDxibHVldG9vdGguaD4KCnN0YXRpYyBjaGFyIGNvbnN0ICogY29uc3QJYXRjbWRb XSA9CnsKCSJBVCtWR1M9MTVcblxyIiwKCSIrVkdTPTE1XG5cciIsCgkiQVQrVkdNPTE1XG5cciIs CgkiK1ZHTT0xNVxuXHIiLAoJIlxuXHJSSU5HXG5cciIsCn07CgppbnQKbWFpbihpbnQgYXJnYywg Y2hhciAqKmFyZ3YpCnsKCWludAkJCW4sIGNoYW5uZWwsIGZkLCBzMHJmY29tbSwgczBzY287Cglz dHJ1Y3Qgc29ja2FkZHJfcmZjb21tCXJmY2FkZHI7CglzdHJ1Y3Qgc29ja2FkZHJfc2NvCXNjb2Fk ZHI7CgliZGFkZHJfdAkJYWRkcjsKCWZkX3NldAkJCWZkczsKCXN0cnVjdCB0aW1ldmFsCQl0bTsK CWNoYXIJCQlidWZbMTAyNF07CgoJY2hhbm5lbCA9IDE7CgltZW1jcHkoJmFkZHIsIE5HX0hDSV9C REFERFJfQU5ZLCBzaXplb2YoYWRkcikpOwoKCXdoaWxlICgobiA9IGdldG9wdChhcmdjLCBhcmd2 LCAiYTpjOiIpKSAhPSAtMSkgewoJCXN3aXRjaCAobikgewoJCWNhc2UgJ2EnOgoJCQlpZiAoIWJ0 X2F0b24ob3B0YXJnLCAmYWRkcikpIHsKCQkJCXN0cnVjdCBob3N0ZW50CSpoZSA9IGJ0X2dldGhv c3RieW5hbWUob3B0YXJnKTsKCQkJCWlmIChoZSA9PSBOVUxMKQoJCQkJCWVycngoMSwgImJ0X2dl dGhvc3RieW5hbWUoJXMpIiwgb3B0YXJnKTsKCgkJCQltZW1jcHkoJmFkZHIsIGhlLT5oX2FkZHIs IHNpemVvZihhZGRyKSk7CgkJCX0KCQkJYnJlYWs7CgoJCWNhc2UgJ2MnOgoJCQljaGFubmVsID0g YXRvaShvcHRhcmcpOwoJCQlpZiAoY2hhbm5lbCA8PSAwIHx8IGNoYW5uZWwgPiAzMSkKCQkJCWVy cngoMSwgImludmFsaWQgY2hhbm5lbCAlcyIsIG9wdGFyZyk7CgkJCWJyZWFrOwoKCQlkZWZhdWx0 OgoJCQllcnJ4KDEsICJpbnZhbGlkIG9wdGlvbiAlYyIsIG4pOwoJCQkvKiBOT1QgUkVBQ0hFRCAq LwoJCX0KCX0KCglpZiAobWVtY21wKCZhZGRyLCBOR19IQ0lfQkRBRERSX0FOWSwgc2l6ZW9mKGFk ZHIpKSA9PSAwKQoJCWVycngoMSwgImludmFsaWQgYmRhZGRyIik7CglpZiAoY2hhbm5lbCA8PSAw IHx8IGNoYW5uZWwgPiAzMSkKCQllcnJ4KDEsICJpbnZhbGlkIGNoYW5uZWwgJWQiLCBjaGFubmVs KTsKCglmZCA9IG9wZW4oInZvaWNlIiwgT19XUk9OTFl8T19DUkVBVHxPX1RSVU5DLCAwNjQ0KTsK CWlmIChmZCA8IDApCgkJZXJyKDEsICJvcGVuKGZkKSIpOwoKCXMwcmZjb21tID0gc29ja2V0KFBG X0JMVUVUT09USCwgU09DS19TVFJFQU0sIEJMVUVUT09USF9QUk9UT19SRkNPTU0pOwoJaWYgKHMw cmZjb21tIDwgMCkKCQllcnIoMSwgInNvY2tldChyZmNvbW0pIik7CgoJcmZjYWRkci5yZmNvbW1f bGVuID0gc2l6ZW9mKHJmY2FkZHIpOwoJcmZjYWRkci5yZmNvbW1fZmFtaWx5ID0gQUZfQkxVRVRP T1RIOwoJbWVtY3B5KCZyZmNhZGRyLnJmY29tbV9iZGFkZHIsIE5HX0hDSV9CREFERFJfQU5ZLCBz aXplb2YocmZjYWRkci5yZmNvbW1fYmRhZGRyKSk7CglyZmNhZGRyLnJmY29tbV9jaGFubmVsID0g MDsKCglpZiAoYmluZChzMHJmY29tbSwgKHN0cnVjdCBzb2NrYWRkciopICZyZmNhZGRyLCBzaXpl b2YocmZjYWRkcikpIDwgMCkKCQllcnIoMSwgImJpbmQocmZjb21tKSIpOwoKCXJmY2FkZHIucmZj b21tX2xlbiA9IHNpemVvZihyZmNhZGRyKTsKCXJmY2FkZHIucmZjb21tX2ZhbWlseSA9IEFGX0JM VUVUT09USDsKCW1lbWNweSgmcmZjYWRkci5yZmNvbW1fYmRhZGRyLCAmYWRkciwgc2l6ZW9mKHJm Y2FkZHIucmZjb21tX2JkYWRkcikpOwogICAgICAgIHJmY2FkZHIucmZjb21tX2NoYW5uZWwgPSBj aGFubmVsOwoKCWlmIChjb25uZWN0KHMwcmZjb21tLCAoc3RydWN0IHNvY2thZGRyICopJnJmY2Fk ZHIsIHNpemVvZihyZmNhZGRyKSkgPCAwKQoJCWVycigxLCAiY29ubmVjdChyZmNvbW0pIik7Cgoj aWYgMAoJc2xlZXAoNSk7CgoJY2hhbm5lbCA9IDA7CgoJd2hpbGUgKDEpIHsKCQlGRF9aRVJPKCZm ZHMpOwoJCUZEX1NFVChzMHJmY29tbSwgJmZkcyk7CgkJdG0udHZfc2VjID0gNTsKCQl0bS50dl91 c2VjID0gMDsKCgkJcHJpbnRmKCJzZW5kaW5nOiBbJXNdIiwgYXRjbWRbY2hhbm5lbF0pOwoJCW4g PSB3cml0ZShzMHJmY29tbSwgYXRjbWRbY2hhbm5lbF0sIHN0cmxlbihhdGNtZFtjaGFubmVsXSkp OwoJCWlmIChuICE9IHN0cmxlbihhdGNtZFtjaGFubmVsXSkpCgkJCWVycngoMSwgIndyaXRlKHMw cmZjb21tKSA9ICVkIiwgbik7CgoJCW4gPSBzZWxlY3QoczByZmNvbW0gKyAxLCAmZmRzLCBOVUxM LCBOVUxMLCAmdG0pOwoJCWlmIChuIDwgMCkKCQkJZXJyKDEsICJzZWxlY3QoKSIpOwoJCWlmIChu ID09IDApIHsKCQkJcHJpbnRmKCJ0aW1lb3V0XG4iKTsKCQkJaWYgKCsrIGNoYW5uZWwgPj0gc2l6 ZW9mKGF0Y21kKS9zaXplb2YoYXRjbWRbMF0pKQoJCQkJY2hhbm5lbCA9IDA7CgkJCWNvbnRpbnVl OwoJCX0KCgkJaWYgKEZEX0lTU0VUKHMwcmZjb21tLCAmZmRzKSkgewoJCQluID0gcmVhZChzMHJm Y29tbSwgYnVmLCBzaXplb2YoYnVmKSk7CgkJCWlmIChuIDwgMCkKCQkJCWVycigxLCAicmVhZChz MHJmY29tbSkiKTsKCQkJaWYgKG4gPT0gMCkKCQkJCWVycngoMSwgInJlYWQoczByZmNvbW0pLiBl b2YiKTsKCgkJCXByaW50ZigiZ290OiAlKi4qc1xuIiwgbiwgbiwgYnVmKTsKCgkJCWlmIChzdHJu Y2FzZWNtcChidWYsICJBVCtDS1BEPTIwMCIsIDExKSA9PSAwKSB7CgkJCQlwcmludGYoInNlbmRp bmc6IE9LXG4iKTsKCQkJCW4gPSB3cml0ZShzMHJmY29tbSwgIlxyXG5PS1xyXG4iLCA2KTsKCQkJ CWlmIChuICE9IDYpCgkJCQkJZXJyeCgxLCAid3JpdGUoczByZmNvbW0pID0gJWQiLCBuKTsKCgkJ CQlicmVhazsKCQkJfQoKCQkJaWYgKCsrIGNoYW5uZWwgPj0gc2l6ZW9mKGF0Y21kKS9zaXplb2Yo YXRjbWRbMF0pKQoJCQkJY2hhbm5lbCA9IDA7CgkJfQoJfQojZW5kaWYKCiNpZiAxCglzMHNjbyA9 IHNvY2tldChQRl9CTFVFVE9PVEgsIFNPQ0tfU0VRUEFDS0VULCBCTFVFVE9PVEhfUFJPVE9fU0NP KTsKCWlmIChzMHNjbyA8IDApCgkJZXJyKDEsICJzb2NrZXQoc2NvKSIpOwoKCW4gPSBzaXplb2Yo c2NvYWRkcik7CglpZiAoZ2V0c29ja25hbWUoczByZmNvbW0sKHN0cnVjdCBzb2NrYWRkciopJnNj b2FkZHIsJm4pPDApCgkJZXJyKDEsICJnZXRzb2NrbmFtZShyZmNvbW0pIik7CgoJcHJpbnRmKCJz cmMgYmRhZGRyOiAlc1xuIiwgYnRfbnRvYSgmc2NvYWRkci5zY29fYmRhZGRyLCBOVUxMKSk7CgoJ aWYgKGJpbmQoczBzY28sIChzdHJ1Y3Qgc29ja2FkZHIgKikgJnNjb2FkZHIsIHNpemVvZihzY29h ZGRyKSkgPCAwKQoJCWVycigxLCAiYmluZChzY28pIik7CgoJbiA9IHNpemVvZihzY29hZGRyKTsK CWlmIChnZXRwZWVybmFtZShzMHJmY29tbSwoc3RydWN0IHNvY2thZGRyKikmc2NvYWRkciwmbik8 MCkgCgkJZXJyKDEsICJnZXRwZWVybmFtZShyZmNvbW0pIik7CgoJcHJpbnRmKCJkc3QgYmRhZGRy OiAlc1xuIiwgYnRfbnRvYSgmc2NvYWRkci5zY29fYmRhZGRyLCBOVUxMKSk7CgoJaWYgKGNvbm5l Y3QoczBzY28sIChzdHJ1Y3Qgc29ja2FkZHIgKikgJnNjb2FkZHIsIHNpemVvZihzY29hZGRyKSkg PCAwKQoJCWVycigxLCAiY29ubmVjdChzY28pIik7CgoJd2hpbGUgKDEpIHsKCQlGRF9aRVJPKCZm ZHMpOwoJCUZEX1NFVChzMHJmY29tbSwgJmZkcyk7CgkJRkRfU0VUKHMwc2NvLCAmZmRzKTsKCQl0 bS50dl9zZWMgPSA1OwoJCXRtLnR2X3VzZWMgPSAwOwoKCQluID0gKHMwcmZjb21tID4gczBzY28p PyBzMHJmY29tbSArIDEgOiBzMHNjbyArIDE7CgoJCW4gPSBzZWxlY3QobiwgJmZkcywgTlVMTCwg TlVMTCwgJnRtKTsKCQlpZiAobiA8IDApCgkJCWVycigxLCAic2VsZWN0KCkiKTsKCQlpZiAobiA9 PSAwKSB7CgkJCXByaW50ZigidGltZW91dFxuIik7ICAgIAoJCQljb250aW51ZTsKCQl9CgoJCWlm IChGRF9JU1NFVChzMHJmY29tbSwgJmZkcykpIHsKCQkJbiA9IHJlYWQoczByZmNvbW0sIGJ1Ziwg c2l6ZW9mKGJ1ZikpOwoJCQlpZiAobiA8IDApICAKCQkJCWVycigxLCAicmVhZChzMHJmY29tbSki KTsKCQkJaWYgKG4gPT0gMCkKCQkJCWVycngoMSwgInJlYWQoczByZmNvbW0pLiBlb2YiKTsKCgkJ CXByaW50ZigiZ290OiAlKi4qc1xuIiwgbiwgbiwgYnVmKTsKCQl9CgoJCWlmIChGRF9JU1NFVChz MHNjbywgJmZkcykpIHsKCQkJbiA9IHJlYWQoczBzY28sIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwoJCQlp ZiAobiA8IDApICAKCQkJCWVycigxLCAicmVhZChzMHNjbykiKTsKCQkJaWYgKG4gPT0gMCkKCQkJ CWVycngoMSwgInJlYWQoczBzY28pLiBlb2YiKTsKCQoJCQl3cml0ZShmZCwgYnVmLCBuKTsKCQl9 Cgl9CgoJY2xvc2UoczBzY28pOwoJY2xvc2UoczByZmNvbW0pOwojZW5kaWYKCglyZXR1cm4gKDAp Owp9Cg== ------=_Part_35222_13101688.1223395994077-- From owner-freebsd-bluetooth@FreeBSD.ORG Wed Oct 8 15:00:39 2008 Return-Path: Delivered-To: freebsd-bluetooth@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8CFC910656A5 for ; Wed, 8 Oct 2008 15:00:39 +0000 (UTC) (envelope-from vova@sw.ru) Received: from relay.sw.ru (mailhub.sw.ru [195.214.232.25]) by mx1.freebsd.org (Postfix) with ESMTP id D08278FC16 for ; Wed, 8 Oct 2008 15:00:37 +0000 (UTC) (envelope-from vova@sw.ru) Received: from vbook.fbsd.ru ([10.30.1.111]) (authenticated bits=0) by relay.sw.ru (8.13.4/8.13.4) with ESMTP id m98F0Y9X004620 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 8 Oct 2008 19:00:35 +0400 (MSD) Received: from vova by vbook.fbsd.ru with local (Exim 4.69 (FreeBSD)) (envelope-from ) id 1KnaWg-000O86-EO; Wed, 08 Oct 2008 19:00:34 +0400 From: Vladimir Grebenschikov To: Maksim Yevmenkin In-Reply-To: References: <3a386af20809261420j535680e8pf44453dbf6f84b20@mail.gmail.com> <1223034512.1842.111.camel@localhost> <1223106788.4832.25.camel@localhost> Content-Type: text/plain Content-Transfer-Encoding: 7bit Organization: SWsoft Date: Wed, 08 Oct 2008 19:00:34 +0400 Message-Id: <1223478034.1864.65.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.22.3.1 FreeBSD GNOME Team Port Sender: Vladimir Grebenschikov Cc: freebsd-bluetooth@freebsd.org Subject: Re: Bluetooth audio (once again) X-BeenThere: freebsd-bluetooth@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: vova@fbsd.ru List-Id: Using Bluetooth in FreeBSD environments List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Oct 2008 15:00:39 -0000 On Tue, 2008-10-07 at 09:13 -0700, Maksim Yevmenkin wrote: > > > ok.be warned, you will need to write some code for that. its > > > relatively simple. basically open an rfcomm socket and then open a sco > > > socket. i can provide examples if you want me to. > > > > Please, send me an example if you have. > > attached Thank you, I've played a bit with it. So far I was able to establish connection to channel 1 or 2 of my headset (Headset and advanced audio). Both connections (rfcomm and sco) are opened, headset sends zeros through sco connection and does some AT-chat on rfcomm. Looks like I need to implement chat to make headset to work. Then I dig a bit into bluez sources, and found two things - first, looks like we will need to use/re-implement big part of bluez/audio sub-directory to get full-functional audio to work under freebsd. Second, I've found that bluez uses almost same structures and calls to interact with kernel. Probably it worth to try port bluez (or part of bluez related to sound) to freebsd instead of re-writing whole beast ? What do you think ? PS. I spend only about half an our to make whole bluez to compile under freebsd (except network bridging and alsa). but not even tried to start it, though. > thanks, > max -- Vladimir B. Grebenschikov vova@fbsd.ru From owner-freebsd-bluetooth@FreeBSD.ORG Wed Oct 8 16:25:31 2008 Return-Path: Delivered-To: freebsd-bluetooth@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 43B1B1065686 for ; Wed, 8 Oct 2008 16:25:31 +0000 (UTC) (envelope-from maksim.yevmenkin@gmail.com) Received: from nf-out-0910.google.com (nf-out-0910.google.com [64.233.182.187]) by mx1.freebsd.org (Postfix) with ESMTP id B14D58FC18 for ; Wed, 8 Oct 2008 16:25:30 +0000 (UTC) (envelope-from maksim.yevmenkin@gmail.com) Received: by nf-out-0910.google.com with SMTP id h3so250724nfh.33 for ; Wed, 08 Oct 2008 09:25:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to :subject:cc:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references; bh=FqDgQW5rXoyOm5wzrNpyLJ6vXgnfd8Yr6gYb0ZxXrIA=; b=fiOy3ASakVAzQytclDOn0JoGd7Kz2GySGJI/shmOfzcgj2Fv455W1ztCmhrAxKBbCC pC67h5QxkXxpvDDGYieVhr1V7jLZ7VRmeagyJM1+zCs1J0+/2QobannyxPGjB9icHlf1 dNIZfEZmtSxGZabjoWZtAxipwask9UfzNvDE0= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references; b=wRve5vTj2g0ByxfjfGKEALQZmI0GysPSFuLTjCnA6ZTwYyxJyJOt2szoV/J86og6x8 Q5Rw4eEEZBAwuRsN1UZOerwxvudfBBvsnA8hRyWTyiBqMlft8DfS8oRfNfkB7Pv1LFO7 2mvjrDh6GfEBbrW3tJyKAy+ADCK7cq4T4ipGo= Received: by 10.86.82.6 with SMTP id f6mr3688404fgb.78.1223483124181; Wed, 08 Oct 2008 09:25:24 -0700 (PDT) Received: by 10.86.28.20 with HTTP; Wed, 8 Oct 2008 09:25:24 -0700 (PDT) Message-ID: Date: Wed, 8 Oct 2008 09:25:24 -0700 From: "Maksim Yevmenkin" To: vova@fbsd.ru In-Reply-To: <1223478034.1864.65.camel@localhost> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <3a386af20809261420j535680e8pf44453dbf6f84b20@mail.gmail.com> <1223034512.1842.111.camel@localhost> <1223106788.4832.25.camel@localhost> <1223478034.1864.65.camel@localhost> Cc: freebsd-bluetooth@freebsd.org Subject: Re: Bluetooth audio (once again) X-BeenThere: freebsd-bluetooth@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Using Bluetooth in FreeBSD environments List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Oct 2008 16:25:31 -0000 On 10/8/08, Vladimir Grebenschikov wrote: > On Tue, 2008-10-07 at 09:13 -0700, Maksim Yevmenkin wrote: > > > > > > ok.be warned, you will need to write some code for that. its > > > > relatively simple. basically open an rfcomm socket and then open a sco > > > > socket. i can provide examples if you want me to. > > > > > > Please, send me an example if you have. > > > > attached > > > Thank you, I've played a bit with it. > > So far I was able to establish connection to channel 1 or 2 of my > headset (Headset and advanced audio). > > Both connections (rfcomm and sco) are opened, headset sends zeros > through sco connection and does some AT-chat on rfcomm. that sounds about right :) and that is where i left it off for now due to lack of time :( > Looks like I need to implement chat to make headset to work. do not really need to. once sco connection is open, audio should be flowing in both directions. you could try to talk to the headset after opening sco connection and dump all the sco data into the file. the data are basically raw samples in 8khz a/u-law encoding 8bit or linear encoding 16bit (depends on voice settings). you should be able to play those back using sox from ports or something like this. i can dig up my notes and find the recipe if you want me to. rfcomm channel is strictly for control. for example, you can make headset ring by sending "RING" command to it. also headset will send at+ckpd=200 every time button is pressed. there also might be a at+vgm or at+vgs commands to report/set microphone/speaker gain, etc. i suggest reading "headset profile" specification document. if you can not find one on the net, let me know. > Then I dig a bit into bluez sources, and found two things - first, looks > like we will need to use/re-implement big part of bluez/audio > sub-directory to get full-functional audio to work under freebsd. whoa! hold on just a second :) lets not jump the gun here. first lets fix existing code. need to make sure that sco works reliably at least up to the socket layer. the first goal would be to, say, have a tool that can receive/send audio from/to headset. say have a mp3 sent to headset over sco (re-encoding can be done by outside tool like sox) > Second, I've found that bluez uses almost same structures and calls to > interact with kernel. yes, its all very similar. it was intended this way :) > Probably it worth to try port bluez (or part of bluez related to sound) > to freebsd instead of re-writing whole beast ? What do you think ? two things 1) like i said we need to fix existing code first, so lets focus on low hanging fruit here 2) license issues. bluez is gnu, which could be a problem. we could take a look at what netbsd does. > I spend only about half an our to make whole bluez to compile under > freebsd (except network bridging and alsa). but not even tried to start > it, though. ok. thanks for your work! thanks, max From owner-freebsd-bluetooth@FreeBSD.ORG Wed Oct 8 17:46:37 2008 Return-Path: Delivered-To: freebsd-bluetooth@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 18F801065686 for ; Wed, 8 Oct 2008 17:46:37 +0000 (UTC) (envelope-from florenzi@gmail.com) Received: from yx-out-2324.google.com (yx-out-2324.google.com [74.125.44.29]) by mx1.freebsd.org (Postfix) with ESMTP id C28668FC16 for ; Wed, 8 Oct 2008 17:46:36 +0000 (UTC) (envelope-from florenzi@gmail.com) Received: by yx-out-2324.google.com with SMTP id 8so701577yxb.13 for ; Wed, 08 Oct 2008 10:46:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to :subject:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references; bh=WohPn9V6qlirGcW5aQI3xnSzm6BLRaieCSlN9JmTxO8=; b=WeXNfm+R/FxAnaALCxuy53ZKs//pk717vkufa1XDoMlt1B20bTamF2NL+cUGMNzujZ az5kQpvSySxFBQ6jSbg9KLTB2B47oKE1YKNATVyUBubzS9MGqNhp7xTNS3HSo+q8kPX3 xSBa+YEujFuYGW49gWH6lrwlqA6z7PbZvkyhQ= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references; b=MyMlvDPlvpFMeOFpUWoWZk22ihKYTBP0hX92meDk5E+80ozkj4JNCtJ5TRTVGSE6ML TsioXDYzgjvLh6AFc/pa6S1Ort41cfqDtR1e7oYdk8ODxZE9Nus5kTf3VN2FLbLI9OIw lomrhp93R/c/teCCyMnASLJN4wnDzBuSje4Tc= Received: by 10.143.8.10 with SMTP id l10mr3727006wfi.340.1223487995470; Wed, 08 Oct 2008 10:46:35 -0700 (PDT) Received: by 10.142.173.19 with HTTP; Wed, 8 Oct 2008 10:46:35 -0700 (PDT) Message-ID: <3a386af20810081046h167f1547n18ed07dba439c751@mail.gmail.com> Date: Wed, 8 Oct 2008 19:46:35 +0200 From: "Federico Lorenzi" To: freebsd-bluetooth@freebsd.org In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <3a386af20809261420j535680e8pf44453dbf6f84b20@mail.gmail.com> <1223034512.1842.111.camel@localhost> <1223106788.4832.25.camel@localhost> <1223478034.1864.65.camel@localhost> Subject: Re: Bluetooth audio (once again) X-BeenThere: freebsd-bluetooth@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Using Bluetooth in FreeBSD environments List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Oct 2008 17:46:37 -0000 It's nice to see some traffic on this list again! Thanks for the replies, everyone. I'm specifically looking at getting A2DP working. As soon as my computer is finished making world for my EEE, I'm going to give using rfcomm / SCO sockets in Python a shot. From what I have read, it should work just fine. On Wed, Oct 8, 2008 at 6:25 PM, Maksim Yevmenkin wrote: > 2) license issues. bluez is gnu, which could be a problem. Unfortunately so. I can't really seem to find another implementation of the SBC codec (maybe a wishlist item for FFMpeg?), which is mandatory for A2DP. Some headsets support MP3 and others, but I'm not sure how prevalent this is. Cheers, Federico From owner-freebsd-bluetooth@FreeBSD.ORG Wed Oct 8 18:03:00 2008 Return-Path: Delivered-To: freebsd-bluetooth@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C9D431065687 for ; Wed, 8 Oct 2008 18:03:00 +0000 (UTC) (envelope-from plunky@rya-online.net) Received: from smtp02.one2one.net (smtp02.one2one.net [149.254.192.174]) by mx1.freebsd.org (Postfix) with ESMTP id 3B2698FC12 for ; Wed, 8 Oct 2008 18:03:00 +0000 (UTC) (envelope-from plunky@rya-online.net) Received: from [127.0.0.1] (helo=localhost) by localhost.localdomain with esmtp (Exim 4.50) id 1KncjB-00077h-D0; Wed, 08 Oct 2008 18:21:37 +0100 Received: from localhost.t-mobile.co.uk ([127.0.0.1]) by localhost (smtpbeckt01 [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 27118-07; Wed, 8 Oct 2008 18:21:36 +0100 (BST) Received: from [10.35.80.7] (helo=rya-online.net) by localhost.localdomain with smtp (Exim 4.50) id 1Kncj0-000778-Hc; Wed, 08 Oct 2008 18:21:36 +0100 Received: (nullmailer pid 963 invoked by uid 1000); Wed, 08 Oct 2008 17:20:29 -0000 Date: Wed, 8 Oct 2008 18:20:29 +0100 (BST) To: Maksim Yevmenkin In-Reply-To: References: <3a386af20809261420j535680e8pf44453dbf6f84b20@mail.gmail.com> <1223034512.1842.111.camel@localhost> <1223106788.4832.25.camel@localhost> <1223478034.1864.65.camel@localhost> MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="0-1020978797-1223486429=:807" Message-Id: <1223486429.658424.1015.nullmailer@galant.ukfsn.org> From: Iain Hibbert X-Virus-Scanned: by amavisd-new-20030616-p10 (Debian) at example.com X-SA-Exim-Connect-IP: 127.0.0.1 X-SA-Exim-Mail-From: plunky@rya-online.net X-SA-Exim-Scanned: No (on localhost.localdomain); SAEximRunCond expanded to false Cc: vova@fbsd.ru, freebsd-bluetooth@freebsd.org Subject: Re: Bluetooth audio (once again) X-BeenThere: freebsd-bluetooth@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Using Bluetooth in FreeBSD environments List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Oct 2008 18:03:00 -0000 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --0-1020978797-1223486429=:807 Content-Type: TEXT/PLAIN; charset=US-ASCII On Wed, 8 Oct 2008, Maksim Yevmenkin wrote: > 2) license issues. bluez is gnu, which could be a problem. we could > take a look at what netbsd does. Well NetBSD has no A2DP support as yet There is bthset(1) which is a small utility to talk to the command part of a Headset profile, but the audio part is handled inside the kernel by a btsco(4) audio device driver (so in effect, you can just use /dev/audio1 to play audio). However, I don't think that is very easy to port to FreeBSD because our audio(9) API is different. (Also bthset uses libevent :) Something that may be of more immediate use is a port of the hstest program from BlueZ that I made when I was writing the SCO support for NetBSD. It is attached for what its worth (GPL warning) and it should be able to copy audio data in and out. Another thing that might be of interest is the proof of concept bthfp program I wrote to talk to a Handsfree profile (source at http://homepages.rya-online.net/plunky/bthfp-0.1.tar.gz) which alas also uses libevent though I wrote a version that used select and the NetBSD audio device directly (attached) but that doesn't always work properly because our audio device framework won't properly handle errors from the devices (eg disconnects) So in summary, what NetBSD has is probably not of great use but may be of some interest :) iain --0-1020978797-1223486429=:807 Content-Type: APPLICATION/octet-stream; name=hstest.tar.gz Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: port of BlueZ hstest utility to NetBSD Content-Disposition: attachment; filename=hstest.tar.gz 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 tdzHPwBQAAA= --0-1020978797-1223486429=:807 Content-Type: APPLICATION/octet-stream; name=bthfp_dev.tar.gz Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: HFP program using select Content-Disposition: attachment; filename=bthfp_dev.tar.gz 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 bTmhHS1OzCYL0Pr2Yu45H5MzyvlrHbEJ3JzhFyMUh6AR29wTOUc8pBraGCE5 GMIggPbjzfm/WONge+zCgOHdvcCxWeAHyunofMtrLvHMMgTv1pzxSw/KzauL flsfgSf4DvggfoHn2B+0KwkwUgkqeQadHoX8uocf6T47pVikciKxPyctmEPX XHTZseQgU+T4EKJhAHMiyAd/q4/u18gAPac3B6OunhDBOXQPGQKgiBBRVEyK KPxiYooH/LNsL7rICYNyNZVMEVEUWpTvg0mCGXlG5yndeRyIqzFxOmWcHaxB Dg/WEcaYJh7tfsR7Rfbqf6XrXiJ+lQjd+rBiDeU9IaZdJoT5i0ISC0KA4gbC bB9XbxGhL/wuwEcnTG++anZ6XEFmK+b0JdbCoM8pQ5cEKXQRBCDBv7mWV673 /bOTLv+Hnvz+j+k3aOMz+z92d+o76f//5wE//7cP3zb5v2//bPJ/m/zfJv+3 yf9t8n//ifk/iDqUAzDOR5i1Pis8B1NQphyHKSgVp2JESfFpmExhcnKGskAs nwU65p/z/2dWxxtnbPNsns2zeTbP5tk8m2fzbJ7Ns3k2z+bZPJtn82yezbN5 Ns/m2TybZ/Nsns2zeTbP5tk8m+d3Pf8LdwzTDQCgAAA= --0-1020978797-1223486429=:807--