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 
16 class USART
17 {
18 public:
19 
20  /*************************************************
21  * Methoden für die Verwaltung der Schnittstelle *
22  *************************************************/
23 
29  void openDevice(std::string device);
30 
35  void closeDevice(void);
36 
41  void clearInputBuffer(void);
42 
47  void clearOutputBuffer(void);
48 
53  void flushOutputBuffer(void);
54 
58  void printStatistics(void);
59 
60  /*************************************************/
61 
62 
63 
64  /*************************************
65  * Methoden für die Datenübertragung *
66  *************************************/
67 
73  void writeByte(uint8_t b);
74 
80  void writeInt(uint16_t d);
81 
86  uint8_t readByte(void);
87 
92  uint16_t readInt(void);
93 
94  int read_timeout(uint8_t* buffer, uint16_t offset, uint8_t len, uint32_t timeout);
95  int write_timeout(uint8_t* buffer, uint16_t offset, uint8_t len, uint32_t timeout);
96  void writeBlock(uint8_t* buffer, uint16_t offset, uint8_t len);
97  bool readBlock(uint8_t* buffer, uint16_t offset);
98 
99  /*************************************/
100 
101 
102 
103  /***************************************
104  * Methoden für einstellbare Parameter *
105  ***************************************/
106 
111  uint32_t getBaudrate(void);
112 
117  uint8_t getTimeout(void);
118 
123  void setBaudrate(uint32_t baudrate);
124 
129  void setTimeout(uint8_t timeout);
130 
131  /***************************************/
132 
133  constexpr static uint8_t CRC7_POLY = 0x91;
134  constexpr static uint8_t MAX_BLOCK_SIZE = 64;
135  constexpr static uint8_t BLOCK_END = 0x80;
136 private:
137 
138  int file_desc = -1; // Linux Dateideskriptor
139  uint32_t baudrate = 9600; // Standard-Baudrate, sollte mit setBaudrate() überschrieben werden!
140  int TEST = 0;
141  uint8_t timeout = 10; // in Dezisekunden
142  uint8_t block_buffer[MAX_BLOCK_SIZE + 3];
143 
144  // debug statistics
145  uint32_t n_blocks_total = 0;
146  uint32_t n_blocks_failed = 0;
147 };
148 
149 
150 #endif // USART_H
USART::getBaudrate
uint32_t getBaudrate(void)
Definition: usart.cpp:306
USART::readByte
uint8_t readByte(void)
Definition: usart.cpp:210
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:311
USART
Definition: usart.h:16
USART::clearOutputBuffer
void clearOutputBuffer(void)
Definition: usart.cpp:46
USART::setBaudrate
void setBaudrate(uint32_t baudrate)
Definition: usart.cpp:316
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:229
USART::setTimeout
void setTimeout(uint8_t timeout)
Definition: usart.cpp:321
USART::flushOutputBuffer
void flushOutputBuffer(void)
Definition: usart.cpp:53
USART::writeInt
void writeInt(uint16_t d)
Definition: usart.cpp:81