B15F
Board 15 Famulus Edition
usart.h
1 #ifndef USART_H
2 #define USART_H
3 
4 #include <iostream>
5 #include <cstdint>
6 #include <chrono>
7 #include <unistd.h>
8 #include <cstring>
9 #include <fcntl.h>
10 #include <sys/ioctl.h>
11 #include <termios.h>
12 #include <cmath>
13 #include "usartexception.h"
14 #include "timeoutexception.h"
15 
18 class USART
19 {
20 public:
21 
22  /*************************************************
23  * Methoden für die Verwaltung der Schnittstelle *
24  *************************************************/
25 
31  void openDevice(std::string device);
32 
37  void closeDevice(void);
38 
43  void clearInputBuffer(void);
44 
49  void clearOutputBuffer(void);
50 
55  void flushOutputBuffer(void);
56 
60  void printStatistics(void);
61 
62  /*************************************************/
63 
64 
65 
66  /*************************************
67  * Methoden für die Datenübertragung *
68  *************************************/
69 
75  void writeByte(uint8_t b);
76 
82  void writeInt(uint16_t d);
83 
89  void writeU32(uint32_t d);
90 
95  uint8_t readByte(void);
96 
101  uint16_t readInt(void);
102 
103  int read_timeout(uint8_t* buffer, uint16_t offset, uint8_t len, uint32_t timeout);
104  int write_timeout(uint8_t* buffer, uint16_t offset, uint8_t len, uint32_t timeout);
105  void writeBlock(uint8_t* buffer, uint16_t offset, uint8_t len);
106  bool readBlock(uint8_t* buffer, uint16_t offset);
107 
108  /*************************************/
109 
110 
111 
112  /***************************************
113  * Methoden für einstellbare Parameter *
114  ***************************************/
115 
120  uint32_t getBaudrate(void);
121 
126  uint8_t getTimeout(void);
127 
132  void setBaudrate(uint32_t baudrate);
133 
138  void setTimeout(uint8_t timeout);
139 
140  /***************************************/
141 
142  constexpr static uint8_t CRC7_POLY = 0x91;
143  constexpr static uint8_t MAX_BLOCK_SIZE = 64;
144  constexpr static uint8_t BLOCK_END = 0x80;
145 private:
146 
147  int file_desc = -1; // Linux Dateideskriptor
148  uint32_t baudrate = 9600; // Standard-Baudrate, sollte mit setBaudrate() überschrieben werden!
149  int TEST = 0;
150  uint8_t timeout = 10; // in Dezisekunden
151  uint8_t block_buffer[MAX_BLOCK_SIZE + 3];
152 
153  // debug statistics
154  uint32_t n_blocks_total = 0;
155  uint32_t n_blocks_failed = 0;
156 };
157 
158 
159 #endif // USART_H
USART::writeU32
void writeU32(uint32_t d)
Definition: usart.cpp:88
USART::getBaudrate
uint32_t getBaudrate(void)
Definition: usart.cpp:312
USART::readByte
uint8_t readByte(void)
Definition: usart.cpp:216
USART::printStatistics
void printStatistics(void)
Definition: usart.cpp:60
USART::closeDevice
void closeDevice(void)
Definition: usart.cpp:32
USART::clearInputBuffer
void clearInputBuffer(void)
Definition: usart.cpp:39
USART::getTimeout
uint8_t getTimeout(void)
Definition: usart.cpp:317
USART
Definition: usart.h:18
USART::clearOutputBuffer
void clearOutputBuffer(void)
Definition: usart.cpp:46
USART::setBaudrate
void setBaudrate(uint32_t baudrate)
Definition: usart.cpp:322
USART::writeByte
void writeByte(uint8_t b)
Definition: usart.cpp:67
USART::openDevice
void openDevice(std::string device)
Definition: usart.cpp:3
USART::readInt
uint16_t readInt(void)
Definition: usart.cpp:235
USART::setTimeout
void setTimeout(uint8_t timeout)
Definition: usart.cpp:327
USART::flushOutputBuffer
void flushOutputBuffer(void)
Definition: usart.cpp:53
USART::writeInt
void writeInt(uint16_t d)
Definition: usart.cpp:81