Gabriel Rivas / SerialPortHandler

Dependents:   Nucleo_modbus_protocol_test

Committer:
gabrielrivas
Date:
Mon Jan 19 15:31:04 2015 +0000
Revision:
1:a891da6966b7
Parent:
0:f66dd1c93477
Child:
2:aa72cb66762f
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 0:f66dd1c93477 17 #include "SerialPortHandler.h"
gabrielrivas 0:f66dd1c93477 18
gabrielrivas 0:f66dd1c93477 19 SerialPortHandler::SerialPortHandler(Serial* ps, MessageQueue<uint8_t>* txQueue, MessageQueue<uint8_t>* rxQueue)
gabrielrivas 0:f66dd1c93477 20 {
gabrielrivas 0:f66dd1c93477 21 m_ps = ps;
gabrielrivas 0:f66dd1c93477 22 m_txQueue = txQueue;
gabrielrivas 0:f66dd1c93477 23 m_rxQueue = rxQueue;
gabrielrivas 0:f66dd1c93477 24 }
gabrielrivas 0:f66dd1c93477 25
gabrielrivas 0:f66dd1c93477 26 SerialPortHandler::~SerialPortHandler()
gabrielrivas 0:f66dd1c93477 27 {
gabrielrivas 0:f66dd1c93477 28 delete m_ps;
gabrielrivas 0:f66dd1c93477 29 delete m_txQueue;
gabrielrivas 0:f66dd1c93477 30 delete m_rxQueue;
gabrielrivas 0:f66dd1c93477 31 }
gabrielrivas 0:f66dd1c93477 32
gabrielrivas 0:f66dd1c93477 33 void SerialPortHandler::transmitPacket()
gabrielrivas 0:f66dd1c93477 34 {
gabrielrivas 0:f66dd1c93477 35 uint32_t count = m_txQueue->getWriteIndex();
gabrielrivas 0:f66dd1c93477 36 uint8_t data;
gabrielrivas 0:f66dd1c93477 37
gabrielrivas 0:f66dd1c93477 38 for (uint32_t i = 0; i < count; i++) {
gabrielrivas 0:f66dd1c93477 39 data = m_txQueue->read();
gabrielrivas 0:f66dd1c93477 40
gabrielrivas 0:f66dd1c93477 41 m_ps->putc(data);
gabrielrivas 0:f66dd1c93477 42 }
gabrielrivas 0:f66dd1c93477 43 }
gabrielrivas 0:f66dd1c93477 44
gabrielrivas 0:f66dd1c93477 45 void SerialPortHandler::receivePacket()
gabrielrivas 0:f66dd1c93477 46 {
gabrielrivas 0:f66dd1c93477 47 uint8_t rxreg = m_ps->getc();
gabrielrivas 0:f66dd1c93477 48 m_rxQueue->write(rxreg);
gabrielrivas 0:f66dd1c93477 49 }