Refactoring and other updates

Dependencies:   BLE_API mbed nRF51822

Fork of nRF51822_SimpleChat by Cristi Stoican

Revision:
3:b6e4e5529a52
Child:
5:fca87573ed92
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ControllerFactory.cpp	Mon May 08 13:05:45 2017 +0000
@@ -0,0 +1,71 @@
+
+#include "ControllerFactory.hpp"
+
+
+void ControllerFactory::createController (Controller **c, SysObjTypes &ctrlType) {
+	
+	switch (ctrlType) {
+		case P:			//fall-through
+		case PI:
+		case PID: {
+			*c = new PIDController();
+			break; 
+		}
+		case RST: {
+			*c = new RSTController();
+			break;
+		}
+		default: *c = 0;
+	}
+}
+
+void ControllerFactory::createControllerParams (ControllerParams &cp, SysObjTypes &ctrlType, uint8_t *paramsList, int paramsListLen) {
+	/*
+		paramsList form: {
+			P: [kp]	
+			PI: [kp, ti]
+			PID: [kp, ti, td]
+			RST: [nR,r0,r1,...,r_nR,nS,s0,s1,...,s_nS,nT,t0,t1,...,t_nT]
+		}
+		cond: paramsListLen = nR + nS + nT + 6
+	*/
+	switch (ctrlType) {
+		case P: {
+			cp.kp = *paramsList;
+			cp.ti = 0;
+			cp.td = 0;
+			break;
+		}
+		case PI: {
+			cp.kp = *paramsList;
+			cp.ti = paramsList[1];
+			cp.td = 0;
+			break;
+		}
+		case PID: {
+			cp.kp = *paramsList;
+			cp.ti = paramsList[1];
+			cp.td = paramsList[2];
+			break;
+		}
+		case RST: {
+			int i;
+			cp.ordR = *paramsList;
+			cp.R = new float[cp.ordR+1];
+			for (i=1; i<cp.ordR+2;i++) {
+				cp.R[i] = paramsList[i];
+			}
+			cp.ordS = paramsList[i];
+			cp.S = new float[cp.ordS+1];
+			for (i=cp.ordR+2; i<cp.ordR+cp.ordS+3; i++) {
+				cp.S[i] = paramsList[i];		
+			}
+			cp.ordT = paramsList[i];
+			cp.T = new float[cp.ordT+1];
+			for(i=cp.ordR+cp.ordS+3; i<paramsListLen; i++) {
+				cp.T[i] = paramsList[i];
+			}
+			break;
+		}
+	}		
+}