Input service signals
Hello,
I am using the Input service. It is very helpful.
But Connected/Disconnected signals from Device interface are currently only sent when connection/disconnection are done through the Device interface methods. They are not sent when remote device connects/disconnects.
I wrote a patch that move common code between server.c and device.c into a new file session.c. This allows to send those signals for all connect/disconnect.
Hope this is OK.
Fred
Signature · 7 lines
----------------------------------------------- It is not by improving the oil lamp that one invents the electric bulb! ----------------------------------------------- Danis Frederic Access Company Software engineer Mail : mailto:[email protected] -----------------------------------------------
? utils/input/Makefile.in
Index: utils/input/Makefile.am
===================================================================
RCS file: /cvsroot/bluez/utils/input/Makefile.am,v retrieving revision 1.17
input/Makefile.am +1 -1
@@ -12,7 +12,7 @@ service_PROGRAMS = bluetoothd-service-in bluetoothd_service_input_SOURCES = main.c \ manager.h manager.c error.h error.c \ - server.h server.c device.h device.c storage.h storage.c + server.h server.c device.h device.c storage.h storage.c session.c session.h LDADD = $(top_builddir)/common/libhelper.a \ @GLIB_LIBS@ @DBUS_LIBS@ @BLUEZ_LIBS@
Index: utils/input/device.c
===================================================================
RCS file: /cvsroot/bluez/utils/input/device.c,v
retrieving revision 1.52
input/device.c +33 -71
278 lines not on this page · raw message
Index: utils/input/manager.c
===================================================================
RCS file: /cvsroot/bluez/utils/input/manager.c,v
retrieving revision 1.25
input/manager.c +10 -3
@@ -68,7 +68,7 @@ struct pending_req {int ctrl_sock; }; -static GSList *device_paths =NULL ;/* Input registered paths */ +GSList *device_paths =NULL ;/* Input registered paths */ static DBusConnection *connection =NULL ;
@@ -323,6 +323,9 @@ cleanup:close (pr->ctrl_sock);pending_req_free (pr); +if (hidp.rd_data) +g_free (hidp.rd_data); +return FALSE; }
@@ -778,7 +781,7 @@ done:dbus_message_unref (reply); } -static int path_bdaddr_cmp (const char *path,const bdaddr_t *bdaddr) +int path_bdaddr_cmp (const char *path,const bdaddr_t *bdaddr) {bdaddr_t src, dst;
@@ -954,9 +957,13 @@ static void stored_input(char *key, char* acceptable since the source is different. */ if (input_device_register (connection, src, &dst, &hidp, &path) <0 ) -return ; + goto cleanup; device_paths =g_slist_append (device_paths,g_strdup (path)); + +cleanup: +if (hidp.rd_data) +g_free (hidp.rd_data); }static void register_stored_inputs (void )
Index: utils/input/server.c
===================================================================
RCS file: /cvsroot/bluez/utils/input/server.c,v
retrieving revision 1.13
input/server.c +18 -126
185 lines not on this page · raw message
Index: utils/input/session.c
===================================================================
RCS file: utils/input/session.c
input/session.c new file +197 -0
197 lines not on this page · raw message
Index: utils/input/session.h
===================================================================
RCS file: utils/input/session.h
input/session.h new file +40 -0
@@ -0,0 +1,40 @@ +/* +* +* BlueZ - Bluetooth protocol stack for Linux +* +* Copyright (C) 2004-2007 Marcel Holtmann <[email protected]> +* +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +* +*/ + +#include <bluetooth/bluetooth.h> + +struct session_data { +bdaddr_t src; +bdaddr_t dst; +int ctrl_sk; +int intr_sk; +DBusConnection *connection; +const char *path; +}; + +struct session_data *find_session (bdaddr_t *src,bdaddr_t *dst); +void create_device (struct session_data *session); +struct session_data *create_session (bdaddr_t *src,bdaddr_t *dst,int ctrl_sk,DBusConnection *connection,const char *path); +void add_intr_sk (struct session_data *session,int intr_sk); +void remove_session (struct session_data *session); +
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Bluez-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bluez-devel
Marcel Holtmann
maintainerHi Frederic,
Quoted 10 lines
I am using the Input service. It is very helpful.
But Connected/Disconnected signals from Device interface are currently only sent when connection/disconnection are done through the Device interface methods. They are not sent when remote device connects/disconnects.
I wrote a patch that move common code between
server.canddevice.cinto a new filesession.c. This allows to send those signals for all connect/disconnect.
I haven't looked at your patch, but I agree that we should send the signals when the remote device re-connects. I wait for Claudio's or Johan's comments on that patch.
Regards
Marcel
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Bluez-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/bluez-devel
Quoted 4 lines · Frederic Danis
But Connected/Disconnected signals from Device interface are currently only sent when connection/disconnection are done through the Device interface methods. They are not sent when remote device connects/disconnects.
I wrote a patch that move common code between
server.canddevice.cinto a new filesession.c. This allows to send those signals for all connect/disconnect.
In previous patch, I removed the disconnected signal for fake input. This is corrected in this one.
Hope this is OK.
Regards
Fred
Signature · 7 lines
----------------------------------------------- It is not by improving the oil lamp that one invents the electric bulb! ----------------------------------------------- Danis Frederic Access Company Software engineer Mail : mailto:[email protected] -----------------------------------------------
? utils/input/Makefile.in
Index: utils/input/Makefile.am
===================================================================
RCS file: /cvsroot/bluez/utils/input/Makefile.am,v retrieving revision 1.17
input/Makefile.am +1 -1
@@ -12,7 +12,7 @@ service_PROGRAMS = bluetoothd-service-in bluetoothd_service_input_SOURCES = main.c \ manager.h manager.c error.h error.c \ - server.h server.c device.h device.c storage.h storage.c + server.h server.c device.h device.c storage.h storage.c session.c session.h LDADD = $(top_builddir)/common/libhelper.a \ @GLIB_LIBS@ @DBUS_LIBS@ @BLUEZ_LIBS@
Index: utils/input/device.c
===================================================================
RCS file: /cvsroot/bluez/utils/input/device.c,v
retrieving revision 1.52
input/device.c +43 -72
313 lines not on this page · raw message
Index: utils/input/manager.c
===================================================================
RCS file: /cvsroot/bluez/utils/input/manager.c,v
retrieving revision 1.25
input/manager.c +10 -3
@@ -68,7 +68,7 @@ struct pending_req {int ctrl_sock; }; -static GSList *device_paths =NULL ;/* Input registered paths */ +GSList *device_paths =NULL ;/* Input registered paths */ static DBusConnection *connection =NULL ;
@@ -323,6 +323,9 @@ cleanup:close (pr->ctrl_sock);pending_req_free (pr); +if (hidp.rd_data) +g_free (hidp.rd_data); +return FALSE; }
@@ -778,7 +781,7 @@ done:dbus_message_unref (reply); } -static int path_bdaddr_cmp (const char *path,const bdaddr_t *bdaddr) +int path_bdaddr_cmp (const char *path,const bdaddr_t *bdaddr) {bdaddr_t src, dst;
@@ -954,9 +957,13 @@ static void stored_input(char *key, char* acceptable since the source is different. */ if (input_device_register (connection, src, &dst, &hidp, &path) <0 ) -return ; + goto cleanup; device_paths =g_slist_append (device_paths,g_strdup (path)); + +cleanup: +if (hidp.rd_data) +g_free (hidp.rd_data); }static void register_stored_inputs (void )
Index: utils/input/server.c
===================================================================
RCS file: /cvsroot/bluez/utils/input/server.c,v
retrieving revision 1.13
input/server.c +18 -126
185 lines not on this page · raw message
Index: utils/input/session.c
===================================================================
RCS file: utils/input/session.c
input/session.c new file +197 -0
197 lines not on this page · raw message
Index: utils/input/session.h
===================================================================
RCS file: utils/input/session.h
input/session.h new file +40 -0
@@ -0,0 +1,40 @@ +/* +* +* BlueZ - Bluetooth protocol stack for Linux +* +* Copyright (C) 2004-2007 Marcel Holtmann <[email protected]> +* +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +* +*/ + +#include <bluetooth/bluetooth.h> + +struct session_data { +bdaddr_t src; +bdaddr_t dst; +int ctrl_sk; +int intr_sk; +DBusConnection *connection; +const char *path; +}; + +struct session_data *find_session (bdaddr_t *src,bdaddr_t *dst); +void create_device (struct session_data *session); +struct session_data *create_session (bdaddr_t *src,bdaddr_t *dst,int ctrl_sk,DBusConnection *connection,const char *path); +void add_intr_sk (struct session_data *session,int intr_sk); +void remove_session (struct session_data *session); +
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Bluez-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bluez-devel
SGkgRnJlZGVyaWMsCgpJIGdvdCBhIHNlZ21lbnRhdGlvbiBmYXVsdCB3aGVuIGNhbGxpbmcgRGV2 aWNlLkNvbm5lY3QgKyBEZXZpY2UuRGlzY29ubmVjdAoKVGhlIHBhdGggY29udGVudCBpcyB3cm9u ZyhpdCBjb250YWlucyB0aGUgYnVzIGlkKS4KCihnZGIpIGJhY2t0cmFjZQojMCAgMHgwODA1Mjg1 YiBpbiBkYnVzX2Nvbm5lY3Rpb25fZW1pdF9zaWduYWxfdmFsaXN0IChjb25uPTB4ODA1N2FjOCwK cGF0aD0weDgwNTdkYjggIjoxLjM0IiwgaW50ZXJmYWNlPTB4ODA1M2RmNSAib3JnLmJsdWV6Lmlu cHV0LkRldmljZSIsCiAgICBuYW1lPTB4ODA1M2U3OCAiRGlzY29ubmVjdGVkIiwgZmlyc3Q9MCwg dmFyX2FyZ3M9MHhiZmUzOTM0NAoiSFfvv73vv71oXDIyM++/ve+/vVxyXDIwNO+/ve+/vUhcMjM3 XDAwNVxiICIpIGF0IGRidXMtaGVscGVyLmM6NDc4CiMxICAweDA4MDUyOWU3IGluIGRidXNfY29u bmVjdGlvbl9lbWl0X3NpZ25hbCAoY29ubj0weDgwNTdhYzgsCnBhdGg9MHg4MDU3ZGI4ICI6MS4z NCIsIGludGVyZmFjZT0weDgwNTNkZjUgIm9yZy5ibHVlei5pbnB1dC5EZXZpY2UiLAogICAgbmFt ZT0weDgwNTNlNzggIkRpc2Nvbm5lY3RlZCIsIGZpcnN0PTApIGF0IGRidXMtaGVscGVyLmM6NTMx CgpDb3VsZCB5b3UgcGxlYXNlIGZpeCBpdD8KCkJyLApDbGF1ZGlvLgoKT24gNi8xOS8wNywgRnJl ZGVyaWMgRGFuaXMgPGZyZWRlcmljLmRhbmlzQGFjY2Vzcy1jb21wYW55LmNvbT4gd3JvdGU6Cj4g RnJlZGVyaWMgRGFuaXMgd3JvdGU6Cj4gPiBCdXQgQ29ubmVjdGVkL0Rpc2Nvbm5lY3RlZCBzaWdu YWxzIGZyb20gRGV2aWNlIGludGVyZmFjZSBhcmUgY3VycmVudGx5Cj4gPiBvbmx5IHNlbnQgd2hl biBjb25uZWN0aW9uL2Rpc2Nvbm5lY3Rpb24gYXJlIGRvbmUgdGhyb3VnaCB0aGUgRGV2aWNlCj4g PiBpbnRlcmZhY2UgbWV0aG9kcy4gVGhleSBhcmUgbm90IHNlbnQgd2hlbiByZW1vdGUgZGV2aWNl Cj4gPiBjb25uZWN0cy9kaXNjb25uZWN0cy4KPiA+Cj4gPiBJIHdyb3RlIGEgcGF0Y2ggdGhhdCBt b3ZlIGNvbW1vbiBjb2RlIGJldHdlZW4gc2VydmVyLmMgYW5kIGRldmljZS5jIGludG8KPiA+IGEg bmV3IGZpbGUgc2Vzc2lvbi5jLiBUaGlzIGFsbG93cyB0byBzZW5kIHRob3NlIHNpZ25hbHMgZm9y IGFsbAo+ID4gY29ubmVjdC9kaXNjb25uZWN0Lgo+ID4KPgo+IEluIHByZXZpb3VzIHBhdGNoLCBJ IHJlbW92ZWQgdGhlIGRpc2Nvbm5lY3RlZCBzaWduYWwgZm9yIGZha2UgaW5wdXQuIFRoaXMgaXMg Y29ycmVjdGVkIGluIHRoaXMgb25lLgo+Cj4gSG9wZSB0aGlzIGlzIE9LLgo+Cj4gUmVnYXJkcwo+ Cj4gRnJlZAo+Cj4gLS0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQo+IEl0IGlzIG5vdCBieSBpbXByb3ZpbmcgdGhlIG9pbCBsYW1wIHRoYXQgb25lIGlu dmVudHMgdGhlIGVsZWN0cmljIGJ1bGIhCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KPiBEYW5pcyBGcmVkZXJpYyAgICAgICAgICAgICAgICAgICBBY2Nl c3MgQ29tcGFueQo+IFNvZnR3YXJlIGVuZ2luZWVyCj4gTWFpbCA6IG1haWx0bzpmcmVkZXJpYy5k YW5pc0BhY2Nlc3MtY29tcGFueS5jb20KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRoaXMgU0YubmV0IGVtYWlsIGlzIHNw b25zb3JlZCBieSBEQjIgRXhwcmVzcwpEb3dubG9hZCBEQjIgRXhwcmVzcyBDIC0gdGhlIEZSRUUg dmVyc2lvbiBvZiBEQjIgZXhwcmVzcyBhbmQgdGFrZQpjb250cm9sIG9mIHlvdXIgWE1MLiBObyBs aW1pdHMuIEp1c3QgZGF0YS4gQ2xpY2sgdG8gZ2V0IGl0IG5vdy4KaHR0cDovL3NvdXJjZWZvcmdl Lm5ldC9wb3dlcmJhci9kYjIvCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkJsdWV6LWRldmVsIG1haWxpbmcgbGlzdApCbHVlei1kZXZlbEBsaXN0cy5zb3Vy Y2Vmb3JnZS5uZXQKaHR0cHM6Ly9saXN0cy5zb3VyY2Vmb3JnZS5uZXQvbGlzdHMvbGlzdGluZm8v Ymx1ZXotZGV2ZWwK
Q2xhdWRpbyBUYWthaGFzaSB3cm90ZToKPiBIaSBGcmVkZXJpYywKPiAKPiBJIGdvdCBhIHNlZ21l bnRhdGlvbiBmYXVsdCB3aGVuIGNhbGxpbmcgRGV2aWNlLkNvbm5lY3QgKyBEZXZpY2UuRGlzY29u bmVjdAo+IAo+IFRoZSBwYXRoIGNvbnRlbnQgaXMgd3JvbmcoaXQgY29udGFpbnMgdGhlIGJ1cyBp ZCkuCj4gCj4gKGdkYikgYmFja3RyYWNlCj4gIzAgIDB4MDgwNTI4NWIgaW4gZGJ1c19jb25uZWN0 aW9uX2VtaXRfc2lnbmFsX3ZhbGlzdCAoY29ubj0weDgwNTdhYzgsCj4gcGF0aD0weDgwNTdkYjgg IjoxLjM0IiwgaW50ZXJmYWNlPTB4ODA1M2RmNSAib3JnLmJsdWV6LmlucHV0LkRldmljZSIsCj4g ICAgIG5hbWU9MHg4MDUzZTc4ICJEaXNjb25uZWN0ZWQiLCBmaXJzdD0wLCB2YXJfYXJncz0weGJm ZTM5MzQ0Cj4gIkhX77+977+9aFwyMjPvv73vv71cclwyMDTvv73vv71IXDIzN1wwMDVcYiAiKSBh dCBkYnVzLWhlbHBlci5jOjQ3OAo+ICMxICAweDA4MDUyOWU3IGluIGRidXNfY29ubmVjdGlvbl9l bWl0X3NpZ25hbCAoY29ubj0weDgwNTdhYzgsCj4gcGF0aD0weDgwNTdkYjggIjoxLjM0IiwgaW50 ZXJmYWNlPTB4ODA1M2RmNSAib3JnLmJsdWV6LmlucHV0LkRldmljZSIsCj4gICAgIG5hbWU9MHg4 MDUzZTc4ICJEaXNjb25uZWN0ZWQiLCBmaXJzdD0wKSBhdCBkYnVzLWhlbHBlci5jOjUzMQo+IAo+ IENvdWxkIHlvdSBwbGVhc2UgZml4IGl0PwoKSGVsbG8gQ2xhdWRpbywKCldoZW4gZG8geW91IGdl dCB0aGlzIGNyYXNoID8gdXNpbmcgSElEIGRldmljZSBvciBmYWtlIGlucHV0ID8KClRoYW5rcwoK RnJlZAoKLS0gCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ckl0IGlzIG5vdCBieSBpbXByb3ZpbmcgdGhlIG9pbCBsYW1wIHRoYXQgb25lIGludmVudHMgdGhl IGVsZWN0cmljIGJ1bGIhCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCkRhbmlzIEZyZWRlcmljICAgICAgICAgICAgICAgICAgIEFjY2VzcyBDb21wYW55ClNv ZnR3YXJlIGVuZ2luZWVyCk1haWwgOiBtYWlsdG86ZnJlZGVyaWMuZGFuaXNAYWNjZXNzLWNvbXBh bnkuY29tCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tClRoaXMgU0YubmV0IGVtYWlsIGlzIHNwb25zb3JlZCBieSBEQjIgRXhw cmVzcwpEb3dubG9hZCBEQjIgRXhwcmVzcyBDIC0gdGhlIEZSRUUgdmVyc2lvbiBvZiBEQjIgZXhw cmVzcyBhbmQgdGFrZQpjb250cm9sIG9mIHlvdXIgWE1MLiBObyBsaW1pdHMuIEp1c3QgZGF0YS4g Q2xpY2sgdG8gZ2V0IGl0IG5vdy4KaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wb3dlcmJhci9kYjIv Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkJsdWV6LWRl dmVsIG1haWxpbmcgbGlzdApCbHVlei1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKaHR0cHM6 Ly9saXN0cy5zb3VyY2Vmb3JnZS5uZXQvbGlzdHMvbGlzdGluZm8vYmx1ZXotZGV2ZWwK
SGkgRnJlZGVyaWMsCgpsYXRlc3QgY3ZzICsgeW91ciBwYXRjaCB1c2luZyB0aGUgSElEIGRldmlj ZS4KCkJSLApDbGF1ZGlvLgpPbiA2LzE5LzA3LCBGcmVkZXJpYyBEYW5pcyA8ZnJlZGVyaWMuZGFu aXNAYWNjZXNzLWNvbXBhbnkuY29tPiB3cm90ZToKPiBDbGF1ZGlvIFRha2FoYXNpIHdyb3RlOgo+ ID4gSGkgRnJlZGVyaWMsCj4gPgo+ID4gSSBnb3QgYSBzZWdtZW50YXRpb24gZmF1bHQgd2hlbiBj YWxsaW5nIERldmljZS5Db25uZWN0ICsgRGV2aWNlLkRpc2Nvbm5lY3QKPiA+Cj4gPiBUaGUgcGF0 aCBjb250ZW50IGlzIHdyb25nKGl0IGNvbnRhaW5zIHRoZSBidXMgaWQpLgo+ID4KPiA+IChnZGIp IGJhY2t0cmFjZQo+ID4gIzAgIDB4MDgwNTI4NWIgaW4gZGJ1c19jb25uZWN0aW9uX2VtaXRfc2ln bmFsX3ZhbGlzdCAoY29ubj0weDgwNTdhYzgsCj4gPiBwYXRoPTB4ODA1N2RiOCAiOjEuMzQiLCBp bnRlcmZhY2U9MHg4MDUzZGY1ICJvcmcuYmx1ZXouaW5wdXQuRGV2aWNlIiwKPiA+ICAgICBuYW1l PTB4ODA1M2U3OCAiRGlzY29ubmVjdGVkIiwgZmlyc3Q9MCwgdmFyX2FyZ3M9MHhiZmUzOTM0NAo+ ID4gIkhX77+977+9aFwyMjPvv73vv71cclwyMDTvv73vv71IXDIzN1wwMDVcYiAiKSBhdCBkYnVz LWhlbHBlci5jOjQ3OAo+ID4gIzEgIDB4MDgwNTI5ZTcgaW4gZGJ1c19jb25uZWN0aW9uX2VtaXRf c2lnbmFsIChjb25uPTB4ODA1N2FjOCwKPiA+IHBhdGg9MHg4MDU3ZGI4ICI6MS4zNCIsIGludGVy ZmFjZT0weDgwNTNkZjUgIm9yZy5ibHVlei5pbnB1dC5EZXZpY2UiLAo+ID4gICAgIG5hbWU9MHg4 MDUzZTc4ICJEaXNjb25uZWN0ZWQiLCBmaXJzdD0wKSBhdCBkYnVzLWhlbHBlci5jOjUzMQo+ID4K PiA+IENvdWxkIHlvdSBwbGVhc2UgZml4IGl0Pwo+Cj4gSGVsbG8gQ2xhdWRpbywKPgo+IFdoZW4g ZG8geW91IGdldCB0aGlzIGNyYXNoID8gdXNpbmcgSElEIGRldmljZSBvciBmYWtlIGlucHV0ID8K Pgo+IFRoYW5rcwo+Cj4gRnJlZAo+Cj4gLS0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQo+IEl0IGlzIG5vdCBieSBpbXByb3ZpbmcgdGhlIG9pbCBsYW1w IHRoYXQgb25lIGludmVudHMgdGhlIGVsZWN0cmljIGJ1bGIhCj4gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiBEYW5pcyBGcmVkZXJpYyAgICAgICAgICAg ICAgICAgICBBY2Nlc3MgQ29tcGFueQo+IFNvZnR3YXJlIGVuZ2luZWVyCj4gTWFpbCA6IG1haWx0 bzpmcmVkZXJpYy5kYW5pc0BhY2Nlc3MtY29tcGFueS5jb20KPiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+Cj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+IFRoaXMg U0YubmV0IGVtYWlsIGlzIHNwb25zb3JlZCBieSBEQjIgRXhwcmVzcwo+IERvd25sb2FkIERCMiBF eHByZXNzIEMgLSB0aGUgRlJFRSB2ZXJzaW9uIG9mIERCMiBleHByZXNzIGFuZCB0YWtlCj4gY29u dHJvbCBvZiB5b3VyIFhNTC4gTm8gbGltaXRzLiBKdXN0IGRhdGEuIENsaWNrIHRvIGdldCBpdCBu b3cuCj4gaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wb3dlcmJhci9kYjIvCj4gX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBCbHVlei1kZXZlbCBtYWlsaW5n IGxpc3QKPiBCbHVlei1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKPiBodHRwczovL2xpc3Rz LnNvdXJjZWZvcmdlLm5ldC9saXN0cy9saXN0aW5mby9ibHVlei1kZXZlbAo+CgoKLS0gCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpDbGF1 ZGlvIFRha2FoYXNpCkluc3RpdHV0byBOb2tpYSBkZSBUZWNub2xvZ2lhIC0gSU5kVAotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tClRoaXMgU0YubmV0IGVtYWlsIGlzIHNwb25zb3JlZCBieSBEQjIgRXhwcmVzcwpE b3dubG9hZCBEQjIgRXhwcmVzcyBDIC0gdGhlIEZSRUUgdmVyc2lvbiBvZiBEQjIgZXhwcmVzcyBh bmQgdGFrZQpjb250cm9sIG9mIHlvdXIgWE1MLiBObyBsaW1pdHMuIEp1c3QgZGF0YS4gQ2xpY2sg dG8gZ2V0IGl0IG5vdy4KaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wb3dlcmJhci9kYjIvCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkJsdWV6LWRldmVsIG1h aWxpbmcgbGlzdApCbHVlei1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKaHR0cHM6Ly9saXN0 cy5zb3VyY2Vmb3JnZS5uZXQvbGlzdHMvbGlzdGluZm8vYmx1ZXotZGV2ZWwK
Quoted 28 lines · Claudio Takahasi
Hi Frederic,
latest cvs + your patch using the HID device.
BR,
Claudio.Quoted 21 lines · Frederic Danis
Quoted 9 lines · Claudio Takahasi
Hi Frederic,
I got a segmentation fault when calling Device.Connect + Device.Disconnect
The path content is wrong(it contains the bus id).
(gdb) backtrace
#00x0805285bindbus_connection_emit_signal_valist(conn=0x8057ac8, path=0x8057db8 ":1.34", interface=0x8053df5 "org.bluez.input.Device",Quoted 7 lines
name=0x8053e78 "Disconnected", first=0, var_args=0xbfe39344 "HW��h\223��\r\204��H\237\005\b ") at dbus-helper.c:478 #1 0x080529e7 in dbus_connection_emit_signal (conn=0x8057ac8, path=0x8057db8 ":1.34", interface=0x8053df5 "org.bluez.input.Device", name=0x8053e78 "Disconnected", first=0) at dbus-helper.c:531Could you please fix it?
Hello Claudio,
When do you get this crash ? using HID device or fake input ?
Hello Claudio,
Here is a new version of the patch, fixing the crash (I do not understand how I had test it before without this error, sorry ;-[)
BR
Fred
Signature · 7 lines
----------------------------------------------- It is not by improving the oil lamp that one invents the electric bulb! ----------------------------------------------- Danis Frederic Access Company Software engineer Mail : mailto:[email protected] -----------------------------------------------
? utils/input/Makefile.in
Index: utils/input/Makefile.am
===================================================================
RCS file: /cvsroot/bluez/utils/input/Makefile.am,v retrieving revision 1.17
input/Makefile.am +1 -1
@@ -12,7 +12,7 @@ service_PROGRAMS = bluetoothd-service-in bluetoothd_service_input_SOURCES = main.c \ manager.h manager.c error.h error.c \ - server.h server.c device.h device.c storage.h storage.c + server.h server.c device.h device.c storage.h storage.c session.c session.h LDADD = $(top_builddir)/common/libhelper.a \ @GLIB_LIBS@ @DBUS_LIBS@ @BLUEZ_LIBS@
Index: utils/input/device.c
===================================================================
RCS file: /cvsroot/bluez/utils/input/device.c,v
retrieving revision 1.52
input/device.c +45 -72
315 lines not on this page · raw message
Index: utils/input/manager.c
===================================================================
RCS file: /cvsroot/bluez/utils/input/manager.c,v
retrieving revision 1.25
input/manager.c +10 -3
@@ -68,7 +68,7 @@ struct pending_req {int ctrl_sock; }; -static GSList *device_paths =NULL ;/* Input registered paths */ +GSList *device_paths =NULL ;/* Input registered paths */ static DBusConnection *connection =NULL ;
@@ -323,6 +323,9 @@ cleanup:close (pr->ctrl_sock);pending_req_free (pr); +if (hidp.rd_data) +g_free (hidp.rd_data); +return FALSE; }
@@ -778,7 +781,7 @@ done:dbus_message_unref (reply); } -static int path_bdaddr_cmp (const char *path,const bdaddr_t *bdaddr) +int path_bdaddr_cmp (const char *path,const bdaddr_t *bdaddr) {bdaddr_t src, dst;
@@ -954,9 +957,13 @@ static void stored_input(char *key, char* acceptable since the source is different. */ if (input_device_register (connection, src, &dst, &hidp, &path) <0 ) -return ; + goto cleanup; device_paths =g_slist_append (device_paths,g_strdup (path)); + +cleanup: +if (hidp.rd_data) +g_free (hidp.rd_data); }static void register_stored_inputs (void )
Index: utils/input/server.c
===================================================================
RCS file: /cvsroot/bluez/utils/input/server.c,v
retrieving revision 1.13
input/server.c +18 -126
185 lines not on this page · raw message
Index: utils/input/session.c
===================================================================
RCS file: utils/input/session.c
input/session.c new file +198 -0
198 lines not on this page · raw message
Index: utils/input/session.h
===================================================================
RCS file: utils/input/session.h
input/session.h new file +40 -0
@@ -0,0 +1,40 @@ +/* +* +* BlueZ - Bluetooth protocol stack for Linux +* +* Copyright (C) 2004-2007 Marcel Holtmann <[email protected]> +* +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +* +*/ + +#include <bluetooth/bluetooth.h> + +struct session_data { +bdaddr_t src; +bdaddr_t dst; +int ctrl_sk; +int intr_sk; +DBusConnection *connection; +const char *path; +}; + +struct session_data *find_session (bdaddr_t *src,bdaddr_t *dst); +void create_device (struct session_data *session); +struct session_data *create_session (bdaddr_t *src,bdaddr_t *dst,int ctrl_sk,DBusConnection *connection,const char *path); +void add_intr_sk (struct session_data *session,int intr_sk); +void remove_session (struct session_data *session); +
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Bluez-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bluez-devel
T24gNi8yMC8wNywgRnJlZGVyaWMgRGFuaXMgPGZyZWRlcmljLmRhbmlzQGFjY2Vzcy1jb21wYW55 LmNvbT4gd3JvdGU6Cj4gQ2xhdWRpbyBUYWthaGFzaSB3cm90ZToKPiA+IEhpIEZyZWRlcmljLAo+ ID4KPiA+IGxhdGVzdCBjdnMgKyB5b3VyIHBhdGNoIHVzaW5nIHRoZSBISUQgZGV2aWNlLgo+ID4K PiA+IEJSLAo+ID4gQ2xhdWRpby4KPiA+IE9uIDYvMTkvMDcsIEZyZWRlcmljIERhbmlzIDxmcmVk ZXJpYy5kYW5pc0BhY2Nlc3MtY29tcGFueS5jb20+IHdyb3RlOgo+ID4+IENsYXVkaW8gVGFrYWhh c2kgd3JvdGU6Cj4gPj4+IEhpIEZyZWRlcmljLAo+ID4+Pgo+ID4+PiBJIGdvdCBhIHNlZ21lbnRh dGlvbiBmYXVsdCB3aGVuIGNhbGxpbmcgRGV2aWNlLkNvbm5lY3QgKyBEZXZpY2UuRGlzY29ubmVj dAo+ID4+Pgo+ID4+PiBUaGUgcGF0aCBjb250ZW50IGlzIHdyb25nKGl0IGNvbnRhaW5zIHRoZSBi dXMgaWQpLgo+ID4+Pgo+ID4+PiAoZ2RiKSBiYWNrdHJhY2UKPiA+Pj4gIzAgIDB4MDgwNTI4NWIg aW4gZGJ1c19jb25uZWN0aW9uX2VtaXRfc2lnbmFsX3ZhbGlzdCAoY29ubj0weDgwNTdhYzgsCj4g Pj4+IHBhdGg9MHg4MDU3ZGI4ICI6MS4zNCIsIGludGVyZmFjZT0weDgwNTNkZjUgIm9yZy5ibHVl ei5pbnB1dC5EZXZpY2UiLAo+ID4+PiAgICAgbmFtZT0weDgwNTNlNzggIkRpc2Nvbm5lY3RlZCIs IGZpcnN0PTAsIHZhcl9hcmdzPTB4YmZlMzkzNDQKPiA+Pj4gIkhX77+977+9aFwyMjPvv73vv71c clwyMDTvv73vv71IXDIzN1wwMDVcYiAiKSBhdCBkYnVzLWhlbHBlci5jOjQ3OAo+ID4+PiAjMSAg MHgwODA1MjllNyBpbiBkYnVzX2Nvbm5lY3Rpb25fZW1pdF9zaWduYWwgKGNvbm49MHg4MDU3YWM4 LAo+ID4+PiBwYXRoPTB4ODA1N2RiOCAiOjEuMzQiLCBpbnRlcmZhY2U9MHg4MDUzZGY1ICJvcmcu Ymx1ZXouaW5wdXQuRGV2aWNlIiwKPiA+Pj4gICAgIG5hbWU9MHg4MDUzZTc4ICJEaXNjb25uZWN0 ZWQiLCBmaXJzdD0wKSBhdCBkYnVzLWhlbHBlci5jOjUzMQo+ID4+Pgo+ID4+PiBDb3VsZCB5b3Ug cGxlYXNlIGZpeCBpdD8KPiA+PiBIZWxsbyBDbGF1ZGlvLAo+ID4+Cj4gPj4gV2hlbiBkbyB5b3Ug Z2V0IHRoaXMgY3Jhc2ggPyB1c2luZyBISUQgZGV2aWNlIG9yIGZha2UgaW5wdXQgPwo+ID4+Cj4K PiBIZWxsbyBDbGF1ZGlvLAo+Cj4gSGVyZSBpcyBhIG5ldyB2ZXJzaW9uIG9mIHRoZSBwYXRjaCwg Zml4aW5nIHRoZSBjcmFzaCAoSSBkbyBub3QgdW5kZXJzdGFuZCBob3cgSSBoYWQgdGVzdCBpdCBi ZWZvcmUgd2l0aG91dCB0aGlzIGVycm9yLCBzb3JyeSA7LVspCj4KPiBCUgo+Cj4gRnJlZAo+Cj4g LS0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+IEl0 IGlzIG5vdCBieSBpbXByb3ZpbmcgdGhlIG9pbCBsYW1wIHRoYXQgb25lIGludmVudHMgdGhlIGVs ZWN0cmljIGJ1bGIhCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KPiBEYW5pcyBGcmVkZXJpYyAgICAgICAgICAgICAgICAgICBBY2Nlc3MgQ29tcGFueQo+ IFNvZnR3YXJlIGVuZ2luZWVyCj4gTWFpbCA6IG1haWx0bzpmcmVkZXJpYy5kYW5pc0BhY2Nlc3Mt Y29tcGFueS5jb20KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQoKSGkgRnJlZGVyaWMsCgpHZW5lcmFsbHkgSSB0ZXN0IHVzaW5nIGRidXMtc2VuZCwgeW91 IGNhbiBmaW5kIHNvbWUgZXhhbXBsZXMgaGVyZToKaHR0cDovL3dpa2kuYmx1ZXoub3JnL3dpa2kv SE9XVE8vSW5wdXREZXZpY2VzCgpUbyByZXByb2R1Y2UgdGhlIHJlcG9ydGVkIGJ1ZyBJIHdhcyBj YWxsaW5nOgoxLiBDcmVhdGVEZXZpY2UKMi4gQ29ubmVjdAozLiBEaXNjb25uZWN0CgoKWW91ciBs YXN0IHBhdGNoIGlzIHdvcmtpbmcgZmluZS4gIFdlIGNvdWxkIHRyeSByZW1vdmUgdGhlICJzdHJ1 Y3QKc2Vzc2lvbiIgYW5kIHB1dCBldmVyeXRoaW5nIGluc2lkZSB0aGUgInN0cnVjdCBkZXZpY2Ui IHNpbmNlIGZvciBlYWNoCmlucHV0IGRldmljZSByZWdpc3RlcmVkIHRoZXJlIGlzIGEgRC1CdXMg ZGF0YSBhc3NpZ25lZChJdCBpcyBhcHBsaWVkCnRvIGRldmljZSBhbmQgaG9zdCBpbml0aWF0ZWQg Y29ubmVjdGlvbnMpLiBTbyB0aGUgInN0cnVjdCBzZXNzaW9uIgpjb250YWlucyBkdXBsaWNhdGVk IGRhdGEuCgpJIHdpbGwgdHJ5IGNoYW5nZSB0aGUgY29kZSBhbmQgcHJvcG9zZSBhbm90aGVyIGFw cHJvYWNoIHVzaW5nIHlvdXIKY29kZSBhcyBiYXNlbGluZS4KCkJSLApDbGF1ZGlvLgotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tClRoaXMgU0YubmV0IGVtYWlsIGlzIHNwb25zb3JlZCBieSBEQjIgRXhwcmVzcwpE b3dubG9hZCBEQjIgRXhwcmVzcyBDIC0gdGhlIEZSRUUgdmVyc2lvbiBvZiBEQjIgZXhwcmVzcyBh bmQgdGFrZQpjb250cm9sIG9mIHlvdXIgWE1MLiBObyBsaW1pdHMuIEp1c3QgZGF0YS4gQ2xpY2sg dG8gZ2V0IGl0IG5vdy4KaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wb3dlcmJhci9kYjIvCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkJsdWV6LWRldmVsIG1h aWxpbmcgbGlzdApCbHVlei1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKaHR0cHM6Ly9saXN0 cy5zb3VyY2Vmb3JnZS5uZXQvbGlzdHMvbGlzdGluZm8vYmx1ZXotZGV2ZWwK
T24gNi8yMS8wNywgQ2xhdWRpbyBUYWthaGFzaSA8Y2t0YWthaGFzaUBnbWFpbC5jb20+IHdyb3Rl Ogo+IE9uIDYvMjAvMDcsIEZyZWRlcmljIERhbmlzIDxmcmVkZXJpYy5kYW5pc0BhY2Nlc3MtY29t cGFueS5jb20+IHdyb3RlOgo+ID4gQ2xhdWRpbyBUYWthaGFzaSB3cm90ZToKPiA+ID4gSGkgRnJl ZGVyaWMsCj4gPiA+Cj4gPiA+IGxhdGVzdCBjdnMgKyB5b3VyIHBhdGNoIHVzaW5nIHRoZSBISUQg ZGV2aWNlLgo+ID4gPgo+ID4gPiBCUiwKPiA+ID4gQ2xhdWRpby4KPiA+ID4gT24gNi8xOS8wNywg RnJlZGVyaWMgRGFuaXMgPGZyZWRlcmljLmRhbmlzQGFjY2Vzcy1jb21wYW55LmNvbT4gd3JvdGU6 Cj4gPiA+PiBDbGF1ZGlvIFRha2FoYXNpIHdyb3RlOgo+ID4gPj4+IEhpIEZyZWRlcmljLAo+ID4g Pj4+Cj4gPiA+Pj4gSSBnb3QgYSBzZWdtZW50YXRpb24gZmF1bHQgd2hlbiBjYWxsaW5nIERldmlj ZS5Db25uZWN0ICsgRGV2aWNlLkRpc2Nvbm5lY3QKPiA+ID4+Pgo+ID4gPj4+IFRoZSBwYXRoIGNv bnRlbnQgaXMgd3JvbmcoaXQgY29udGFpbnMgdGhlIGJ1cyBpZCkuCj4gPiA+Pj4KPiA+ID4+PiAo Z2RiKSBiYWNrdHJhY2UKPiA+ID4+PiAjMCAgMHgwODA1Mjg1YiBpbiBkYnVzX2Nvbm5lY3Rpb25f ZW1pdF9zaWduYWxfdmFsaXN0IChjb25uPTB4ODA1N2FjOCwKPiA+ID4+PiBwYXRoPTB4ODA1N2Ri OCAiOjEuMzQiLCBpbnRlcmZhY2U9MHg4MDUzZGY1ICJvcmcuYmx1ZXouaW5wdXQuRGV2aWNlIiwK PiA+ID4+PiAgICAgbmFtZT0weDgwNTNlNzggIkRpc2Nvbm5lY3RlZCIsIGZpcnN0PTAsIHZhcl9h cmdzPTB4YmZlMzkzNDQKPiA+ID4+PiAiSFfvv73vv71oXDIyM++/ve+/vVxyXDIwNO+/ve+/vUhc MjM3XDAwNVxiICIpIGF0IGRidXMtaGVscGVyLmM6NDc4Cj4gPiA+Pj4gIzEgIDB4MDgwNTI5ZTcg aW4gZGJ1c19jb25uZWN0aW9uX2VtaXRfc2lnbmFsIChjb25uPTB4ODA1N2FjOCwKPiA+ID4+PiBw YXRoPTB4ODA1N2RiOCAiOjEuMzQiLCBpbnRlcmZhY2U9MHg4MDUzZGY1ICJvcmcuYmx1ZXouaW5w dXQuRGV2aWNlIiwKPiA+ID4+PiAgICAgbmFtZT0weDgwNTNlNzggIkRpc2Nvbm5lY3RlZCIsIGZp cnN0PTApIGF0IGRidXMtaGVscGVyLmM6NTMxCj4gPiA+Pj4KPiA+ID4+PiBDb3VsZCB5b3UgcGxl YXNlIGZpeCBpdD8KPiA+ID4+IEhlbGxvIENsYXVkaW8sCj4gPiA+Pgo+ID4gPj4gV2hlbiBkbyB5 b3UgZ2V0IHRoaXMgY3Jhc2ggPyB1c2luZyBISUQgZGV2aWNlIG9yIGZha2UgaW5wdXQgPwo+ID4g Pj4KPiA+Cj4gPiBIZWxsbyBDbGF1ZGlvLAo+ID4KPiA+IEhlcmUgaXMgYSBuZXcgdmVyc2lvbiBv ZiB0aGUgcGF0Y2gsIGZpeGluZyB0aGUgY3Jhc2ggKEkgZG8gbm90IHVuZGVyc3RhbmQgaG93IEkg aGFkIHRlc3QgaXQgYmVmb3JlIHdpdGhvdXQgdGhpcyBlcnJvciwgc29ycnkgOy1bKQo+ID4KPiA+ IEJSCj4gPgo+ID4gRnJlZAo+ID4KPiA+IC0tCj4gPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4gSXQgaXMgbm90IGJ5IGltcHJvdmluZyB0aGUgb2ls IGxhbXAgdGhhdCBvbmUgaW52ZW50cyB0aGUgZWxlY3RyaWMgYnVsYiEKPiA+IC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gPiBEYW5pcyBGcmVkZXJpYyAg ICAgICAgICAgICAgICAgICBBY2Nlc3MgQ29tcGFueQo+ID4gU29mdHdhcmUgZW5naW5lZXIKPiA+ IE1haWwgOiBtYWlsdG86ZnJlZGVyaWMuZGFuaXNAYWNjZXNzLWNvbXBhbnkuY29tCj4gPiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+Cj4gSGkgRnJlZGVy aWMsCj4KPiBHZW5lcmFsbHkgSSB0ZXN0IHVzaW5nIGRidXMtc2VuZCwgeW91IGNhbiBmaW5kIHNv bWUgZXhhbXBsZXMgaGVyZToKPiBodHRwOi8vd2lraS5ibHVlei5vcmcvd2lraS9IT1dUTy9JbnB1 dERldmljZXMKPgo+IFRvIHJlcHJvZHVjZSB0aGUgcmVwb3J0ZWQgYnVnIEkgd2FzIGNhbGxpbmc6 Cj4gMS4gQ3JlYXRlRGV2aWNlCj4gMi4gQ29ubmVjdAo+IDMuIERpc2Nvbm5lY3QKPgo+Cj4gWW91 ciBsYXN0IHBhdGNoIGlzIHdvcmtpbmcgZmluZS4gIFdlIGNvdWxkIHRyeSByZW1vdmUgdGhlICJz dHJ1Y3QKPiBzZXNzaW9uIiBhbmQgcHV0IGV2ZXJ5dGhpbmcgaW5zaWRlIHRoZSAic3RydWN0IGRl dmljZSIgc2luY2UgZm9yIGVhY2gKPiBpbnB1dCBkZXZpY2UgcmVnaXN0ZXJlZCB0aGVyZSBpcyBh IEQtQnVzIGRhdGEgYXNzaWduZWQoSXQgaXMgYXBwbGllZAo+IHRvIGRldmljZSBhbmQgaG9zdCBp bml0aWF0ZWQgY29ubmVjdGlvbnMpLiBTbyB0aGUgInN0cnVjdCBzZXNzaW9uIgo+IGNvbnRhaW5z IGR1cGxpY2F0ZWQgZGF0YS4KPgo+IEkgd2lsbCB0cnkgY2hhbmdlIHRoZSBjb2RlIGFuZCBwcm9w b3NlIGFub3RoZXIgYXBwcm9hY2ggdXNpbmcgeW91cgo+IGNvZGUgYXMgYmFzZWxpbmUuCj4KPiBC UiwKPiBDbGF1ZGlvLgo+CgpIaSBGcmVkZXJpYywKClRoZSBzaWduYWxzIGFyZSBub3cgc2VudCBw cm9wZXJseS4KClBsZWFzZSB0ZXN0IGlmIGl0IGlzIHdvcmtpbmcuCgpUaGVyZSBpcyBqdXN0IG9u ZSBzY2VuYXJpbyB0aGF0IEkgYW0gZml4aW5nOiBEaXNjb25uZWN0IHNpZ25hbCBpcyBub3QKc2Vu dCBpZiBSZW1vdmVEZXZpY2UgaXMgY2FsbGVkKGFuZCB0aGUgZGV2aWNlIGlzIGNvbm5lY3RlZCku CgpCUiwKQ2xhdWRpby4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUaGlzIFNGLm5ldCBlbWFpbCBpcyBzcG9u c29yZWQgYnkgREIyIEV4cHJlc3MKRG93bmxvYWQgREIyIEV4cHJlc3MgQyAtIHRoZSBGUkVFIHZl cnNpb24gb2YgREIyIGV4cHJlc3MgYW5kIHRha2UKY29udHJvbCBvZiB5b3VyIFhNTC4gTm8gbGlt aXRzLiBKdXN0IGRhdGEuIENsaWNrIHRvIGdldCBpdCBub3cuCmh0dHA6Ly9zb3VyY2Vmb3JnZS5u ZXQvcG93ZXJiYXIvZGIyLwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpCbHVlei1kZXZlbCBtYWlsaW5nIGxpc3QKQmx1ZXotZGV2ZWxAbGlzdHMuc291cmNl Zm9yZ2UubmV0Cmh0dHBzOi8vbGlzdHMuc291cmNlZm9yZ2UubmV0L2xpc3RzL2xpc3RpbmZvL2Js dWV6LWRldmVsCg==