By: Team CS2113-AY1819S1-W13-2      Since: Aug 2018      Licence: MIT

1. Introduction

Divelog is a digital dive log for planning and tracking recreational (no decompression) dives that aims to simplify safe dive planning, logging and calculations. Divelog provides a simple way for underwater recreational divers to input details of their dives such as the time they spent at a particular depth, and Divelog will keep track of their nitrogen levels. This allows divers to plan their next trip safely.

We have adopted the [PADI] dive tables standards to calculate pressure groups for individual recreational dives. In addition, we are also able to determine if the dive is the first dive or a repetitive dive. Do not attempt to use Divelog for planning decompression dives.

Pressure groups are made up of an alphabet, between A to Z, which marks the nitrogen concentration within a diver ("A" corresponds to a scenario where the diver is almost free of nitrogen, whilst "Z" corresponds to a scenario where the diver has dangerously excess of Nitrogen). As of v1.4, the pressure groups are automatically calculated across all dives. You only need to enter the location, depth and the time of the the dive. Following which, the pressure groups of all dives are automatically calculated and updated. The system will also verify that the dives are safe before allowing you to add and/or edit the dives. This is to ensure your safety. We are still working on the sortby [sortby] feature coming in the upcoming release v2.0.

For more information on pressure groups and the definitions of common diving terms used, you can find out more over at Section 4, “About Pressure Groups and calculation in recreational diving”, Section 5, “Dive Tables Definitions Review” and in Section 6, “FAQ”.

2. Quick Start

  1. Ensure you have Java version 9 or later installed in your Computer. Here’s how

  2. Download the latest divelog.jar here.

  3. Copy the file to the folder you want to use as the home folder for your Dive Log.

  4. Double-click the divelog.jar file to start the app. The Graphical User Interface (GUI), as seen in Diagram 1 below, should appear in a few seconds.

    UGSS gui

    Diagram 1: screenshot of GUI

  5. Type the command in the command box (as seen in Diagram 2 below) and press Enter to execute it.
    e.g. typing help and pressing Enter will open the help window.

Click to view screenshot for location of command box

UGSS Ui command

Diagram 2: Command Box location

3. Features

Command Format

Confused by our User Guide? Our guide is written following the below few guidelines.

  • Some commands have an alias, which you can also use to execute the command

    • e.g. to find out about your current pressure group status and safe flight recommendation information, you can type either currentpg or cpg.

  • Words in UPPER_CASE are the parameters to be supplied by you, the user.

    • e.g. in add l/LOCATION, LOCATION is a parameter which can be used as add l/Sentosa.

  • Items in square brackets are optional

    • e.g l/LOCATION [tz/TIMEZONE] can be used as l/Bali tz/+8 or as l/Bali.

  • Parameters can be entered in any order

    • e.g. if the command specifies l/Sentosa, Singapore d/10, d/10 l/Sentosa, Singapore is also acceptable.

  • A vertical bar a|b means either a or b will work as inputs.

3.1. Viewing help : help

Use this command to help window to see the user guide. Upon entering the command, a separate window with the user guide will open.

Format: help

Click here to view the screenshots to open help within the application

UGSS help1

Diagram 3: Enter the help command in the command box

UGSS help2

Diagram 4: The help guide will open up

You can close the guide by closing it. This can be done by clicking on the X on the top right corner.

Click here to view the screenshot on how to close the help window when open within the application

UGSS help3

Diagram 5: Click the X to close

3.2. Adding a dive session: add

Use this command to adds your new dive session to the Dive Log.

Format: add ds/DATE_STARTED ts/TIME_DIVE_STARTED de/DATE_ENDED te/TIME_DIVE_ENDED ss/SAFETY_STOP d/DEPTH l/LOCATION

Words in UPPER_CASE are the parameters, items in SQUARE_BRACKETS are optional. Order of parameters are fixed as per the format above, meaning if you entered the ts/TIME_DIVE_STARTED before the ds/DATE_STARTED, the program will not be able to add your dive.

Put a ts/ before the time started(24 hours format - HHMM), te/time ended (24 hours format - HHMM), d/depth (in metres), l/ location (location name).

Example: add ds/04082018 ts/0900 de/04082018 te/1020 ss/1015 d/15 l/Bukit Lagoon tz/+8

A list of possible command flags is shown below.

Table 1. Table of Prefix and Data
Data Prefix Example

Date started / Ended (DDMMYYYY)

ds or de

ds/04082018 or de/05082018

Time Started / Ended (HHMM)

ts or te

ts/0800 or te/0900

Location

l

l/Sentosa

Depth (integer value). Depending on whether the app is set to use meters or feet, the value used will change.

d

d/18

Timezone (in UTC)

tz

tz/+12 or tz/-5

Adding a command may fail for a variety of reasons. This is to ensure your safety during dives. As a rule of thumb some reasons why a dive may not be added include:

  • The dive puts you outside the safety guidelines given by padi (i.e. its too deep or long).

  • The dive makes future dives too risky.

  • The dive timing overlaps with another dive.

  • Issues with the way you entered the command.

An important thing to note is that your safety stop time must be between your start and end time.

If for instance you enter an invalid dive, the system will tell you that you have dived to deep. Some common error messages are shown below:

Table 2. Common error messages (non-exhaustive list)
Error Messages Cause

The dive overlaps with another dive. Not updating the divelog.

There is another dive which is occuring at the same time.

Dive is too deep and too long!!

The dive you added is too long/deep given your current plans. This message is often accompanied by advice about how you can stay safe. Please follow it.

Invalid date format! (Not DDMMYYYY)

Date you entered is invalid. Make sure the date is in the form of DDMMYYYY

Invalid time format! (Not HHMM)

Time entered is in invalid format.

Start and End date or time or Safety Stop Time are not in chronological order! Start Date should be earlier than End Date! Safety Stop should be between Start and End time"

You need to make sure that your start time is before your end time and safety stop comes inbetween.

3.3. Listing all dives : list

To display all the dives that you have previously recorded, list shows a list of all dives in the dive log.
To change the manner in which your dives are ordered, view [sortby]

Format: list

Click here to see the screenshot for list

UGSS list

Diagram 6: List command

3.4. Editing a dive : edit

If you made a mistake while adding a new dive, edit will come in handy. edits edits an existing dive session in the Dive Log.
The only parameters you have to input are the data of that specific dive session at INDEX

Format: edit INDEX [ts/TIME_START] [te/TIME_END] [ss/SAFETY_STOP_TIME] [d/DEPTH] [l/LOCATION]…​

  • Edits the dive at the specified INDEX. The index refers to the index number shown in the displayed dive list. The index must be a positive integer 1, 2, 3, …​

  • At least one of the optional fields must be provided.

  • Existing values will be updated to the input values.

Examples: edit 1 l/Tioman d/10

All data provided must comply to chronological order, meaning to say Date/Time Started has to be earlier than Date/Time Ended.
Table 3. Table of Prefix and Data
Data Prefix Example

Date started / Ended (DDMMYYYY)

ds or de

ds/04082018 or de/05082018

Time Started / Ended (HHMM)

ts or te

ts/0800 or te/0900

Location

l

l/Sentosa

Depth (integer value)

d

d/18

Timezone (in UTC)

tz

tz/+12 or tz/-5

Like the add command, edit may fail for a variety of reasons. The same rules which apply for add apply for edit. For a set of reasons why an edit may fail please take a look at Section 3.2, “Adding a dive session: add.

3.5. Setting display units set_units

If you’re not used to the metric or imperial system, set_units switches between meters and feet. (App defaults to meters) All data displayed will be automatically and accurately converted
Format: set_units meters|feet

  • As of v1.4 it updates both the DISPLAY units and the actual entered units.

  • The settings are not saved upon application restart.

  • Internally, we store everything in meters, as a result the xml file produced will always be in meters.

Example usage: set_units feet

3.6. Locating dives by location: find

Looking for a specific dive? Use find to find dives whose location contain any of the given keywords that you input.
Format: find KEYWORD [MORE_KEYWORDS]

  • The search is case insensitive. e.g tioman will match Tioman

  • Only the location is searched.

  • Only full words will be matched e.g. Han will not match Hans

Examples:

  • find Bali
    Returns Dive at Bali

Click here to view the screenshot for an example of a successful find

UGSS find

Diagram 7: Find command

3.7. Deleting a dive : delete

Deletes the specified dive from the Dive Log.
Format: delete INDEX

  • Deletes the dive at the specified INDEX.

  • The index refers to the index number shown in the displayed dive list.

  • The index must be a positive integer 1, 2, 3, …​

Examples:

  • list
    delete 2
    Deletes the 2nd dive in the Dive Log.

  • find Bali
    delete 1
    Deletes the 1st dive in the results of the find command.

3.8. Selecting a diveSession : select

Selects the dive identified by the index number used in the displayed dive list.
Format: select INDEX

  • Selects the dive and loads the details of the dive at the specified INDEX.

  • The current pressure group of the start of the dive and end of the dive will be displayed.

  • The pressure group is colour-coded based on its severity for easier reference. (Green being ok, orange in danger zone and red means critical)

  • The index refers to the index number shown in the displayed diveSession list.

  • The index must be a positive integer 1, 2, 3, …​

Examples:

  • list
    select 2
    Selects the 2nd dive in the Dive Log.

  • find Bali
    select 1
    Selects the 1st dive in the results of the find command.

Click here to view the screenshot for a successful select

UGSS select

Diagram 8: Select command

3.9. Listing entered commands : history

Forgot what command you did just now and corrupted your data? Find our what command exactly did you execute before you correct your data!

Format: history

Pressing the and arrows will display the previous and next input respectively in the command box.

Click here to view the screenshot for a successful history command

UGSS history

Diagram 9: History command

3.10. Undoing previous command : undo

The perfect solution to a slip of the finger. undo restores the Dive Log to the state before the previous undoable command was executed.

Format: undo

Undoable commands: those commands that modify the Dive Log’s content (add, delete, edit and clear only).

Examples:

  • delete 1
    list
    undo (reverses the delete 1 command)

  • select 1
    list
    undo
    The undo command fails as there are no undoable commands executed previously.

  • delete 1
    clear
    undo (reverses the clear command)
    undo (reverses the delete 1 command)

3.11. Redoing the previously undone command : redo

Ever thought of undo-ing a undo command? Redo reverses the most recent undo command.
Format: redo

Examples:

  • delete 1
    undo (reverses the delete 1 command)
    redo (reapplies the delete 1 command)

  • delete 1
    redo
    The redo command fails as there are no undo commands executed previously.

  • delete 1
    clear
    undo (reverses the clear command)
    undo (reverses the delete 1 command)
    redo (reapplies the delete 1 command)
    redo (reapplies the clear command)

3.12. Clearing all entries : clear

This command, as the name suggests, clears Dive Log of all your previous dive logs and gives you a clean start to use Dive Log again!

Format: clear

Performed an accidental clear of your precious data? Use undo to, you’ve guessed it, undo your mistaken clear command to restore all your deleted dive sessions.
Section 3.10, “Undoing previous command : undo

3.13. Getting the current pressure group status and safe flight recommendation information : currentpg

Knowing your current pressure group, the time needed to reach the next pressure group as well as to the minimum pressure group "A" is vital for divers for them to plan their dives safely. Divelog even knows if you’ve completed a single or repetitive dive and advises you accordingly on the time and date you can start taking a flight safely.

Format: currentpg
Alias: cpg

You’ll probably know this, but you cannot get information of your current pressure group and safe flight recommendations on dives that hasn’t occurred yet - like in [newplan] when you’re planning for future dives! Divelog takes your latest dive that you have completed into consideration automatically.

3.14. Setting parameters to sort dives : sortby [coming in V2.0]

In V1.4, all dives are sorted automatically according to time and date by default.

Want to view your dives in ranked order by different options? Simply type sortby followed by a KEYWORD, your following list, find commands will return you all your dive sessions in that particular order.

Format: sortby KEYWORD WARNING: You can only use the specific keywords below.

Table 4. Table of parameters available to sort by
Parameter Type Keyword

Time

time

Location (lexicographical)

location

Duration of Dive

duration

3.15. Planning Mode : newplan or normalmode

The planning mode is a temporary space for you to plan trips and to simulate dives. This is especially important if you are planning on a multiple day diving trip!
When you enter the planning mode, simply enter simulation dives as per how you would use the other commands normally.

When you exit, all your simulation files will be deleted automatically. In the Current V1.4, planning mode only supports add, delete and edit commands

Format: newplan to enter Planning Mode, normalmode to exit planning mode.

When you exit the planning mode, you will return to the state before you entered.

3.16. Port files from Planning Mode to normal mode : portover

When you have finished your plan and found the perfect set of dives, simply input the portover command and the app will port all planning data into data in the normal mode.

You cannot use this command in normalmode as there are no planning data to port over.

3.17. Exiting the program : exit

Finished using Dive Log? This command shuts down Dive Log, and saves your new dive session data for your next use.

Format: exit

3.18. Saving the data

Worry not! Dive Log saves all your data in the hard disk automatically after any command that changes the data.

There is absolutely no need to save manually.

4. About Pressure Groups and calculation in recreational diving

New to diving and to our product? Pressure groups are a crucial part of diving, as it limits the amount of time you can spend underwater. In this section, we will explain how diving and pressure groups are related.

PADI TableOneAndTwo

Diagram 10: PADI Recreational Dive Planner, Table 1 (No Decompression Limits and Group Designation Table) and Table 2 (Surface Interval Credit Table)


PADI TableThree

Diagram 11: PADI Recreational Dive Planner, Table 3 (Repetitive Dive Timetable)

The three PADI tables as shown in the above two diagrams ([Diagram_10] and [Diagram_11]) are normally physically carried along by recreational divers for them to calculate their pressure group manually.

Workflow of a recreational diver who wants to check out his/her pressure group:

  1. For the diver’s first dive of the day, the diver dives to a depth of 19 metres for 29 minutes. Referring to [Diagram_10], Table 1 (No Decompression Limits and Group Designation Table), the diver would find the depth (19) at the top row. There is no 19 metres in the table, so the closest rounded-up value is 20 metres. He would then go down that 20m column until he finds 29 minutes, or the closest rounded up value which is 30 minutes. The diver will then draw his finger along the row to the left to match a character, which is "M". His new pressure group is now "M".

Try the example above by adding the following command into Divelog! Diver starts diving at 7am at 19 metres depth and ends at 7:29am with a safety stop of 5 minutes. If your add is successful, you will see the following diagram 12 below in Divelog, where the diver’s ending pressure group of "M" is prominently displayed.

add ds/12112018 ts/0700 de/12112018 te/0729 ss/0724 d/19 l/Sentosa, Singapore tz/+8

Click here to view the screenshot for a successful add

egDive

Diagram 12: A successful first dive add



2. For the diver’s second and subsequent repetitive dives of the day, he would have to refer to table 3 in [Diagram_11] (Repetitive Dive Timetable) to find out his total bottom time. The diver wants to dive to 10 metres for 15 minutes for his second dive. The diver has already surfaced for three hours, which is the minimum time for any pressure group to reach the minimum "A" pressure group, as per Table 2 in [Diagram_10] (Surface Interval Credit Table). However, there will still be residual nitrogen in his body after three hours as long as the diver makes a dive within six hours of his previous dive, and thus he has to find out his residual nitrogen time from the previous dive. Finding his current pressure group "A" on the top row of Table 3, he would match the depth he wants to dive to (10m), and get the values 10 at the top (in the white area) and 209 at the bottom (in the blue area). 10 minutes refer the Residual Nitrogen Time (RNT) and 209 minutes refer to the adjusted no decompression limits. The diver has to add the RNT value (10) to his intended/Actual Bottom Time (ABT) (15 minutes), giving a total of 25 minutes Total Bottom Time (TBT). Do pay special attention to this: He will only be diving for 15 minutes, however he has to account for the residual nitrogen time in his body, so his TBT is 25 minutes. Going back to Table 1 in [Diagram_10], for a depth of 10 metres and 25 minutes TBT, his new pressure group would be "C".

Try the example above by adding the following command into Divelog! Diver ends his first dive at 7:29am and starts his second repetitive dive three hours later at 10:29am. He dives to a depth of 10 metres and ends his dive 15 minutes later, at 10:44am after a safety stop at 10:40am. If your add is successful, you will see the following diagram 13 below in Divelog, where the diver’s starting pressure group after resting for three hours of "A" and his ending pressure group after the dive of "C" is prominently displayed.

add ds/12112018 ts/1029 de/12112018 te/1044 ss/1040 d/10 l/Sentosa, Singapore tz/+8

Click here to view the screenshot for a successful repetitive dive add

egDive2

Diagram 13: A successful repetitive dive add



5. Dive Tables Definitions Review

You may have encountered the following terms when reading this document or when using Divelog, or when learning how to use the PADI recreational dive planner. This table provides a quick reference on the definitions on the common diving terminologies used.

Diving terminologies Definitions

Actual Bottom Time (ABT)

In repetitive dives, the total time actually spent under water (in minutes) from the beginning of the descent until the time the diver leaves the depth for a continuous ascent to the safety stop or the surface.

Adjusted No Decompression Limit

The time limit for a repetitive dive that accounts for residual nitrogen, for a particular depth. Found in [Diagram_11] Table 3 of the PADI dive tables, in blue. Actual Bottom Time should never exceed the adjusted no decompression limit.

Decompression Diving

Diving that requires planning stops during ascent to prevent decompression sickness. In recreational diving (also called no decompression diving), a decompression stop is considered an emergency procedure and is never an intentional part of the dive plan.

No Decompression Limit (NDL)

The maximum time that can be spent at a particular depth before decompression stops are required. Can be found in [Diagram_10] in Table 1, at the end of each column, in black. For instance, the NDL at 10 metres is 219 minutes.

Pressure Group

A letter used in the PADI Recreational Dive Planner to label the amount of theoretical residual nitrogen left in your body.

Repetitive Dive

A dive that is made within six hours of a previous dive. There is still a significant amount of residual nitrogen in your body. Dives that are made six hours or more after the previous dive are classified as clean (new) dives.

Residual Nitrogen

The difference between the normal levels of nitrogen in your body and the elevated levels of nitrogen remaining in your body after a dive.

Residual Nitrogen Time (RNT)

An amount of nitrogen, represented in minutes, found in [Diagram_11] Table 3 with a pressure group letter and a specific depth (in the white area) to be added to the actual bottom time of a dive to account for the residual nitrogen from the previous dive. For instance, if the diver’s pressure group at the end of the surface interval is "B" and he intends to dive to 10 metres, his RNT is 20 minutes.

Safety Stop

While ascending at the end of a dive, a stop is made between 3 and 6 metres - usually 5 metres for at least three minutes, for additional safety to allow more nitrogen to leave the body. The safety stop is recommended after all dives.

Surface Interval

The amount of time spent on the surface (land) between two dives, usually recorded in hours:minutes (E.g. 1:05 represents 1 hour, 5 minutes.) Used in [Diagram_10] Table 2, to determine the diver’s pressure group status after a certain time on the surface. For instance, if the diver has a pressure group of "H" after a dive, and he spends 30 minutes resting on land before his next dive, his pressure group after his rest would be "D".

Total Bottom Time (TBT)

The sum of Residual Nitrogen Time and Actual Bottom Time after a repetitive dive, used in [Diagram_10] Table 1 to determine the pressure group after a repetitive dive.

6. FAQ

Below are a few Frequently Asked Questions (FAQs). If your doubts are not addressed below, please feel free to post your doubts directly on our product Git Page.

Q: How do I transfer my data to another Computer?
A: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous Dive Log folder.

Q: What is the purpose of having a recreational dive planner in the first place? Can’t I just dive to whatever depth for as long as I want?
A: The purpose of the Recreational Dive Planner is to make all dives no decompression dives. Proper planning assures that all dives, single or repetitive, are within the no decompression limits by controlling the length of the dive, the depth of the dive, and the sur- face interval between dives. The Recreational Dive Planner Table is actually three tables linked together. Each of the three tables provides information for planning dives within accepted nitrogen levels.

Q: Where can I find out more about PADI dive tables?
A: The 36-page long Instructions for Use official document can be found at Padi’s Website.

7. Command Summary

Command Command format and example

Help

help

Add

add ds/DATE_STARTED ts/TIME_DIVE_STARTED de/DATE_ENDED te/TIME_DIVE_ENDED ss/SAFETY_STOP d/DEPTH l/LOCATION

e.g. add ds/04082018 ts/0900 de/04082018 te/1020 ss/1015 d/15 l/Bukit Lagoon tz/+8

List

list

Edit

edit INDEX [ds/DATE_STARTED] [ts/TIME_DIVE_STARTED] [de/DATE_ENDED] [te/TIME_DIVE_ENDED] [ss/SAFETY_STOP] [d/DEPTH] [l/LOCATION]

e.g. edit 1 d/8 l/Tioman

Set display units

set_units

e.g. set_units meters

Find

find KEYWORD [MORE_KEYWORDS]

e.g. find Bali

Delete

delete INDEX

e.g. delete 2

Select

select INDEX

e.g. select 2

History

history

Undo

undo

Redo

redo

Clear

clear

Current Pressure Group

currentpg

Alias: cpg

Planning mode

newplan

Normal mode

normalmode

Port planning mode to normal mode

portover