meta-bletchley: motor-ctrl:check ac status before on/off and refine dfu cmd

a)
Block power on/off cmd if ac-relay is off.

b)
From official User Guide, to enter DFU mode must disconnect
the Host from power for at least 10 seconds, but power from
ac relay board maybe not be disappear immediately while pull
ac-relay control gpio to low.

Base on experiment result, expand wait time to 25 sec for
workaround.

Example:
a) When sled2 is ac-off
root@bletchley:/# power-ctrl sled2 on
sled2 is ac-off, please turn on ac before power on
root@bletchley:/# power-ctrl sled2 off
sled2 is already ac-off

b)
Tested 10 times into dfu mode successfully
root@bletchley:/# power-ctrl sled2 dfu
Set host2 DFU mode
SLED2: turn ac-off
set_gpio: set power-host2 = 0 success
SLED2: pressing power button
Motor go forward to press Power button
Power button switch triggered
SLED2: turn ac-on
set_gpio: set power-host2 = 1 success
SLED2: releasing host power button
Motor reverse to initial position successful

Change-Id: Idb006ed1c58fd1736fc9410ca86d86a6ec87a6b9
Signed-off-by: Allen.Wang <Allen_Wang@quantatw.com>
diff --git a/meta-facebook/meta-bletchley/recipes-bletchley/motor-ctrl/files/power-ctrl b/meta-facebook/meta-bletchley/recipes-bletchley/motor-ctrl/files/power-ctrl
index 643d7ca..9395b9d 100755
--- a/meta-facebook/meta-bletchley/recipes-bletchley/motor-ctrl/files/power-ctrl
+++ b/meta-facebook/meta-bletchley/recipes-bletchley/motor-ctrl/files/power-ctrl
@@ -200,11 +200,21 @@
 fi
 
 if [[ "$ACTION" == "on" ]]; then
-    echo "Power on ${SLED}"
-    trigger_power_button  "$SLED_NUM"  "$DELAY_POWER_ON"
+    if [ "$(get_ac_status "$SLED_NUM")" == "AC on" ];then
+        echo "Power on ${SLED}"
+        trigger_power_button  "$SLED_NUM"  "$DELAY_POWER_ON"
+    else
+        echo "${SLED} is ac-off, please turn on ac before power on"
+        exit 1
+    fi
 elif [[ "$ACTION" == "off" ]];then
-    echo "Power off ${SLED}"
-    trigger_power_button  "$SLED_NUM"  "$DELAY_POWER_OFF"
+    if [ "$(get_ac_status "$SLED_NUM")" == "AC on" ];then
+        echo "Power off ${SLED}"
+        trigger_power_button  "$SLED_NUM"  "$DELAY_POWER_OFF"
+    else
+        echo "${SLED} is already ac-off"
+        exit 1
+    fi
 elif [[ "$ACTION" == "status" ]];then
     get_ac_status "$SLED_NUM"
     #TODO : check or record Host(DC) power status
@@ -215,12 +225,12 @@
 elif [[ "$ACTION" == "dfu" ]]; then
     echo "Set host$SLED_NUM DFU mode"
 
-    # turn ac off
+    # turn ac off, and hold for 25 seconds
     echo "SLED$SLED_NUM: turn ac-off"
     set_gpio "power-host${SLED_NUM}" 0
-    sleep 1
+    sleep 25
 
-    # press power button, and hold for 10 seconds
+    # press power button
     echo "SLED$SLED_NUM: pressing power button"
     if ! press_power_button "$SLED_NUM"; then
         echo "SLED$SLED_NUM: press power button failed"
@@ -228,7 +238,7 @@
         release_power_button "$SLED_NUM"
         exit 1
     fi
-    sleep 10
+    sleep 1
 
     # turn ac on
     echo "SLED$SLED_NUM: turn ac-on"