From 9500e98433e274acd1b300094ae56d9389b22a8c Mon Sep 17 00:00:00 2001
From: Metallicow <metaliobovinus@gmail.com>
Date: Sun, 1 Jun 2014 08:18:13 -0600
Subject: [PATCH] __doc__ switch, make importable, and easy to test

---
 examples/switch.py | 51 ++++++++++++++++++++++++++++++----------------
 1 file changed, 34 insertions(+), 17 deletions(-)

diff --git a/examples/switch.py b/examples/switch.py
index d2bdad040..200caa4a4 100644
--- a/examples/switch.py
+++ b/examples/switch.py
@@ -1,8 +1,18 @@
-"""
+__doc__ = """
 switch.py
 =========
 
-Light up all the leds when the USR switch on the pyboard is pressed.
+Light up some leds when the USR switch on the pyboard is pressed.
+
+Example Usage::
+
+    Micro Python v1.0.1 on 2014-05-12; PYBv1.0 with STM32F405RG
+    Type "help()" for more information.
+    >>> import switch
+    >>> switch.run_loop([2, 3])
+    Loop started.
+    Press Ctrl+C to break out of the loop.
+
 """
 
 import pyb
@@ -12,18 +22,25 @@ red_led = pyb.LED(1)
 green_led = pyb.LED(2)
 orange_led = pyb.LED(3)
 blue_led = pyb.LED(4)
-leds = [red_led, green_led, orange_led, blue_led]
-
-while 1:
-    if switch():
-        ## red_led.on()
-        ## green_led.on()
-        ## orange_led.on()
-        ## blue_led.on()
-        [led.on() for led in leds]
-    else:
-        ## red_led.off()
-        ## green_led.off()
-        ## orange_led.off()
-        ## blue_led.off()
-        [led.off() for led in leds]
+all_leds = [red_led, green_led, orange_led, blue_led]
+
+def run_loop(use_leds=[]):
+    """
+    Start the loop.
+
+    :param `use_leds`: Which leds to light up upon switch press.
+    :type `use_leds`: list of integers [1-4]
+    """
+    print('Loop started.\nPress Ctrl+C to break out of the loop.')
+    leds = [all_leds[i - 1] for i in use_leds]
+    while 1:
+        try:
+            if switch():
+                [led.on() for led in leds]
+            else:
+                [led.off() for led in leds]
+        except OSError: # VCPInterrupt # Ctrl+C in interpreter mode.
+            break
+
+if __name__ == '__main__':
+    run_loop()
-- 
GitLab