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.cpp@0:f66dd1c93477, 2015-01-19 (annotated)
- Committer:
- gabrielrivas
- Date:
- Mon Jan 19 03:40:33 2015 +0000
- Revision:
- 0:f66dd1c93477
- Child:
- 1:a891da6966b7
Serial port handler class that allows sharing serial port data with other software modules via Message queue objects.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
gabrielrivas | 0:f66dd1c93477 | 1 | #include "SerialPortHandler.h" |
gabrielrivas | 0:f66dd1c93477 | 2 | |
gabrielrivas | 0:f66dd1c93477 | 3 | SerialPortHandler::SerialPortHandler(Serial* ps, MessageQueue<uint8_t>* txQueue, MessageQueue<uint8_t>* rxQueue) |
gabrielrivas | 0:f66dd1c93477 | 4 | { |
gabrielrivas | 0:f66dd1c93477 | 5 | m_ps = ps; |
gabrielrivas | 0:f66dd1c93477 | 6 | m_txQueue = txQueue; |
gabrielrivas | 0:f66dd1c93477 | 7 | m_rxQueue = rxQueue; |
gabrielrivas | 0:f66dd1c93477 | 8 | } |
gabrielrivas | 0:f66dd1c93477 | 9 | |
gabrielrivas | 0:f66dd1c93477 | 10 | SerialPortHandler::~SerialPortHandler() |
gabrielrivas | 0:f66dd1c93477 | 11 | { |
gabrielrivas | 0:f66dd1c93477 | 12 | delete m_ps; |
gabrielrivas | 0:f66dd1c93477 | 13 | delete m_txQueue; |
gabrielrivas | 0:f66dd1c93477 | 14 | delete m_rxQueue; |
gabrielrivas | 0:f66dd1c93477 | 15 | } |
gabrielrivas | 0:f66dd1c93477 | 16 | |
gabrielrivas | 0:f66dd1c93477 | 17 | void SerialPortHandler::transmitPacket() |
gabrielrivas | 0:f66dd1c93477 | 18 | { |
gabrielrivas | 0:f66dd1c93477 | 19 | uint32_t count = m_txQueue->getWriteIndex(); |
gabrielrivas | 0:f66dd1c93477 | 20 | uint8_t data; |
gabrielrivas | 0:f66dd1c93477 | 21 | |
gabrielrivas | 0:f66dd1c93477 | 22 | for (uint32_t i = 0; i < count; i++) { |
gabrielrivas | 0:f66dd1c93477 | 23 | data = m_txQueue->read(); |
gabrielrivas | 0:f66dd1c93477 | 24 | |
gabrielrivas | 0:f66dd1c93477 | 25 | m_ps->putc(data); |
gabrielrivas | 0:f66dd1c93477 | 26 | } |
gabrielrivas | 0:f66dd1c93477 | 27 | } |
gabrielrivas | 0:f66dd1c93477 | 28 | |
gabrielrivas | 0:f66dd1c93477 | 29 | void SerialPortHandler::receivePacket() |
gabrielrivas | 0:f66dd1c93477 | 30 | { |
gabrielrivas | 0:f66dd1c93477 | 31 | uint8_t rxreg = m_ps->getc(); |
gabrielrivas | 0:f66dd1c93477 | 32 | m_rxQueue->write(rxreg); |
gabrielrivas | 0:f66dd1c93477 | 33 | } |