Programme de contrôle de l'octopode 4DOF, Theraphosa-Salconi.

Dependencies:   debug mbed

CtrlBridge

  • fonction quelquonque pour communiquer avec les module
  • fonction quelquonque pour faire des recherche dans les module dispo
  • autre fonction pour jouer avec MemRegistre

Version 1.2.0

  • Ajout d'un mode de simulation pour tester le code avec seulement un contrôleur stm32
Committer:
salco
Date:
Fri Mar 20 14:25:23 2015 +0000
Revision:
12:bf44013497c8
Parent:
11:496453b45e25
Child:
13:51bbdc349f20
La com a l'aire fonctionelle et le debug est operationelle.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
salco 8:e017e3d527d7 1
salco 8:e017e3d527d7 2 #include "CtrlBridge.h"
salco 8:e017e3d527d7 3
salco 8:e017e3d527d7 4 CtrlBridge *CtrlBridge::uniqueInstance;
salco 8:e017e3d527d7 5
salco 8:e017e3d527d7 6 /**
salco 8:e017e3d527d7 7 * @brief Constructeur priver appler par la fonction getInstance()
salco 8:e017e3d527d7 8 */
salco 9:7295385f02b2 9 CtrlBridge::CtrlBridge()
salco 11:496453b45e25 10 : m_Memory(), ssc32(PA_9, PA_10),
salco 9:7295385f02b2 11 spiLowSpeed (SPI_LOW_MOSI, SPI_LOW_MISO, SPI_LOW_SCK, SPI_LOW_DEMUXA, SPI_LOW_DEMUXB, SPI_LOW_DEMUXC, SPI_LOW_DEMUXD, SPI_LOW_CS),
salco 11:496453b45e25 12 spiHighSpeed(SPI_HIGH_MOSI, SPI_HIGH_MISO, SPI_HIGH_SCK, SPI_HIGH_DEMUXA, SPI_HIGH_DEMUXB, SPI_HIGH_DEMUXC, SPI_HIGH_DEMUXD, SPI_HIGH_CS),
salco 11:496453b45e25 13 pc(SERIAL_TX, SERIAL_RX)
salco 8:e017e3d527d7 14 {
salco 9:7295385f02b2 15 //faire en sorte d'init SPI speed ici
salco 9:7295385f02b2 16 m_regPortUse=0;
salco 9:7295385f02b2 17 m_regPortLost=0;
salco 8:e017e3d527d7 18 }
salco 8:e017e3d527d7 19
salco 8:e017e3d527d7 20 CtrlBridge::~CtrlBridge()
salco 8:e017e3d527d7 21 {
salco 9:7295385f02b2 22 }
salco 9:7295385f02b2 23
salco 8:e017e3d527d7 24 /**
salco 8:e017e3d527d7 25 * @brief Methode permetant une seul instance de la classe
salco 8:e017e3d527d7 26 * @return Retourne l'unique instance de la classe
salco 8:e017e3d527d7 27 */
salco 8:e017e3d527d7 28 CtrlBridge *CtrlBridge::getInstance()
salco 8:e017e3d527d7 29 {
salco 9:7295385f02b2 30 if(!uniqueInstance) {
salco 8:e017e3d527d7 31 uniqueInstance = new CtrlBridge();
salco 8:e017e3d527d7 32 }
salco 8:e017e3d527d7 33 return uniqueInstance;
salco 8:e017e3d527d7 34 }
salco 8:e017e3d527d7 35
salco 8:e017e3d527d7 36 bool CtrlBridge::initCom(void)
salco 8:e017e3d527d7 37 {
salco 9:7295385f02b2 38 //char positionInitial;
salco 9:7295385f02b2 39 bool portUse;
salco 10:7e6aeaebe1a2 40 string flag;
salco 10:7e6aeaebe1a2 41 string data;
salco 10:7e6aeaebe1a2 42 Module* templateModule ;
salco 10:7e6aeaebe1a2 43 templateModule= new Module;
salco 10:7e6aeaebe1a2 44
salco 12:bf44013497c8 45 debug(DEBUG_INITMODULE, "\n\rInit::debut");
salco 11:496453b45e25 46 //flag.clear();
salco 11:496453b45e25 47 //flag.append(1,Request_Init_Info);
salco 9:7295385f02b2 48 //positionInitial = spiLowSpeed.next_demux();
salco 9:7295385f02b2 49 for(char i=0; i != 15; i++) {
salco 11:496453b45e25 50 debug(DEBUG_INITMODULE, "\n\r -Debut de boucle :%d ", i);
salco 11:496453b45e25 51 flag = Request_Init_Info;
salco 9:7295385f02b2 52 portUse = spiLowSpeed.send(i,0,&flag,&data);
salco 10:7e6aeaebe1a2 53
salco 10:7e6aeaebe1a2 54 if( portUse ) {
salco 9:7295385f02b2 55 m_regPortUse|=(1<< i);
salco 10:7e6aeaebe1a2 56
salco 10:7e6aeaebe1a2 57 do {
salco 10:7e6aeaebe1a2 58
salco 10:7e6aeaebe1a2 59 templateModule->regA = m_Memory.getAdressDispo();
salco 10:7e6aeaebe1a2 60 templateModule->regB = (spiLowSpeed.get_demux()<<4)+(data[0]&0x0F);
salco 10:7e6aeaebe1a2 61 templateModule->regC = data[1];
salco 10:7e6aeaebe1a2 62 templateModule->regD = data[2];
salco 10:7e6aeaebe1a2 63
salco 10:7e6aeaebe1a2 64 switch(templateModule->regD >>6) {
salco 10:7e6aeaebe1a2 65 case 1://Capteur
salco 10:7e6aeaebe1a2 66 m_Memory.addCapteur(*templateModule);
salco 10:7e6aeaebe1a2 67 break;
salco 10:7e6aeaebe1a2 68
salco 10:7e6aeaebe1a2 69 case 2://Actionneur
salco 10:7e6aeaebe1a2 70 m_Memory.addActioneur(*templateModule);
salco 10:7e6aeaebe1a2 71 break;
salco 10:7e6aeaebe1a2 72
salco 10:7e6aeaebe1a2 73
salco 10:7e6aeaebe1a2 74 case 3://Memoire
salco 10:7e6aeaebe1a2 75 m_Memory.addMemoire(*templateModule);
salco 10:7e6aeaebe1a2 76 break;
salco 10:7e6aeaebe1a2 77
salco 10:7e6aeaebe1a2 78 default:
salco 10:7e6aeaebe1a2 79 break;
salco 10:7e6aeaebe1a2 80 }
salco 10:7e6aeaebe1a2 81
salco 10:7e6aeaebe1a2 82 if(flag[0] != Contien_AUTRE_MODULE)
salco 10:7e6aeaebe1a2 83 portUse=false;
salco 10:7e6aeaebe1a2 84 } while(portUse);
salco 10:7e6aeaebe1a2 85 }
salco 11:496453b45e25 86 debug(DEBUG_INITMODULE, "\n\r Fin de boucle :%d", i);
salco 9:7295385f02b2 87 }
salco 9:7295385f02b2 88
salco 10:7e6aeaebe1a2 89 if(templateModule)
salco 10:7e6aeaebe1a2 90 delete templateModule;
salco 10:7e6aeaebe1a2 91
salco 12:bf44013497c8 92 debug(DEBUG_INITMODULE, "\n\rInit::Fin");
salco 8:e017e3d527d7 93 return true;
salco 9:7295385f02b2 94 }