Re: [PATCH v2 4/4] Add new DS4 controller PID into special case handler

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

 



Hi Bastien,

On Thu, Dec 29, 2016 at 3:48 AM, Bastien Nocera <hadess@xxxxxxxxxx> wrote:
> On Wed, 2016-12-28 at 16:32 -0800, Juha Kuikka wrote:
>> There is a special path for various game controllers where they
>> connect
>> to the hid service before bluetoothd knows what they are.
>>
>> This patch adds another PID for the Dualshock4 controller. This new
>> PID
>> matches with the model number CUH-ZCT2U.
>> ---
>>  profiles/input/server.c | 6 ++++--
>>  1 file changed, 4 insertions(+), 2 deletions(-)
>>
>> diff --git a/profiles/input/server.c b/profiles/input/server.c
>> index eb3fcf8..3576f2b 100644
>> --- a/profiles/input/server.c
>> +++ b/profiles/input/server.c
>> @@ -135,8 +135,10 @@ static bool dev_is_sixaxis(const bdaddr_t *src,
>> const bdaddr_t *dst)
>>       if (vid == 0x054c && pid == 0x0268)
>>               return true;
>>
>> -     /* DualShock 4 */
>> -     if (vid == 0x054c && pid == 0x05c4)
>> +     /* DualShock 4 CUH-ZCT1U (PID 0x05c4)
>> +      * DualShock 4 CUH-ZCT2U (PID 0x09cc) (slim/pro)
>> +      */
>> +     if (vid == 0x054c && (pid == 0x05c4 || pid == 0x09cc))
>>               return true;
>>
>>       /* Navigation Controller */
>
> Might be nice to have the struct you currently have in the sixaxis
> plugin in a shared header, so we don't need to open code this function.
> For example:
>
> typedef enum {
>   CABLE_PAIRING_SIXAXIS,
>   CABLE_PAIRING_DS4
> } CablePairingType;
>
> static struct {
>   int vid;
>   int pid;
>   CablePairingType type;
> } cable_pairing_devices[] = {
>   ...
> };
>

I agree, having the pertinent VID/PID in one place only would be a
good idea. One small issue I see here is that it would unnecessarily
expose internal information from sixaxis plugin.

> The sixaxis plugin would know which functions to use from the type, the
> input/server.c code would loop over the array to see whether it's a
> cable pairing.

Having a type field instead of the function pointers would make for a
less clear implementation in sixaxis.c. My previous patch had an
analogous mechanism for detecting controller type and changing
behavior accordingly and I got some comments about a function pointer
approach being preferred.

I saw some patches floating around concerning a generalized cable
pairing mechanism. Perhaps this change should be part of that?

>
> Looks fine otherwise.

 - Juha
--
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