All of lore.kernel.org
 help / color / mirror / Atom feed
From: Guy Morand <g.morand@scewo.ch>
To: linux-bluetooth@vger.kernel.org
Subject: Bluetooth disconnect event / Link layer monitoring
Date: Mon, 18 Nov 2019 18:16:11 +0100	[thread overview]
Message-ID: <CAGssATiS=dpA=WOSfLek385o2g=C5sb0z+z=V7CDswn9_5Eu-g@mail.gmail.com> (raw)

Hello bluetooth developers,

We are developing a wheelchair that we can controle with a bluetooth
gamepad, the XBOX 360 controller to be more precise. It basically works
fine but when I remove the battery, I get the disconnect event in the
user space around 10 seconds later. That is not acceptable since the
wheelchair will keep rolling to potentially dangerous places!

I tried to implement a ping mechanism on the bluetooth layer, inspired
from bluez sources somewhere:
  int _socket_fd = socket(PF_BLUETOOTH, SOCK_RAW, BTPROTO_L2CAP);
  // bind on AF_BLUETOOTH
  // connect with AF_BLUETOOTH

  send_cmd->ident = PING_IDENT;
  send_cmd->len = htobs(PING_DATA_SIZE);
  send_cmd->code = L2CAP_ECHO_REQ;
  if (send(_socket_fd, send_buffer, PING_PACKET_SIZE, 0) <= 0) {
    // ...
  }

It basically works fine except when the signal gets bad. This will get
printed by the kernel:
[  859.629431] Bluetooth: hci0 link tx timeout
[  859.635482] Bluetooth: hci0 killing stalled connection 9c:aa:1b:6b:51:c9

In that case, I don't get event from the /dev/jsX device but the gamepad
seems to still answer to pings??!!

Since I haven't found any acceptable workaround and always find the same
pages again and again, I'm asking here:
* Is it possible to achieve what I want?
* Does it make sense that the ping work but the HID layer seems dead?
* Any recommendation, pointers?

Best regards,

Guy

-- 
Guy Morand
Software Engineer
Scewo AG, Technoparkstrasse 2, 8406 Winterthur

www.scewo.ch
www.facebook.com/scewo
www.instagram.com/scewo_official

             reply	other threads:[~2019-11-18 17:16 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-18 17:16 Guy Morand [this message]
2019-11-18 18:27 ` Bluetooth disconnect event / Link layer monitoring Luiz Augusto von Dentz
2019-11-19  5:06   ` Marcel Holtmann
2019-11-19  9:09     ` Guy Morand
2019-11-21 17:37       ` Guy Morand
2019-12-02 14:17         ` Guy Morand

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAGssATiS=dpA=WOSfLek385o2g=C5sb0z+z=V7CDswn9_5Eu-g@mail.gmail.com' \
    --to=g.morand@scewo.ch \
    --cc=linux-bluetooth@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.