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.
