mirror of
https://git.intern.spaceteamaachen.de/ALPAKA/sta-core.git
synced 2025-08-06 02:27:33 +00:00
Added I2C support for raspi & first rework of debugging
This commit is contained in:
82
include/sta/bus/can/iter.hpp
Normal file
82
include/sta/bus/can/iter.hpp
Normal file
@@ -0,0 +1,82 @@
|
||||
/**
|
||||
* @file
|
||||
* @brief Custom iterators for CAN controllers.
|
||||
*/
|
||||
#ifndef STA_CORE_CAN_ITER_HPP
|
||||
#define STA_CORE_CAN_ITER_HPP
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
|
||||
namespace sta
|
||||
{
|
||||
/**
|
||||
* @brief Iterable container interface for CAN RX flags.
|
||||
*
|
||||
* @ingroup sta_core_can_ids
|
||||
*/
|
||||
class CanPendingRxFifos
|
||||
{
|
||||
public:
|
||||
using value_type = uint8_t;
|
||||
using reference = value_type &;
|
||||
using const_reference = const value_type &;
|
||||
using size_type = uint8_t;
|
||||
|
||||
/**
|
||||
* @brief Custom iterator for active RX queues.
|
||||
*/
|
||||
class const_iterator
|
||||
{
|
||||
public:
|
||||
using value_type = CanPendingRxFifos::value_type;
|
||||
using reference = const_reference;
|
||||
using pointer = const value_type *;
|
||||
|
||||
public:
|
||||
const_iterator(const const_iterator & iter);
|
||||
|
||||
const_iterator & operator=(const const_iterator & iter);
|
||||
|
||||
bool operator==(const const_iterator & iter) const;
|
||||
bool operator!=(const const_iterator & iter) const;
|
||||
|
||||
const_iterator & operator++();
|
||||
const_iterator operator++(int);
|
||||
|
||||
reference operator*() const;
|
||||
|
||||
private:
|
||||
const_iterator(uint32_t rxFlags, uint8_t idx, uint8_t endIdx);
|
||||
|
||||
/**
|
||||
* @brief Check if current RX queue has pending data.
|
||||
*/
|
||||
bool isRxPending() const;
|
||||
|
||||
friend class CanPendingRxFifos;
|
||||
|
||||
private:
|
||||
uint32_t rxFlags_; /**< RX flag bits */
|
||||
uint8_t idx_; /**< Current flag index */
|
||||
uint8_t endIdx_; /**< Iterator end index */
|
||||
};
|
||||
|
||||
public:
|
||||
/**
|
||||
* @param rxFlags RX flag bits
|
||||
* @param numFifos Number of RX FIFOs
|
||||
*/
|
||||
CanPendingRxFifos(uint32_t rxFlags, uint8_t numFifos);
|
||||
|
||||
const_iterator begin() const;
|
||||
const_iterator end() const;
|
||||
|
||||
private:
|
||||
uint32_t rxFlags_; /**< RX flag bits */
|
||||
uint8_t numFifos_; /**< Number of RX FIFOs */
|
||||
};
|
||||
} // namespace sta
|
||||
|
||||
|
||||
#endif // STA_CORE_CAN_ITER_HPP
|
Reference in New Issue
Block a user