Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of Eurobot2013 by
ui/ui.cpp
- Committer:
- sv
- Date:
- 2012-11-07
- Revision:
- 1:6799c07fe510
File content as of revision 1:6799c07fe510:
#include "ui.h"
#include <iostream>
#include "system.h"
UI::UI() :
tUI(printtw,this,osPriorityNormal,2048) {
newdataflags = 0;
for (int i = 0; i < NUMIDS; i++) {
idlist[i] = 0;
buffarr[i] = 0;
}
}
bool UI::regid(char id, unsigned int length) {
//check if the id is already taken
if (id < NUMIDS && !idlist[id]) {
idlist[id] = length;
buffarr[id] = new float[length];
return true;
} else
return false;
}
bool UI::updateval(char id, float* buffer, unsigned int length) {
//check if the id is registered, and has buffer of correct length
if (id < NUMIDS && idlist[id] == length && buffarr[id] && !(newdataflags & (1<<id))) {
for (int i = 0; i < length; i++)
buffarr[id][i] = buffer[i];
newdataflags |= (1<<id);
return true;
} else{
return false;
}
}
bool UI::updateval(char id, float value) {
//check if the id is registered, and the old value has been written
if (id < NUMIDS && idlist[id] == 1 && buffarr[id] && !(newdataflags & (1<<id))) {
buffarr[id][0] = value;
newdataflags |= (1<<id);
return true;
} else
return false;
}
bool UI::unregid(char id) {
if (id < NUMIDS) {
idlist[id] = 0;
if (buffarr[id])
delete buffarr[id];
return true;
} else
return false;
}
void UI::printloop() {
#ifdef UION
Thread::wait(3500);
#else
Thread::wait(osWaitForever);
#endif
char* sync = "ABCD";
std::cout.write(sync, 4);
//std::cout.flush();
std::cout << std::endl;
//printf("\r\n");
while (1) {
OLED3 = !OLED3;
//send number of packets
char numtosend = 0;
for (int id = 0; id < NUMIDS; id++)
if (newdataflags & (1<<id))
numtosend++;
std::cout.put(numtosend);
//send packets
for (char id = 0; id < NUMIDS; id++) {
if (newdataflags & (1<<id)) {
std::cout.put(id);
std::cout.write((char*)buffarr[id], idlist[id] * sizeof(float));
newdataflags &= ~(1<<id);
}
}
std::cout << std::endl;
//std::cout.flush();
Thread::wait(200);
}
}
