#pragma once

#include <cstdint>

// Byte order inside a 16-bit Modbus register
enum class ByteOrder {
    BigEndian,     // AB
    LittleEndian   // BA
};

// Order of 16-bit registers
enum class WordOrder {
    HighFirst,     // Reg[N] = high word
    LowFirst       // Reg[N] = low word
};

// Order of register groups (for 64-bit+ types)
enum class RegisterOrder {
    Normal,        // ABCD EFGH
    Swapped        // EFGH ABCD
};

struct DataFormat {
    ByteOrder byte_order;
    WordOrder word_order;
    RegisterOrder register_order;
};
