Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: Nucleo_modbus_protocol_test
SerialPortHandler.cpp@1:a891da6966b7, 2015-01-19 (annotated)
- 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?
| 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 | 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 | } |