apiotics 0.1.34 → 0.1.35

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: 57c12ea39df17830d8e202d049d599428ed07551
4
- data.tar.gz: fca5e4b1c862f37216f2d426a538b0b89c8eb9dd
3
+ metadata.gz: e1fbc55f9161178762ea1d70b7c32bab58b91e84
4
+ data.tar.gz: 84566e3f791346e875b10f236a75fcb7cfc775c4
5
5
  SHA512:
6
- metadata.gz: 2e5f0bc59b379d9cde13482d6891dd0fc1fef303f1b08663bb98b48daca90c9b086db6cf5da301e755e1e2daa49960ece846e8c926298595f2603afcf5e44240
7
- data.tar.gz: 6a26e2b6353f504d5bafe411dd7e3ca27fd0c8c337ef3d8548f374a3aa7cec2ed7754faccab3670f1cc5e2bbf9b219b1c1e180e97eca288c96bf170d3dcc5c62
6
+ metadata.gz: acf51c3ba54c7b8722ff5e33c925a5103712a6cde89f4879904f1b3d7c5dcff9edbcc7b59ef5a949ce8014935368f4ac3ef467d55b8956ab3e8641733f248b59
7
+ data.tar.gz: ccf16f11471035157f5ebc652aee454a58c4a81e09ea0e0a6ad4dc9549395c010eba5903d2ddedef104336cdfb3b3d642f5579970b08e8dd6eaf16fef9df116c
data/lib/apiotics.rb CHANGED
@@ -6,6 +6,7 @@ require 'apiotics/parse'
6
6
  require 'apiotics/insert'
7
7
  require 'apiotics/extract'
8
8
  require 'apiotics/portal'
9
+ require 'apiotics/hardware'
9
10
  require 'daemons'
10
11
 
11
12
  module Apiotics
@@ -0,0 +1,85 @@
1
+ require 'os'
2
+
3
+ module Apiotics
4
+ class Hardware
5
+ def self.bits
6
+ OS.bits
7
+ end
8
+
9
+ def self.linux
10
+ OS.linux?
11
+ end
12
+
13
+ def self.mac
14
+ OS.mac?
15
+ end
16
+
17
+ def self.save_openocd
18
+ os = nil
19
+ if self.linux == true
20
+ if self.bits == 64
21
+ os = "debian64"
22
+ elsif self.bits == 32
23
+ os = "debian32"
24
+ end
25
+ elsif self.mac == true
26
+ os = "mac"
27
+ end
28
+ unless os == nil
29
+ data = Apiotics::Portal.openocd(os)
30
+ directory = Rails.root.join('lib', 'openocd')
31
+ Dir.mkdir directory unless Dir.exist?(directory)
32
+ path = Rails.root.join('lib', 'openocd', 'openocd.tgz')
33
+ file = File.new(path, 'w')
34
+ file.write data.force_encoding(Encoding::UTF_8)
35
+ file.close
36
+ end
37
+ end
38
+
39
+ def self.unpack_openocd
40
+ directory = Rails.root.join('lib', 'openocd')
41
+ Dir.chdir directory
42
+ path = Rails.root.join('lib', 'openocd', 'openocd.tgz')
43
+ msg = system("tar -xvzf #{path}")
44
+ if msg == true
45
+ #File.delete(path) if File.exist?(path)
46
+ end
47
+ end
48
+
49
+ def self.install_firmware(config_script, firmware_path, starting_address)
50
+ directory = Rails.root.join('lib', 'openocd', 'gnuarmeclipse', 'openocd')
51
+ Dir.chdir directory
52
+ version_folder = Dir['*/'].first[0..-2]
53
+ directory = Rails.root.join('lib', 'openocd', 'gnuarmeclipse', 'openocd', version_folder)
54
+ Dir.chdir directory
55
+ string = "bin/openocd -f \"scripts/board/" + config_script + "\"" + " -c \"program " + firmware_path.to_s + " exit " + starting_address.to_s + "\""
56
+ msg = system(string)
57
+ end
58
+
59
+ def self.openocd(worker_name)
60
+ download_directory = Rails.root.join('lib', 'openocd')
61
+ Dir.mkdir download_directory unless Dir.exist?(download_directory)
62
+ download_directory = Rails.root.join('lib', 'openocd', 'downloads')
63
+ Dir.mkdir download_directory unless Dir.exist?(download_directory)
64
+ Dir.chdir download_directory
65
+ config = Apiotics::Portal.openocd_worker_config(worker_name)
66
+ config = JSON.parse(config)
67
+ unless config["openocd_config_file_name"] == nil || config["openocd_config_file_name"] == ""
68
+ path = Rails.root.join('lib', 'openocd', 'downloads', config["openocd_config_file_name"])
69
+ if File.exist?(path)
70
+ file = File.open(path)
71
+ firmware_data = file.read
72
+ file.close
73
+ else
74
+ firmware_data = Apiotics::Portal.download_firmware(worker_name)
75
+ file = File.new(path, 'w')
76
+ file.write firmware_data.force_encoding(Encoding::UTF_8)
77
+ file.close
78
+ end
79
+ msg = self.install_firmware(config["openocd_config_file_name"], path, config["openocd_start_address"])
80
+ end
81
+ return msg
82
+ end
83
+
84
+ end
85
+ end
@@ -155,5 +155,17 @@ module Apiotics
155
155
  return hash["ca_certificate"]
156
156
  end
157
157
 
158
+ def self.openocd(system)
159
+ response = HTTParty.post("#{Apiotics.configuration.portal}api/openocd", :query => {:public_key => Apiotics.configuration.public_key, :private_key => Apiotics.configuration.private_key, :system => system}).body
160
+ end
161
+
162
+ def self.openocd_worker_config(worker_name)
163
+ response = HTTParty.post("#{Apiotics.configuration.portal}api/openocd_details", :query => {:public_key => Apiotics.configuration.public_key, :private_key => Apiotics.configuration.private_key, :worker => worker_name}).body
164
+ end
165
+
166
+ def self.download_firmware(worker_name)
167
+ response = HTTParty.post("#{Apiotics.configuration.portal}api/download", :query => {:public_key => Apiotics.configuration.public_key, :private_key => Apiotics.configuration.private_key, :worker => worker_name}).body
168
+ end
169
+
158
170
  end
159
171
  end
@@ -1,3 +1,3 @@
1
1
  module Apiotics
2
- VERSION = '0.1.34'
2
+ VERSION = '0.1.35'
3
3
  end
@@ -19,6 +19,7 @@ module Apiotics
19
19
  copy_file "test_comm_server.rake", "lib/tasks/test_comm_server.rake"
20
20
  copy_file "dev_comm_server.rake", "lib/tasks/dev_comm_server.rake"
21
21
  copy_file "publish_script.rake", "lib/tasks/publish_script.rake"
22
+ copy_file "install_firmware.rake", "lib/tasks/install_firmware.rake"
22
23
  FileUtils.chmod 0775, "lib/scripts/server_control.rb"
23
24
  end
24
25
 
@@ -0,0 +1,6 @@
1
+ namespace :firmware do
2
+ desc "Install firmware on devices"
3
+ task :install, [:worker] => [:environment] do |task, args|
4
+ Apiotics::Hardware.openocd(args[:worker])
5
+ end
6
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: apiotics
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.34
4
+ version: 0.1.35
5
5
  platform: ruby
6
6
  authors:
7
7
  - MicroArx Corporation
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-04 00:00:00.000000000 Z
11
+ date: 2017-08-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: os
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: pg
99
113
  requirement: !ruby/object:Gem::Requirement
@@ -149,6 +163,7 @@ files:
149
163
  - lib/apiotics/client.rb
150
164
  - lib/apiotics/configuration.rb
151
165
  - lib/apiotics/extract.rb
166
+ - lib/apiotics/hardware.rb
152
167
  - lib/apiotics/insert.rb
153
168
  - lib/apiotics/parse.rb
154
169
  - lib/apiotics/portal.rb
@@ -197,6 +212,7 @@ files:
197
212
  - lib/generators/apiotics/script/templates/dev_comm_server.rake
198
213
  - lib/generators/apiotics/script/templates/dev_server.rb
199
214
  - lib/generators/apiotics/script/templates/dev_server_control.rb
215
+ - lib/generators/apiotics/script/templates/install_firmware.rake
200
216
  - lib/generators/apiotics/script/templates/publish_script.rake
201
217
  - lib/generators/apiotics/script/templates/script.rb.erb
202
218
  - lib/generators/apiotics/script/templates/server.rb
@@ -232,7 +248,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
232
248
  version: '0'
233
249
  requirements: []
234
250
  rubyforge_project:
235
- rubygems_version: 2.2.2
251
+ rubygems_version: 2.6.10
236
252
  signing_key:
237
253
  specification_version: 4
238
254
  summary: IoT For Everybody.