Hello community, here is the log from the commit of package multimon-ng for openSUSE:Factory checked in at 2019-01-21 10:57:21 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/multimon-ng (Old) and /work/SRC/openSUSE:Factory/.multimon-ng.new.28833 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "multimon-ng" Mon Jan 21 10:57:21 2019 rev:6 rq:666406 version:1.1.7+git.20190115 Changes: -------- --- /work/SRC/openSUSE:Factory/multimon-ng/multimon-ng.changes 2018-11-19 23:32:38.775145403 +0100 +++ /work/SRC/openSUSE:Factory/.multimon-ng.new.28833/multimon-ng.changes 2019-01-21 10:57:45.707477555 +0100 @@ -1,0 +2,9 @@ +Tue Jan 15 23:23:11 UTC 2019 - [email protected] + +- Update to version 1.1.7+git.20190115: + * version 1.1.7 + * Fix typo + * Fix frament idetification + * Add a charset option for POCSAG demodulators + +------------------------------------------------------------------- Old: ---- multimon-ng-1.1.6+git.20181017.tar.xz New: ---- multimon-ng-1.1.7+git.20190115.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ multimon-ng.spec ++++++ --- /var/tmp/diff_new_pack.quBcmL/_old 2019-01-21 10:57:46.399476650 +0100 +++ /var/tmp/diff_new_pack.quBcmL/_new 2019-01-21 10:57:46.407476640 +0100 @@ -1,7 +1,7 @@ # # spec file for package multimon-ng # -# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # Copyright (c) 2017, Martin Hauke <[email protected]> # # All modifications and additions to the file contributed by third parties @@ -13,12 +13,12 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# Please submit bugfixes or comments via http://bugs.opensuse.org/ # Name: multimon-ng -Version: 1.1.6+git.20181017 +Version: 1.1.7+git.20190115 Release: 0 Summary: A fork of multimon that decodes multiple digital transmission modes License: GPL-2.0-only ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.quBcmL/_old 2019-01-21 10:57:46.447476588 +0100 +++ /var/tmp/diff_new_pack.quBcmL/_new 2019-01-21 10:57:46.447476588 +0100 @@ -1,4 +1,4 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/EliasOenal/multimon-ng.git</param> - <param name="changesrevision">46c3b0a88fd58642e0350af7cc5d4e56aec89d13</param></service></servicedata> \ No newline at end of file + <param name="changesrevision">b9bd39addca40f2f395f25d3342eacc59a192afb</param></service></servicedata> \ No newline at end of file ++++++ multimon-ng-1.1.6+git.20181017.tar.xz -> multimon-ng-1.1.7+git.20190115.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/multimon-ng-1.1.6+git.20181017/CMakeLists.txt new/multimon-ng-1.1.7+git.20190115/CMakeLists.txt --- old/multimon-ng-1.1.6+git.20181017/CMakeLists.txt 2018-10-17 13:38:23.000000000 +0200 +++ new/multimon-ng-1.1.7+git.20190115/CMakeLists.txt 2019-01-16 00:15:24.000000000 +0100 @@ -11,10 +11,10 @@ endif( NOT WIN32 ) set( TARGET "${PROJECT_NAME}" ) -set( VERSION "1.1.6" ) +set( VERSION "1.1.7" ) set( MAJOR "1" ) set( MINOR "1" ) -set( PATCH "6" ) +set( PATCH "7" ) set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra" ) if( WIN32 ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/multimon-ng-1.1.6+git.20181017/demod_flex.c new/multimon-ng-1.1.7+git.20190115/demod_flex.c --- old/multimon-ng-1.1.6+git.20181017/demod_flex.c 2018-10-17 13:38:23.000000000 +0200 +++ new/multimon-ng-1.1.7+git.20190115/demod_flex.c 2019-01-16 00:15:24.000000000 +0100 @@ -22,6 +22,9 @@ * Boston, MA 02110-1301, USA. */ /* + * Version 0.9.1v (10 Jan 2019) + * Modification (to this file) made by Rob0101 + * Fixed marking messages with K,F,C - One case had a 'C' marked as a 'K' * Version 0.9.0v (22 May 2018) * Modification (to this file) made by Bruce Quinton ([email protected]) * - Addded Define at top of file to modify the way missed group messages are reported in the debug output (default is 1; report missed capcodes on the same line) @@ -512,14 +515,15 @@ // char buf[1024], *message; char message[1024]; int currentChar = 0; - char frag_flag = 'K'; + char frag_flag = '?'; int frag = (phaseptr[mw1] >> 11) & 0x03; - int cont = ( phaseptr[mw1] >> 0x0A ) & 0x01; + int cont = (phaseptr[mw1] >> 0x0A) & 0x01; - if (cont == 1) frag_flag = 'F'; - if (cont == 0 && frag == 0) frag_flag = 'C'; - + if (cont == 0 && frag == 3) frag_flag = 'K'; // complete, ready to send + if (cont == 0 && frag != 3) frag_flag = 'C'; // incomplete until appended to 1 or more 'F's + if (cont == 1 ) frag_flag = 'F'; // incomplete until a 'C' fragment is appended + mw1++; for (i = mw1; i <= mw2; i++) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/multimon-ng-1.1.6+git.20181017/pocsag.c new/multimon-ng-1.1.7+git.20190115/pocsag.c --- old/multimon-ng-1.1.6+git.20181017/pocsag.c 2018-10-17 13:38:23.000000000 +0200 +++ new/multimon-ng-1.1.7+git.20190115/pocsag.c 2019-01-16 00:15:24.000000000 +0100 @@ -125,94 +125,237 @@ } /* ---------------------------------------------------------------------- */ + // ISO 646 national variant: US / IRV (1991) + char *trtab[128] = { + "<NUL>", // 0x0 + "<SOH>", // 0x1 + "<STX>", // 0x2 + "<ETX>", // 0x3 + "<EOT>", // 0x4 + "<ENQ>", // 0x5 + "<ACK>", // 0x6 + "<BEL>", // 0x7 + "<BS>", // 0x8 + "<HT>", // 0x9 + "<LF>", // 0xa + "<VT>", // 0xb + "<FF>", // 0xc + "<CR>", // 0xd + "<SO>", // 0xe + "<SI>", // 0xf + "<DLE>", // 0x10 + "<DC1>", // 0x11 + "<DC2>", // 0x12 + "<DC3>", // 0x13 + "<DC4>", // 0x14 + "<NAK>", // 0x15 + "<SYN>", // 0x16 + "<ETB>", // 0x17 + "<CAN>", // 0x18 + "<EM>", // 0x19 + "<SUB>", // 0x1a + "<ESC>", // 0x1b + "<FS>", // 0x1c + "<GS>", // 0x1d + "<RS>", // 0x1e + "<US>", // 0x1f + " ", // 0x20 + "!", // 0x21 + "\"", // 0x22 + + // national variant + "#", // 0x23 + "$", // 0x24 + + "%", // 0x25 + "&", // 0x26 + "'", // 0x27 + "(", // 0x28 + ")", // 0x29 + "*", // 0x2a + "+", // 0x2b + ",", // 0x2c + "-", // 0x2d + ".", // 0x2e + "/", // 0x2f + "0", // 0x30 + "1", // 0x31 + "2", // 0x32 + "3", // 0x33 + "4", // 0x34 + "5", // 0x35 + "6", // 0x36 + "7", // 0x37 + "8", // 0x38 + "9", // 0x39 + ":", // 0x3a + ";", // 0x3b + "<", // 0x3c + "=", // 0x3d + ">", // 0x3e + "?", // 0x3f + "@", // 0x40 + "A", // 0x41 + "B", // 0x42 + "C", // 0x43 + "D", // 0x44 + "E", // 0x45 + "F", // 0x46 + "G", // 0x47 + "H", // 0x48 + "I", // 0x49 + "J", // 0x4a + "K", // 0x4b + "L", // 0x4c + "M", // 0x4d + "N", // 0x4e + "O", // 0x4f + "P", // 0x50 + "Q", // 0x51 + "R", // 0x52 + "S", // 0x53 + "T", // 0x54 + "U", // 0x55 + "V", // 0x56 + "W", // 0x57 + "X", // 0x58 + "Y", // 0x59 + "Z", // 0x5a + + // national variant + "[", // 0x5b + "\\", // 0x5c + "]", // 0x5d + "^", // 0x5e + + "_", // 0x5f + + // national variant + "`", // 0x60 + + "a", // 0x61 + "b", // 0x62 + "c", // 0x63 + "d", // 0x64 + "e", // 0x65 + "f", // 0x66 + "g", // 0x67 + "h", // 0x68 + "i", // 0x69 + "j", // 0x6a + "k", // 0x6b + "l", // 0x6c + "m", // 0x6d + "n", // 0x6e + "o", // 0x6f + "p", // 0x70 + "q", // 0x71 + "r", // 0x72 + "s", // 0x73 + "t", // 0x74 + "u", // 0x75 + "v", // 0x76 + "w", // 0x77 + "x", // 0x78 + "y", // 0x79 + "z", // 0x7a + + // national variant + "{", // 0x7b + "|", // 0x7c + "}", // 0x7d + "~", // 0x7e + + "<DEL>" // 0x7f + }; + + +/* + // national variant + "#", // 0x23 + "$", // 0x24 + + "[", // 0x5b + "\\", // 0x5c + "]", // 0x5d + "^", // 0x5e + + "`", // 0x60 + + "{", // 0x7b + "|", // 0x7c + "}", // 0x7d + "~", // 0x7e +*/ + +bool pocsag_init_charset(char *charset) +{ + if(strcmp(charset,"DE")==0) // German charset + { + #ifdef CHARSET_UTF8 + trtab[0x5b] = "Ä"; + trtab[0x5c] = "Ö"; + trtab[0x5d] = "Ü"; + + trtab[0x7b] = "ä"; + trtab[0x7c] = "ö"; + trtab[0x7d] = "ü"; + trtab[0x7e] = "ß"; + #elif defined CHARSET_LATIN1 + trtab[0x5b] = "\304"; + trtab[0x5c] = "\326"; + trtab[0x5d] = "\334"; + + trtab[0x7b] = "\344"; + trtab[0x7c] = "\366"; + trtab[0x7d] = "\374"; + trtab[0x7e] = "\337"; + #else + trtab[0x5b] = "AE"; + trtab[0x5c] = "OE"; + trtab[0x5d] = "UE"; + + trtab[0x7b] = "ae"; + trtab[0x7c] = "oe"; + trtab[0x7d] = "ue"; + trtab[0x7e] = "ss"; + #endif + } + else if (strcmp(charset,"FR")==0) // French charset + { + trtab[0x24] = "£"; + + trtab[0x40] = "à"; + + trtab[0x5b] = "°"; + trtab[0x5c] = "ç"; + trtab[0x5d] = "§"; + trtab[0x5e] = "^"; + trtab[0x5f] = "_"; + trtab[0x60] = "µ"; + + trtab[0x7b] = "é"; + trtab[0x7c] = "ù"; + trtab[0x7d] = "è"; + trtab[0x7e] = "¨"; + } + else if (strcmp(charset,"US")==0) // US charset + { + // default + } + else + { + fprintf(stderr, "Error: invalid POCSAG charset %s\n", charset); + fprintf(stderr, "Use: US,FR,DE\n"); + charset = "US"; + return false; + } + return true; +} static char *translate_alpha(unsigned char chr) { - static const struct trtab { - unsigned char code; - char *str; - } trtab[] = {{ 0, "<NUL>" }, - { 1, "<SOH>" }, - { 2, "<STX>" }, - { 3, "<ETX>" }, - { 4, "<EOT>" }, - { 5, "<ENQ>" }, - { 6, "<ACK>" }, - { 7, "<BEL>" }, - { 8, "<BS>" }, - { 9, "<HT>" }, - { 10, "<LF>" }, - { 11, "<VT>" }, - { 12, "<FF>" }, - { 13, "<CR>" }, - { 14, "<SO>" }, - { 15, "<SI>" }, - { 16, "<DLE>" }, - { 17, "<DC1>" }, - { 18, "<DC2>" }, - { 19, "<DC3>" }, - { 20, "<DC4>" }, - { 21, "<NAK>" }, - { 22, "<SYN>" }, - { 23, "<ETB>" }, - { 24, "<CAN>" }, - { 25, "<EM>" }, - { 26, "<SUB>" }, - { 27, "<ESC>" }, - { 28, "<FS>" }, - { 29, "<GS>" }, - { 30, "<RS>" }, - { 31, "<US>" }, - #ifdef CHARSET_LATIN1 - { 0x5b, "\304" }, /* upper case A dieresis */ - { 0x5c, "\326" }, /* upper case O dieresis */ - { 0x5d, "\334" }, /* upper case U dieresis */ - { 0x7b, "\344" }, /* lower case a dieresis */ - { 0x7c, "\366" }, /* lower case o dieresis */ - { 0x7d, "\374" }, /* lower case u dieresis */ - { 0x7e, "\337" }, /* sharp s */ - #elif defined CHARSET_UTF8 - { 0x5b, "Ä" }, /* upper case A dieresis */ - { 0x5c, "Ö" }, /* upper case O dieresis */ - { 0x5d, "Ü" }, /* upper case U dieresis */ - { 0x7b, "ä" }, /* lower case a dieresis */ - { 0x7c, "ö" }, /* lower case o dieresis */ - { 0x7d, "ü" }, /* lower case u dieresis */ - { 0x7e, "ß" }, /* sharp s */ - #else - { 0x5b, "AE" }, /* upper case A dieresis */ - { 0x5c, "OE" }, /* upper case O dieresis */ - { 0x5d, "UE" }, /* upper case U dieresis */ - { 0x7b, "ae" }, /* lower case a dieresis */ - { 0x7c, "oe" }, /* lower case o dieresis */ - { 0x7d, "ue" }, /* lower case u dieresis */ - { 0x7e, "ss" }, /* sharp s */ - #endif - { 127, "<DEL>" }}; - - int min = 0, max = (sizeof(trtab) / sizeof(trtab[0])) - 1; - - /* - * binary search, list must be ordered! - */ - for (;;) { - int mid = (min+max) >> 1; - const struct trtab *tb = trtab + mid; - int cmp = ((int) tb->code) - ((int) chr); - - if (!cmp) - return tb->str; - if (cmp < 0) { - min = mid+1; - if (min > max) - return NULL; - } - if (cmp > 0) { - max = mid-1; - if (max < min) - return NULL; - } - } + return trtab[chr & 0x7f]; } /* ---------------------------------------------------------------------- */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/multimon-ng-1.1.6+git.20181017/unixinput.c new/multimon-ng-1.1.7+git.20190115/unixinput.c --- old/multimon-ng-1.1.6+git.20181017/unixinput.c 2018-10-17 13:38:23.000000000 +0200 +++ new/multimon-ng-1.1.7+git.20190115/unixinput.c 2019-01-16 00:15:24.000000000 +0100 @@ -4,7 +4,7 @@ * Copyright (C) 1996 * Thomas Sailer ([email protected], [email protected]) * - * Copyright (C) 2012-2018 + * Copyright (C) 2012-2019 * Elias Oenal ([email protected]) * * This program is free software; you can redistribute it and/or modify @@ -97,6 +97,7 @@ extern int pocsag_show_partial_decodes; extern int pocsag_heuristic_pruning; extern int pocsag_prune_empty; +extern bool pocsag_init_charset(char *charset); extern int aprs_mode; extern int cw_dit_length; @@ -580,6 +581,7 @@ " (<mode> can be 'numeric', 'alpha' and 'skyper')\n" " -b <level> : POCSAG: BCH bit error correction level. Set 0 to disable, default is 2.\n" " Lower levels increase performance and lower false positives.\n" + " -C <cs> : POCSAG: Set Charset.\n" " -o : CW: Set threshold for dit detection (default: 500)\n" " -d : CW: Dit length in ms (default: 50)\n" " -g : CW: Gap length in ms (default: 50)\n" @@ -607,10 +609,11 @@ { {"timestamp", no_argument, ×tamp, 1}, {"label", required_argument, NULL, 'l'}, + {"charset", required_argument, NULL, 'C'}, {0, 0, 0, 0} }; - while ((c = getopt_long(argc, argv, "t:a:s:v:b:f:g:d:o:cqhAmrxynipeu", long_options, NULL)) != EOF) { + while ((c = getopt_long(argc, argv, "t:a:s:v:b:f:g:d:o:cqhAmrxynipeuC:", long_options, NULL)) != EOF) { switch (c) { case 'h': case '?': @@ -730,6 +733,11 @@ }else fprintf(stderr, "a POCSAG mode has already been selected!\n"); break; + case 'C': + if (!pocsag_init_charset(optarg)) + errflg++; + break; + case 'n': dont_flush = true; break; @@ -769,6 +777,7 @@ case 'y': cw_disable_auto_timing = true; break; + case 'l': label = optarg; break; @@ -778,9 +787,9 @@ if ( !quietflg ) { // pay heed to the quietflg - fprintf(stderr, "multimon-ng 1.1.6\n" + fprintf(stderr, "multimon-ng 1.1.7\n" " (C) 1996/1997 by Tom Sailer HB9JNX/AE4WA\n" - " (C) 2012-2018 by Elias Oenal\n" + " (C) 2012-2019 by Elias Oenal\n" "Available demodulators:"); for (i = 0; (unsigned int) i < NUMDEMOD; i++) { fprintf(stderr, " %s", dem[i]->name);
