If you want to write a byte, you typically perform a write read operation
that has 2 bytes (register, value) on the write buffer and an empty read
buffer. Then you can read back using another transaction, like the one you
have.
On Feb 11, 2016 03:31, "Lumi" <[email protected]> wrote:

> I would like to give some more information:
>
> I modified IOIOSimpleApp and kept the configuration the same in
> AndroidManifest.xml and I am running app on the android phone in
> OpenAccessory mode connected to ioio-otg with usb cable.
>
> Do I need to change anything to AndroidManifest.xml (such as adding
> permission for usb) ?
>
>
> On Thursday, February 11, 2016 at 10:25:54 AM UTC+1, Lumi wrote:
>>
>> Hi Ytai,
>>
>> You are right, I can do it in one writeRead() call. As I did below:
>>
>> byte[] request=new byte[]{0x01}; //data that I want to write
>> byte[] response = new byte[1];
>>
>>
>> In setup()( function:
>>
>>
>> i2c=ioio_.openTwiMaster(2, TwiMaster.Rate.RATE_100KHz, false);
>>
>>
>> In loop() function:
>>
>>
>> if(i2c.writeRead(0x63, false, request, request.length, response, 
>> response.length)) //This call returns true
>> {
>>    pw.print(String.format("%02X", response[0]));
>>    pw.print(" ");
>> }
>>
>>
>> However, my problem still remains. The data (0x01) in request interpreted
>> as starting address of read. Therefore, I read the default data in the
>> register which has the address 0x01. However, I would like to write 0x01 as
>> (data) into the first register of device and read it back.
>>
>> What might am I doing wrong ? Is there a way to log/dump writeRead() call
>> ?
>>
>> Thank you in advance.
>> Regards,
>>
>>
>> On Wednesday, February 10, 2016 at 4:23:30 PM UTC+1, Ytai wrote:
>>>
>>> Why are you separating this into two transactions? It is very uncommon.
>>> On Feb 10, 2016 5:09 AM, "Lumi" <[email protected]> wrote:
>>>
>>>> Hello
>>>>
>>>> I found a figure (attached) explaining how the communication should
>>>> take place, I believe this helps to clarify the issue.
>>>>
>>>> Thanks.
>>>>
>>>> On Wednesday, February 10, 2016 at 12:33:25 PM UTC+1, Lumi wrote:
>>>>>
>>>>> Dear all,
>>>>>
>>>>> I am trying to talk with an external device via ioio-otg twi ports. I
>>>>> would like to write and read data to/from the registers of my external
>>>>> device.
>>>>>
>>>>> Here are samples from my code:
>>>>>
>>>>> byte[] request=new byte[]{0x01}; //data that I want to write
>>>>> byte[] response = new byte[13];
>>>>>
>>>>>
>>>>> In setup()( function:
>>>>>
>>>>>
>>>>> i2c=ioio_.openTwiMaster(2, TwiMaster.Rate.RATE_100KHz, false);
>>>>>
>>>>>
>>>>> In loop() function:
>>>>>
>>>>>
>>>>> if(i2c.writeRead(0x63, false, request, request.length, null, 0)) { 
>>>>> //Here, I only want to write
>>>>>
>>>>> if (i2c.writeRead(0x63, false, null, 0, response, response.length))// 
>>>>> Here, I only want to read
>>>>> {
>>>>>    for (int i = 0; i < 13; i++) {
>>>>>       pw.print(String.format("%02X", response[i]));
>>>>>       pw.print(" ");
>>>>>    }
>>>>>
>>>>> }
>>>>>
>>>>>
>>>>> Both writeRead() functions return true.
>>>>>
>>>>> However, the data 0x01 in request array is interpreted as an internal 
>>>>> address of a register in the device. I could not get 0x01 interpreted as 
>>>>> data and written into external device register.
>>>>>
>>>>>
>>>>> This may not be very clear, but maybe there are some people who can 
>>>>> already spot the problem.
>>>>>
>>>>>
>>>>> Thank you in advance,
>>>>>
>>>>> Regards.
>>>>>
>>>>>
>>>>>
>>>> On Wednesday, February 10, 2016 at 12:33:25 PM UTC+1, Lumi wrote:
>>>>>
>>>>> Dear all,
>>>>>
>>>>> I am trying to talk with an external device via ioio-otg twi ports. I
>>>>> would like to write and read data to/from the registers of my external
>>>>> device.
>>>>>
>>>>> Here are samples from my code:
>>>>>
>>>>> byte[] request=new byte[]{0x01}; //data that I want to write
>>>>> byte[] response = new byte[13];
>>>>>
>>>>>
>>>>> In setup()( function:
>>>>>
>>>>>
>>>>> i2c=ioio_.openTwiMaster(2, TwiMaster.Rate.RATE_100KHz, false);
>>>>>
>>>>>
>>>>> In loop() function:
>>>>>
>>>>>
>>>>> if(i2c.writeRead(0x63, false, request, request.length, null, 0)) { 
>>>>> //Here, I only want to write
>>>>>
>>>>> if (i2c.writeRead(0x63, false, null, 0, response, response.length))// 
>>>>> Here, I only want to read
>>>>> {
>>>>>    for (int i = 0; i < 13; i++) {
>>>>>       pw.print(String.format("%02X", response[i]));
>>>>>       pw.print(" ");
>>>>>    }
>>>>>
>>>>> }
>>>>>
>>>>>
>>>>> Both writeRead() functions return true.
>>>>>
>>>>> However, the data 0x01 in request array is interpreted as an internal 
>>>>> address of a register in the device. I could not get 0x01 interpreted as 
>>>>> data and written into external device register.
>>>>>
>>>>>
>>>>> This may not be very clear, but maybe there are some people who can 
>>>>> already spot the problem.
>>>>>
>>>>>
>>>>> Thank you in advance,
>>>>>
>>>>> Regards.
>>>>>
>>>>>
>>>>> --
>>>> 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.
>>>>
>>> --
> 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.
>

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