Browse Source

Merge pull request #43 from cuu/master

when the screen is off, the led1 flashes
dphys 5 years ago
parent
commit
90f0374403
4 changed files with 89 additions and 30 deletions
  1. 8 12
      sys.py/UI/counter_screen.py
  2. 1 1
      sys.py/UI/main_screen.py
  3. 2 2
      sys.py/UI/title_bar.py
  4. 78 15
      sys.py/run.py

+ 8 - 12
sys.py/UI/counter_screen.py

@@ -37,14 +37,16 @@ class CounterScreen(FullScreen):
         if self._Number == 0:
             self._Counting = False    
             print("do the real shutdown")
+            
             if config.CurKeySet != "PC":
                 cmdpath = "feh --bg-center gameshell/wallpaper/seeyou.png;"
                 cmdpath += "sleep 3;"
                 cmdpath += "sudo halt -p"
-                pygame.event.post( pygame.event.Event(RUNSYS, message=cmdpath))
+                pygame.event.post( pygame.event.Event(RUNSYS, message=cmdpath))\
+            
             return False
     
-        if self._inter_counter >= 10:
+        if self._inter_counter >=2:
             self._Number -= 1
             if self._Number < 0:
                 self._Number = 0
@@ -54,14 +56,7 @@ class CounterScreen(FullScreen):
             self.Draw()
             self.SwapAndShow()
 
-        
-        if self._inter_counter == 2:
-            commands.getstatusoutput("echo 0 > /proc/driver/led1")
-            #turn off
 
-        elif self._inter_counter == 7:
-            commands.getstatusoutput("echo 1 > /proc/driver/led1")
-            #turn on
         
         return self._Counting
     
@@ -72,19 +67,20 @@ class CounterScreen(FullScreen):
         self._Number = 10
         self._Counting = True
         
-        self._GobjectIntervalId = gobject.timeout_add(100,self.GObjectInterval)
+        self._GobjectIntervalId = gobject.timeout_add(500,self.GObjectInterval)
         
     def StopCounter(self):
         if self._Counting == False:
             return
         self._Counting = False
         self._Number = 10
-        commands.getstatusoutput("echo 0 > /proc/driver/led1")
 
         if self._GobjectIntervalId != -1:
             gobject.source_remove(self._GobjectIntervalId)
             self._GobjectIntervalId = -1
-    
+        
+        return
+                    
     def Init(self):
         self._CanvasHWND = pygame.Surface((self._Width,self._Height))
         self._TopLabel = Label()

+ 1 - 1
sys.py/UI/main_screen.py

@@ -125,7 +125,7 @@ class MainScreen(object):
     _PosX  = 0
     _PosY  = TitleBar._BarHeight+1
     _Width = Width 
-    _Height = Height -FootBar._BarHeight -TitleBar._BarHeight-1
+    _Height = Height -FootBar._BarHeight -TitleBar._BarHeight
     _MyPageStack = None
     _CurrentPage = None # pointer to the current displaying Page Class
     _CanvasHWND  = None

+ 2 - 2
sys.py/UI/title_bar.py

@@ -59,7 +59,7 @@ class TitleBar:
             self.SyncSoundVolume()
             self.UpdateWifiStrength()
             SwapAndShow()
-            print("TitleBar Gobjectroundrobin")
+#            print("TitleBar Gobjectroundrobin")
         elif self._InLowBackLight >= 0:
             self._InLowBackLight+=1
             if self._InLowBackLight > 10:
@@ -122,7 +122,7 @@ class TitleBar:
             f = open(Battery)
         except IOError:
             self._Icons["battery"] = self._Icons["battery_unknown"]
-            print("CheckBatteryStat open failed")
+#            print("CheckBatteryStat open failed")
             return False
         else:
             with f:

+ 78 - 15
sys.py/run.py

@@ -3,6 +3,7 @@
 import dbus
 import dbus.service
 import sys
+import commands
 from wicd import misc 
 ##misc.to_bool
 ##misc.misc.noneToString
@@ -63,6 +64,9 @@ passout_time_stage = 0
 
 last_brt = -1
 
+gobject_flash_led1 = -1
+gobject_flash_led1_counter = 0
+
 def gobject_loop():
     """
     here to receive dbus signal 
@@ -73,17 +77,56 @@ def gobject_loop():
         gobject_main_loop.quit()
         exit(-1)
 
+def GobjectFlashLed1(main_screen):
+    global gobject_flash_led1_counter
+    gobject_flash_led1_counter+=1
 
-def RestoreLastBackLightBrightness(main_screen):
-    global last_brt,passout_time_stage
+    if gobject_flash_led1_counter == 2:
+        try:
+            f = open("/proc/driver/led1","w")
+        except IOError:
+            print( "open /proc/driver/led1 IOError")
+            pass
+        else:
+            with f:
+                f.seek(0)
+                f.write("1")
+                f.truncate()
+                f.close()
+    
 
-    main_screen._CounterScreen.StopCounter()
+    elif gobject_flash_led1_counter == 4:
+        try:
+            f = open("/proc/driver/led1","w")
+        except IOError:
+            print( "open /proc/driver/led1 IOError")
+            pass
+        else:
+            with f:
+                f.seek(0)
+                f.write("0")
+                f.truncate()
+                f.close()
+    
+    if gobject_flash_led1_counter == 10:
+        gobject_flash_led1_counter = 0
+    
+    return True
+
+    
+def RestoreLastBackLightBrightness(main_screen):
+    global last_brt,passout_time_stage,gobject_flash_led1
 
     passout_time_stage = 0
     main_screen._TitleBar._InLowBackLight = -1
+    
+    if gobject_flash_led1 != -1:
+        gobject.source_remove(gobject_flash_led1)
+        gobject_flash_led1 = -1
 
+    
     if last_brt == -1:
-        return
+        return True
 
     try:
         f = open(config.BackLight,"r+")
@@ -103,10 +146,30 @@ def RestoreLastBackLightBrightness(main_screen):
                 last_brt = -1
             else:                
                 f.close()
-                return
+
+    try:
+        f = open("/proc/driver/led1","w")
+    except IOError:
+        print( "open /proc/driver/led1 IOError")
+        pass
+    else:
+        with f:
+            f.seek(0)
+            f.write("0")
+            f.truncate()
+            f.close()
+    
+            
+    if main_screen._CounterScreen._Counting==True:
+        main_screen._CounterScreen.StopCounter()
+        main_screen.Draw()
+        main_screen.SwapAndShow()
+        return False
+        
+    return True
 
 def InspectionTeam(main_screen):
-    global everytime_keydown,last_brt,passout_time_stage
+    global everytime_keydown,last_brt,passout_time_stage,gobject_flash_led1
     
     cur_time = time.time()
     time_1 = config.PowerLevels[config.PowerLevel][0]
@@ -142,7 +205,7 @@ def InspectionTeam(main_screen):
     
     elif cur_time - everytime_keydown > time_2 and passout_time_stage == 1:
         print("timeout, close screen %d" % int(cur_time - everytime_keydown))
-
+        
         try:
             f = open(config.BackLight,"r+")
         except IOError:
@@ -154,11 +217,15 @@ def InspectionTeam(main_screen):
                 f.write(str(brt))
                 f.truncate()
                 f.close()
+
         
         main_screen._TitleBar._InLowBackLight = 0
 
         if time_3 != 0:
-            passout_time_stage = 2 # next 
+            passout_time_stage = 2 # next
+
+        gobject_flash_led1 = gobject.timeout_add(200,GobjectFlashLed1,main_screen)
+        
         everytime_keydown = cur_time
         
     elif cur_time - everytime_keydown > time_3 and passout_time_stage == 2:
@@ -202,10 +269,7 @@ def event_process(event,main_screen):
             main_screen.SwapAndShow()
             pygame.event.clear(GMEVT)
             return
-        if event.type == RUNEVT:
-            everytime_keydown = time.time()
-            RestoreLastBackLightBrightness(main_screen)
-            
+        if event.type == RUNEVT:            
             if config.DontLeave==True:
                 os.chdir(GetExePath())
                 os.system( "/bin/sh -c "+event.message)
@@ -228,8 +292,6 @@ def event_process(event,main_screen):
             return
 
         if event.type == RUNSYS:
-            everytime_keydown = time.time()
-            RestoreLastBackLightBrightness(main_screen)
             if config.DontLeave==True:
                 os.chdir(GetExePath())
                 os.system( "/bin/sh -c "+event.message)
@@ -255,7 +317,8 @@ def event_process(event,main_screen):
             return
         if event.type == pygame.KEYDOWN:
             everytime_keydown = time.time()
-            RestoreLastBackLightBrightness(main_screen)
+            if RestoreLastBackLightBrightness(main_screen) == False:
+                return
             ###########################################################
             if event.key == pygame.K_q:
                 on_exit_cb = getattr(main_screen,"OnExitCb",None)