commit!
ui/ui.cpp@0:42026f893a2d, 2012-06-15 (annotated)
- Committer:
- narshu
- Date:
- Fri Jun 15 20:40:17 2012 +0000
- Revision:
- 0:42026f893a2d
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
narshu | 0:42026f893a2d | 1 | |
narshu | 0:42026f893a2d | 2 | #include "ui.h" |
narshu | 0:42026f893a2d | 3 | #include <iostream> |
narshu | 0:42026f893a2d | 4 | #include "system.h" |
narshu | 0:42026f893a2d | 5 | |
narshu | 0:42026f893a2d | 6 | UI::UI() : |
narshu | 0:42026f893a2d | 7 | tUI(printtw,this,osPriorityNormal,2048) { |
narshu | 0:42026f893a2d | 8 | newdataflags = 0; |
narshu | 0:42026f893a2d | 9 | for (int i = 0; i < NUMIDS; i++) { |
narshu | 0:42026f893a2d | 10 | idlist[i] = 0; |
narshu | 0:42026f893a2d | 11 | buffarr[i] = 0; |
narshu | 0:42026f893a2d | 12 | } |
narshu | 0:42026f893a2d | 13 | |
narshu | 0:42026f893a2d | 14 | } |
narshu | 0:42026f893a2d | 15 | |
narshu | 0:42026f893a2d | 16 | bool UI::regid(char id, unsigned int length) { |
narshu | 0:42026f893a2d | 17 | |
narshu | 0:42026f893a2d | 18 | //check if the id is already taken |
narshu | 0:42026f893a2d | 19 | if (id < NUMIDS && !idlist[id]) { |
narshu | 0:42026f893a2d | 20 | idlist[id] = length; |
narshu | 0:42026f893a2d | 21 | buffarr[id] = new float[length]; |
narshu | 0:42026f893a2d | 22 | return true; |
narshu | 0:42026f893a2d | 23 | } else |
narshu | 0:42026f893a2d | 24 | return false; |
narshu | 0:42026f893a2d | 25 | } |
narshu | 0:42026f893a2d | 26 | |
narshu | 0:42026f893a2d | 27 | bool UI::updateval(char id, float* buffer, unsigned int length) { |
narshu | 0:42026f893a2d | 28 | |
narshu | 0:42026f893a2d | 29 | //check if the id is registered, and has buffer of correct length |
narshu | 0:42026f893a2d | 30 | if (id < NUMIDS && idlist[id] == length && buffarr[id] && !(newdataflags & (1<<id))) { |
narshu | 0:42026f893a2d | 31 | for (int i = 0; i < length; i++) |
narshu | 0:42026f893a2d | 32 | buffarr[id][i] = buffer[i]; |
narshu | 0:42026f893a2d | 33 | newdataflags |= (1<<id); |
narshu | 0:42026f893a2d | 34 | return true; |
narshu | 0:42026f893a2d | 35 | } else{ |
narshu | 0:42026f893a2d | 36 | return false; |
narshu | 0:42026f893a2d | 37 | } |
narshu | 0:42026f893a2d | 38 | } |
narshu | 0:42026f893a2d | 39 | |
narshu | 0:42026f893a2d | 40 | bool UI::updateval(char id, float value) { |
narshu | 0:42026f893a2d | 41 | |
narshu | 0:42026f893a2d | 42 | //check if the id is registered, and the old value has been written |
narshu | 0:42026f893a2d | 43 | if (id < NUMIDS && idlist[id] == 1 && buffarr[id] && !(newdataflags & (1<<id))) { |
narshu | 0:42026f893a2d | 44 | buffarr[id][0] = value; |
narshu | 0:42026f893a2d | 45 | newdataflags |= (1<<id); |
narshu | 0:42026f893a2d | 46 | return true; |
narshu | 0:42026f893a2d | 47 | } else |
narshu | 0:42026f893a2d | 48 | return false; |
narshu | 0:42026f893a2d | 49 | |
narshu | 0:42026f893a2d | 50 | } |
narshu | 0:42026f893a2d | 51 | |
narshu | 0:42026f893a2d | 52 | bool UI::unregid(char id) { |
narshu | 0:42026f893a2d | 53 | if (id < NUMIDS) { |
narshu | 0:42026f893a2d | 54 | idlist[id] = 0; |
narshu | 0:42026f893a2d | 55 | if (buffarr[id]) |
narshu | 0:42026f893a2d | 56 | delete buffarr[id]; |
narshu | 0:42026f893a2d | 57 | return true; |
narshu | 0:42026f893a2d | 58 | } else |
narshu | 0:42026f893a2d | 59 | return false; |
narshu | 0:42026f893a2d | 60 | } |
narshu | 0:42026f893a2d | 61 | |
narshu | 0:42026f893a2d | 62 | void UI::printloop() { |
narshu | 0:42026f893a2d | 63 | |
narshu | 0:42026f893a2d | 64 | #ifdef UION |
narshu | 0:42026f893a2d | 65 | Thread::wait(3500); |
narshu | 0:42026f893a2d | 66 | #else |
narshu | 0:42026f893a2d | 67 | Thread::wait(osWaitForever); |
narshu | 0:42026f893a2d | 68 | #endif |
narshu | 0:42026f893a2d | 69 | |
narshu | 0:42026f893a2d | 70 | char* sync = "ABCD"; |
narshu | 0:42026f893a2d | 71 | std::cout.write(sync, 4); |
narshu | 0:42026f893a2d | 72 | //std::cout.flush(); |
narshu | 0:42026f893a2d | 73 | std::cout << std::endl; |
narshu | 0:42026f893a2d | 74 | //printf("\r\n"); |
narshu | 0:42026f893a2d | 75 | |
narshu | 0:42026f893a2d | 76 | while (1) { |
narshu | 0:42026f893a2d | 77 | |
narshu | 0:42026f893a2d | 78 | OLED3 = !OLED3; |
narshu | 0:42026f893a2d | 79 | |
narshu | 0:42026f893a2d | 80 | //send number of packets |
narshu | 0:42026f893a2d | 81 | char numtosend = 0; |
narshu | 0:42026f893a2d | 82 | for (int id = 0; id < NUMIDS; id++) |
narshu | 0:42026f893a2d | 83 | if (newdataflags & (1<<id)) |
narshu | 0:42026f893a2d | 84 | numtosend++; |
narshu | 0:42026f893a2d | 85 | |
narshu | 0:42026f893a2d | 86 | std::cout.put(numtosend); |
narshu | 0:42026f893a2d | 87 | |
narshu | 0:42026f893a2d | 88 | //send packets |
narshu | 0:42026f893a2d | 89 | for (char id = 0; id < NUMIDS; id++) { |
narshu | 0:42026f893a2d | 90 | if (newdataflags & (1<<id)) { |
narshu | 0:42026f893a2d | 91 | std::cout.put(id); |
narshu | 0:42026f893a2d | 92 | std::cout.write((char*)buffarr[id], idlist[id] * sizeof(float)); |
narshu | 0:42026f893a2d | 93 | newdataflags &= ~(1<<id); |
narshu | 0:42026f893a2d | 94 | } |
narshu | 0:42026f893a2d | 95 | } |
narshu | 0:42026f893a2d | 96 | |
narshu | 0:42026f893a2d | 97 | std::cout << std::endl; |
narshu | 0:42026f893a2d | 98 | //std::cout.flush(); |
narshu | 0:42026f893a2d | 99 | Thread::wait(200); |
narshu | 0:42026f893a2d | 100 | } |
narshu | 0:42026f893a2d | 101 | |
narshu | 0:42026f893a2d | 102 | } |
narshu | 0:42026f893a2d | 103 |