Class: Oschii::Device
Instance Attribute Summary collapse
Instance Method Summary
collapse
#prompt
Methods included from Logging
#logger, #tail
Methods included from ConfigFile
#save_config, #upload_config
Constructor Details
#initialize ⇒ Device
Returns a new instance of Device.
27
28
29
30
|
# File 'lib/oschii/device.rb', line 27
def initialize
@log_lines = []
refresh
end
|
Instance Attribute Details
#log_lines ⇒ Object
Returns the value of attribute log_lines.
32
33
34
|
# File 'lib/oschii/device.rb', line 32
def log_lines
@log_lines
end
|
Instance Method Details
#clear! ⇒ Object
139
140
141
|
# File 'lib/oschii/device.rb', line 139
def clear!
self.config = {}
end
|
#clear_log ⇒ Object
215
216
217
|
# File 'lib/oschii/device.rb', line 215
def clear_log
raise NoConnection
end
|
#config ⇒ Object
127
128
129
|
# File 'lib/oschii/device.rb', line 127
def config
@config ||= Oschii::Config.new(raw_config)
end
|
#config=(hash) ⇒ Object
131
132
133
|
# File 'lib/oschii/device.rb', line 131
def config=(hash)
self.raw_config = hash.to_json
end
|
#config_description ⇒ Object
115
116
117
|
# File 'lib/oschii/device.rb', line 115
def config_description
device_details['configDescription']
end
|
#config_name ⇒ Object
111
112
113
|
# File 'lib/oschii/device.rb', line 111
def config_name
device_details['configName']
end
|
#config_valid? ⇒ Boolean
119
120
121
|
# File 'lib/oschii/device.rb', line 119
def config_valid?
device_details['configValid']
end
|
#cycle_time_micros ⇒ Object
99
100
101
|
# File 'lib/oschii/device.rb', line 99
def cycle_time_micros
status['cycleTime']
end
|
#description ⇒ Object
61
62
63
|
# File 'lib/oschii/device.rb', line 61
def description
device_details['description']
end
|
#device_details ⇒ Object
44
45
46
|
# File 'lib/oschii/device.rb', line 44
def device_details
@device_details ||= JSON.parse(raw_device_details)
end
|
#failsafe_mode? ⇒ Boolean
123
124
125
|
# File 'lib/oschii/device.rb', line 123
def failsafe_mode?
device_details['failsafeMode']
end
|
#files_used ⇒ Object
91
92
93
|
# File 'lib/oschii/device.rb', line 91
def files_used
total_files - status['freeSPIFFS']
end
|
#files_used_percent ⇒ Object
95
96
97
|
# File 'lib/oschii/device.rb', line 95
def files_used_percent
((files_used.to_f / total_files.to_f) * 100.0).to_i
end
|
#inspect ⇒ Object
34
35
36
|
# File 'lib/oschii/device.rb', line 34
def inspect
"<#{self.class.name}[#{name}] (v#{version})>"
end
|
#ip ⇒ Object
183
184
185
|
# File 'lib/oschii/device.rb', line 183
def ip
raise NoConnection
end
|
#log ⇒ Object
211
212
213
|
# File 'lib/oschii/device.rb', line 211
def log
raise NoConnection
end
|
#mem_used ⇒ Object
79
80
81
|
# File 'lib/oschii/device.rb', line 79
def mem_used
total_mem - status['freeHeap']
end
|
#mem_used_percent ⇒ Object
83
84
85
|
# File 'lib/oschii/device.rb', line 83
def mem_used_percent
((mem_used.to_f / total_mem.to_f) * 100.0).to_i
end
|
#monitor ⇒ Object
38
39
40
|
# File 'lib/oschii/device.rb', line 38
def monitor
DeviceMonitor.new(self).start
end
|
#name ⇒ Object
52
53
54
|
# File 'lib/oschii/device.rb', line 52
def name
device_details['name']
end
|
#name=(new_name) ⇒ Object
56
57
58
59
|
# File 'lib/oschii/device.rb', line 56
def name=(new_name)
self.settings = ({ name: new_name })
refresh
end
|
#poke ⇒ Object
— Connection-specific commands —
175
176
177
|
# File 'lib/oschii/device.rb', line 175
def poke
raise NoConnection
end
|
#poke! ⇒ Object
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
|
# File 'lib/oschii/device.rb', line 153
def poke!
remaining_attempts = 3
while remaining_attempts > 0
begin
if poke
return true
end
return false
rescue RubySerial::Error, RestClient::Exception => e
raise DeviceUnavailable, e.message
end
remaining_attempts -= 1
end
raise DeviceUnavailable, '(no response)'
end
|
#raw_config ⇒ Object
203
204
205
|
# File 'lib/oschii/device.rb', line 203
def raw_config
raise NoConnection
end
|
#raw_config=(json) ⇒ Object
207
208
209
|
# File 'lib/oschii/device.rb', line 207
def raw_config=(json)
raise NoConnection
end
|
#raw_device_details ⇒ Object
187
188
189
|
# File 'lib/oschii/device.rb', line 187
def raw_device_details
raise NoConnection
end
|
#raw_settings ⇒ Object
195
196
197
|
# File 'lib/oschii/device.rb', line 195
def raw_settings
raise NoConnection
end
|
#raw_status ⇒ Object
191
192
193
|
# File 'lib/oschii/device.rb', line 191
def raw_status
raise NoConnection
end
|
#refresh ⇒ Object
145
146
147
148
149
150
151
|
# File 'lib/oschii/device.rb', line 145
def refresh
@device_details = nil
@status = nil
@settings = nil
@config = nil
poke!
end
|
#restart ⇒ Object
179
180
181
|
# File 'lib/oschii/device.rb', line 179
def restart
raise NoConnection
end
|
#settings ⇒ Object
105
106
107
|
# File 'lib/oschii/device.rb', line 105
def settings
@settings ||= JSON.parse(raw_settings)
end
|
#settings=(new_settings) ⇒ Object
199
200
201
|
# File 'lib/oschii/device.rb', line 199
def settings=(new_settings)
raise NoConnection
end
|
#status ⇒ Object
67
68
69
|
# File 'lib/oschii/device.rb', line 67
def status
@status ||= JSON.parse(raw_status)
end
|
#total_files ⇒ Object
87
88
89
|
# File 'lib/oschii/device.rb', line 87
def total_files
status['totalSPIFFS']
end
|
#total_mem ⇒ Object
75
76
77
|
# File 'lib/oschii/device.rb', line 75
def total_mem
status['totalHeap']
end
|
#update! ⇒ Object
135
136
137
|
# File 'lib/oschii/device.rb', line 135
def update!
self.config = config.compacted
end
|
#uptime ⇒ Object
71
72
73
|
# File 'lib/oschii/device.rb', line 71
def uptime
status['uptime']
end
|
#version ⇒ Object
48
49
50
|
# File 'lib/oschii/device.rb', line 48
def version
device_details['version']
end
|