domotique-stm32 / Mbed 2 deprecated grove_stream_jpa_sd2-3

Dependencies:   F7_Ethernet mbed MbedJSONValue LCD_DISCO_F746NG mbed-rtos BSP_DISCO_F746NG CANMsg NetworkAPI SDFileSystem_Warning_Fixed GroveStreamsmodified LcdDiscoF746NgTracer JSON

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers ManageBufferJPA.cpp Source File

ManageBufferJPA.cpp

00001 #include "mbed.h"
00002 
00003 const int        kMaxBufferSize = 125;
00004 volatile char    bufferSerialUSB[kMaxBufferSize+3];
00005 volatile int     idxSerialIntUSB = 0;
00006 int              idxSerialUserUSB = 0;
00007 volatile int     msgSerialUSB = 0;
00008 char             stringSerialUSB[kMaxBufferSize+3];
00009 int              stringSerialUSBok = 0;               // si ==1 alors trame dispo (fin de trame == LF ou 10
00010 int              idxSerialStringUSB = 0;
00011 volatile char    bufferSerial2[kMaxBufferSize+3];
00012 volatile int     idxSerialInt2 = 0;
00013 int              idxSerialUser2 = 0;
00014 volatile int     msgSerial2 = 0;
00015 char             stringSerial2[kMaxBufferSize+3];
00016 int              stringSerial2ok = 0;                 // si ==1 alors trame dispo (fin de trame == LF ou 10
00017 int              idxSerialString2 = 0;
00018 volatile char    bufferSerial7[kMaxBufferSize+3];
00019 volatile int     idxSerialInt7 = 0;
00020 int              idxSerialUser7 = 0;
00021 volatile int     msgSerial7 = 0;
00022 char             stringSerial7[kMaxBufferSize+3];
00023 int              stringSerial7ok = 0;                 // si ==1 alors trame dispo (fin de trame == LF ou 10
00024 int              idxSerialString7 = 0;
00025 
00026 //RawSerial
00027 RawSerial          serialUSB(USBTX, USBRX);    // serial PC
00028 RawSerial          serial2(PC_6, PC_7); // TX, RX for udp bridge
00029 RawSerial          serial7(PF_7, PF_6); // TX, RX for extension
00030 // ---------------------------------------------------
00031 void serialUSB_int_recv()
00032    { if(serialUSB.readable()) 
00033        { bufferSerialUSB[idxSerialIntUSB]=(serialUSB.getc());
00034         idxSerialIntUSB++;
00035         if (idxSerialIntUSB >= kMaxBufferSize) {idxSerialIntUSB = 0;}
00036         bufferSerialUSB[idxSerialIntUSB]= 0;
00037         msgSerialUSB = 1;
00038         }
00039     return;
00040     }
00041 // ---------------------------------------------------------------------------
00042 void serial2_int_recv()
00043    { if(serial2.readable()) 
00044       { bufferSerial2[idxSerialInt2]=(serial2.getc());
00045         idxSerialInt2++;
00046         if (idxSerialInt2 >= kMaxBufferSize) {idxSerialInt2 = 0;}
00047         bufferSerial2[idxSerialInt2]= 0;
00048         msgSerial2 = 1;
00049         }
00050     return;
00051     }
00052 // ----------------------------------------------------------------------------
00053 void serial7_int_recv()
00054    { if(serial7.readable()) 
00055       { bufferSerial7[idxSerialInt7]=(serial7.getc());
00056         //printf("%c",bufferSerial7[idxSerialInt7]);
00057         idxSerialInt7++;
00058         if (idxSerialInt7 >= kMaxBufferSize) {idxSerialInt7 = 0;}
00059         bufferSerial7[idxSerialInt7]= 0;
00060         msgSerial7 = 1;
00061         }
00062     return;
00063     }   
00064 // --------------------------------------------------------------------------------   
00065 void initSerial()
00066   { serialUSB.baud(115200);
00067     serialUSB.attach(&serialUSB_int_recv, Serial::RxIrq);
00068     serial2.baud(115200);  // required for Tasmota
00069     //serial2.baud(57600);  // required for UDP bridge
00070     serial2.attach(&serial2_int_recv, Serial::RxIrq);
00071     serial7.baud(115200);  // required for tasmota
00072     serial7.attach(&serial7_int_recv, Serial::RxIrq);    
00073     bufferSerialUSB[0] = '\0';
00074     bufferSerial2[0] = '\0';
00075     bufferSerial7[0] = '\0';   
00076     }
00077 // ---------------------------------------------------------------------------      
00078 void sendSerialUSB(char * str)
00079   { serialUSB.printf(str);
00080     }
00081 // ---------------------------------------------------------------------------    
00082 void receiveSerialUSB()
00083   { char x;
00084     if (stringSerialUSBok == 0)     // string user dispo flag a mettre a 0 par user a chaque lecture de string
00085       { while(idxSerialIntUSB != idxSerialUserUSB)
00086          {  x=bufferSerialUSB[idxSerialUserUSB];
00087             //printf("%c",x);  
00088             idxSerialUserUSB = idxSerialUserUSB + 1;
00089             if (idxSerialUserUSB >= kMaxBufferSize) {idxSerialUserUSB = 0;}            
00090             stringSerialUSB[idxSerialStringUSB] = x;
00091             idxSerialStringUSB = idxSerialStringUSB + 1;stringSerialUSB[idxSerialStringUSB] = 0;
00092             if (idxSerialStringUSB >= kMaxBufferSize) 
00093                 {stringSerialUSB[idxSerialStringUSB-1] = 10;idxSerialStringUSB = 0;stringSerialUSBok = 1;}
00094             if (x == 10) {idxSerialStringUSB = 0;stringSerialUSBok = 1;}
00095             }
00096         msgSerialUSB = 0;
00097         }
00098     }
00099 // ------------------------------------------------------------------------------    
00100 void sendSerial2(char * str)
00101   { serial2.printf(str);
00102   }
00103 // ------------------------------------------------------------------------------    
00104 void receiveSerial2()
00105     {char x;
00106      if (stringSerial2ok == 0)     // string user dispo flag a mettre a 0 par user a chaque lecture de string
00107        { while(idxSerialInt2 != idxSerialUser2)
00108           { x=bufferSerial2[idxSerialUser2];
00109             //printf("%c",x);  
00110             idxSerialUser2 = idxSerialUser2 + 1;
00111             if (idxSerialUser2 >= kMaxBufferSize) {idxSerialUser2 = 0;}             
00112             stringSerial2[idxSerialString2] = x;
00113             idxSerialString2 = idxSerialString2 + 1;stringSerial2[idxSerialString2] = 0;
00114             if (idxSerialString2 >= kMaxBufferSize) 
00115                 {stringSerial2[idxSerialString2-1] = 10;idxSerialString2 = 0;stringSerial2ok = 1;}
00116             if (x == 10) {idxSerialString2 = 0;stringSerial2ok = 1;}
00117             }
00118         msgSerial2 = 0;
00119         }
00120     }
00121 // --------------------------------------------------------------------------------       
00122 void sendSerial7(char * str)
00123     { serial7.printf(str);
00124     }
00125 // -------------------------------------------------------------------------------    
00126 void receiveSerial7()
00127     { char x;
00128     if (stringSerial7 == 0)     // string user dispo flag a mettre a 0 par user a chaque lecture de string
00129         { while(idxSerialInt7 != idxSerialUser7)
00130             { x=bufferSerial7[idxSerialUser7];
00131             //printf("%c",x);  
00132             idxSerialUser7 = idxSerialUser7 + 1;
00133             if (idxSerialUser7 >= kMaxBufferSize) {idxSerialUser7 = 0;} 
00134             
00135             stringSerial7[idxSerialString7] = x;
00136             idxSerialString7 = idxSerialString7 + 1;stringSerial2[idxSerialString7] = 0;
00137             if (idxSerialString7 >= kMaxBufferSize) 
00138                 {stringSerial7[idxSerialString7-1] = 10;idxSerialString7 = 0;stringSerial7ok = 1;}
00139             if (x == 10) {idxSerialString7 = 0;stringSerial7ok = 1;}
00140             }
00141         //msgSerial2 = 0;
00142         msgSerial7 = 0;
00143         }
00144     }