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

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?

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