docs: def _generate_config(self):
          """Generate a configuration that can be sent to the Hottop roaster.
  
          Configuration settings need to be represented inside of a byte array
          that is then written to the serial interface. Much of the configuration
          is static, but control settings are also included and pulled from the
          shared dictionary.
  
          :returns: Byte array of the prepared configuration.
          """
          config = bytearray([0x00] * 36)
          config[0] = 0xA5
          config[1] = 0x96
          config[2] = 0xB0
          config[3] = 0xA0
          config[4] = 0x01
          config[5] = 0x01
          config[6] = 0x24
          config[10] = self._config.get('heater', 0)
          config[11] = self._config.get('fan', 0)
          config[12] = self._config.get('main_fan', 0)
          config[16] = self._config.get('solenoid', 0)
          config[17] = self._config.get('drum_motor', 0)
          if self._config.get('heater', 0) > 0:
              # Override the user here since the drum MUST be on for heat
              config[17] = 1
          config[18] = self._config.get('cooling_motor', 0)
          config[35] = sum([b for b in config[:35]]) & 0xFF
          return bytes(config)