Compare commits
2 commits
3e904a2e71
...
e5eac07702
Author | SHA1 | Date | |
---|---|---|---|
e5eac07702 | |||
eb385a113f |
14 changed files with 56 additions and 29 deletions
|
@ -8,8 +8,10 @@
|
|||
#pragma once
|
||||
|
||||
#include <f4ll/initialized_singleton.h>
|
||||
#include <f4ll/packet_usart.h>
|
||||
#include <f4ll/ringbuffer.h>
|
||||
#include <f4ll/usart_core.h>
|
||||
|
||||
#include <platform/dma_ll.h>
|
||||
|
||||
namespace f4ll {
|
||||
|
||||
|
@ -40,16 +42,16 @@ private:
|
|||
void setup_receive(void);
|
||||
|
||||
// LL_UsartCore pure virtual function implementations
|
||||
virtual void receiver_idle(void) override;
|
||||
virtual void transmission_complete(void) override;
|
||||
virtual void framing_error(void) override;
|
||||
virtual void overrun(void) override;
|
||||
virtual void rx_dma_transfer_complete(void) override;
|
||||
virtual void rx_dma_half_transfer(void) override;
|
||||
virtual void rx_dma_error(dma_helper::dma_error_type reason) override;
|
||||
virtual void tx_dma_transfer_complete(void) override;
|
||||
virtual void tx_dma_half_transfer(void) override;
|
||||
virtual void tx_dma_error(dma_helper::dma_error_type reason) override;
|
||||
void receiver_idle(void) override;
|
||||
void transmission_complete(void) override;
|
||||
void framing_error(void) override;
|
||||
void overrun(void) override;
|
||||
void rx_dma_transfer_complete(void) override;
|
||||
void rx_dma_half_transfer(void) override;
|
||||
void rx_dma_error(dma_helper::dma_error_type reason) override;
|
||||
void tx_dma_transfer_complete(void) override;
|
||||
void tx_dma_half_transfer(void) override;
|
||||
void tx_dma_error(dma_helper::dma_error_type reason) override;
|
||||
|
||||
ringbuffer_ext m_tx_buffer;
|
||||
size_type m_bytes_sent = 0;
|
||||
|
|
|
@ -6,10 +6,12 @@
|
|||
*/
|
||||
#pragma once
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
#include <platform/dma_ll.h>
|
||||
|
||||
#include <f4ll/dma_helper.h>
|
||||
#include <f4ll/initialized_singleton.h>
|
||||
#include <inttypes.h>
|
||||
#include <platform/dma_ll.h>
|
||||
|
||||
namespace f4ll {
|
||||
|
||||
|
|
|
@ -7,7 +7,8 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include <inttypes.h>
|
||||
#include <cstdint>
|
||||
|
||||
#include <platform/dma_ll.h>
|
||||
|
||||
namespace f4ll {
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
#define FAULT_REASON_BUS_FAULT 3
|
||||
#define FAULT_REASON_USAGE_FAULT 4
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#pragma once
|
||||
|
||||
#include <inttypes.h>
|
||||
#include <cstdint>
|
||||
#include <stm32f4xx.h>
|
||||
|
||||
namespace f4ll {
|
||||
|
|
|
@ -6,6 +6,8 @@
|
|||
*/
|
||||
#pragma once
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
#include <f4ll/dma_helper.h>
|
||||
#include <f4ll/initialized_singleton.h>
|
||||
|
||||
|
|
|
@ -95,7 +95,7 @@ private:
|
|||
virtual void tx_dma_half_transfer(void) override;
|
||||
virtual void tx_dma_error(dma_helper::dma_error_type reason) override;
|
||||
|
||||
struct Buffer
|
||||
struct buffer
|
||||
{
|
||||
packet pkt;
|
||||
// transfer area ends here
|
||||
|
@ -115,8 +115,8 @@ private:
|
|||
crc_handler::slot<2> m_crc_slot;
|
||||
ihs_usart_callback *m_user_callback = nullptr;
|
||||
uintptr_t m_user_callback_param = 0;
|
||||
Buffer m_tx_buffer;
|
||||
Buffer m_rx_buffers[2];
|
||||
buffer m_tx_buffer;
|
||||
buffer m_rx_buffers[2];
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -9,7 +9,6 @@
|
|||
|
||||
#include <cstddef>
|
||||
#include <cstdint>
|
||||
#include <cstring>
|
||||
|
||||
namespace f4ll {
|
||||
|
||||
|
@ -131,4 +130,4 @@ ringbuffer<SZ>::ringbuffer()
|
|||
{
|
||||
}
|
||||
|
||||
} // namespace f1ll
|
||||
} // namespace f1ll
|
||||
|
|
23
inc/f4ll/singleton.h
Normal file
23
inc/f4ll/singleton.h
Normal file
|
@ -0,0 +1,23 @@
|
|||
#pragma once
|
||||
|
||||
namespace f4ll {
|
||||
|
||||
template <typename T> class singleton
|
||||
{
|
||||
public:
|
||||
static T &instance()
|
||||
{
|
||||
static T instance;
|
||||
return instance;
|
||||
}
|
||||
|
||||
protected:
|
||||
singleton() = default;
|
||||
singleton(const singleton &) = delete;
|
||||
singleton &operator=(const singleton &) = delete;
|
||||
static T *m_instance;
|
||||
};
|
||||
|
||||
template <typename T> T *singleton<T>::m_instance = nullptr;
|
||||
|
||||
} // namespace f1ll {
|
|
@ -5,9 +5,7 @@
|
|||
* Author: abody
|
||||
*/
|
||||
|
||||
#include <cstddef>
|
||||
#include <f4ll/console_handler.h>
|
||||
#include <f4ll/irq_lock.h>
|
||||
#include <f4ll/str_util.h>
|
||||
|
||||
#include <cstring>
|
||||
|
|
|
@ -5,8 +5,6 @@
|
|||
* Author: abody
|
||||
* -c "tpiu config internal <logfile_full_path> uart off <cpufreq>"
|
||||
*/
|
||||
#include <inttypes.h>
|
||||
// #include <core_cm4.h>
|
||||
#include <f4ll/fault.h>
|
||||
#include <f4ll/str_util.h>
|
||||
#include <stm32f4xx.h>
|
||||
|
|
|
@ -183,7 +183,7 @@ void packet_usart::crc_succeeded(uintptr_t callback_param, uint32_t crc, uint8_t
|
|||
{
|
||||
(void)task;
|
||||
|
||||
Buffer &buf(m_rx_buffers[static_cast<int>(callback_param)]);
|
||||
buffer &buf(m_rx_buffers[static_cast<int>(callback_param)]);
|
||||
|
||||
buf.busy = 1;
|
||||
if (*(uint32_t *)(buf.pkt.payload + round_up_to_4((uint16_t)buf.pkt.header.payload_length)) != crc) {
|
||||
|
@ -201,7 +201,7 @@ void packet_usart::crc_failed(uintptr_t callback_param, uint32_t crc, uint8_t ta
|
|||
(void)crc;
|
||||
(void)task;
|
||||
|
||||
Buffer &buf(m_rx_buffers[static_cast<int>(callback_param)]);
|
||||
buffer &buf(m_rx_buffers[static_cast<int>(callback_param)]);
|
||||
buf.busy = buf.error = true;
|
||||
buf.error_info = 0;
|
||||
++m_stats.payload_errror;
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
#include <f4ll/ringbuffer.h>
|
||||
|
||||
#include <cstring>
|
||||
|
||||
namespace f4ll {
|
||||
|
||||
ringbuffer_ext::ringbuffer_ext(uint8_t *bptr, size_type bsize)
|
||||
|
@ -147,4 +149,4 @@ iringbuffer::size_type ringbuffer_ext::marker_diff(size_type m1, size_type m2) c
|
|||
}
|
||||
|
||||
//
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
#include <f4ll/str_util.h>
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
size_t strcpy_ex(char *dst, char const *src)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue