def _read_settings(self, retry=True):
if not self._conn.isOpen():<EOL><INDENT>self._log.debug("<STR_LIT>")<EOL>self._conn.open()<EOL><DEDENT>self._conn.flushInput()<EOL>self._conn.flushOutput()<EOL>buffer = self._conn.read(<NUM_LIT>)<EOL>if len(buffer) != <NUM_LIT>:<EOL><INDENT>self._log.debug('<STR_LIT>' % len(buffer))<EOL>if self._conn.isOpen():<EOL><INDENT>self._log.debug('<STR_LIT>')<EOL>self._conn.close()<EOL>self._read_settings(retry=True)<EOL><DEDENT><DEDENT>try:<EOL><INDENT>check = self._validate_checksum(buffer)<EOL><DEDENT>except:<EOL><INDENT>check = False<EOL><DEDENT>if not check and (retry and self._retry_count <= <NUM_LIT:3>):<EOL><INDENT>if self._retry_count == <NUM_LIT:3>:<EOL><INDENT>self._log.error('<STR_LIT>')<EOL>self._read_settings(retry=False)<EOL><DEDENT>else:<EOL><INDENT>self._retry_count += <NUM_LIT:1><EOL>self._read_settings(retry=True)<EOL><DEDENT><DEDENT>try:<EOL><INDENT>settings = dict()<EOL>settings['<STR_LIT>'] = hex2int(buffer[<NUM_LIT:10>])<EOL>settings['<STR_LIT>'] = hex2int(buffer[<NUM_LIT:11>])<EOL>settings['<STR_LIT>'] = hex2int(buffer[<NUM_LIT:12>])<EOL>et = hex2int(buffer[<NUM_LIT>] + buffer[<NUM_LIT>])<EOL>settings['<STR_LIT>'] = celsius2fahrenheit(et)<EOL>bt = hex2int(buffer[<NUM_LIT>] + buffer[<NUM_LIT>])<EOL>settings['<STR_LIT>'] = celsius2fahrenheit(bt)<EOL>settings['<STR_LIT>'] = hex2int(buffer[<NUM_LIT:16>])<EOL>settings['<STR_LIT>'] = hex2int(buffer[<NUM_LIT>])<EOL>settings['<STR_LIT>'] = hex2int(buffer[<NUM_LIT>])<EOL>settings['<STR_LIT>'] = hex2int(buffer[<NUM_LIT>])<EOL>self._retry_count = <NUM_LIT:0><EOL><DEDENT>except Exception:<EOL><INDENT>self._log.error("<STR_LIT>")<EOL>settings = self._generate_config()<EOL><DEDENT>return settings<EOL>
Read the information from the Hottop.

        Read the settings from the serial interface and convert them into a
        human-readable format that can be shared back to the end-user. Reading
        from the serial interface will occasionally produce strange results or
        blank reads, so a retry process has been built into the function as a
        recursive check.

        :returns: dict