netlinx-workspace 0.3.0 → 1.0.0

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.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +206 -6
  3. data/bin/netlinx-workspace +27 -0
  4. data/doc/NetLinx.html +18 -7
  5. data/doc/NetLinx/Compile.html +15 -4
  6. data/doc/NetLinx/Compile/Extension.html +15 -4
  7. data/doc/NetLinx/Compile/Extension/APW.html +8 -8
  8. data/doc/NetLinx/Project.html +334 -90
  9. data/doc/NetLinx/Rake.html +128 -0
  10. data/doc/NetLinx/Rake/Workspace.html +128 -0
  11. data/doc/NetLinx/Rake/Workspace/CreateWorkspaceConfig.html +387 -0
  12. data/doc/NetLinx/Rake/Workspace/GenerateAPW.html +371 -0
  13. data/doc/NetLinx/System.html +1341 -217
  14. data/doc/NetLinx/SystemFile.html +454 -51
  15. data/doc/NetLinx/Workspace.html +434 -69
  16. data/doc/NetLinx/Workspace/YAML.html +398 -0
  17. data/doc/_index.html +66 -4
  18. data/doc/class_list.html +6 -2
  19. data/doc/file.README.html +218 -10
  20. data/doc/file.license.html +4 -4
  21. data/doc/file_list.html +5 -1
  22. data/doc/frames.html +1 -1
  23. data/doc/index.html +218 -10
  24. data/doc/js/full_list.js +4 -1
  25. data/doc/method_list.html +171 -23
  26. data/doc/top-level-namespace.html +3 -3
  27. data/lib/netlinx/compile/extension/apw.rb +3 -0
  28. data/lib/netlinx/rake/workspace.rb +14 -0
  29. data/lib/netlinx/rake/workspace/create_workspace_config.rb +49 -0
  30. data/lib/netlinx/rake/workspace/generate_apw.rb +41 -0
  31. data/lib/netlinx/workspace.rb +58 -14
  32. data/lib/netlinx/workspace/project.rb +107 -0
  33. data/lib/netlinx/workspace/system.rb +226 -0
  34. data/lib/netlinx/workspace/system_file.rb +98 -0
  35. data/lib/netlinx/workspace/yaml.rb +217 -0
  36. data/license.txt +1 -1
  37. metadata +53 -28
  38. data/lib/netlinx-workspace.rb +0 -1
  39. data/lib/netlinx/project.rb +0 -83
  40. data/lib/netlinx/system.rb +0 -122
  41. data/lib/netlinx/system_file.rb +0 -36
@@ -20,7 +20,11 @@
20
20
  </head>
21
21
  <body>
22
22
  <script type="text/javascript" charset="utf-8">
23
- if (window.top.frames.main) {
23
+ var hasFrames = false;
24
+ try {
25
+ hasFrames = window.top.frames.main ? true : false;
26
+ } catch (e) { }
27
+ if (hasFrames) {
24
28
  document.getElementById('base_target').target = 'main';
25
29
  document.body.className = 'frames';
26
30
  }
@@ -46,7 +50,7 @@
46
50
 
47
51
  <ul id="full_list" class="class">
48
52
  <li><span class='object_link'><a href="top-level-namespace.html" title="Top Level Namespace (root)">Top Level Namespace</a></span></li>
49
- <li><a class='toggle'></a> <span class='object_link'><a href="NetLinx.html" title="NetLinx (module)">NetLinx</a></span><small class='search_info'>Top Level Namespace</small></li><ul><li><a class='toggle'></a> <span class='object_link'><a href="NetLinx/Compile.html" title="NetLinx::Compile (module)">Compile</a></span><small class='search_info'>NetLinx</small></li><ul><li><a class='toggle'></a> <span class='object_link'><a href="NetLinx/Compile/Extension.html" title="NetLinx::Compile::Extension (module)">Extension</a></span><small class='search_info'>NetLinx::Compile</small></li><ul><li><span class='object_link'><a href="NetLinx/Compile/Extension/APW.html" title="NetLinx::Compile::Extension::APW (class)">APW</a></span> &lt; Object<small class='search_info'>NetLinx::Compile::Extension</small></li></ul></ul><li><span class='object_link'><a href="NetLinx/Project.html" title="NetLinx::Project (class)">Project</a></span> &lt; Object<small class='search_info'>NetLinx</small></li><li><span class='object_link'><a href="NetLinx/System.html" title="NetLinx::System (class)">System</a></span> &lt; Object<small class='search_info'>NetLinx</small></li><li><span class='object_link'><a href="NetLinx/SystemFile.html" title="NetLinx::SystemFile (class)">SystemFile</a></span> &lt; Object<small class='search_info'>NetLinx</small></li><li><span class='object_link'><a href="NetLinx/Workspace.html" title="NetLinx::Workspace (class)">Workspace</a></span> &lt; Object<small class='search_info'>NetLinx</small></li></ul>
53
+ <li><a class='toggle'></a> <span class='object_link'><a href="NetLinx.html" title="NetLinx (module)">NetLinx</a></span><small class='search_info'>Top Level Namespace</small></li><ul><li><a class='toggle'></a> <span class='object_link'><a href="NetLinx/Compile.html" title="NetLinx::Compile (module)">Compile</a></span><small class='search_info'>NetLinx</small></li><ul><li><a class='toggle'></a> <span class='object_link'><a href="NetLinx/Compile/Extension.html" title="NetLinx::Compile::Extension (module)">Extension</a></span><small class='search_info'>NetLinx::Compile</small></li><ul><li><span class='object_link'><a href="NetLinx/Compile/Extension/APW.html" title="NetLinx::Compile::Extension::APW (class)">APW</a></span> &lt; Object<small class='search_info'>NetLinx::Compile::Extension</small></li></ul></ul><li><span class='object_link'><a href="NetLinx/Project.html" title="NetLinx::Project (class)">Project</a></span> &lt; Object<small class='search_info'>NetLinx</small></li><li><a class='toggle'></a> <span class='object_link'><a href="NetLinx/Rake.html" title="NetLinx::Rake (module)">Rake</a></span><small class='search_info'>NetLinx</small></li><ul><li><a class='toggle'></a> <span class='object_link'><a href="NetLinx/Rake/Workspace.html" title="NetLinx::Rake::Workspace (module)">Workspace</a></span><small class='search_info'>NetLinx::Rake</small></li><ul><li><span class='object_link'><a href="NetLinx/Rake/Workspace/CreateWorkspaceConfig.html" title="NetLinx::Rake::Workspace::CreateWorkspaceConfig (class)">CreateWorkspaceConfig</a></span> &lt; TaskLib<small class='search_info'>NetLinx::Rake::Workspace</small></li><li><span class='object_link'><a href="NetLinx/Rake/Workspace/GenerateAPW.html" title="NetLinx::Rake::Workspace::GenerateAPW (class)">GenerateAPW</a></span> &lt; TaskLib<small class='search_info'>NetLinx::Rake::Workspace</small></li></ul></ul><li><span class='object_link'><a href="NetLinx/System.html" title="NetLinx::System (class)">System</a></span> &lt; Object<small class='search_info'>NetLinx</small></li><li><span class='object_link'><a href="NetLinx/SystemFile.html" title="NetLinx::SystemFile (class)">SystemFile</a></span> &lt; Object<small class='search_info'>NetLinx</small></li><li><a class='toggle'></a> <span class='object_link'><a href="NetLinx/Workspace.html" title="NetLinx::Workspace (class)">Workspace</a></span> &lt; Object<small class='search_info'>NetLinx</small></li><ul><li><span class='object_link'><a href="NetLinx/Workspace/YAML.html" title="NetLinx::Workspace::YAML (class)">YAML</a></span> &lt; Object<small class='search_info'>NetLinx::Workspace</small></li></ul></ul>
50
54
 
51
55
  </ul>
52
56
  </div>
@@ -6,7 +6,7 @@
6
6
  <title>
7
7
  File: README
8
8
 
9
- &mdash; Documentation by YARD 0.8.7.4
9
+ &mdash; Documentation by YARD 0.8.7.6
10
10
 
11
11
  </title>
12
12
 
@@ -61,25 +61,233 @@
61
61
 
62
62
  <iframe id="search_frame"></iframe>
63
63
 
64
- <div id="content"><div id='filecontents'><h1>NetLinx Workspace</h1>
65
-
66
- <p>netlinx-workspace</p>
64
+ <div id="content"><div id='filecontents'>
65
+ <h1 id="label-netlinx-workspace">netlinx-workspace</h1>
67
66
 
68
67
  <p>A library for working with AMX NetLinx Studio workspaces in Ruby.</p>
69
68
 
70
- <p><a href="http://badge.fury.io/rb/netlinx-workspace"><img src="https://badge.fury.io/rb/netlinx-workspace.png" alt="Gem Version"></a></p>
69
+ <p><a href="http://badge.fury.io/rb/netlinx-workspace"><img
70
+ src="https://badge.fury.io/rb/netlinx-workspace.png"></a> <a
71
+ href="http://www.rubydoc.info/gems/netlinx-workspace"><img
72
+ src="https://img.shields.io/badge/docs-api-blue.svg"></a> <a
73
+ href="http://www.apache.org/licenses/LICENSE-2.0"><img
74
+ src="https://img.shields.io/badge/license-Apache%202.0-yellowgreen.svg"></a></p>
75
+
76
+ <p>This library provides a developer API for working with NetLinx Studio
77
+ workspaces in Ruby. It also adds compiler support to the <a
78
+ href="https://github.com/amclain/netlinx-compile">netlinx-compile</a> gem
79
+ for these workspaces.</p>
80
+
81
+ <p><strong>APW Target Version</strong></p>
82
+
83
+ <p>This library targets NetLinx .apw version <code>4.0</code> (created by
84
+ NetLinx Studio 4).</p>
85
+
86
+ <h2 id="label-Issues-2C+Bugs-2C+Feature+Requests">Issues, Bugs, Feature Requests</h2>
87
+
88
+ <p>Any bugs and feature requests should be reported on the GitHub issue
89
+ tracker:</p>
90
+
91
+ <p><a
92
+ href="https://github.com/amclain/netlinx-workspace/issues">github.com/amclain/netlinx-workspace/issues</a></p>
93
+
94
+ <p><strong>Pull requests are preferred via GitHub.</strong></p>
95
+
96
+ <p>Mercurial users can use <a href="http://hg-git.github.io/">Hg-Git</a> to
97
+ interact with GitHub repositories.</p>
98
+
99
+ <h2 id="label-Installation">Installation</h2>
100
+
101
+ <p>netlinx-workspace is available as a Ruby gem.</p>
102
+ <ol><li>
103
+ <p>Install <a href="https://www.ruby-lang.org">Ruby</a> 2.0.0 or higher.</p>
104
+ <ul><li>
105
+ <p>Windows: Use <a
106
+ href="http://rubyinstaller.org/downloads/">RubyInstaller</a> and make sure
107
+ ruby/bin is in your <a
108
+ href="http://www.computerhope.com/issues/ch000549.htm">system path</a>.</p>
109
+ </li><li>
110
+ <p>Linux: Use <a
111
+ href="https://github.com/sstephenson/rbenv#basic-github-checkout">rbenv</a>.</p>
112
+ </li><li>
113
+ <p>Windows: Use <a
114
+ href="http://rubyinstaller.org/downloads/">RubyInstaller</a> and make sure
115
+ ruby/bin is in your <a
116
+ href="http://www.computerhope.com/issues/ch000549.htm">system path</a>.</p>
117
+ </li><li>
118
+ <p>Linux: Use <a
119
+ href="https://github.com/sstephenson/rbenv#basic-github-checkout">rbenv</a>.</p>
120
+ </li></ul>
121
+ </li><li>
122
+ <p>Open the <a
123
+ href="http://www.addictivetips.com/windows-tips/windows-7-elevated-command-prompt-in-context-menu/">command
124
+ line</a> and type:</p>
125
+ </li></ol>
126
+
127
+ <pre class="code ruby"><code class="ruby">gem install netlinx-workspace
128
+ gem install netlinx-compile (optional for compiler support)</code></pre>
129
+
130
+ <h2 id="label-Usage">Usage</h2>
131
+
132
+ <h3 id="label-netlinx-compile+Support">netlinx-compile Support</h3>
133
+
134
+ <p>Installing this gem automatically enables support for <a
135
+ href="https://github.com/amclain/netlinx-compile">netlinx-compile</a> to
136
+ compile NetLinx Studio workspace (.apw) files.</p>
137
+
138
+ <h3 id="label-Rake+Tasks">Rake Tasks</h3>
139
+
140
+ <p>netlinx-workspace comes with a set of rake tasks that can be used by adding
141
+ <code>require &#39;netlinx/rake/workspace&#39;</code> to your project&#39;s
142
+ Rakefile. Type <code>rake --tasks</code> on the command line to view the
143
+ available tasks.</p>
144
+
145
+ <h3 id="label-Command+Line">Command Line</h3>
146
+
147
+ <p>netlinx-workspace is available from the command line. A list of options can
148
+ be displayed by executing <code>netlinx-workspace --help</code>.</p>
149
+
150
+ <h3 id="label-Ruby+Developer+API">Ruby Developer API</h3>
151
+
152
+ <p>A Ruby API is provided for developers looking to integrate the
153
+ netlinx-workspace library into thier own tools. See the <a
154
+ href="http://rubydoc.info/gems/netlinx-workspace">netlinx-workspace API
155
+ documentation</a>.</p>
156
+
157
+ <h2 id="label-YAML+Workspace+Configuration">YAML Workspace Configuration</h2>
158
+
159
+ <p>netlinx-workspace has the ability to generate a NetLinx Studio Workspace
160
+ (.apw) file from a <code>workspace.config.yaml</code> text file. The
161
+ advantage of using <a href="http://yaml.org/spec/1.1/#id857168">YAML</a> is
162
+ that a workspace can easily be defined and maintained without the use of a
163
+ proprietary GUI editor. This means developers are free to use whichever
164
+ text editor they please, like <a
165
+ href="https://github.com/amclain/sublime-netlinx">sublime-netlinx</a>, to
166
+ maintain a NetLinx workspace. Automated tools can generate, maintain, and
167
+ analyze this file as well.</p>
168
+
169
+ <p>To generate a template workspace config file, execute
170
+ <code>netlinx-workspace --create</code>.</p>
171
+
172
+ <pre class="code ruby"><code class="ruby">systems:
173
+ -
174
+ name: Client - Room
175
+ connection: 192.168.1.2
176
+ touch_panels:
177
+ -
178
+ path: Touch Panel.TP4
179
+ dps: 10001:1:0
180
+ ir:
181
+ -
182
+ path: IR.irl
183
+ dps: 5001:1:0</code></pre>
184
+
185
+ <h3 id="label-Directory+Structure">Directory Structure</h3>
186
+
187
+ <p>In order to simplify the configuration file, assumptions are made as to
188
+ where project files are located:</p>
189
+
190
+ <pre class="code ruby"><code class="ruby">include/
191
+ ir/
192
+ module/
193
+ touch_panel/
194
+ system_name.axs
195
+ workspace.config.yaml</code></pre>
196
+
197
+ <p>The <code>include</code> directory is automatically scanned for
198
+ <code>.axi</code> files, and the <code>module</code> directory is scanned
199
+ for <code>.tko</code> and <code>.jar</code> files. <code>.axs</code>
200
+ modules are ignored, as they should be tested and compiled independently
201
+ before being included in a project. However, it is encouraged to place the
202
+ <code>.axs</code> module source code file in the module directory as a
203
+ courtesy so that other developers can fix bugs and make updates if
204
+ necessary.</p>
205
+
206
+ <p>Since touch panel and IR files can have a device address (DPS) attached,
207
+ these files are explicitly listed in the system. Multiple addresses can be
208
+ defined by using a YAML array.</p>
209
+
210
+ <pre class="code ruby"><code class="ruby">ir:
211
+ -
212
+ path: Cable Box.irl
213
+ dps: [&#39;5001:5:0&#39;, &#39;5001:6:0&#39;, &#39;5001:7:0&#39;, &#39;5001:8:0&#39;]</code></pre>
214
+
215
+ <p>In the case of multiple systems, the root directory of each system may need
216
+ to be offset from the workspace directory. This can be achieved by using
217
+ the <code>root</code> key.</p>
218
+
219
+ <pre class="code ruby"><code class="ruby">systems:
220
+ -
221
+ name: Room 101
222
+ root: room_101
223
+ connection: 192.168.1.2
224
+ touch_panels:
225
+ - path: Room_101.TP4
226
+ dps: 10001:1:1
227
+ -
228
+ name: Room 201
229
+ root: room_201
230
+ connection: 192.168.1.3
231
+ touch_panels:
232
+ - path: Room_201.TP4
233
+ dps: 10002:1:2</code></pre>
234
+
235
+ <pre class="code ruby"><code class="ruby">room_101/include/
236
+ room_101/ir/
237
+ room_101/module/
238
+ room_101/touch_panel/
239
+ room_101/Room 101.axs
240
+
241
+ room_201/include/
242
+ room_201/ir/
243
+ room_201/module/
244
+ room_201/touch_panel/
245
+ room_201/Room 201.axs
246
+
247
+ workspace.config.yaml</code></pre>
248
+
249
+ <h3 id="label-Connection+Settings">Connection Settings</h3>
250
+
251
+ <p>The <code>connection</code> key supports a variety of options for
252
+ configuring a system&#39;s connection to the master controller:</p>
253
+
254
+ <pre class="code ruby"><code class="ruby"># IP address. Default ICSLan port 1319 is used.
255
+ connection: 192.168.1.2
256
+
257
+ # IP address with specific ICSLan port number.
258
+ connection: 192.168.1.2:1234
259
+
260
+ # IP address with specific ICSLan port number.
261
+ connection:
262
+ host: 192.168.1.2
263
+ port: 1234
264
+
265
+ # Serial port. Default baud rate 38,400 is used.
266
+ connection: COM2
267
+
268
+ # Serial port with baud rate.
269
+ connection: COM2:57600
71
270
 
72
- <p>This library provides a developer API for working with NetLinx Studio workspaces in Ruby. It also adds compiler support to the <a href="https://sourceforge.net/p/netlinx-compile/wiki/Home/">NetLinx Compile</a> gem for these workspaces.</p>
271
+ # Serial port with multiple port settings.
272
+ connection:
273
+ port: com2
274
+ baud_rate: 115200
275
+ data_bits: 7
276
+ parity: even
277
+ stop_bits: 2</code></pre>
73
278
 
74
- <h2>Documentation</h2>
279
+ <h3 id="label-Additional+Information">Additional Information</h3>
75
280
 
76
- <p><a href="https://sourceforge.net/p/netlinx-workspace/wiki/Home/">https://sourceforge.net/p/netlinx-workspace/wiki/Home/</a></p>
281
+ <p>Examples of workspace configuration files can be found in the <a
282
+ href="https://github.com/amclain/netlinx-workspace/tree/master/spec/workspace/yaml">specworkspaceyaml</a>
283
+ directory of this library. These files show all of the keywords that are
284
+ available.</p>
77
285
  </div></div>
78
286
 
79
287
  <div id="footer">
80
- Generated on Fri May 9 21:30:47 2014 by
288
+ Generated on Tue Feb 24 17:43:02 2015 by
81
289
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
82
- 0.8.7.4 (ruby-2.1.1).
290
+ 0.8.7.6 (ruby-2.1.3).
83
291
  </div>
84
292
 
85
293
  </body>
@@ -6,7 +6,7 @@
6
6
  <title>
7
7
  File: license
8
8
 
9
- &mdash; Documentation by YARD 0.8.7.4
9
+ &mdash; Documentation by YARD 0.8.7.6
10
10
 
11
11
  </title>
12
12
 
@@ -61,12 +61,12 @@
61
61
 
62
62
  <iframe id="search_frame"></iframe>
63
63
 
64
- <div id="content"><div id='filecontents'>Copyright 2013 Alex McLain<br/><br/>Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);<br/>you may not use this file except in compliance with the License.<br/>You may obtain a copy of the License at<br/><br/> http://www.apache.org/licenses/LICENSE-2.0<br/><br/>Unless required by applicable law or agreed to in writing, software<br/>distributed under the License is distributed on an &quot;AS IS&quot; BASIS,<br/>WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<br/>See the License for the specific language governing permissions and<br/>limitations under the License.</div></div>
64
+ <div id="content"><div id='filecontents'>Copyright 2013-2015 Alex McLain<br/><br/>Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);<br/>you may not use this file except in compliance with the License.<br/>You may obtain a copy of the License at<br/><br/> http://www.apache.org/licenses/LICENSE-2.0<br/><br/>Unless required by applicable law or agreed to in writing, software<br/>distributed under the License is distributed on an &quot;AS IS&quot; BASIS,<br/>WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<br/>See the License for the specific language governing permissions and<br/>limitations under the License.</div></div>
65
65
 
66
66
  <div id="footer">
67
- Generated on Fri May 9 21:30:47 2014 by
67
+ Generated on Tue Feb 24 17:43:02 2015 by
68
68
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
69
- 0.8.7.4 (ruby-2.1.1).
69
+ 0.8.7.6 (ruby-2.1.3).
70
70
  </div>
71
71
 
72
72
  </body>
@@ -20,7 +20,11 @@
20
20
  </head>
21
21
  <body>
22
22
  <script type="text/javascript" charset="utf-8">
23
- if (window.top.frames.main) {
23
+ var hasFrames = false;
24
+ try {
25
+ hasFrames = window.top.frames.main ? true : false;
26
+ } catch (e) { }
27
+ if (hasFrames) {
24
28
  document.getElementById('base_target').target = 'main';
25
29
  document.body.className = 'frames';
26
30
  }
@@ -4,7 +4,7 @@
4
4
  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
5
  <head>
6
6
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
7
- <title>Documentation by YARD 0.8.7.4</title>
7
+ <title>Documentation by YARD 0.8.7.6</title>
8
8
  </head>
9
9
  <script type="text/javascript" charset="utf-8">
10
10
  window.onload = function() {
@@ -6,7 +6,7 @@
6
6
  <title>
7
7
  File: README
8
8
 
9
- &mdash; Documentation by YARD 0.8.7.4
9
+ &mdash; Documentation by YARD 0.8.7.6
10
10
 
11
11
  </title>
12
12
 
@@ -61,25 +61,233 @@
61
61
 
62
62
  <iframe id="search_frame"></iframe>
63
63
 
64
- <div id="content"><div id='filecontents'><h1>NetLinx Workspace</h1>
65
-
66
- <p>netlinx-workspace</p>
64
+ <div id="content"><div id='filecontents'>
65
+ <h1 id="label-netlinx-workspace">netlinx-workspace</h1>
67
66
 
68
67
  <p>A library for working with AMX NetLinx Studio workspaces in Ruby.</p>
69
68
 
70
- <p><a href="http://badge.fury.io/rb/netlinx-workspace"><img src="https://badge.fury.io/rb/netlinx-workspace.png" alt="Gem Version"></a></p>
69
+ <p><a href="http://badge.fury.io/rb/netlinx-workspace"><img
70
+ src="https://badge.fury.io/rb/netlinx-workspace.png"></a> <a
71
+ href="http://www.rubydoc.info/gems/netlinx-workspace"><img
72
+ src="https://img.shields.io/badge/docs-api-blue.svg"></a> <a
73
+ href="http://www.apache.org/licenses/LICENSE-2.0"><img
74
+ src="https://img.shields.io/badge/license-Apache%202.0-yellowgreen.svg"></a></p>
75
+
76
+ <p>This library provides a developer API for working with NetLinx Studio
77
+ workspaces in Ruby. It also adds compiler support to the <a
78
+ href="https://github.com/amclain/netlinx-compile">netlinx-compile</a> gem
79
+ for these workspaces.</p>
80
+
81
+ <p><strong>APW Target Version</strong></p>
82
+
83
+ <p>This library targets NetLinx .apw version <code>4.0</code> (created by
84
+ NetLinx Studio 4).</p>
85
+
86
+ <h2 id="label-Issues-2C+Bugs-2C+Feature+Requests">Issues, Bugs, Feature Requests</h2>
87
+
88
+ <p>Any bugs and feature requests should be reported on the GitHub issue
89
+ tracker:</p>
90
+
91
+ <p><a
92
+ href="https://github.com/amclain/netlinx-workspace/issues">github.com/amclain/netlinx-workspace/issues</a></p>
93
+
94
+ <p><strong>Pull requests are preferred via GitHub.</strong></p>
95
+
96
+ <p>Mercurial users can use <a href="http://hg-git.github.io/">Hg-Git</a> to
97
+ interact with GitHub repositories.</p>
98
+
99
+ <h2 id="label-Installation">Installation</h2>
100
+
101
+ <p>netlinx-workspace is available as a Ruby gem.</p>
102
+ <ol><li>
103
+ <p>Install <a href="https://www.ruby-lang.org">Ruby</a> 2.0.0 or higher.</p>
104
+ <ul><li>
105
+ <p>Windows: Use <a
106
+ href="http://rubyinstaller.org/downloads/">RubyInstaller</a> and make sure
107
+ ruby/bin is in your <a
108
+ href="http://www.computerhope.com/issues/ch000549.htm">system path</a>.</p>
109
+ </li><li>
110
+ <p>Linux: Use <a
111
+ href="https://github.com/sstephenson/rbenv#basic-github-checkout">rbenv</a>.</p>
112
+ </li><li>
113
+ <p>Windows: Use <a
114
+ href="http://rubyinstaller.org/downloads/">RubyInstaller</a> and make sure
115
+ ruby/bin is in your <a
116
+ href="http://www.computerhope.com/issues/ch000549.htm">system path</a>.</p>
117
+ </li><li>
118
+ <p>Linux: Use <a
119
+ href="https://github.com/sstephenson/rbenv#basic-github-checkout">rbenv</a>.</p>
120
+ </li></ul>
121
+ </li><li>
122
+ <p>Open the <a
123
+ href="http://www.addictivetips.com/windows-tips/windows-7-elevated-command-prompt-in-context-menu/">command
124
+ line</a> and type:</p>
125
+ </li></ol>
126
+
127
+ <pre class="code ruby"><code class="ruby">gem install netlinx-workspace
128
+ gem install netlinx-compile (optional for compiler support)</code></pre>
129
+
130
+ <h2 id="label-Usage">Usage</h2>
131
+
132
+ <h3 id="label-netlinx-compile+Support">netlinx-compile Support</h3>
133
+
134
+ <p>Installing this gem automatically enables support for <a
135
+ href="https://github.com/amclain/netlinx-compile">netlinx-compile</a> to
136
+ compile NetLinx Studio workspace (.apw) files.</p>
137
+
138
+ <h3 id="label-Rake+Tasks">Rake Tasks</h3>
139
+
140
+ <p>netlinx-workspace comes with a set of rake tasks that can be used by adding
141
+ <code>require &#39;netlinx/rake/workspace&#39;</code> to your project&#39;s
142
+ Rakefile. Type <code>rake --tasks</code> on the command line to view the
143
+ available tasks.</p>
144
+
145
+ <h3 id="label-Command+Line">Command Line</h3>
146
+
147
+ <p>netlinx-workspace is available from the command line. A list of options can
148
+ be displayed by executing <code>netlinx-workspace --help</code>.</p>
149
+
150
+ <h3 id="label-Ruby+Developer+API">Ruby Developer API</h3>
151
+
152
+ <p>A Ruby API is provided for developers looking to integrate the
153
+ netlinx-workspace library into thier own tools. See the <a
154
+ href="http://rubydoc.info/gems/netlinx-workspace">netlinx-workspace API
155
+ documentation</a>.</p>
156
+
157
+ <h2 id="label-YAML+Workspace+Configuration">YAML Workspace Configuration</h2>
158
+
159
+ <p>netlinx-workspace has the ability to generate a NetLinx Studio Workspace
160
+ (.apw) file from a <code>workspace.config.yaml</code> text file. The
161
+ advantage of using <a href="http://yaml.org/spec/1.1/#id857168">YAML</a> is
162
+ that a workspace can easily be defined and maintained without the use of a
163
+ proprietary GUI editor. This means developers are free to use whichever
164
+ text editor they please, like <a
165
+ href="https://github.com/amclain/sublime-netlinx">sublime-netlinx</a>, to
166
+ maintain a NetLinx workspace. Automated tools can generate, maintain, and
167
+ analyze this file as well.</p>
168
+
169
+ <p>To generate a template workspace config file, execute
170
+ <code>netlinx-workspace --create</code>.</p>
171
+
172
+ <pre class="code ruby"><code class="ruby">systems:
173
+ -
174
+ name: Client - Room
175
+ connection: 192.168.1.2
176
+ touch_panels:
177
+ -
178
+ path: Touch Panel.TP4
179
+ dps: 10001:1:0
180
+ ir:
181
+ -
182
+ path: IR.irl
183
+ dps: 5001:1:0</code></pre>
184
+
185
+ <h3 id="label-Directory+Structure">Directory Structure</h3>
186
+
187
+ <p>In order to simplify the configuration file, assumptions are made as to
188
+ where project files are located:</p>
189
+
190
+ <pre class="code ruby"><code class="ruby">include/
191
+ ir/
192
+ module/
193
+ touch_panel/
194
+ system_name.axs
195
+ workspace.config.yaml</code></pre>
196
+
197
+ <p>The <code>include</code> directory is automatically scanned for
198
+ <code>.axi</code> files, and the <code>module</code> directory is scanned
199
+ for <code>.tko</code> and <code>.jar</code> files. <code>.axs</code>
200
+ modules are ignored, as they should be tested and compiled independently
201
+ before being included in a project. However, it is encouraged to place the
202
+ <code>.axs</code> module source code file in the module directory as a
203
+ courtesy so that other developers can fix bugs and make updates if
204
+ necessary.</p>
205
+
206
+ <p>Since touch panel and IR files can have a device address (DPS) attached,
207
+ these files are explicitly listed in the system. Multiple addresses can be
208
+ defined by using a YAML array.</p>
209
+
210
+ <pre class="code ruby"><code class="ruby">ir:
211
+ -
212
+ path: Cable Box.irl
213
+ dps: [&#39;5001:5:0&#39;, &#39;5001:6:0&#39;, &#39;5001:7:0&#39;, &#39;5001:8:0&#39;]</code></pre>
214
+
215
+ <p>In the case of multiple systems, the root directory of each system may need
216
+ to be offset from the workspace directory. This can be achieved by using
217
+ the <code>root</code> key.</p>
218
+
219
+ <pre class="code ruby"><code class="ruby">systems:
220
+ -
221
+ name: Room 101
222
+ root: room_101
223
+ connection: 192.168.1.2
224
+ touch_panels:
225
+ - path: Room_101.TP4
226
+ dps: 10001:1:1
227
+ -
228
+ name: Room 201
229
+ root: room_201
230
+ connection: 192.168.1.3
231
+ touch_panels:
232
+ - path: Room_201.TP4
233
+ dps: 10002:1:2</code></pre>
234
+
235
+ <pre class="code ruby"><code class="ruby">room_101/include/
236
+ room_101/ir/
237
+ room_101/module/
238
+ room_101/touch_panel/
239
+ room_101/Room 101.axs
240
+
241
+ room_201/include/
242
+ room_201/ir/
243
+ room_201/module/
244
+ room_201/touch_panel/
245
+ room_201/Room 201.axs
246
+
247
+ workspace.config.yaml</code></pre>
248
+
249
+ <h3 id="label-Connection+Settings">Connection Settings</h3>
250
+
251
+ <p>The <code>connection</code> key supports a variety of options for
252
+ configuring a system&#39;s connection to the master controller:</p>
253
+
254
+ <pre class="code ruby"><code class="ruby"># IP address. Default ICSLan port 1319 is used.
255
+ connection: 192.168.1.2
256
+
257
+ # IP address with specific ICSLan port number.
258
+ connection: 192.168.1.2:1234
259
+
260
+ # IP address with specific ICSLan port number.
261
+ connection:
262
+ host: 192.168.1.2
263
+ port: 1234
264
+
265
+ # Serial port. Default baud rate 38,400 is used.
266
+ connection: COM2
267
+
268
+ # Serial port with baud rate.
269
+ connection: COM2:57600
71
270
 
72
- <p>This library provides a developer API for working with NetLinx Studio workspaces in Ruby. It also adds compiler support to the <a href="https://sourceforge.net/p/netlinx-compile/wiki/Home/">NetLinx Compile</a> gem for these workspaces.</p>
271
+ # Serial port with multiple port settings.
272
+ connection:
273
+ port: com2
274
+ baud_rate: 115200
275
+ data_bits: 7
276
+ parity: even
277
+ stop_bits: 2</code></pre>
73
278
 
74
- <h2>Documentation</h2>
279
+ <h3 id="label-Additional+Information">Additional Information</h3>
75
280
 
76
- <p><a href="https://sourceforge.net/p/netlinx-workspace/wiki/Home/">https://sourceforge.net/p/netlinx-workspace/wiki/Home/</a></p>
281
+ <p>Examples of workspace configuration files can be found in the <a
282
+ href="https://github.com/amclain/netlinx-workspace/tree/master/spec/workspace/yaml">specworkspaceyaml</a>
283
+ directory of this library. These files show all of the keywords that are
284
+ available.</p>
77
285
  </div></div>
78
286
 
79
287
  <div id="footer">
80
- Generated on Fri May 9 21:30:47 2014 by
288
+ Generated on Tue Feb 24 17:43:01 2015 by
81
289
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
82
- 0.8.7.4 (ruby-2.1.1).
290
+ 0.8.7.6 (ruby-2.1.3).
83
291
  </div>
84
292
 
85
293
  </body>