Refactoring and other updates

Dependencies:   BLE_API mbed nRF51822

Fork of nRF51822_SimpleChat by Cristi Stoican

Committer:
carbune92
Date:
Wed May 10 07:15:19 2017 +0000
Revision:
7:806b08205b25
Parent:
5:fca87573ed92
fixed minor issues

Who changed what in which revision?

UserRevisionLine numberNew contents of line
carbune92 3:b6e4e5529a52 1
carbune92 3:b6e4e5529a52 2 #include "ControllerFactory.hpp"
carbune92 3:b6e4e5529a52 3
carbune92 3:b6e4e5529a52 4
carbune92 5:fca87573ed92 5 void ControllerFactory::createController (Controller **c, SysObjTypes ctrlType) {
carbune92 3:b6e4e5529a52 6
carbune92 3:b6e4e5529a52 7 switch (ctrlType) {
carbune92 3:b6e4e5529a52 8 case P: //fall-through
carbune92 3:b6e4e5529a52 9 case PI:
carbune92 3:b6e4e5529a52 10 case PID: {
carbune92 3:b6e4e5529a52 11 *c = new PIDController();
carbune92 3:b6e4e5529a52 12 break;
carbune92 3:b6e4e5529a52 13 }
carbune92 3:b6e4e5529a52 14 case RST: {
carbune92 3:b6e4e5529a52 15 *c = new RSTController();
carbune92 3:b6e4e5529a52 16 break;
carbune92 3:b6e4e5529a52 17 }
carbune92 3:b6e4e5529a52 18 default: *c = 0;
carbune92 3:b6e4e5529a52 19 }
carbune92 3:b6e4e5529a52 20 }
carbune92 3:b6e4e5529a52 21
carbune92 3:b6e4e5529a52 22 void ControllerFactory::createControllerParams (ControllerParams &cp, SysObjTypes &ctrlType, uint8_t *paramsList, int paramsListLen) {
carbune92 3:b6e4e5529a52 23 /*
carbune92 3:b6e4e5529a52 24 paramsList form: {
carbune92 3:b6e4e5529a52 25 P: [kp]
carbune92 3:b6e4e5529a52 26 PI: [kp, ti]
carbune92 3:b6e4e5529a52 27 PID: [kp, ti, td]
carbune92 3:b6e4e5529a52 28 RST: [nR,r0,r1,...,r_nR,nS,s0,s1,...,s_nS,nT,t0,t1,...,t_nT]
carbune92 3:b6e4e5529a52 29 }
carbune92 3:b6e4e5529a52 30 cond: paramsListLen = nR + nS + nT + 6
carbune92 3:b6e4e5529a52 31 */
carbune92 3:b6e4e5529a52 32 switch (ctrlType) {
carbune92 3:b6e4e5529a52 33 case P: {
carbune92 3:b6e4e5529a52 34 cp.kp = *paramsList;
carbune92 3:b6e4e5529a52 35 cp.ti = 0;
carbune92 3:b6e4e5529a52 36 cp.td = 0;
carbune92 3:b6e4e5529a52 37 break;
carbune92 3:b6e4e5529a52 38 }
carbune92 3:b6e4e5529a52 39 case PI: {
carbune92 3:b6e4e5529a52 40 cp.kp = *paramsList;
carbune92 3:b6e4e5529a52 41 cp.ti = paramsList[1];
carbune92 3:b6e4e5529a52 42 cp.td = 0;
carbune92 3:b6e4e5529a52 43 break;
carbune92 3:b6e4e5529a52 44 }
carbune92 3:b6e4e5529a52 45 case PID: {
carbune92 3:b6e4e5529a52 46 cp.kp = *paramsList;
carbune92 3:b6e4e5529a52 47 cp.ti = paramsList[1];
carbune92 3:b6e4e5529a52 48 cp.td = paramsList[2];
carbune92 3:b6e4e5529a52 49 break;
carbune92 3:b6e4e5529a52 50 }
carbune92 3:b6e4e5529a52 51 case RST: {
carbune92 3:b6e4e5529a52 52 int i;
carbune92 3:b6e4e5529a52 53 cp.ordR = *paramsList;
carbune92 3:b6e4e5529a52 54 cp.R = new float[cp.ordR+1];
carbune92 3:b6e4e5529a52 55 for (i=1; i<cp.ordR+2;i++) {
carbune92 3:b6e4e5529a52 56 cp.R[i] = paramsList[i];
carbune92 3:b6e4e5529a52 57 }
carbune92 3:b6e4e5529a52 58 cp.ordS = paramsList[i];
carbune92 3:b6e4e5529a52 59 cp.S = new float[cp.ordS+1];
carbune92 3:b6e4e5529a52 60 for (i=cp.ordR+2; i<cp.ordR+cp.ordS+3; i++) {
carbune92 3:b6e4e5529a52 61 cp.S[i] = paramsList[i];
carbune92 3:b6e4e5529a52 62 }
carbune92 3:b6e4e5529a52 63 cp.ordT = paramsList[i];
carbune92 3:b6e4e5529a52 64 cp.T = new float[cp.ordT+1];
carbune92 3:b6e4e5529a52 65 for(i=cp.ordR+cp.ordS+3; i<paramsListLen; i++) {
carbune92 3:b6e4e5529a52 66 cp.T[i] = paramsList[i];
carbune92 3:b6e4e5529a52 67 }
carbune92 3:b6e4e5529a52 68 break;
carbune92 3:b6e4e5529a52 69 }
carbune92 3:b6e4e5529a52 70 }
carbune92 3:b6e4e5529a52 71 }