Tobias Gustafsson / Parameters

Dependents:   Nucleo_folkrace

Files at this revision

API Documentation at this revision

Comitter:
captainsmiley
Date:
Sun Mar 05 09:59:01 2017 +0000
Commit message:
tgtest

Changed in this revision

Parameters.cpp Show annotated file Show diff for this revision Revisions of this file
Parameters.h Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r 4321ae746746 Parameters.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Parameters.cpp	Sun Mar 05 09:59:01 2017 +0000
@@ -0,0 +1,91 @@
+/*
+ * Parameters.cpp
+ *
+ *  Created on: 28 jan. 2017
+ *      Author: tgtob
+ */
+
+
+#include <Parameters.h>
+
+Parameters::Parameters() {
+    // TODO Auto-generated constructor stub
+
+}
+
+Parameters pms;
+
+int Parameters::m_turn = 0;
+int Parameters::m_speed = 1000;
+bool Parameters::m_drive = 0;
+int Parameters::m_client_mode = 0;
+#define GEN_INT_COUNT 5
+int Parameters::m_genInt[GEN_INT_COUNT] = {};
+const char* Parameters::m_parameter_names[N_P] {"turn","speed","drive","c_mode"};
+
+bool Parameters::try_write(char* key, char* value)
+{
+    PARAMETER_INDEX i = find_index(key);
+    switch (i)
+    {
+    case TURN_P:
+        m_turn = atoi(value);
+        return true;
+    case SPEED_P:
+        m_speed = atoi(value);
+        break;
+    case DRIVE_P:
+        m_drive = (bool) atoi(value);
+        break;
+    case CLIENT_MODE_P:
+                m_client_mode = atoi(value);
+        break;
+
+    case N_P:
+        return false;
+    default:
+        return false;
+    }
+
+    return false;
+}
+
+bool Parameters::try_write_gen_int(int index,int value)
+{
+    if(index<GEN_INT_COUNT)
+    {
+        m_genInt[index] = value;
+        return true;
+    }
+    return false;
+}
+
+int Parameters::getGenInt(int index)
+{
+    int tmp;
+    if(index<GEN_INT_COUNT)
+    {
+        tmp = m_genInt[index];
+    }
+    else tmp  = -1;
+
+    return tmp;
+}
+
+Parameters::PARAMETER_INDEX Parameters::find_index(char * str)
+{
+    for(int i=0 ; i<int(N_P) ; ++i)
+    {
+        if(strcmp(str,m_parameter_names[i]))
+        {
+            return static_cast<PARAMETER_INDEX>(i);
+        }
+    }
+    return N_P;
+}
+
+
+Parameters::~Parameters() {
+    // TODO Auto-generated destructor stub
+}
+
diff -r 000000000000 -r 4321ae746746 Parameters.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Parameters.h	Sun Mar 05 09:59:01 2017 +0000
@@ -0,0 +1,46 @@
+/* Parameters.h
+ *
+ *  Created on: 28 jan. 2017
+ *      Author: tgtob
+ */
+
+#ifndef SRC_PARAMETERS_H_
+#define SRC_PARAMETERS_H_
+
+#include "mbed.h"
+
+class Parameters {
+public:
+    Parameters();
+    bool try_write(char*  key, char* value);
+    bool try_write_gen_int(int index,int value);
+    virtual ~Parameters();
+
+    /* **********  read functions ******** */
+    int getGenInt(int index);
+    int getTurn() {int tmp;tmp = m_turn;return tmp;}
+    int getSpeed() {int tmp;tmp = m_speed;return tmp;}
+    bool getDrive() {bool tmp;tmp = m_drive;return tmp;}
+    enum ClientMode {OFFLINE,TURN_AND_DRIVE,TURN,DRIVE};
+    ClientMode getClientMode() {ClientMode tmp;tmp = static_cast<ClientMode>(m_speed);return tmp;}
+
+    /* ********** write functions ********* */
+    void setClientMode(ClientMode m ) {m_client_mode = m;}
+    void setTurn(int t ) {m_turn = t;}
+    void setSpeed(int s ) {m_speed = s;}
+
+private:
+    enum PARAMETER_INDEX {TURN_P,SPEED_P,DRIVE_P,CLIENT_MODE_P,N_P};
+    PARAMETER_INDEX find_index(char * str);
+    static const char* m_parameter_names[]; // = {"turn","speed","drive"} const;
+    static int m_turn;
+    static int m_speed;
+    static bool m_drive;
+    static int m_client_mode;
+    static int m_genInt[];
+
+};
+
+extern Parameters pms;
+
+#endif /* SRC_PARAMETERS_H_ */