code: async def get_reports(self):
          cmd = OTGW_CMD_REPORT
          reports = {}
          for value in OTGW_REPORTS.keys():
              ret = await self._wait_for_cmd(cmd, value)
              if ret is None:
                  reports[value] = None
                  continue
              reports[value] = ret[2:]
          status = {
              OTGW_ABOUT: reports.get(OTGW_REPORT_ABOUT),
              OTGW_BUILD: reports.get(OTGW_REPORT_BUILDDATE),
              OTGW_CLOCKMHZ: reports.get(OTGW_REPORT_CLOCKMHZ),
              OTGW_MODE: reports.get(OTGW_REPORT_GW_MODE),
              OTGW_SMART_PWR: reports.get(OTGW_REPORT_SMART_PWR),
              OTGW_THRM_DETECT: reports.get(OTGW_REPORT_THERMOSTAT_DETECT),
              OTGW_DHW_OVRD: reports.get(OTGW_REPORT_DHW_SETTING),
          }
          ovrd_mode = reports.get(OTGW_REPORT_SETPOINT_OVRD)
          if ovrd_mode is not None:
              ovrd_mode = str.upper(ovrd_mode[0])
              status.update({OTGW_SETP_OVRD_MODE: ovrd_mode})
          gpio_funcs = reports.get(OTGW_REPORT_GPIO_FUNCS)
          if gpio_funcs is not None:
              status.update({
                  OTGW_GPIO_A: int(gpio_funcs[0]),
                  OTGW_GPIO_B: int(gpio_funcs[1]),
              })
          led_funcs = reports.get(OTGW_REPORT_LED_FUNCS)
          if led_funcs is not None:
              status.update({
                  OTGW_LED_A: led_funcs[0],
                  OTGW_LED_B: led_funcs[1],
                  OTGW_LED_C: led_funcs[2],
                  OTGW_LED_D: led_funcs[3],
                  OTGW_LED_E: led_funcs[4],
                  OTGW_LED_F: led_funcs[5],
              })
          tweaks = reports.get(OTGW_REPORT_TWEAKS)
          if tweaks is not None:
              status.update({
                  OTGW_IGNORE_TRANSITIONS: int(tweaks[0]),
                  OTGW_OVRD_HB: int(tweaks[1]),
              })
          sb_temp = reports.get(OTGW_REPORT_SETBACK_TEMP)
          if sb_temp is not None:
              status.update({OTGW_SB_TEMP: float(sb_temp)})
          vref = reports.get(OTGW_REPORT_VREF)
          if vref is not None:
              status.update({OTGW_VREF: int(vref)})
          if (ovrd_mode is not None and ovrd_mode != OTGW_SETP_OVRD_DISABLED):
              status[DATA_ROOM_SETPOINT_OVRD] = float(
                  reports[OTGW_REPORT_SETPOINT_OVRD][1:])
          self._update_status(status)
          return dict(self._protocol.status)