MC Protocol Serial C++ 0.2.3
MC protocol serial library for MCU-oriented environments
Loading...
Searching...
No Matches
codec.hpp File Reference

Frame-level and command-payload-level encode/decode helpers. More...

#include <array>
#include <cstddef>
#include <cstdint>
#include "mcprotocol/serial/span_compat.hpp"
#include "mcprotocol/serial/string_view_compat.hpp"
#include "mcprotocol/serial/link_direct.hpp"
#include "mcprotocol/serial/qualified_buffer.hpp"
#include "mcprotocol/serial/types.hpp"

Go to the source code of this file.

Classes

struct  mcprotocol::serial::RawResponseFrame
 Raw decoded response frame before command-specific parsing. More...
 
struct  mcprotocol::serial::DecodeResult
 Result returned by FrameCodec::decode_response(). More...
 
class  mcprotocol::serial::FrameCodec
 Frame-level encode/decode helper for complete serial MC frames. More...
 

Namespaces

namespace  mcprotocol
 
namespace  mcprotocol::serial
 
namespace  mcprotocol::serial::CommandCodec
 Command-payload codec helpers below the frame layer.
 

Enumerations

enum class  mcprotocol::serial::DecodeStatus : std::uint8_t { mcprotocol::serial::Incomplete , mcprotocol::serial::Complete , mcprotocol::serial::Error }
 High-level result of frame decoding. More...
 

Functions

constexpr BitValue mcprotocol::serial::sparse_native_requested_bit_value (std::uint32_t raw_value) noexcept
 Returns the requested-point value from a sparse native bit result word.
 
constexpr std::uint16_t mcprotocol::serial::sparse_native_mask_word (std::uint32_t raw_value) noexcept
 Returns the raw 16-point mask word from a sparse native bit result.
 
Contiguous Device-Memory Read Helpers
Status mcprotocol::serial::CommandCodec::encode_batch_read_words (const ProtocolConfig &config, const BatchReadWordsRequest &request, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_read_extended_file_register_words (const ProtocolConfig &config, const ExtendedFileRegisterBatchReadWordsRequest &request, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_direct_read_extended_file_register_words (const ProtocolConfig &config, const ExtendedFileRegisterDirectBatchReadWordsRequest &request, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_extended_batch_read_words (const ProtocolConfig &config, const QualifiedBufferWordDevice &device, std::uint16_t points, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_link_direct_batch_read_words (const ProtocolConfig &config, const LinkDirectDevice &device, std::uint16_t points, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::parse_batch_read_words_response (const ProtocolConfig &config, const BatchReadWordsRequest &request, std::span< const std::uint8_t > response_data, std::span< std::uint16_t > out_words) noexcept
 
Status mcprotocol::serial::CommandCodec::parse_read_extended_file_register_words_response (const ProtocolConfig &config, std::uint16_t points, std::span< const std::uint8_t > response_data, std::span< std::uint16_t > out_words) noexcept
 
Status mcprotocol::serial::CommandCodec::parse_extended_batch_read_words_response (const ProtocolConfig &config, std::uint16_t points, std::span< const std::uint8_t > response_data, std::span< std::uint16_t > out_words) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_batch_read_bits (const ProtocolConfig &config, const BatchReadBitsRequest &request, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_link_direct_batch_read_bits (const ProtocolConfig &config, const LinkDirectDevice &device, std::uint16_t points, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::parse_batch_read_bits_response (const ProtocolConfig &config, const BatchReadBitsRequest &request, std::span< const std::uint8_t > response_data, std::span< BitValue > out_bits) noexcept
 
Contiguous Device-Memory Write Helpers
Status mcprotocol::serial::CommandCodec::encode_batch_write_words (const ProtocolConfig &config, const BatchWriteWordsRequest &request, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_write_extended_file_register_words (const ProtocolConfig &config, const ExtendedFileRegisterBatchWriteWordsRequest &request, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_direct_write_extended_file_register_words (const ProtocolConfig &config, const ExtendedFileRegisterDirectBatchWriteWordsRequest &request, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_link_direct_batch_write_words (const ProtocolConfig &config, const LinkDirectDevice &device, std::span< const std::uint16_t > words, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_extended_batch_write_words (const ProtocolConfig &config, const QualifiedBufferWordDevice &device, std::span< const std::uint16_t > words, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_batch_write_bits (const ProtocolConfig &config, const BatchWriteBitsRequest &request, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_link_direct_batch_write_bits (const ProtocolConfig &config, const LinkDirectDevice &device, std::span< const BitValue > bits, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Random-Access Helpers
Status mcprotocol::serial::CommandCodec::encode_link_direct_random_read (const ProtocolConfig &config, std::span< const LinkDirectRandomReadItem > items, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_random_read (const ProtocolConfig &config, const RandomReadRequest &request, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::parse_random_read_response (const ProtocolConfig &config, std::span< const RandomReadItem > items, std::span< const std::uint8_t > response_data, std::span< std::uint32_t > out_values) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_random_write_words (const ProtocolConfig &config, std::span< const RandomWriteWordItem > items, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_random_write_extended_file_register_words (const ProtocolConfig &config, std::span< const ExtendedFileRegisterRandomWriteWordItem > items, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_link_direct_random_write_words (const ProtocolConfig &config, std::span< const LinkDirectRandomWriteWordItem > items, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_random_write_bits (const ProtocolConfig &config, std::span< const RandomWriteBitItem > items, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_link_direct_random_write_bits (const ProtocolConfig &config, std::span< const LinkDirectRandomWriteBitItem > items, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Multi-Block Helpers
Status mcprotocol::serial::CommandCodec::encode_link_direct_multi_block_read (const ProtocolConfig &config, const LinkDirectMultiBlockReadRequest &request, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_multi_block_read (const ProtocolConfig &config, const MultiBlockReadRequest &request, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::parse_multi_block_read_response (const ProtocolConfig &config, std::span< const MultiBlockReadBlock > blocks, std::span< const std::uint8_t > response_data, std::span< std::uint16_t > out_words, std::span< BitValue > out_bits, std::span< MultiBlockReadBlockResult > out_results) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_multi_block_write (const ProtocolConfig &config, const MultiBlockWriteRequest &request, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_link_direct_multi_block_write (const ProtocolConfig &config, const LinkDirectMultiBlockWriteRequest &request, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Monitor Helpers
Status mcprotocol::serial::CommandCodec::encode_register_monitor (const ProtocolConfig &config, const MonitorRegistration &request, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_register_extended_file_register_monitor (const ProtocolConfig &config, const ExtendedFileRegisterMonitorRegistration &request, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_link_direct_register_monitor (const ProtocolConfig &config, const LinkDirectMonitorRegistration &request, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_read_monitor (const ProtocolConfig &config, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_read_monitor (const ProtocolConfig &config, std::span< const RandomReadItem > items, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_read_extended_file_register_monitor (const ProtocolConfig &config, std::span< const ExtendedFileRegisterAddress > items, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::parse_read_monitor_response (const ProtocolConfig &config, std::span< const RandomReadItem > items, std::span< const std::uint8_t > response_data, std::span< std::uint32_t > out_values) noexcept
 
Status mcprotocol::serial::CommandCodec::parse_read_extended_file_register_monitor_response (const ProtocolConfig &config, std::span< const ExtendedFileRegisterAddress > items, std::span< const std::uint8_t > response_data, std::span< std::uint16_t > out_words) noexcept
 
Serial-Module Dedicated Helpers
Status mcprotocol::serial::CommandCodec::encode_read_user_frame (const ProtocolConfig &config, const UserFrameReadRequest &request, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::parse_read_user_frame_response (const ProtocolConfig &config, std::span< const std::uint8_t > response_data, UserFrameRegistrationData &out_data) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_write_user_frame (const ProtocolConfig &config, const UserFrameWriteRequest &request, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_delete_user_frame (const ProtocolConfig &config, const UserFrameDeleteRequest &request, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_control_global_signal (const ProtocolConfig &config, const GlobalSignalControlRequest &request, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_initialize_transmission_sequence (const ProtocolConfig &config, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_deregister_cpu_monitoring (const ProtocolConfig &config, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Buffer-Memory Helpers
Status mcprotocol::serial::CommandCodec::encode_read_host_buffer (const ProtocolConfig &config, const HostBufferReadRequest &request, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::parse_read_host_buffer_response (const ProtocolConfig &config, const HostBufferReadRequest &request, std::span< const std::uint8_t > response_data, std::span< std::uint16_t > out_words) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_write_host_buffer (const ProtocolConfig &config, const HostBufferWriteRequest &request, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_read_module_buffer (const ProtocolConfig &config, const ModuleBufferReadRequest &request, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::parse_read_module_buffer_response (const ProtocolConfig &config, const ModuleBufferReadRequest &request, std::span< const std::uint8_t > response_data, std::span< std::byte > out_bytes) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_write_module_buffer (const ProtocolConfig &config, const ModuleBufferWriteRequest &request, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Diagnostic And Remote-Control Helpers
Status mcprotocol::serial::CommandCodec::encode_read_cpu_model (const ProtocolConfig &config, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::parse_read_cpu_model_response (const ProtocolConfig &config, std::span< const std::uint8_t > response_data, CpuModelInfo &out_info) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_remote_run (const ProtocolConfig &config, RemoteOperationMode mode, RemoteRunClearMode clear_mode, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_remote_stop (const ProtocolConfig &config, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_remote_pause (const ProtocolConfig &config, RemoteOperationMode mode, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_remote_latch_clear (const ProtocolConfig &config, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_remote_reset (const ProtocolConfig &config, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_unlock_remote_password (const ProtocolConfig &config, std::string_view remote_password, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_lock_remote_password (const ProtocolConfig &config, std::string_view remote_password, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_clear_error_information (const ProtocolConfig &config, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::encode_loopback (const ProtocolConfig &config, std::span< const char > hex_ascii, std::span< std::uint8_t > out_request_data, std::size_t &out_size) noexcept
 
Status mcprotocol::serial::CommandCodec::parse_loopback_response (const ProtocolConfig &config, std::span< const std::uint8_t > response_data, std::span< char > out_echoed) noexcept
 
constexpr std::uint32_t mcprotocol::serial::CommandCodec::module_buffer_start_address (std::uint32_t buffer_memory_address, std::uint32_t module_additional_value) noexcept
 Converts a logical buffer-memory word address plus module offset into a byte start address.
 

Detailed Description

Frame-level and command-payload-level encode/decode helpers.

This header is split into two layers:

  • FrameCodec: wraps raw command data in the selected serial frame family and decodes full response frames
  • CommandCodec: builds and parses command payloads without the surrounding serial frame bytes

Definition in file codec.hpp.