working commands. singleton deleted

Dependents:   GonioTrainer

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?

UserRevisionLine numberNew 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 }