Author: cyrill62
Date: 2008-11-29 12:33:42 +0100 (Sat, 29 Nov 2008)
New Revision: 2919

Modified:
   software_suite_v2/tuxware/ruby-api/trunk/TuxApi.rb
Log:
* Refactor core & parts


Modified: software_suite_v2/tuxware/ruby-api/trunk/TuxApi.rb
===================================================================
--- software_suite_v2/tuxware/ruby-api/trunk/TuxApi.rb  2008-11-29 10:10:31 UTC 
(rev 2918)
+++ software_suite_v2/tuxware/ruby-api/trunk/TuxApi.rb  2008-11-29 11:33:42 UTC 
(rev 2919)
@@ -1,6 +1,6 @@
-# TuxApi - ruby api to control TuxDroid
-# Author : Cyril LEPAGNOT - [EMAIL PROTECTED]
-# License : BSD 
+# TuxApi is a Ruby api to control TuxDroid
+# Author:: Cyril LEPAGNOT - [EMAIL PROTECTED]
+# License:: BSD 
   
 class String
   def underscore
@@ -12,14 +12,14 @@
 end
 
 class Class
+  # Get class without Module name
   def demodulize
     self.to_s.gsub(/^.*::/, '')
   end
 end
 
+# TuxApi Module regroups all TuxApi classes
 module TuxApi
-  require 'net/http'
-  require 'cgi'
   require 'rexml/document'
 
   class Tux
@@ -74,7 +74,12 @@
     end
   end
 
+  # Main Class to communicate with tuxhttpserver
   class Core
+
+    require 'net/http'
+    require 'cgi'
+
     attr_accessor :host,:user,:password,:port,:controller,:method,:params
 
     def initialize(host = 'localhost', port = 270, user = '0' )
@@ -84,8 +89,7 @@
     end
 
     def send
-      p = ''
- 
+      p = String.new 
       if params 
         params.each_pair do |k,v|
           p << '%s=%s&' % [k,CGI.escape(v.to_s)]
@@ -100,19 +104,19 @@
 
   end
   
+  # Abstract Class for all Tux parts (eyes,wings etc...)
   class TuxPart
+    attr_accessor :core
 
-    attr_accessor :tux
-
     def initialize(parent = Core.new)
-      self.tux = parent
-      self.tux.controller = self.class.demodulize.underscore
+      @core = parent
+      @core.controller = self.class.demodulize.underscore
     end
 
     private
     
     def set_controller
-      self.tux.controller = self.class.demodulize.underscore
+      @core.controller = self.class.demodulize.underscore
     end
   end
 
@@ -122,34 +126,34 @@
     
     def open
       set_controller
-      self.tux.method = 'open'
-      self.tux.send
+      @core.method = 'open'
+      @core.send
     end
 
     def close
       set_controller
-      self.tux.method = 'close'
-      self.tux.send
+      @core.method = 'close'
+      @core.send
     end
 
     def on(count = 2, final_state = 'NDEF')
       set_controller
-      self.tux.method = 'on'
-      self.tux.params = { :count => count, :final_state => final_state }
-      self.tux.send      
+      @core.method = 'on'
+      @core.params = { :count => count, :final_state => final_state }
+      @core.send      
     end
 
     def on_during(duration = 1.0, final_state = 'NDEF')
       set_controller
-      self.tux.method = 'on_during'
-      self.tux.params = { :duration => duration.to_f, :final_state => 
final_state }
-      self.tux.send
+      @core.method = 'on_during'
+      @core.params = { :duration => duration.to_f, :final_state => final_state 
}
+      @core.send
     end
 
     def off
       set_controller
-      self.tux.method = 'off'
-      self.tux.send
+      @core.method = 'off'
+      @core.send
     end
 
     def states
@@ -163,9 +167,9 @@
     def on(intensity = 1.0, leds = 'LED_BOTH')
       intensity = 1.0 if intensity.nil?
       set_controller
-      self.tux.method = 'on'
-      self.tux.params = { :intensity => intensity.to_f, :leds => leds }
-      self.tux.send
+      @core.method = 'on'
+      @core.params = { :intensity => intensity.to_f, :leds => leds }
+      @core.send
     end
     
     def on_left(intensity = nil)
@@ -178,15 +182,15 @@
 
     def on_during
       set_controller
-      self.tux.method = 'on_during'
-      self.tux.send
+      @core.method = 'on_during'
+      @core.send
     end
 
     def off(leds = 'LED_BOTH')
       set_controller
-      self.tux.method = 'off'
-      self.tux.params = { :leds => leds }
-      self.tux.send
+      @core.method = 'off'
+      @core.params = { :leds => leds }
+      @core.send
     end
 
     def off_left
@@ -197,11 +201,11 @@
       off('LED_RIGHT')
     end
 
-    def blink(count = 10,delay = 0.5, leds = 'LED_BOTH')
+    def blink(count = 30,delay = 0.1, leds = 'LED_BOTH')
       set_controller
-      self.tux.method = 'blink'
-      self.tux.params = { :count => count, :delay => delay, :leds => leds }
-      self.tux.send
+      @core.method = 'blink'
+      @core.params = { :count => count, :delay => delay.to_f, :leds => leds }
+      @core.send
     end
 
     def leds
@@ -213,41 +217,41 @@
 
     def up
       set_controller
-      self.tux.method = 'up'
-      self.tux.send
+      @core.method = 'up'
+      @core.send
     end
 
     def down
       set_controller
-      self.tux.method = 'down'
-      self.tux.send
+      @core.method = 'down'
+      @core.send
     end
 
     def on(count = 2, final_state = 'NDEF')
       set_controller
-      self.tux.method = 'on'
-      self.tux.params = { :count => count, :final_state => final_state }
-      self.tux.send      
+      @core.method = 'on'
+      @core.params = { :count => count, :final_state => final_state }
+      @core.send      
     end
 
     def on_during(duration = 1.0, final_state = 'NDEF')
       set_controller
-      self.tux.method = 'on_during'
-      self.tux.params = { :duration => duration.to_f, :final_state => 
final_state }
-      self.tux.send
+      @core.method = 'on_during'
+      @core.params = { :duration => duration.to_f, :final_state => final_state 
}
+      @core.send
     end
 
     def off
       set_controller
-      self.tux.method = 'off'
-      self.tux.send
+      @core.method = 'off'
+      @core.send
     end
 
     def set_speed(value)
       set_controller
-      self.tux.method = 'speed'
-      self.tux.params = { :value => value }
-      self.tux.send
+      @core.method = 'speed'
+      @core.params = { :value => value }
+      @core.send
     end
 
     def states
@@ -259,34 +263,34 @@
     
     def open
       set_controller
-      self.tux.method = 'open'
-      self.tux.send
+      @core.method = 'open'
+      @core.send
     end
 
     def close
       set_controller
-      self.tux.method = 'close'
-      self.tux.send      
+      @core.method = 'close'
+      @core.send      
     end
 
     def on(count = 2, final_state = 'NDEF')
       set_controller
-      self.tux.method = 'on'
-      self.tux.params = { :count => count, :final_state => final_state }
-      self.tux.send      
+      @core.method = 'on'
+      @core.params = { :count => count, :final_state => final_state }
+      @core.send      
     end
 
     def on_during(duration = 1.0, final_state = 'NDEF')
       set_controller
-      self.tux.method = 'on_during'
-      self.tux.params = { :duration => duration.to_f, :final_state => 
final_state }
-      self.tux.send 
+      @core.method = 'on_during'
+      @core.params = { :duration => duration.to_f, :final_state => final_state 
}
+      @core.send 
     end
 
     def off
       set_controller
-      self.tux.method = 'off'
-      self.tux.send
+      @core.method = 'off'
+      @core.send
     end
 
     def states
@@ -297,35 +301,35 @@
   class TTS < TuxPart
     def speak(text)
       set_controller
-      self.tux.method = 'speak'
-      self.tux.params = {:text => text}
-      self.tux.send
+      @core.method = 'speak'
+      @core.params = {:text => text}
+      @core.send
     end
 
     def pause(value = true)
       set_controller
-      self.tux.method = 'pause'
-      self.tux.params = { :value => value}
-      self.tux.send
+      @core.method = 'pause'
+      @core.params = { :value => value}
+      @core.send
     end
 
     def stop
       set_controller
-      self.tux.method = 'stop'
-      self.tux.send
+      @core.method = 'stop'
+      @core.send
     end
 
     def locutor=(name)
       set_controller
-      self.tux.method = 'locutor'
-      self.tux.params = {:name => name}
-      self.tux.send
+      @core.method = 'locutor'
+      @core.params = {:name => name}
+      @core.send
     end
 
     def locutors
       set_controller
-      self.tux.method = 'voices'
-      REXML::Document.new(self.tux.send).root.
+      @core.method = 'voices'
+      REXML::Document.new(@core.send).root.
         get_elements('data/locutor/').
         collect{ |node| node.text }
     end
@@ -334,34 +338,34 @@
   class SoundFlash < TuxPart
     def play(track,volume = 100.0)
       set_controller
-      self.tux.method = 'play'
-      self.tux.params = {:track => track, :volume => volume}
-      self.tux.send
+      @core.method = 'play'
+      @core.params = {:track => track, :volume => volume}
+      @core.send
     end
   end
 
   class Spinning < TuxPart
     def right_on(count = 4)
       set_controller
-      self.tux.method = count < 0 ? 'left_on' : 'right_on'
-      self.tux.params = {:count => count.abs}
-      self.tux.send
+      @core.method = count < 0 ? 'left_on' : 'right_on'
+      @core.params = {:count => count.abs}
+      @core.send
     end
 
     def left_on(count = 4)
       set_controller
-      self.tux.method = count < 0 ? 'right_on' : 'left_on'
-      self.tux.params = {:count => count.abs}
-      self.tux.send
+      @core.method = count < 0 ? 'right_on' : 'left_on'
+      @core.params = {:count => count.abs}
+      @core.send
     end
   end
 
   class Status < TuxPart
     def light_level
       set_controller
-      self.tux.method = 'request_one'
-      self.tux.params = {:status_name => "light_level"}
-      REXML::Document.new(self.tux.send).root.
+      @core.method = 'request_one'
+      @core.params = {:status_name => "light_level"}
+      REXML::Document.new(@core.send).root.
         get_text('data/value').value.to_f
     end
   end


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Tux-droid-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tux-droid-svn

Reply via email to