docs: def _calculateCrcString(inputstring):
      """Calculate CRC-16 for Modbus.
  
      Args:
          inputstring (str): An arbitrary-length message (without the CRC).
  
      Returns:
          A two-byte CRC string, where the least significant byte is first.
  
      """
      _checkString(inputstring, description='input CRC string')
   
      # Preload a 16-bit register with ones
      register = 0xFFFF
  
      for char in inputstring:
          register = (register >> 8) ^ _CRC16TABLE[(register ^ ord(char)) & 0xFF]
   
      return _numToTwoByteString(register, LsbFirst=True)