Re: [PATCH] android/bluetooth: Make possible to start BlueZ in LE mode only

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Do you or you know someone that could be up for the job?

best david

On 25 May 2014, at 22:34, Lukasz Rymanowski <lukasz.rymanowski@xxxxxxxxx> wrote:

> Hi David,
> 
> On Sun, May 25, 2014 at 5:38 PM,  <d.eriksson@xxxxxx> wrote:
>> Hi Lukasz,
>> 
>> Maybe unrelated, but I'm looking for a way to enforce BlueZ to run LE only (central) under linux 3.13.
>> btmgmt bredr seems to do this, but could I do it via some "config-level" setting to ensure no one on the system can initiate anything else than LE related things.
>> 
> 
> AFAIK For now it is possible only for Android version.
> For "normal" BlueZ you need to extend BlueZ daemon. Probably add
> special config to main.conf and add similar handling it as we did for
> Android.
> 
>> best David
>> 
> 
> BR
> Lukasz
> 
>> On 23 Apr 2014, at 00:16, Lukasz Rymanowski <lukasz.rymanowski@xxxxxxxxx> wrote:
>> 
>>> This patch adds possibility to start BlueZ only in LE mode only.
>>> 
>>> It is useful for testing purpose, when you want test BlueZ in
>>> peripheral mode against any dual mode device.
>>> ---
>>> android/README          |  3 +++
>>> android/bluetooth.c     |  7 ++++++-
>>> android/hal-bluetooth.c | 15 ++++++++++++++-
>>> android/hal-msg.h       |  1 +
>>> 4 files changed, 24 insertions(+), 2 deletions(-)
>>> 
>>> diff --git a/android/README b/android/README
>>> index 6254d34..9b08610 100644
>>> --- a/android/README
>>> +++ b/android/README
>>> @@ -166,6 +166,9 @@ options.
>>> 
>>> Property      Value           Description
>>> -------------------------------------------
>>> +mode         le_only         Enable BlueZ in Low Energy mode only.
>>> +             <none>          Enable BlueZ in default mode - enable br/edr/le
>>> +                             if possible.
>>> handsfree     hfp             Enable Handsfree Profile (HFP) with narrowband
>>>                              speech only
>>>              hfp_wbs         Enable Handsfree Profile (HFP) with narrowband
>>> diff --git a/android/bluetooth.c b/android/bluetooth.c
>>> index 93c7935..923285c 100644
>>> --- a/android/bluetooth.c
>>> +++ b/android/bluetooth.c
>>> @@ -3894,10 +3894,15 @@ static const struct ipc_handler cmd_handlers[] = {
>>> 
>>> void bt_bluetooth_register(struct ipc *ipc, uint8_t mode)
>>> {
>>> -     DBG("");
>>> +     DBG("mode 0x%x", mode);
>>> 
>>>      hal_ipc = ipc;
>>> 
>>> +     if ((mode == HAL_MODE_LE_ONLY) &&
>>> +                     (adapter.current_settings & MGMT_SETTING_LE) &&
>>> +                     (adapter.current_settings & MGMT_SETTING_BREDR))
>>> +             set_mode(MGMT_OP_SET_BREDR, 0x00);
>>> +
>>>      ipc_register(hal_ipc, HAL_SERVICE_ID_BLUETOOTH, cmd_handlers,
>>>                                              G_N_ELEMENTS(cmd_handlers));
>>> }
>>> diff --git a/android/hal-bluetooth.c b/android/hal-bluetooth.c
>>> index 48d5ea2..69009ff 100644
>>> --- a/android/hal-bluetooth.c
>>> +++ b/android/hal-bluetooth.c
>>> @@ -29,6 +29,8 @@
>>> #include "hal-ipc.h"
>>> #include "hal-utils.h"
>>> 
>>> +#define MODE_PROPERTY_NAME "persist.sys.bluetooth.mode"
>>> +
>>> static const bt_callbacks_t *bt_hal_cbacks = NULL;
>>> 
>>> #define enum_prop_to_hal(prop, hal_prop, type) do { \
>>> @@ -412,6 +414,17 @@ static const struct hal_ipc_handler ev_handlers[] = {
>>>      }
>>> };
>>> 
>>> +static uint8_t get_mode(void)
>>> +{
>>> +     char value[PROPERTY_VALUE_MAX];
>>> +
>>> +     if (property_get(MODE_PROPERTY_NAME, value, "") > 0 &&
>>> +                                     (!strcasecmp(value, "le_only")))
>>> +             return HAL_MODE_LE_ONLY;
>>> +
>>> +     return HAL_MODE_DEFAULT;
>>> +}
>>> +
>>> static int init(bt_callbacks_t *callbacks)
>>> {
>>>      struct hal_cmd_register_module cmd;
>>> @@ -433,7 +446,7 @@ static int init(bt_callbacks_t *callbacks)
>>>      }
>>> 
>>>      cmd.service_id = HAL_SERVICE_ID_BLUETOOTH;
>>> -     cmd.mode = HAL_MODE_DEFAULT;
>>> +     cmd.mode = get_mode();
>>> 
>>>      status = hal_ipc_cmd(HAL_SERVICE_ID_CORE, HAL_OP_REGISTER_MODULE,
>>>                                      sizeof(cmd), &cmd, NULL, NULL, NULL);
>>> diff --git a/android/hal-msg.h b/android/hal-msg.h
>>> index ed0a67a..db21870 100644
>>> --- a/android/hal-msg.h
>>> +++ b/android/hal-msg.h
>>> @@ -55,6 +55,7 @@ static const char BLUEZ_HAL_SK_PATH[] = "\0bluez_hal_socket";
>>> #define HAL_OP_STATUS                 IPC_OP_STATUS
>>> 
>>> #define HAL_MODE_DEFAULT              0x00
>>> +#define HAL_MODE_LE_ONLY             0x01
>>> 
>>> #define HAL_OP_REGISTER_MODULE                0x01
>>> struct hal_cmd_register_module {
>>> --
>>> 1.8.4
>>> 
>>> --
>>> To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
>>> the body of a message to majordomo@xxxxxxxxxxxxxxx
>>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>> 
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
>> the body of a message to majordomo@xxxxxxxxxxxxxxx
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> --
> To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux