SPI read Pixi Cam V1

Revision:
5:d109b094d4bb
Parent:
4:478d4d9193a1
diff -r 478d4d9193a1 -r d109b094d4bb pixySPI.cpp
--- a/pixySPI.cpp	Mon Aug 23 11:26:37 2021 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,129 +0,0 @@
-    
-
-#include "pixySPI.h"
- 
-pixySPI::pixySPI(PinName mosi, PinName miso, PinName sclk, int nBlocks)
-    :spi(mosi,miso,sclk)
-{
-    spi.format(8,0); //8bits mode 0
-    spi.frequency(100000); //set the frequency in Hz
-    sync=0xAA55; //start word of a frame coming from the pixy
-    //blocks=new Block[nBlocks]; //allocate space for the blocks
-    //numBlocks=nBlocks;
-    numBlocks=NUM_BLOCKS;
-    bestX=CENTER_X;
-    bestY=CENTER_Y;
-}
- 
-pixySPI::~pixySPI()
-{
-    //delete blocks;
-}
- 
- 
-short pixySPI::readTwoBytesLSB()
-{
-    short out;
-    char read[2]= {0,0};
-    read[0]=spi.write(0x00);
-    read[1]=spi.write(0x00);
-    out=(((short)read[0]) << 8) | read[1];
-    return out;
-}
- 
- 
-//this doesn't work
-void pixySPI::readNBytes(char* buf, int num)
-{
-    for (int i=0; i<num; i++) {
-        char byte=spi.write(0x00);
-        memcpy(buf+i, &byte, 1);
-    }
-}
- 
-void pixySPI::capture()
-{
-    memset(blocks, 0, numBlocks*sizeof(Block)); //destroy the old targets
-    //rec_blocks = 0;
-    for (i=0; i<numBlocks; ++i) {
-        // printf("block %d\n", i);
-        Block* out=&blocks[i];
-        out->signature=INVALID_BLOCK;
-        uint16_t checksum=0;
-        //first we need to detect the start of a block. They all start with 0xAA55
-        char frame[2]= {0,0}; //this is a 2 byte running frame of what is being recieved. It's like a first-in-last-out queue
-        //debug->printf("looking for valid signature\n");
-        Timer t;
-        t.start();
-        while (memcmp((char*)&sync, frame, 2)!=0) {
-            frame[0]=frame[1]; //move byte down
-            frame[1]=spi.write(0x00); //get next byte.
-            if (t.read_ms()>5)
-            {
-                t.stop();
-                return;
-            }
-        }
-        //printf("target\n\n");
-        spi.write(0x00);
-        //ok so we got a valid signature
-        //these didn't end up working
-        //readNBytes((char*)(&checksum), 2); //get the checksum
-        //readNBytes((char*)(&out), sizeof(Block)); //get the rest of the data
-        checksum=readTwoBytesLSB();
-        out->signature=readTwoBytesLSB();
-        out->x=readTwoBytesLSB();
-        out->y=readTwoBytesLSB();
-        out->width=readTwoBytesLSB();
-        out->height=readTwoBytesLSB();
- 
-        if (checksum!=(out->x+out->y+out->signature+out->width+out->height) || checksum==0) {
-            //debug->printf("checksum doesn't add up %d\n", checksum);
-            out->signature=INVALID_BLOCK; //used for invalid signatures
-        }
-        //printf("found block\n");
-        if (blocks[0].signature!=INVALID_BLOCK)
-        {
-            //mutex->lock();
-            bestX=blocks[0].x;
-            bestY=blocks[0].y;
-            //mutex->unlock();
-        }
-    }
-    return;
-}
- 
-Block* pixySPI::getBlocks()
-{
-    return blocks;
-}
- 
-int pixySPI::getNumBlocks()
-{
-    return i;
-}
- 
-int pixySPI::getBestX()
-{
-    if (bestX>640)
-        return 640;
-    else if (bestX<0)
-        return 0;
-    else
-        return bestX;
-}
- 
-int pixySPI::getBestY()
-{
-    if (bestY>400)
-        return 400;
-    else if (bestY<0)
-        return 0;
-    else
-        return bestY;
-}
- 
-char pixySPI::getRawData()
-{
-    return spi.write(0x00);
-}
\ No newline at end of file