summaryrefslogtreecommitdiffstats
path: root/firmware/upload.rb
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/upload.rb')
-rw-r--r--firmware/upload.rb26
1 files changed, 15 insertions, 11 deletions
diff --git a/firmware/upload.rb b/firmware/upload.rb
index 3da7dad..8561867 100644
--- a/firmware/upload.rb
+++ b/firmware/upload.rb
@@ -24,7 +24,7 @@ class MicroBoot
end
def info
- unless defined? @info
+ unless @info
result = control_transfer(function: :get_info, dataIn: 4)
flash_length, page_size, write_sleep = result.unpack('S>CC')
@@ -37,6 +37,7 @@ class MicroBoot
version_numeric: @device.bcdDevice
}
end
+
@info
end
@@ -69,6 +70,8 @@ class MicroBoot
end
def finished
+ info = self.info
+
puts "asking device to finish writing"
control_transfer(function: :run_program)
puts "waiting for device to finish"
@@ -81,6 +84,10 @@ class MicroBoot
@io.close
@io = nil
end
+
+ def inspect
+ "<MicroBoot #{info[:version]}: #{(info[:flash_length] / 1024.0).round(1)} kb programmable>"
+ end
protected
# raw opened device
@@ -171,18 +178,15 @@ else
raise "Pass intel hex or raw binary as argument to script"
end
-puts "Finding devices"
-thinklets = MicroBoot.all
-puts "Found #{thinklets.length} thinklet"
-exit unless thinklets.length > 0
-
-thinklet = thinklets.first
-
-puts "First thinklet: #{thinklet.info.inspect}"
+puts "Plug in programmable device now: (waiting)"
+sleep 0.5 while MicroBoot.all.length == 0
+thinklet = MicroBoot.all.first
+puts "Attached to device: #{thinklet.inspect}"
-puts "Attempting to write '#{test_data.inspect}' to first thinklet's program memory"
-puts "Bytes: #{test_data.bytes.to_a.inspect}"
+#puts "Attempting to write '#{test_data.inspect}' to first thinklet's program memory"
+#puts "Bytes: #{test_data.bytes.to_a.inspect}"
+puts "Attempting to write supplied program in to device's memory"
thinklet.program = test_data
puts "That seems to have gone well! Telling thinklet to run program..."