I downloaded library 5.4, tested it in my android code but the problems 
continued.
I installed the precompiled HalloIOIO.apk app version 5.4 but nothing 
changed.

I tried one more thing: removed all the accessory aware apps and tried to 
power off/power on the IOIO: the protocol works perfectly and *always* I 
get the popup from Android showing the 
"https://github.com/ytai/ioio/wiki/ADK"; url so at least the accessory 
handshake works correctly, although the problems I documented are later on 
the protocol sequence.

Quick question: is there a firmware version in DEBUG_MODE available? It 
would be useful, otherwise I have to set all the PIC compilation 
environment up. Following the sequence of debugging messages on a serial 
line would be very useful.

Thanks in advance.

Il giorno sabato 29 agosto 2015 18:56:36 UTC+2, Iovine Francesco ha scritto:
>
> I will ASAP.
> Thanks a lot.
>
>
> Il giorno sabato 29 agosto 2015 18:36:06 UTC+2, Ytai ha scritto:
>>
>> Can you check if this is happening to you when using v5.04 software? 
>> v5.05 has not yet been rigorously tested. You can use the precompiled 
>> binaries initially.
>> On Aug 28, 2015 12:40 AM, "Iovine Francesco" <[email protected]> 
>> wrote:
>>
>>> Hi Ytai,
>>> wonderful environment that of IOIO. Congrats!
>>>
>>> For my purposes I bought two boards from sparkfun and this is the 
>>> configuration I use.
>>>
>>> IOIOLib: IOIO0505
>>> Application firmware: IOIO0500
>>> Bootloader firmware: IOIO0401
>>> Hardware: SPRK0020
>>>
>>> I have already written an app interfacing to a board developed by me 
>>> using an USB->serial converter (FDDI chip) that needs OTG.
>>> As I need to power my tablet from USB, I decided to use IOIO like a 
>>> USB->UART interface to my board that additionally powers the tablet in HOST 
>>> mode.
>>>
>>> As an introductory exercise, I developed a simple app called 
>>> TerminalIOIO ( https://github.com/fjovine/TerminalIOIO ) that works 
>>> fine, at least during the normal
>>> compile, install cycle. I was using the Blutooth and, as I wanted to 
>>> study your code, I compiled the IOIO classes directly in my AndroidStudio 
>>> project. 
>>>
>>> Then I started integrating your code in my App and it worked fine in the 
>>> normal AndroidStudio compile, install cycle and direct USB connection.
>>>
>>> But when I try to use it directly on the tablet (no compilation before) 
>>> I have the following problem. I switch the power on: this powers both my 
>>> board and IOIO.
>>> The tablet notifies the presence of an accessory USB and launches my app 
>>> that sometimes is able to configure the IOIO and successfully performs the 
>>> handshake with my board but very frequently it hangs.
>>> I used a different type of tablet having the same problems. 
>>> Then I used my smart phone (alcatel onetouch) and again sometimes the 
>>> handshake works, sometimes not.
>>>
>>> I thought that I had some compilation problems, so I downloaded the 
>>> pre-compiled HelloIOIO-debug-unaligned.apk from App-IOIO0505.zip and I 
>>> launched it in all the possible configurations (two tablets and phone), 
>>> experimenting always the same random behavior: 
>>> I always get the notification (AccessoryUSB) but very frequently no 
>>> connection happens.
>>>
>>> I decided to instrument a bit your code with some logging comments, the 
>>> most significant of which is inside the *run* method in the 
>>> *IOIOProtocol* class.
>>> Here is the code: *LocalLogger.i* is a static method that doubles 
>>> messages both on Android Logger and queue them up to be shown through http 
>>> (I have a small http server running for remote manipulations)
>>> The message in Italian means "character received".
>>>
>>> ...
>>> @Override
>>> public void run() {
>>>   super.run();
>>>   setPriority(MAX_PRIORITY);
>>>   int arg1;
>>>   int arg2;
>>>   int numPins;
>>>   int size;
>>>   byte[] data = new byte[256];
>>>   try {
>>>     while (true) {
>>>                 arg1 = readByte();
>>>                 LocalLogger.i(TAG, "Ricevuto carattere "+Integer.
>>> toHexString(arg1));   //<-----------------------------
>>>       switch (arg1) {
>>>       case ESTABLISH_CONNECTION:
>>>         if (readByte() != 'I' || readByte() != 'O' || readByte() != 'I'
>>>             || readByte() != 'O') {
>>>           throw new IOException("Bad establish connection magic");
>>>         }
>>>         byte[] hardwareId = new byte[8];
>>>         byte[] bootloaderId = new byte[8];
>>>         byte[] firmwareId = new byte[8];
>>>         readBytes(8, hardwareId);
>>>         readBytes(8, bootloaderId);
>>>         readBytes(8, firmwareId);
>>> ...
>>>  
>>>  Attached you will find two logs (in OpenOffice spreasheet format) that 
>>> show what happens.
>>>  Focusing the bytes received from IOIO, this is the sequence I have when 
>>> the connection works
>>>  
>>>
>>>    1.  0x0 - ESTABLISH_CONNECTION
>>>    2.  0x2 - CHECK_INTERFACE
>>>    3.  0xD - UART_CONFIG
>>>    4.  0xF - PIN_UART
>>>
>>>  
>>>  And this makes perfectly sense with what I need.
>>>  
>>>   This is the sequence when the connection is not established
>>>   
>>>
>>>    1.  0x0 - ESTABLISH_CONNECTION
>>>    2.  0x1 - SOFT_RESET
>>>    3.  0x0 - ESTABLISH_CONNECTION
>>>    4.  0x1 - SOFT_RESET
>>>
>>>  
>>>  Sometimes something different happens
>>>
>>>    -  0x1 - SOFT_RESET
>>>    -  0x0 - HARD_RESET
>>>    -  0x1 - SOFT_RESET
>>>    -  0x1 - SOFT_RESET
>>>    -  0x1 - SOFT_RESET
>>>
>>>  
>>> Whenever ESTABLISH_CONNECTION is received, the firmware versions from 
>>> IOIO are correctly decoded.
>>> But the reception of the SOFT_RESET keeps the connection hanged.
>>>  
>>> If the first received command is SOFT_RESET, I see the exception 
>>>  
>>>  Protocol error: 
>>> [ioio.lib.impl.IOIOProtocol$ProtocolError: 
>>> java.lang.NullPointerException 
>>> at ioio.lib.impl.IOIOProtocol$IncomingThread.run(IOIOProtocol.java:944) 
>>> Caused by: java.lang.NullPointerException 
>>> at ioio.lib.impl.IncomingState.handleSoftReset(IncomingState.java:243) 
>>> at ioio.lib.impl.IOIOProtocol$IncomingThread.run(IOIOProtocol.java:733) ]
>>>
>>> that I have found in other messages on this forum: this depends on the 
>>> fact that when 0x1 (soft_reset) is received the protocol tries to access 
>>> some objects that have still not been instantiated.
>>>
>>> I made at least a whole week of experimentation with different 
>>> conditions, using both the IOIO boards I own, but the result is more or 
>>> less this one: when I cannot connect the SOFT_RESET is there.
>>>
>>> As additional info, I have *never* had this problem after switching off 
>>> the ADB USB interface, as needed while developing (Android Studio connected)
>>>
>>> So I am blocked. Can you please help me?
>>> Thanks in advance.
>>>
>>>
>>> Additional info
>>>
>>> Tablet 1: Low cost tablet running Android 4.2.2
>>> Tablet 2: Low cost tablet running Android 4.4.2
>>> Phone: Alcatel One touch running Android 4.1.1
>>>
>>> -- 
>>> 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 http://groups.google.com/group/ioio-users.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>

-- 
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 http://groups.google.com/group/ioio-users.
For more options, visit https://groups.google.com/d/optout.

Reply via email to