Serial port handler class that allows sharing data from the serial ports via message queues objects. Each instance of this class is intended to handle a serial port in the system and is suitable for slow serial protocols.
Dependents: Nucleo_modbus_protocol_test
SerialPortHandler.h@2:aa72cb66762f, 2015-01-19 (annotated)
- Committer:
- gabrielrivas
- Date:
- Mon Jan 19 15:44:04 2015 +0000
- Revision:
- 2:aa72cb66762f
- Parent:
- 1:a891da6966b7
Documentation added.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
gabrielrivas | 1:a891da6966b7 | 1 | /** Serial port handler. |
gabrielrivas | 1:a891da6966b7 | 2 | * Copyright (c) 2015 Gabriel Rivas |
gabrielrivas | 1:a891da6966b7 | 3 | * |
gabrielrivas | 1:a891da6966b7 | 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
gabrielrivas | 1:a891da6966b7 | 5 | * you may not use this file except in compliance with the License. |
gabrielrivas | 1:a891da6966b7 | 6 | * You may obtain a copy of the License at |
gabrielrivas | 1:a891da6966b7 | 7 | * |
gabrielrivas | 1:a891da6966b7 | 8 | * http://www.apache.org/licenses/LICENSE-2.0 |
gabrielrivas | 1:a891da6966b7 | 9 | * |
gabrielrivas | 1:a891da6966b7 | 10 | * Unless required by applicable law or agreed to in writing, software |
gabrielrivas | 1:a891da6966b7 | 11 | * distributed under the License is distributed on an "AS IS" BASIS, |
gabrielrivas | 1:a891da6966b7 | 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
gabrielrivas | 1:a891da6966b7 | 13 | * See the License for the specific language governing permissions and |
gabrielrivas | 1:a891da6966b7 | 14 | * limitations under the License. |
gabrielrivas | 1:a891da6966b7 | 15 | */ |
gabrielrivas | 1:a891da6966b7 | 16 | |
gabrielrivas | 1:a891da6966b7 | 17 | |
gabrielrivas | 0:f66dd1c93477 | 18 | #ifndef _SERIAL_PORT_HANDLER_H_ |
gabrielrivas | 0:f66dd1c93477 | 19 | #define _SERIAL_PORT_HANDLER_H_ |
gabrielrivas | 0:f66dd1c93477 | 20 | |
gabrielrivas | 0:f66dd1c93477 | 21 | #include "mbed.h" |
gabrielrivas | 0:f66dd1c93477 | 22 | #include "MessageQueue.h" |
gabrielrivas | 0:f66dd1c93477 | 23 | |
gabrielrivas | 1:a891da6966b7 | 24 | /** |
gabrielrivas | 1:a891da6966b7 | 25 | * Serial port handler class that allows sharing data from the serial ports |
gabrielrivas | 1:a891da6966b7 | 26 | * via message queues objects. Each instance of this class is intended to handle |
gabrielrivas | 1:a891da6966b7 | 27 | * a serial port in the system and is suitable for slow serial protocols. |
gabrielrivas | 1:a891da6966b7 | 28 | */ |
gabrielrivas | 0:f66dd1c93477 | 29 | class SerialPortHandler |
gabrielrivas | 0:f66dd1c93477 | 30 | { |
gabrielrivas | 0:f66dd1c93477 | 31 | public: |
gabrielrivas | 1:a891da6966b7 | 32 | /** |
gabrielrivas | 1:a891da6966b7 | 33 | * Creates a serial port handler object. |
gabrielrivas | 1:a891da6966b7 | 34 | * @param ps Pointer to a serial port instance object. |
gabrielrivas | 1:a891da6966b7 | 35 | * @param txQueue Message queue pointer from which to get data bytes to send. |
gabrielrivas | 1:a891da6966b7 | 36 | * @param rxQueue Message queue pointer to write bytes received. |
gabrielrivas | 1:a891da6966b7 | 37 | */ |
gabrielrivas | 0:f66dd1c93477 | 38 | SerialPortHandler(Serial* ps, MessageQueue<uint8_t>* txQueue, MessageQueue<uint8_t>*rxQueue); |
gabrielrivas | 1:a891da6966b7 | 39 | |
gabrielrivas | 1:a891da6966b7 | 40 | /** |
gabrielrivas | 1:a891da6966b7 | 41 | * Destroys a serial port handler object. |
gabrielrivas | 1:a891da6966b7 | 42 | */ |
gabrielrivas | 0:f66dd1c93477 | 43 | ~SerialPortHandler(); |
gabrielrivas | 0:f66dd1c93477 | 44 | |
gabrielrivas | 0:f66dd1c93477 | 45 | public: |
gabrielrivas | 1:a891da6966b7 | 46 | /** |
gabrielrivas | 1:a891da6966b7 | 47 | * Transmits data bytes stored in the transmit queue through the serial port. |
gabrielrivas | 1:a891da6966b7 | 48 | */ |
gabrielrivas | 0:f66dd1c93477 | 49 | void transmitPacket(); |
gabrielrivas | 1:a891da6966b7 | 50 | |
gabrielrivas | 1:a891da6966b7 | 51 | /** |
gabrielrivas | 1:a891da6966b7 | 52 | * Receive bytes from the serial port and store it into the receive queue. |
gabrielrivas | 1:a891da6966b7 | 53 | */ |
gabrielrivas | 0:f66dd1c93477 | 54 | void receivePacket(); |
gabrielrivas | 0:f66dd1c93477 | 55 | |
gabrielrivas | 0:f66dd1c93477 | 56 | private: |
gabrielrivas | 1:a891da6966b7 | 57 | /** |
gabrielrivas | 1:a891da6966b7 | 58 | * Receive bytes from the serial port and store it into the receive queue. |
gabrielrivas | 1:a891da6966b7 | 59 | */ |
gabrielrivas | 0:f66dd1c93477 | 60 | Serial* m_ps; |
gabrielrivas | 1:a891da6966b7 | 61 | |
gabrielrivas | 1:a891da6966b7 | 62 | /** |
gabrielrivas | 1:a891da6966b7 | 63 | * Message queue from which to get data bytes to send. |
gabrielrivas | 1:a891da6966b7 | 64 | */ |
gabrielrivas | 0:f66dd1c93477 | 65 | MessageQueue<uint8_t>* m_txQueue; |
gabrielrivas | 1:a891da6966b7 | 66 | |
gabrielrivas | 1:a891da6966b7 | 67 | /** |
gabrielrivas | 1:a891da6966b7 | 68 | * Message queue pointer to write bytes received. |
gabrielrivas | 1:a891da6966b7 | 69 | */ |
gabrielrivas | 0:f66dd1c93477 | 70 | MessageQueue<uint8_t>* m_rxQueue; |
gabrielrivas | 0:f66dd1c93477 | 71 | }; |
gabrielrivas | 0:f66dd1c93477 | 72 | |
gabrielrivas | 0:f66dd1c93477 | 73 | #endif |