Giter Site home page Giter Site logo

dc2uddf's People

Contributors

pridkett avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

dc2uddf's Issues

Implement better support for repetition groups

UDDF has a concept of a repetition group, and all dives must belong to a repetition group. Repetition groups are designed to link together all dives for a given day or a given trip. Macdive uses this information to calculate what number a repetitive dive is.

I'm going to suggest that repetition groups be broken up by day.

Break dif code into it's own library

In reality this project is become two different projects. The first is dc2uddf which is the user facing program that downloads dive data and invokes the methods to save it to uddf. The second is dif - the dive intermediate format - which is a utility library for storing dive information in C programs. dif also includes code to serialize dives and perform certain algorithms on dives.

For the sake of clean code the code for dif should be broken out into a small library that can be reused. This will ensure that the interface between dc2uddf and dif stays clean and makes the project more maintainable.

Develop algorithm to fix zero pressure at the beginning of dives

There are situations when a tank will read as zero pressure at the beginning of a dive. For the Uwatec Galileo this is an artifact of how it reads pressure: the computer starts with water contact but the pressure doesn't start until a little bit after air has started moving through the system. Therefore it usually takes a couple of breaths before air pressure is read, thus the first few samples show zero pressure.

This leaves us with the situation of needing to fake a data point or deal with having zero pressure at the beginning of a dive and really messing up data for air consumption and making graphs look ugly. Seeing as the zero pressure at the start of a dive is an incorrect datapoint, I'd rather fake it.

The algorithm itself is fairly simple. Iterate through the dive looking for the first non-zero pressure subsample. Then iterate through the those samples before that non-zero pressure subsample and either change the pressure on the subsample or create a new subsample with the non-zero pressure.

Implement support for gasmixes

Right now the gas mixtures are downloaded from the dive computer, but they're not actually saved with the UDDF output, so it's not possible to tell if a dive was done on Nitrox or Air. As this data is output from the Uwatec SMART and there is a mechanism to save the data into UDDF it should be used.

Use getopt for better parsing of command line options

Right now the command line option parsing is done by checking the arguments, there's no ability to use flags, specify you'd like help, or anything like that. Switching to getopt should make it possible to provide options to list all of the backends and devices the program supports.

Create deserialization methods for UDDF

dc2uddf has a collection of methods that may be useful outside of the context of simply dumping a set of dives (for example, fixing initial pressure samples, truncating dives, etc). To make this more useful we should include code that allows deserialization of uddf files. This will also help ensure that serialization is working properly as a dive collection should be able to be serialized and then deserialized to the same state.

Develop algorithm to truncate noise at the end of dives

When looking at the dive log information on the computer itself the dives are often much shorter than when looking at the data, this is because it truncates the noise at the end of the dive when you're bobbing up and down in the waves before you get out.

I'm thinking that an optional algorithm that works like this might be a good solution:

If the current depth is 0m and there are no later points where the depth is > 1m then stop recording waypoints for the dive.

Add option to list all backends and devices

Currently to get the list of all of the backends and devices you need to run the universal tool from libdivecomputer. It would be better if the tool had the ability to list all of the backends and devices itself without finding a different program.

implement support for Uwatec alarms

Uwatec devices also record when various alarms happen. Right now they're passed through to UDDF as tags, which isn't that helpful. The tag should be parsed into the different alarms. This appears to be the only place that SAMPLE_VENDOR_UWATEC_SMART is used.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.