mkduino 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: de0f4ee565df942d0e8e9f2dccd172fdf20b3641
4
- data.tar.gz: 2cc271faf1f3776cbcb7efab8667f68cbe39190f
3
+ metadata.gz: c5b152daf399b2dd6353a039f14877097a22e6dd
4
+ data.tar.gz: c21b7d3d1a43177e7b9e8caaa9f69418183e262c
5
5
  SHA512:
6
- metadata.gz: 38d1996ef00ea152d12c75eba66caa81c1424776f86b24b1732f005bfd01a9788eff1ff2fdca114d45fe3d9c9694f376788ece36c60069c232192ea82f8a3363
7
- data.tar.gz: 7aad23e98edaf57cee23f1c0c585dbe2f53d9dfdad09dca114bc04c4eb8d0faa69d202e0e6a558b97e3bab1b9cf53c9280aa614b3c4b1a23440a5152a19cce78
6
+ metadata.gz: 4deedcc41a23c012c4310c38ee55b1589dc130ea9aa24fa2e815dc1b865ceaab4647d7b1ebcc5376e20c3ec4de3e8390687a89bfa641b626af076ac220be5e2e
7
+ data.tar.gz: 12ab946a5607b571214ce95f0b4f4e9350a9d709559bddbeee31f023c99191c71c7170972bd0aaa827fe6d2c10561f9ae0885914682acf64a1daa98015415406
data/bin/mkduino CHANGED
@@ -34,15 +34,29 @@ require "mkduino"
34
34
  require 'optparse'
35
35
 
36
36
  options = {}
37
+ default_options = {}
38
+ probed_options = {}
39
+ probe = Mkduino::Probe.new
40
+
37
41
  OptionParser.new do |opts|
38
- options[:verbose] = false
39
- options[:git] = false
40
- options[:update] = false
41
- options[:overwrite] = false
42
- options[:num_args] = ARGV.length
43
- options[:autoconfigure] = false
44
- options[:device] = "standard"
42
+ default_options[:verbose] = false
43
+ default_options[:git] = false
44
+ default_options[:update] = false
45
+ default_options[:overwrite] = false
46
+ default_options[:mcu] = "atmega328p"
47
+ default_options[:num_args] = ARGV.length
48
+ default_options[:autoconfigure] = false
49
+ default_options[:device] = "/dev/ttyUSB0"
50
+ default_options[:variant] = "standard"
51
+ default_options[:clock_speed] = "16000000"
52
+ default_options[:baud_rate] = "57600"
53
+ default_options[:programmer] = "arduino"
45
54
  opts.banner = "Usage: #{opts.program_name} [options]"
55
+ opts.on("-p","--[no-]probe","Probe for stuff") do |v|
56
+ probe.probe
57
+ probed_options.merge! probe.options
58
+ end
59
+
46
60
  opts.on("-v", "--[no-]verbose", "Run verbosely") do |v|
47
61
  options[:verbose] = v
48
62
  end
@@ -55,21 +69,47 @@ OptionParser.new do |opts|
55
69
  opts.on('-a',"--[no-]autoconfigure","automatically run autogen.sh and configure") do |v|
56
70
  options[:autoconfigure] = v
57
71
  end
72
+
73
+ opts.on("-b","--board BOARD",Mkduino::Probe::BOARDS.keys,"Arduino Board Type", "#{Mkduino::Probe::BOARDS.keys.join(',')}") do |v|
74
+ options.merge! Mkduino::Probe::BOARDS[v]
75
+ end
76
+
77
+ opts.on("--programmer PROGRAMMER",["arduino","stk500"],"AVRDUDE Programmer type", "arduino, stk500") do |v|
78
+ options[:programmer] = v
79
+ end
80
+
81
+
58
82
  opts.on("-o","--[no-]overwrite","Overwrite current project files") do |v|
59
83
  options[:overwrite] = v
60
84
  end
85
+
86
+ opts.on("-c","--clock SPEED",Integer,"Clock speed") do |v|
87
+ options[:clock_speed] = v
88
+ end
89
+
90
+ opts.on("-t","--type TYPE",["mega","standard"],"Arduino library type (aka variant)") do |v|
91
+ options[:variant] = v
92
+ end
93
+
94
+ opts.on("-d","--device DEVICE","Arduino programming device.","Example: /dev/ttyUSB0.") do |v|
95
+ options[:device] = v
96
+ end
97
+
61
98
  opts.on_tail("-h", "--help", "Show this message") do
62
99
  puts opts
63
100
  exit
64
101
  end
65
102
 
66
- if options[:num_args] < 1
103
+ if( default_options[:num_args] < 1)
67
104
  puts opts
68
105
  exit
69
106
  end
70
-
71
107
  end.parse!
72
108
 
109
+
110
+ default_options.merge!( probed_options.merge!( options ) )
111
+
112
+
73
113
  if !options[:overwrite] && Mkduino::GENERATED_FILES.collect do |gf|
74
114
  Pathname.new("Makefile.am").exist? ? true : nil
75
115
  end.compact.any?
@@ -79,7 +119,7 @@ end
79
119
 
80
120
 
81
121
 
82
- ma = Mkduino::MakefileAm.new
122
+ ma = Mkduino::MakefileAm.new "Makefile.am", options
83
123
  ma.find_arduino_libraries '/usr/share/arduino/libraries'
84
124
  ma.find_arduino_libraries '/usr/share/arduino/hardware/arduino/cores'
85
125
  ma.find_source_files
data/lib/makefile_am.rb CHANGED
@@ -24,15 +24,19 @@
24
24
  #
25
25
 
26
26
  module Mkduino
27
- class MakefileAm
27
+ class MakefileAm < Mkduino::GeneratedFile
28
28
  attr_accessor :source_files, :header_files, :arduino_sources
29
29
  attr_accessor :project_name, :project_author, :project_dir
30
30
  attr_accessor :project_includes
31
+
32
+ attr_accessor :mcu, :clock_speed, :variant, :device, :baud_rate, :programmer
33
+
31
34
  # future stuff
32
35
  attr_accessor :git_project
33
- attr_accessor :board, :common_includes
36
+ attr_accessor :common_includes
34
37
 
35
- def initialize
38
+ def initialize output_filename, options
39
+ super output_filename, options
36
40
  @project_dir = Dir.pwd
37
41
  @project_name = File.basename @project_dir
38
42
  @project_name.tr!('.-','__')
@@ -44,11 +48,20 @@ module Mkduino
44
48
  @arduino_libraries = []
45
49
  @project_author = {}
46
50
  @git_project = nil
51
+
52
+ @options = options
53
+ @mcu = @options[:mcu] || "atmega328p"
54
+ @clock_speed = @options[:clock_speed] || "16000000"
55
+ @variant = @options[:variant] || "standard"
56
+ @device = @options[:device] || "/dev/USB0"
57
+ @baud_rate = @options[:baud_rate] || "57600"
58
+ @programmer = @options[:programmer] || "arduino"
59
+
47
60
  @common_libraries = ['arduino', 'spi','wire']
48
61
  @libraries_to_skip = {
49
- 'standard' => ['Esplora','GSM','Robot_Control','Robot_Motor','TFT','robot']
62
+ 'standard' => ['Esplora','GSM','Robot_Control','Robot_Motor','TFT','robot'],
63
+ 'mega' => ['Esplora','GSM','Robot_Control','Robot_Motor','TFT','robot']
50
64
  }
51
- @board='standard'
52
65
  @project_author[:username] = ENV['USERNAME']
53
66
  git_exists = `which git`.chomp
54
67
  if git_exists && git_exists.length > 0
@@ -163,7 +176,7 @@ module Mkduino
163
176
  Find.find(libraries_dir) do |path|
164
177
  if FileTest.directory?(path)
165
178
  if File.basename(path)[0] == ?. || File.basename(path) == 'examples' ||
166
- (@libraries_to_skip[@board] && @libraries_to_skip[@board].include?(File.basename(path)) )
179
+ (@libraries_to_skip[@variant] && @libraries_to_skip[@variant].include?(File.basename(path)) )
167
180
  Find.prune # Don't look any further into this directory.
168
181
  else
169
182
  if File.dirname(path) == libraries_dir
@@ -246,18 +259,18 @@ MAIN_CPP
246
259
 
247
260
 
248
261
  def write_makefile_am
249
- puts "Writing Makefile.am"
250
- File.open('Makefile.am',"w") do |f|
262
+ puts "Writing #{@output_file}"
263
+ write_file do |f|
251
264
  f.puts <<-MAKEFILE_AM
252
265
  ## Process this file with automake to produce Makefile.in
253
266
  bin_PROGRAMS=#{self.project_name}
254
- # MCU=atmega1280
255
- MCU=atmega328p
256
- F_CPU=-DF_CPU=16000000
267
+
268
+ MCU=#{self.mcu}
269
+ F_CPU=-DF_CPU=#{self.clock_speed}
257
270
  ARDUINO_VERSION=-DARDUINO=105
258
271
  ARDUINO_INSTALL=/usr/share/arduino/hardware/arduino
259
272
  ARDUINO_CORES=$(ARDUINO_INSTALL)/cores/arduino
260
- ARDUINO_VARIANTS=$(ARDUINO_INSTALL)/variants/#{self.board}
273
+ ARDUINO_VARIANTS=$(ARDUINO_INSTALL)/variants/#{self.variant}
261
274
  ARDUINO_COMMON_INCLUDES=#{self.common_includes}
262
275
  ARDUINO_INCLUDE_PATH=-I$(ARDUINO_VARIANTS) $(LIBRARY_INCLUDES)
263
276
  nodist_#{self.project_name}_SOURCES=#{self.source_files.join(' ')}
@@ -277,11 +290,9 @@ AM_CXXFLAGS=-g0 -Os
277
290
  AM_CFLAGS=-g0 -Os
278
291
  VPATH=/usr/share/arduino/hardware/arduino/cores/arduino
279
292
 
280
- # AVRDUDE_PORT=/dev/ttyACM0
281
- AVRDUDE_PORT=/dev/ttyUSB0
282
- AVRDUDE_PROGRAMMER = arduino
283
- # UPLOAD_RATE = 115200
284
- UPLOAD_RATE = 57600
293
+ AVRDUDE_PORT = #{self.device}
294
+ AVRDUDE_PROGRAMMER = #{self.programmer}
295
+ UPLOAD_RATE = #{self.baud_rate}
285
296
  FORMAT=ihex
286
297
 
287
298
  AVRDUDE_WRITE_FLASH = -U flash:w:$(bin_PROGRAMS).hex
@@ -1,3 +1,3 @@
1
1
  module Mkduino
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
data/lib/mkduino.rb CHANGED
@@ -32,7 +32,7 @@ require_relative "file_generator"
32
32
  require_relative "makefile_am"
33
33
  require_relative "configure_ac"
34
34
  require_relative "autogen_sh"
35
-
35
+ require_relative "probe"
36
36
  module Mkduino
37
37
  GENERATED_FILES = ["Makefile.am",
38
38
  "configure.ac",
data/lib/probe.rb ADDED
@@ -0,0 +1,90 @@
1
+ module Mkduino
2
+ class Probe
3
+ attr_accessor :options
4
+ attr_accessor :probe_options
5
+
6
+ DEVICES = ["/dev/ttyUSB0",
7
+ "/dev/ttyUSB1",
8
+ "/dev/ttyUSB2",
9
+ "/dev/ttyACM0",
10
+ "/dev/ttyACM1",
11
+ "/dev/ttyACM2",
12
+ "/dev/rfcomm0",
13
+ "/dev/rfcomm1",
14
+ "/dev/rfcomm2"]
15
+
16
+ BOARDS = {
17
+ "mega" => {
18
+ variant: "mega",
19
+ clock_speed: 16000000,
20
+ device: "/dev/ACM0",
21
+ baud_rate: "115200",
22
+ programmer: "stk500",
23
+ mcu: "atmega2560"
24
+ },
25
+ "mega1280" => {
26
+ variant: "mega",
27
+ clock_speed: 16000000,
28
+ device: "/dev/ACM0",
29
+ baud_rate: "115200",
30
+ programmer: "stk500",
31
+ mcu: "atmega1280"
32
+ },
33
+
34
+ "uno" => {
35
+ variant: "standard",
36
+ clock_speed: 16000000,
37
+ device: "/dev/USB0",
38
+ baud_rate: "57600",
39
+ programmer: "arduino",
40
+ mcu: "atmega328p"
41
+
42
+ },
43
+ "mini" => {
44
+ variant: "standard",
45
+ clock_speed: 16000000,
46
+ device: "/dev/USB0",
47
+ baud_rate: "57600",
48
+ programmer: "arduino",
49
+ mcu: "atmega328p"
50
+ },
51
+ "mini3v" => {
52
+ variant: "standard",
53
+ clock_speed: 8000000,
54
+ device: "/dev/USB0",
55
+ baud_rate: "57600",
56
+ programmer: "arduino",
57
+ mcu: "atmega328p"
58
+ }
59
+ }
60
+
61
+
62
+ def initialize probe_options = {}
63
+ @probe_options = probe_options
64
+ @options = {}
65
+ end
66
+
67
+ def probe
68
+ probe_device
69
+ probe_variant
70
+ end
71
+
72
+ def probe_variant
73
+ if @options[:device] && @options[:device] =~ /ACM[0-9]/
74
+ @options[:variant] = "mega"
75
+ else
76
+ @options[:variant] = "standard"
77
+ end
78
+ end
79
+
80
+ def probe_device
81
+ @options[:device] = DEVICES[0]
82
+ DEVICES.each do |d|
83
+ if File.exist?(d)
84
+ @options[:device] = d
85
+ break
86
+ end
87
+ end
88
+ end
89
+ end
90
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mkduino
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - David H. Wilkins
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-18 00:00:00.000000000 Z
11
+ date: 2014-01-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -58,6 +58,7 @@ files:
58
58
  - lib/makefile_am.rb
59
59
  - lib/mkduino.rb
60
60
  - lib/mkduino/version.rb
61
+ - lib/probe.rb
61
62
  - mkduino.gemspec
62
63
  homepage: https://rubygems.org/gems/mkduino
63
64
  licenses: