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.

Reply via email to