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 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?

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