working commands. singleton deleted
OfflineCommand.cpp@0:e188325211af, 2015-06-04 (annotated)
- Committer:
- dkester
- Date:
- Thu Jun 04 10:56:18 2015 +0000
- Revision:
- 0:e188325211af
- Child:
- 1:fd4c0e2decb8
working version with block erase.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dkester | 0:e188325211af | 1 | #include "OfflineCommand.h" |
dkester | 0:e188325211af | 2 | |
dkester | 0:e188325211af | 3 | OfflineCommand::OfflineCommand() |
dkester | 0:e188325211af | 4 | { |
dkester | 0:e188325211af | 5 | this->sensors = Sensors::getInstance(); |
dkester | 0:e188325211af | 6 | this->storage = Storage::getInstance(); |
dkester | 0:e188325211af | 7 | this->addr = 0x0; |
dkester | 0:e188325211af | 8 | this->running = 0; |
dkester | 0:e188325211af | 9 | } |
dkester | 0:e188325211af | 10 | |
dkester | 0:e188325211af | 11 | void OfflineCommand::initialize() |
dkester | 0:e188325211af | 12 | { |
dkester | 0:e188325211af | 13 | printf("OfflineCommand\n"); |
dkester | 0:e188325211af | 14 | setTicker(0.1); |
dkester | 0:e188325211af | 15 | } |
dkester | 0:e188325211af | 16 | |
dkester | 0:e188325211af | 17 | void OfflineCommand::execute() |
dkester | 0:e188325211af | 18 | { |
dkester | 0:e188325211af | 19 | if(running) { |
dkester | 0:e188325211af | 20 | writeToMemory(); |
dkester | 0:e188325211af | 21 | } |
dkester | 0:e188325211af | 22 | } |
dkester | 0:e188325211af | 23 | |
dkester | 0:e188325211af | 24 | void OfflineCommand::button() |
dkester | 0:e188325211af | 25 | { |
dkester | 0:e188325211af | 26 | if (running == 0){ |
dkester | 0:e188325211af | 27 | this->addr = 0x0; |
dkester | 0:e188325211af | 28 | |
dkester | 0:e188325211af | 29 | //this->storage->setWREN(); |
dkester | 0:e188325211af | 30 | //this->storage->bulkErase(); |
dkester | 0:e188325211af | 31 | |
dkester | 0:e188325211af | 32 | //__disable_irq(); |
dkester | 0:e188325211af | 33 | |
dkester | 0:e188325211af | 34 | while(this->storage->getSR1() == 3){ |
dkester | 0:e188325211af | 35 | printf("erasing...\n"); |
dkester | 0:e188325211af | 36 | wait(1); |
dkester | 0:e188325211af | 37 | } |
dkester | 0:e188325211af | 38 | |
dkester | 0:e188325211af | 39 | printf("writing...\n"); |
dkester | 0:e188325211af | 40 | this->running = 1; |
dkester | 0:e188325211af | 41 | this->sensors->wakeIMU(); |
dkester | 0:e188325211af | 42 | wait(0.001); |
dkester | 0:e188325211af | 43 | |
dkester | 0:e188325211af | 44 | //__enable_irq(); |
dkester | 0:e188325211af | 45 | |
dkester | 0:e188325211af | 46 | } else { |
dkester | 0:e188325211af | 47 | this->sensors->disableIMU(); |
dkester | 0:e188325211af | 48 | this->running = 0; |
dkester | 0:e188325211af | 49 | printf("Done writing, %d\n", addr); |
dkester | 0:e188325211af | 50 | } |
dkester | 0:e188325211af | 51 | |
dkester | 0:e188325211af | 52 | } |
dkester | 0:e188325211af | 53 | |
dkester | 0:e188325211af | 54 | void OfflineCommand::finish() |
dkester | 0:e188325211af | 55 | { |
dkester | 0:e188325211af | 56 | detachTicker(); |
dkester | 0:e188325211af | 57 | setLed(0); |
dkester | 0:e188325211af | 58 | } |
dkester | 0:e188325211af | 59 | |
dkester | 0:e188325211af | 60 | void OfflineCommand::writeToMemory() |
dkester | 0:e188325211af | 61 | { |
dkester | 0:e188325211af | 62 | sensors->updateIMU(); |
dkester | 0:e188325211af | 63 | sensors->updateAngle(); |
dkester | 0:e188325211af | 64 | |
dkester | 0:e188325211af | 65 | if(!storage->isBusy()) { |
dkester | 0:e188325211af | 66 | |
dkester | 0:e188325211af | 67 | storage->pageProgram(addr); |
dkester | 0:e188325211af | 68 | |
dkester | 0:e188325211af | 69 | storage->writeData(sensors->getAngleH()); |
dkester | 0:e188325211af | 70 | storage->writeData(sensors->getAngleL()); |
dkester | 0:e188325211af | 71 | storage->writeData(sensors->getGyroXH()); |
dkester | 0:e188325211af | 72 | storage->writeData(sensors->getGyroXH()); |
dkester | 0:e188325211af | 73 | |
dkester | 0:e188325211af | 74 | storage->endAction(); |
dkester | 0:e188325211af | 75 | |
dkester | 0:e188325211af | 76 | this->addr = this->addr + 0x4; |
dkester | 0:e188325211af | 77 | |
dkester | 0:e188325211af | 78 | } else { |
dkester | 0:e188325211af | 79 | printf("busy: %d\n", storage->getSR1()); |
dkester | 0:e188325211af | 80 | } |
dkester | 0:e188325211af | 81 | |
dkester | 0:e188325211af | 82 | } |
dkester | 0:e188325211af | 83 | |
dkester | 0:e188325211af | 84 | void OfflineCommand::eraseMemory(){ |
dkester | 0:e188325211af | 85 | |
dkester | 0:e188325211af | 86 | } |