Hello Ytai,
I am using IOIO bluetooth interface connected to my app running on Samsung
Note 4 device (other devices Note3/2 and S3 all have same issues too).
Inspite of devices being in close proximity and no other possible
interference (signal-free facility), I do see sporadic IOIO library
notifying of disconnects. On closer inspection, it seems a protocol error
which somehow manifests into a disconnect. There are times when there is no
such disconnect for more than 20 minutes and there are times when the
disconnect happens within a minute. Moreover, once the disconnect happens,
it keeps on disconnecting frequently - usually within a minute. Here is a
summary trace of the logcat dump of the failure (- see complete trace at
end of this mail).
10-28 19:46:12.519 13132 13882 E IOIOProtocol: Protocol error:
10-28 19:46:12.519 13132 13882 E IOIOProtocol:
ioio.lib.impl.IOIOProtocol$ProtocolError: Received unexpected command: 0xff
10-28 19:46:12.519 13132 13882 E IOIOProtocol: at
ioio.lib.impl.IOIOProtocol$IncomingThread.run(IOIOProtocol.java:928)
10-28 19:46:12.529 13132 13882 D IOIOImpl: Physical disconnect.
10-28 19:46:12.529 13132 13882 V BluetoothIOIOConnection: Client initiated
disconnect
*Hardware Configuration:*
Project uses IOIO [Hardware ID: SPRK0020 Bootloader ID: IOIO0401 Firmware
ID: IOIO0506] in following configuration:
15 digital output pins [Open-Drain]: 3, 6, 7, 10, 11, 12, 13, 14,
18, 19, 20, 21, 22, 23, 24
6 analog input pins: 41,42, 43, 44, 45, 46
3 TWI sets [100KHz]: 1, 2, 4, 5, 25, 26
*Application processing*:
- *[Re]Connect-setup*: MyService extends IOIOService. In
createIOIOLooper(String connectionType, Object extra), it checks if
connection-type is bluetooth and creates an IOIOLooper. Setup in this
looper instantiates DigitalOutput, AnalogInput and TwiMaster. Henceforth,
loop() does Thread.sleep(500). All the digital outputs are also set to
false state. The IOIO board and these controls are saved by the service for
future use. If this is a reconnect, old IOIO board and controls are
discarded and new board and controls take their place.
- *Monitor-input:* Once application is ready, application starts three
threads - each monitoring a two AnalogInput in a loop with a sleep of
10secs in loop and 1 sec between the two inputs. These threads may be
started either as part of IOIOLooper.setup processing (if app is ready) or
later by application UI thread (if app gets ready later on). The TWI
devices may be used in lieu of the Analog-inputs here but I have disabled
them for now.
- *Operate-outputs:* A thread-pool performs application processing and
based on application business logic, worker pool threads operate the
DigitalOutputs.
- *Disconnect-cleanup*: On disconnect, MyService discards the IOIO board
and the DigitalOutput, AnalogInput and TwiMaster(100KHz).
*Additional Observations*:
- Disabling the *Operate-outputs* does not have any effect - IOIO still
disconnects.
- Disabling the *Monitor-input *and *Operate-outputs *seems to eliminate
disconnects. The IOIO board is essentially left unused for extended period.
- Once the protocol error happens, the application keeps getting
frequent disconnects (within a minute).
- Completely stopping the application and restarting the application can
sometimes prolong the disconnect - however, this is not always true.
- I have disabled the TWI sets for now as they seem to make debugging
harder and more unpredictable.
*Request: *
- Please help me identify what may cause these protocol errors and
recommend a way to debug these diisconnects.
- Do you recommend changes in my application structure that can improve
the reliability - stopping/restarting some threads, consolidating some
threads etc.
- Is there a way to resume operation reliably after a disconnect?
*Complete Logcat filtered for IOIO*:
10-28 19:38:30.459 13132 13132 I IOIOBaseApplicationHelper: Using IOIOLib
version: IOIO0507
10-28 19:38:30.459 13132 13132 D IOIOConnectionRegistry: Successfully added
bootstrap class: ioio.lib.impl.SocketIOIOConnectionBootstrap
10-28 19:38:30.479 13132 13132 D IOIOConnectionRegistry: Successfully added
bootstrap class: ioio.lib.android.accessory.AccessoryConnectionBootstrap
10-28 19:38:30.529 13132 13132 D IOIOConnectionRegistry: Successfully added
bootstrap class: ioio.lib.android.bluetooth.BluetoothIOIOConnectionBootstrap
10-28 19:38:30.549 13132 13132 D IOIOConnectionRegistry: Successfully added
bootstrap class: ioio.lib.android.device.DeviceConnectionBootstrap
10-28 19:38:31.219 13132 13791 D IOIOImpl: Waiting for IOIO connection
10-28 19:38:31.229 13132 13791 V IOIOImpl: Waiting for underlying connection
10-28 19:38:31.279 13132 13791 V BluetoothIOIOConnection: Attempting to
connect to Bluetooth device: IOIO (8A:22)
10-28 19:38:32.859 13132 13791 V BluetoothIOIOConnection: Established
connection to device IOIO (8A:22) address: 00:1B:DC:06:8A:22
10-28 19:38:32.869 13132 13791 V IOIOImpl: Waiting for handshake
10-28 19:38:32.869 13132 13882 I IncomingState: IOIO Connection
established. Hardware ID: SPRK0020 Bootloader ID: IOIO0401 Firmware ID:
IOIO0506
10-28 19:38:32.889 13132 13791 V IOIOImpl: Querying for required interface
ID
10-28 19:38:32.919 13132 13791 V IOIOImpl: Required interface ID is
supported
10-28 19:38:32.919 13132 13791 I IOIOImpl: IOIO connection established
10-28 19:38:32.929 13132 13791 D MyApp: Starting IOIO Manager
10-28 19:38:33.119 13132 13791 I MyApp: Started IOIO Managers
10-28 19:46:12.519 13132 13882 E IOIOProtocol: Protocol error:
10-28 19:46:12.519 13132 13882 E IOIOProtocol:
ioio.lib.impl.IOIOProtocol$ProtocolError: Received unexpected command: 0xff
10-28 19:46:12.519 13132 13882 E IOIOProtocol: at
ioio.lib.impl.IOIOProtocol$IncomingThread.run(IOIOProtocol.java:928)
10-28 19:46:12.529 13132 13882 D IOIOImpl: Physical disconnect.
10-28 19:46:12.529 13132 13882 V BluetoothIOIOConnection: Client initiated
disconnect
10-28 19:46:50.119 13132 13791 D MyApp: Stopping IOIO Manager,
disconnected=true
10-28 19:46:50.119 13132 13791 I MyApp: Stopped IOIO Manager,
disconnected=true
10-28 19:46:50.119 13132 13791 D IOIOImpl: Waiting for IOIO connection
10-28 19:46:50.119 13132 13791 V IOIOImpl: Waiting for underlying connection
10-28 19:46:50.129 13132 13791 V BluetoothIOIOConnection: Attempting to
connect to Bluetooth device: IOIO (8A:22)
10-28 19:46:50.789 13132 13791 V BluetoothIOIOConnection: Established
connection to device IOIO (8A:22) address: 00:1B:DC:06:8A:22
10-28 19:46:50.789 13132 13791 V IOIOImpl: Waiting for handshake
10-28 19:46:50.789 13132 6282 I IncomingState: IOIO Connection
established. Hardware ID: SPRK0020 Bootloader ID: IOIO0401 Firmware ID:
IOIO0506
10-28 19:46:50.799 13132 13791 V IOIOImpl: Querying for required interface
ID
10-28 19:46:50.829 13132 13791 V IOIOImpl: Required interface ID is
supported
10-28 19:46:50.829 13132 13791 I IOIOImpl: IOIO connection established
10-28 19:46:50.829 13132 13791 D MyApp: Starting IOIO Manager
10-28 19:46:51.109 13132 13791 I MyApp: Started IOIO Managers
10-28 19:47:12.509 13132 6282 E IOIOProtocol: Protocol error:
10-28 19:47:12.509 13132 6282 E IOIOProtocol:
ioio.lib.impl.IOIOProtocol$ProtocolError: Received unexpected command: 0xff
10-28 19:47:12.509 13132 6282 E IOIOProtocol: at
ioio.lib.impl.IOIOProtocol$IncomingThread.run(IOIOProtocol.java:928)
10-28 19:47:12.509 13132 6282 D IOIOImpl: Physical disconnect.
10-28 19:47:12.509 13132 6282 V BluetoothIOIOConnection: Client initiated
disconnect
10-28 19:49:12.029 13132 13791 D MyApp: Stopping IOIO Manager,
disconnected=true
10-28 19:49:12.029 13132 13791 I MyApp: Stopped IOIO Manager,
disconnected=true
10-28 19:49:12.039 13132 13791 D IOIOImpl: Waiting for IOIO connection
10-28 19:49:12.039 13132 13791 V IOIOImpl: Waiting for underlying connection
10-28 19:49:12.049 13132 13791 V BluetoothIOIOConnection: Attempting to
connect to Bluetooth device: IOIO (8A:22)
10-28 19:49:12.799 13132 13791 V BluetoothIOIOConnection: Established
connection to device IOIO (8A:22) address: 00:1B:DC:06:8A:22
10-28 19:49:12.799 13132 13791 V IOIOImpl: Waiting for handshake
10-28 19:49:12.809 13132 11268 I IncomingState: IOIO Connection
established. Hardware ID: SPRK0020 Bootloader ID: IOIO0401 Firmware ID:
IOIO0506
10-28 19:49:12.809 13132 13791 V IOIOImpl: Querying for required interface
ID
10-28 19:49:12.819 13132 13791 V IOIOImpl: Required interface ID is
supported
10-28 19:49:12.819 13132 13791 I IOIOImpl: IOIO connection established
10-28 19:49:12.819 13132 13791 D MyApp: Starting IOIO Manager
10-28 19:49:13.099 13132 13791 I MyApp: Started IOIO Managers
10-28 19:49:42.419 13132 11268 E IOIOProtocol: Protocol error:
10-28 19:49:42.419 13132 11268 E IOIOProtocol:
ioio.lib.impl.IOIOProtocol$ProtocolError: Received unexpected command: 0x8f
10-28 19:49:42.419 13132 11268 E IOIOProtocol: at
ioio.lib.impl.IOIOProtocol$IncomingThread.run(IOIOProtocol.java:928)
10-28 19:49:42.419 13132 11268 D IOIOImpl: Physical disconnect.
10-28 19:49:42.419 13132 11268 V BluetoothIOIOConnection: Client initiated
disconnect
10-28 19:49:46.989 13132 13791 D MyApp: Stopping IOIO Manager,
disconnected=true
10-28 19:49:46.989 13132 13791 I MyApp: Stopped IOIO Manager,
disconnected=true
10-28 19:49:46.999 13132 13791 D IOIOImpl: Waiting for IOIO connection
10-28 19:49:46.999 13132 13791 V IOIOImpl: Waiting for underlying connection
10-28 19:49:47.009 13132 13791 V BluetoothIOIOConnection: Attempting to
connect to Bluetooth device: IOIO (8A:22)
10-28 19:49:47.239 13132 13791 V BluetoothIOIOConnection: Established
connection to device IOIO (8A:22) address: 00:1B:DC:06:8A:22
10-28 19:49:47.239 13132 13791 V IOIOImpl: Waiting for handshake
--
You received this message because you are subscribed to the Google Groups
"ioio-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/ioio-users.
For more options, visit https://groups.google.com/d/optout.