添加工厂测试
diff --git a/supwisdom/sp_menu.c b/supwisdom/sp_menu.c
index 4447d52..7ab685e 100644
--- a/supwisdom/sp_menu.c
+++ b/supwisdom/sp_menu.c
@@ -115,7 +115,7 @@
   }
 }
 
-static uint8 sp_link_test(sp_pos_t* pos)
+static void test_link(sp_pos_t* pos)
 {
   uint8 ret;
   sp_protocol_request_t req;
@@ -137,17 +137,16 @@
       if(sp_check_time_valid(resp.data +2))
       {
         disp_hint_info_two(pos, "Á´Â·¼ì²â³É¹¦","ʱÖÓ²»ºÏ·¨", DELAY_TIME3s);
-        return ret;
+        return;
       }
       sp_set_bcdtime(resp.data +2);
       disp_hint_info_two(pos, "Á´Â·¼ì²â³É¹¦","ÒÑͬ²½Ê±ÖÓ", DELAY_TIME3s);
-      return ret;
+      return;
     }
     disp_hint_info_two(pos, "Á´Â·¼ì²âʧ°Ü","ÊÕµ½´íÎó°ü", DELAY_TIME3s);
-    return 1;
+    return;
   }
   disp_hint_info_two(pos, "Á´Â·¼ì²âʧ°Ü","Çë¼ì²âÏß·", DELAY_TIME3s);
-  return ret;
 }
 
 static void show_keyboard_test(sp_pos_t* pos, uint8 offset)
@@ -158,7 +157,14 @@
   disp_hint_info_three(pos, "¼üÅÌÒÀ´ÎÊäÈë","0123456789C",temp,0);
 }
 
-static uint8 sp_keyboard_test(sp_pos_t* pos)
+static void do_keyboard_calibrate(sp_pos_t* pos)
+{
+  disp_hint_info_two("УÑé¼üÅÌ","ÇëÉÔµÈ...",0);
+  sp_key_calibrate();
+  disp_hint_info_two(pos, "¼üÅÌУÑéÍê³É","Çë¼ì²â",DELAY_TIME3s);
+}
+
+static uint8 do_keyboard_test(sp_pos_t* pos)
 {
   uint8 kcode;
   uint32 tick;
@@ -276,12 +282,6 @@
 
 }
 
-static void sp_factory_check(sp_pos_t* pos)
-{
-  sp_link_test(pos);
-  sp_keyboard_test(pos);
-}
-
 static void sp_set_devtime(sp_pos_t* pos)
 {
   uint32 ticker;
@@ -582,6 +582,120 @@
   }
 }
 
+static void test_valve_on(sp_pos_t* pos)
+{
+  uint32 ticker;
+  uint8 kcode;
+  uint32 count;
+  uint32 temp;
+  char msg[32];
+
+  disp_hint_info_two(pos,"·§ÃÅ¿ªÆôÖÐ","È¡Ïû¼üÍ˳ö",DELAY_TIME2s);
+  ticker = sp_get_ticker();
+  sp_flowsensor_count_clear();
+  sp_valve_on();
+  count = 0;
+  while(sp_get_ticker() -ticker < DELAY_TIME60s)
+  {
+    sp_valve_control();
+    kcode = sp_get_key();
+    if(kcode != SP_KEY_NONE)
+    {
+      if(kcode == SP_KEY_CLEAR)
+      {
+        return;
+      }
+      ticker = sp_get_ticker();
+    }
+    temp = sp_flowsensor_get_count();
+    if(temp != count)
+    {
+      count = temp;
+      sprintf(msg,"Á÷Á¿¼ÆÊý:%d",count);
+      disp_hint_info_two(pos,"·§ÃŲâÊÔÖÐ",msg,DELAY_TIME100ms);
+    }
+  }
+}
+
+static void test_valve_off(sp_pos_t* pos)
+{
+  uint32 count;
+  char msg[32];
+
+  sp_valve_off();
+  count= sp_flowsensor_get_count();
+  sprintf(msg,"Á÷Á¿¼ÆÊý:%d",count);
+  disp_hint_info_two(pos,"·§ÃÅÒѹرÕ",msg,DELAY_TIME3s);
+}
+
+static void test_factory_options(sp_pos_t* pos)
+{
+  uint32 ticker = 0;
+  uint8 keycode;
+  uint8 page;
+  uint8 max_cnt;
+  uint8 key_press = 1;
+
+  menu_t menus[] =
+  {
+    {"1.°´¼üУ׼", do_keyboard_calibrate},
+    {"2.°´¼ü²âÊÔ", do_keyboard_test},
+    {"3.¿ªÆô·§ÃÅ", test_valve_on},
+    {"4.¹Ø±Õ·§ÃÅ", test_valve_off},
+    {"5.ͨѶ²âÊÔ", test_link}
+  };
+  max_cnt = sizeof(menus)/sizeof(menu_t)/3;
+  page = 0;
+  ticker = sp_get_ticker();
+  while(sp_get_ticker()-ticker <= DELAY_TIME60s*5)
+  {
+    sp_feed_dog();
+    keycode = sp_get_key();
+    if(keycode != SP_KEY_NONE)
+    {
+      key_press = 1;
+      switch(keycode)
+      {
+      case SP_KEY_0:
+        if(page < (max_cnt-1))
+        {
+          page++;
+        }
+        break;
+      case SP_KEY_1:
+      case SP_KEY_2:
+      case SP_KEY_3:
+      case SP_KEY_4:
+      case SP_KEY_5:
+      case SP_KEY_6:
+      case SP_KEY_7:
+      case SP_KEY_8:
+      case SP_KEY_9:
+        if(menus[keycode-SP_KEY_1].func != NULL)
+        {
+          menus[keycode-SP_KEY_1].func(pos);
+        }
+        break;
+      case SP_KEY_CLEAR:
+        if(page == 0)
+        {
+          return;
+        }
+        page--;
+        break;
+      default:
+        break;
+      }
+    }
+    if(key_press)
+    {
+      disp_hint_info_three(pos, menus[page*3].hit, menus[page*3+1].hit, menus[page*3+2].hit, 0);
+      key_press = 0;
+      ticker = sp_get_ticker();
+    }
+  }
+}
+
 void sp_menu_options(sp_pos_t* pos)
 {
   uint32 ticker = 0;
@@ -593,7 +707,7 @@
   menu_t menus[] =
   {
     {"1.²é¿´²ÎÊý", sp_show_syspara},
-    {"2.¹¤³§²âÊÔ", sp_factory_check},
+    {"2.¹¤³§²âÊÔ", test_factory_options},
     {"3.ÉèÖÃʱ¼ä", sp_set_devtime},
     {"4.ÊÖ¶¯µÇ¼", sp_manual_login},
     {"5.ÉèÖÃÎïÀíid", sp_set_devphyid},
@@ -653,3 +767,5 @@
     }
   }
 }
+
+