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.
Dependencies: DAQ mbed-rtos mbed
Module.cpp@2:7f7eb0cc78a4, 2014-04-30 (annotated)
- Committer:
- leysenkobe
- Date:
- Wed Apr 30 11:41:10 2014 +0000
- Revision:
- 2:7f7eb0cc78a4
- Parent:
- 1:fa51edf89e71
kbk;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
leysenkobe | 0:6ee88b4152dc | 1 | #include "Module.h" |
leysenkobe | 0:6ee88b4152dc | 2 | |
leysenkobe | 0:6ee88b4152dc | 3 | Serial pl(USBTX, USBRX); |
leysenkobe | 2:7f7eb0cc78a4 | 4 | DigitalOut led4(LED4); |
leysenkobe | 0:6ee88b4152dc | 5 | |
leysenkobe | 0:6ee88b4152dc | 6 | Module::Module() |
leysenkobe | 0:6ee88b4152dc | 7 | { |
leysenkobe | 2:7f7eb0cc78a4 | 8 | pl.baud(9600); |
leysenkobe | 0:6ee88b4152dc | 9 | |
leysenkobe | 0:6ee88b4152dc | 10 | //objects |
leysenkobe | 2:7f7eb0cc78a4 | 11 | this->daq = new DAQ(); |
leysenkobe | 0:6ee88b4152dc | 12 | this->uart = new Uart(this); |
leysenkobe | 0:6ee88b4152dc | 13 | |
leysenkobe | 0:6ee88b4152dc | 14 | //local variables |
leysenkobe | 0:6ee88b4152dc | 15 | this->ID[0] = 0; |
leysenkobe | 0:6ee88b4152dc | 16 | this->ID[1] = 1; |
leysenkobe | 0:6ee88b4152dc | 17 | |
leysenkobe | 0:6ee88b4152dc | 18 | this->IP[0] = 0xff; |
leysenkobe | 0:6ee88b4152dc | 19 | this->IP[1] = 0xff; |
leysenkobe | 0:6ee88b4152dc | 20 | this->IP[2] = 0xff; |
leysenkobe | 0:6ee88b4152dc | 21 | this->IP[3] = 0xff; |
leysenkobe | 0:6ee88b4152dc | 22 | |
leysenkobe | 0:6ee88b4152dc | 23 | this->version[0] = 0; |
leysenkobe | 0:6ee88b4152dc | 24 | this->version[1] = 0; |
leysenkobe | 0:6ee88b4152dc | 25 | |
leysenkobe | 0:6ee88b4152dc | 26 | this->enableData= false; |
leysenkobe | 1:fa51edf89e71 | 27 | this->packageSize = 100; |
leysenkobe | 0:6ee88b4152dc | 28 | this->sampleNumber = 0; |
leysenkobe | 0:6ee88b4152dc | 29 | this->sampleRate = 250; //default waarde - let op, digitale filters moeten herberekend worden bij het veranderen van de sampleRate |
leysenkobe | 0:6ee88b4152dc | 30 | this->dataPacket = NULL; |
leysenkobe | 0:6ee88b4152dc | 31 | |
leysenkobe | 0:6ee88b4152dc | 32 | this->wifiEnabled = false; |
leysenkobe | 0:6ee88b4152dc | 33 | this->creatDataPacket(); |
leysenkobe | 0:6ee88b4152dc | 34 | } |
leysenkobe | 0:6ee88b4152dc | 35 | Module::~Module(void) |
leysenkobe | 0:6ee88b4152dc | 36 | { |
leysenkobe | 0:6ee88b4152dc | 37 | delete uart; |
leysenkobe | 0:6ee88b4152dc | 38 | delete daq; |
leysenkobe | 0:6ee88b4152dc | 39 | } |
leysenkobe | 0:6ee88b4152dc | 40 | |
leysenkobe | 0:6ee88b4152dc | 41 | //main loop |
leysenkobe | 0:6ee88b4152dc | 42 | void Module::mainLoop(void) |
leysenkobe | 0:6ee88b4152dc | 43 | { |
leysenkobe | 0:6ee88b4152dc | 44 | this->sendAlivePacket(); |
leysenkobe | 0:6ee88b4152dc | 45 | } |
leysenkobe | 0:6ee88b4152dc | 46 | |
leysenkobe | 0:6ee88b4152dc | 47 | void Module::sendAlivePacket() |
leysenkobe | 0:6ee88b4152dc | 48 | { |
leysenkobe | 0:6ee88b4152dc | 49 | uint8_t *reserved = new uint8_t[2]; |
leysenkobe | 0:6ee88b4152dc | 50 | reserved[0] = 0x00; |
leysenkobe | 0:6ee88b4152dc | 51 | reserved[1] = 0x00; |
leysenkobe | 0:6ee88b4152dc | 52 | |
leysenkobe | 0:6ee88b4152dc | 53 | Packet *alive = new Packet(this->ID, PACKET_ALIVE, reserved); |
leysenkobe | 0:6ee88b4152dc | 54 | this->sendPacket(alive); |
leysenkobe | 0:6ee88b4152dc | 55 | } |
leysenkobe | 0:6ee88b4152dc | 56 | |
leysenkobe | 0:6ee88b4152dc | 57 | void Module::meting_thread() |
leysenkobe | 0:6ee88b4152dc | 58 | { |
leysenkobe | 2:7f7eb0cc78a4 | 59 | if(enableData && !this->daq->ChannelsDisabled()) |
leysenkobe | 0:6ee88b4152dc | 60 | { |
leysenkobe | 2:7f7eb0cc78a4 | 61 | led4 = 1; |
leysenkobe | 1:fa51edf89e71 | 62 | Measurement *m = this->daq->measure(); |
leysenkobe | 1:fa51edf89e71 | 63 | if(this->dataPacket->addMeasurement(m)) |
leysenkobe | 1:fa51edf89e71 | 64 | { |
leysenkobe | 1:fa51edf89e71 | 65 | this->sampleNumber++; |
leysenkobe | 1:fa51edf89e71 | 66 | } |
leysenkobe | 1:fa51edf89e71 | 67 | else |
leysenkobe | 1:fa51edf89e71 | 68 | { |
leysenkobe | 1:fa51edf89e71 | 69 | //printf("false \n"); |
leysenkobe | 1:fa51edf89e71 | 70 | this->sendPacket(this->dataPacket); |
leysenkobe | 1:fa51edf89e71 | 71 | this->creatDataPacket(); |
leysenkobe | 1:fa51edf89e71 | 72 | |
leysenkobe | 1:fa51edf89e71 | 73 | this->dataPacket->addMeasurement(m); //hier niet meer controleren of het lukt? |
leysenkobe | 1:fa51edf89e71 | 74 | this->sampleNumber++; |
leysenkobe | 1:fa51edf89e71 | 75 | } |
leysenkobe | 1:fa51edf89e71 | 76 | delete m; |
leysenkobe | 0:6ee88b4152dc | 77 | } |
leysenkobe | 2:7f7eb0cc78a4 | 78 | else |
leysenkobe | 2:7f7eb0cc78a4 | 79 | { |
leysenkobe | 2:7f7eb0cc78a4 | 80 | led4 = 0; |
leysenkobe | 2:7f7eb0cc78a4 | 81 | } |
leysenkobe | 0:6ee88b4152dc | 82 | } |
leysenkobe | 0:6ee88b4152dc | 83 | |
leysenkobe | 0:6ee88b4152dc | 84 | //PACKET WORKER |
leysenkobe | 0:6ee88b4152dc | 85 | void Module::packetWorker(Packet *p) |
leysenkobe | 0:6ee88b4152dc | 86 | { |
leysenkobe | 0:6ee88b4152dc | 87 | switch(p->getCMD()) |
leysenkobe | 0:6ee88b4152dc | 88 | { |
leysenkobe | 0:6ee88b4152dc | 89 | //S2C packets |
leysenkobe | 2:7f7eb0cc78a4 | 90 | case PACKET_ACK : this->sendPacket(p); break; |
leysenkobe | 2:7f7eb0cc78a4 | 91 | case PACKET_NACK : this->sendPacket(p); break; |
leysenkobe | 2:7f7eb0cc78a4 | 92 | case PACKET_ERROR : this->sendPacket(p); break; |
leysenkobe | 2:7f7eb0cc78a4 | 93 | case PACKET_ALIVE : this->sendPacket(p); break; |
leysenkobe | 2:7f7eb0cc78a4 | 94 | case PACKET_DATA : this->sendPacket(p); break; |
leysenkobe | 2:7f7eb0cc78a4 | 95 | case PACKET_GET_IP_REPLY : this->sendPacket(p); break; |
leysenkobe | 0:6ee88b4152dc | 96 | |
leysenkobe | 0:6ee88b4152dc | 97 | //C2S packets |
leysenkobe | 0:6ee88b4152dc | 98 | case PACKET_INIT : |
leysenkobe | 2:7f7eb0cc78a4 | 99 | this->sendPacket(p); |
leysenkobe | 0:6ee88b4152dc | 100 | this->HandleInit(p); |
leysenkobe | 0:6ee88b4152dc | 101 | break; |
leysenkobe | 0:6ee88b4152dc | 102 | case PACKET_ENABLE_DATA : |
leysenkobe | 2:7f7eb0cc78a4 | 103 | this->sendPacket(p); |
leysenkobe | 0:6ee88b4152dc | 104 | this->HandleEnableData(p); |
leysenkobe | 0:6ee88b4152dc | 105 | break; |
leysenkobe | 0:6ee88b4152dc | 106 | case PACKET_CHANGE_IP : |
leysenkobe | 2:7f7eb0cc78a4 | 107 | this->sendPacket(p); |
leysenkobe | 0:6ee88b4152dc | 108 | this->HandleChangeIP(p); |
leysenkobe | 0:6ee88b4152dc | 109 | break; |
leysenkobe | 0:6ee88b4152dc | 110 | case PACKET_REMOVE_IP : |
leysenkobe | 2:7f7eb0cc78a4 | 111 | this->sendPacket(p); |
leysenkobe | 0:6ee88b4152dc | 112 | this->removeIP(); |
leysenkobe | 0:6ee88b4152dc | 113 | break; |
leysenkobe | 0:6ee88b4152dc | 114 | case PACKET_GET_IP : |
leysenkobe | 2:7f7eb0cc78a4 | 115 | this->sendPacket(p); |
leysenkobe | 0:6ee88b4152dc | 116 | this->IpReply(); |
leysenkobe | 0:6ee88b4152dc | 117 | break; |
leysenkobe | 0:6ee88b4152dc | 118 | case PACKET_VERSION : |
leysenkobe | 2:7f7eb0cc78a4 | 119 | this->sendPacket(p); |
leysenkobe | 0:6ee88b4152dc | 120 | this->VersionReply(); |
leysenkobe | 0:6ee88b4152dc | 121 | break; |
leysenkobe | 0:6ee88b4152dc | 122 | //case PACKET_VERSION_REPLY : --> zelf versturen! |
leysenkobe | 0:6ee88b4152dc | 123 | // break; |
leysenkobe | 0:6ee88b4152dc | 124 | case PACKET_SET_PACKAGE_SIZE : |
leysenkobe | 2:7f7eb0cc78a4 | 125 | this->sendPacket(p); |
leysenkobe | 0:6ee88b4152dc | 126 | HandleSetPackageSize(p); |
leysenkobe | 0:6ee88b4152dc | 127 | break; |
leysenkobe | 0:6ee88b4152dc | 128 | case PACKET_GET_SETTINGS : |
leysenkobe | 2:7f7eb0cc78a4 | 129 | this->sendPacket(p); |
leysenkobe | 0:6ee88b4152dc | 130 | this->SettingsReply(); |
leysenkobe | 0:6ee88b4152dc | 131 | break; |
leysenkobe | 0:6ee88b4152dc | 132 | //case PACKET_GET_SETTINGS_REPLY : --> moet verstuurd worden! |
leysenkobe | 0:6ee88b4152dc | 133 | // break; |
leysenkobe | 0:6ee88b4152dc | 134 | case PACKET_SET_ID : |
leysenkobe | 2:7f7eb0cc78a4 | 135 | this->sendPacket(p); |
leysenkobe | 0:6ee88b4152dc | 136 | uint8_t *cmdData = p->getCMD_DATA(); |
leysenkobe | 0:6ee88b4152dc | 137 | this->ID[0] = cmdData[0]; |
leysenkobe | 0:6ee88b4152dc | 138 | this->ID[1] = cmdData[1]; |
leysenkobe | 0:6ee88b4152dc | 139 | delete cmdData; |
leysenkobe | 0:6ee88b4152dc | 140 | this->Acknowledge(); |
leysenkobe | 0:6ee88b4152dc | 141 | break; |
leysenkobe | 0:6ee88b4152dc | 142 | case PACKET_TEST_MODE : |
leysenkobe | 2:7f7eb0cc78a4 | 143 | this->sendPacket(p); |
leysenkobe | 0:6ee88b4152dc | 144 | this->uart->send(p); //uitsturen via beide interfaces |
leysenkobe | 0:6ee88b4152dc | 145 | //this->wifi->send(p); |
leysenkobe | 0:6ee88b4152dc | 146 | break; |
leysenkobe | 0:6ee88b4152dc | 147 | case PACKET_LED_TEST_MODE : |
leysenkobe | 2:7f7eb0cc78a4 | 148 | this->sendPacket(p); |
leysenkobe | 0:6ee88b4152dc | 149 | uint8_t *ledData = p->getCMD_DATA(); |
leysenkobe | 0:6ee88b4152dc | 150 | uint8_t ledInfo = ledData[0]; |
leysenkobe | 0:6ee88b4152dc | 151 | this->LedTest(ledInfo); |
leysenkobe | 0:6ee88b4152dc | 152 | delete ledData; |
leysenkobe | 0:6ee88b4152dc | 153 | break; |
leysenkobe | 0:6ee88b4152dc | 154 | default: |
leysenkobe | 0:6ee88b4152dc | 155 | /// packet dat ik binnen krijg !!!!! |
leysenkobe | 2:7f7eb0cc78a4 | 156 | pl.printf("erorrrrrrr"); |
leysenkobe | 0:6ee88b4152dc | 157 | break; |
leysenkobe | 2:7f7eb0cc78a4 | 158 | } |
leysenkobe | 0:6ee88b4152dc | 159 | } |
leysenkobe | 0:6ee88b4152dc | 160 | |
leysenkobe | 0:6ee88b4152dc | 161 | void Module::sendPacket(Packet *p) |
leysenkobe | 0:6ee88b4152dc | 162 | { |
leysenkobe | 0:6ee88b4152dc | 163 | if(wifiEnabled) |
leysenkobe | 0:6ee88b4152dc | 164 | { |
leysenkobe | 0:6ee88b4152dc | 165 | //this->wifi->send(p); |
leysenkobe | 0:6ee88b4152dc | 166 | } |
leysenkobe | 0:6ee88b4152dc | 167 | else |
leysenkobe | 0:6ee88b4152dc | 168 | { |
leysenkobe | 0:6ee88b4152dc | 169 | this->uart->send(p); |
leysenkobe | 0:6ee88b4152dc | 170 | } |
leysenkobe | 0:6ee88b4152dc | 171 | } |
leysenkobe | 0:6ee88b4152dc | 172 | void Module::creatDataPacket() |
leysenkobe | 0:6ee88b4152dc | 173 | { |
leysenkobe | 0:6ee88b4152dc | 174 | //printf("MAAK PACKET !! \n"); |
leysenkobe | 0:6ee88b4152dc | 175 | uint8_t *reserved = new uint8_t[2]; |
leysenkobe | 0:6ee88b4152dc | 176 | reserved[0] = 0x00; |
leysenkobe | 0:6ee88b4152dc | 177 | reserved[1] = 0x00; |
leysenkobe | 0:6ee88b4152dc | 178 | int activeChannels = 0; //Het aantal actieve kanalen |
leysenkobe | 0:6ee88b4152dc | 179 | int nActiveChannels = 0; //Voor te versturen in het datapakket (zie verder) |
leysenkobe | 0:6ee88b4152dc | 180 | |
leysenkobe | 0:6ee88b4152dc | 181 | for(int i = 0; i < 16; i++) |
leysenkobe | 0:6ee88b4152dc | 182 | { |
leysenkobe | 0:6ee88b4152dc | 183 | if(this->daq->ChannelEnabled(i) == true) |
leysenkobe | 0:6ee88b4152dc | 184 | { |
leysenkobe | 0:6ee88b4152dc | 185 | nActiveChannels++; |
leysenkobe | 0:6ee88b4152dc | 186 | activeChannels |= 1 << (15 - i); |
leysenkobe | 0:6ee88b4152dc | 187 | } |
leysenkobe | 0:6ee88b4152dc | 188 | } |
leysenkobe | 0:6ee88b4152dc | 189 | this->dataPacket = new Packet(this->ID,this->sampleNumber,this->packageSize,this->sampleRate,activeChannels,nActiveChannels,reserved); |
leysenkobe | 0:6ee88b4152dc | 190 | delete [] reserved; |
leysenkobe | 0:6ee88b4152dc | 191 | } |
leysenkobe | 0:6ee88b4152dc | 192 | void Module::HandleInit(Packet *p) |
leysenkobe | 0:6ee88b4152dc | 193 | { |
leysenkobe | 0:6ee88b4152dc | 194 | uint8_t cmdSize = p->getCMD_SIZE(); |
leysenkobe | 0:6ee88b4152dc | 195 | /* |
leysenkobe | 0:6ee88b4152dc | 196 | //eventueel controle nog uitvoeren.. |
leysenkobe | 0:6ee88b4152dc | 197 | if(cmdSize != 33){ |
leysenkobe | 0:6ee88b4152dc | 198 | Packet *error = new Packet(); |
leysenkobe | 0:6ee88b4152dc | 199 | this->sendPacket(error); |
leysenkobe | 0:6ee88b4152dc | 200 | delete packet; |
leysenkobe | 0:6ee88b4152dc | 201 | return; |
leysenkobe | 0:6ee88b4152dc | 202 | }*/ |
leysenkobe | 0:6ee88b4152dc | 203 | uint8_t *cmdData = p->getCMD_DATA(); |
leysenkobe | 0:6ee88b4152dc | 204 | uint8_t sampleRate = cmdData[0]; |
leysenkobe | 0:6ee88b4152dc | 205 | |
leysenkobe | 0:6ee88b4152dc | 206 | uint8_t channelGainByte; |
leysenkobe | 0:6ee88b4152dc | 207 | uint8_t channelEnabledByte; |
leysenkobe | 0:6ee88b4152dc | 208 | |
leysenkobe | 0:6ee88b4152dc | 209 | this->sampleRate = sampleRate; |
leysenkobe | 0:6ee88b4152dc | 210 | |
leysenkobe | 0:6ee88b4152dc | 211 | for(int i = 0; i < 16; i++){ |
leysenkobe | 0:6ee88b4152dc | 212 | channelGainByte = cmdData[1 + i * 2]; |
leysenkobe | 0:6ee88b4152dc | 213 | channelEnabledByte = cmdData[1 + i * 2 + 1]; |
leysenkobe | 0:6ee88b4152dc | 214 | switch(channelGainByte){ |
leysenkobe | 0:6ee88b4152dc | 215 | default: //0x00 |
leysenkobe | 0:6ee88b4152dc | 216 | this->daq->setChannelGain(i, 1); |
leysenkobe | 0:6ee88b4152dc | 217 | break; |
leysenkobe | 0:6ee88b4152dc | 218 | case 0x01: |
leysenkobe | 0:6ee88b4152dc | 219 | this->daq->setChannelGain(i, 10); |
leysenkobe | 0:6ee88b4152dc | 220 | break; |
leysenkobe | 0:6ee88b4152dc | 221 | case 0x02: |
leysenkobe | 0:6ee88b4152dc | 222 | this->daq->setChannelGain(i, 100); |
leysenkobe | 0:6ee88b4152dc | 223 | break; |
leysenkobe | 0:6ee88b4152dc | 224 | case 0x03: |
leysenkobe | 0:6ee88b4152dc | 225 | this->daq->setChannelGain(i, 1000); |
leysenkobe | 0:6ee88b4152dc | 226 | break; |
leysenkobe | 0:6ee88b4152dc | 227 | } |
leysenkobe | 0:6ee88b4152dc | 228 | |
leysenkobe | 0:6ee88b4152dc | 229 | if(channelEnabledByte == 0x01){ //enabled |
leysenkobe | 0:6ee88b4152dc | 230 | this->daq->enableChannel(i); |
leysenkobe | 0:6ee88b4152dc | 231 | } |
leysenkobe | 0:6ee88b4152dc | 232 | else{ //disabled |
leysenkobe | 0:6ee88b4152dc | 233 | this->daq->disableChannel(i); |
leysenkobe | 0:6ee88b4152dc | 234 | } |
leysenkobe | 0:6ee88b4152dc | 235 | } |
leysenkobe | 0:6ee88b4152dc | 236 | |
leysenkobe | 0:6ee88b4152dc | 237 | delete cmdData; |
leysenkobe | 0:6ee88b4152dc | 238 | } |
leysenkobe | 0:6ee88b4152dc | 239 | |
leysenkobe | 0:6ee88b4152dc | 240 | void Module::HandleEnableData(Packet *p){ |
leysenkobe | 0:6ee88b4152dc | 241 | uint8_t *data = p->getCMD_DATA(); |
leysenkobe | 2:7f7eb0cc78a4 | 242 | if(data[0] == 0x01) |
leysenkobe | 2:7f7eb0cc78a4 | 243 | { |
leysenkobe | 0:6ee88b4152dc | 244 | this->EnableData(); |
leysenkobe | 0:6ee88b4152dc | 245 | } |
leysenkobe | 2:7f7eb0cc78a4 | 246 | else |
leysenkobe | 2:7f7eb0cc78a4 | 247 | { |
leysenkobe | 0:6ee88b4152dc | 248 | this->DisableData(); |
leysenkobe | 2:7f7eb0cc78a4 | 249 | } |
leysenkobe | 0:6ee88b4152dc | 250 | } |
leysenkobe | 0:6ee88b4152dc | 251 | |
leysenkobe | 0:6ee88b4152dc | 252 | void Module::HandleSetPackageSize(Packet *p){ |
leysenkobe | 0:6ee88b4152dc | 253 | uint8_t *data = p->getCMD_DATA(); |
leysenkobe | 0:6ee88b4152dc | 254 | this->setPackageSize(data[0]); //data[0] = packageSize! |
leysenkobe | 0:6ee88b4152dc | 255 | delete data; |
leysenkobe | 0:6ee88b4152dc | 256 | } |
leysenkobe | 0:6ee88b4152dc | 257 | |
leysenkobe | 0:6ee88b4152dc | 258 | void Module::HandleChangeIP(Packet *p){ |
leysenkobe | 0:6ee88b4152dc | 259 | int cmdSize = p->getCMD_SIZE(); |
leysenkobe | 0:6ee88b4152dc | 260 | |
leysenkobe | 0:6ee88b4152dc | 261 | if(cmdSize != 4){ |
leysenkobe | 0:6ee88b4152dc | 262 | Packet *errorPacket = new Packet(this->ID); |
leysenkobe | 0:6ee88b4152dc | 263 | this->sendPacket(errorPacket); |
leysenkobe | 0:6ee88b4152dc | 264 | delete errorPacket; |
leysenkobe | 0:6ee88b4152dc | 265 | return; |
leysenkobe | 0:6ee88b4152dc | 266 | } |
leysenkobe | 0:6ee88b4152dc | 267 | |
leysenkobe | 0:6ee88b4152dc | 268 | uint8_t* data = p->getCMD_DATA(); |
leysenkobe | 0:6ee88b4152dc | 269 | this->setIP(data); |
leysenkobe | 0:6ee88b4152dc | 270 | delete data; |
leysenkobe | 0:6ee88b4152dc | 271 | } |
leysenkobe | 0:6ee88b4152dc | 272 | |
leysenkobe | 0:6ee88b4152dc | 273 | void Module::IpReply(){ |
leysenkobe | 0:6ee88b4152dc | 274 | uint8_t cmdDataLengte = 4; |
leysenkobe | 0:6ee88b4152dc | 275 | uint8_t *cmdData = new uint8_t[cmdDataLengte]; |
leysenkobe | 0:6ee88b4152dc | 276 | uint8_t *reserved = new uint8_t[2]; |
leysenkobe | 0:6ee88b4152dc | 277 | |
leysenkobe | 0:6ee88b4152dc | 278 | cmdData[0] = this->IP[0]; |
leysenkobe | 0:6ee88b4152dc | 279 | cmdData[1] = this->IP[1]; |
leysenkobe | 0:6ee88b4152dc | 280 | cmdData[2] = this->IP[2]; |
leysenkobe | 0:6ee88b4152dc | 281 | cmdData[3] = this->IP[3]; |
leysenkobe | 0:6ee88b4152dc | 282 | |
leysenkobe | 0:6ee88b4152dc | 283 | reserved[0] = 0x00; |
leysenkobe | 0:6ee88b4152dc | 284 | reserved[1] = 0x00; |
leysenkobe | 0:6ee88b4152dc | 285 | |
leysenkobe | 0:6ee88b4152dc | 286 | Packet *ipInfoPacket = new Packet(this->ID, PACKET_GET_IP_REPLY, cmdData, cmdDataLengte, reserved); |
leysenkobe | 0:6ee88b4152dc | 287 | this->sendPacket(ipInfoPacket); |
leysenkobe | 0:6ee88b4152dc | 288 | |
leysenkobe | 0:6ee88b4152dc | 289 | delete ipInfoPacket; |
leysenkobe | 0:6ee88b4152dc | 290 | delete reserved; |
leysenkobe | 0:6ee88b4152dc | 291 | delete cmdData; |
leysenkobe | 0:6ee88b4152dc | 292 | } |
leysenkobe | 0:6ee88b4152dc | 293 | |
leysenkobe | 0:6ee88b4152dc | 294 | void Module::VersionReply(){ |
leysenkobe | 0:6ee88b4152dc | 295 | uint8_t cmdDataLengte = 2; |
leysenkobe | 0:6ee88b4152dc | 296 | uint8_t *cmdData = new uint8_t[cmdDataLengte]; |
leysenkobe | 0:6ee88b4152dc | 297 | uint8_t *reserved = new uint8_t[2]; |
leysenkobe | 0:6ee88b4152dc | 298 | |
leysenkobe | 0:6ee88b4152dc | 299 | cmdData[0] = this->version[0]; |
leysenkobe | 0:6ee88b4152dc | 300 | cmdData[1] = this->version[1]; |
leysenkobe | 0:6ee88b4152dc | 301 | |
leysenkobe | 0:6ee88b4152dc | 302 | reserved[0] = 0x00; |
leysenkobe | 0:6ee88b4152dc | 303 | reserved[1] = 0x00; |
leysenkobe | 0:6ee88b4152dc | 304 | |
leysenkobe | 0:6ee88b4152dc | 305 | Packet *versionPacket = new Packet(this->ID, PACKET_VERSION_REPLY, cmdData, cmdDataLengte, reserved); |
leysenkobe | 0:6ee88b4152dc | 306 | this->sendPacket(versionPacket); |
leysenkobe | 0:6ee88b4152dc | 307 | |
leysenkobe | 0:6ee88b4152dc | 308 | delete reserved; |
leysenkobe | 0:6ee88b4152dc | 309 | delete versionPacket; |
leysenkobe | 0:6ee88b4152dc | 310 | delete cmdData; |
leysenkobe | 0:6ee88b4152dc | 311 | } |
leysenkobe | 0:6ee88b4152dc | 312 | |
leysenkobe | 0:6ee88b4152dc | 313 | void Module::SettingsReply(){ |
leysenkobe | 0:6ee88b4152dc | 314 | uint8_t cmdDataLengte = 41; |
leysenkobe | 0:6ee88b4152dc | 315 | uint8_t *cmdData = new uint8_t[cmdDataLengte]; |
leysenkobe | 0:6ee88b4152dc | 316 | uint8_t *reserved = new uint8_t[2]; |
leysenkobe | 0:6ee88b4152dc | 317 | |
leysenkobe | 0:6ee88b4152dc | 318 | cmdData[0] = this->IP[0]; |
leysenkobe | 0:6ee88b4152dc | 319 | cmdData[1] = this->IP[1]; |
leysenkobe | 0:6ee88b4152dc | 320 | cmdData[2] = this->IP[2]; |
leysenkobe | 0:6ee88b4152dc | 321 | cmdData[3] = this->IP[3]; |
leysenkobe | 0:6ee88b4152dc | 322 | |
leysenkobe | 0:6ee88b4152dc | 323 | if(enableData){ |
leysenkobe | 0:6ee88b4152dc | 324 | cmdData[4] = 0x01; |
leysenkobe | 0:6ee88b4152dc | 325 | } |
leysenkobe | 0:6ee88b4152dc | 326 | else{ |
leysenkobe | 0:6ee88b4152dc | 327 | cmdData[4] = 0x00; |
leysenkobe | 0:6ee88b4152dc | 328 | } |
leysenkobe | 0:6ee88b4152dc | 329 | |
leysenkobe | 0:6ee88b4152dc | 330 | cmdData[5] = this->version[0]; |
leysenkobe | 0:6ee88b4152dc | 331 | cmdData[6] = this->version[1]; |
leysenkobe | 0:6ee88b4152dc | 332 | |
leysenkobe | 0:6ee88b4152dc | 333 | for(int i = 0; i < 16; i++){ |
leysenkobe | 0:6ee88b4152dc | 334 | cmdData[7 + i * 2] = this->daq->getChannelGain(i); |
leysenkobe | 0:6ee88b4152dc | 335 | |
leysenkobe | 0:6ee88b4152dc | 336 | if(this->daq->ChannelEnabled(i) == true){ |
leysenkobe | 0:6ee88b4152dc | 337 | cmdData[7 + i * 2 + 1] = 0x01; |
leysenkobe | 0:6ee88b4152dc | 338 | } |
leysenkobe | 0:6ee88b4152dc | 339 | else{ |
leysenkobe | 0:6ee88b4152dc | 340 | cmdData[7 + i * 2 + 1] = 0x00; |
leysenkobe | 0:6ee88b4152dc | 341 | } |
leysenkobe | 0:6ee88b4152dc | 342 | } |
leysenkobe | 0:6ee88b4152dc | 343 | |
leysenkobe | 0:6ee88b4152dc | 344 | cmdData[39] = this->sampleRate; |
leysenkobe | 0:6ee88b4152dc | 345 | cmdData[40] = this->packageSize; |
leysenkobe | 0:6ee88b4152dc | 346 | |
leysenkobe | 0:6ee88b4152dc | 347 | reserved[0] = 0x00; |
leysenkobe | 0:6ee88b4152dc | 348 | reserved[1] = 0x00; |
leysenkobe | 0:6ee88b4152dc | 349 | |
leysenkobe | 0:6ee88b4152dc | 350 | Packet *settingsPacket = new Packet(this->ID, PACKET_GET_SETTINGS_REPLY, cmdData, cmdDataLengte, reserved); |
leysenkobe | 0:6ee88b4152dc | 351 | this->sendPacket(settingsPacket); |
leysenkobe | 0:6ee88b4152dc | 352 | |
leysenkobe | 0:6ee88b4152dc | 353 | delete settingsPacket; |
leysenkobe | 0:6ee88b4152dc | 354 | delete cmdData; |
leysenkobe | 0:6ee88b4152dc | 355 | delete reserved; |
leysenkobe | 0:6ee88b4152dc | 356 | } |
leysenkobe | 0:6ee88b4152dc | 357 | |
leysenkobe | 0:6ee88b4152dc | 358 | void Module::LedTest(uint8_t ledInfo){ |
leysenkobe | 0:6ee88b4152dc | 359 | for(int i = 4; i < 8; i++){ |
leysenkobe | 0:6ee88b4152dc | 360 | if(((ledInfo >> i) & 1) == 1){ //LED moet aan! |
leysenkobe | 0:6ee88b4152dc | 361 | switch(i){ |
leysenkobe | 0:6ee88b4152dc | 362 | case 4: |
leysenkobe | 0:6ee88b4152dc | 363 | //LED0 aanzetten |
leysenkobe | 0:6ee88b4152dc | 364 | |
leysenkobe | 0:6ee88b4152dc | 365 | break; |
leysenkobe | 0:6ee88b4152dc | 366 | case 5: |
leysenkobe | 0:6ee88b4152dc | 367 | //LED1 aanzetten |
leysenkobe | 0:6ee88b4152dc | 368 | |
leysenkobe | 0:6ee88b4152dc | 369 | break; |
leysenkobe | 0:6ee88b4152dc | 370 | case 6: |
leysenkobe | 0:6ee88b4152dc | 371 | //LED2 aanzetten |
leysenkobe | 0:6ee88b4152dc | 372 | |
leysenkobe | 0:6ee88b4152dc | 373 | break; |
leysenkobe | 0:6ee88b4152dc | 374 | case 7: |
leysenkobe | 0:6ee88b4152dc | 375 | //LED3 aanzetten |
leysenkobe | 0:6ee88b4152dc | 376 | |
leysenkobe | 0:6ee88b4152dc | 377 | break; |
leysenkobe | 0:6ee88b4152dc | 378 | default: |
leysenkobe | 0:6ee88b4152dc | 379 | break; |
leysenkobe | 0:6ee88b4152dc | 380 | } |
leysenkobe | 0:6ee88b4152dc | 381 | } |
leysenkobe | 0:6ee88b4152dc | 382 | } |
leysenkobe | 0:6ee88b4152dc | 383 | } |
leysenkobe | 0:6ee88b4152dc | 384 | |
leysenkobe | 0:6ee88b4152dc | 385 | void Module::Acknowledge(uint8_t RESERVED[2]) |
leysenkobe | 0:6ee88b4152dc | 386 | { |
leysenkobe | 0:6ee88b4152dc | 387 | Packet *ack = new Packet(this->ID, PACKET_ACK, RESERVED); |
leysenkobe | 0:6ee88b4152dc | 388 | this->sendPacket(ack); |
leysenkobe | 0:6ee88b4152dc | 389 | delete ack; |
leysenkobe | 0:6ee88b4152dc | 390 | //delete reserved; //moet weggedaan worden waar deze array aangemaakt wordt! |
leysenkobe | 0:6ee88b4152dc | 391 | } |
leysenkobe | 0:6ee88b4152dc | 392 | |
leysenkobe | 0:6ee88b4152dc | 393 | void Module::Acknowledge() |
leysenkobe | 0:6ee88b4152dc | 394 | { |
leysenkobe | 0:6ee88b4152dc | 395 | uint8_t *reserved = new uint8_t[2]; |
leysenkobe | 0:6ee88b4152dc | 396 | reserved[0] = 0x00; |
leysenkobe | 0:6ee88b4152dc | 397 | reserved[1] = 0x00; |
leysenkobe | 0:6ee88b4152dc | 398 | |
leysenkobe | 0:6ee88b4152dc | 399 | Packet *ack = new Packet(this->ID, PACKET_ACK, reserved); |
leysenkobe | 0:6ee88b4152dc | 400 | this->sendPacket(ack); |
leysenkobe | 0:6ee88b4152dc | 401 | |
leysenkobe | 0:6ee88b4152dc | 402 | delete ack; |
leysenkobe | 0:6ee88b4152dc | 403 | delete reserved; |
leysenkobe | 0:6ee88b4152dc | 404 | } |
leysenkobe | 0:6ee88b4152dc | 405 | |
leysenkobe | 0:6ee88b4152dc | 406 | |
leysenkobe | 0:6ee88b4152dc | 407 | //GETTERS |
leysenkobe | 0:6ee88b4152dc | 408 | Uart* Module::getUart(void) |
leysenkobe | 0:6ee88b4152dc | 409 | { |
leysenkobe | 0:6ee88b4152dc | 410 | return(this->uart); |
leysenkobe | 0:6ee88b4152dc | 411 | } |
leysenkobe | 0:6ee88b4152dc | 412 | uint8_t* Module::getID(void) |
leysenkobe | 0:6ee88b4152dc | 413 | { |
leysenkobe | 0:6ee88b4152dc | 414 | return(this->ID); |
leysenkobe | 0:6ee88b4152dc | 415 | } |
leysenkobe | 0:6ee88b4152dc | 416 | uint8_t* Module::getIP(void) |
leysenkobe | 0:6ee88b4152dc | 417 | { |
leysenkobe | 0:6ee88b4152dc | 418 | return(this->IP); |
leysenkobe | 0:6ee88b4152dc | 419 | } |
leysenkobe | 0:6ee88b4152dc | 420 | uint8_t* Module::getVersion(void) |
leysenkobe | 0:6ee88b4152dc | 421 | { |
leysenkobe | 0:6ee88b4152dc | 422 | return(this->version); |
leysenkobe | 0:6ee88b4152dc | 423 | } |
leysenkobe | 0:6ee88b4152dc | 424 | bool Module::dataEnabled(void) |
leysenkobe | 0:6ee88b4152dc | 425 | { |
leysenkobe | 0:6ee88b4152dc | 426 | return(this->enableData); |
leysenkobe | 0:6ee88b4152dc | 427 | } |
leysenkobe | 0:6ee88b4152dc | 428 | uint8_t Module::getPackageSize(void) |
leysenkobe | 0:6ee88b4152dc | 429 | { |
leysenkobe | 0:6ee88b4152dc | 430 | return(this->packageSize); |
leysenkobe | 0:6ee88b4152dc | 431 | } |
leysenkobe | 0:6ee88b4152dc | 432 | unsigned int Module::getSampleNumber(void) |
leysenkobe | 0:6ee88b4152dc | 433 | { |
leysenkobe | 0:6ee88b4152dc | 434 | return(this->sampleNumber); |
leysenkobe | 0:6ee88b4152dc | 435 | } |
leysenkobe | 0:6ee88b4152dc | 436 | uint8_t Module::getSampleRate(void) |
leysenkobe | 0:6ee88b4152dc | 437 | { |
leysenkobe | 0:6ee88b4152dc | 438 | return(this->sampleRate); |
leysenkobe | 0:6ee88b4152dc | 439 | } |
leysenkobe | 0:6ee88b4152dc | 440 | |
leysenkobe | 0:6ee88b4152dc | 441 | //SETTERS |
leysenkobe | 0:6ee88b4152dc | 442 | void Module::setID(uint8_t ID[2]) |
leysenkobe | 0:6ee88b4152dc | 443 | { |
leysenkobe | 0:6ee88b4152dc | 444 | this->ID[0] = ID[0]; |
leysenkobe | 0:6ee88b4152dc | 445 | this->ID[1] = ID[1]; |
leysenkobe | 0:6ee88b4152dc | 446 | } |
leysenkobe | 0:6ee88b4152dc | 447 | void Module::setIP(uint8_t IP[4]) |
leysenkobe | 0:6ee88b4152dc | 448 | { |
leysenkobe | 0:6ee88b4152dc | 449 | this->IP[0] = IP[0]; |
leysenkobe | 0:6ee88b4152dc | 450 | this->IP[1] = IP[1]; |
leysenkobe | 0:6ee88b4152dc | 451 | this->IP[2] = IP[2]; |
leysenkobe | 0:6ee88b4152dc | 452 | this->IP[3] = IP[3]; |
leysenkobe | 0:6ee88b4152dc | 453 | } |
leysenkobe | 0:6ee88b4152dc | 454 | void Module::removeIP(){ |
leysenkobe | 0:6ee88b4152dc | 455 | this->IP[0] = 0xff; |
leysenkobe | 0:6ee88b4152dc | 456 | this->IP[1] = 0xff; |
leysenkobe | 0:6ee88b4152dc | 457 | this->IP[2] = 0xff; |
leysenkobe | 0:6ee88b4152dc | 458 | this->IP[3] = 0xff; |
leysenkobe | 0:6ee88b4152dc | 459 | } |
leysenkobe | 0:6ee88b4152dc | 460 | void Module::setVersion(uint8_t version[2]) |
leysenkobe | 0:6ee88b4152dc | 461 | { |
leysenkobe | 0:6ee88b4152dc | 462 | this->version[0] = version[0]; |
leysenkobe | 0:6ee88b4152dc | 463 | this->version[1] = version[1]; |
leysenkobe | 0:6ee88b4152dc | 464 | } |
leysenkobe | 0:6ee88b4152dc | 465 | void Module::EnableData(void) |
leysenkobe | 0:6ee88b4152dc | 466 | { |
leysenkobe | 0:6ee88b4152dc | 467 | this->enableData = true; |
leysenkobe | 0:6ee88b4152dc | 468 | } |
leysenkobe | 0:6ee88b4152dc | 469 | void Module::DisableData(void) |
leysenkobe | 0:6ee88b4152dc | 470 | { |
leysenkobe | 0:6ee88b4152dc | 471 | this->enableData = false; |
leysenkobe | 0:6ee88b4152dc | 472 | } |
leysenkobe | 0:6ee88b4152dc | 473 | void Module::setPackageSize(uint8_t packageSize) |
leysenkobe | 0:6ee88b4152dc | 474 | { |
leysenkobe | 0:6ee88b4152dc | 475 | this->packageSize = packageSize; |
leysenkobe | 0:6ee88b4152dc | 476 | } |
leysenkobe | 0:6ee88b4152dc | 477 | void Module::setSampleNumber(unsigned int sampleNumber) |
leysenkobe | 0:6ee88b4152dc | 478 | { |
leysenkobe | 0:6ee88b4152dc | 479 | this->sampleNumber = sampleNumber; |
leysenkobe | 0:6ee88b4152dc | 480 | } |
leysenkobe | 0:6ee88b4152dc | 481 | void Module::setSampleRate(uint8_t sampleRate) |
leysenkobe | 0:6ee88b4152dc | 482 | { |
leysenkobe | 0:6ee88b4152dc | 483 | this->sampleRate = sampleRate; |
leysenkobe | 0:6ee88b4152dc | 484 | } |