Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // memhandler.h
- #ifndef MEMHANDLER_H
- #define MEMHANDLER_H
- int allocMemory(int handle, int numElements);
- int getUpdatedMemory(int handle, unsigned char* outputBuffer,
- int numElements, int timeout);
- #endif
- // memhandler.c
- #include "memhandler.h"
- #include "atcore.h"
- struct buffer {
- unsigned char* data;
- int len;
- struct buffer* next;
- };
- haveInitialized = 0;
- struct buffer* firstBuffer;
- struct buffer* lastBuffer;
- int allocMemory(int handle, int numElements) {
- struct buffer* newBuffer = (struct buffer*) malloc(sizeof(struct buffer));
- newBuffer->data = malloc(numElements * sizeof(unsigned char));
- newBuffer->len = numElements;
- newBuffer->next = 0;
- if (haveInitialized) {
- lastBuffer->next = newBuffer;
- }
- else {
- firstBuffer = newBuffer;
- lastBuffer = newBuffer;
- haveInitialized = 1;
- }
- return AT_QueueBuffer(handle, newBuffer->data, numElements);
- }
- int getUpdatedMemory(int handle, unsigned char* outputBuffer,
- int numElements, int timeout) {
- char* result;
- int resultSize;
- error = AT_WaitBuffer(handle, &result, &resultSize, timeout);
- if (error) {
- return error;
- }
- curBuffer = firstBuffer;
- while (curBuffer->data != result) {
- if (!curBuffer->next) {
- return 32767; // Random bogus error code.
- }
- curBuffer = firstBuffer->next;
- }
- int i;
- // NB what if resultSize < numElements?
- for (i = 0; i < numElements; ++i) {
- outputBuffer[i] = curBuffer->data[i];
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement