Dependencies:   BLE_API mbed nRF51822

Fork of nRF51822_SimpleChat by Cristi Stoican

Committer:
carbune92
Date:
Mon May 08 13:17:49 2017 +0000
Revision:
4:cfc5c2426e21
Parent:
3:b6e4e5529a52
Child:
5:fca87573ed92
ControllerFactory works

Who changed what in which revision?

UserRevisionLine numberNew contents of line
carbune92 3:b6e4e5529a52 1 #include "BTDevice.hpp"
carbune92 3:b6e4e5529a52 2 #include "ProcessInterface.hpp"
carbune92 3:b6e4e5529a52 3
carbune92 3:b6e4e5529a52 4 //#define TE 0.1f //minim!!! - o cuanta!! - va fi multiplu al perioadei de esantionare configurabila
carbune92 3:b6e4e5529a52 5
carbune92 3:b6e4e5529a52 6 static Ticker controlLoopTicker, cmdTicker;
carbune92 3:b6e4e5529a52 7 static ProcessInterface pInt;
carbune92 3:b6e4e5529a52 8 static BTDevice bt;
carbune92 3:b6e4e5529a52 9
carbune92 3:b6e4e5529a52 10 void cmdCall(void);
carbune92 3:b6e4e5529a52 11 void controlLoopCall(void);
carbune92 3:b6e4e5529a52 12
carbune92 3:b6e4e5529a52 13 int main () {
carbune92 3:b6e4e5529a52 14
carbune92 3:b6e4e5529a52 15 pInt.attachBTDevice(&bt);
carbune92 3:b6e4e5529a52 16 pInt.attachController(bt.getCtrl());
carbune92 3:b6e4e5529a52 17
carbune92 3:b6e4e5529a52 18 bt.init();
carbune92 3:b6e4e5529a52 19 // while (!bt.isInit()) {}
carbune92 3:b6e4e5529a52 20
carbune92 3:b6e4e5529a52 21 cmdTicker.attach(cmdCall, TE);
carbune92 3:b6e4e5529a52 22 controlLoopTicker.attach(controlLoopCall, (TE+0.05f));
carbune92 3:b6e4e5529a52 23 //bt.attachProcessInterface(pInt);
carbune92 3:b6e4e5529a52 24
carbune92 4:cfc5c2426e21 25 Controller *myCtrl;
carbune92 4:cfc5c2426e21 26 ControllerFactory cf;
carbune92 4:cfc5c2426e21 27 SysObjTypes ctrlType = PID;
carbune92 4:cfc5c2426e21 28 cf.createController( &myCtrl, ctrlType );
carbune92 4:cfc5c2426e21 29 bt.attachController( myCtrl );
carbune92 3:b6e4e5529a52 30
carbune92 3:b6e4e5529a52 31 while (bt.isInit()) {
carbune92 3:b6e4e5529a52 32 bt.waitForEvent();
carbune92 3:b6e4e5529a52 33 }
carbune92 3:b6e4e5529a52 34
carbune92 3:b6e4e5529a52 35 return 0;
carbune92 3:b6e4e5529a52 36 }
carbune92 3:b6e4e5529a52 37
carbune92 3:b6e4e5529a52 38 // DE VAZUT CALLBACKUL DE RECEIVE
carbune92 3:b6e4e5529a52 39 void cmdCall() {
carbune92 3:b6e4e5529a52 40 uint8_t cmd[TXRX_BUF_LEN];
carbune92 3:b6e4e5529a52 41 bt.getPayload(cmd);
carbune92 3:b6e4e5529a52 42 //bt.interpretCmd(cmd); //only configuration commands!! (like PID Params of reference update)
carbune92 3:b6e4e5529a52 43 }
carbune92 3:b6e4e5529a52 44
carbune92 3:b6e4e5529a52 45 void controlLoopCall() {
carbune92 3:b6e4e5529a52 46
carbune92 3:b6e4e5529a52 47 //STATE_MACHINE: CONTROLLER, MANUAL, MONITOR ETC
carbune92 3:b6e4e5529a52 48 //we check if a controller exists (was prev set by a command)
carbune92 3:b6e4e5529a52 49 if (bt.ctrlExists()) {
carbune92 3:b6e4e5529a52 50 // controllers were attached in the command Callback to btDevice and ProcessInterface
carbune92 3:b6e4e5529a52 51 pInt.getProcOutput();
carbune92 3:b6e4e5529a52 52 pInt.exportOutput();
carbune92 3:b6e4e5529a52 53 bt.getCtrl()->calculateCmd();
carbune92 3:b6e4e5529a52 54 pInt.updateCmd(); // no parameters means that we get the updated command from the Controller instance
carbune92 3:b6e4e5529a52 55 pInt.applyCmd();
carbune92 3:b6e4e5529a52 56 } else {
carbune92 3:b6e4e5529a52 57 pInt.updateCmd(0.0f); // we directly pass the command value
carbune92 3:b6e4e5529a52 58 pInt.applyCmd();
carbune92 3:b6e4e5529a52 59 }
carbune92 3:b6e4e5529a52 60 }