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 
88  uint8_t readByte(void);
89 
94  uint16_t readInt(void);
95 
96  int read_timeout(uint8_t* buffer, uint16_t offset, uint8_t len, uint32_t timeout);
97  int write_timeout(uint8_t* buffer, uint16_t offset, uint8_t len, uint32_t timeout);
98  void writeBlock(uint8_t* buffer, uint16_t offset, uint8_t len);
99  bool readBlock(uint8_t* buffer, uint16_t offset);
100 
101  /*************************************/
102 
103 
104 
105  /***************************************
106  * Methoden für einstellbare Parameter *
107  ***************************************/
108 
113  uint32_t getBaudrate(void);
114 
119  uint8_t getTimeout(void);
120 
125  void setBaudrate(uint32_t baudrate);
126 
131  void setTimeout(uint8_t timeout);
132 
133  /***************************************/
134 
135  constexpr static uint8_t CRC7_POLY = 0x91;
136  constexpr static uint8_t MAX_BLOCK_SIZE = 64;
137  constexpr static uint8_t BLOCK_END = 0x80;
138 private:
139 
140  int file_desc = -1; // Linux Dateideskriptor
141  uint32_t baudrate = 9600; // Standard-Baudrate, sollte mit setBaudrate() überschrieben werden!
142  int TEST = 0;
143  uint8_t timeout = 10; // in Dezisekunden
144  uint8_t block_buffer[MAX_BLOCK_SIZE + 3];
145 
146  // debug statistics
147  uint32_t n_blocks_total = 0;
148  uint32_t n_blocks_failed = 0;
149 };
150 
151 
152 #endif // USART_H
USART::getBaudrate
uint32_t getBaudrate(void)
Definition: usart.cpp:307
USART::readByte
uint8_t readByte(void)
Definition: usart.cpp:211
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:312
USART
Definition: usart.h:18
USART::clearOutputBuffer
void clearOutputBuffer(void)
Definition: usart.cpp:46
USART::setBaudrate
void setBaudrate(uint32_t baudrate)
Definition: usart.cpp:317
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:230
USART::setTimeout
void setTimeout(uint8_t timeout)
Definition: usart.cpp:322
USART::flushOutputBuffer
void flushOutputBuffer(void)
Definition: usart.cpp:53
USART::writeInt
void writeInt(uint16_t d)
Definition: usart.cpp:81