<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_monitored_hosting_devices_info(self, hd_state_filter=None):
 """ This function returns a list of all hosting devices monitored by this agent """

        wait_time = datetime.timedelta(
            seconds=cfg.CONF.cfg_agent.hosting_device_dead_timeout)
        resp = []
        for hd_id in self.hosting_devices_backlog:
            hd = self.hosting_devices_backlog[hd_id]['hd']

            display_hd = True

            if hd_state_filter is not None:
                if hd['hd_state'] == hd_state_filter:
                    display_hd = True
                else:
                    display_hd = False

            if display_hd:
                created_time = hd['created_at']
                boottime = datetime.timedelta(seconds=hd['booting_time'])
                backlogged_at = hd['backlog_insertion_ts']
                booted_at = created_time + boottime
                dead_at = backlogged_at + wait_time
                resp.append({'host id': hd['id'],
                             'hd_state': hd['hd_state'],
                             'created at': str(created_time),
                             'backlogged at': str(backlogged_at),
                             'estimate booted at': str(booted_at),
                             'considered dead at': str(dead_at)})
            else:
                continue
        return resp