From: tsteven4 <13596209+tsteven4@users.noreply.github.com> Date: Sat, 29 Apr 2023 12:25:11 +0000 (-0600) Subject: remove remnants of baroiq format. (#1095) X-Git-Tag: archive/raspbian/1.10.0+ds-2+rpi1~1^2~12^2~1^2~64 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=934bd36917858bf7acb38aee0889bf22f68a060e;p=gpsbabel.git remove remnants of baroiq format. (#1095) aka brauniger_iq. --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 664e662fd..8cfa93ceb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -79,7 +79,6 @@ set(MINIMAL_FMTS # ALL_FMTS set(ALL_FMTS ${MINIMAL_FMTS} - brauniger_iq.cc dg-100.cc exif.cc garmin_fit.cc diff --git a/brauniger_iq.cc b/brauniger_iq.cc deleted file mode 100644 index 672326356..000000000 --- a/brauniger_iq.cc +++ /dev/null @@ -1,280 +0,0 @@ -/* - * Serial download of barograph data from a Brauniger IQ Variometer. - * - * Copyright (C) 2004 Chris Jones - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation; either version 2 of the License, or (at your - * option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#include "defs.h" -#include "gbser.h" -#include - -static void* serial_handle; - -#define MYNAME "BRAUNIGER-IQ" -#define PRESTRKNAME "PRESALTTRK" - -namespace { // fix ODR violation with igc - enum state_t { - st_sync, - st_fl_num, - st_data_len, - st_ser_num, - st_pilot_name, - st_start_date, - st_start_year, - st_max_alt_1, - st_max_alt_2, - st_max_climb, - st_flight_dur, - st_log_ival, - st_start_time, - st_end_time, - st_sample_alt, - st_sample_spd, - num_states - }; -} - -static state_t state; -static const int reqd_bytes[num_states] = { 6, 1, 2, 2, 25, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 1 }; - -static void rd_init(const QString& fname) -{ - if (serial_handle = gbser_init(qPrintable(fname)), nullptr == serial_handle) { - fatal(MYNAME ": Can't open port '%s'\n", qPrintable(fname)); - } - if (gbser_set_port(serial_handle, 9600, 8, 0, 1) != gbser_OK) { - fatal(MYNAME ": Can't configure port '%s'\n", qPrintable(fname)); - } -} - -static void rd_deinit() -{ - gbser_deinit(serial_handle); - serial_handle = nullptr; -} - -/** - * Process a data record. - * @return zero when all expected data has been received - */ -static int process_data(const unsigned char* data) -{ - static int remaining = 100; - static std::tm tm; - static time_t start, creation; - static route_head* track; - static unsigned char interval; - time_t finish; - Waypoint* wpt = nullptr; - int i; - - if (global_opts.debug_level >= 3) { - for (i = 0; i < reqd_bytes[state]; i++) { - printf("%.2x ", data[i]); - } - puts(""); - } - - remaining -= reqd_bytes[state]; - switch (state) { - case st_sync: - if (memcmp(data, "\x30\x31\x32\x33\x34\x35", 6) != 0) { - fatal(MYNAME ": Could not synchronise\n"); - } - break; - - case st_fl_num: - if (global_opts.debug_level >= 1) { - printf(MYNAME ": Flight Number: %d\n", data[0]); - } - break; - - case st_data_len: - remaining = (data[0] << 8) + data[1] - 2; - if (global_opts.debug_level >= 1) { - printf(MYNAME ": Data Length: %d\n", remaining); - } - break; - - case st_ser_num: - if (global_opts.debug_level >= 1) { - printf(MYNAME ": Serial Number: %d\n", (data[0] << 8) + data[1]); - } - break; - - case st_pilot_name: - if (global_opts.debug_level >= 1) { - printf(MYNAME ": Pilot Name: %.25s\n", data); - } - break; - - case st_start_date: - i = (data[0] << 8) + data[1]; - tm.tm_mday = i / 100; - tm.tm_mon = (i % 100) - 1; - break; - - case st_start_year: - tm.tm_year = ((data[0] << 8) + data[1]) - 1900; - break; - - case st_max_alt_1: - if (global_opts.debug_level >= 1) { - printf(MYNAME ": Max Altitude 1: %dm\n", (data[0] << 8) + data[1]); - } - break; - - case st_max_alt_2: - if (global_opts.debug_level >= 1) { - printf(MYNAME ": Max Altitude 2: %dm\n", (data[0] << 8) + data[1]); - } - break; - - case st_max_climb: - if (global_opts.debug_level >= 1) { - i = (data[0] << 8) + data[1]; - printf(MYNAME ": Max climb: %d.%dm/s\n", i / 10, i % 10); - } - break; - - case st_flight_dur: - if (global_opts.debug_level >= 1) { - i = (data[0] << 8) + data[1]; - printf(MYNAME ": Flight Time: %d:%d\n", i / 100, i % 100); - } - break; - - case st_log_ival: - interval = data[0]; - if (global_opts.debug_level >= 1) { - printf(MYNAME ": Logging Interval: %ds\n", interval); - } - break; - - case st_start_time: - i = (data[0] << 8) + data[1]; - tm.tm_hour = i / 100; - tm.tm_min = (i % 100) - 1; - tm.tm_sec = 0; - creation = start = mktime(&tm); - if (global_opts.debug_level >= 1) { - printf(MYNAME ": Start Time: %s", ctime(&start)); - } - break; - - case st_end_time: - i = (data[0] << 8) + data[1]; - tm.tm_hour = i / 100; - tm.tm_min = (i % 100) - 1; - finish = mktime(&tm); - if (global_opts.debug_level >= 1) { - printf(MYNAME ": End Time: %s", ctime(&finish)); - } - if (remaining) { - track = new route_head; - track->rte_name = PRESTRKNAME; - track->rte_desc = "Brauniger-IQ Barograph"; - track_add_head(track); - } else { - warning(MYNAME ": No barograph recorded for this flight\n"); - } - break; - - case st_sample_alt: - wpt = new Waypoint; - wpt->latitude = wpt->longitude = 0.0; - wpt->SetCreationTime(creation); - creation += interval; - wpt->altitude = (data[0] << 8) + data[1]; - track_add_wpt(track, wpt); - if (global_opts.debug_level >= 2) { - printf(MYNAME ": remaining=%d, Altitude=%fm, ", remaining, wpt->altitude); - } - break; - - case st_sample_spd: - if (global_opts.debug_level >= 2) { - printf("Airspeed=%dkmh\n", data[0]); - } - state = st_sample_alt; - return remaining; - - default: - fatal(MYNAME ": Bad internal state\n"); - } - - // Iterating an enum isn't great and it's less greatr that reqd_byte[] is - // implicitly coupled to our state_t, but here we are with C code forged - // into C++. - state = static_cast (state + 1); - - return remaining; -} - -static void data_read() -{ - unsigned char ibuf[25]; - - if (global_opts.debug_level >= 0) { - puts(MYNAME ": Select recorded flight in memo mode."); - puts(MYNAME ": Press Memo button for two seconds..."); - } - - // Wait until something arrives - if (global_opts.debug_level >= 0) { - puts(MYNAME ": Downloading flight..."); - } - - // Read data until there is none left to read - state = st_sync; - for (;;) { - /* wait up to 5 seconds for more data */ - int rd_cnt = gbser_read_wait(serial_handle, ibuf, reqd_bytes[state], 5000); - if (rd_cnt < 0) { - fatal(MYNAME ": Serial error\n"); - } else if (rd_cnt < reqd_bytes[state]) { - fatal(MYNAME ": Incomplete download\n"); - } - - if (!process_data(ibuf)) { - if (global_opts.debug_level >= 0) { - puts(MYNAME " ...Finished"); - } - return; - } - } -} - -static QVector brauniger_iq_args = { -}; - -/* master process: don't convert anything */ - -ff_vecs_t brauniger_iq_vecs = { - ff_type_serial, - { ff_cap_none, ff_cap_read, ff_cap_none}, - rd_init, - nullptr, - rd_deinit, - nullptr, - data_read, - nullptr, - nullptr, - &brauniger_iq_args, - NULL_POS_OPS -}; diff --git a/deprecated/brauniger_iq.cc b/deprecated/brauniger_iq.cc new file mode 100644 index 000000000..672326356 --- /dev/null +++ b/deprecated/brauniger_iq.cc @@ -0,0 +1,280 @@ +/* + * Serial download of barograph data from a Brauniger IQ Variometer. + * + * Copyright (C) 2004 Chris Jones + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include "defs.h" +#include "gbser.h" +#include + +static void* serial_handle; + +#define MYNAME "BRAUNIGER-IQ" +#define PRESTRKNAME "PRESALTTRK" + +namespace { // fix ODR violation with igc + enum state_t { + st_sync, + st_fl_num, + st_data_len, + st_ser_num, + st_pilot_name, + st_start_date, + st_start_year, + st_max_alt_1, + st_max_alt_2, + st_max_climb, + st_flight_dur, + st_log_ival, + st_start_time, + st_end_time, + st_sample_alt, + st_sample_spd, + num_states + }; +} + +static state_t state; +static const int reqd_bytes[num_states] = { 6, 1, 2, 2, 25, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 1 }; + +static void rd_init(const QString& fname) +{ + if (serial_handle = gbser_init(qPrintable(fname)), nullptr == serial_handle) { + fatal(MYNAME ": Can't open port '%s'\n", qPrintable(fname)); + } + if (gbser_set_port(serial_handle, 9600, 8, 0, 1) != gbser_OK) { + fatal(MYNAME ": Can't configure port '%s'\n", qPrintable(fname)); + } +} + +static void rd_deinit() +{ + gbser_deinit(serial_handle); + serial_handle = nullptr; +} + +/** + * Process a data record. + * @return zero when all expected data has been received + */ +static int process_data(const unsigned char* data) +{ + static int remaining = 100; + static std::tm tm; + static time_t start, creation; + static route_head* track; + static unsigned char interval; + time_t finish; + Waypoint* wpt = nullptr; + int i; + + if (global_opts.debug_level >= 3) { + for (i = 0; i < reqd_bytes[state]; i++) { + printf("%.2x ", data[i]); + } + puts(""); + } + + remaining -= reqd_bytes[state]; + switch (state) { + case st_sync: + if (memcmp(data, "\x30\x31\x32\x33\x34\x35", 6) != 0) { + fatal(MYNAME ": Could not synchronise\n"); + } + break; + + case st_fl_num: + if (global_opts.debug_level >= 1) { + printf(MYNAME ": Flight Number: %d\n", data[0]); + } + break; + + case st_data_len: + remaining = (data[0] << 8) + data[1] - 2; + if (global_opts.debug_level >= 1) { + printf(MYNAME ": Data Length: %d\n", remaining); + } + break; + + case st_ser_num: + if (global_opts.debug_level >= 1) { + printf(MYNAME ": Serial Number: %d\n", (data[0] << 8) + data[1]); + } + break; + + case st_pilot_name: + if (global_opts.debug_level >= 1) { + printf(MYNAME ": Pilot Name: %.25s\n", data); + } + break; + + case st_start_date: + i = (data[0] << 8) + data[1]; + tm.tm_mday = i / 100; + tm.tm_mon = (i % 100) - 1; + break; + + case st_start_year: + tm.tm_year = ((data[0] << 8) + data[1]) - 1900; + break; + + case st_max_alt_1: + if (global_opts.debug_level >= 1) { + printf(MYNAME ": Max Altitude 1: %dm\n", (data[0] << 8) + data[1]); + } + break; + + case st_max_alt_2: + if (global_opts.debug_level >= 1) { + printf(MYNAME ": Max Altitude 2: %dm\n", (data[0] << 8) + data[1]); + } + break; + + case st_max_climb: + if (global_opts.debug_level >= 1) { + i = (data[0] << 8) + data[1]; + printf(MYNAME ": Max climb: %d.%dm/s\n", i / 10, i % 10); + } + break; + + case st_flight_dur: + if (global_opts.debug_level >= 1) { + i = (data[0] << 8) + data[1]; + printf(MYNAME ": Flight Time: %d:%d\n", i / 100, i % 100); + } + break; + + case st_log_ival: + interval = data[0]; + if (global_opts.debug_level >= 1) { + printf(MYNAME ": Logging Interval: %ds\n", interval); + } + break; + + case st_start_time: + i = (data[0] << 8) + data[1]; + tm.tm_hour = i / 100; + tm.tm_min = (i % 100) - 1; + tm.tm_sec = 0; + creation = start = mktime(&tm); + if (global_opts.debug_level >= 1) { + printf(MYNAME ": Start Time: %s", ctime(&start)); + } + break; + + case st_end_time: + i = (data[0] << 8) + data[1]; + tm.tm_hour = i / 100; + tm.tm_min = (i % 100) - 1; + finish = mktime(&tm); + if (global_opts.debug_level >= 1) { + printf(MYNAME ": End Time: %s", ctime(&finish)); + } + if (remaining) { + track = new route_head; + track->rte_name = PRESTRKNAME; + track->rte_desc = "Brauniger-IQ Barograph"; + track_add_head(track); + } else { + warning(MYNAME ": No barograph recorded for this flight\n"); + } + break; + + case st_sample_alt: + wpt = new Waypoint; + wpt->latitude = wpt->longitude = 0.0; + wpt->SetCreationTime(creation); + creation += interval; + wpt->altitude = (data[0] << 8) + data[1]; + track_add_wpt(track, wpt); + if (global_opts.debug_level >= 2) { + printf(MYNAME ": remaining=%d, Altitude=%fm, ", remaining, wpt->altitude); + } + break; + + case st_sample_spd: + if (global_opts.debug_level >= 2) { + printf("Airspeed=%dkmh\n", data[0]); + } + state = st_sample_alt; + return remaining; + + default: + fatal(MYNAME ": Bad internal state\n"); + } + + // Iterating an enum isn't great and it's less greatr that reqd_byte[] is + // implicitly coupled to our state_t, but here we are with C code forged + // into C++. + state = static_cast (state + 1); + + return remaining; +} + +static void data_read() +{ + unsigned char ibuf[25]; + + if (global_opts.debug_level >= 0) { + puts(MYNAME ": Select recorded flight in memo mode."); + puts(MYNAME ": Press Memo button for two seconds..."); + } + + // Wait until something arrives + if (global_opts.debug_level >= 0) { + puts(MYNAME ": Downloading flight..."); + } + + // Read data until there is none left to read + state = st_sync; + for (;;) { + /* wait up to 5 seconds for more data */ + int rd_cnt = gbser_read_wait(serial_handle, ibuf, reqd_bytes[state], 5000); + if (rd_cnt < 0) { + fatal(MYNAME ": Serial error\n"); + } else if (rd_cnt < reqd_bytes[state]) { + fatal(MYNAME ": Incomplete download\n"); + } + + if (!process_data(ibuf)) { + if (global_opts.debug_level >= 0) { + puts(MYNAME " ...Finished"); + } + return; + } + } +} + +static QVector brauniger_iq_args = { +}; + +/* master process: don't convert anything */ + +ff_vecs_t brauniger_iq_vecs = { + ff_type_serial, + { ff_cap_none, ff_cap_read, ff_cap_none}, + rd_init, + nullptr, + rd_deinit, + nullptr, + data_read, + nullptr, + nullptr, + &brauniger_iq_args, + NULL_POS_OPS +}; diff --git a/vecs.cc b/vecs.cc index 24e36f474..d3b7053d8 100644 --- a/vecs.cc +++ b/vecs.cc @@ -79,7 +79,6 @@ extern ff_vecs_t tpg_vecs; extern ff_vecs_t tpo2_vecs; extern ff_vecs_t tpo3_vecs; extern ff_vecs_t gpl_vecs; -extern ff_vecs_t brauniger_iq_vecs; extern ff_vecs_t mtk_vecs; extern ff_vecs_t mtk_fvecs; extern ff_vecs_t mtk_m241_vecs; @@ -136,7 +135,6 @@ struct Vecs::Impl { TextFormat text_fmt; HtmlFormat html_fmt; IgcFormat igc_fmt; - LegacyFormat brauniger_iq_fmt {brauniger_iq_vecs}; LegacyFormat mtk_fmt {mtk_vecs}; LegacyFormat mtk_ffmt {mtk_fvecs}; LegacyFormat mtk_m241_fmt {mtk_m241_vecs};