Skip to content

API return code mismatch #163

Closed as duplicate of#120
Closed as duplicate of#120
@bakadave

Description

@bakadave

I was debugging a failure to initialize registers when I stumbled upon this major documentation error.

From the api.md

modbusServer.configureHoldingRegisters()

[...]

Returns

0 on success, 1 on failure

However in ModbusServer.cpp the function is defined as:

int ModbusServer::configureHoldingRegisters(int startAddress, int nb)
{
  if (startAddress < 0 || nb < 1) {
    errno = EINVAL;

    return -1;
  }

  size_t s = sizeof(_mbMapping.tab_registers[0]) * nb;

  _mbMapping.tab_registers = (uint16_t*)realloc(_mbMapping.tab_registers, s);

  if (_mbMapping.tab_registers == NULL) {
    _mbMapping.start_registers = 0;
    _mbMapping.nb_registers = 0;

    return 0;
  }

  memset(_mbMapping.tab_registers, 0x00, s);
  _mbMapping.start_registers = startAddress;
  _mbMapping.nb_registers = nb;

  return 1;
}

Which clerarly does the exact opposite.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions