25#ifndef ETL_FRAME_CHECK_SEQUENCE_INCLUDED
26#define ETL_FRAME_CHECK_SEQUENCE_INCLUDED
31#include "static_assert.h"
36ETL_STATIC_ASSERT(ETL_USING_8BIT_TYPES,
"This file does not currently support targets with no 8bit type");
43 namespace private_frame_check_sequence
49 template <
typename TFrame_Check_Sequence>
50 class add_insert_iterator :
public etl::iterator<ETL_OR_STD::output_iterator_tag, typename TFrame_Check_Sequence::value_type>
55 explicit add_insert_iterator(TFrame_Check_Sequence& fcs) ETL_NOEXCEPT
61 add_insert_iterator& operator*() ETL_NOEXCEPT
67 add_insert_iterator& operator++() ETL_NOEXCEPT
73 add_insert_iterator& operator++(
int) ETL_NOEXCEPT
79 add_insert_iterator& operator=(uint8_t value)
87 TFrame_Check_Sequence* p_fcs;
96 template <
typename TPolicy>
101 typedef TPolicy policy_type;
102 typedef typename policy_type::value_type value_type;
105 ETL_STATIC_ASSERT(etl::is_unsigned<value_type>::value,
"Signed frame check type not supported");
121 template <
typename TIterator>
125 ETL_STATIC_ASSERT(
sizeof(
typename etl::iterator_traits<TIterator>::value_type) == 1,
"Type not supported");
136 frame_check = policy.initial();
144 template <
typename TIterator>
147 ETL_STATIC_ASSERT(
sizeof(
typename etl::iterator_traits<TIterator>::value_type) == 1,
"Type not supported");
151 frame_check = policy.add(frame_check,
static_cast<uint8_t
>(*
begin));
159 ETL_CONSTEXPR14
void add(uint8_t value_)
161 frame_check = policy.add(frame_check, value_);
167 ETL_CONSTEXPR14 value_type
value()
const
169 return policy.final(frame_check);
175 ETL_CONSTEXPR14
operator value_type()
const
177 return policy.final(frame_check);
183 ETL_CONSTEXPR14 add_insert_iterator
input()
185 return add_insert_iterator(*
this);
Definition frame_check_sequence.h:51
ETL_CONSTEXPR14 void add(uint8_t value_)
Definition frame_check_sequence.h:159
ETL_CONSTEXPR14 void add(TIterator begin, const TIterator end)
Definition frame_check_sequence.h:145
ETL_CONSTEXPR14 void reset()
Resets the FCS to the initial state.
Definition frame_check_sequence.h:134
ETL_CONSTEXPR14 frame_check_sequence(TIterator begin, const TIterator end)
Definition frame_check_sequence.h:122
ETL_CONSTEXPR14 frame_check_sequence()
Default constructor.
Definition frame_check_sequence.h:110
ETL_CONSTEXPR14 add_insert_iterator input()
Gets an add_insert_iterator for input.
Definition frame_check_sequence.h:183
ETL_CONSTEXPR14 value_type value() const
Gets the FCS value.
Definition frame_check_sequence.h:167
bitset_ext
Definition absolute.h:40
ETL_CONSTEXPR TContainer::iterator begin(TContainer &container)
Definition iterator.h:967
ETL_CONSTEXPR TContainer::iterator end(TContainer &container)
Definition iterator.h:997
iterator
Definition iterator.h:424