Easy Training / Mbed 2 deprecated Teach_demo

Dependencies:   mbed Teach memory

Revision:
1:33fdaabcdeda
Parent:
0:ad924d8a2f98
Child:
3:b22580585b9c
--- a/teach.cpp	Wed Mar 25 21:36:24 2020 +0000
+++ b/teach.cpp	Tue Apr 21 15:49:22 2020 +0000
@@ -1,48 +1,241 @@
 /*
-class template by clemo
-this file serves as a guide to creating a cpp class
-when wirting functions for Easyfit please use this
-
-put math, instructions and temporary declarations here
-declarations that are permanent go in .h file!
-
-i never coded c++ lol
-
-how to use when creating own class:
-replace "template.h" with something of your choosing
-replace class name (teach) fckn everywhere
-
-write appropriate constructor (teach::teach)
-delete any unwanted functions
-put in your own functions by YOURCLASSNAME::functionname(bla,bla)    //same for public and private functions
+Hear cold stand a discription
 
 */
 
 
 #include "teach.h"
 
-teach::teach(){
-    
-   /* this->initvalue = _start;   //sets startvalue
-    this->inc = _inc;           //sets increment
-    this->useless();            //prints a happy little message
+
+teach::teach(void)                          // constructor
+{
+
+    lowcount = 0, highcount = 0;            //sets startvalue
+    data_vec.clear();
+}
+
+void teach::setstart(float posx,float posy,float posz, int time)
+{
+    lowcount = 0;
+
+    temp.start = true;
+    temp.end = false;
+    temp.hi = highcount;
+    temp.low = lowcount;
+    temp.time = time;
+    temp.pos[0] = posx;
+    temp.pos[1] = posy;
+    temp.pos[2] = posz;
+    data_vec.push_back(temp);
+
+    lowcount++;
+    highcount++;
+
+    contr_sice();
+}
+
+void teach::setpoint(float posx,float posy,float posz, int time)
+{
+    lowcount++;
+
+    temp.start = false;
+    temp.end = false;
+    temp.hi = highcount;
+    temp.low = lowcount;
+    temp.time = time;
+    temp.pos[0] = posx;
+    temp.pos[1] = posy;
+    temp.pos[2] = posz;
+    data_vec.push_back(temp);
+
+    contr_sice();
+}
+
+void teach::setend(float posx,float posy,float posz, int time)
+{
+    temp.start = false;
+    temp.end = true;
+    temp.hi = highcount;
+    temp.low = lowcount;
+    temp.time = time;
+    temp.pos[0] = posx;
+    temp.pos[1] = posy;
+    temp.pos[2] = posz;
+    data_vec.push_back(temp);
+
+    lowcount = 0;
+    highcount++;
+
+    contr_sice();
+}
+
+void teach::save(void)
+{
+    //store data_vec to memory
+}
+
+void teach::stop(void)
+{
+
 }
 
+void teach::process(void)
+{
+    int i=0, k=0, p=0, count=0,forward = 100000, backward = 100000;
+    float tempsum[3] = {};
+    int max = data_vec.size();
 
-void teach::incrementSum(int v1){
-    for(int i = 0; i < v1; i++){
-        sum += inc;
+    for(i=0; i<=max; i++) {                                                     // avrage starting Point
+        if(data_vec[i].start) {
+            tempsum[0] += data_vec[i].pos[0];
+            tempsum[1] += data_vec[i].pos[1];
+            tempsum[2] += data_vec[i].pos[2];
+            k++;
+        }
+    }
+    tempsum[0] = tempsum[0]/k;
+    tempsum[1] = tempsum[1]/k;
+    tempsum[2] = tempsum[2]/k;
+
+    // save startpoint to memory
+
+    i = 0, k = 0, tempsum[0] = 0, tempsum[1] = 0, tempsum[2] = 0;               // reset counters
+
+    for(i=0; i<=max; i++) {                                                     // avrage end Point
+        if(data_vec[i].end) {
+            tempsum[0] += data_vec[i].pos[0];
+            tempsum[1] += data_vec[i].pos[1];
+            tempsum[2] += data_vec[i].pos[2];
+            k++;
+        }
+    }
+    tempsum[0] = tempsum[0]/k;
+    tempsum[1] = tempsum[1]/k;
+    tempsum[2] = tempsum[2]/k;
+
+    // save endpoint to memory
+
+    i = 0, k = 0, tempsum[0] = 0, tempsum[1] = 0, tempsum[2] = 0;               // reset counters
+
+    for(i=0; i<=max; i++) {                                                     // forward point number
+
+        while(!data_vec[k].end) {
+            count++;
+            k++;
+        }
+
+        if(count<forward) {
+            forward = count;
+        }
+        while(!data_vec[k].start) {
+            k++;
+        }
+        i = k;
+        count = 0;
+
+    }
+
+    k = 0;
+    for(i=0; i<=max; i++) {                                                   // backward point number
+
+        while(!data_vec[k].end) {
+            k++;
+        }
+
+        while(!data_vec[k].start) {
+            count++;
+            k++;
+        }
+        if(count<backward) {
+            backward = count;
+        }
+        i = k;
+        count = 0;
+
     }
+
+    k = 0;
+    struct temp_arry forw[forward];                                         // temp array initialise and zerowing
+    for(i=0; i<forward; i++) {
+        forw[i].time=0;
+        forw[i].pos[0]=0;
+        forw[i].pos[1]=0;
+        forw[i].pos[2]=0;
+    }
+
+    for(i=0; i<=max; i++) {                                                 // avrage forward points
+        for(p=0; p<=forward; p++) {
+            forw[p].time += data_vec[k].time;
+            forw[p].pos[0] += data_vec[k].pos[0];
+            forw[p].pos[1] += data_vec[k].pos[1];
+            forw[p].pos[2] += data_vec[k].pos[2];
+            k++;
+        }
+
+        while(!data_vec[k].start) {
+            k++;
+        }
+        i = k;
+        count++;
+
+    }
+    for(i=0; i<=forward; i++) {
+        forw[i].time = (forw[i].time)/count;
+        forw[i].pos[0] = (forw[i].pos[0])/count;
+        forw[i].pos[1] = (forw[i].pos[1])/count;
+        forw[i].pos[2] = (forw[i].pos[2])/count;
+    }
+    count = 0;
+    k = 0, i = 0, p = 0;                                                    // reset counters
+    
+    // Save forward way to memory
+
+    struct temp_arry backw[backward];                                       // temp array initialise and zerowing
+    for(i=0; i<backward; i++) {
+        backw[i].time=0;
+        backw[i].pos[0]=0;
+        backw[i].pos[1]=0;
+        backw[i].pos[2]=0;
+    }
+
+    for(i=0; i<=max; i++) {                                                 // avrage backward points
+    
+        while(!data_vec[k].end) {
+            k++;
+        }
+
+        for(p=0; p<=backward; p++) {
+            backw[p].time += data_vec[k].time;
+            backw[p].pos[0] += data_vec[k].pos[0];
+            backw[p].pos[1] += data_vec[k].pos[1];
+            backw[p].pos[2] += data_vec[k].pos[2];
+            k++;
+        }
+        i = k;
+        count++;
+    }
+    
+    for(i=0; i<=backward; i++) {
+        backw[i].time = (backw[i].time)/count;
+        backw[i].pos[0] = (backw[i].pos[0])/count;
+        backw[i].pos[0] = (backw[i].pos[0])/count;
+        backw[i].pos[0] = (backw[i].pos[0])/count;
+    }
+    count = 0;
+    k = 0, i = 0, p = 0;                                                       // reset counters
+    
+    // save backward way to memory
+
 }
 
-void teach::resetSum(void){
-    sum = 0;
+void teach::temp_store()
+{
+
 }
 
-int teach::getSum(void){
-    return sum;   
-}
-
-void teach::useless(void){
-    //printf("congrats");     */  //printf doesnt work :(
+void teach::contr_sice()
+{
+    if((data_vec.size()*sizeof(posdata)) >= MAX_SIZE) {
+        // fehlermeldung oder speichern bei zu grossem temp speicher
+    }
 }
\ No newline at end of file