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