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.
SerialFlow.h@4:ebf658b28c5f, 2012-10-21 (annotated)
- Committer:
- Decimus
- Date:
- Sun Oct 21 17:40:25 2012 +0000
- Revision:
- 4:ebf658b28c5f
- Parent:
- 3:7cbfd422c98e
USE_MODSERIAL flag is on by default
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| Decimus | 1:5f80d8d44549 | 1 | /* mbed Serial Flow Library |
| Decimus | 1:5f80d8d44549 | 2 | * Copyright (c) 2012 Oleg Evsegneev |
| Decimus | 3:7cbfd422c98e | 3 | * Released under the MIT License: http://mbed.org/license/mit |
| Decimus | 1:5f80d8d44549 | 4 | */ |
| Decimus | 1:5f80d8d44549 | 5 | |
| Decimus | 1:5f80d8d44549 | 6 | #ifndef MBED_SERIALFLOW_H |
| Decimus | 1:5f80d8d44549 | 7 | #define MBED_SERIALFLOW_H |
| Decimus | 3:7cbfd422c98e | 8 | |
| Decimus | 3:7cbfd422c98e | 9 | // optional use of MODSERIAL |
| Decimus | 4:ebf658b28c5f | 10 | #define USE_MODSERIAL |
| Decimus | 3:7cbfd422c98e | 11 | |
| Decimus | 1:5f80d8d44549 | 12 | #include "mbed.h" |
| Decimus | 1:5f80d8d44549 | 13 | |
| Decimus | 3:7cbfd422c98e | 14 | #ifdef USE_MODSERIAL |
| Decimus | 3:7cbfd422c98e | 15 | #include "MODSERIAL.h" |
| Decimus | 3:7cbfd422c98e | 16 | #endif |
| Decimus | 3:7cbfd422c98e | 17 | |
| Decimus | 3:7cbfd422c98e | 18 | #define MAX_PACKET_SIZE 10 |
| Decimus | 3:7cbfd422c98e | 19 | #define RX_BUFFER_SIZE 32 |
| Decimus | 3:7cbfd422c98e | 20 | #define TX_BUFFER_SIZE 32 |
| Decimus | 1:5f80d8d44549 | 21 | |
| Decimus | 1:5f80d8d44549 | 22 | class SerialFlow { |
| Decimus | 1:5f80d8d44549 | 23 | |
| Decimus | 1:5f80d8d44549 | 24 | public: |
| Decimus | 1:5f80d8d44549 | 25 | /** Data format */ |
| Decimus | 1:5f80d8d44549 | 26 | enum DataFormat { |
| Decimus | 1:5f80d8d44549 | 27 | SIMPLE /**< Simple one byte (default) */ |
| Decimus | 3:7cbfd422c98e | 28 | , COMPLEX /**< Packet of many short values */ |
| Decimus | 1:5f80d8d44549 | 29 | }; |
| Decimus | 1:5f80d8d44549 | 30 | |
| Decimus | 1:5f80d8d44549 | 31 | SerialFlow(PinName tx, PinName rx); |
| Decimus | 1:5f80d8d44549 | 32 | |
| Decimus | 3:7cbfd422c98e | 33 | /** Set portal baud rate |
| Decimus | 2:7868220b4fdf | 34 | * |
| Decimus | 2:7868220b4fdf | 35 | * @param baud_rate Port baud rate. |
| Decimus | 2:7868220b4fdf | 36 | */ |
| Decimus | 2:7868220b4fdf | 37 | void baud(int baud_rate); |
| Decimus | 2:7868220b4fdf | 38 | |
| Decimus | 1:5f80d8d44549 | 39 | /** Set data packet format |
| Decimus | 1:5f80d8d44549 | 40 | * |
| Decimus | 1:5f80d8d44549 | 41 | * @param p_format Format type constant. |
| Decimus | 1:5f80d8d44549 | 42 | * @param v_length Length of value in bytes. |
| Decimus | 1:5f80d8d44549 | 43 | * @param p_size Number of values. |
| Decimus | 1:5f80d8d44549 | 44 | */ |
| Decimus | 1:5f80d8d44549 | 45 | void setPacketFormat(DataFormat p_format, char v_length, char p_size); |
| Decimus | 1:5f80d8d44549 | 46 | |
| Decimus | 1:5f80d8d44549 | 47 | /** Set value to data packet |
| Decimus | 1:5f80d8d44549 | 48 | * |
| Decimus | 1:5f80d8d44549 | 49 | * @param value Value. |
| Decimus | 1:5f80d8d44549 | 50 | */ |
| Decimus | 1:5f80d8d44549 | 51 | void setPacketValue(short value); |
| Decimus | 1:5f80d8d44549 | 52 | |
| Decimus | 1:5f80d8d44549 | 53 | /** Send packet to serial port |
| Decimus | 1:5f80d8d44549 | 54 | */ |
| Decimus | 3:7cbfd422c98e | 55 | bool sendPacket(); |
| Decimus | 1:5f80d8d44549 | 56 | |
| Decimus | 1:5f80d8d44549 | 57 | /** Receive packet from serial port |
| Decimus | 1:5f80d8d44549 | 58 | */ |
| Decimus | 1:5f80d8d44549 | 59 | bool receivePacket(); |
| Decimus | 1:5f80d8d44549 | 60 | |
| Decimus | 1:5f80d8d44549 | 61 | /** Get received packet |
| Decimus | 1:5f80d8d44549 | 62 | * @param idx Index of value from packet. |
| Decimus | 1:5f80d8d44549 | 63 | */ |
| Decimus | 1:5f80d8d44549 | 64 | short getPacket( char idx ); |
| Decimus | 1:5f80d8d44549 | 65 | |
| Decimus | 1:5f80d8d44549 | 66 | protected: |
| Decimus | 3:7cbfd422c98e | 67 | #ifdef USE_MODSERIAL |
| Decimus | 3:7cbfd422c98e | 68 | MODSERIAL _serial; |
| Decimus | 3:7cbfd422c98e | 69 | #else |
| Decimus | 1:5f80d8d44549 | 70 | Serial _serial; |
| Decimus | 3:7cbfd422c98e | 71 | #endif |
| Decimus | 3:7cbfd422c98e | 72 | |
| Decimus | 1:5f80d8d44549 | 73 | char _p_format; |
| Decimus | 1:5f80d8d44549 | 74 | char _p_size; |
| Decimus | 1:5f80d8d44549 | 75 | char _v_length; |
| Decimus | 1:5f80d8d44549 | 76 | |
| Decimus | 1:5f80d8d44549 | 77 | short _vs[MAX_PACKET_SIZE]; |
| Decimus | 1:5f80d8d44549 | 78 | char _vs_idx; |
| Decimus | 1:5f80d8d44549 | 79 | |
| Decimus | 1:5f80d8d44549 | 80 | short _vr[MAX_PACKET_SIZE]; |
| Decimus | 1:5f80d8d44549 | 81 | char _vr_val[2]; |
| Decimus | 1:5f80d8d44549 | 82 | char _vr_idx; |
| Decimus | 1:5f80d8d44549 | 83 | char _cr_idx; |
| Decimus | 1:5f80d8d44549 | 84 | bool _escape; |
| Decimus | 1:5f80d8d44549 | 85 | bool _collecting; |
| Decimus | 1:5f80d8d44549 | 86 | }; |
| Decimus | 1:5f80d8d44549 | 87 | |
| Decimus | 1:5f80d8d44549 | 88 | #endif |