wifisp2
wifiesp8266.cpp@1:933bf1dbce6d, 2021-06-06 (annotated)
- Committer:
- schnf30
- Date:
- Sun Jun 06 12:17:57 2021 +0000
- Revision:
- 1:933bf1dbce6d
- Parent:
- 0:5339903aacbc
a
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
schnf30 | 0:5339903aacbc | 1 | #include "mbed.h" |
schnf30 | 0:5339903aacbc | 2 | #include "wifiesp8266.h" |
schnf30 | 1:933bf1dbce6d | 3 | WifiEsp8266::WifiEsp8266(PinName Txd, PinName Rxd) : RawSerial(Txd,Rxd) |
schnf30 | 0:5339903aacbc | 4 | { |
schnf30 | 0:5339903aacbc | 5 | baud(Baud); |
schnf30 | 1:933bf1dbce6d | 6 | _DataPtr = 0; |
schnf30 | 0:5339903aacbc | 7 | _DataReady = false; |
schnf30 | 0:5339903aacbc | 8 | attach(this,&WifiEsp8266::receive, RawSerial::RxIrq); |
schnf30 | 0:5339903aacbc | 9 | } |
schnf30 | 1:933bf1dbce6d | 10 | |
schnf30 | 0:5339903aacbc | 11 | char * WifiEsp8266::read(void) |
schnf30 | 0:5339903aacbc | 12 | { |
schnf30 | 1:933bf1dbce6d | 13 | _DataReady = false; |
schnf30 | 0:5339903aacbc | 14 | return _Data; |
schnf30 | 1:933bf1dbce6d | 15 | } |
schnf30 | 0:5339903aacbc | 16 | |
schnf30 | 0:5339903aacbc | 17 | bool WifiEsp8266::dataready(void) |
schnf30 | 0:5339903aacbc | 18 | { |
schnf30 | 0:5339903aacbc | 19 | return _DataReady; |
schnf30 | 1:933bf1dbce6d | 20 | } |
schnf30 | 1:933bf1dbce6d | 21 | |
schnf30 | 0:5339903aacbc | 22 | // reception phrase de type '$' "....' "\r\n" |
schnf30 | 0:5339903aacbc | 23 | void WifiEsp8266::receive(void) |
schnf30 | 0:5339903aacbc | 24 | { |
schnf30 | 0:5339903aacbc | 25 | bool _PhraseComplete = false; |
schnf30 | 1:933bf1dbce6d | 26 | char inChar; |
schnf30 | 0:5339903aacbc | 27 | while (readable() && (_PhraseComplete == false)) { |
schnf30 | 0:5339903aacbc | 28 | inChar = getc(); |
schnf30 | 0:5339903aacbc | 29 | switch (inChar) { |
schnf30 | 0:5339903aacbc | 30 | case '$' : |
schnf30 | 0:5339903aacbc | 31 | _DataPtr = 0; |
schnf30 | 0:5339903aacbc | 32 | _DataTmp[_DataPtr++] = inChar; |
schnf30 | 0:5339903aacbc | 33 | _DataTmp[_DataPtr] = 0; |
schnf30 | 0:5339903aacbc | 34 | break; |
schnf30 | 0:5339903aacbc | 35 | case '\n' : |
schnf30 | 0:5339903aacbc | 36 | if (_DataPtr > 1) { |
schnf30 | 0:5339903aacbc | 37 | strcpy(_Data,_DataTmp); |
schnf30 | 0:5339903aacbc | 38 | _PhraseComplete = true; |
schnf30 | 0:5339903aacbc | 39 | } |
schnf30 | 0:5339903aacbc | 40 | _DataTmp[0] = 0; |
schnf30 | 0:5339903aacbc | 41 | _DataPtr = 0; |
schnf30 | 0:5339903aacbc | 42 | break; |
schnf30 | 0:5339903aacbc | 43 | case '\r' : |
schnf30 | 0:5339903aacbc | 44 | break; |
schnf30 | 0:5339903aacbc | 45 | default : |
schnf30 | 0:5339903aacbc | 46 | if (_DataPtr > 0) { |
schnf30 | 0:5339903aacbc | 47 | _DataTmp[_DataPtr++] = inChar; |
schnf30 | 0:5339903aacbc | 48 | _DataTmp[_DataPtr] = 0; |
schnf30 | 0:5339903aacbc | 49 | } |
schnf30 | 0:5339903aacbc | 50 | } |
schnf30 | 0:5339903aacbc | 51 | if (_DataPtr >= maxdata) { // si phrase trop longue vide phrase |
schnf30 | 0:5339903aacbc | 52 | _DataTmp[0] = 0; |
schnf30 | 0:5339903aacbc | 53 | _DataPtr = 0; |
schnf30 | 0:5339903aacbc | 54 | _PhraseComplete = false; |
schnf30 | 0:5339903aacbc | 55 | } |
schnf30 | 0:5339903aacbc | 56 | } |
schnf30 | 0:5339903aacbc | 57 | _DataReady = _PhraseComplete; |
schnf30 | 0:5339903aacbc | 58 | } |