Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions GccBoardProject1/src/grideye.c
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

#include <asf.h>
#include <grideye.h>
#include <numpyInC.h>

#define GE_BUFFER_DATA_LENGTH 128
static uint8_t ge_write_buffer[GE_BUFFER_DATA_LENGTH];
Expand Down
80 changes: 13 additions & 67 deletions GccBoardProject1/src/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -35,62 +35,31 @@
#include <asf.h>
#include <grideye.h>
#include <peopleCounting.h>
#include "numpyInC.c"
#include <numpyInC.h>

static uint16_t PIXEL_BUFFER[NUM_PIXELS];
static uint16_t * COUNT_BUFF[COUNT_BUFF_SIZE];
static uint16_t *MEDIAN_FILTER_POINTERS_BUFF[MEDIAN_FILTER_POINTERS_BUFF_SIZE];
static uint16_t COUNT_BUFF[COUNT_BUFF_SIZE];

/*
struct usart_module usart_instance;

void init_uart(void);
void uart_out(const uint8_t *string, uint16_t length);


void init_uart() {
struct usart_config config_usart;
usart_get_config_defaults(&config_usart);

config_usart.baudrate = 9600;
config_usart.mux_setting = EDBG_CDC_SERCOM_MUX_SETTING;
config_usart.pinmux_pad0 = EDBG_CDC_SERCOM_PINMUX_PAD0;
config_usart.pinmux_pad1 = EDBG_CDC_SERCOM_PINMUX_PAD1;
config_usart.pinmux_pad2 = EDBG_CDC_SERCOM_PINMUX_PAD2;
config_usart.pinmux_pad3 = EDBG_CDC_SERCOM_PINMUX_PAD3;

while (usart_init(&usart_instance, EDBG_CDC_MODULE, &config_usart) != STATUS_OK) {
}

usart_enable(&usart_instance);
}

void uart_out(const uint8_t *string, uint16_t length) {
while(usart_write_buffer_wait(&usart_instance, string, length) != STATUS_OK){}
}
*/
/*
int main (void) {
system_init();
init_uart();
init_grideye();
delay_init();
median_buffer_init(MEDIAN_FILTER_POINTERS_BUFF);
initialize_count();
uint16_t frame_count = 0;

struct keepCount * count;
count->countIn = 0;
count->countOut = 0;
uint16_t frameCount = 0;
uint16_t lastFrame = 0;
count->TRIGGER_COLUNM[0][0] = TRIGGER_COLUNM_2;
count->TRIGGER_COLUNM[0][1] = CHECK_OFFSET_2;
count->TRIGGER_COLUNM[1][0] = TRIGGER_COLUNM_5;
count->TRIGGER_COLUNM[1][1] = CHECk_OFFSET_5;
count->counted = False;
initialize_count();

/* Insert application code here, after the board has been initialized. */

/* This skeleton code simply sets the LED to the state of the button.
/* This skeleton code simply sets the LED to the state of the button. */
while (1) {
/* Is button pressed?
/* Is button pressed? */
if (port_pin_get_input_level(BUTTON_0_PIN) == BUTTON_0_ACTIVE) {
if (ge_is_sleeping()) {
ge_set_mode(GE_MODE_NORMAL);
Expand All @@ -105,34 +74,11 @@ int main (void) {
if (!ge_is_sleeping()) {
// Send frame
uint8_t buffer[512];

//double ambient_temp = get_ambient_temp();

//uint16_t len = snprintf((char *) buffer, sizeof(buffer), "It is %.2lf degrees Celsius.\r\n", ambient_temp);
//uart_out(buffer, len);

ge_get_frame(PIXEL_BUFFER);
uint16_t size = 0;
for (int i = 0; i < NUM_PIXELS; i++) {
size += sprintf((char *) (buffer + size), "%d,", PIXEL_BUFFER[i]);
}
buffer[size-1] = '\r';
buffer[size] = '\n';
//frameCount++;
//count = countPeople(count, PIXEL_BUFFER, frameCount, COUNT_BUFF, lastFrame);
uart_out(buffer, size+1);
start_count(frame_count, PIXEL_BUFFER, MEDIAN_FILTER_POINTERS_BUFF, COUNT_BUFF);
frame_count++;
}
}
}
*/
int main(void) {
system_init();
init_uart();
uint8_t debug[] = "is this printing\r\n";
uart_out(debug,sizeof(debug)-1);
uint8_t array[] = "123";
uint8_t b[] = "456";
uint8_t ** C;
C = dstack(array, b);
uart_out(C[0], sizeof(C[0]) - 1);
return 0;
}
}
82 changes: 38 additions & 44 deletions GccBoardProject1/src/numpyInC.c
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,13 @@

#include <asf.h>
#include <string.h>
#include <numpyInC.h>

struct usart_module usart_instance;
static uint16_t FRAME_MEDIAN[NUM_PIXELS];
static uint16_t ARRAY[NUM_RAW_FRAMES];
static uint16_t FRAME_TEMP[NUM_PIXELS];

void init_uart(void);
void uart_out(const uint8_t *string, uint16_t length);


void init_uart() {
Expand All @@ -36,53 +38,45 @@ void uart_out(const uint8_t *string, uint16_t length) {
}


int * fromString(char* data, const char* delim) {
int * array;
char * pt = strtok(data, delim);
uint8_t debug1[] = "NOW is this printing\r\n";
uart_out(debug1, sizeof(debug1) - 1);
if (pt != NULL) {
uint8_t debug2[] = "is this printing\r\n";
uart_out(debug2, sizeof(debug2) - 1);
}else {
uint8_t debug3[] = "NOW 2 is this printing\r\n";
uart_out(debug3, sizeof(debug3) - 1);
void dstack(uint16_t * median_filter_buffer[], uint16_t pixel_buff[]) {
uint16_t *oldFrame= median_filter_buffer[0];
for (int i = 0; i < NUM_PIXELS; i++){
oldFrame[i] = pixel_buff[i];
}
uart_out((uint8_t *) pt, sizeof(pt) - 1);
int i = 0;
while (pt != NULL) {
array[i] = atoi(pt);
uint8_t msg = array[i];
uart_out(msg, sizeof(msg) - 1);
pt = strtok(NULL, delim);
for (int i = 0; i < MEDIAN_FILTER_POINTERS_BUFF_SIZE - 1; i++) {
median_filter_buffer[i] = median_filter_buffer[i+1];
}
return array;
median_filter_buffer[MEDIAN_POINTER_BUFF_LAST_INDEX] = &oldFrame[0];
return;
}

uint8_t * dstack(uint8_t * array1, uint8_t * array2) {
uart_out(array2, sizeof(array1)-1);
uint8_t * newArray[3];
uint8_t i = 0;
uint8_t i1=0;
uint8_t i2 = 0;
uint8_t pt1, pt2;
pt1 = array1[i1];
pt2 = array2[i2];
uint16_t median(int len) {
uint16_t temp;
for (int i = 0; i < len; i++) {
for (int j = i+1; j < len; j++) {
if (ARRAY[j] < ARRAY[i]) {
temp = ARRAY[i];
ARRAY[i] = ARRAY[j];
ARRAY[j] = temp;
}
}
}

while (pt1 != NULL && pt2 != NULL){
uint8_t pt3[2];
pt3[0] = pt1;
pt3[1] = pt2;
uart_out(pt3, sizeof(pt3));
newArray[i] = pt3;
uart_out(newArray[i], sizeof(newArray[i])-1);
i ++;
pt1 = array1[i1++];
pt2 = array2[i2++];
if (len % 2 == 0) {
return ((ARRAY[len/2] + ARRAY[len/2 - 1])/2);
} else {
return ARRAY[len/2];
}
uint8_t debug[] = "is this printing\r\n";
uart_out(debug,sizeof(debug)-1);
uart_out(*newArray, sizeof(*newArray)-1);
return (newArray);

}

uint16_t* median_frame(uint16_t* median_filter_buffer[]) {
for (int j = 0; j < NUM_PIXELS; j++) {
for (int i = 0; i < MEDIAN_FILTER_POINTERS_BUFF_SIZE; i++) {
FRAME_TEMP = median_filter_buffer[i];
ARRAY[i] = FRAME_TEMP[j];
}
FRAME_MEDIAN[j] = median(NUM_RAW_FRAMES);
}
return &FRAME_MEDIAN[0];
}
26 changes: 26 additions & 0 deletions GccBoardProject1/src/numpyInC.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/*
* numpyInC.h
*
* Created: 3/24/2017 8:59 PM
* Author: Udaya Malik
*/

#ifndef NUMPYINC_H_
#define NUMPYINC_H_

#define MEDIAN_POINTER_BUFF_LAST_INDEX 9

#include <asf.h>
#include <string.h>
#include <peopleCounting.h>
#include <grideye.h>

void init_uart(void);
void uart_out(const uint8_t *string, uint16_t length);
void dstack(uint16_t * median_filter_buffer[], uint16_t pixel_buff[]);
float median(int len);
uint16_t* median_frame(uint16_t* median_filter_buffer[]);
void init_uart(void);
void uart_out(const uint8_t *string, uint16_t length);

#endif
Loading