EEP fORK

Dependencies:   BLE_API mbed nRF51822

Fork of MCS_LRF by Farshad N

Revision:
18:08184949ab30
Parent:
15:bc4f8c597c26
--- a/laser.cpp	Fri Jun 16 05:09:17 2017 +0000
+++ b/laser.cpp	Tue Jul 18 05:17:37 2017 +0000
@@ -23,7 +23,7 @@
 void Laser::discardResponse()
 {
     // char c = 0;
-    wait_ms(20);        // wait for the response
+    wait_ms(30);        // wait for the response
     while(serial.readable()) {
         serial.getc();
     }
@@ -41,6 +41,7 @@
     
         sendCommand(cmd);
         processResponse();
+        setRedDot(true);
     }
 }
 
@@ -90,8 +91,6 @@
         wait_ms(1000);
         enableMeasurement(true);
         busy = false;
-        //return true;
-
     } else {
         buf[i -1] = 0;
     }
@@ -123,19 +122,19 @@
 
     } else {
         sendCommand("switchMeasOff\n");
-        discardResponse();
+        discardResponse(); 
+        sendCommand("2 0 startPwrSave;");
+        discardResponse();       
     }
 }
 
 void Laser::setRedDot(bool on)
 {
     if(on) {
-        //char cmd[] = "0 -1 5 doMeasDistExt\n";     // doing a measurement turns the redDot on
         char cmd[] = "0 3 0 -1 3 doLaserCmd;\n";
         sendCommand(cmd);
         wait_ms(120);       // take a while for a response for to measurement command
         discardResponse();
-//       triggerDistanceMeasurement();
     } else {
         sendCommand("switchMeasOff\n");
         discardResponse();
@@ -169,16 +168,8 @@
         powerOffState = false;
 
         connectPower();
-
-        // trun power back on and reinstate serial and laser
-        //DigitalIn rx(p26, PullUp);
-//        serialPtr = new Serial(p27, p26);
-//        serialPtr->baud(READER_BAUD_RATE);
-//        disableFlowControl();
-//        laserPtr = new Laser(*serialPtr);
-
         enableMeasurement(true);
-        setRedDot(1);
+        setRedDot(true);
     }
 }
 
@@ -186,22 +177,9 @@
 {
     if(powerOffState == false) {
         powerOffState = true;
-        setRedDot(0);   // this disables measurements
+        setRedDot(false);   // this disables measurements
 
         removePower();
-
-        // also take power off the Laser, but first ensure io pins are not powered
-        // if(serialPtr != NULL) delete serialPtr;
-//        serialPtr = new Serial(NC, p26);
-//        DigitalOut rx(p26);
-//        DigitalOut tx(p27);
-//        rx = 0;
-//        tx = 0;
-        // if(laserPtr != NULL) delete laserPtr;
-        //  laserPtr = new Laser(*serialPtr);
-
-        //   nReset = 0;
-        //   disableLRF = 1;
     }
 }
 
@@ -234,95 +212,3 @@
 {
     enableMeasurement(false);
 }
-
-
-
-
-//void Laser::processRxData(char c)
-//{
-//    if(c != '\n') {
-//        buf[idx++] = c;
-//        if(idx == bufSize) idx = 0;      // avoid overflow
-//    } else {
-//        buf[idx] = 0;       // null terminate the string
-//        processBuffer();
-//        idx = 0;
-//    }
-//}
-
-//float Laser::getDistance()
-//{
-//    float distance = -4.0;
-//    const int bufSize = 50;
-//    char data[bufSize];
-//    int i = 0;
-//    //char cmd[] = ";\n";
-//    char cmd[] = "0 -1 10 doMeasDistExt\n";   // single reading averaged over 10 measurements
-//    //char cmd[] = "0 -1 -1 doMeasDistExt\n";     // single reading of single measurement
-//
-//    if (sendCommand(cmd) == true) {
-//        // Note: Need to actually read from the serial to clear the RX interrupt
-//        char c = 0;
-//        uint16_t count = 0;
-//        do {
-//            if(serial.readable()) {
-//                c = serial.getc();
-//                data[i++] = c;
-//            } else {
-//                wait_us(100);
-//            }
-//        } while (c != '\n' && i < bufSize && count++ < 5000);  // timeout after about 500ms and ensure no overflow
-//
-//        if (count >= 5000 || i >= bufSize) return -2.0;  // timeout or overflow
-//
-//        // now that we have the reply parse it
-//        data[i - 1] = 0;        // null terminate the string
-//
-//        //reply is in this form '2 0 1844364 324 Reply'. 2nd number is error code, 3rd number is distance in um, 4th number is measurement signal
-//        vector<char*> v;
-//        split(data, ' ', v);
-//
-//        if (v.size() != 6 || atoi(v[1]) != 0 || strcmp(v[5], "Reply") != 0) {
-//            // there is an error
-//            distance = -3.0;
-//        } else {
-//            distance = atoi(v[2]) / 1000000.0; // distance in m
-//        }
-//    }
-//
-//    return distance;
-//}
-
-//void Laser::processBuffer()
-//{
-//    //float distance;
-////    vector<char*> v;
-////   // debugCallback(buf);
-////
-////    split(buf, ' ', v);
-////
-////    if (v.size() != 6 || atoi(v[1]) != 0 || strcmp(v[5], "Reply") != 0) {
-////        // there is an error
-////        distanceCallback(-1.0);
-////    } else
-////    {
-////        distance = atoi(v[2]) / 1000000.0; // distance in m
-////        distanceCallback(distance);
-////    }
-//
-//
-//    float distance = -5;
-//    vector<char*> v;
-//
-//    split(buf, ' ', v);
-//
-//    if (v.size() != 6 || atoi(v[1]) != 0 || strcmp(v[5], "Reply") != 0) {
-//        // there is an error
-//        distanceCallback(-1.0, 0.0);
-//    } else {
-//        float elapsed =  (float)(timer.read_us()/1000.0);      // elapsed in ms
-//        distance = atoi(v[2]) / 1000000.0; // distance in m
-//        distanceCallback(distance, elapsed);
-//    }
-//}
-