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:
Thu Mar 19 21:49:20 2015 +0000
Revision:
10:7e6aeaebe1a2
Parent:
9:7295385f02b2
Child:
11:496453b45e25
l'init de Ctrl Bridge est faite reste a tester et a inclure les debug.

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 9:7295385f02b2 10 : m_Memory(), pc(SERIAL_TX, SERIAL_RX), 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 9:7295385f02b2 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 8:e017e3d527d7 13 {
salco 9:7295385f02b2 14 //faire en sorte d'init SPI speed ici
salco 9:7295385f02b2 15 m_regPortUse=0;
salco 9:7295385f02b2 16 m_regPortLost=0;
salco 8:e017e3d527d7 17 }
salco 8:e017e3d527d7 18
salco 8:e017e3d527d7 19 CtrlBridge::~CtrlBridge()
salco 8:e017e3d527d7 20 {
salco 9:7295385f02b2 21 }
salco 9:7295385f02b2 22
salco 8:e017e3d527d7 23 /**
salco 8:e017e3d527d7 24 * @brief Methode permetant une seul instance de la classe
salco 8:e017e3d527d7 25 * @return Retourne l'unique instance de la classe
salco 8:e017e3d527d7 26 */
salco 8:e017e3d527d7 27 CtrlBridge *CtrlBridge::getInstance()
salco 8:e017e3d527d7 28 {
salco 9:7295385f02b2 29 if(!uniqueInstance) {
salco 8:e017e3d527d7 30 uniqueInstance = new CtrlBridge();
salco 8:e017e3d527d7 31 }
salco 8:e017e3d527d7 32 return uniqueInstance;
salco 8:e017e3d527d7 33 }
salco 8:e017e3d527d7 34
salco 8:e017e3d527d7 35 bool CtrlBridge::initCom(void)
salco 8:e017e3d527d7 36 {
salco 9:7295385f02b2 37 //char positionInitial;
salco 9:7295385f02b2 38 bool portUse;
salco 10:7e6aeaebe1a2 39 string flag;
salco 10:7e6aeaebe1a2 40 string data;
salco 10:7e6aeaebe1a2 41 Module* templateModule ;
salco 10:7e6aeaebe1a2 42 templateModule= new Module;
salco 10:7e6aeaebe1a2 43
salco 10:7e6aeaebe1a2 44 flag.append(1,Request_Init_Info);
salco 9:7295385f02b2 45 //positionInitial = spiLowSpeed.next_demux();
salco 9:7295385f02b2 46 for(char i=0; i != 15; i++) {
salco 9:7295385f02b2 47 portUse = spiLowSpeed.send(i,0,&flag,&data);
salco 10:7e6aeaebe1a2 48
salco 10:7e6aeaebe1a2 49 if( portUse ) {
salco 9:7295385f02b2 50 m_regPortUse|=(1<< i);
salco 10:7e6aeaebe1a2 51
salco 10:7e6aeaebe1a2 52 do {
salco 10:7e6aeaebe1a2 53
salco 10:7e6aeaebe1a2 54 templateModule->regA = m_Memory.getAdressDispo();
salco 10:7e6aeaebe1a2 55 templateModule->regB = (spiLowSpeed.get_demux()<<4)+(data[0]&0x0F);
salco 10:7e6aeaebe1a2 56 templateModule->regC = data[1];
salco 10:7e6aeaebe1a2 57 templateModule->regD = data[2];
salco 10:7e6aeaebe1a2 58
salco 10:7e6aeaebe1a2 59 switch(templateModule->regD >>6) {
salco 10:7e6aeaebe1a2 60 case 1://Capteur
salco 10:7e6aeaebe1a2 61 m_Memory.addCapteur(*templateModule);
salco 10:7e6aeaebe1a2 62 break;
salco 10:7e6aeaebe1a2 63
salco 10:7e6aeaebe1a2 64 case 2://Actionneur
salco 10:7e6aeaebe1a2 65 m_Memory.addActioneur(*templateModule);
salco 10:7e6aeaebe1a2 66 break;
salco 10:7e6aeaebe1a2 67
salco 10:7e6aeaebe1a2 68
salco 10:7e6aeaebe1a2 69 case 3://Memoire
salco 10:7e6aeaebe1a2 70 m_Memory.addMemoire(*templateModule);
salco 10:7e6aeaebe1a2 71 break;
salco 10:7e6aeaebe1a2 72
salco 10:7e6aeaebe1a2 73 default:
salco 10:7e6aeaebe1a2 74 break;
salco 10:7e6aeaebe1a2 75 }
salco 10:7e6aeaebe1a2 76
salco 10:7e6aeaebe1a2 77 if(flag[0] != Contien_AUTRE_MODULE)
salco 10:7e6aeaebe1a2 78 portUse=false;
salco 10:7e6aeaebe1a2 79 } while(portUse);
salco 10:7e6aeaebe1a2 80 }
salco 9:7295385f02b2 81 }
salco 9:7295385f02b2 82
salco 10:7e6aeaebe1a2 83 if(templateModule)
salco 10:7e6aeaebe1a2 84 delete templateModule;
salco 10:7e6aeaebe1a2 85
salco 8:e017e3d527d7 86 return true;
salco 9:7295385f02b2 87 }