2025-01-25 10:55:11 +01:00
|
|
|
#ifndef USART_H
|
|
|
|
#define USART_H
|
|
|
|
#include "fifo.h"
|
|
|
|
#include "baselayer.h"
|
2025-02-01 21:38:31 +01:00
|
|
|
#include "ctrlinterface.h"
|
2025-01-25 10:55:11 +01:00
|
|
|
/** @class Usart
|
|
|
|
* @brief Sériový port.
|
|
|
|
*
|
2025-01-26 16:50:07 +01:00
|
|
|
* Zde RS485, vstup i výstup.
|
|
|
|
* Při vysílání je zakázán příjem a to jak v software, tak v hardware.
|
|
|
|
* Tady u toho typu je pin řízení směru přenosu dělán čistě softwarově,
|
|
|
|
* překrytí je minimální, zdá se že to nevadí.
|
2025-01-25 10:55:11 +01:00
|
|
|
*/
|
2025-02-01 21:38:31 +01:00
|
|
|
class Usart : public BaseLayer, public CDC_CtrlInterface {
|
2025-01-25 10:55:11 +01:00
|
|
|
FIFO<char, 64> tx_ring;
|
|
|
|
public:
|
2025-02-01 21:38:31 +01:00
|
|
|
explicit Usart (const uint32_t baud = 9600) noexcept;
|
|
|
|
void setBaud (const uint32_t baud);
|
|
|
|
uint32_t Down (const char * data, const uint32_t len) override;
|
|
|
|
bool IOCtrl (const CTRL_TYPES_DEF type, const void * data, const uint32_t len) override;
|
2025-01-26 16:50:07 +01:00
|
|
|
|
|
|
|
void irq (void);
|
2025-01-25 10:55:11 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif // USART_H
|