Kinetis Bootloader Host  2.0.0
Host Tools for Kinetis devices
UartPeripheral.h
1 /*
2  * Copyright (c) 2013-14, Freescale Semiconductor, Inc.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without modification,
6  * are permitted provided that the following conditions are met:
7  *
8  * o Redistributions of source code must retain the above copyright notice, this list
9  * of conditions and the following disclaimer.
10  *
11  * o Redistributions in binary form must reproduce the above copyright notice, this
12  * list of conditions and the following disclaimer in the documentation and/or
13  * other materials provided with the distribution.
14  *
15  * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
16  * contributors may be used to endorse or promote products derived from this
17  * software without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
23  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
26  * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */
30 
31 #ifndef _uart_peripheral_h_
32 #define _uart_peripheral_h_
33 
34 #include "Peripheral.h"
35 #include "packet/command_packet.h"
36 
39 
40 namespace blfwk
41 {
45 class UartPeripheral : public Peripheral
46 {
47 public:
50  {
51  // The read() implementation for the UartPeripheral does not use this the timeout parameter.
52  kUartPeripheral_UnusedTimeout = 0,
53  // Serial timeout is set to this default during init().
54  kUartPeripheral_DefaultReadTimeoutMs = 1000,
55  kUartPeripheral_DefaultBaudRate = 9600
56  };
57 
58 public:
67  UartPeripheral(const char *port, long speed = kUartPeripheral_DefaultBaudRate);
68 
70  virtual ~UartPeripheral();
71 
75  void flushRX();
76 
83  virtual status_t read(uint8_t *buffer, uint32_t requestedBytes, uint32_t *actualBytes, uint32_t unused_timeoutMs);
84 
89  virtual status_t write(const uint8_t *buffer, uint32_t byteCount);
90 
91 protected:
100  bool init(const char *port, long speed);
101 
103  uint8_t m_buffer[kDefaultMaxPacketSize];
104 };
105 
106 } // namespace blfwk
107 
109 
110 #endif // _uart_peripheral_h_
111 
113 // EOF
Definition: BlfwkErrors.h:16
Peripheral that talks to the target device over COM port hardware.
Definition: UartPeripheral.h:45
void flushRX()
Flush.
Definition: UartPeripheral.cpp:126
int m_fileDescriptor
Port file descriptor.
Definition: UartPeripheral.h:102
_uart_peripheral_constants
Constants.
Definition: UartPeripheral.h:49
virtual status_t write(const uint8_t *buffer, uint32_t byteCount)
Write bytes.
Definition: UartPeripheral.cpp:145
UartPeripheral(const char *port, long speed=kUartPeripheral_DefaultBaudRate)
Parameterized constructor that opens the serial port.
Definition: UartPeripheral.cpp:43
uint8_t m_buffer[kDefaultMaxPacketSize]
Buffer for bytes used to build read packet.
Definition: UartPeripheral.h:103
bool init(const char *port, long speed)
Initialize.
Definition: UartPeripheral.cpp:54
Represents a peripheral.
Definition: Peripheral.h:48
virtual status_t read(uint8_t *buffer, uint32_t requestedBytes, uint32_t *actualBytes, uint32_t unused_timeoutMs)
Read bytes.
Definition: UartPeripheral.cpp:87
virtual ~UartPeripheral()
Destructor.
Definition: UartPeripheral.cpp:78