subduino 0.3.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,66 @@
1
+ Subduino
2
+ ========
3
+
4
+ AVR/Arduino Serial Tools on Ruby
5
+
6
+ http://github.com/nofxx/subduino
7
+
8
+
9
+ Install
10
+ -------
11
+
12
+ gem install subduino
13
+
14
+
15
+ Requirements
16
+ ------------
17
+
18
+ Gems:
19
+
20
+ * serialport http://github.com/hparra/ruby-serialport
21
+
22
+ If you want:
23
+
24
+ PubSub:
25
+
26
+ * redis
27
+
28
+ WebApp:
29
+
30
+ * sinatra
31
+ * haml
32
+
33
+
34
+ Use
35
+ ---
36
+
37
+ subduino -p <PORT> -b <BAUDS>
38
+
39
+
40
+
41
+ PubSub
42
+ ------
43
+
44
+
45
+ Subduino.start do |reading|
46
+ puts "Received from mcu: #{reading}"
47
+ # Mail.send("foo@bla.com") if reading && reading.digital?
48
+ # Postgre.remember(:sensor => reading)
49
+ # Mongoid.insert(:sensor => reading)
50
+ # ...
51
+ end
52
+
53
+ Subduino.write(TXT)
54
+
55
+
56
+ Webapp
57
+ ------
58
+
59
+ Need some love...
60
+
61
+
62
+
63
+ License
64
+ -------
65
+
66
+ "WTFPL":http://sam.zoy.org/wtfpl/
data/Rakefile CHANGED
@@ -1,51 +1,37 @@
1
- require 'rubygems'
2
- require 'rake'
1
+ require 'bundler'
2
+ Bundler.setup
3
3
 
4
- begin
5
- require 'jeweler'
6
- Jeweler::Tasks.new do |gem|
7
- gem.name = "subduino"
8
- gem.summary = "Arduino Ruby Helpers"
9
- gem.description = "Interface, compile, upload... Play with arduino on ruby!"
10
- gem.email = "x@nofxx.com"
11
- gem.homepage = "http://github.com/nofxx/subduino"
12
- gem.authors = ["Marcos Piccinini"]
13
- gem.add_dependency "redis"
14
- gem.add_dependency "eventmachine"
15
- gem.add_development_dependency "rspec", ">= 1.2.9"
16
- # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
17
- end
18
- Jeweler::GemcutterTasks.new
19
- rescue LoadError
20
- puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
21
- end
4
+ require "rspec"
5
+ require "rspec/core/rake_task"
22
6
 
23
- # require 'spec/rake/spectask'
24
- # Spec::Rake::SpecTask.new(:spec) do |spec|
25
- # spec.libs << 'lib' << 'spec'
26
- # spec.spec_files = FileList['spec/**/*_spec.rb']
27
- # end
7
+ $LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
8
+ require "subduino/version"
28
9
 
29
- # Spec::Rake::SpecTask.new(:rcov) do |spec|
30
- # spec.libs << 'lib' << 'spec'
31
- # spec.pattern = 'spec/**/*_spec.rb'
32
- # spec.rcov = true
33
- # end
10
+ desc "Builds the gem"
11
+ task :gem => :build
12
+ task :build do
13
+ system "gem build subduino.gemspec"
14
+ Dir.mkdir("pkg") unless Dir.exists?("pkg")
15
+ system "mv subduino-#{Subduino::VERSION}.gem pkg/"
16
+ end
34
17
 
35
- # task :spec => :check_dependencies
18
+ task :install => :build do
19
+ system "sudo gem install pkg/subduino-#{Subduino::VERSION}.gem"
20
+ end
36
21
 
37
- # task :default => :spec
22
+ task :release => :build do
23
+ system "git tag -a v#{Subduino::VERSION} -m 'Tagging #{Subduino::VERSION}'"
24
+ system "git push --tags"
25
+ system "gem push pkg/subduino-#{Subduino::VERSION}.gem"
26
+ end
38
27
 
39
- require 'rake/rdoctask'
40
- Rake::RDocTask.new do |rdoc|
41
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
42
28
 
43
- rdoc.rdoc_dir = 'rdoc'
44
- rdoc.title = "subduino #{version}"
45
- rdoc.rdoc_files.include('README*')
46
- rdoc.rdoc_files.include('lib/**/*.rb')
29
+ RSpec::Core::RakeTask.new(:spec) do |spec|
30
+ spec.pattern = "spec/**/*_spec.rb"
47
31
  end
48
32
 
33
+ task :default => [:spec]
34
+
49
35
  desc "Download and install arduino libraries"
50
36
  task :clibs do |t|
51
37
  puts "Starting...."
@@ -1,56 +1,44 @@
1
1
  #!/usr/bin/env ruby
2
2
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
+ #require 'pry'
4
+ #require 'faye'
3
5
  require 'rubygems'
4
6
  require 'optparse'
5
-
7
+ require 'subduino'
8
+ require 'subduino/os'
6
9
 
7
10
  Debug = false
8
11
 
9
- if File.exists?(f = ARGV.join)
10
- # return unless f =~ /\.yml$/
11
- puts "Using config file #{f}"
12
- AppConfig = YAML.load(File.read(f))["opts"]
13
- else
14
- AppConfig = { :log_interval => 30 }
15
- end
16
-
17
- OptionParser.new { |op|
12
+ op = OptionParser.new { |op|
18
13
  op.on('-d', '--debug') { |d| Debug = true }
19
- op.on('-b', '--bauds=BAUDS', Integer) { |b| AppConfig[:bauds] = b }
20
- op.on('-e env') { |val| set :environment, val.to_sym }
21
- op.on('-s server') { |val| set :server, val }
22
- op.on('-p port') { |val| set :port, val.to_i }
14
+ op.on('-b', '--bauds=BAUDS', Integer) { |b| Subduino::Opts[:bauds] = b }
15
+ op.on('-p', '--port=/dev/port') { |p| Subduino::Opts[:port] = p }
16
+ # op.on('-e env') { |val| set :environment, val.to_sym }
17
+ # op.on('-s server') { |val| set :server, val }
23
18
  op.parse!(ARGV)
24
19
  }
25
20
 
26
- require 'subduino'
27
- require 'subduino/os'
28
- require 'faye'
29
21
  # Cubduino.write("hahah")
30
22
  # puts Cubduino.read
31
23
 
32
- # set :run, true
33
-
34
-
35
24
  if ARGV.empty? || ARGV.join =~ /yml/
36
25
  LastRun = {:all => 0}
37
26
 
38
- client = Faye::Client.new('http://localhost:8000/faye')
27
+ # client = Faye::Client.new('http://localhost:8000/faye')
39
28
 
40
29
  EM.run do
41
30
  if Debug
42
31
  puts "Starting on #{OS}"
32
+ puts "--------------------- #{Time.now}"
43
33
  end
44
34
 
45
35
  Subduino.start do |read|
46
- # Subduino::ArdIO.write("hi")
47
- if Debug
48
- #puts "--------------------- #{Time.now}"
49
- #p read
50
- end
51
- if LastRun[:all] < (Time.now.to_i - AppConfig[:log_interval])
36
+
37
+ print read if Debug
38
+
39
+ if LastRun[:all] < (Time.now.to_i - Subduino::Opts[:log_interval])
52
40
  LastRun[:all] = Time.now.to_i
53
- client.publish('/stats', 'data' => read)
41
+ # client.publish('/stats', 'data' => read)
54
42
  Subduino::Store.add_csv_to_store(read, true)
55
43
  else
56
44
  Subduino::Store.add_csv_to_store(read)
@@ -17,14 +17,22 @@ require 'subduino/ard_io'
17
17
  require 'subduino/ard_ps'
18
18
  require 'subduino/parse'
19
19
  require 'subduino/store'
20
- require 'subduino/arduino'
20
+ require 'subduino/serial'
21
21
 
22
22
  #Thread.current.abort_on_exception = false
23
23
 
24
24
  module Subduino
25
+ if File.exists?(f = ARGV.join)
26
+ # return unless f =~ /\.yml$/
27
+ puts "Using config file #{f}"
28
+ Opts = YAML.load(File.read(f))["opts"]
29
+ else
30
+ Opts = { :log_interval => 30 }
31
+ end
32
+
33
+
25
34
  Log = Logger.new(const_defined?("DEBUG") ? STDOUT : "subduino-debug.log")
26
35
  # BAUDS = [300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 115200]
27
- Sensors = [:temp, :lux]
28
36
  # DATA_BITS = 8
29
37
  # DATA_STOP = 1
30
38
 
@@ -8,9 +8,8 @@ module Subduino
8
8
  #
9
9
  # Direct access to the SerialPort instance.
10
10
  #
11
- def sp
12
- @sp ||= SerialPort.new(Arduino.find_usb, AppConfig[:bauds] || 57600) #, DATA_BITS, DATA_STOP, parity)
13
- # @sp.read_timeout = 10;# @sp.write_timeout = 10
11
+ def serial
12
+ @serial ||= Serial.new(Opts[:bauds])
14
13
  end
15
14
 
16
15
  #
@@ -21,42 +20,43 @@ module Subduino
21
20
  # Feed it with a block to read the text.
22
21
  #
23
22
  def read(&proc)
24
- Log.info "[USB] Found Device...#{Arduino.find_usb}"
25
- Log.info "[USB] Starting Connect..." + sp.get_modem_params.map { |k,v| "#{k}: #{v}" }.join(" ")
26
- Log.info "[USB] Read Timeout #{sp.read_timeout}" # {sp.write_timeout}"
23
+ Log.info "[USB] Found Device...#{serial.port}"
24
+ Log.info "[USB] Starting Connect..." + serial.sp.get_modem_params.map { |k,v| "#{k}: #{v}" }.join(" ")
25
+ # Log.info "[USB] Read Timeout #{sp.read_timeout}" # {sp.write_timeout}"
27
26
 
28
- if sp
29
- @iothread ||= Thread.new do
30
- # Thread.current.abort_on_exception = false
31
- icache = []
32
- loop do
33
- begin
34
- while char = sp.getc
35
- if !char.valid_encoding?
36
- bytes = char.bytes.to_a
37
- hexes = bytes.map { |b| b.to_s(16) }
38
- puts " - Bad char #{char} - (Hex: #{char.unpack('H')} | Byte(s) #{bytes} | Hexe(s) #{hexes}"
39
- elsif char !~ /\n|\r/
40
- # print char if Debug
41
- icache << char
42
- else
43
- data = icache.join(""); icache = []
44
- unless data.empty?
45
- Log.info "[IO RX] #{data}"
46
- proc.call(data)
27
+ if serial.up?
28
+ @iothread ||= Thread.new do
29
+ # Thread.current.abort_on_exception = false
30
+ icache = []
31
+ loop do
32
+ begin
33
+ while char = @serial.read
34
+ if !char.valid_encoding?
35
+ bytes = char.bytes.to_a
36
+ hexes = bytes.map { |b| b.to_s(16) }
37
+ puts " - Bad char #{char} - (Hex: #{char.unpack('H')} | Byte(s) #{bytes} | Hexe(s) #{hexes}"
38
+ # elsif char !~ /\n|\r/
39
+ # # print char if Debug
40
+ # icache << char
41
+ else
42
+ #data = icache.join(""); icache = []
43
+ data = char
44
+ unless data.empty?
45
+ Log.info "[IO RX] #{data}"
46
+ proc.call(data)
47
+ end
47
48
  end
49
+ # sleep 1
48
50
  end
49
- # sleep 1
51
+ rescue => e
52
+ Log.error "[USB] Error #{e}"
53
+ Log.error e.backtrace.join("\n")
54
+ stop!
55
+ exit 1
50
56
  end
51
- rescue => e
52
- Log.error "[USB] Error #{e}"
53
- Log.error e.backtrace.join("\n")
54
- stop!
55
- exit 1
56
57
  end
57
58
  end
58
59
  end
59
- end
60
60
 
61
61
  end
62
62
 
@@ -69,10 +69,7 @@ module Subduino
69
69
  #
70
70
  def write(msg)
71
71
  Log.info "[IO TX] #{msg}"
72
- txt = msg.gsub("\r|\n", "")
73
- # txt += "\n" unless txt =~ /^\\n/
74
- puts "=> Sending #{txt.inspect}" if Debug
75
- sp.puts(msg)
72
+ serial.write(msg)
76
73
  end
77
74
 
78
75
 
@@ -80,7 +77,7 @@ module Subduino
80
77
  # Finish Him!
81
78
  #
82
79
  def stop!
83
- sp.close
80
+ serial.kill
84
81
  Thread.kill @iothread
85
82
  Log.info "[IO] K.I.A"
86
83
  end
@@ -0,0 +1,13 @@
1
+ ;; Object semantic.cache
2
+ ;; SEMANTICDB Tags save file
3
+ (semanticdb-project-database "semantic.cache"
4
+ :file "semantic.cache"
5
+ :tables (list
6
+ (semanticdb-table "Makefile"
7
+ :file "Makefile"
8
+ :pointmax 11514
9
+ :major-mode 'makefile-gmake-mode
10
+ :tokens '(("TARGET" variable nil (("!!SCAFFOLD!!")) nil nil nil [274 302]) ("ARDUINO_DIR" variable nil (("/usr/share/arduino")) nil nil nil [302 336]) ("ARDUINO_LIBS" variable nil (("Messenger")) nil nil ((dirty . t)) [336 361]) ("MCU" variable nil (("atmega328p")) nil nil nil [370 396]) ("F_CPU" variable nil (("16000000")) nil nil nil [396 420]) ("ARDUINO_PORT" variable nil (("/dev/ttyUSB*")) nil nil nil [420 448]) ("AVR_TOOLS_PATH" variable nil (("/usr/bin")) nil nil nil [457 483]) ("AVRDUDE_CONF" variable nil (("/usr/share/arduino/hardware/tools/avrdude.conf")) nil nil nil [483 547]) ("AVRDUDE_ARD_PROGRAMMER" variable nil (("stk500v1")) nil nil nil [558 592]) ("AVRDUDE_ARD_BAUDRATE" variable nil (("57600")) nil nil nil [592 623]) ("AVR_TOOLS_PATH" variable nil (("$(ARDUINO_DIR)/hardware/tools/avr/bin")) nil nil nil [2902 2960]) ("ARDUINO_ETC_PATH" variable nil (("$(ARDUINO_DIR)/hardware/tools/avr/etc")) nil nil nil [2991 3049]) ("AVRDUDE_CONF" variable nil (("$(ARDUINO_ETC_PATH)/avrdude.conf")) nil nil nil [3076 3128]) ("ARDUINO_LIB_PATH" variable nil (("$(ARDUINO_DIR)/libraries")) nil nil nil [3135 3180]) ("ARDUINO_CORE_PATH" variable nil (("$(ARDUINO_DIR)/hardware/arduino/cores/arduino")) nil nil nil [3180 3246]) ("OBJDIR" variable nil (("build-cli")) nil nil nil [3286 3310]) ("LOCAL_C_SRCS" variable nil (("$(wildcard *.c)")) nil nil nil [3402 3436]) ("LOCAL_CPP_SRCS" variable nil (("$(wildcard *.cpp)")) nil nil nil [3436 3472]) ("LOCAL_CC_SRCS" variable nil (("$(wildcard *.cc)")) nil nil nil [3472 3507]) ("LOCAL_PDE_SRCS" variable nil (("$(wildcard *.pde)")) nil nil nil [3507 3543]) ("LOCAL_AS_SRCS" variable nil (("$(wildcard *.S)")) nil nil nil [3543 3577]) ("LOCAL_OBJ_FILES" variable nil (("$(LOCAL_C_SRCS:.c=.o)") ("$(LOCAL_CPP_SRCS:.cpp=.o)") nil ("$(LOCAL_CC_SRCS:.cc=.o)") ("$(LOCAL_PDE_SRCS:.pde=.o)") nil ("$(LOCAL_AS_SRCS:.S=.o)")) nil nil nil [3577 3728]) ("LOCAL_OBJS" variable nil (("$(patsubst %,$(OBJDIR)/%,$(LOCAL_OBJ_FILES))")) nil nil nil [3728 3791]) ("DEPS" variable nil (("$(LOCAL_OBJS:.o=.d)")) nil nil nil [3811 3849]) ("CORE_C_SRCS" variable nil (("$(wildcard $(ARDUINO_CORE_PATH)/*.c)")) nil nil nil [3917 3972]) ("CORE_CPP_SRCS" variable nil (("$(wildcard $(ARDUINO_CORE_PATH)/*.cpp)")) nil nil nil [3972 4029]) ("EXTRA_CPP_SRCS" variable nil (("$(wildcard $(ARDUINO_LIB_PATH)/Messenger/*.cpp)")) nil nil nil [4029 4096]) ("CORE_OBJ_FILES" variable nil (("$(CORE_C_SRCS:.c=.o)") ("$(CORE_CPP_SRCS:.cpp=.o)") ("$(EXTRA_CPP_SRCS:.cpp=.o)")) nil nil nil [4096 4186]) ("CORE_OBJS" variable nil (("$(patsubst $(ARDUINO_CORE_PATH)/%, $(OBJDIR)/%,$(CORE_OBJ_FILES))")) nil nil nil [4186 4270]) ("OBJS" variable nil (("$(LOCAL_OBJS)") ("$(CORE_OBJS)")) nil nil nil [4302 4347]) ("TARGET_HEX" variable nil (("$(OBJDIR)/$(TARGET).hex")) nil nil nil [4480 4517]) ("TARGET_ELF" variable nil (("$(OBJDIR)/$(TARGET).elf")) nil nil nil [4517 4554]) ("TARGETS" variable nil (("$(OBJDIR)/$(TARGET).*")) nil nil nil [4554 4589]) ("DEP_FILE" variable nil (("$(OBJDIR)/depends.mk")) nil nil nil [4615 4649]) ("CC" variable nil (("$(AVR_TOOLS_PATH)/avr-gcc")) nil nil nil [4673 4709]) ("CXX" variable nil (("$(AVR_TOOLS_PATH)/avr-g++")) nil nil nil [4709 4745]) ("OBJCOPY" variable nil (("$(AVR_TOOLS_PATH)/avr-objcopy")) nil nil nil [4745 4785]) ("OBJDUMP" variable nil (("$(AVR_TOOLS_PATH)/avr-objdump")) nil nil nil [4785 4825]) ("AR" variable nil (("$(AVR_TOOLS_PATH)/avr-ar")) nil nil nil [4825 4860]) ("SIZE" variable nil (("$(AVR_TOOLS_PATH)/avr-size")) nil nil nil [4860 4897]) ("NM" variable nil (("$(AVR_TOOLS_PATH)/avr-nm")) nil nil nil [4897 4932]) ("REMOVE" variable nil (("rm") ("-f")) nil nil nil [4932 4948]) ("MV" variable nil (("mv") ("-f")) nil nil nil [4948 4964]) ("CAT" variable nil (("cat")) nil nil nil [4964 4978]) ("ECHO" variable nil (("echo")) nil nil nil [4978 4993]) ("SYS_LIBS" variable nil (("$(patsubst %,$(ARDUINO_LIB_PATH)/%,$(ARDUINO_LIBS))")) nil nil nil [5014 5082]) ("SYS_INCLUDES" variable nil (("$(patsubst %,-I%,$(SYS_LIBS))")) nil nil nil [5082 5128]) ("SYS_OBJS" variable nil (("$(wildcard $(patsubst %,%/*.o,$(SYS_LIBS)))")) nil nil nil [5128 5188]) ("CPPFLAGS" variable nil (("-mmcu=$(MCU)") ("-DF_CPU=$(F_CPU)") nil ("-I.") ("-I$(ARDUINO_CORE_PATH)") nil ("$(SYS_INCLUDES)") ("-g") ("-Os") ("-w") ("-Wall") nil ("-ffunction-sections") ("-fdata-sections")) nil nil nil [5189 5354]) ("CFLAGS" variable nil (("-std=gnu99")) nil nil nil [5354 5381]) ("CXXFLAGS" variable nil (("-fno-exceptions")) nil nil nil [5381 5413]) ("ASFLAGS" variable nil (("-mmcu=$(MCU)") ("-I.") ("-x") ("assembler-with-cpp")) nil nil nil [5413 5468]) ("LDFLAGS" variable nil (("-mmcu=$(MCU)") ("-lm") ("-Wl,--gc-sections") ("-Os")) nil nil nil [5468 5523]) ("ARD_PORT" variable nil (("$(firstword $(wildcard $(ARDUINO_PORT)))")) nil nil nil [5659 5716]) ("$(OBJDIR)" function nil (("%.c")) nil nil nil [6187 6249]) ("$(OBJDIR)" function nil (("%.cc")) nil nil nil [6249 6315]) ("$(OBJDIR)" function nil (("%.cpp")) nil nil nil [6315 6382]) ("$(OBJDIR)" function nil (("%.S")) nil nil nil [6382 6445]) ("$(OBJDIR)" function nil (("%.s")) nil nil nil [6445 6508]) ("$(OBJDIR)" function nil (("%.c")) nil nil nil [6508 6587]) ("$(OBJDIR)" function nil (("%.cc")) nil nil nil [6587 6670]) ("$(OBJDIR)" function nil (("%.cpp")) nil nil nil [6670 6754]) ("$(OBJDIR)" function nil (("%.S")) nil nil nil [6754 6834]) ("$(OBJDIR)" function nil (("%.s")) nil nil nil [6834 6914]) ("$(OBJDIR)" function nil (("%.pde")) nil nil nil [6941 7012]) ("$(OBJDIR)" function nil (("$(OBJDIR)/%.cpp")) nil nil nil [7012 7089]) ("$(OBJDIR)" function nil (("$(OBJDIR)/%.cpp")) nil nil nil [7089 7183]) ("$(OBJDIR)" function nil (("$(ARDUINO_CORE_PATH)/%.c")) nil nil nil [7196 7279]) ("$(OBJDIR)" function nil (("$(ARDUINO_CORE_PATH)/%.cpp")) nil nil nil [7279 7367]) ("$(OBJDIR)" function nil (("$(OBJDIR)/%.elf")) nil nil nil [7396 7468]) ("$(OBJDIR)" function nil (("$(OBJDIR)/%.elf")) nil nil nil [7468 7619]) ("$(OBJDIR)" function nil (("$(OBJDIR)/%.elf")) nil nil nil [7619 7680]) ("$(OBJDIR)" function nil (("$(OBJDIR)/%.elf")) nil nil nil [7680 7733]) ("AVRDUDE" variable nil (("$(AVR_TOOLS_PATH)/avrdude")) nil nil nil [7835 7880]) ("AVRDUDE_COM_OPTS" variable nil (("-q") ("-V") ("-p") ("$(MCU)")) nil nil nil [7887 7922]) ("+" variable nil (("-C") ("$(AVRDUDE_CONF)")) nil nil nil [7958 7980]) ("AVRDUDE_ARD_PROGRAMMER" variable nil (("stk500v1")) nil nil nil [8017 8051]) ("AVRDUDE_ARD_BAUDRATE" variable nil (("57600") nil) nil nil nil [8086 8125]) ("AVRDUDE_ARD_OPTS" variable nil (("-c") ("$(AVRDUDE_ARD_PROGRAMMER)") ("-b") ("$(AVRDUDE_ARD_BAUDRATE)") ("-P") ("$(ARD_PORT)")) nil nil nil [8132 8222]) ("ISP_LOCK_FUSE_PRE" variable nil (("0x3f")) nil nil nil [8248 8274]) ("ISP_LOCK_FUSE_POST" variable nil (("0xcf")) nil nil nil [8307 8333]) ("ISP_HIGH_FUSE" variable nil (("0xdf")) nil nil nil [8361 8387]) ("ISP_LOW_FUSE" variable nil (("0xff")) nil nil nil [8414 8440]) ("ISP_EXT_FUSE" variable nil (("0x01")) nil nil nil [8467 8493]) ("ISP_PROG" variable nil (("-c") ("stk500v2")) nil nil nil [8516 8543]) ("AVRDUDE_ISP_OPTS" variable nil (("-P") ("$(ISP_PORT)") ("$(ISP_PROG)")) nil nil nil [8550 8596]) ("all" function nil (("$(OBJDIR)") ("$(TARGET_HEX)")) nil nil nil [8706 8739]) ("$(OBJDIR)" function nil (nil) nil nil nil [8739 8771]) ("$(TARGET_ELF)" function nil (("$(OBJS)")) nil nil nil [8771 8843]) ("$(DEP_FILE)" function nil (("$(OBJDIR)") ("$(DEPS)")) nil nil nil [8843 8906]) ("upload" function nil (("reset") ("raw_upload")) nil nil nil [8906 8934]) ("raw_upload" function nil (("$(TARGET_HEX)")) nil nil nil [8934 9051]) ("reset" function nil (nil) nil nil nil [9246 9481]) ("ispload" function nil (("$(TARGET_HEX)")) nil nil nil [9481 9907]) ("clean" function nil (nil) nil nil nil [9907 9968]) ("depends" function nil (("$(DEPS)")) nil nil nil [9968 10017]) (".PHONY" function nil (("all") ("clean") ("depends") ("upload") ("raw_upload") ("reset")) nil nil nil [10017 10068]) ("$(DEP_FILE)" include nil nil nil [10068 10088]))
11
+ )
12
+ )
13
+ )
@@ -0,0 +1,44 @@
1
+ module Subduino
2
+
3
+ class Serial
4
+ attr_reader :sp, :port, :bauds
5
+
6
+ def initialize(bauds = 57600)
7
+ @bauds = bauds
8
+ @port = find_port
9
+ @sp ||= SerialPort.new(@port, bauds) #, DATA_BITS, DATA_STOP, parity)
10
+ # @sp.read_timeout = 10
11
+ # @sp.write_timeout = 10
12
+ end
13
+
14
+ def find_port
15
+ prefix = RUBY_PLATFORM =~ /darwin/ ? ".usbmodem" : "USB"
16
+ port = Dir.glob("/dev/tty#{prefix}*").first
17
+ raise "Can't find serial port" unless port
18
+ port
19
+ end
20
+
21
+ def read
22
+ sp.getc
23
+ end
24
+
25
+ def write msg
26
+ # txt += "\n" unless txt =~ /^\\n/
27
+ txt = msg.gsub("\r|\n", "")
28
+ Log.debug "=> Sending #{txt.inspect}"
29
+ sp.puts txt
30
+ # msg.to_s.chomp.split("").each do |char|
31
+ # @sp.putc char
32
+ end
33
+
34
+ def up?
35
+ sp
36
+ end
37
+
38
+ def kill
39
+ sp.close
40
+ end
41
+
42
+ end
43
+
44
+ end
@@ -0,0 +1,4 @@
1
+ module Subduino
2
+ VERSION = '0.5.0'
3
+ end
4
+
@@ -0,0 +1,12 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe "Cubduino" do
4
+
5
+ it "should define module" do
6
+ Subduino.const_defined?("Cubduino").should be_true
7
+ end
8
+
9
+
10
+
11
+
12
+ end
@@ -3,8 +3,8 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
3
3
  describe ArdIO do
4
4
 
5
5
  it "should start serial port" do
6
- Arduino.stub!(:find_usb).and_return("/dev/ttyUSB0")
6
+ Serial.stub!(:find_usb).and_return("/dev/ttyUSB0")
7
7
  SerialPort.should_receive(:new).with("/dev/ttyUSB0", 115200)
8
- ArdIO.sp
8
+ ArdIO.serial
9
9
  end
10
10
  end
metadata CHANGED
@@ -1,151 +1,130 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: subduino
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 3
8
- - 1
9
- version: 0.3.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.0
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Marcos Piccinini
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2011-08-29 00:00:00 -03:00
18
- default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2012-01-17 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: redis
16
+ requirement: &11141820 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
22
23
  prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
+ version_requirements: *11141820
25
+ - !ruby/object:Gem::Dependency
26
+ name: serialport
27
+ requirement: &11141120 !ruby/object:Gem::Requirement
24
28
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- segments:
29
- - 0
30
- version: "0"
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
31
33
  type: :runtime
32
- version_requirements: *id001
33
- - !ruby/object:Gem::Dependency
34
- name: eventmachine
35
34
  prerelease: false
36
- requirement: &id002 !ruby/object:Gem::Requirement
35
+ version_requirements: *11141120
36
+ - !ruby/object:Gem::Dependency
37
+ name: eventmachine
38
+ requirement: &11140640 !ruby/object:Gem::Requirement
37
39
  none: false
38
- requirements:
39
- - - ">="
40
- - !ruby/object:Gem::Version
41
- segments:
42
- - 0
43
- version: "0"
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
44
  type: :runtime
45
- version_requirements: *id002
46
- - !ruby/object:Gem::Dependency
47
- name: rspec
48
45
  prerelease: false
49
- requirement: &id003 !ruby/object:Gem::Requirement
46
+ version_requirements: *11140640
47
+ - !ruby/object:Gem::Dependency
48
+ name: rspec
49
+ requirement: &11161880 !ruby/object:Gem::Requirement
50
50
  none: false
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- segments:
55
- - 1
56
- - 2
57
- - 9
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
58
54
  version: 1.2.9
59
55
  type: :development
60
- version_requirements: *id003
56
+ prerelease: false
57
+ version_requirements: *11161880
61
58
  description: Interface, compile, upload... Play with arduino on ruby!
62
59
  email: x@nofxx.com
63
- executables:
60
+ executables:
64
61
  - subduino
65
62
  - subduino-cli
66
- extensions:
63
+ extensions:
67
64
  - ext/subduino/extconf.rb
68
65
  extra_rdoc_files: []
69
-
70
- files:
71
- - .document
72
- - Rakefile
73
- - Readme.textile
74
- - VERSION
75
- - bin/subduino
76
- - bin/subduino-cli
77
- - duino/.gitignore
78
- - duino/Makefile
79
- - duino/duino.pde
80
- - duino/duino.rb
81
- - duino/methods.pde
82
- - examples/duin
83
- - ext/subduino/Makefile
84
- - ext/subduino/cubduino.c
85
- - ext/subduino/cubduino.h
86
- - ext/subduino/cubduino.o
87
- - ext/subduino/cubduino.so
88
- - ext/subduino/extconf.rb
66
+ files:
89
67
  - lib/subduino.rb
90
- - lib/subduino/ard_io.rb
91
- - lib/subduino/ard_ps.rb
92
- - lib/subduino/arduino.rb
93
- - lib/subduino/os.rb
94
- - lib/subduino/parse.rb
68
+ - lib/subduino/parse/temp.rb
95
69
  - lib/subduino/parse/bool.rb
70
+ - lib/subduino/parse/pressure.rb
96
71
  - lib/subduino/parse/energy.rb
97
72
  - lib/subduino/parse/flow.rb
98
73
  - lib/subduino/parse/lux.rb
99
74
  - lib/subduino/parse/presence.rb
100
- - lib/subduino/parse/pressure.rb
101
- - lib/subduino/parse/temp.rb
102
- - lib/subduino/scaffold/Makefile
75
+ - lib/subduino/parse.rb
76
+ - lib/subduino/os.rb
77
+ - lib/subduino/ard_ps.rb
78
+ - lib/subduino/ard_io.rb
79
+ - lib/subduino/version.rb
80
+ - lib/subduino/scaffold/scaffold.pde
81
+ - lib/subduino/scaffold/semantic.cache
103
82
  - lib/subduino/scaffold/Makefile2
83
+ - lib/subduino/scaffold/Makefile
104
84
  - lib/subduino/scaffold/generator.rb
105
- - lib/subduino/scaffold/scaffold.pde
106
85
  - lib/subduino/scaffold/scaffold.rb
86
+ - lib/subduino/serial.rb
107
87
  - lib/subduino/store.rb
108
- - node/arduinode.js
109
- - node/server.js
110
- - node/vendor/faye.js
88
+ - spec/subduino_spec.rb
111
89
  - spec/spec_helper.rb
112
- - spec/subduino/ard_io_spec.rb
113
90
  - spec/subduino/cubduino_spec.rb
114
- - spec/subduino/parse_spec.rb
115
91
  - spec/subduino/store_spec.rb
116
- - spec/subduino_spec.rb
117
- - subduino.gemspec
118
- has_rdoc: true
92
+ - spec/subduino/ard_io_spec.rb
93
+ - spec/subduino/#cubduino_spec.rb#
94
+ - spec/subduino/parse_spec.rb
95
+ - README.md
96
+ - Rakefile
97
+ - bin/subduino
98
+ - bin/subduino-cli
99
+ - ext/subduino/extconf.rb
119
100
  homepage: http://github.com/nofxx/subduino
120
101
  licenses: []
121
-
122
102
  post_install_message:
123
103
  rdoc_options: []
124
-
125
- require_paths:
104
+ require_paths:
126
105
  - lib
127
- required_ruby_version: !ruby/object:Gem::Requirement
106
+ required_ruby_version: !ruby/object:Gem::Requirement
128
107
  none: false
129
- requirements:
130
- - - ">="
131
- - !ruby/object:Gem::Version
132
- segments:
108
+ requirements:
109
+ - - ! '>='
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ segments:
133
113
  - 0
134
- version: "0"
135
- required_rubygems_version: !ruby/object:Gem::Requirement
114
+ hash: 330229238283923974
115
+ required_rubygems_version: !ruby/object:Gem::Requirement
136
116
  none: false
137
- requirements:
138
- - - ">="
139
- - !ruby/object:Gem::Version
140
- segments:
117
+ requirements:
118
+ - - ! '>='
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
121
+ segments:
141
122
  - 0
142
- version: "0"
123
+ hash: 330229238283923974
143
124
  requirements: []
144
-
145
125
  rubyforge_project:
146
- rubygems_version: 1.3.7
126
+ rubygems_version: 1.8.11
147
127
  signing_key:
148
128
  specification_version: 3
149
129
  summary: Arduino Ruby Helpers
150
130
  test_files: []
151
-