I really don't see the difference between your implementation and mine. 
Think it's a problem with my Android Manifest? Dont see how, but I am 
actually really desperate now to get feedback from the Looper class for 
some other features I was planning to implement. The work around is way too 
inefficient. is there anything that I might be missing or can try? I am 
working in Eclipse, MainActivity extends IOIOActivity, Looper extends 
BaseIOIOLooper, all imports concerning this are also done like you saw in 
my previous post, createIOIOLooper is being done... I am really at a loss 
on this one...

On Friday, June 6, 2014 2:10:09 AM UTC+2, Ytai wrote:
>
>
>
>
> On Thu, Jun 5, 2014 at 11:04 AM, Sidharta Prahladsingh <[email protected] 
> <javascript:>> wrote:
>
>> the SPI lines are now confirmed to be in working order. Most things were 
>> fixed by sleeping after sending and by sampling at trailing clock.
>>
>
> I can't see why sleeping would be required. Also, unless you care about 
> the data coming back, I would use writeReadAsync() and put the entire frame 
> push in a beginBatch() / endBatch() block.
> Sampling at the trailing vs. leading clock edge has to do with what your 
> slave expects.
>  
>
>>
>> About ANY function I put in the looper does not give my feedback to 
>> android. Say I feed MOSI back to MISO, I KNOW there is a signal but any 
>> attempt to view the MISO input isn't working. Even tried making a seperate 
>> infograb function in another class so I can send the data to be viewed in 
>> Logcat but that also gives nothing. No data wants to leave looper for some 
>> reason.
>>
>
> I have testing code that does a loopback between MISO and MOSI and logs 
> out data. It works. You have something else going on it seems. The code is 
> in the TortureTest app, you can check it out.
>  
>
>>
>>
>> On Thursday, June 5, 2014 5:39:10 PM UTC+2, Ytai wrote:
>>
>>> Nothing obviously wrong with your code.
>>> Since (if I understand correctly) your FPGA is also under development, 
>>> your best way to proceed is to capture the SPI lines with a logic analyzer 
>>> and see whether the IOIO is sending valid data.
>>> Also, why doesn't Log.d work in your looper? It normally does.
>>>
>>>
>>> On Thu, Jun 5, 2014 at 3:03 AM, Sidharta Prahladsingh <
>>> [email protected]> wrote:
>>>
>>>> oh also spi is fixed. "spi_ = ioio_.openSpiMaster(new 
>>>> DigitalInput.Spec(4,
>>>>      Mode.PULL_UP), new DigitalOutput.Spec(5),
>>>>      new DigitalOutput.Spec(3),
>>>>      new DigitalOutput.Spec[] { new DigitalOutput.Spec(2) },
>>>>      new SpiMaster.Config(Rate.RATE_1M, false, true));" worked better 
>>>> than 
>>>> "spi_ = ioio_.openSpiMaster(4, 5, 3, 2, SpiMaster.Rate.RATE_1M);" in 
>>>> our situation.
>>>> The latter produced double information.
>>>>
>>>> On Thursday, June 5, 2014 11:51:04 AM UTC+2, Sidharta Prahladsingh 
>>>> wrote:
>>>>
>>>>> Since it would be too much code to go through, I will just at my 
>>>>> imports, MainActivity with global variables and the Looper class:
>>>>> Global variables and imports: 
>>>>>
>>>>> import java.io.BufferedInputStream;
>>>>>
>>>>> import java.io.File;
>>>>>
>>>>> import java.io.FileOutputStream;
>>>>>
>>>>> import java.io.IOException;
>>>>>
>>>>> import java.io.InputStream;
>>>>>
>>>>> import java.io.InputStreamReader;
>>>>>
>>>>> import java.net.MalformedURLException;
>>>>>
>>>>> import java.net.URL;
>>>>>
>>>>> import java.net.URLConnection;
>>>>>
>>>>> import java.nio.ByteBuffer;
>>>>>
>>>>> import java.util.ArrayList;
>>>>>
>>>>> import java.util.Arrays;
>>>>>
>>>>> import java.util.List;
>>>>>
>>>>> import java.util.concurrent.ExecutionException;
>>>>>
>>>>>
>>>>> import android.R.style;
>>>>>
>>>>> import android.graphics.Bitmap;
>>>>>
>>>>> import android.graphics.Bitmap.Config;
>>>>>
>>>>> import android.graphics.BitmapFactory;
>>>>>
>>>>> import android.graphics.Canvas;
>>>>>
>>>>> import android.graphics.Color;
>>>>>
>>>>> import android.graphics.Matrix;
>>>>>
>>>>> import android.graphics.Paint;
>>>>>
>>>>> import android.graphics.Rect;
>>>>>
>>>>> import android.graphics.Paint.Style;
>>>>>
>>>>> import android.os.AsyncTask;
>>>>>
>>>>> import android.os.Bundle;
>>>>>
>>>>> import android.os.Environment;
>>>>>
>>>>> import android.util.Log;
>>>>>
>>>>> import android.view.Menu;
>>>>>
>>>>> import android.view.MenuInflater;
>>>>>
>>>>> import android.view.MenuItem;
>>>>>
>>>>> import android.view.MotionEvent;
>>>>>
>>>>> import android.view.VelocityTracker;
>>>>>
>>>>> import android.view.View;
>>>>>
>>>>> import android.view.WindowManager;
>>>>>
>>>>> import ioio.lib.api.DigitalInput;
>>>>>
>>>>> import ioio.lib.api.DigitalInput.Spec.Mode;
>>>>>
>>>>> import ioio.lib.api.DigitalOutput;
>>>>>
>>>>> import ioio.lib.api.IOIO;
>>>>>
>>>>> import ioio.lib.api.SpiMaster;
>>>>>
>>>>> import ioio.lib.api.SpiMaster.Rate;
>>>>>
>>>>> import ioio.lib.api.Uart;
>>>>>
>>>>> import ioio.lib.api.exception.ConnectionLostException;
>>>>>
>>>>> import ioio.lib.util.BaseIOIOLooper;
>>>>>
>>>>> import ioio.lib.util.IOIOLooper;
>>>>>
>>>>> import ioio.lib.util.android.IOIOActivity;
>>>>>
>>>>> import android.view.View.OnClickListener;
>>>>>
>>>>> import android.annotation.TargetApi;
>>>>>
>>>>> import android.app.AlarmManager;
>>>>>
>>>>> import android.app.Dialog;
>>>>>
>>>>> import android.app.PendingIntent;
>>>>>
>>>>> import android.content.Context;
>>>>>
>>>>> import android.content.Intent;
>>>>>
>>>>> import android.database.Cursor;
>>>>>
>>>>> import android.net.Uri;
>>>>>
>>>>> import android.os.Build;
>>>>>
>>>>> import android.provider.MediaStore;
>>>>>
>>>>> import android.widget.ArrayAdapter;
>>>>>
>>>>> import android.widget.Button;
>>>>>
>>>>> import android.widget.CheckBox;
>>>>>
>>>>> import android.widget.EditText;
>>>>>
>>>>> import android.widget.FrameLayout;
>>>>>
>>>>> import android.widget.ImageView;
>>>>>
>>>>> import android.widget.LinearLayout;
>>>>>
>>>>> import android.widget.Spinner;
>>>>>
>>>>> import android.widget.TextView;
>>>>>
>>>>> public class MainActivity extends IOIOActivity{
>>>>>  //initiation attributes
>>>>> private EditText custtext;
>>>>> private EditText urltxt;
>>>>> private Button custtxtbut;
>>>>>  private Button urlshare;
>>>>> private Button picdisplayButton;
>>>>> private Button rstButton; 
>>>>>  private ImageView pictest;
>>>>> private static ImageView pictest2;
>>>>> private static ImageView pictest3;
>>>>>  private ImageView pictest4;
>>>>> private GifView gifView;
>>>>> private GifDecoder decoder;
>>>>> private VelocityTracker mVelocityTracker = null;
>>>>>  private static TextView test;
>>>>>
>>>>> //intiation variables
>>>>> //width and height of the LED-matrix
>>>>>  private static int picw =33;
>>>>> private static int pich = 5;
>>>>> private static boolean isgif = false;
>>>>>  private boolean bkgchk;
>>>>> private boolean check = true;
>>>>> private int bkgclr = 0;
>>>>> private int txtclr = 3; 
>>>>>  private static byte[] buffer = new byte[picw*pich*3]; //<---------- 
>>>>> This I want to read out in Looper
>>>>> public static List<Bitmap> bmlist = new ArrayList<Bitmap>();
>>>>>  private static Bitmap lastpic = null;
>>>>> private float touchposx;
>>>>> private float touchposy;
>>>>>  private float deltax;
>>>>> private float deltay;
>>>>> private Bitmap lastfullbm = null; 
>>>>> private Bitmap touchpic =null;
>>>>>  private Bitmap oldtouchpic =null;
>>>>>
>>>>> private static byte[] bufferin= new byte[picw*pich*3];
>>>>>  
>>>>> private static boolean picdone = true;
>>>>>
>>>>>
>>>>> *Looper Class:*
>>>>>
>>>>> static class Looper extends BaseIOIOLooper {
>>>>>
>>>>>  //initiation of SPI protocol variable
>>>>>
>>>>>  private SpiMaster spi_;
>>>>>
>>>>>  private DigitalOutput pin8;
>>>>>
>>>>>  @Override
>>>>>
>>>>>  protected void setup() throws ConnectionLostException {
>>>>>
>>>>>
>>>>>  pin8 = ioio_.openDigitalOutput(8, false);//image_enable
>>>>>
>>>>>
>>>>> }
>>>>>
>>>>>     @Override
>>>>>
>>>>>  public void loop() throws ConnectionLostException, 
>>>>> InterruptedException {
>>>>>
>>>>>  if (picdone == false)
>>>>>
>>>>>  {
>>>>>
>>>>>  if (!isgif){
>>>>>
>>>>> //picture send process
>>>>>
>>>>>  spi_ = ioio_.openSpiMaster(new DigitalInput.Spec(4,
>>>>>
>>>>>
>>>>>      Mode.PULL_UP), new DigitalOutput.Spec(5),
>>>>>
>>>>>      new DigitalOutput.Spec(3),
>>>>>
>>>>>      new DigitalOutput.Spec[] { new DigitalOutput.Spec(2) },
>>>>>
>>>>>      new SpiMaster.Config(Rate.RATE_1M, false, true));
>>>>>
>>>>>  byte[] buffer_= buffer;
>>>>>
>>>>>   int buffernum = (int) Math.ceil(buffer_.length/48);
>>>>>
>>>>>
>>>>>  byte[] buffer1_= new byte[48];
>>>>>
>>>>>  byte[] packetlast= new byte[48];
>>>>>
>>>>>  pin8.write(true);
>>>>>
>>>>>
>>>>>  Thread.sleep(500);
>>>>>
>>>>>  for (int i =0;i<buffernum;i++){ 
>>>>>
>>>>>  System.arraycopy(buffer_, i*48, buffer1_, 0, 48);
>>>>>
>>>>>  
>>>>>  spi_.writeRead( buffer1_, buffer1_.length,
>>>>>
>>>>>
>>>>> buffer1_.length, null,0);* <------- e.g. I want to read here the MISO 
>>>>> and display it on the phone or display the buffer array from here to 
>>>>> phone. 
>>>>> Log.d also doesnt work here but everywhere else.*
>>>>>
>>>>>  Thread.sleep(100);
>>>>>
>>>>>  
>>>>> }
>>>>>
>>>>>  Thread.sleep(500);
>>>>>
>>>>>  pin8.write(false);
>>>>>
>>>>>  spi_.close();
>>>>>
>>>>>  }
>>>>>
>>>>>
>>>>> else
>>>>>
>>>>>  {
>>>>>
>>>>>  //GIF send process
>>>>>
>>>>>   isgif = false;
>>>>>
>>>>>  }
>>>>>
>>>>> picdone =true;//must be true to send 1 image per time.
>>>>>
>>>>>  }
>>>>>
>>>>>  }
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>  }
>>>>>
>>>>>
>>>>>  protected IOIOLooper createIOIOLooper() {
>>>>>
>>>>>  return new Looper();
>>>>>
>>>>>  }
>>>>>
>>>>> On Wednesday, June 4, 2014 5:55:40 PM UTC+2, Ytai wrote:
>>>>>
>>>>> Regarding SPI: there shouldn't be any lost data. I would try 
>>>>> connecting a logic analyzer on MOSI/CLK to verify that.
>>>>> Note that you can do up to 64 bytes on each transaction.
>>>>> To answer the other question I need to look at your code. The static 
>>>>> variables should work as you expect, but there's probably something else 
>>>>> about your code that you're missing.
>>>>>
>>>>>
>>>>> On Wed, Jun 4, 2014 at 4:33 AM, Sidharta Prahladsingh <sidki...@
>>>>>
>>>>> ...
>>>>
>>>>  -- 
>>>> 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] <javascript:>.
>> To post to this group, send email to [email protected] 
>> <javascript:>.
>> 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