]> git.tdb.fi Git - ext/subsurface.git/blob - README
Fix profile and average depth for freedives
[ext/subsurface.git] / README
1 Half-arsed divelog software in C.
2
3 I'm tired of Java programs that don't work etc.
4
5 License: GPLv2
6
7 You need libxml2-devel, gtk2-devel, glib-2.0 and GConf2-devel to build
8 this (and libusb-1.0 if you have libdivecomputer built with it, but then
9 you obviously already have it installed)
10
11 You also need to have libdivecomputer installed, which goes something like this:
12
13         git clone git://libdivecomputer.git.sourceforge.net/gitroot/libdivecomputer/libdivecomputer
14         cd libdivecomputer
15         autoreconf --install
16         ./configure
17         make
18         sudo make install
19
20 NOTE! You may need to tell the main Makefile where you installed
21 libdivecomputer if you didn't do it in the default /usr/local location.
22 I don't trust pkg-config for libdivecomputer, since pkg-config usually
23 doesn't work unless the project has been installed by the distro.
24
25 Just edit the makefile directly.  autoconf and friends are the devil's
26 tools.
27
28 Usage:
29
30         make
31         ./subsurface dives/*.xml
32
33 to see my dives (with no notes or commentary).
34
35 Or, if you have a dive computer supported by libdivecomputer, you can
36 just do
37
38         make
39         ./subsurface
40
41 and select "Import" from the Log menu, tell it what dive computer you
42 have (and where it is connected if you need to), and hit "OK".
43
44 NOTE! There are often multiple models of dive computers that import
45 exactly the same way.  If you have a Suunto Gekko, for example, the
46 import function works fine - even if you don't find the Gekko listed
47 explicitly.  It has the same import engine as the older Suunto Vyper
48 (not "Vyper Air").
49
50 So check the (incomplete?) list of supported dive computers below, and
51 see which ones show up together.  If you have the "Aeris Elite T3", for
52 example, you'd notice that it's in the same group with the "Oceanic Atom
53 2", and use that choice to import.
54
55 Suunto:
56
57  * Solution
58
59  * Eon, Solution Alpha and Solution Nitrox/Vario
60
61  * Vyper, Cobra, Vytec, Vytec DS, D3, Spyder, Gekko, Mosquito, Stinger and Zoop
62
63  * Vyper2, Cobra2, Cobra3, Vyper Air and HelO2
64
65  * D9, D6 and D4
66
67 Uwatec:
68
69  * Aladin
70
71  * Memomouse
72
73  * Smart and Galileo (infrared)
74
75 Reefnet:
76
77  * Sensus
78
79  * Sensus Pro
80
81  * Sensus Ultra
82
83 Oceanic, Aeris, Sherwood, Hollis, Genesis and Tusa (Pelagic):
84
85  * VT Pro, Versa Pro, Pro Plus 2, Wisdom, Atmos 2, Atmos AI, Atmos
86 Elite, ...
87
88  * Veo 250, Veo 180Nx, XR2, React Pro, DG02, Insight, ...
89
90  * Atom 2.0, VT3, Datamask, Geo, Geo 2.0, Veo 2.0, Veo 3.0, Pro Plus 2.1,
91 Compumask, Elite T3, Epic, Manta, IQ-900 (Zen), IQ-950 (Zen Air),
92 IQ-750 (Element II), ...
93
94 Mares:
95
96  * Nemo, Nemo Excel, Nemo Apneist, ...
97
98  * Puck, Puck Air, Nemo Air, Nemo Wide, ...
99
100  * Icon HD
101
102 Heinrichs Weikamp:
103
104  * OSTC, OSTC Mk.2 and OSTC 2N
105
106 Cressi, Zeagle and Mares (Seiko):
107
108  * Edy, Nemo Sport
109
110  * N2iTiON3
111
112 Atomic Aquatics:
113
114  * Cobalt
115
116
117 Implementation details:
118
119   main.c     - program frame
120   dive.c     - creates and maintaines the internal dive list structure
121   libdivecomputer.c
122   uemis.c
123   parse-xml.c
124   save-xml.c - interface with dive computers and the XML files
125   profile.c  - creates the data for the profile and draws it using cairo
126
127 A first UI has been implemented in gtk and an attempt has been made to
128 separate program logic from UI implementation.
129
130   gtk-gui.c  - overall layout, main window of the UI
131   divelist.c  - list of dives subsurface maintains
132   equipment.c - equipment / tank information for each dive
133   info.c      - detailed dive info
134   print.c     - printing
135
136 WARNING! I wasn't kidding when I said that I've done this by reading
137 gtk2 tutorials as I've gone along.  If somebody is more comfortable with
138 gtk, feel free to send me (signed-off) patches.
139
140 Just as an example of the extreme hackiness of the code, I don't even
141 bother connecting a signal for the "somebody edited the dive info"
142 cases.  I just save/restore the dive info every single time you switch
143 dives.  Christ! That's truly lame.
144
145 NOTE! Some of the dives are pretty pitiful.  All the last dives are from
146 my divemaster course, so they are from following open water students
147 along (many of them the confined*water dives).  There a lot of the
148 action is at the surface, so some of the "dives" are 4ft deep and 2min
149 long.
150
151 Contributing:
152
153 Please either send me signed-off patches or a pull request with
154 signed-off commits.  If you don't sign off on them, I will not accept
155 them. This means adding a line that says "Signed-off-by: Name <email>"
156 at the end of each commit, indicating that you wrote the code and have
157 the right to pass it on as an open source patch.
158
159 See: http://gerrit.googlecode.com/svn/documentation/2.0/user-signedoffby.html
160
161 Also, please write good git commit messages.  A good commit message
162 looks like this:
163
164         Header line: explaining the commit in one line
165
166         Body of commit message is a few lines of text, explaining things
167         in more detail, possibly giving some background about the issue
168         being fixed, etc etc.
169
170         The body of the commit message can be several paragraphs, and
171         please do proper word-wrap and keep columns shorter than about
172         74 characters or so. That way "git log" will show things
173         nicely even when it's indented.
174
175         Reported-by: whoever-reported-it
176         Signed-off-by: Your Name <youremail@yourhost.com>
177
178 where that header line really should be meaningful, and really should be
179 just one line.  That header line is what is shown by tools like gitk and
180 shortlog, and should summarize the change in one readable line of text,
181 independently of the longer explanation.