// SPDX-License-Identifier: GPL-2.0 /* * defines and prototypes for the uemis Zurich SDA file parser */ #ifndef UEMIS_H #define UEMIS_H #include "libdivecomputer.h" // for device_data_t, which is a typedef, not a struct :( #include #include #include #include struct dive; struct uemis_sample; struct dive_site; struct uemis { void parse_divelog_binary(std::string_view base64, struct dive *dive); int get_weight_unit(uint32_t diveid) const; void mark_divelocation(int diveid, int divespot, struct dive_site *ds); void set_divelocation(int divespot, const std::string &text, double longitude, double latitude); int get_divespot_id_by_diveid(uint32_t diveid) const; private: struct helper { int lbs = 9; int divespot = 9; struct dive_site *dive_site = nullptr; }; // Use a hash-table (std::unordered_map) to access dive information. // Might also use a balanced binary tree (std::map) or a sorted array (std::vector). std::unordered_map helper_table; static void event(struct dive *dive, struct divecomputer *dc, struct sample *sample, const uemis_sample *u_sample); struct helper &get_helper(uint32_t diveid); void weight_unit(int diveid, int lbs); }; std::string do_uemis_import(device_data_t *data); #endif // UEMIS_H