Embedded Template Library 1.0
Loading...
Searching...
No Matches
manchester

Classes

struct  etl::manchester_base< TManchesterType >

Typedefs

typedef manchester_base< private_manchester::manchester_type_normaletl::manchester
typedef manchester_base< private_manchester::manchester_type_invertedetl::manchester_inverted

Detailed Description

Manchester encoding and decoding


Class Documentation

◆ etl::manchester_base

struct etl::manchester_base
template<typename TManchesterType>
struct etl::manchester_base< TManchesterType >

Base template class for Manchester encoding and decoding.

Template Parameters
TTypeThe Manchester encoding type (normal or inverted).

Public Member Functions

 ETL_STATIC_ASSERT ((etl::is_same< TManchesterType, private_manchester::manchester_type_normal >::value||etl::is_same< TManchesterType, private_manchester::manchester_type_inverted >::value), "TManchesterType must be manchester_type_normal or manchester_type_inverted")
 ETL_STATIC_ASSERT (CHAR_BIT==etl::numeric_limits< uint_least8_t >::digits, "Manchester requires uint_least8_t to have the same number of bits as CHAR (CHAR_BITS)")

Static Public Member Functions

template<typename TDecoded>
static ETL_CONSTEXPR14 etl::enable_if< etl::is_same< TDecoded, uint16_t >::value, typenameprivate_manchester::encoded< TDecoded >::type >::type encode (TDecoded decoded)
template<typename TDecoded>
static ETL_CONSTEXPR14 etl::enable_if< etl::is_same< TDecoded, uint32_t >::value, typenameprivate_manchester::encoded< TDecoded >::type >::type encode (TDecoded decoded)
template<typename TChunk = uint_least8_t>
static ETL_CONSTEXPR14 void encode (etl::span< const uint_least8_t > decoded, etl::span< uint_least8_t > encoded)
template<typename TEncoded>
static ETL_CONSTEXPR14 etl::enable_if< etl::is_same< TEncoded, uint32_t >::value, typenameprivate_manchester::decoded< TEncoded >::type >::type decode (TEncoded encoded)
template<typename TEncoded>
static ETL_CONSTEXPR14 etl::enable_if< etl::is_same< TEncoded, uint64_t >::value, typenameprivate_manchester::decoded< TEncoded >::type >::type decode (TEncoded encoded)
template<typename TChunk = typename private_manchester::encoded<uint_least8_t>::type>
static ETL_CONSTEXPR14 void decode (etl::span< const uint_least8_t > encoded, etl::span< uint_least8_t > decoded)
template<typename TChunk>
static ETL_NODISCARD ETL_CONSTEXPR14 etl::enable_if< private_manchester::is_decodable< TChunk >::value, bool >::type is_valid (TChunk encoded)
static ETL_NODISCARD ETL_CONSTEXPR14 bool is_valid (etl::span< const uint_least8_t > encoded)

Member Function Documentation

◆ decode() [1/3]

template<typename TManchesterType>
template<typename TChunk = typename private_manchester::encoded<uint_least8_t>::type>
ETL_CONSTEXPR14 void etl::manchester_base< TManchesterType >::decode ( etl::span< const uint_least8_t > encoded,
etl::span< uint_least8_t > decoded )
inlinestatic

Decode a span of data using the specified chunk type.

Parameters
sourceThe source encoded data to decode.
destinationThe destination buffer for decoded data.
Template Parameters
TChunkThe chunk type for decoding (default: uint16_t).

◆ decode() [2/3]

template<typename TManchesterType>
template<typename TEncoded>
ETL_CONSTEXPR14 etl::enable_if< etl::is_same< TEncoded, uint64_t >::value, typenameprivate_manchester::decoded< TEncoded >::type >::type etl::manchester_base< TManchesterType >::decode ( TEncoded encoded)
inlinestatic

Decode a 64-bit value and return the 32-bit result.

Parameters
encodedThe value to decode.
Returns
The Manchester decoded value.

◆ decode() [3/3]

template<typename TManchesterType>
template<typename TEncoded>
ETL_CONSTEXPR14 etl::enable_if< etl::is_same< TEncoded, uint32_t >::value, typenameprivate_manchester::decoded< TEncoded >::type >::type etl::manchester_base< TManchesterType >::decode ( TEncoded encoded)
inlinestatic

Decode a 32-bit value and return the 16-bit result.

Parameters
encodedThe value to decode.
Returns
The Manchester decoded value.

◆ encode() [1/3]

template<typename TManchesterType>
template<typename TChunk = uint_least8_t>
ETL_CONSTEXPR14 void etl::manchester_base< TManchesterType >::encode ( etl::span< const uint_least8_t > decoded,
etl::span< uint_least8_t > encoded )
inlinestatic

Encode a span of data with the specified chunk size.

Parameters
sourceThe source data to encode.
destinationThe destination buffer for encoded data.
Template Parameters
TChunkThe chunk size for encoding (default: uint_least8_t).

◆ encode() [2/3]

template<typename TManchesterType>
template<typename TDecoded>
ETL_CONSTEXPR14 etl::enable_if< etl::is_same< TDecoded, uint32_t >::value, typenameprivate_manchester::encoded< TDecoded >::type >::type etl::manchester_base< TManchesterType >::encode ( TDecoded decoded)
inlinestatic

Encode a 32-bit unsigned value and return the 64-bit result.

Parameters
decodedThe value to encode.
Returns
The Manchester encoded value.

◆ encode() [3/3]

template<typename TManchesterType>
template<typename TDecoded>
ETL_CONSTEXPR14 etl::enable_if< etl::is_same< TDecoded, uint16_t >::value, typenameprivate_manchester::encoded< TDecoded >::type >::type etl::manchester_base< TManchesterType >::encode ( TDecoded decoded)
inlinestatic

Encode a 16-bit unsigned value and return the 32-bit result.

Parameters
decodedThe value to encode.
Returns
The Manchester encoded value.

◆ is_valid() [1/2]

template<typename TManchesterType>
ETL_NODISCARD ETL_CONSTEXPR14 bool etl::manchester_base< TManchesterType >::is_valid ( etl::span< const uint_least8_t > encoded)
inlinestatic

Validate that a span contains valid Manchester encoded data.

Parameters
encodedThe span of encoded data to validate.
Returns
True if all data is valid Manchester encoding.

◆ is_valid() [2/2]

template<typename TManchesterType>
template<typename TChunk>
ETL_NODISCARD ETL_CONSTEXPR14 etl::enable_if< private_manchester::is_decodable< TChunk >::value, bool >::type etl::manchester_base< TManchesterType >::is_valid ( TChunk encoded)
inlinestatic

Validate that a value contains valid Manchester encoded data.

Parameters
encodedThe encoded value to validate.
Returns
True if the value is valid Manchester encoding.

Typedef Documentation

◆ manchester

Manchester encoder using normal encoding (no inversion).

◆ manchester_inverted

Manchester encoder using inverted encoding.