Alexandre Salconi-Denis
/
ProjetOctopode
Programme de contrôle de l'octopode 4DOF, Theraphosa-Salconi.
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
source/CtrlBridge.cpp@11:496453b45e25, 2015-03-20 (annotated)
- Committer:
- salco
- Date:
- Fri Mar 20 01:03:17 2015 +0000
- Revision:
- 11:496453b45e25
- Parent:
- 10:7e6aeaebe1a2
- Child:
- 12:bf44013497c8
ajouter 2-3 debug pour voir ou est l'overflow quand je call tachecritique.
Who changed what in which revision?
User | Revision | Line number | New 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 | 11:496453b45e25 | 45 | debug(DEBUG_INITMODULE, "Init::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 | 11:496453b45e25 | 92 | debug(DEBUG_INITMODULE, "Init::Fin"); |
salco | 8:e017e3d527d7 | 93 | return true; |
salco | 9:7295385f02b2 | 94 | } |