# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software
# Foundation, Inc.
#
# This file is part of DejaGnu.
#
# DejaGnu is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# DejaGnu is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with DejaGnu; if not, write to the Free Software Foundation,
# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

#
# reboot_hook -- called to reboot a target board. Returns 1 on
# success, 0 otherwise.
#
proc reboot_via_x10 { dest } {
    if [board_info $dest exists name] {
	set dest [board_info $dest name]
    }

    if [board_info $dest exists x10] {
	set x10 [board_info $dest x10]
	verbose "rebooting x10 unit $x10" 1
	rsh_exec rtl "/usr/unsupported/bin/x10-hellcab unit $x10 off"
	sleep 2
	rsh_exec rtl "/usr/unsupported/bin/x10-hellcab unit $x10 on"
	sleep 2
	return 1
    }
    return 0
}

proc ${board}_reboot { args } {
    if { [llength $args] > 0} {
	set dest [lindex $args 0]
    } else {
	set dest target
    }
    return [reboot_via_x10 $dest]
}
