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/ComSpi.cpp@41:0b5c14dda54a, 2017-01-31 (annotated)
- Committer:
- salco
- Date:
- Tue Jan 31 13:15:42 2017 +0000
- Revision:
- 41:0b5c14dda54a
- Parent:
- 39:34d7802e8d15
Tentative de modifier les commit inutile sur debug.h
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
salco | 7:dcfd81d7f93f | 1 | |
salco | 7:dcfd81d7f93f | 2 | #include "ComSpi.h" |
salco | 7:dcfd81d7f93f | 3 | |
salco | 7:dcfd81d7f93f | 4 | ComSpi::ComSpi(PinName mosi, PinName miso, PinName sclk, PinName _unused) : SPI(mosi,miso,sclk,_unused) |
salco | 7:dcfd81d7f93f | 5 | { |
salco | 7:dcfd81d7f93f | 6 | // m_com = new SPI(mosi,miso,sclk,_unused); |
salco | 7:dcfd81d7f93f | 7 | //m_regPortUse=0; |
salco | 7:dcfd81d7f93f | 8 | //m_regPortLost=0; |
salco | 7:dcfd81d7f93f | 9 | m_demuxPos=0; |
salco | 7:dcfd81d7f93f | 10 | demuxIsUse=false; |
salco | 15:91b3c572d9df | 11 | chainedListFirst = 0; |
salco | 15:91b3c572d9df | 12 | chainedListLast = 0; |
salco | 15:91b3c572d9df | 13 | flagSPI.getBytes = 0; |
salco | 15:91b3c572d9df | 14 | //result = 0; |
salco | 15:91b3c572d9df | 15 | counterData = 0; |
salco | 15:91b3c572d9df | 16 | counterTotale = 0; |
salco | 15:91b3c572d9df | 17 | /*for(int i=0;i<MAXTABLE;i++) |
salco | 15:91b3c572d9df | 18 | { |
salco | 15:91b3c572d9df | 19 | bufferSend[i] = 0; |
salco | 15:91b3c572d9df | 20 | bufferReceive[i] = 0; |
salco | 15:91b3c572d9df | 21 | } |
salco | 15:91b3c572d9df | 22 | bufferSend[0] = SYNC;*/ |
salco | 15:91b3c572d9df | 23 | } |
salco | 15:91b3c572d9df | 24 | |
salco | 15:91b3c572d9df | 25 | struct module_t* ComSpi::createModule(void) { |
salco | 15:91b3c572d9df | 26 | if(chainedListFirst == 0) { |
salco | 15:91b3c572d9df | 27 | chainedListFirst = new module_t ; |
salco | 15:91b3c572d9df | 28 | chainedListLast = chainedListFirst; |
salco | 15:91b3c572d9df | 29 | } else { |
salco | 15:91b3c572d9df | 30 | chainedListLast->next = new module_t; |
salco | 15:91b3c572d9df | 31 | chainedListLast = chainedListLast->next; |
salco | 15:91b3c572d9df | 32 | } |
salco | 15:91b3c572d9df | 33 | chainedListLast->next = 0; |
salco | 15:91b3c572d9df | 34 | return chainedListLast; |
salco | 7:dcfd81d7f93f | 35 | } |
salco | 7:dcfd81d7f93f | 36 | |
salco | 7:dcfd81d7f93f | 37 | ComSpi::ComSpi(PinName mosi, PinName miso, PinName sclk, PinName demuxA, PinName demuxB, PinName demuxC, PinName demuxD, PinName demuxEnable) |
salco | 11:496453b45e25 | 38 | : SPI(mosi,miso,sclk), m_demuxA(demuxA), m_demuxB(demuxB), m_demuxC(demuxC), m_demuxD(demuxD), m_demuxEnable(demuxEnable) |
salco | 7:dcfd81d7f93f | 39 | { |
salco | 7:dcfd81d7f93f | 40 | m_demuxPos=0; |
salco | 7:dcfd81d7f93f | 41 | demuxIsUse=true; |
salco | 15:91b3c572d9df | 42 | format(8,0);//16,0); //recente modification |
salco | 7:dcfd81d7f93f | 43 | } |
salco | 7:dcfd81d7f93f | 44 | |
salco | 7:dcfd81d7f93f | 45 | ComSpi::~ComSpi() |
salco | 7:dcfd81d7f93f | 46 | { |
salco | 15:91b3c572d9df | 47 | //pt deleter les pointeur mais sa ser pas vrm a grand chause |
salco | 7:dcfd81d7f93f | 48 | //if(m_com) |
salco | 7:dcfd81d7f93f | 49 | // delete(m_com); |
salco | 7:dcfd81d7f93f | 50 | } |
salco | 7:dcfd81d7f93f | 51 | void ComSpi::change_demux(void) |
salco | 7:dcfd81d7f93f | 52 | { |
salco | 9:7295385f02b2 | 53 | if(demuxIsUse) { |
salco | 10:7e6aeaebe1a2 | 54 | DigitalOut pinDemuxA(m_demuxA); |
salco | 10:7e6aeaebe1a2 | 55 | DigitalOut pinDemuxB(m_demuxB); |
salco | 10:7e6aeaebe1a2 | 56 | DigitalOut pinDemuxC(m_demuxC); |
salco | 10:7e6aeaebe1a2 | 57 | DigitalOut pinDemuxD(m_demuxD); |
salco | 15:91b3c572d9df | 58 | DigitalOut pinDemuxEnable(m_demuxEnable);//,1); |
salco | 15:91b3c572d9df | 59 | //wait(1); |
salco | 10:7e6aeaebe1a2 | 60 | pinDemuxEnable=0; |
salco | 15:91b3c572d9df | 61 | //wait(1); |
salco | 10:7e6aeaebe1a2 | 62 | if(m_demuxPos & 1) pinDemuxA=1; //0b0001 |
salco | 10:7e6aeaebe1a2 | 63 | else pinDemuxA=0; |
salco | 10:7e6aeaebe1a2 | 64 | if(m_demuxPos & 2) pinDemuxB=1; //0b0010 |
salco | 10:7e6aeaebe1a2 | 65 | else pinDemuxB=0; |
salco | 10:7e6aeaebe1a2 | 66 | if(m_demuxPos & 4) pinDemuxC=1; //0b0100 |
salco | 10:7e6aeaebe1a2 | 67 | else pinDemuxC=0; |
salco | 10:7e6aeaebe1a2 | 68 | if(m_demuxPos & 8) pinDemuxD=1; //0b1000 |
salco | 10:7e6aeaebe1a2 | 69 | else pinDemuxD=0; |
salco | 15:91b3c572d9df | 70 | //wait(1); |
salco | 17:095f670f9c14 | 71 | // pinDemuxEnable=1; |
salco | 15:91b3c572d9df | 72 | //wait(1); |
salco | 9:7295385f02b2 | 73 | } |
salco | 7:dcfd81d7f93f | 74 | } |
salco | 9:7295385f02b2 | 75 | char ComSpi::next_demux(void) |
salco | 7:dcfd81d7f93f | 76 | { |
salco | 9:7295385f02b2 | 77 | char result = (char)-1; |
salco | 7:dcfd81d7f93f | 78 | |
salco | 7:dcfd81d7f93f | 79 | if(demuxIsUse) { |
salco | 7:dcfd81d7f93f | 80 | (m_demuxPos == 15)? m_demuxPos=0:m_demuxPos++; |
salco | 7:dcfd81d7f93f | 81 | change_demux(); |
salco | 9:7295385f02b2 | 82 | result = m_demuxPos; |
salco | 7:dcfd81d7f93f | 83 | } |
salco | 7:dcfd81d7f93f | 84 | return result; |
salco | 7:dcfd81d7f93f | 85 | } |
salco | 9:7295385f02b2 | 86 | char ComSpi::back_demux(void) |
salco | 7:dcfd81d7f93f | 87 | { |
salco | 9:7295385f02b2 | 88 | char result = (char)-1; |
salco | 10:7e6aeaebe1a2 | 89 | |
salco | 7:dcfd81d7f93f | 90 | if(demuxIsUse) { |
salco | 7:dcfd81d7f93f | 91 | (m_demuxPos == 0)? m_demuxPos=15:m_demuxPos--; |
salco | 7:dcfd81d7f93f | 92 | change_demux(); |
salco | 10:7e6aeaebe1a2 | 93 | |
salco | 10:7e6aeaebe1a2 | 94 | result = m_demuxPos; |
salco | 7:dcfd81d7f93f | 95 | } |
salco | 7:dcfd81d7f93f | 96 | return result; |
salco | 7:dcfd81d7f93f | 97 | } |
salco | 10:7e6aeaebe1a2 | 98 | char ComSpi::get_demux(void) |
salco | 10:7e6aeaebe1a2 | 99 | { |
salco | 10:7e6aeaebe1a2 | 100 | char result = (char)-1; |
salco | 10:7e6aeaebe1a2 | 101 | if(demuxIsUse) |
salco | 10:7e6aeaebe1a2 | 102 | result=m_demuxPos; |
salco | 10:7e6aeaebe1a2 | 103 | return result ; |
salco | 10:7e6aeaebe1a2 | 104 | } |
salco | 15:91b3c572d9df | 105 | unsigned char spiCurrentState; |
salco | 15:91b3c572d9df | 106 | int ComSpi::write(int value) |
salco | 15:91b3c572d9df | 107 | { |
salco | 17:095f670f9c14 | 108 | DigitalOut pinDemuxEnable(m_demuxEnable); |
salco | 15:91b3c572d9df | 109 | //DigitalOut pinDemuxEnable(m_demuxEnable,0); |
salco | 15:91b3c572d9df | 110 | int a; |
salco | 17:095f670f9c14 | 111 | pinDemuxEnable=1; |
salco | 17:095f670f9c14 | 112 | /* switch(spiCurrentState) |
salco | 15:91b3c572d9df | 113 | { |
salco | 17:095f670f9c14 | 114 | case 0: |
salco | 17:095f670f9c14 | 115 | a= SPI::write(0x12); |
salco | 17:095f670f9c14 | 116 | spiCurrentState++; |
salco | 17:095f670f9c14 | 117 | break; |
salco | 17:095f670f9c14 | 118 | default: |
salco | 17:095f670f9c14 | 119 | a= SPI::write(0xF5); |
salco | 17:095f670f9c14 | 120 | spiCurrentState =0; |
salco | 17:095f670f9c14 | 121 | break; |
salco | 15:91b3c572d9df | 122 | }*/ |
salco | 17:095f670f9c14 | 123 | wait_us(5); |
salco | 15:91b3c572d9df | 124 | a= SPI::write(value); |
salco | 15:91b3c572d9df | 125 | wait_us(5); |
salco | 17:095f670f9c14 | 126 | pinDemuxEnable=0; |
salco | 17:095f670f9c14 | 127 | sneekpeek.append(1,value); |
salco | 17:095f670f9c14 | 128 | wait_us(1000); |
salco | 15:91b3c572d9df | 129 | return a; |
salco | 15:91b3c572d9df | 130 | } |
salco | 15:91b3c572d9df | 131 | |
salco | 10:7e6aeaebe1a2 | 132 | |
salco | 14:ca1a9230ba7f | 133 | bool ComSpi::send(char portID,unsigned char adresseModule,string *flag,string *data) |
salco | 7:dcfd81d7f93f | 134 | { |
salco | 7:dcfd81d7f93f | 135 | bool result=false; |
salco | 10:7e6aeaebe1a2 | 136 | string formatedDataSend; |
salco | 15:91b3c572d9df | 137 | string formatedDataReceive;//DEBUG_COMPACT |
salco | 15:91b3c572d9df | 138 | char settingMaster = 0; |
salco | 15:91b3c572d9df | 139 | char settingSlave = 0; |
salco | 12:bf44013497c8 | 140 | |
salco | 15:91b3c572d9df | 141 | debug(DEBUG_SEND| DEBUG_COMPACT, "\n\r -Debut du send. "); |
salco | 12:bf44013497c8 | 142 | |
salco | 11:496453b45e25 | 143 | debug(DEBUG_SEND, "\n\r -Debut set demux. "); |
salco | 15:91b3c572d9df | 144 | |
salco | 15:91b3c572d9df | 145 | if(portID < 1) portID = 0; |
salco | 15:91b3c572d9df | 146 | else if(portID > 16) portID = 16; |
salco | 27:ea60d12dccdf | 147 | debug(DEBUG_SEND| DEBUG_COMPACT, "\n\r -Change PORT. %02d",portID); |
salco | 15:91b3c572d9df | 148 | m_demuxPos = portID; |
salco | 15:91b3c572d9df | 149 | change_demux(); |
salco | 15:91b3c572d9df | 150 | |
salco | 11:496453b45e25 | 151 | debug(DEBUG_SEND, "\n\r -Fin set demux. "); |
salco | 12:bf44013497c8 | 152 | |
salco | 10:7e6aeaebe1a2 | 153 | // Sync // |
salco | 11:496453b45e25 | 154 | debug(DEBUG_SEND, "\n\r -Debut Sync. "); |
salco | 10:7e6aeaebe1a2 | 155 | formatedDataSend.append(1,SYNC); |
salco | 15:91b3c572d9df | 156 | debug(DEBUG_COMPACT, "\n\r -SYNC ADDED: %02X ",formatedDataSend[0]); |
salco | 11:496453b45e25 | 157 | debug(DEBUG_SEND, "\n\r -Fin Sync. "); |
salco | 12:bf44013497c8 | 158 | |
salco | 10:7e6aeaebe1a2 | 159 | // Address // |
salco | 11:496453b45e25 | 160 | debug(DEBUG_SEND, "\n\r -Debut Address. "); |
salco | 10:7e6aeaebe1a2 | 161 | formatedDataSend.append(1,adresseModule); |
salco | 15:91b3c572d9df | 162 | debug(DEBUG_COMPACT, "\n\r -ADDR ADDED: %02X, %02X ",formatedDataSend[0],formatedDataSend[1]); |
salco | 11:496453b45e25 | 163 | debug(DEBUG_SEND, "\n\r -Fin Address. "); |
salco | 12:bf44013497c8 | 164 | |
salco | 10:7e6aeaebe1a2 | 165 | // PFB // |
salco | 11:496453b45e25 | 166 | debug(DEBUG_SEND, "\n\r -Debut PFB. "); |
salco | 17:095f670f9c14 | 167 | // if(flag != 0) |
salco | 17:095f670f9c14 | 168 | // { |
salco | 10:7e6aeaebe1a2 | 169 | switch(flag->size()) { |
salco | 10:7e6aeaebe1a2 | 170 | case 1: |
salco | 16:5ea4337d785f | 171 | if(flag->at(0) == 0) formatedDataSend.append(1,0<<6); //0 byte |
salco | 16:5ea4337d785f | 172 | else formatedDataSend.append(1,1<<6); //1 byte |
salco | 10:7e6aeaebe1a2 | 173 | break; |
salco | 10:7e6aeaebe1a2 | 174 | |
salco | 10:7e6aeaebe1a2 | 175 | case 2: |
salco | 15:91b3c572d9df | 176 | formatedDataSend.append(1,2<<6); //2 byte |
salco | 10:7e6aeaebe1a2 | 177 | break; |
salco | 10:7e6aeaebe1a2 | 178 | |
salco | 10:7e6aeaebe1a2 | 179 | case 3: |
salco | 15:91b3c572d9df | 180 | formatedDataSend.append(1,3<<6); //3 byte |
salco | 10:7e6aeaebe1a2 | 181 | break; |
salco | 10:7e6aeaebe1a2 | 182 | |
salco | 10:7e6aeaebe1a2 | 183 | default: |
salco | 16:5ea4337d785f | 184 | formatedDataSend.append(1,0<<6); //cas impossible //0 byte |
salco | 10:7e6aeaebe1a2 | 185 | break; |
salco | 10:7e6aeaebe1a2 | 186 | } |
salco | 16:5ea4337d785f | 187 | //} |
salco | 15:91b3c572d9df | 188 | debug(DEBUG_COMPACT, "\n\r -PFB ADDED: %02X, %02X, %02X ",formatedDataSend[0],formatedDataSend[1],formatedDataSend[2]); |
salco | 11:496453b45e25 | 189 | debug(DEBUG_SEND, "\n\r -Fin PFB. "); |
salco | 12:bf44013497c8 | 190 | |
salco | 10:7e6aeaebe1a2 | 191 | // gestion ACK/NAK |
salco | 11:496453b45e25 | 192 | debug(DEBUG_SEND, "\n\r -Debut ACK/NAK. "); |
salco | 12:bf44013497c8 | 193 | formatedDataSend.at(formatedDataSend.length()-1) |= (NOACK << 4); |
salco | 15:91b3c572d9df | 194 | debug(DEBUG_COMPACT, "\n\r -ACK ADDED: %02X, %02X, %02X ",formatedDataSend[0],formatedDataSend[1],formatedDataSend[2]); |
salco | 11:496453b45e25 | 195 | debug(DEBUG_SEND, "\n\r -Fin ACK/NAK. "); |
salco | 12:bf44013497c8 | 196 | |
salco | 10:7e6aeaebe1a2 | 197 | // NDB // |
salco | 11:496453b45e25 | 198 | debug(DEBUG_SEND, "\n\r -Debut NDB. "); |
salco | 10:7e6aeaebe1a2 | 199 | switch(data->size()) { |
salco | 10:7e6aeaebe1a2 | 200 | case 1: |
salco | 12:bf44013497c8 | 201 | formatedDataSend.at(formatedDataSend.length()-1) |= 1; |
salco | 10:7e6aeaebe1a2 | 202 | break; |
salco | 10:7e6aeaebe1a2 | 203 | |
salco | 10:7e6aeaebe1a2 | 204 | case 2: |
salco | 12:bf44013497c8 | 205 | formatedDataSend.at(formatedDataSend.length()-1) |= 2; |
salco | 10:7e6aeaebe1a2 | 206 | break; |
salco | 10:7e6aeaebe1a2 | 207 | |
salco | 10:7e6aeaebe1a2 | 208 | case 3: |
salco | 12:bf44013497c8 | 209 | formatedDataSend.at(formatedDataSend.length()-1) |= 3; |
salco | 10:7e6aeaebe1a2 | 210 | break; |
salco | 10:7e6aeaebe1a2 | 211 | |
salco | 10:7e6aeaebe1a2 | 212 | default: |
salco | 12:bf44013497c8 | 213 | formatedDataSend.at(formatedDataSend.length()-1) |= 0; |
salco | 10:7e6aeaebe1a2 | 214 | break; |
salco | 10:7e6aeaebe1a2 | 215 | } |
salco | 15:91b3c572d9df | 216 | //debug(DEBUG_COMPACT, "\n\r -NDB ADDED: %02X, %02X, %02X ",formatedDataSend[0],formatedDataSend[1],formatedDataSend[2]); |
salco | 11:496453b45e25 | 217 | debug(DEBUG_SEND, "\n\r -Fin NDB. "); |
salco | 12:bf44013497c8 | 218 | |
salco | 15:91b3c572d9df | 219 | settingMaster = formatedDataSend[formatedDataSend.length()-1]; |
salco | 17:095f670f9c14 | 220 | |
salco | 10:7e6aeaebe1a2 | 221 | // flag // |
salco | 11:496453b45e25 | 222 | debug(DEBUG_SEND, "\n\r -Debut flag. "); |
salco | 12:bf44013497c8 | 223 | if(flag->size() != 0) { |
salco | 10:7e6aeaebe1a2 | 224 | formatedDataSend.append(*flag); |
salco | 15:91b3c572d9df | 225 | //debug(DEBUG_COMPACT, "\n\r -FLAG ADDED: %02X, %02X, %02X, %02X ",formatedDataSend[0],formatedDataSend[1],formatedDataSend[2],formatedDataSend[3]); |
salco | 12:bf44013497c8 | 226 | } |
salco | 11:496453b45e25 | 227 | debug(DEBUG_SEND, "\n\r -Fin flag. "); |
salco | 12:bf44013497c8 | 228 | |
salco | 15:91b3c572d9df | 229 | //ici tu envoi deja ton premier stuf |
salco | 15:91b3c572d9df | 230 | |
salco | 15:91b3c572d9df | 231 | |
salco | 17:095f670f9c14 | 232 | //debug(DEBUG_SLIM, "\n\r -settingMaster : %X , %i, %X ",settingMaster, (2+(settingMaster>>6)),formatedDataSend[(2+(settingMaster>>6))] ); |
salco | 15:91b3c572d9df | 233 | |
salco | 15:91b3c572d9df | 234 | |
salco | 15:91b3c572d9df | 235 | |
salco | 15:91b3c572d9df | 236 | for(int retryLoop=0; (retryLoop<3) && (!result); retryLoop++) { |
salco | 27:ea60d12dccdf | 237 | wait_us(3000); |
salco | 15:91b3c572d9df | 238 | debug(DEBUG_SEND|DEBUG_COMPACT, "\n\r -Tentative: %d \n\r",retryLoop); |
salco | 15:91b3c572d9df | 239 | formatedDataReceive.clear(); |
salco | 15:91b3c572d9df | 240 | settingSlave =0; |
salco | 15:91b3c572d9df | 241 | counterTotale =0; |
salco | 15:91b3c572d9df | 242 | sneekpeek.clear(); |
salco | 15:91b3c572d9df | 243 | //Send Data |
salco | 15:91b3c572d9df | 244 | // debug(DEBUG_SEND, "\n\r -Debut Send Data. "); |
salco | 15:91b3c572d9df | 245 | // debug(DEBUG_SEND|DEBUG_COMPACT, "\n\r -Send: "); |
salco | 15:91b3c572d9df | 246 | // for (unsigned i=0; i<formatedDataSend.length(); ++i) debug(DEBUG_SEND |DEBUG_COMPACT, "%02X,",formatedDataSend.at(i)); |
salco | 10:7e6aeaebe1a2 | 247 | |
salco | 15:91b3c572d9df | 248 | //int twoBytesArray; |
salco | 15:91b3c572d9df | 249 | //twoBytesArray = (formatedDataSend[0]<<8)|(formatedDataSend[1]); |
salco | 15:91b3c572d9df | 250 | //twoBytesArray=write(twoBytesArray); |
salco | 13:51bbdc349f20 | 251 | |
salco | 15:91b3c572d9df | 252 | for(int i = 0; (i < formatedDataSend.length()) && (i<=(2+(settingMaster>>6))); ++i) { |
salco | 15:91b3c572d9df | 253 | formatedDataReceive.append(1,write(formatedDataSend[i]));//debug(DEBUG_SEND|DEBUG_COMPACT|DEBUG_SLIM, "\n\r -A:%i ",i); |
salco | 15:91b3c572d9df | 254 | debug(DEBUG_SEND |DEBUG_COMPACT, " %02X,",formatedDataSend.at(i)); |
salco | 27:ea60d12dccdf | 255 | wait_us(3000); |
salco | 15:91b3c572d9df | 256 | } |
salco | 13:51bbdc349f20 | 257 | |
salco | 15:91b3c572d9df | 258 | if(formatedDataReceive[0] == SYNC) { |
salco | 15:91b3c572d9df | 259 | debug(DEBUG_COMPACT, "\n\r -Receve transmission. "); |
salco | 15:91b3c572d9df | 260 | //!!!!!!!! Problem ici write dans un mais pas lautre |
salco | 27:ea60d12dccdf | 261 | //wait_us(3000); |
salco | 15:91b3c572d9df | 262 | if(retryLoop == 0) { |
salco | 15:91b3c572d9df | 263 | formatedDataSend.append(1,0);//2,0); cest une patch tempo parce que je trouve pas ou il manque la donner |
salco | 17:095f670f9c14 | 264 | } |
salco | 15:91b3c572d9df | 265 | formatedDataReceive.append(1,write(0)); |
salco | 17:095f670f9c14 | 266 | // debug(DEBUG_SEND|DEBUG_COMPACT|DEBUG_SLIM, "\n\r -B: "); |
salco | 17:095f670f9c14 | 267 | |
salco | 15:91b3c572d9df | 268 | settingSlave = formatedDataReceive[formatedDataReceive.length()-1]; |
salco | 15:91b3c572d9df | 269 | debug(DEBUG_COMPACT, "\n\r -settingSlave %02X",settingSlave); |
salco | 27:ea60d12dccdf | 270 | debug(DEBUG_COMPACT, "\n\r -append %02X time(s)",settingSlave>>6); |
salco | 15:91b3c572d9df | 271 | if(retryLoop == 0) { |
salco | 15:91b3c572d9df | 272 | /*switch(formatedDataReceive[formatedDataSend.length()-1] >> 6) { |
salco | 15:91b3c572d9df | 273 | case 1: |
salco | 15:91b3c572d9df | 274 | formatedDataSend.append(1,0); //1 byte |
salco | 15:91b3c572d9df | 275 | break; |
salco | 13:51bbdc349f20 | 276 | |
salco | 15:91b3c572d9df | 277 | case 2: |
salco | 15:91b3c572d9df | 278 | formatedDataSend.append(2,0); //2 byte |
salco | 15:91b3c572d9df | 279 | break; |
salco | 13:51bbdc349f20 | 280 | |
salco | 15:91b3c572d9df | 281 | case 3: |
salco | 15:91b3c572d9df | 282 | formatedDataSend.append(3,0); //3 byte |
salco | 15:91b3c572d9df | 283 | break; |
salco | 12:bf44013497c8 | 284 | |
salco | 15:91b3c572d9df | 285 | //default: |
salco | 15:91b3c572d9df | 286 | // formatedDataSend.append(1,0<<6); //0 byte |
salco | 15:91b3c572d9df | 287 | // break; |
salco | 15:91b3c572d9df | 288 | }*/ |
salco | 15:91b3c572d9df | 289 | formatedDataSend.append(settingSlave>>6,0); |
salco | 15:91b3c572d9df | 290 | } |
salco | 13:51bbdc349f20 | 291 | |
salco | 15:91b3c572d9df | 292 | int bufferFlag = 0; |
salco | 15:91b3c572d9df | 293 | |
salco | 15:91b3c572d9df | 294 | for(int i = (settingMaster>>6); i != 0; i--) { //ici on remplie le buffer des data du flag |
salco | 15:91b3c572d9df | 295 | // je considere avec erreur que il nexiste pas de flag plus grand que 2 bytes (facilite le code de depart) |
salco | 15:91b3c572d9df | 296 | //!!! Pt metre fonct stein qui tronc de debut a fin pour remplacer les linge dessous. |
salco | 15:91b3c572d9df | 297 | bufferFlag = bufferFlag<<8; |
salco | 15:91b3c572d9df | 298 | bufferFlag += formatedDataSend[2+i]; |
salco | 13:51bbdc349f20 | 299 | } |
salco | 12:bf44013497c8 | 300 | |
salco | 15:91b3c572d9df | 301 | counterTotale = ((2+(settingMaster>>6))+1); |
salco | 15:91b3c572d9df | 302 | counterTotale = counterTotale+(settingSlave>>6)+abs((settingMaster & 0x0F) - (settingSlave & 0x0F)); |
salco | 27:ea60d12dccdf | 303 | debug(DEBUG_COMPACT, "\n\r -Calcule: %02X=((2+(%02X))+1)+(%02X)+abs((%02X)-(%02X))",(((2+(settingMaster>>6))+1)+(settingSlave>>6)+abs((settingMaster & 0x0F) - (settingSlave & 0x0F))),(settingMaster>>6),(settingSlave>>6),(settingMaster & 0x0F),(settingSlave & 0x0F)); |
salco | 17:095f670f9c14 | 304 | //debug( "\n\r -size : %02X",counterTotale); |
salco | 39:34d7802e8d15 | 305 | debug( DEBUG_COMPACT,"\n\r -size : %02X , %02X",formatedDataSend.size(),counterTotale); |
salco | 18:3f113f8441b2 | 306 | if(retryLoop == 0) { |
salco | 27:ea60d12dccdf | 307 | |
salco | 27:ea60d12dccdf | 308 | if(formatedDataSend.size()<=counterTotale) { |
salco | 18:3f113f8441b2 | 309 | formatedDataSend.append(counterTotale+1-formatedDataSend.size(),0); |
salco | 18:3f113f8441b2 | 310 | } |
salco | 27:ea60d12dccdf | 311 | else{ |
salco | 27:ea60d12dccdf | 312 | debug(DEBUG_SEND|DEBUG_COMPACT|DEBUG_SLIM, "\n\r -Probleme de receive: "); |
salco | 27:ea60d12dccdf | 313 | for (unsigned i=0; i<formatedDataReceive.length(); i++) debug(DEBUG_SEND|DEBUG_COMPACT|DEBUG_SLIM, "%02X,",formatedDataReceive.at(i)); |
salco | 27:ea60d12dccdf | 314 | debug(DEBUG_SEND|DEBUG_COMPACT|DEBUG_SLIM, "\n\r -Probleme de send: "); |
salco | 27:ea60d12dccdf | 315 | for (unsigned i=0; i<formatedDataSend.length(); i++) debug(DEBUG_SEND|DEBUG_COMPACT|DEBUG_SLIM, "%02X,",formatedDataSend.at(i)); |
salco | 27:ea60d12dccdf | 316 | } |
salco | 18:3f113f8441b2 | 317 | } |
salco | 18:3f113f8441b2 | 318 | |
salco | 39:34d7802e8d15 | 319 | debug(DEBUG_COMPACT, "\n\r -size : %02X , %02X",formatedDataSend.size(),counterTotale); |
salco | 15:91b3c572d9df | 320 | switch(bufferFlag) { //plus facile pour savoir ce que tu doit tatenre a recevoire |
salco | 15:91b3c572d9df | 321 | case 1://Request Init Info |
salco | 15:91b3c572d9df | 322 | if(retryLoop == 0) { |
salco | 17:095f670f9c14 | 323 | //formatedDataSend.append(1,1<<6); //1 byte flag |
salco | 17:095f670f9c14 | 324 | //formatedDataSend.append(settingSlave & 0x0F,0); |
salco | 15:91b3c572d9df | 325 | //chek pour comment avoir un address |
salco | 18:3f113f8441b2 | 326 | /*if(formatedDataSend.size()<counterTotale) { |
salco | 17:095f670f9c14 | 327 | formatedDataSend.append(counterTotale+1-formatedDataSend.size(),0); |
salco | 18:3f113f8441b2 | 328 | }*/ |
salco | 15:91b3c572d9df | 329 | } |
salco | 15:91b3c572d9df | 330 | //verifier si la fonction fait ce quil edt suposer |
salco | 17:095f670f9c14 | 331 | |
salco | 18:3f113f8441b2 | 332 | /*for(int i = ((2+(settingMaster>>6))+1); i < formatedDataSend.length()-1; ++i) { //on envoi le reste des data |
salco | 15:91b3c572d9df | 333 | formatedDataReceive.append(1,write(formatedDataSend[i])); |
salco | 15:91b3c572d9df | 334 | //debug(DEBUG_SEND|DEBUG_COMPACT|DEBUG_SLIM, "\n\r -C:%i ",i); |
salco | 18:3f113f8441b2 | 335 | }*/ |
salco | 17:095f670f9c14 | 336 | |
salco | 15:91b3c572d9df | 337 | //templatePtr =searchAddr(0); |
salco | 15:91b3c572d9df | 338 | // 1 byte flag + 3 byte de data |
salco | 15:91b3c572d9df | 339 | //bufferSend[4] = (1<<6) + 3;//[2+(bufferReceive[2]>>6)+1] = (1<<6); |
salco | 15:91b3c572d9df | 340 | |
salco | 15:91b3c572d9df | 341 | |
salco | 15:91b3c572d9df | 342 | //if((templatePtr->next)==0) |
salco | 15:91b3c572d9df | 343 | // bufferSend[5] = 0b101;//bufferReceive[2+(bufferReceive[2]>>6)+1+bufferReceive[2+(bufferReceive[2]>>6)+1]] = 0b101; |
salco | 15:91b3c572d9df | 344 | //else |
salco | 15:91b3c572d9df | 345 | // bufferSend[5] = 0b10; |
salco | 15:91b3c572d9df | 346 | |
salco | 15:91b3c572d9df | 347 | //bufferSend[6] = templatePtr->basicInfo.osnapRegisterB.getByte; |
salco | 15:91b3c572d9df | 348 | //bufferSend[7] = templatePtr->basicInfo.osnapRegisterC.getByte; |
salco | 15:91b3c572d9df | 349 | //bufferSend[8] = templatePtr->basicInfo.osnapRegisterD.getByte; |
salco | 15:91b3c572d9df | 350 | break; |
salco | 15:91b3c572d9df | 351 | |
salco | 15:91b3c572d9df | 352 | case 2: //Slave contient un/des autre(s) module(s) sans adresses |
salco | 15:91b3c572d9df | 353 | break; |
salco | 15:91b3c572d9df | 354 | |
salco | 15:91b3c572d9df | 355 | case 3: //Flag Critique |
salco | 15:91b3c572d9df | 356 | break; |
salco | 15:91b3c572d9df | 357 | |
salco | 15:91b3c572d9df | 358 | case 4: //Flag Alerte |
salco | 15:91b3c572d9df | 359 | break; |
salco | 15:91b3c572d9df | 360 | |
salco | 15:91b3c572d9df | 361 | case 5: //Slave ne contient plus de module sans adresse |
salco | 15:91b3c572d9df | 362 | break; |
salco | 15:91b3c572d9df | 363 | |
salco | 15:91b3c572d9df | 364 | case 6: //Master request address update |
salco | 15:91b3c572d9df | 365 | break; |
salco | 15:91b3c572d9df | 366 | |
salco | 15:91b3c572d9df | 367 | default: //Get update (normale) |
salco | 16:5ea4337d785f | 368 | //if(retryLoop == 0) { |
salco | 16:5ea4337d785f | 369 | // formatedDataSend.append(abs((settingMaster & 0x0F) - (settingSlave & 0x0F)),0);//je considere que cest fait apres avoire ajouter les data a nous |
salco | 16:5ea4337d785f | 370 | // } |
salco | 15:91b3c572d9df | 371 | break; |
salco | 15:91b3c572d9df | 372 | } |
salco | 18:3f113f8441b2 | 373 | // pas sur si cest une bonne ider mais sa peut peut etre regrouper tout les flags |
salco | 18:3f113f8441b2 | 374 | for(int i = ((2+(settingMaster>>6))+1); i < formatedDataSend.length()-1; ++i) { //on envoi le reste des data |
salco | 18:3f113f8441b2 | 375 | formatedDataReceive.append(1,write(formatedDataSend[i])); |
salco | 18:3f113f8441b2 | 376 | //debug(DEBUG_SEND|DEBUG_COMPACT|DEBUG_SLIM, "\n\r -C:%i ",i); |
salco | 18:3f113f8441b2 | 377 | } |
salco | 15:91b3c572d9df | 378 | //counterTotale = 2+(bufferReceive[2]>>6)+1; |
salco | 15:91b3c572d9df | 379 | //counterTotale = counterTotale+(bufferSend[counterTotale]>>6)+abs((bufferReceive[2] & 0x5F) - (bufferSend[counterTotale] & 0x5F)); |
salco | 15:91b3c572d9df | 380 | |
salco | 15:91b3c572d9df | 381 | |
salco | 15:91b3c572d9df | 382 | |
salco | 15:91b3c572d9df | 383 | // Envoie le reste si liker // |
salco | 15:91b3c572d9df | 384 | // DATA // |
salco | 15:91b3c572d9df | 385 | unsigned short templateValue=0; |
salco | 15:91b3c572d9df | 386 | if(retryLoop == 0) { |
salco | 17:095f670f9c14 | 387 | // CRC // |
salco | 17:095f670f9c14 | 388 | debug(DEBUG_SEND, "\n\r -Debut CRC16. "); |
salco | 17:095f670f9c14 | 389 | //CRC16* templateCRC; |
salco | 17:095f670f9c14 | 390 | //templateCRC = new CRC16(); |
salco | 17:095f670f9c14 | 391 | //!!!utiliser string cest plus simple |
salco | 17:095f670f9c14 | 392 | |
salco | 15:91b3c572d9df | 393 | |
salco | 17:095f670f9c14 | 394 | //char templateTable[formatedDataSend.length()+1]; |
salco | 17:095f670f9c14 | 395 | //for (unsigned i=0; i<formatedDataSend.length()+1; ++i) templateTable[i]=0; |
salco | 17:095f670f9c14 | 396 | //for (unsigned i=0; i<formatedDataSend.length(); ++i) templateTable[i]=formatedDataSend[i]; |
salco | 17:095f670f9c14 | 397 | //debug(DEBUG_SEND, "\n\r - envoi au crc: %02X,%02X,%02X,%02X,%02X,%02X ",templateTable[0],templateTable[1],templateTable[2],templateTable[3],templateTable[4],templateTable[5],templateTable[6]); |
salco | 17:095f670f9c14 | 398 | |
salco | 17:095f670f9c14 | 399 | // templateValue = /*templateCRC->*/calculateCRC16(templateTable,formatedDataSend.size()-1); //atention pt un probleme de sortie du range |
salco | 17:095f670f9c14 | 400 | //templateValue = /*templateCRC->calculateCRC16*/CRC16_BUYPASS(formatedDataSend.c_str(),formatedDataSend.size()); //atention pt un probleme de sortie du range |
salco | 17:095f670f9c14 | 401 | templateValue =CRC16_BUYPASS(sneekpeek.c_str(),sneekpeek.size()); //patch |
salco | 17:095f670f9c14 | 402 | |
salco | 17:095f670f9c14 | 403 | formatedDataSend.append(1,templateValue>>8); |
salco | 17:095f670f9c14 | 404 | formatedDataSend.append(1,templateValue & 0xFF); |
salco | 15:91b3c572d9df | 405 | } |
salco | 15:91b3c572d9df | 406 | formatedDataReceive.append(1,write(formatedDataSend[formatedDataSend.size()-2]));//templateValue>>8)); |
salco | 15:91b3c572d9df | 407 | //debug(DEBUG_SEND|DEBUG_COMPACT|DEBUG_SLIM, "\n\r -D: "); |
salco | 15:91b3c572d9df | 408 | formatedDataReceive.append(1,write(formatedDataSend[formatedDataSend.size()-1]));//(templateValue & 0xFF)); |
salco | 15:91b3c572d9df | 409 | //debug(DEBUG_SEND|DEBUG_COMPACT|DEBUG_SLIM, "\n\r -E: "); |
salco | 17:095f670f9c14 | 410 | |
salco | 17:095f670f9c14 | 411 | |
salco | 17:095f670f9c14 | 412 | |
salco | 15:91b3c572d9df | 413 | /////////////////////// |
salco | 15:91b3c572d9df | 414 | |
salco | 15:91b3c572d9df | 415 | //avant faut calculer les dernier byte grace a la version 2.0 |
salco | 15:91b3c572d9df | 416 | /*for(int i = 0; i < formatedDataSend.length(); ++i) { |
salco | 15:91b3c572d9df | 417 | formatedDataReceive.append(1,write(formatedDataSend[i])); |
salco | 15:91b3c572d9df | 418 | }*/ |
salco | 13:51bbdc349f20 | 419 | |
salco | 15:91b3c572d9df | 420 | // verification du CRC slave |
salco | 15:91b3c572d9df | 421 | // CRC // |
salco | 15:91b3c572d9df | 422 | templateValue = CRC16_BUYPASS(formatedDataReceive.c_str(),formatedDataReceive.size()-2);// utiliser les data de setting slave |
salco | 17:095f670f9c14 | 423 | |
salco | 15:91b3c572d9df | 424 | if(((templateValue>>8)==(formatedDataReceive.at( formatedDataReceive.length()-2))) && |
salco | 17:095f670f9c14 | 425 | ((templateValue&0xFF)==(formatedDataReceive.at( formatedDataReceive.length()-1)))) { |
salco | 15:91b3c572d9df | 426 | result=true; |
salco | 17:095f670f9c14 | 427 | } else { |
salco | 17:095f670f9c14 | 428 | result=false; |
salco | 17:095f670f9c14 | 429 | } |
salco | 15:91b3c572d9df | 430 | //templateValue=((formatedDataReceive.at( formatedDataReceive.length()-2)) << 8); |
salco | 15:91b3c572d9df | 431 | //templateValue|=formatedDataReceive.at(formatedDataReceive.length()-1); |
salco | 15:91b3c572d9df | 432 | |
salco | 17:095f670f9c14 | 433 | // for (unsigned i=0; i<formatedDataReceive.length()-2; ++i) { |
salco | 17:095f670f9c14 | 434 | // templateValue-=formatedDataReceive[i]; |
salco | 17:095f670f9c14 | 435 | // } |
salco | 17:095f670f9c14 | 436 | // debug(DEBUG_SEND, "\n\r -CRC==0? value: %i. ", templateValue); |
salco | 17:095f670f9c14 | 437 | // (templateValue==0)? result=true:result=false; |
salco | 13:51bbdc349f20 | 438 | } |
salco | 17:095f670f9c14 | 439 | debug(DEBUG_SEND|DEBUG_COMPACT|DEBUG_SLIM, "\n\r -Send : "); |
salco | 18:3f113f8441b2 | 440 | for (unsigned i=0; i<formatedDataSend.length(); i++) debug(DEBUG_SEND|DEBUG_COMPACT|DEBUG_SLIM, "%02X,",formatedDataSend.at(i)); |
salco | 18:3f113f8441b2 | 441 | debug(DEBUG_SEND|DEBUG_COMPACT|DEBUG_SLIM, "\n\r -real : "); |
salco | 17:095f670f9c14 | 442 | for (unsigned i=0; i<sneekpeek.length(); i++) debug(DEBUG_SEND|DEBUG_COMPACT|DEBUG_SLIM, "%02X,",sneekpeek.at(i)); |
salco | 15:91b3c572d9df | 443 | debug(DEBUG_SEND|DEBUG_COMPACT|DEBUG_SLIM, "\n\r -Reveive: "); |
salco | 15:91b3c572d9df | 444 | for (unsigned i=0; i<formatedDataReceive.length(); i++) debug(DEBUG_SEND|DEBUG_COMPACT|DEBUG_SLIM, "%02X,",formatedDataReceive.at(i)); |
salco | 15:91b3c572d9df | 445 | debug(DEBUG_SEND|DEBUG_COMPACT|DEBUG_SLIM, "\n\r -Sneekpe: "); |
salco | 17:095f670f9c14 | 446 | /*for (unsigned i=0; i<sneekpeek.length(); i++)*/ |
salco | 17:095f670f9c14 | 447 | debug(DEBUG_SEND|DEBUG_COMPACT|DEBUG_SLIM, "%04X,",CRC16_BUYPASS(formatedDataReceive.c_str(),formatedDataReceive.size()-2));//sneekpeek.at(i)); |
salco | 17:095f670f9c14 | 448 | debug(DEBUG_SEND|DEBUG_COMPACT|DEBUG_SLIM, "\n\r-Sneekpe: %04X,",CRC16_BUYPASS(formatedDataSend.c_str(),formatedDataSend.size()-2));//sneekpeek.at(i)); |
salco | 18:3f113f8441b2 | 449 | |
salco | 17:095f670f9c14 | 450 | |
salco | 15:91b3c572d9df | 451 | }//templateValue = /*templateCRC->*/calculateCRC16(formatedDataSend.c_str(),formatedDataSend.size()-1);sneekpeek |
salco | 15:91b3c572d9df | 452 | /////////////////////// |
salco | 15:91b3c572d9df | 453 | // // old // |
salco | 15:91b3c572d9df | 454 | // |
salco | 15:91b3c572d9df | 455 | // // data // |
salco | 15:91b3c572d9df | 456 | // debug(DEBUG_SEND, "\n\r -Debut data. "); |
salco | 15:91b3c572d9df | 457 | // if(data->size() != 0) { |
salco | 15:91b3c572d9df | 458 | // formatedDataSend.append(*data); |
salco | 15:91b3c572d9df | 459 | // debug(DEBUG_COMPACT, "\n\r -DATA ADDED: %02X, %02X, %02X, %02X, %02X ",formatedDataSend[0],formatedDataSend[1],formatedDataSend[2],formatedDataSend[3],formatedDataSend[4]); |
salco | 15:91b3c572d9df | 460 | // } |
salco | 15:91b3c572d9df | 461 | // debug(DEBUG_SEND, "\n\r -Fin data. "); |
salco | 15:91b3c572d9df | 462 | // |
salco | 15:91b3c572d9df | 463 | // // CRC // |
salco | 15:91b3c572d9df | 464 | // debug(DEBUG_SEND, "\n\r -Debut CRC16. "); |
salco | 15:91b3c572d9df | 465 | // //CRC16* templateCRC; |
salco | 15:91b3c572d9df | 466 | // //templateCRC = new CRC16(); |
salco | 15:91b3c572d9df | 467 | // unsigned short templateValue; |
salco | 15:91b3c572d9df | 468 | // char templateTable[34]; |
salco | 15:91b3c572d9df | 469 | // for (unsigned i=0; i<34; ++i) templateTable[i]=0; |
salco | 15:91b3c572d9df | 470 | // for (unsigned i=0; i<formatedDataSend.length(); ++i) templateTable[i]=formatedDataSend[i]; |
salco | 15:91b3c572d9df | 471 | // debug(DEBUG_SEND, "\n\r - envoi au crc: %02X,%02X,%02X,%02X,%02X,%02X ",templateTable[0],templateTable[1],templateTable[2],templateTable[3],templateTable[4],templateTable[5],templateTable[6]); |
salco | 15:91b3c572d9df | 472 | // |
salco | 15:91b3c572d9df | 473 | // templateValue = /*templateCRC->*/calculateCRC16(templateTable,formatedDataSend.size()-1); //atention pt un probleme de sortie du range |
salco | 15:91b3c572d9df | 474 | // |
salco | 15:91b3c572d9df | 475 | // formatedDataSend.append(1,templateValue>>8); |
salco | 15:91b3c572d9df | 476 | // formatedDataSend.append(1,templateValue & 0xFF); |
salco | 15:91b3c572d9df | 477 | // |
salco | 15:91b3c572d9df | 478 | // // if(templateCRC) |
salco | 15:91b3c572d9df | 479 | // // delete templateCRC; |
salco | 15:91b3c572d9df | 480 | // debug(DEBUG_COMPACT, "\n\r -DATA ADDED: %02X, %02X, %02X, %02X, %02X, %02X, %02X ",formatedDataSend[0],formatedDataSend[1],formatedDataSend[2],formatedDataSend[3],formatedDataSend[4],formatedDataSend[5],formatedDataSend[6]); |
salco | 15:91b3c572d9df | 481 | // debug(DEBUG_SEND, "\n\r -Fin CRC16. "); |
salco | 15:91b3c572d9df | 482 | // |
salco | 15:91b3c572d9df | 483 | // //Send Data |
salco | 15:91b3c572d9df | 484 | // debug(DEBUG_SEND, "\n\r -Debut Send Data. "); |
salco | 15:91b3c572d9df | 485 | // debug(DEBUG_SEND|DEBUG_COMPACT, "\n\r -Send: "); |
salco | 15:91b3c572d9df | 486 | // for (unsigned i=0; i<formatedDataSend.length(); ++i) debug(DEBUG_SEND |DEBUG_COMPACT, "%02X,",formatedDataSend.at(i)); |
salco | 15:91b3c572d9df | 487 | // |
salco | 15:91b3c572d9df | 488 | // int twoBytesArray; |
salco | 15:91b3c572d9df | 489 | // twoBytesArray = (formatedDataSend[0]<<8)|(formatedDataSend[1]); |
salco | 15:91b3c572d9df | 490 | // |
salco | 15:91b3c572d9df | 491 | // for(int i=0; (i<3) && (!result); i++) { |
salco | 15:91b3c572d9df | 492 | // debug(DEBUG_SEND|DEBUG_COMPACT, "\n\r -Tentative: %d",i); |
salco | 15:91b3c572d9df | 493 | // |
salco | 15:91b3c572d9df | 494 | // twoBytesArray=write(twoBytesArray); |
salco | 15:91b3c572d9df | 495 | // |
salco | 15:91b3c572d9df | 496 | // if(twoBytesArray>>8 == SYNC) {// twoBytesArray ==(Sync)//+(PFB+ACK+NDB)) |
salco | 15:91b3c572d9df | 497 | // // Envoie le reste si liker si liker // |
salco | 15:91b3c572d9df | 498 | // debug(DEBUG_SEND|DEBUG_COMPACT, "\n\r -Debut Traitement de l'information. "); |
salco | 15:91b3c572d9df | 499 | // debug(DEBUG_SEND|DEBUG_COMPACT, "\n\r -Receive: %02X",twoBytesArray); |
salco | 15:91b3c572d9df | 500 | // |
salco | 15:91b3c572d9df | 501 | // formatedDataReceive.clear(); |
salco | 15:91b3c572d9df | 502 | // formatedDataReceive.append(1,twoBytesArray>>8); |
salco | 15:91b3c572d9df | 503 | // formatedDataReceive.append(1,twoBytesArray & 0xFF); |
salco | 15:91b3c572d9df | 504 | // |
salco | 15:91b3c572d9df | 505 | // for (unsigned i=2; i<formatedDataSend.length(); ++i) { |
salco | 15:91b3c572d9df | 506 | // twoBytesArray = formatedDataSend[i]; |
salco | 15:91b3c572d9df | 507 | // i++; |
salco | 15:91b3c572d9df | 508 | // if(i<formatedDataSend.length()) |
salco | 15:91b3c572d9df | 509 | // twoBytesArray = (twoBytesArray<<8) + formatedDataSend[i]; |
salco | 15:91b3c572d9df | 510 | // |
salco | 15:91b3c572d9df | 511 | // twoBytesArray=write(twoBytesArray); |
salco | 15:91b3c572d9df | 512 | // formatedDataReceive.append(1,twoBytesArray>>8); |
salco | 15:91b3c572d9df | 513 | // formatedDataReceive.append(1,twoBytesArray&0xFF); |
salco | 15:91b3c572d9df | 514 | // } |
salco | 15:91b3c572d9df | 515 | // |
salco | 15:91b3c572d9df | 516 | // // CRC // |
salco | 15:91b3c572d9df | 517 | // unsigned short templateValue=1; |
salco | 15:91b3c572d9df | 518 | // templateValue=formatedDataReceive.at(formatedDataReceive.length()-2) << 8; |
salco | 15:91b3c572d9df | 519 | // templateValue|=formatedDataReceive.at(formatedDataReceive.length()-1); |
salco | 15:91b3c572d9df | 520 | // |
salco | 15:91b3c572d9df | 521 | // for (unsigned i=0; i<formatedDataReceive.length()-2; ++i) { |
salco | 15:91b3c572d9df | 522 | // templateValue-=formatedDataReceive[i]; |
salco | 15:91b3c572d9df | 523 | // } |
salco | 15:91b3c572d9df | 524 | // debug(DEBUG_SEND, "\n\r -CRC==0? value: %i. ", templateValue); |
salco | 15:91b3c572d9df | 525 | // (templateValue==0)? result=true:result=false; |
salco | 15:91b3c572d9df | 526 | //} |
salco | 15:91b3c572d9df | 527 | //} |
salco | 15:91b3c572d9df | 528 | //debug(DEBUG_SEND, "\n\r -Fin Send Data. "); |
salco | 15:91b3c572d9df | 529 | // |
salco | 15:91b3c572d9df | 530 | |
salco | 15:91b3c572d9df | 531 | |
salco | 17:095f670f9c14 | 532 | |
salco | 12:bf44013497c8 | 533 | |
salco | 13:51bbdc349f20 | 534 | if(result) { |
salco | 13:51bbdc349f20 | 535 | // Traitement de l'information // |
salco | 12:bf44013497c8 | 536 | debug(DEBUG_SEND, "\n\r -Debut Traitement de l'information. "); |
salco | 12:bf44013497c8 | 537 | debug(DEBUG_SEND, "\n\r -Receive: "); |
salco | 15:91b3c572d9df | 538 | for (unsigned i=0; i<formatedDataReceive.length(); ++i)debug(DEBUG_SEND|DEBUG_COMPACT, "%02X,",formatedDataReceive.at(i)); |
salco | 12:bf44013497c8 | 539 | |
salco | 10:7e6aeaebe1a2 | 540 | // flag // |
salco | 10:7e6aeaebe1a2 | 541 | flag->clear(); |
salco | 17:095f670f9c14 | 542 | if((settingSlave>>6) != 0) { |
salco | 17:095f670f9c14 | 543 | //string str = formatedDataReceive.substr( ((2+(settingMaster>>6))+1+1),(settingSlave>>6)); |
salco | 17:095f670f9c14 | 544 | flag->append(formatedDataReceive.substr( ((2+(settingMaster>>6))+1+1),(settingSlave>>6)));// = &str; |
salco | 17:095f670f9c14 | 545 | |
salco | 17:095f670f9c14 | 546 | //debug(DEBUG_SLIM, "\n\r -flag get: "); |
salco | 17:095f670f9c14 | 547 | //for (unsigned i=0; i<str.length(); i++) debug(DEBUG_SLIM, "%02X,",str.at(i)); |
salco | 16:5ea4337d785f | 548 | } |
salco | 15:91b3c572d9df | 549 | //twoBytesArray=formatedDataReceive[2]; |
salco | 15:91b3c572d9df | 550 | //!!!!! wtf is that cest claire que sa pete la com |
salco | 16:5ea4337d785f | 551 | /*string::iterator it=formatedDataReceive.begin()+3; |
salco | 13:51bbdc349f20 | 552 | |
salco | 15:91b3c572d9df | 553 | switch(settingSlave>>6) { |
salco | 10:7e6aeaebe1a2 | 554 | case 1: |
salco | 10:7e6aeaebe1a2 | 555 | flag->append(1,*it); |
salco | 10:7e6aeaebe1a2 | 556 | it++; |
salco | 10:7e6aeaebe1a2 | 557 | break; |
salco | 7:dcfd81d7f93f | 558 | |
salco | 10:7e6aeaebe1a2 | 559 | case 2: |
salco | 10:7e6aeaebe1a2 | 560 | flag->append(1,*it); |
salco | 10:7e6aeaebe1a2 | 561 | it++; |
salco | 10:7e6aeaebe1a2 | 562 | flag->append(1,*it); |
salco | 10:7e6aeaebe1a2 | 563 | it++; |
salco | 10:7e6aeaebe1a2 | 564 | break; |
salco | 7:dcfd81d7f93f | 565 | |
salco | 10:7e6aeaebe1a2 | 566 | case 3: |
salco | 10:7e6aeaebe1a2 | 567 | flag->append(1,*it); |
salco | 10:7e6aeaebe1a2 | 568 | it++; |
salco | 10:7e6aeaebe1a2 | 569 | flag->append(1,*it); |
salco | 10:7e6aeaebe1a2 | 570 | it++; |
salco | 10:7e6aeaebe1a2 | 571 | flag->append(1,*it); |
salco | 10:7e6aeaebe1a2 | 572 | it++; |
salco | 16:5ea4337d785f | 573 | break;*/ |
salco | 7:dcfd81d7f93f | 574 | |
salco | 17:095f670f9c14 | 575 | /*default: |
salco | 17:095f670f9c14 | 576 | formatedDataSend.append(1,0<<6); |
salco | 17:095f670f9c14 | 577 | break;*/ |
salco | 17:095f670f9c14 | 578 | // } |
salco | 12:bf44013497c8 | 579 | |
salco | 10:7e6aeaebe1a2 | 580 | // ACK/NAK |
salco | 10:7e6aeaebe1a2 | 581 | // |
salco | 7:dcfd81d7f93f | 582 | |
salco | 10:7e6aeaebe1a2 | 583 | // NDB // |
salco | 10:7e6aeaebe1a2 | 584 | data->clear(); |
salco | 17:095f670f9c14 | 585 | if((settingSlave&0x0F) != 0) { |
salco | 17:095f670f9c14 | 586 | //string str = formatedDataReceive.substr( ((2+(settingMaster>>6))+1+(settingSlave>>6)+1),(settingSlave&0x0F)); |
salco | 17:095f670f9c14 | 587 | data->append(formatedDataReceive.substr( ((2+(settingMaster>>6))+1+(settingSlave>>6)+1),(settingSlave&0x0F))); |
salco | 17:095f670f9c14 | 588 | |
salco | 17:095f670f9c14 | 589 | //debug(DEBUG_SLIM, "\n\r -data get: "); |
salco | 17:095f670f9c14 | 590 | //for (unsigned i=0; i<str.length(); i++) debug(DEBUG_SLIM, "%02X,",str.at(i)); |
salco | 16:5ea4337d785f | 591 | } |
salco | 15:91b3c572d9df | 592 | //!!!!! same shit faut rebild la chose en bas |
salco | 17:095f670f9c14 | 593 | /* switch(settingSlave&0xFF) { |
salco | 17:095f670f9c14 | 594 | case 1: |
salco | 17:095f670f9c14 | 595 | data->append(1,*it); |
salco | 17:095f670f9c14 | 596 | it++; |
salco | 17:095f670f9c14 | 597 | break; |
salco | 7:dcfd81d7f93f | 598 | |
salco | 17:095f670f9c14 | 599 | case 2: |
salco | 17:095f670f9c14 | 600 | data->append(1,*it); |
salco | 17:095f670f9c14 | 601 | it++; |
salco | 17:095f670f9c14 | 602 | data->append(1,*it); |
salco | 17:095f670f9c14 | 603 | it++; |
salco | 17:095f670f9c14 | 604 | break; |
salco | 10:7e6aeaebe1a2 | 605 | |
salco | 17:095f670f9c14 | 606 | case 3: |
salco | 17:095f670f9c14 | 607 | data->append(1,*it); |
salco | 17:095f670f9c14 | 608 | it++; |
salco | 17:095f670f9c14 | 609 | data->append(1,*it); |
salco | 17:095f670f9c14 | 610 | it++; |
salco | 17:095f670f9c14 | 611 | data->append(1,*it); |
salco | 17:095f670f9c14 | 612 | it++; |
salco | 17:095f670f9c14 | 613 | break;*/ |
salco | 10:7e6aeaebe1a2 | 614 | |
salco | 17:095f670f9c14 | 615 | /*default: |
salco | 10:7e6aeaebe1a2 | 616 | |
salco | 17:095f670f9c14 | 617 | break;*/ |
salco | 16:5ea4337d785f | 618 | //} |
salco | 13:51bbdc349f20 | 619 | } |
salco | 12:bf44013497c8 | 620 | |
salco | 12:bf44013497c8 | 621 | debug(DEBUG_SEND, "\n\r -Fin Traitement de l'information. "); |
salco | 15:91b3c572d9df | 622 | debug(DEBUG_SEND|DEBUG_COMPACT, "\n\r -Fin du send. "); |
salco | 7:dcfd81d7f93f | 623 | return result; |
salco | 7:dcfd81d7f93f | 624 | } |