Integrated pixy into emulator. Pixy is no longer in the common/libs folder but in emulator/libs and discovery/libs
This commit is contained in:
105
emulator/libs/Pixy/src/qqueue.h
Normal file
105
emulator/libs/Pixy/src/qqueue.h
Normal file
@@ -0,0 +1,105 @@
|
||||
//
|
||||
// begin license header
|
||||
//
|
||||
// This file is part of Pixy CMUcam5 or "Pixy" for short
|
||||
//
|
||||
// All Pixy source code is provided under the terms of the
|
||||
// GNU General Public License v2 (http://www.gnu.org/licenses/gpl-2.0.html).
|
||||
// Those wishing to use Pixy source code, software and/or
|
||||
// technologies under different licensing terms should contact us at
|
||||
// cmucam@cs.cmu.edu. Such licensing terms are available for
|
||||
// all portions of the Pixy codebase presented here.
|
||||
//
|
||||
// end license header
|
||||
//
|
||||
#ifndef _QQUEUE_H
|
||||
#define _QQUEUE_H
|
||||
#include <inttypes.h>
|
||||
|
||||
#define QQ_LOC SRAM4_LOC
|
||||
#ifdef PIXY
|
||||
#define QQ_SIZE 0x3c00
|
||||
#else
|
||||
#define QQ_SIZE 0x30000
|
||||
#endif
|
||||
#define QQ_MEM_SIZE ((QQ_SIZE-sizeof(struct QqueueFields)+sizeof(Qval))/sizeof(Qval))
|
||||
|
||||
#ifdef __cplusplus
|
||||
struct Qval
|
||||
#else
|
||||
typedef struct
|
||||
#endif
|
||||
{
|
||||
#ifdef __cplusplus
|
||||
Qval()
|
||||
{
|
||||
m_u = m_v = m_y = m_col = 0;
|
||||
}
|
||||
|
||||
Qval(int16_t u, int16_t v, uint16_t y, uint16_t col)
|
||||
{
|
||||
m_u = u;
|
||||
m_v = v;
|
||||
m_y = y;
|
||||
m_col = col;
|
||||
}
|
||||
#endif
|
||||
|
||||
uint16_t m_col;
|
||||
int16_t m_v;
|
||||
int16_t m_u;
|
||||
uint16_t m_y;
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#else
|
||||
} Qval;
|
||||
#endif
|
||||
|
||||
|
||||
struct QqueueFields
|
||||
{
|
||||
uint16_t readIndex;
|
||||
uint16_t writeIndex;
|
||||
|
||||
uint16_t produced;
|
||||
uint16_t consumed;
|
||||
|
||||
// (array size below doesn't matter-- we're just going to cast a pointer to this struct)
|
||||
Qval data[1]; // data
|
||||
};
|
||||
|
||||
#ifdef __cplusplus // M4 is C++ and the "consumer" of data
|
||||
|
||||
class Qqueue
|
||||
{
|
||||
public:
|
||||
Qqueue();
|
||||
~Qqueue();
|
||||
|
||||
uint32_t dequeue(Qval *val);
|
||||
uint32_t queued()
|
||||
{
|
||||
return m_fields->produced - m_fields->consumed;
|
||||
}
|
||||
#ifndef PIXY
|
||||
int enqueue(Qval *val);
|
||||
#endif
|
||||
|
||||
uint32_t readAll(Qval *mem, uint32_t size);
|
||||
void flush();
|
||||
|
||||
private:
|
||||
QqueueFields *m_fields;
|
||||
};
|
||||
|
||||
#else // M0 is C and the "producer" of data (Qvals)
|
||||
|
||||
uint32_t qq_enqueue(const Qval *val);
|
||||
uint16_t qq_free(void);
|
||||
|
||||
extern struct QqueueFields *g_qqueue;
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user