ModbusSlave.func

class ModbusSlave
Function[ubyte] func;

Examples

slave.func[FuncCode.readInputRegisters] = (m)
{
    auto origStart = slave.backend.unpackT!ushort(m.data[0..2]);
    auto count = slave.backend.unpackT!ushort(m.data[2..4]);

    if (count == 0 || count > 125) return slave.illegalDataValue;
    if (count > dataTable.length) return slave.illegalDataValue;
    ptrdiff_t start = origStart - START_DATA_REG;
    if (start >=  table.length || start < 0)
        return slave.illegalDataAddress;

    return slave.packResult(cast(ubyte)(count*2), dataTable[start..start+count]);
};

Meta