Disabled external gits
This commit is contained in:
99
cs473-es/lab3/sw/nios/application/lcdcam_system_test.c
Executable file
99
cs473-es/lab3/sw/nios/application/lcdcam_system_test.c
Executable file
@@ -0,0 +1,99 @@
|
||||
#ifdef ENABLE_LCDCAM_TEST
|
||||
|
||||
#include "lt24.h"
|
||||
#include "stdint.h"
|
||||
#include "stddef.h"
|
||||
|
||||
#include "system.h"
|
||||
|
||||
#define WIDTH 320
|
||||
#define HEIGHT 240
|
||||
#define NPIXELS WIDTH*HEIGHT
|
||||
#define PIXELSIZE 2 // 16 bits
|
||||
#define BUFFER_SIZE NPIXELS / PIXELSIZE // in words
|
||||
#define BUFFER1 0x10000000
|
||||
#define BUFFER2 BUFFER1 + BUFFER_SIZE
|
||||
#define BUFFER3 BUFFER2 + BUFFER_SIZE
|
||||
#define N_BUFFERS 3
|
||||
|
||||
struct BufferManager {
|
||||
uint32_t* buffers[N_BUFFERS];
|
||||
|
||||
// Buffer assignment semantics:
|
||||
// if null
|
||||
// => device currently has no assigne buffer
|
||||
// => device is currently now showing/capturing
|
||||
uint32_t* lcd_buffer;
|
||||
uint32_t* cam_buffer;
|
||||
};
|
||||
|
||||
struct BufferManager bman;
|
||||
struct LT24 *lcd = LCDCONTROLLER_0_BASE;
|
||||
// struct Camera cam = CAMERA_ADDRESS;
|
||||
|
||||
void setupBuffers(struct BufferManager* bman, uint32_t* b1, uint32_t* b2, uint32_t* b3) {
|
||||
bman->buffers[0] = b1;
|
||||
bman->buffers[1] = b2;
|
||||
bman->buffers[2] = b3;
|
||||
bman->lcd_buffer = 0;
|
||||
bman->cam_buffer = 0;
|
||||
}
|
||||
|
||||
int main_changeme() {
|
||||
setupBuffers(&bman, BUFFER1, BUFFER2, BUFFER3);
|
||||
|
||||
LT24_initialize(lcd);
|
||||
// startCamera(&cam);
|
||||
while(1) {
|
||||
// TODO: put to sleep...
|
||||
}
|
||||
}
|
||||
|
||||
void tryLCDShow() {
|
||||
char gotBuffer = 0;
|
||||
for (int i = 0; i < N_BUFFERS; i++) {
|
||||
if (bman.buffers[i] != 0 && bman.buffers[i] != bman.cam_buffer) {
|
||||
bman.lcd_buffer = bman.buffers[i];
|
||||
gotBuffer = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (gotBuffer) {
|
||||
LT24_refresh(lcd);
|
||||
} else {
|
||||
bman.lcd_buffer = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void tryCamCapture() {
|
||||
char gotBuffer = 0;
|
||||
for (int i = 0; i < N_BUFFERS; i++) {
|
||||
if (bman.buffers[i] != bman.lcd_buffer && bman.buffers[i] != bman.cam_buffer) {
|
||||
bman.cam_buffer = bman.buffers[i];
|
||||
gotBuffer = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (gotBuffer) {
|
||||
// captureImage(bman.lcd_buffer);
|
||||
} else {
|
||||
bman.cam_buffer = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void IRQ_lcd() {
|
||||
bman.lcd_buffer = 0; // Yield buffer
|
||||
tryLCDShow(); // Locate any ready buffer
|
||||
if (bman.cam_buffer == 0) { // If camera currently inactive, re-try capture (we just yielded a buffer)
|
||||
tryCamCapture();
|
||||
}
|
||||
}
|
||||
|
||||
void IRQ_camera() {
|
||||
tryCamCapture();
|
||||
if (bman.lcd_buffer == 0) {
|
||||
tryLCDShow();
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user