def moxa_readers_restart(enclosure, applications_list, hard_reboot_flag=False):
    telnetcon = TelnetAgent(enclosure, 'admin', 'admin', '\> ')
    try:
        if telnetcon.login():
            while True:
                if not moxa_readers_apps_kill(telnetcon, applications_list, hard_reboot_flag):
                    glob_logger.debug("Target apps terminated on reader {0}".format(enclosure))
                    break
            if not hard_reboot_flag:
                while True:
                    if moxa_readers_apps_start(telnetcon, applications_list):     
                        glob_logger.debug("Target apps restarted on reader {0}, no system reboot performed.".format(enclosure))
                        telnetcon.logout()
                        break
            else:
                telnetcon.run("reboot")
                glob_logger.debug("System reboot on reader {0} completed.".format(enclosure))
        if (hard_reboot_flag):
            sleep(reboot_sleep_time)
        else:
            sleep(sleep_time)
        remote_diag(enclosure)
    except Exception as e:
        raise Exception("Exception on reader {0} ".format(enclosure) + e.args[0])