Oleg Evsegneev / SerialFlow
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?

UserRevisionLine numberNew 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