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