* [PATCH 2/3] Bluetooth: Convert BCM92035 support to driver setup callback
From: Marcel Holtmann @ 2012-11-12 5:02 UTC (permalink / raw)
To: linux-bluetooth
With the early init stage during setup, this quirk can be simplified
and kept fully inside the driver.
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
---
drivers/bluetooth/btusb.c | 28 +++++++++++++++++-----------
1 file changed, 17 insertions(+), 11 deletions(-)
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index debda27..5b43b0d 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -234,6 +234,7 @@ struct btusb_data {
struct usb_endpoint_descriptor *isoc_rx_ep;
__u8 cmdreq_type;
+ unsigned long driver_info;
unsigned int sco_num;
int isoc_altsetting;
@@ -687,6 +688,20 @@ static int btusb_flush(struct hci_dev *hdev)
return 0;
}
+static int btusb_setup(struct hci_dev *hdev)
+{
+ struct btusb_data *data = hci_get_drvdata(hdev);
+
+ BT_DBG("%s", hdev->name);
+
+ if (data->driver_info & BTUSB_BCM92035) {
+ __u8 val = 0x00;
+ hci_send_cmd(hdev, 0xfc3b, 1, &val);
+ }
+
+ return 0;
+}
+
static int btusb_send_frame(struct sk_buff *skb)
{
struct hci_dev *hdev = (struct hci_dev *) skb->dev;
@@ -984,6 +999,7 @@ static int btusb_probe(struct usb_interface *intf,
return -ENODEV;
data->cmdreq_type = USB_TYPE_CLASS;
+ data->driver_info = id->driver_info;
data->udev = interface_to_usbdev(intf);
data->intf = intf;
@@ -1014,6 +1030,7 @@ static int btusb_probe(struct usb_interface *intf,
hdev->open = btusb_open;
hdev->close = btusb_close;
hdev->flush = btusb_flush;
+ hdev->setup = btusb_setup;
hdev->send = btusb_send_frame;
hdev->notify = btusb_notify;
@@ -1054,17 +1071,6 @@ static int btusb_probe(struct usb_interface *intf,
data->isoc = NULL;
}
- if (id->driver_info & BTUSB_BCM92035) {
- unsigned char cmd[] = { 0x3b, 0xfc, 0x01, 0x00 };
- struct sk_buff *skb;
-
- skb = bt_skb_alloc(sizeof(cmd), GFP_KERNEL);
- if (skb) {
- memcpy(skb_put(skb, sizeof(cmd)), cmd, sizeof(cmd));
- skb_queue_tail(&hdev->driver_init, skb);
- }
- }
-
if (data->isoc) {
err = usb_driver_claim_interface(&btusb_driver,
data->isoc, data);
--
1.7.11.7
^ permalink raw reply related
* [PATCH 3/3] Bluetooth: Remove driver init queue from core
From: Marcel Holtmann @ 2012-11-12 5:02 UTC (permalink / raw)
To: linux-bluetooth
The driver init queue is no longer needed. This can be all handled
inside the drivers now. So remove it.
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
---
include/net/bluetooth/hci_core.h | 2 --
net/bluetooth/hci_core.c | 15 ---------------
2 files changed, 17 deletions(-)
diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h
index c14d52e..4e007db 100644
--- a/include/net/bluetooth/hci_core.h
+++ b/include/net/bluetooth/hci_core.h
@@ -261,8 +261,6 @@ struct hci_dev {
struct hci_dev_stats stat;
- struct sk_buff_head driver_init;
-
atomic_t promisc;
struct dentry *debugfs;
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
index 52acfee..50066f3 100644
--- a/net/bluetooth/hci_core.c
+++ b/net/bluetooth/hci_core.c
@@ -203,22 +203,10 @@ static void amp_init(struct hci_dev *hdev)
static void hci_init_req(struct hci_dev *hdev, unsigned long opt)
{
- struct sk_buff *skb;
-
BT_DBG("%s %ld", hdev->name, opt);
/* Driver initialization */
- /* Special commands */
- while ((skb = skb_dequeue(&hdev->driver_init))) {
- bt_cb(skb)->pkt_type = HCI_COMMAND_PKT;
- skb->dev = (void *) hdev;
-
- skb_queue_tail(&hdev->cmd_q, skb);
- queue_work(hdev->workqueue, &hdev->cmd_work);
- }
- skb_queue_purge(&hdev->driver_init);
-
/* Reset */
if (!test_bit(HCI_QUIRK_RESET_ON_CLOSE, &hdev->quirks))
hci_reset_req(hdev, 0);
@@ -1735,7 +1723,6 @@ struct hci_dev *hci_alloc_dev(void)
INIT_DELAYED_WORK(&hdev->discov_off, hci_discov_off);
INIT_DELAYED_WORK(&hdev->le_scan_disable, le_scan_disable_work);
- skb_queue_head_init(&hdev->driver_init);
skb_queue_head_init(&hdev->rx_q);
skb_queue_head_init(&hdev->cmd_q);
skb_queue_head_init(&hdev->raw_q);
@@ -1754,8 +1741,6 @@ EXPORT_SYMBOL(hci_alloc_dev);
/* Free HCI device */
void hci_free_dev(struct hci_dev *hdev)
{
- skb_queue_purge(&hdev->driver_init);
-
/* will free via device release */
put_device(&hdev->dev);
}
--
1.7.11.7
^ permalink raw reply related
* [PATCH] Update patch and syscfg files for QCA9564.
From: Peng Chen @ 2012-11-12 5:24 UTC (permalink / raw)
To: ben; +Cc: linux-bluetooth, Peng Chen
Signed-off-by: Peng Chen <pengchen@qca.qualcomm.com>
---
ar3k/AthrBT_0x31010000.dfu | Bin 38916 -> 40652 bytes
ar3k/ramps_0x31010000_40.dfu | Bin 1434 -> 1926 bytes
2 files changed, 0 insertions(+), 0 deletions(-)
diff --git a/ar3k/AthrBT_0x31010000.dfu b/ar3k/AthrBT_0x31010000.dfu
index 3bd76c02ecf2e433d640e1215e2253cebbed730d..935beb392a53979668bf7da5e4acb62ea7db80fe 100644
GIT binary patch
delta 24127
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
delta 18234
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
diff --git a/ar3k/ramps_0x31010000_40.dfu b/ar3k/ramps_0x31010000_40.dfu
index 1da3631ff2783264bce6d737f7c539373c75f9f8..ef3d79dce757751b47507074d9ef9da1b0ad35ed 100644
GIT binary patch
delta 1281
zcmXZcZ%7+=7zgm@%stN?CfcyY&AKFY;MRYkYe!k7w2d1Mit|MgUt}&VePK&$J6A?u
zxFNk0($$GCEb)beIP${LtahW)!h9i%FC2{$igdonL?tiMt=sGf!xyr~-oE)|ciiWm
z=l6T=cX#>acM11byN*%o$K+u9+#t2p!0-Qk{@8=_#sAxgqGr?xX@Aqq%q#Q;zkK=h
z_OYSY?A=5y8tP2DW{;^;tR|Q1^xl4)(5B;;wRcZ-eKa#b8(%~yN*ejJc2s(cF*;fL
zMW3fJEktXSZxb4(u1`<akJI}?WK(l8OQZB)aWVd@_LkLbR>mi8{E$fJ2t1^f$mH5y
zA`f>!FONVUFTqBxy+GvW4%o~iu!Wn@zK?rgh!gNIufn6;gx*%}fhRZt+jteWvp+_3
znxn9jlNL^AxM_;0n|ok{6EMm_c%IL}Uj7DN;thC}gWnQe<NXUn*ZDFW;P2od{{e08
zgE77fhxt!9$_IWX8sk1V&d1R*!3T;&N$!IwzFV}2ruYhycktF}o<?+!|AP1V;8UW9
zd<D+(G@Rqf--zaU9WHPfHCeV`jx%tX9k{|_ROZ=&Yn*`vc3_dixat{OaFa8z#17oD
zIQ%=&He0aF8A$TAA5$TV(3D!}kq+n;H}r`IHcBV-OC4;MCfFi9aGxY#NIrpw#Sf24
z0Jh3mctR#&o2<ij2?S81StU9xXAySFBs?RB(Ah2hFd{#|s04$U3ONURr5`ny<P_Sk
z$_;o;euCGfAH4&TK|Cm7)YxLdm}KCvIB-<Ls2LLrj!Onkh!Z4>k`ms7xeyCZNd~6H
zf%la6l@FD($~on{azU9@=9J6I6=hzzrYtCn$|Kq;JyX%9Se09qRI;VqR+g0$bn(4`
z8%c`k^$jWN3ib9)QR(=XTAB`Gp8Td4&Ke((+nzJ>jQ@slA?<N57+CD#tTLxuuGqSw
z;=FQASuh+E9YtgBQg{5O>rG9I-*Fw`0G9uc@paeU&rI5MY<wdAc~Q0G6mH>hUsT<4
zQU;cNx$3rK-_oh0T(#_IMjhQOSH<s(EQQL7I@x#XXsKM)MAo3PhWL>Fwl)+`>;C<Y
z3*Ri4lY2E+vwPO<qY-+2S7E2RM|ONWl_RUsd2jr=9;i<}s*Hz`9#uw)H}art1T^oH
GC;tI5i+zv)
delta 791
zcmXZZPe@cj90%~<?7r{1u9{|BnYgsUf}!i5EKs6a4-z3AI&|2?g9i^~nnE2!toI7j
zhz{E8AktxjpeW6ZAP?et5ENM?B>E!}9t5S-mhd3CI(?tpJl<z!zQ38rW2QHED63j(
zu83yqh3qvK9r?RHpUuAOe<sr5=|EU*$k<rEyfb!p9}iUDJtPGpA;ooG%M}qrdR&z!
zZ&nV>52>hqO;r^yG>mo1kFKaRiW0x7<I23{9*HDZj4A0?VVM@|^F6mcp$hCp6*2|&
zMIr_sQZMFcxk^eld;xAmJ@uoIX#pB&5r$|Gi!_8nR*$2BhEc+#5-s!;UeOx-q-RjV
zYAsr59Zoa3fKqx9*Xbp^HrZXqFB(ND7d4`hHX+QU8LjjxhG{DT%sWuV@h!B`PK?lQ
ztWyhRtoERdKEPQfk8qpz;|+a+4LXQ&R-fVqjo}=V=eSd3ioC=mClzW|hEc)MTeQ>n
z7^UO*O(#&nO;c#6(-@_*i1T0*(5!w$g!l0YCjE*y{SHl+5aGQp!^{_1MV#X`XqrUC
zEwTxdZut;rmx6YSZQ_^``x#E)18;lM{(@pNQ&zQ=A@XNC?V7gw_=)YbNo~#Wf>LQW
zwe`Y~`c&F2)?9L*HOG{;R@@RxrR9mOcw~+<M?<WPLT9$8SFFCH&dkwn_k_+%EH@@q
z;_~{MgF&AT26bY8LMffdPh={;3<`f<Yqw4uNVtxSXC2O2+DSjr9siE=@~A}YZ=S%u
YrkNZLy;3`K(20zUZqIx`<t;4y1CD#!NB{r;
--
1.7.9.5
^ permalink raw reply
* [PATCH] Update rampatch file for AR9565
From: Kris Chen @ 2012-11-12 6:53 UTC (permalink / raw)
To: dwmw2; +Cc: linux-bluetooth
Signed-off-by: Kris Chen <chongc@qca.qualcomm.com>
---
ar3k/AthrBT_0x31010000.dfu | Bin 38916 -> 40652 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
diff --git a/ar3k/AthrBT_0x31010000.dfu b/ar3k/AthrBT_0x31010000.dfu
index 3bd76c02ecf2e433d640e1215e2253cebbed730d..935beb392a53979668bf7da5e4acb62ea7db80fe 100644
GIT binary patch
delta 24127
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
delta 18234
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
--
1.7.9.5
^ permalink raw reply
* Re: [RFC v0 5/7] adapter: Remove DevicesFound signal
From: Mikel Astiz @ 2012-11-12 8:45 UTC (permalink / raw)
To: Johan Hedberg; +Cc: linux-bluetooth
In-Reply-To: <20121111131921.GA4405@x220>
Hi Johan,
On Sun, Nov 11, 2012 at 2:19 PM, Johan Hedberg <johan.hedberg@gmail.com> wrote:
> Hi Mikel,
>
> On Thu, Nov 08, 2012, Mikel Astiz wrote:
>> ObjectManager reports the D-Bus interfaces of all known devices,
>> including the ones detected during discovery. Therefore this signal is
>> not required.
>> ---
>> doc/adapter-api.txt | 13 ++-----
>> src/adapter.c | 102 ++--------------------------------------------------
>> 2 files changed, 4 insertions(+), 111 deletions(-)
>
> If you look at the commit history you'll see that this signal was added
> after the introduction of object manager and was part of the patches
> that removed the old DeviceFound signal.
I didn't realize this was such a late addition. I guess I should have
opened the discussion before, sorry for that.
> You're right in that our original plan was to replace the device
> discovery completely with ObjectManager signals but that turned out to
> be infeasible in practice. Even the python script for doing discovery
> ended up being quite complex (meaning most other languages would be even
The ObjectManager approach might make our clients more complex but I
don't think this should be very strong argument to introduce
duplication in our APIs. I would suggest we consider compensating this
using utility libraries, since you have very similar problems
everywhere in the D-Bus API, for example with Adapter.FindDevice.
Unless there is some performance gain, we should IMO keep our APIs as
compact as possible, specially for the 5.0 release, where we could
extend the API in later versions.
> worse) and we didn't get any signals for discovered devices that already
> existed in the bluetoothd object hierarchy (since nothing changes for
> them from an ObjectManager perspective).
I agree this second point would be a strong enough argument. However,
can't we solve this problem in a nicer and more orthogonal
property-oriented way?
I can think of a solution that might fit and would also be useful for
other use-cases: we could add a property to each device which holds a
timestamp representing when this particular devices was "seen"
(discovered or connected-to) for the last time. A discovery client
would have to check the timestamp range he is interested in. I could
write some code if there is any interest.
Having said that, I'm not completely against the DevicesFound
approach, but I guess this would be the moment to consider other
approaches as well.
> Due to these issues we decided to reintroduce a dedicated signal for
> device discovery and at the same time fix the bottle neck we've seen
> during the past years where the high frequency of signals in a busy
> environment (e.g. UPF) consumes a lot of resources.
I can't imagine how DevicesFound could remove any D-Bus bottleneck
since it's a duplicated signal. As I understand, ObjectManager would
emit the InterfaceAdded signals in any case, so I don't see any real
benefit here.
> The DevicesFound signal is emitted once a second and contains all
> devices found since the last period. If no device was found during the
> last period the signal is sent as soon as the first device is found.
> There's also an (adjustable through a define, right now 5) maximum size
> for the list length which forces the signal to be sent as soon as the
> limit is reached.
The only gain I can think of is in case we had a client that listens
to DevicesAdded but is not interested in ObjectManager/Properties
signals. However this seems unlikely and even insignificant, since
most of the clients would anyway be waking up every time an interface
is added, right?
Cheers,
Mikel
^ permalink raw reply
* Re: [PATCH BlueZ v2] audio: Move to profiles directory
From: Luiz Augusto von Dentz @ 2012-11-12 9:08 UTC (permalink / raw)
To: Marcel Holtmann; +Cc: linux-bluetooth
In-Reply-To: <1352458100.16204.11.camel@aeonflux>
Hi Marcel,
On Fri, Nov 9, 2012 at 12:48 PM, Marcel Holtmann <marcel@holtmann.org> wrote:
> Hi Luiz,
>
>> ---
>> v2: Rebase after changes to remove gstreamer and SBC code
>>
>> Makefile.am | 64 +++++++++++++++-------------
>> {audio => profiles/audio}/a2dp-codecs.h | 0
>
> this one is used from avinfo.c as well. We might move that one better
> into lib/ or some place else.
>
>> {audio => profiles/audio}/a2dp.c | 0
>> {audio => profiles/audio}/a2dp.h | 0
>> {audio => profiles/audio}/audio.conf | 0
>> {audio => profiles/audio}/avctp.c | 0
>> {audio => profiles/audio}/avctp.h | 0
>> {audio => profiles/audio}/avdtp.c | 0
>> {audio => profiles/audio}/avdtp.h | 0
>> {audio => profiles/audio}/avrcp.c | 0
>> {audio => profiles/audio}/avrcp.h | 0
>> {audio => profiles/audio}/control.c | 0
>> {audio => profiles/audio}/control.h | 0
>> {audio => profiles/audio}/device.c | 0
>> {audio => profiles/audio}/device.h | 0
>> {audio => profiles/audio}/gateway.c | 0
>> {audio => profiles/audio}/gateway.h | 0
>> {audio => profiles/audio}/headset.c | 0
>> {audio => profiles/audio}/headset.h | 0
>> {audio => profiles/audio}/main.c | 0
>> {audio => profiles/audio}/manager.c | 0
>> {audio => profiles/audio}/manager.h | 0
>> {audio => profiles/audio}/media.c | 0
>> {audio => profiles/audio}/media.h | 0
>> {audio => profiles/audio}/player.c | 0
>> {audio => profiles/audio}/player.h | 0
>> {audio => profiles/audio}/rtp.h | 0
>> {audio => profiles/audio}/sink.c | 0
>> {audio => profiles/audio}/sink.h | 0
>> {audio => profiles/audio}/source.c | 0
>> {audio => profiles/audio}/source.h | 0
>> {audio => profiles/audio}/telephony-dummy.c | 0
>> {audio => profiles/audio}/telephony-maemo5.c | 0
>> {audio => profiles/audio}/telephony-maemo6.c | 0
>> {audio => profiles/audio}/telephony-ofono.c | 0
>> {audio => profiles/audio}/telephony.h | 0
>> {audio => profiles/audio}/transport.c | 0
>> {audio => profiles/audio}/transport.h | 0
>> 38 files changed, 35 insertions(+), 29 deletions(-)
>> rename {audio => profiles/audio}/a2dp-codecs.h (100%)
>> rename {audio => profiles/audio}/a2dp.c (100%)
>> rename {audio => profiles/audio}/a2dp.h (100%)
>> rename {audio => profiles/audio}/audio.conf (100%)
>> rename {audio => profiles/audio}/avctp.c (100%)
>> rename {audio => profiles/audio}/avctp.h (100%)
>> rename {audio => profiles/audio}/avdtp.c (100%)
>> rename {audio => profiles/audio}/avdtp.h (100%)
>> rename {audio => profiles/audio}/avrcp.c (100%)
>> rename {audio => profiles/audio}/avrcp.h (100%)
>> rename {audio => profiles/audio}/control.c (100%)
>> rename {audio => profiles/audio}/control.h (100%)
>> rename {audio => profiles/audio}/device.c (100%)
>> rename {audio => profiles/audio}/device.h (100%)
>> rename {audio => profiles/audio}/gateway.c (100%)
>> rename {audio => profiles/audio}/gateway.h (100%)
>> rename {audio => profiles/audio}/headset.c (100%)
>> rename {audio => profiles/audio}/headset.h (100%)
>> rename {audio => profiles/audio}/main.c (100%)
>> rename {audio => profiles/audio}/manager.c (100%)
>> rename {audio => profiles/audio}/manager.h (100%)
>> rename {audio => profiles/audio}/media.c (100%)
>> rename {audio => profiles/audio}/media.h (100%)
>> rename {audio => profiles/audio}/player.c (100%)
>> rename {audio => profiles/audio}/player.h (100%)
>> rename {audio => profiles/audio}/rtp.h (100%)
>> rename {audio => profiles/audio}/sink.c (100%)
>> rename {audio => profiles/audio}/sink.h (100%)
>> rename {audio => profiles/audio}/source.c (100%)
>> rename {audio => profiles/audio}/source.h (100%)
>> rename {audio => profiles/audio}/telephony-dummy.c (100%)
>> rename {audio => profiles/audio}/telephony-maemo5.c (100%)
>> rename {audio => profiles/audio}/telephony-maemo6.c (100%)
>> rename {audio => profiles/audio}/telephony-ofono.c (100%)
>> rename {audio => profiles/audio}/telephony.h (100%)
>> rename {audio => profiles/audio}/transport.c (100%)
>> rename {audio => profiles/audio}/transport.h (100%)
>
> Before we do this, lets take the telephony stuff out first. We do not
> want to keep it anyway.
That probably means audio/headset.c and audio/gateway.c should be
removed as well and no btd_profiles should be registered for those
profiles. This will leave us without any HFP profiles support for now,
but I guess this is okay as they will be external profiles.
--
Luiz Augusto von Dentz
^ permalink raw reply
* Re: [PATCHv1 11/12] Bluetooth: AMP: Use l2cap_physical_cfm in phylink complete evt
From: Andrei Emeltchenko @ 2012-11-12 9:26 UTC (permalink / raw)
To: Mat Martineau; +Cc: linux-bluetooth
In-Reply-To: <alpine.DEB.2.02.1211020808010.29427@mathewm-linux>
Hi Mat,
On Fri, Nov 02, 2012 at 08:39:09AM -0700, Mat Martineau wrote:
...
> >>>+void amp_physical_cfm(struct hci_conn *bredr_hcon, struct hci_conn *hs_hcon)
> >>>+{
> >>>+ struct hci_dev *bredr_hdev = hci_dev_hold(bredr_hcon->hdev);
> >>>+ struct amp_mgr *mgr = hs_hcon->amp_mgr;
> >>>+ struct l2cap_chan *bredr_chan;
> >>>+
> >>>+ BT_DBG("bredr_hcon %p hs_hcon %p mgr %p", bredr_hcon, hs_hcon, mgr);
> >>>+
> >>>+ if (!bredr_hdev || !mgr || !mgr->bredr_chan)
> >>>+ return;
> >>>+
> >>>+ bredr_chan = mgr->bredr_chan;
> >>>+
> >>>+ set_bit(FLAG_EFS_ENABLE, &bredr_chan->flags);
> >>>+ bredr_chan->ctrl_id = hs_hcon->remote_id;
> >>>+ bredr_chan->hs_hcon = hs_hcon;
> >>>+ bredr_chan->conn->mtu = hs_hcon->hdev->block_mtu;
> >>>+ bredr_chan->fcs = L2CAP_FCS_NONE;
>
> Changing FCS requires L2CAP reconfiguration for the channel, and
> chan->fcs shouldn't be modified until reconfiguration happens.
> While it doesn't make much sense to do so, the remote device may
> want to keep FCS enabled. The move may also fail and you don't want
> to forget the original FCS setting in that case.
So we agree that FCS shall not be used for High Speed channels. I was
thinking more about the case where we start sending data right over HS
channel. The configuration should be just started.
What would be the better place to init FCS? l2cap_physical_cfm after
checking channel moving status?
> >>Sorry I missed this earlier: bredr_chan needs to be locked before
> >>changing it. I suggest passing the information to
> >>l2cap_physical_cfm and letting that function update the structure
> >>members while it holds the lock.
> >
> >what about locking here and changing l2cap_physical_cfm to unlocked
> >__l2cap_physical_cfm ?
>
> My preference is to not manipulate l2cap_chan too much outside of
> l2cap_core, and to keep the channel move or channel create state
> machines inside l2cap_core. l2cap_physical_cfm checks the channel
> state before modifying it. The move or new connection may have been
> canceled or be in the wrong state, in which case the structure
> should not be modified even though the physical link was completed.
so maybe we shall move some code to l2cap_physical_cfm ?
Best regards
Andrei Emeltchenko
^ permalink raw reply
* Re: [RFC 2/3] Bluetooth: Add LE connection parameters to debugfs
From: Andrei Emeltchenko @ 2012-11-12 9:36 UTC (permalink / raw)
To: Vinicius Costa Gomes; +Cc: linux-bluetooth
In-Reply-To: <1352121943-18001-3-git-send-email-vinicius.gomes@openbossa.org>
Hi Vinicius,
On Mon, Nov 05, 2012 at 02:25:42PM +0100, Vinicius Costa Gomes wrote:
> Only reading the parameters is supported for now.
>
> Signed-off-by: Vinicius Costa Gomes <vinicius.gomes@openbossa.org>
> ---
> net/bluetooth/hci_sysfs.c | 34 ++++++++++++++++++++++++++++++++++
> 1 file changed, 34 insertions(+)
>
> diff --git a/net/bluetooth/hci_sysfs.c b/net/bluetooth/hci_sysfs.c
> index 55cceee..a9554ec 100644
> --- a/net/bluetooth/hci_sysfs.c
> +++ b/net/bluetooth/hci_sysfs.c
> @@ -532,6 +532,36 @@ static int auto_accept_delay_get(void *data, u64 *val)
> DEFINE_SIMPLE_ATTRIBUTE(auto_accept_delay_fops, auto_accept_delay_get,
> auto_accept_delay_set, "%llu\n");
>
> +
> +static int le_conn_parameters_show(struct seq_file *f, void *p)
> +{
> + struct hci_dev *hdev = f->private;
> + struct le_conn_params *params = &hdev->le_conn_params;
> +
> + hci_dev_lock(hdev);
> +
> + seq_printf(f, "0x%.4x 0x%.4x 0x%.4x 0x%.4x 0x%.4x\n",
BTW: you might want to use format "0x%4.4x" we use in hci_core.c
Best regards
Andrei Emeltchenko
^ permalink raw reply
* [PATCH] bluetooth: Increase HCI command tx timeout
From: Szymon Janc @ 2012-11-12 10:01 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Szymon Janc
Read Local OOB Data command can take more than 1 second on some chips.
e.g. on CSR 0a12:0001 first call to Read Local OOB Data after reset
takes about 1300ms resulting in tx timeout error.
[27698.368655] Bluetooth: hci0 command 0x0c57 tx timeout
2012-10-31 15:53:36.178585 < HCI Command: Read Local OOB Data (0x03|0x0057) plen 0
2012-10-31 15:53:37.496996 > HCI Event: Command Complete (0x0e) plen 36
Read Local OOB Data (0x03|0x0057) ncmd 1
status 0x00
hash 0x92219d9b447f2aa9dc12dda2ae7bae6a
randomizer 0xb1948d0febe4ea38ce85c4e66313beba
Signed-off-by: Szymon Janc <szymon.janc@tieto.com>
---
Spec doesn't seem to be posing any restrictions on how fast should HCI response...
I've increased timeout to 2 secs as this seems to fix this for me, but maybe this
could be increased to something more, like 5 secs or sth to minimize tx timeout
chance for other slow chips? If chip doesn't response for command it is FUBAR
anyway and having longer timeout would not make things that much worse (and
could even improve things on slow chips..).
include/net/bluetooth/hci.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
index 4bbabd8..45eee08 100644
--- a/include/net/bluetooth/hci.h
+++ b/include/net/bluetooth/hci.h
@@ -154,7 +154,7 @@ enum {
#define HCI_DISCONN_TIMEOUT msecs_to_jiffies(2000) /* 2 seconds */
#define HCI_PAIRING_TIMEOUT msecs_to_jiffies(60000) /* 60 seconds */
#define HCI_INIT_TIMEOUT msecs_to_jiffies(10000) /* 10 seconds */
-#define HCI_CMD_TIMEOUT msecs_to_jiffies(1000) /* 1 second */
+#define HCI_CMD_TIMEOUT msecs_to_jiffies(2000) /* 2 seconds */
#define HCI_ACL_TX_TIMEOUT msecs_to_jiffies(45000) /* 45 seconds */
#define HCI_AUTO_OFF_TIMEOUT msecs_to_jiffies(2000) /* 2 seconds */
--
1.7.9.5
^ permalink raw reply related
* Re: [PATCH obexd v1 1/3] MAP: Add get_next_header() in message listing
From: Luiz Augusto von Dentz @ 2012-11-12 10:35 UTC (permalink / raw)
To: Sunil Kumar Behera; +Cc: linux-bluetooth
In-Reply-To: <1352372578-18252-1-git-send-email-sunil.behera@samsung.com>
Hi Sunil,
On Thu, Nov 8, 2012 at 1:02 PM, Sunil Kumar Behera
<sunil.behera@samsung.com> wrote:
> In case of message listing we need to send application
> parameters in response and also it is required for sending
> response to message listing size request.
> ---
> plugins/mas.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/plugins/mas.c b/plugins/mas.c
> index 186d267..319c87f 100644
> --- a/plugins/mas.c
> +++ b/plugins/mas.c
> @@ -810,6 +810,7 @@ static struct obex_mime_type_driver mime_msg_listing = {
> .target = MAS_TARGET,
> .target_size = TARGET_SIZE,
> .mimetype = "x-bt/MAP-msg-listing",
> + .get_next_header = any_get_next_header,
> .open = msg_listing_open,
> .close = any_close,
> .read = any_read,
> --
> 1.7.9.5
Pushed upstream, thanks.
--
Luiz Augusto von Dentz
^ permalink raw reply
* Re: [PATCH] gatt: Update characteristic names translation table
From: Anderson Lizardo @ 2012-11-12 11:41 UTC (permalink / raw)
To: Andrzej Kaczmarek; +Cc: linux-bluetooth
In-Reply-To: <1352475687-15070-1-git-send-email-andrzej.kaczmarek@tieto.com>
Hi Andrzej,
On Fri, Nov 9, 2012 at 11:41 AM, Andrzej Kaczmarek
<andrzej.kaczmarek@tieto.com> wrote:
> ---
> attrib/client.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 44 insertions(+)
Most characteristics you are adding here come from profiles which have
not been adopted yet, so they are not publicly available.
I would first wait for their adoption before adding here, as AFAIK it
is still possible that their UUIDs might change before final adoption.
Best Regards,
--
Anderson Lizardo
Instituto Nokia de Tecnologia - INdT
Manaus - Brazil
^ permalink raw reply
* Re: [PATCH] gatt: Update characteristic names translation table
From: Andrzej Kaczmarek @ 2012-11-12 12:04 UTC (permalink / raw)
To: Anderson Lizardo; +Cc: linux-bluetooth@vger.kernel.org
In-Reply-To: <CAJdJm_OHoqsec-H=hWqUOD0pHcpAyrR4=TCLaSSx1wORgohBxg@mail.gmail.com>
Hi Anderson,
On 11/12/2012 12:41 PM, Anderson Lizardo wrote:
> Hi Andrzej,
>
> On Fri, Nov 9, 2012 at 11:41 AM, Andrzej Kaczmarek
> <andrzej.kaczmarek@tieto.com> wrote:
>> ---
>> attrib/client.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
>> 1 file changed, 44 insertions(+)
>
> Most characteristics you are adding here come from profiles which have
> not been adopted yet, so they are not publicly available.
>
> I would first wait for their adoption before adding here, as AFAIK it
> is still possible that their UUIDs might change before final adoption.
Sure, agree. I'll send v2 in a moment which will include only
characteristics from already adopted profiles.
BR,
Andrzej
^ permalink raw reply
* [PATCH v2] gatt: Update characteristic names translation table
From: Andrzej Kaczmarek @ 2012-11-12 12:08 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Andrzej Kaczmarek
---
attrib/client.c | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/attrib/client.c b/attrib/client.c
index cda5bc0..51c2b83 100644
--- a/attrib/client.c
+++ b/attrib/client.c
@@ -115,9 +115,16 @@ static const struct {
{ "00002a44-0000-1000-8000-00805f9b34fb", "Alert Notification Control Point" },
{ "00002a3f-0000-1000-8000-00805f9b34fb", "Alert Status" },
{ "00002a01-0000-1000-8000-00805f9b34fb", "Appearance" },
+ { "00002a19-0000-1000-8000-00805f9b34fb", "Battery Level" },
+ { "00002a1b-0000-1000-8000-00805f9b34fb", "Battery Level State" },
{ "00002a49-0000-1000-8000-00805f9b34fb", "Blood Pressure Feature" },
{ "00002a35-0000-1000-8000-00805f9b34fb", "Blood Pressure Measurement" },
{ "00002a38-0000-1000-8000-00805f9b34fb", "Body Sensor Location" },
+ { "00002a22-0000-1000-8000-00805f9b34fb", "Boot Keyboard Input Report" },
+ { "00002a32-0000-1000-8000-00805f9b34fb", "Boot Keyboard Output Report" },
+ { "00002a33-0000-1000-8000-00805f9b34fb", "Boot Mouse Input Report" },
+ { "00002a5c-0000-1000-8000-00805f9b34fb", "CSC Feature" },
+ { "00002a5b-0000-1000-8000-00805f9b34fb", "CSC Measurement" },
{ "00002a2b-0000-1000-8000-00805f9b34fb", "Current Time" },
{ "00002a08-0000-1000-8000-00805f9b34fb", "Date Time" },
{ "00002a0a-0000-1000-8000-00805f9b34fb", "Day Date Time" },
@@ -126,9 +133,14 @@ static const struct {
{ "00002a0d-0000-1000-8000-00805f9b34fb", "DST Offset" },
{ "00002a0c-0000-1000-8000-00805f9b34fb", "Exact Time 256" },
{ "00002a26-0000-1000-8000-00805f9b34fb", "Firmware Revision String" },
+ { "00002a51-0000-1000-8000-00805f9b34fb", "Glucose Feature" },
+ { "00002a18-0000-1000-8000-00805f9b34fb", "Glucose Measurement" },
+ { "00002a34-0000-1000-8000-00805f9b34fb", "Glucose Measurement Context" },
{ "00002a27-0000-1000-8000-00805f9b34fb", "Hardware Revision String" },
{ "00002a39-0000-1000-8000-00805f9b34fb", "Heart Rate Control Point" },
{ "00002a37-0000-1000-8000-00805f9b34fb", "Heart Rate Measurement" },
+ { "00002a4c-0000-1000-8000-00805f9b34fb", "HID Control Point" },
+ { "00002a4a-0000-1000-8000-00805f9b34fb", "HID Information" },
{ "00002a2a-0000-1000-8000-00805f9b34fb", "IEEE 11073-20601 Regulatory" },
{ "00002a36-0000-1000-8000-00805f9b34fb", "Intermediate Cuff Pressure" },
{ "00002a1e-0000-1000-8000-00805f9b34fb", "Intermediate Temperature" },
@@ -139,10 +151,21 @@ static const struct {
{ "00002a46-0000-1000-8000-00805f9b34fb", "New Alert" },
{ "00002a04-0000-1000-8000-00805f9b34fb", "Peripheral Preferred Connection Parameters" },
{ "00002a02-0000-1000-8000-00805f9b34fb", "Peripheral Privacy Flag" },
+ { "00002a50-0000-1000-8000-00805f9b34fb", "PnP ID" },
+ { "00002a4e-0000-1000-8000-00805f9b34fb", "Protocol Mode" },
{ "00002a03-0000-1000-8000-00805f9b34fb", "Reconnection Address" },
+ { "00002a52-0000-1000-8000-00805f9b34fb", "Record Access Control Point" },
{ "00002a14-0000-1000-8000-00805f9b34fb", "Reference Time Information" },
+ { "00002a4d-0000-1000-8000-00805f9b34fb", "Report" },
+ { "00002a4b-0000-1000-8000-00805f9b34fb", "Report Map" },
{ "00002a40-0000-1000-8000-00805f9b34fb", "Ringer Control Point" },
{ "00002a41-0000-1000-8000-00805f9b34fb", "Ringer Setting" },
+ { "00002a54-0000-1000-8000-00805f9b34fb", "RSC Feature" },
+ { "00002a53-0000-1000-8000-00805f9b34fb", "RSC Measurement" },
+ { "00002a55-0000-1000-8000-00805f9b34fb", "SC Control Point" },
+ { "00002a4f-0000-1000-8000-00805f9b34fb", "Scan Interval Window" },
+ { "00002a31-0000-1000-8000-00805f9b34fb", "Scan Refresh" },
+ { "00002a5d-0000-1000-8000-00805f9b34fb", "Sensor Location" },
{ "00002a25-0000-1000-8000-00805f9b34fb", "Serial Number String" },
{ "00002a05-0000-1000-8000-00805f9b34fb", "Service Changed" },
{ "00002a28-0000-1000-8000-00805f9b34fb", "Software Revision String" },
--
1.8.0
^ permalink raw reply related
* [PATCH] device: Defer write to storage
From: Frédéric Danis @ 2012-11-12 15:43 UTC (permalink / raw)
To: linux-bluetooth
Defere write to storage using g_idle_add() to avoid multiple
open/write/close operations when device properties are changed
in sequence.
---
src/device.c | 24 +++++++++++++++++++++---
1 file changed, 21 insertions(+), 3 deletions(-)
diff --git a/src/device.c b/src/device.c
index 9749bfd..354371b 100644
--- a/src/device.c
+++ b/src/device.c
@@ -196,6 +196,7 @@ struct btd_device {
GIOChannel *att_io;
guint cleanup_id;
+ guint store_id;
};
static uint16_t uuid_list[] = {
@@ -205,8 +206,9 @@ static uint16_t uuid_list[] = {
0
};
-static void store_device_info(struct btd_device *device)
+static gboolean store_device_info_cb(gpointer user_data)
{
+ struct btd_device *device = user_data;
GKeyFile *key_file;
char filename[PATH_MAX + 1];
char adapter_addr[18];
@@ -214,8 +216,7 @@ static void store_device_info(struct btd_device *device)
char *str;
gsize length = 0;
- if (device->temporary)
- return;
+ device->store_id = 0;
key_file = g_key_file_new();
@@ -233,6 +234,16 @@ static void store_device_info(struct btd_device *device)
g_free(str);
g_key_file_free(key_file);
+
+ return FALSE;
+}
+
+static void store_device_info(struct btd_device *device)
+{
+ if (device->temporary || device->store_id)
+ return;
+
+ device->store_id = g_idle_add(store_device_info_cb, device);
}
static void browse_request_free(struct browse_req *req)
@@ -1839,6 +1850,13 @@ void device_remove(struct btd_device *device, gboolean remove_stored)
if (device->connected)
do_disconnect(device);
+ if (device->store_id) {
+ if (!remove_stored)
+ store_device_info_cb(device);
+
+ g_source_remove(device->store_id);
+ }
+
if (remove_stored)
device_remove_stored(device);
--
1.7.9.5
^ permalink raw reply related
* [PATCH] Update dbusoob API
From: Szymon Janc @ 2012-11-12 15:53 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Szymon Janc
Hi,
This updates AddRemoteData method to create and return device object path.
With recent change on how new device objects are created it is no
longer possible to create device object from string with
org.bluez.Adapter interface. When adding OOB data for specified
address device object is created if it was not yet existing.
Path to object is returned in AddRemoteData to avoid need for extra
FindDevice() call on org.bluez.Adapter to get object maching specified
address.
Question:
Should RemoveRemoteData be updated to accept device path instead of address?
(and therefore require existing object, this method doesn't remove object or
any storage data but only deletes hash/rand kept in kernel).
Szymon Janc (1):
dbusoob: Create device object and return it when adding OOB data
doc/oob-api.txt | 6 +++++-
plugins/dbusoob.c | 28 ++++++++++++++++++++++++----
2 files changed, 29 insertions(+), 5 deletions(-)
--
1.7.9.5
^ permalink raw reply
* [PATCH] dbusoob: Create device object and return it when adding OOB data
From: Szymon Janc @ 2012-11-12 15:53 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Szymon Janc
In-Reply-To: <1352735596-731-1-git-send-email-szymon.janc@tieto.com>
With recent change on how new device objects are created it is no
longer possible to create device object from string with
org.bluez.Adapter interface. When adding OOB data for specified
address device object is created if it was not yet existing.
Path to object is returned in AddRemoteData to avoid need for extra
FindDevice() call on org.bluez.Adapter to get object maching specified
address.
Change-Id: I5c30b2a9ca981e857729f9f50f6c839ea40a1ab7
---
doc/oob-api.txt | 6 +++++-
plugins/dbusoob.c | 28 ++++++++++++++++++++++++----
2 files changed, 29 insertions(+), 5 deletions(-)
diff --git a/doc/oob-api.txt b/doc/oob-api.txt
index c3978fc..7f73db4 100644
--- a/doc/oob-api.txt
+++ b/doc/oob-api.txt
@@ -38,11 +38,15 @@ Methods dict ReadLocalData()
org.bluez.Error.InProgress
org.bluez.Error.NotSupported
- void AddRemoteData(string address, dict data)
+ object AddRemoteData(string address, dict data)
This method adds new Out Of Band data for
specified address. If data for specified address
already exists it will be overwritten with new one.
+ If device object with given address does not exist yet
+ it will be created.
+
+ Returns the object path of device for given address.
All data is optional.
diff --git a/plugins/dbusoob.c b/plugins/dbusoob.c
index 711fbc4..b59ffa8 100644
--- a/plugins/dbusoob.c
+++ b/plugins/dbusoob.c
@@ -222,6 +222,8 @@ static DBusMessage *add_remote_data(DBusConnection *conn, DBusMessage *msg,
DBusMessageIter data;
struct oob_data remote_data;
struct btd_device *device;
+ DBusMessage *reply;
+ const char *dev_path;
if (!btd_adapter_ssp_enabled(adapter))
return btd_error_not_supported(msg);
@@ -236,19 +238,36 @@ static DBusMessage *add_remote_data(DBusConnection *conn, DBusMessage *msg,
if (bachk(remote_data.addr) < 0)
return btd_error_invalid_args(msg);
- device = adapter_find_device(adapter, remote_data.addr);
- if (device && device_is_paired(device))
+ device = adapter_get_device(adapter, remote_data.addr);
+ if (!device)
+ return btd_error_failed(msg, "Creating device object failed");
+
+ if (device_is_paired(device))
return btd_error_already_exists(msg);
dbus_message_iter_recurse(&args, &data);
+ /*
+ * TODO
+ * Should device object be destroyed if parsing or storing failed?
+ */
+
if (!parse_data(&data, &remote_data))
return btd_error_invalid_args(msg);
if (!store_data(adapter, &remote_data))
return btd_error_failed(msg, "Request failed");
- return g_dbus_create_reply(msg, DBUS_TYPE_INVALID);
+ reply = dbus_message_new_method_return(msg);
+ if (!reply)
+ return NULL;
+
+ dev_path = device_get_path(device);
+
+ dbus_message_append_args(reply, DBUS_TYPE_OBJECT_PATH, &dev_path,
+ DBUS_TYPE_INVALID);
+
+ return reply;
}
static DBusMessage *remove_remote_data(DBusConnection *conn, DBusMessage *msg,
@@ -277,7 +296,8 @@ static DBusMessage *remove_remote_data(DBusConnection *conn, DBusMessage *msg,
static const GDBusMethodTable oob_methods[] = {
{ GDBUS_METHOD("AddRemoteData",
GDBUS_ARGS({ "address", "s" }, { "data", "a{sv}"}),
- NULL, add_remote_data) },
+ GDBUS_ARGS({ "device", "o" }),
+ add_remote_data) },
{ GDBUS_METHOD("RemoveRemoteData",
GDBUS_ARGS({ "address", "s" }), NULL,
remove_remote_data) },
--
1.7.9.5
^ permalink raw reply related
* Re: [RFC v0 0/7] Manager/Adapter transition to ObjectManager
From: Johan Hedberg @ 2012-11-12 17:23 UTC (permalink / raw)
To: Mikel Astiz; +Cc: linux-bluetooth, Mikel Astiz
In-Reply-To: <1352385015-2127-1-git-send-email-mikel.astiz.oss@gmail.com>
Hi Mikel,
On Thu, Nov 08, 2012, Mikel Astiz wrote:
> (This is sent as RFC since I haven't done proper testing, and
> furthermore the test scripts haven't been updated)
>
> While thinking about how profile and their states should be exposed in
> D-Bus (see previous RFC), I found several potential improvements in
> the current version of the Manager and Adapter APIs.
>
> Basically, this patchset removes some properties and methods that seem
> duplicated.
>
> There are other similar methods/properties that could be simplified as
> well, but for practical reasons I started with the most obvious ones.
>
> Mikel Astiz (7):
> manager: Expose default adapter using property
> manager: Remove redundant D-Bus signals
> manager: Remove redundant Adapters property
> adapter: Remove redundant D-Bus signals
> adapter: Remove DevicesFound signal
> adapter: Remove redundant Devices property
> adapter: Remove FindDevice method from D-Bus API
>
> doc/adapter-api.txt | 32 +--------
> doc/manager-api.txt | 28 +-------
> src/adapter.c | 187 +---------------------------------------------------
> src/manager.c | 103 +++++++----------------------
> 4 files changed, 29 insertions(+), 321 deletions(-)
All patches except 5/7 (which needs a bit more discussion) have been
applied. Thanks.
Johan
^ permalink raw reply
* Re: [RFC v0 0/7] Manager/Adapter transition to ObjectManager
From: Johan Hedberg @ 2012-11-12 19:26 UTC (permalink / raw)
To: Mikel Astiz, linux-bluetooth, Mikel Astiz
In-Reply-To: <20121112172346.GA6267@x220.P-661HNU-F1>
Hi Mikel,
> > Mikel Astiz (7):
> > manager: Expose default adapter using property
> > manager: Remove redundant D-Bus signals
> > manager: Remove redundant Adapters property
> > adapter: Remove redundant D-Bus signals
> > adapter: Remove DevicesFound signal
> > adapter: Remove redundant Devices property
> > adapter: Remove FindDevice method from D-Bus API
> >
> > doc/adapter-api.txt | 32 +--------
> > doc/manager-api.txt | 28 +-------
> > src/adapter.c | 187 +---------------------------------------------------
> > src/manager.c | 103 +++++++----------------------
> > 4 files changed, 29 insertions(+), 321 deletions(-)
>
> All patches except 5/7 (which needs a bit more discussion) have been
> applied. Thanks.
I had to revert all of these since I didn't realize you hadn't updated
the test scripts (all of which broke with these patches). Also, it seems
the DefaultAdapter patch is also broken since I never saw that property
(e.g. with test/get-managed-objects). Please send a new patch set once
you've got the scripts converted and the DefaultAdapter patch fixed.
Thanks.
Johan
^ permalink raw reply
* Re: Feedback on potential fix for issue while advertising Feature List
From: Bart Westgeest @ 2012-11-12 19:36 UTC (permalink / raw)
To: Johan Hedberg; +Cc: linux-bluetooth
In-Reply-To: <20121110122535.GA26532@x220.P-661HNU-F1>
> I think the option of looking at the length and using the old
> type for < 256 and a 16-bit type for greater lengths would be the
> safest.
Thanks for the feedback. I'll start working on a patch.
^ permalink raw reply
* [PATCH BlueZ] build: Fix make distcheck for input plugin
From: Anderson Lizardo @ 2012-11-12 21:03 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Anderson Lizardo
suspend.c is a symlink generated at build time, therefore it should be
created on build directory. Additionally, it is necessary to add
-I$(srcdir)/profiles/input to CPPFLAGS so suspend.h can be found (the
compiler does not follow symlinks prior to resolving #include
directives).
---
Makefile.am | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/Makefile.am b/Makefile.am
index d49e8a0..c398e74 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -366,6 +366,10 @@ if MCAP
AM_CPPFLAGS += -I$(builddir)/health
endif
+if HOGPLUGIN
+AM_CPPFLAGS += -I$(srcdir)/profiles/input
+endif
+
unit_objects =
if TEST
@@ -405,7 +409,7 @@ profiles/sap/sap.c: profiles/sap/@SAP_DRIVER@
$(AM_V_GEN)$(LN_S) $(abs_top_srcdir)/$< $@
profiles/input/suspend.c: profiles/input/@HOG_SUSPEND_DRIVER@
- $(AM_V_GEN)$(LN_S) $(abs_top_srcdir)/$< $@
+ $(AM_V_GEN)$(LN_S) $(abs_top_builddir)/$< $@
scripts/%.rules:
$(AM_V_GEN)cp $(subst 97-,,$@) $@
--
1.7.9.5
^ permalink raw reply related
* Re: [PATCH BlueZ] build: Fix make distcheck for input plugin
From: Johan Hedberg @ 2012-11-13 8:05 UTC (permalink / raw)
To: Anderson Lizardo; +Cc: linux-bluetooth
In-Reply-To: <1352754221-29672-1-git-send-email-anderson.lizardo@openbossa.org>
Hi Lizardo,
On Mon, Nov 12, 2012, Anderson Lizardo wrote:
> suspend.c is a symlink generated at build time, therefore it should be
> created on build directory. Additionally, it is necessary to add
> -I$(srcdir)/profiles/input to CPPFLAGS so suspend.h can be found (the
> compiler does not follow symlinks prior to resolving #include
> directives).
> ---
> Makefile.am | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
Applied. Thanks.
Johan
^ permalink raw reply
* Re: [PATCH] Update dbusoob API
From: Johan Hedberg @ 2012-11-13 8:09 UTC (permalink / raw)
To: Szymon Janc; +Cc: linux-bluetooth
In-Reply-To: <1352735596-731-1-git-send-email-szymon.janc@tieto.com>
Hi Szymon,
On Mon, Nov 12, 2012, Szymon Janc wrote:
> This updates AddRemoteData method to create and return device object path.
>
> With recent change on how new device objects are created it is no
> longer possible to create device object from string with
> org.bluez.Adapter interface. When adding OOB data for specified
> address device object is created if it was not yet existing.
>
> Path to object is returned in AddRemoteData to avoid need for extra
> FindDevice() call on org.bluez.Adapter to get object maching specified
> address.
>
> Question:
> Should RemoveRemoteData be updated to accept device path instead of address?
> (and therefore require existing object, this method doesn't remove object or
> any storage data but only deletes hash/rand kept in kernel).
I'm not sure about this one. Usually passing object paths as a parameter
means you should be instead having the method on top of the object path
itself. Maybe we just keep this symmetric for now by using the address
instead.
Anyway, I went ahead and applied the AddRemoteData patch (after removing
the Change-Id tag - please remember to remove those in the future).
Johan
^ permalink raw reply
* Re: [PATCH] device: Defer write to storage
From: Johan Hedberg @ 2012-11-13 8:11 UTC (permalink / raw)
To: Frédéric Danis; +Cc: linux-bluetooth
In-Reply-To: <1352735024-2733-1-git-send-email-frederic.danis@linux.intel.com>
Hi Frederic,
On Mon, Nov 12, 2012, Frédéric Danis wrote:
> Defere write to storage using g_idle_add() to avoid multiple
> open/write/close operations when device properties are changed
> in sequence.
> ---
> src/device.c | 24 +++++++++++++++++++++---
> 1 file changed, 21 insertions(+), 3 deletions(-)
Applied after a couple of cosmetic fixes (we try to use > 0 for testing
for valid GSource IDs). Thanks.
Johan
^ permalink raw reply
* Re: [PATCH v2] gatt: Update characteristic names translation table
From: Johan Hedberg @ 2012-11-13 8:12 UTC (permalink / raw)
To: Andrzej Kaczmarek; +Cc: linux-bluetooth
In-Reply-To: <1352722128-12100-1-git-send-email-andrzej.kaczmarek@tieto.com>
Hi Andrzej,
On Mon, Nov 12, 2012, Andrzej Kaczmarek wrote:
> ---
> attrib/client.c | 23 +++++++++++++++++++++++
> 1 file changed, 23 insertions(+)
Applied. Thanks.
Johan
^ permalink raw reply
* Re: [RFC v0 0/7] Manager/Adapter transition to ObjectManager
From: Mikel Astiz @ 2012-11-13 10:44 UTC (permalink / raw)
To: Mikel Astiz, linux-bluetooth, Mikel Astiz
In-Reply-To: <20121112192607.GA6300@x220.P-661HNU-F1>
Hi Johan,
On Mon, Nov 12, 2012 at 8:26 PM, Johan Hedberg <johan.hedberg@gmail.com> wrote:
> Hi Mikel,
>
>> > Mikel Astiz (7):
>> > manager: Expose default adapter using property
>> > manager: Remove redundant D-Bus signals
>> > manager: Remove redundant Adapters property
>> > adapter: Remove redundant D-Bus signals
>> > adapter: Remove DevicesFound signal
>> > adapter: Remove redundant Devices property
>> > adapter: Remove FindDevice method from D-Bus API
>> >
>> > doc/adapter-api.txt | 32 +--------
>> > doc/manager-api.txt | 28 +-------
>> > src/adapter.c | 187 +---------------------------------------------------
>> > src/manager.c | 103 +++++++----------------------
>> > 4 files changed, 29 insertions(+), 321 deletions(-)
>>
>> All patches except 5/7 (which needs a bit more discussion) have been
>> applied. Thanks.
>
> I had to revert all of these since I didn't realize you hadn't updated
> the test scripts (all of which broke with these patches). Also, it seems
> the DefaultAdapter patch is also broken since I never saw that property
> (e.g. with test/get-managed-objects). Please send a new patch set once
> you've got the scripts converted and the DefaultAdapter patch fixed.
> Thanks.
You're right, we should keep the test scripts in sync all the time. I
tried to warn you about this in the cover-letter but no problem, I
will send v2 with the changes you suggest.
Regarding the DefaultAdapter property, it was working for me, but I
was using the Properties interface. The test script you mention is
indeed not reporting the property, but this is because the root object
is not a "managed object", and this property is associated to the
root. This is no real issue IMO but still, for convenience reasons: do
you think we should move the org.bluez.Manager interface to some other
object path such as /adapters? As a side effect, this could make it
possible that clients filter out signals (i.e. InterfacesAdded) based
on the object path.
Cheers,
Mikel
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox