kobe leysen / Mbed 2 deprecated TEST

Dependencies:   DAQ mbed-rtos mbed

Committer:
leysenkobe
Date:
Wed Apr 30 11:41:10 2014 +0000
Revision:
2:7f7eb0cc78a4
Parent:
1:fa51edf89e71
kbk;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
leysenkobe 0:6ee88b4152dc 1 #include "Packet.h"
leysenkobe 0:6ee88b4152dc 2 #include "mbed.h"
leysenkobe 0:6ee88b4152dc 3
leysenkobe 0:6ee88b4152dc 4 Serial pp(USBTX, USBRX);
leysenkobe 0:6ee88b4152dc 5
leysenkobe 0:6ee88b4152dc 6 //Constructor & Destructor
leysenkobe 0:6ee88b4152dc 7 Packet::Packet(uint8_t ID[2],uint8_t* packet,int length)
leysenkobe 0:6ee88b4152dc 8 {
leysenkobe 0:6ee88b4152dc 9 //geheugen in de heap vrij maken
leysenkobe 0:6ee88b4152dc 10 this->ID = new uint8_t[2];
leysenkobe 0:6ee88b4152dc 11 this->RESERVED = new uint8_t[2];
leysenkobe 0:6ee88b4152dc 12 this->nBytesFilled = 0;
leysenkobe 0:6ee88b4152dc 13
leysenkobe 0:6ee88b4152dc 14 if(length < 9 || packet[2]!= ID[0] || packet[3] != ID[1])
leysenkobe 0:6ee88b4152dc 15 {
leysenkobe 0:6ee88b4152dc 16 this->TOT_SIZE = 7;
leysenkobe 0:6ee88b4152dc 17 this->ID[0] = ID[0];
leysenkobe 0:6ee88b4152dc 18 this->ID[1] = ID[1];
leysenkobe 0:6ee88b4152dc 19 this->CMD = PACKET_ERROR;
leysenkobe 0:6ee88b4152dc 20 this->CMD_SIZE = 0;
leysenkobe 0:6ee88b4152dc 21 this->CMD_DATA = NULL;
leysenkobe 0:6ee88b4152dc 22 this->RESERVED[0] = 0;
leysenkobe 0:6ee88b4152dc 23 this->RESERVED[1] = 0;
leysenkobe 0:6ee88b4152dc 24 }
leysenkobe 0:6ee88b4152dc 25 else
leysenkobe 0:6ee88b4152dc 26 {
leysenkobe 0:6ee88b4152dc 27 this->TOT_SIZE = (packet[0] << 8) + packet[1];
leysenkobe 0:6ee88b4152dc 28 this->ID[0] = packet[2];
leysenkobe 0:6ee88b4152dc 29 this->ID[1] = packet[3];
leysenkobe 0:6ee88b4152dc 30 this->CMD = packet[4];
leysenkobe 0:6ee88b4152dc 31 this->CMD_SIZE = (packet[5] << 8) + packet[6];
leysenkobe 0:6ee88b4152dc 32 this->CMD_DATA = new uint8_t[this->CMD_SIZE];
leysenkobe 0:6ee88b4152dc 33 for (int i = 7; i < 7+this->CMD_SIZE; i++)
leysenkobe 0:6ee88b4152dc 34 {
leysenkobe 0:6ee88b4152dc 35 this->CMD_DATA[i-7] = packet[i];
leysenkobe 0:6ee88b4152dc 36 }
leysenkobe 0:6ee88b4152dc 37 this->RESERVED[0] = packet[7+this->CMD_SIZE];
leysenkobe 0:6ee88b4152dc 38 this->RESERVED[1] = packet[7+this->CMD_SIZE+1];
leysenkobe 0:6ee88b4152dc 39 }
leysenkobe 0:6ee88b4152dc 40 }
leysenkobe 0:6ee88b4152dc 41 Packet::Packet(uint8_t ID[2])
leysenkobe 0:6ee88b4152dc 42 {
leysenkobe 0:6ee88b4152dc 43 //geheugen in de heap vrij maken
leysenkobe 0:6ee88b4152dc 44 this->ID = new uint8_t[2];
leysenkobe 0:6ee88b4152dc 45 this->RESERVED = new uint8_t[2];
leysenkobe 0:6ee88b4152dc 46 this->nBytesFilled = 0;
leysenkobe 0:6ee88b4152dc 47
leysenkobe 0:6ee88b4152dc 48 this->TOT_SIZE = 7;
leysenkobe 0:6ee88b4152dc 49 this->ID[0] = ID[0];
leysenkobe 0:6ee88b4152dc 50 this->ID[1] = ID[1];
leysenkobe 0:6ee88b4152dc 51 this->CMD = PACKET_ERROR;
leysenkobe 0:6ee88b4152dc 52 this->CMD_SIZE = 0;
leysenkobe 0:6ee88b4152dc 53 this->CMD_DATA = NULL;
leysenkobe 0:6ee88b4152dc 54 this->RESERVED[0] = 0;
leysenkobe 1:fa51edf89e71 55 this->RESERVED[1] = 1;
leysenkobe 0:6ee88b4152dc 56 }
leysenkobe 0:6ee88b4152dc 57 Packet::Packet(uint8_t ID[2],uint8_t CMD,uint8_t RESERVED[2])
leysenkobe 0:6ee88b4152dc 58 {
leysenkobe 0:6ee88b4152dc 59 //geheugen in de heap vrij maken
leysenkobe 0:6ee88b4152dc 60 this->ID = new uint8_t[2];
leysenkobe 0:6ee88b4152dc 61 this->RESERVED = new uint8_t[2];
leysenkobe 0:6ee88b4152dc 62 this->nBytesFilled = 0;
leysenkobe 0:6ee88b4152dc 63
leysenkobe 0:6ee88b4152dc 64 this->TOT_SIZE = 7;
leysenkobe 0:6ee88b4152dc 65 this->ID[0] = ID[0];
leysenkobe 0:6ee88b4152dc 66 this->ID[1] = ID[1];
leysenkobe 0:6ee88b4152dc 67 this->CMD = CMD;
leysenkobe 0:6ee88b4152dc 68 this->CMD_SIZE = 0;
leysenkobe 0:6ee88b4152dc 69 this->CMD_DATA = NULL;
leysenkobe 0:6ee88b4152dc 70 this->RESERVED[0] = RESERVED[0];
leysenkobe 0:6ee88b4152dc 71 this->RESERVED[1] = RESERVED[1];
leysenkobe 0:6ee88b4152dc 72 }
leysenkobe 0:6ee88b4152dc 73 Packet::Packet(uint8_t ID[2],uint8_t CMD,uint8_t* data,int datasize,uint8_t RESERVED[2])
leysenkobe 0:6ee88b4152dc 74 {
leysenkobe 0:6ee88b4152dc 75 //geheugen in de heap vrij maken
leysenkobe 0:6ee88b4152dc 76 this->ID = new uint8_t[2];
leysenkobe 0:6ee88b4152dc 77 this->RESERVED = new uint8_t[2];
leysenkobe 0:6ee88b4152dc 78 this->nBytesFilled = 0;
leysenkobe 0:6ee88b4152dc 79
leysenkobe 0:6ee88b4152dc 80 this->TOT_SIZE = datasize + 7;
leysenkobe 0:6ee88b4152dc 81 this->ID[0] = ID[0];
leysenkobe 0:6ee88b4152dc 82 this->ID[1] = ID[1];
leysenkobe 0:6ee88b4152dc 83 this->CMD = CMD;
leysenkobe 0:6ee88b4152dc 84
leysenkobe 0:6ee88b4152dc 85 this->CMD_SIZE = datasize;
leysenkobe 0:6ee88b4152dc 86 this->CMD_DATA = data;
leysenkobe 0:6ee88b4152dc 87 this->RESERVED[0] = RESERVED[0];
leysenkobe 0:6ee88b4152dc 88 this->RESERVED[1] = RESERVED[1];
leysenkobe 0:6ee88b4152dc 89 }
leysenkobe 0:6ee88b4152dc 90 //this is a special constructor that makes a data packet,
leysenkobe 0:6ee88b4152dc 91 //wich can be filled later with measurement data
leysenkobe 0:6ee88b4152dc 92 Packet::Packet(uint8_t ID[2],unsigned int firstSampleNumber,uint8_t nSamples,uint8_t sampleRate ,int activeChannels,int nActiveChannels,uint8_t RESERVED[2])
leysenkobe 0:6ee88b4152dc 93 {
leysenkobe 0:6ee88b4152dc 94 //geheugen in de heap vrij maken
leysenkobe 0:6ee88b4152dc 95 this->ID = new uint8_t[2];
leysenkobe 0:6ee88b4152dc 96 this->RESERVED = new uint8_t[2];
leysenkobe 0:6ee88b4152dc 97 this->nBytesFilled = 8;
leysenkobe 0:6ee88b4152dc 98
leysenkobe 0:6ee88b4152dc 99 this->TOT_SIZE = 15 + nSamples * nActiveChannels * 2;
leysenkobe 0:6ee88b4152dc 100 this->ID[0] = ID[0];
leysenkobe 0:6ee88b4152dc 101 this->ID[1] = ID[1];
leysenkobe 0:6ee88b4152dc 102 this->CMD = PACKET_DATA;
leysenkobe 0:6ee88b4152dc 103
leysenkobe 0:6ee88b4152dc 104 this->CMD_SIZE = 8 + nSamples*nActiveChannels * 2;
leysenkobe 0:6ee88b4152dc 105 this->CMD_DATA = new uint8_t[this->CMD_SIZE];
leysenkobe 0:6ee88b4152dc 106 this->CMD_DATA[0] = (firstSampleNumber >> 24) & 0xff;
leysenkobe 0:6ee88b4152dc 107 this->CMD_DATA[1] = (firstSampleNumber >> 16) & 0xff;
leysenkobe 0:6ee88b4152dc 108 this->CMD_DATA[2] = (firstSampleNumber >> 8) & 0xff;
leysenkobe 0:6ee88b4152dc 109 this->CMD_DATA[3] = (firstSampleNumber) & 0xff;
leysenkobe 0:6ee88b4152dc 110 this->CMD_DATA[4] = nSamples;
leysenkobe 0:6ee88b4152dc 111 this->CMD_DATA[5] = sampleRate;
leysenkobe 0:6ee88b4152dc 112 this->CMD_DATA[6] = (activeChannels >> 8) & 0xff;
leysenkobe 0:6ee88b4152dc 113 this->CMD_DATA[7] = (activeChannels) & 0xff;
leysenkobe 0:6ee88b4152dc 114 for (int i = 8; i < this->CMD_SIZE; i++)
leysenkobe 0:6ee88b4152dc 115 {
leysenkobe 0:6ee88b4152dc 116 this->CMD_DATA[i] = 0;
leysenkobe 0:6ee88b4152dc 117 }
leysenkobe 0:6ee88b4152dc 118 this->RESERVED[0] = RESERVED[0];
leysenkobe 0:6ee88b4152dc 119 this->RESERVED[1] = RESERVED[1];
leysenkobe 0:6ee88b4152dc 120 }
leysenkobe 0:6ee88b4152dc 121 Packet::~Packet(void)
leysenkobe 0:6ee88b4152dc 122 {
leysenkobe 0:6ee88b4152dc 123 delete [] ID;
leysenkobe 0:6ee88b4152dc 124 delete [] CMD_DATA;
leysenkobe 0:6ee88b4152dc 125 delete [] RESERVED;
leysenkobe 0:6ee88b4152dc 126 }
leysenkobe 0:6ee88b4152dc 127
leysenkobe 0:6ee88b4152dc 128 //GETTERS
leysenkobe 0:6ee88b4152dc 129 int Packet::getTOT_SIZE(void)
leysenkobe 0:6ee88b4152dc 130 {
leysenkobe 0:6ee88b4152dc 131 return(this->TOT_SIZE);
leysenkobe 0:6ee88b4152dc 132 }
leysenkobe 0:6ee88b4152dc 133 uint8_t* Packet::getID(void)
leysenkobe 0:6ee88b4152dc 134 {
leysenkobe 0:6ee88b4152dc 135 return(this->ID);
leysenkobe 0:6ee88b4152dc 136 }
leysenkobe 0:6ee88b4152dc 137 uint8_t Packet::getCMD(void)
leysenkobe 0:6ee88b4152dc 138 {
leysenkobe 0:6ee88b4152dc 139 return(this->CMD);
leysenkobe 0:6ee88b4152dc 140 }
leysenkobe 0:6ee88b4152dc 141 int Packet::getCMD_SIZE(void)
leysenkobe 0:6ee88b4152dc 142 {
leysenkobe 0:6ee88b4152dc 143 return(this->CMD_SIZE);
leysenkobe 0:6ee88b4152dc 144 }
leysenkobe 0:6ee88b4152dc 145 uint8_t* Packet::getCMD_DATA(void)
leysenkobe 0:6ee88b4152dc 146 {
leysenkobe 0:6ee88b4152dc 147 return(this->CMD_DATA);
leysenkobe 0:6ee88b4152dc 148 }
leysenkobe 0:6ee88b4152dc 149 uint8_t* Packet::getRESERVED(void)
leysenkobe 0:6ee88b4152dc 150 {
leysenkobe 0:6ee88b4152dc 151 return(this->RESERVED);
leysenkobe 0:6ee88b4152dc 152 }
leysenkobe 0:6ee88b4152dc 153 int Packet::getBytesFilled(void)
leysenkobe 0:6ee88b4152dc 154 {
leysenkobe 0:6ee88b4152dc 155 return(this->nBytesFilled);
leysenkobe 0:6ee88b4152dc 156 }
leysenkobe 0:6ee88b4152dc 157
leysenkobe 0:6ee88b4152dc 158 //SETTERS
leysenkobe 0:6ee88b4152dc 159 void Packet::setID(uint8_t ID[2])
leysenkobe 0:6ee88b4152dc 160 {
leysenkobe 0:6ee88b4152dc 161 this->ID[0] = ID[0];
leysenkobe 0:6ee88b4152dc 162 this->ID[1] = ID[1];
leysenkobe 0:6ee88b4152dc 163 }
leysenkobe 0:6ee88b4152dc 164 void Packet::setCMD(uint8_t CMD)
leysenkobe 0:6ee88b4152dc 165 {
leysenkobe 0:6ee88b4152dc 166 this->CMD = CMD;
leysenkobe 0:6ee88b4152dc 167 }
leysenkobe 0:6ee88b4152dc 168 void Packet::setDATA(uint8_t* packetdata,int length)
leysenkobe 0:6ee88b4152dc 169 {
leysenkobe 0:6ee88b4152dc 170 delete [] CMD_DATA;
leysenkobe 0:6ee88b4152dc 171 this->CMD_DATA = new uint8_t[length];
leysenkobe 0:6ee88b4152dc 172 for (int i = 0; i < length; i++)
leysenkobe 0:6ee88b4152dc 173 {
leysenkobe 0:6ee88b4152dc 174 this->CMD_DATA[i] = packetdata[i];
leysenkobe 0:6ee88b4152dc 175 }
leysenkobe 0:6ee88b4152dc 176
leysenkobe 0:6ee88b4152dc 177 this->CMD_SIZE = length;
leysenkobe 0:6ee88b4152dc 178 this->TOT_SIZE = length+7;
leysenkobe 0:6ee88b4152dc 179 }
leysenkobe 0:6ee88b4152dc 180 void Packet::setRESERVED(uint8_t RESERVED[2])
leysenkobe 0:6ee88b4152dc 181 {
leysenkobe 0:6ee88b4152dc 182 this->RESERVED[0] = RESERVED[0];
leysenkobe 0:6ee88b4152dc 183 this->RESERVED[1] = RESERVED[1];
leysenkobe 0:6ee88b4152dc 184 }
leysenkobe 0:6ee88b4152dc 185 bool Packet::addMeasurement(Measurement *m)
leysenkobe 0:6ee88b4152dc 186 {
leysenkobe 0:6ee88b4152dc 187 if(nBytesFilled!=0)
leysenkobe 0:6ee88b4152dc 188 {
leysenkobe 0:6ee88b4152dc 189 if(nBytesFilled<this->CMD_SIZE)
leysenkobe 0:6ee88b4152dc 190 {
leysenkobe 0:6ee88b4152dc 191 //de eerste 8 kanalen bekijken..
leysenkobe 0:6ee88b4152dc 192 for(int i=7;i>=0;i--)
leysenkobe 0:6ee88b4152dc 193 {
leysenkobe 0:6ee88b4152dc 194 if(((this->CMD_DATA[6] >> i) & 0x01) == 1)
leysenkobe 0:6ee88b4152dc 195 {
leysenkobe 0:6ee88b4152dc 196 this->CMD_DATA[nBytesFilled] = (m->getPunt(7-i)>>8) & 255;
leysenkobe 0:6ee88b4152dc 197 this->nBytesFilled++;
leysenkobe 0:6ee88b4152dc 198 this->CMD_DATA[nBytesFilled] = m->getPunt(7-i) & 255;
leysenkobe 0:6ee88b4152dc 199 this->nBytesFilled++;
leysenkobe 0:6ee88b4152dc 200 }
leysenkobe 0:6ee88b4152dc 201 }
leysenkobe 0:6ee88b4152dc 202 for(int i=7;i>=0;i--)
leysenkobe 0:6ee88b4152dc 203 {
leysenkobe 0:6ee88b4152dc 204 if(((this->CMD_DATA[7] >> i) & 0x01) == 1)
leysenkobe 0:6ee88b4152dc 205 {
leysenkobe 0:6ee88b4152dc 206 this->CMD_DATA[nBytesFilled] = (m->getPunt(15-i)>>8) & 255;
leysenkobe 0:6ee88b4152dc 207 this->nBytesFilled++;
leysenkobe 0:6ee88b4152dc 208 this->CMD_DATA[nBytesFilled] = m->getPunt(15-i) & 255;
leysenkobe 0:6ee88b4152dc 209 this->nBytesFilled++;
leysenkobe 0:6ee88b4152dc 210 }
leysenkobe 0:6ee88b4152dc 211 }
leysenkobe 1:fa51edf89e71 212 //Wordt nu gedelete in meting thread!
leysenkobe 1:fa51edf89e71 213 //delete m;
leysenkobe 0:6ee88b4152dc 214 return(true);
leysenkobe 0:6ee88b4152dc 215 }
leysenkobe 0:6ee88b4152dc 216 }
leysenkobe 1:fa51edf89e71 217 //Wordt nu gedelete in meting thread!
leysenkobe 1:fa51edf89e71 218 //delete m;
leysenkobe 0:6ee88b4152dc 219 return(false);
leysenkobe 0:6ee88b4152dc 220 }