-
Notifications
You must be signed in to change notification settings - Fork 1
/
README.txt
269 lines (177 loc) · 13.4 KB
/
README.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
=======================================================================================================================
BodyTrack Logging Device Gateway
=======================================================================================================================
ABOUT
-----
The BodyTrack Logging Device Gateway is an application which downloads data files from a BodyTrack Custom Sensor
(e.g. Base Station, Chest Strap, etc) to the user's computer (keeping a local copy) and uploads the data files to the
bodytrack.org web site.
Data files are stored in a BodyTrack directory under the user's home directory. The exact path for the data file
directory depends on the device nickname, your user ID, and the server to which you're uploading. These variables
are specified in the config.txt file on the device's SD card. So, for example, if user Bubba has a bodytrack.org user
ID of 42 and runs the gateway and connects to a base station named "Bubba_Basestation", data files will be stored in
~/BodyTrack/LoggingDeviceData/bodytrack.org_80/User42/Bubba_Basestation.
Data files saved to your computer will have one of a variety of file extensions. The file extension tells you the
status of the file. The current set of possible extensions is:
.WRITING - The file is downloading from the device and being written to disk
.BT - The file has been downloaded from the device and is awaiting upload. The checksum is correct.
.BTC - The was downloaded from the device, but the checksum is incorrect. Files with an incorrect checksum
will be re-downloaded some number of times before the gateway gives up and simply tells the device to
delete the file. The gateway will not attempt to upload files with an incorrect checksum.
.UPLOADING - The file is currently being uploaded to the server
.BTU - The file was successfully uploaded to the server and accepted by the server as having no errors.
.BTX - The gateway tried to upload the file to the server, but the server responded that the file has errors
and/or failed bin recs.
=======================================================================================================================
PREREQUISITES
-------------
You must have the following installed in order to build the application:
* Java JDK 1.6+ (http://www.oracle.com/technetwork/java/javase/downloads/index.html)
* Ant (http://ant.apache.org/)
You must have the following installed in order to run the application:
* Java JDK 1.6+ (http://www.oracle.com/technetwork/java/javase/downloads/index.html)
* FTDI VCP driver (http://www.ftdichip.com/Drivers/VCP.htm)
=======================================================================================================================
DOWNLOADING THE GATEWAY APPLICATION
-----------------------------------
The gateway source code is stored in a GitHub code repository at:
https://github.com/BodyTrack/bodytrack-logger-gateway.
To download the gateway, you can either download pre-built binaries, download a snapshot of the source code, or use Git
to fetch a (read-only) copy of the repository. Instructions for each follow.
Download Pre-Built Binaries
---------------------------
If you don't care about easily updating to new versions of the gateway and/or you don't have (or want) Git and Ant
installed, then you may find it easiest to just download pre-built binaries from GitHub. To do so, simply go to the
Downloads page for the repository and find the version you want to use (typically you'll want the most recent).
After the file finishes downloading, unzip it to your favorite location. Then open a command prompt and change the
current directory to the gateway application directory you just unzipped. Finally, to run the gateway, enter the
following:
$ java -jar bodytrack-applications.jar
Download a Snapshot of the Source Code
--------------------------------------
If you don't care about easily updating to new versions of the gateway and/or you don't have (or want) Git installed,
then it's easiest to just download a snapshot of the source code from GitHub. To do so, simply do the following:
1) Go to the Commits page for the repository and find the version you want to use.
2) On the right, click the link next to the word "commit".
3) On the resulting page, click the "Downloads" button. A dialog window should appear, with buttons to download the
source either as a .tar.gz or a .zip.
4) Choose your favorite and then decompress the archive.
You can now skip to the "Building the Gateway Application" section below.
Download the Source Code Using Git
----------------------------------
If you want to be able to easily update to a newer/different version of the gateway, then you're better off downloading
the source with Git. Binaries and instructions for installing Git are available from the Git home page.
To get the code with Git, first open a command prompt and change the current directory to wherever you want the source
code to live. Then do the following:
$ git clone git://github.com/BodyTrack/bodytrack-logger-gateway.git
Cloning into bodytrack-logger-gateway...
remote: Counting objects: 528, done.
remote: Compressing objects: 100% (299/299), done.
remote: Total 528 (delta 194), reused 486 (delta 155)
Receiving objects: 100% (528/528), 18.53 MiB | 4.95 MiB/s, done.
Resolving deltas: 100% (194/194), done.
$ ls -l
total 0
drwxr-xr-x 8 chris staff 272 Jul 26 10:40 bodytrack-logger-gateway
$
If you have already done a "git clone" before, and simply want to update to the latest revision, change to the
bodytrack-logger-gateway directory and run "git pull origin master". Please refer to the Git documentation if you
want to switch to a specific commit.
=======================================================================================================================
BUILDING THE GATEWAY APPLICATION
--------------------------------
To build the application, open a command prompt and change to the root directory of the source code. Then change to
the java subdirectory and then run Ant. It should look similar to the following:
$ cd bodytrack-logger-gateway
$ cd java
$ ant
Buildfile: /Users/chris/projects/BodyTrack/bodytrack-logger-gateway/java/build.xml
clean-bodytrack-logging-device:
clean-bodytrack-applications:
clean:
build-bodytrack-logging-device:
[mkdir] Created dir: /Users/chris/projects/BodyTrack/bodytrack-logger-gateway/java/code/logging-device/build
[javac] Compiling 25 source files to /Users/chris/projects/BodyTrack/bodytrack-logger-gateway/java/code/logging-device/build
dist-bodytrack-logging-device:
[mkdir] Created dir: /Users/chris/projects/BodyTrack/bodytrack-logger-gateway/java/code/logging-device/dist
[copy] Copying 20 files to /Users/chris/projects/BodyTrack/bodytrack-logger-gateway/java/code/logging-device/dist
[jar] Building jar: /Users/chris/projects/BodyTrack/bodytrack-logger-gateway/java/code/logging-device/dist/bodytrack-logging-device.jar
build-bodytrack-applications:
[mkdir] Created dir: /Users/chris/projects/BodyTrack/bodytrack-logger-gateway/java/code/applications/build
[javac] Compiling 2 source files to /Users/chris/projects/BodyTrack/bodytrack-logger-gateway/java/code/applications/build
[copy] Copying 1 file to /Users/chris/projects/BodyTrack/bodytrack-logger-gateway/java/code/applications/build
dist-bodytrack-applications:
[mkdir] Created dir: /Users/chris/projects/BodyTrack/bodytrack-logger-gateway/java/code/applications/dist
[copy] Copying 21 files to /Users/chris/projects/BodyTrack/bodytrack-logger-gateway/java/code/applications/dist
[jar] Building jar: /Users/chris/projects/BodyTrack/bodytrack-logger-gateway/java/code/applications/dist/bodytrack-applications.jar
dist:
all:
BUILD SUCCESSFUL
Total time: 4 seconds
$
The binaries are now built and you're ready to run the application.
=======================================================================================================================
RUNNING THE GATEWAY APPLICATION
-------------------------------
There are actually two applications created when you build the binaries:
1) The gateway application which auto-connects to the first BodyTrack logging device it finds, and continually
downloads data files from the device, caches them locally, and then uploads them to the bodytrack.org server.
2) A simple, command-line client for testing connectivity and basic interaction with a BodyTrack logging device.
The command line client is good for testing connectivity and basic interaction (including downloading data files),
but does not provide upload support.
Most users will want to run the gateway application. To run either application, you must have already built the
binaries. See the "Building the Gateway Application" section above.
Running the BodyTrack Logging Device Gateway
--------------------------------------------
To run the BodyTrack Logging Device Gateway, cd to the java directory and run the following:
$ java -Djava.library.path=./code/applications/dist -cp ./code/applications/dist/bodytrack-applications.jar org.bodytrack.applications.BodyTrackLoggingDeviceGateway;
Users running a UNIX-based system can instead simply run the shell script:
$ ./bodytrack-logging-device-gateway.sh
Once the gateway is running, you shouldn't need to do anything. It will connect to the first BodyTrack logging device
it finds and begin downloading data files. Once downloaded, data files will be uploaded to bodytrack.org (or whatever
server/port you specified in the config.txt file on the device's SD card).
To quit the gateway application, type q and then the ENTER key.
Running the Command Line Client
-------------------------------
To run the command line client, cd to the java directory and run the following:
$ java -Djava.library.path=./code/applications/dist -cp ./code/applications/dist/bodytrack-applications.jar org.bodytrack.applications.CommandLineLoggingDevice;
Users running a UNIX-based system can instead simply run the shell script:
$ ./command-line-logging-device.sh
The command line client has a menu which lists the various commands you can run to interact with the device.
=======================================================================================================================
TIPS AND TRICKS
---------------
This section discusses some useful tips for running the gateway.
Specifying the Serial Port(s)
-----------------------------
If you know the name of the serial port to which your BodyTrack logging device is attached, you can optionally specify
the port as follows:
$ java -Dgnu.io.rxtx.SerialPorts=SERIAL_PORT_NAME_HERE -Djava.library.path=./code/applications/dist -cp ./code/applications/dist/bodytrack-applications.jar org.bodytrack.applications.BodyTrackLoggingDeviceGateway;
Simply replace SERIAL_PORT_NAME_HERE in the command above with the absolute path to the port. For example:
$ java -Dgnu.io.rxtx.SerialPorts=/dev/tty.usbserial-A600dGXD -Djava.library.path=./code/applications/dist -cp ./code/applications/dist/bodytrack-applications.jar org.bodytrack.applications.BodyTrackLoggingDeviceGateway;
Note that you can specify multiple serial ports in the command line switch. When doing so, ports must be delimited by
the path separator character for whatever platform you're running under. For example, on my Mac:
$ java -Dgnu.io.rxtx.SerialPorts=/dev/tty.usbserial-A600dGXD:/dev/tty.usbserial-A60043uP -Djava.library.path=./code/applications/dist -cp ./code/applications/dist/bodytrack-applications.jar org.bodytrack.applications.BodyTrackLoggingDeviceGateway;
Specifying the serial port should greatly decrease the time it takes to establish a connection with the device.
Command Line Options
--------------------
The gateway application supports the following command line options:
--no-upload Files will not be uploaded
--logging-level=<level> Sets the logging level for the log file. Has no effect on the
console logging. Valid values are 'trace', 'debug', and 'info'.
--config=<path> Specify a path to a local config file. No connection to a device
will be attempted (and thus no files will be downloaded). Instead,
the gateway will obtain upload server/port, user info, and device
info from this config file. The gateway will process all BodyTrack
data files in the data file directory denoted by the upload server/port,
user info, and device found in the config file.
--help Displays a help message detailing these command line options.
Change the Logging Level
------------------------
You can set the logging level when you run the gateway by specifying the "--logging-level" command line option as
discussed above. You can also change the logging level at runtime by using the "l" menu option.
View Statistics
---------------
Statistics for the number of files downloaded, uploaded, and deleted are now printed periodically by the gateway. You
can also request the statistics at any time by choosing the "s" command.
=======================================================================================================================