contrib: prepare for new constructors
[nit.git] / contrib / physical_interface_for_mpd_on_rpi / physical_interface_for_mpd_on_rpi.nit
index 2e06cf9..335444a 100644 (file)
@@ -29,24 +29,29 @@ import mpd
 import privileges
 
 class PhysicalInterface
-       var mpd = new MPDConnection("localhost", 6600, "password")
+       var mpd = new MPDConnection(server, port, password)
+       protected fun password: String do return "password"
+       fun server: String do return "localhost"
+       fun port: Int do return 6600
 
-       var but_play: Switch
-       var but_playlist_a: Switch
+       var but_play: Switch is noinit
+       var but_playlist_a: Switch is noinit
 
-       var vol: RotaryEncoder
+       var vol: RotaryEncoder is noinit
        var vol_step = 2
 
-       var lcd: HD44780
+       var lcd: HD44780 is noinit
 
-       var lcd_backlight: RPiPin
+       var lcd_backlight: RPiPin is noinit
        var lcd_backlight_delay = 1000
 
+       var buzzer: Buzzer is noinit
+
        init
        do
                # commandline options for privileges drop
                var opts = new OptionContext
-               var opt_ug = new OptionDropPrivileges
+               var opt_ug = new OptionUserAndGroup.for_dropping_privileges
                #opt_ug.mandatory = true
                opts.add_option(opt_ug)
 
@@ -96,6 +101,11 @@ class PhysicalInterface
 
                lcd_backlight = new RPiPin.p1_18
                lcd_backlight.fsel = new FunctionSelect.outp
+
+               # Buzzer
+               var buzzer_pin = new RPiPin.p1_11
+               buzzer_pin.fsel = new FunctionSelect.outp
+               buzzer = new Buzzer(buzzer_pin)
        end
 
        fun run
@@ -189,12 +199,16 @@ class PhysicalInterface
                        print "stopped -> play"
                        mpd.play
                end
+
+               bell
        end
 
        fun play_playlist_a
        do
                mpd.load_playlist("alexis")
        end
+
+       fun bell do buzzer.buzz(1.5, 20)
 end
 
 var phy = new PhysicalInterface