Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
SerialCtrl.cpp@1:0184f38e2e83, 2019-09-02 (annotated)
- Committer:
- yabumi823
- Date:
- Mon Sep 02 02:15:34 2019 +0000
- Revision:
- 1:0184f38e2e83
- Parent:
- SerialCtrl/SerialCtrl.cpp@0:0dcd02e8aeab
- Child:
- 4:32f7deade942
fixed directory
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| yabumi823 | 0:0dcd02e8aeab | 1 | #include <SerialCtrl.h> |
| yabumi823 | 0:0dcd02e8aeab | 2 | #include "mbed.h" |
| yabumi823 | 0:0dcd02e8aeab | 3 | |
| yabumi823 | 0:0dcd02e8aeab | 4 | SerialCtrl::SerialCtrl(Serial *pts, Timer *ptt) { |
| yabumi823 | 0:0dcd02e8aeab | 5 | _Serial = pts; |
| yabumi823 | 0:0dcd02e8aeab | 6 | _Timer = ptt; |
| yabumi823 | 0:0dcd02e8aeab | 7 | TIMEOUT_MS = 8; |
| yabumi823 | 0:0dcd02e8aeab | 8 | } |
| yabumi823 | 0:0dcd02e8aeab | 9 | |
| yabumi823 | 0:0dcd02e8aeab | 10 | void SerialCtrl::param(unsigned char header, unsigned char footer) { |
| yabumi823 | 0:0dcd02e8aeab | 11 | STX = header; |
| yabumi823 | 0:0dcd02e8aeab | 12 | ETX = footer; |
| yabumi823 | 0:0dcd02e8aeab | 13 | } |
| yabumi823 | 0:0dcd02e8aeab | 14 | |
| yabumi823 | 0:0dcd02e8aeab | 15 | bool SerialCtrl::get() { |
| yabumi823 | 0:0dcd02e8aeab | 16 | int fail = 0; |
| yabumi823 | 0:0dcd02e8aeab | 17 | unsigned char sum = 0; |
| yabumi823 | 0:0dcd02e8aeab | 18 | |
| yabumi823 | 0:0dcd02e8aeab | 19 | while(1) { |
| yabumi823 | 0:0dcd02e8aeab | 20 | if(input() == STX) { |
| yabumi823 | 0:0dcd02e8aeab | 21 | break; |
| yabumi823 | 0:0dcd02e8aeab | 22 | } else { |
| yabumi823 | 0:0dcd02e8aeab | 23 | ++fail; |
| yabumi823 | 0:0dcd02e8aeab | 24 | if(fail > FAIL_MAX) return false; |
| yabumi823 | 0:0dcd02e8aeab | 25 | } |
| yabumi823 | 0:0dcd02e8aeab | 26 | } |
| yabumi823 | 0:0dcd02e8aeab | 27 | |
| yabumi823 | 0:0dcd02e8aeab | 28 | for(int i=0; i<DATA_N; ++i) data[i] = input(); |
| yabumi823 | 0:0dcd02e8aeab | 29 | for(int i=0; i<DATA_N-1; ++i) sum += data[i]; |
| yabumi823 | 0:0dcd02e8aeab | 30 | |
| yabumi823 | 0:0dcd02e8aeab | 31 | if( (sum == data[SUM]) && (input() == ETX) ) { |
| yabumi823 | 0:0dcd02e8aeab | 32 | return true; |
| yabumi823 | 0:0dcd02e8aeab | 33 | } else { |
| yabumi823 | 0:0dcd02e8aeab | 34 | return false; |
| yabumi823 | 0:0dcd02e8aeab | 35 | } |
| yabumi823 | 0:0dcd02e8aeab | 36 | } |
| yabumi823 | 0:0dcd02e8aeab | 37 | |
| yabumi823 | 0:0dcd02e8aeab | 38 | unsigned char SerialCtrl::input() { |
| yabumi823 | 0:0dcd02e8aeab | 39 | _Timer->reset(); |
| yabumi823 | 0:0dcd02e8aeab | 40 | while(_Timer->read_ms() < TIMEOUT_MS) { |
| yabumi823 | 0:0dcd02e8aeab | 41 | if( _Serial->readable() ) { |
| yabumi823 | 0:0dcd02e8aeab | 42 | return _Serial->getc(); |
| yabumi823 | 0:0dcd02e8aeab | 43 | } |
| yabumi823 | 0:0dcd02e8aeab | 44 | } |
| yabumi823 | 0:0dcd02e8aeab | 45 | return NUL; |
| yabumi823 | 0:0dcd02e8aeab | 46 | } |