diff --git a/src/dsd_main.c b/src/dsd_main.c index 40970dc..983a3cd 100644 --- a/src/dsd_main.c +++ b/src/dsd_main.c @@ -51,8 +51,8 @@ char * FM_banner[9] = { " ██╔══██╗██╔════╝██╔══██╗ ███║ ╚════██║", " ██║ ██║╚█████╗ ██║ ██║ Lima ███║ ███╔═╝", " ██║ ██║ ╚═══██╗██║ ██║ Zulu ███║ ██╔══╝ ", - " ██████╔╝██████╔╝██████╔╝ Edition III ████████╗███████╗", - " ╚═════╝ ╚═════╝ ╚═════╝ Windows 32-bit╚═══════╝╚══════╝", + " ██████╔╝██████╔╝██████╔╝ Edition IV ████████╗███████╗", + " ╚═════╝ ╚═════╝ ╚═════╝ ╚═══════╝╚══════╝", " " }; #else @@ -93,14 +93,18 @@ noCarrier (dsd_opts * opts, dsd_state * state) //only do it here on the tweaks #ifdef LIMAZULUTWEAKS state->nxdn_last_ran = -1; + state->nxdn_last_rid = 0; + state->nxdn_last_tg = 0; #endif //experimental conventional frequency scanner mode if (opts->scanner_mode == 1 && ( (time(NULL) - state->last_cc_sync_time) > opts->trunk_hangtime)) { - //always do this one -- makes sense during scanning + //always do these -- makes sense during scanning state->nxdn_last_ran = -1; + state->nxdn_last_rid = 0; + state->nxdn_last_tg = 0; if (state->lcn_freq_roll >= state->lcn_freq_count) { @@ -550,6 +554,9 @@ initOpts (dsd_opts * opts) opts->use_ncurses_terminal = 0; opts->ncurses_compact = 0; opts->ncurses_history = 1; + #ifdef LIMAZULUTWEAKS + opts->ncurses_compact = 1; + #endif opts->payload = 0; opts->inverted_dpmr = 0; opts->dmr_mono = 0; @@ -1326,13 +1333,17 @@ main (int argc, char **argv) char versionstr[25]; mbe_printVersion (versionstr); + #ifdef LIMAZULUTWEAKS + fprintf (stderr," Digital Speech Decoder: LimaZulu Edition IV\n"); + #else fprintf (stderr," Digital Speech Decoder: Florida Man Edition\n"); + #endif for (short int i = 1; i < 7; i++) { fprintf (stderr,"%s\n", FM_banner[i]); } - fprintf (stderr, "Github Build Version: %s \n", GIT_TAG); - fprintf (stderr,"MBElib version %s\n", versionstr); + fprintf (stderr, "Build Version: %s \n", GIT_TAG); + fprintf (stderr,"MBElib Version: %s\n", versionstr); initOpts (&opts); initState (&state); diff --git a/src/dsd_ncurses.c b/src/dsd_ncurses.c index cf8c1b7..1d8f03e 100644 --- a/src/dsd_ncurses.c +++ b/src/dsd_ncurses.c @@ -41,19 +41,6 @@ int i = 0; char versionstr[25]; unsigned long long int call_matrix[33][6]; -#ifdef LIMAZULUTWEAKS -char * FM_bannerN[9] = { - " ", - " ██████╗ ██████╗██████╗ ███╗ ███████╗", - " ██╔══██╗██╔════╝██╔══██╗ ███║ ╚════██║", - " ██║ ██║╚█████╗ ██║ ██║ ███║ ███╔═╝", - " ██║ ██║ ╚═══██╗██║ ██║ Lima ███║ ██╔══╝ ", - " ██████╔╝██████╔╝██████╔╝ Zulu ████████╗███████╗", - " ╚═════╝ ╚═════╝ ╚═════╝ Edition III ╚═══════╝╚══════╝", - " ", - " " -}; -#else char * FM_bannerN[9] = { " ", " ██████╗ ██████╗██████╗    ███████╗███╗ ███╗███████╗ ", @@ -65,8 +52,6 @@ char * FM_bannerN[9] = { " ", " " }; -#endif - char * SyncTypes[44] = { "P25P1", @@ -2073,14 +2058,23 @@ ncursesPrinter (dsd_opts * opts, dsd_state * state) if (opts->ncurses_compact == 1) { printw ("------------------------------------------------------------------------------\n"); - printw ("| Digital Speech Decoder: Florida Man Edition - Aero %s \n", GIT_TAG); - // printw ("| Digital Speech Decoder: Florida Man Edition - zDEV %s \n", "v2.0.0-100-gae58fab Win32"); + // printw ("| Digital Speech Decoder: Florida Man Edition - Aero %s \n", GIT_TAG); + printw ("| Digital Speech Decoder: Florida Man Edition - Aero %s \n", "v2.0.1-6 Win32"); + printw ("------------------------------------------------------------------------------\n"); + } +#elif LIMAZULUTWEAKS + if (opts->ncurses_compact == 1) + { + printw ("------------------------------------------------------------------------------\n"); + printw ("| Digital Speech Decoder: LimaZulu Edition IV: The Voyage Home \n"); + printw ("------------------------------------------------------------------------------\n"); } #else if (opts->ncurses_compact == 1) { printw ("------------------------------------------------------------------------------\n"); printw ("| Digital Speech Decoder: Florida Man Edition - zDEV %s \n", GIT_TAG); + printw ("------------------------------------------------------------------------------\n"); } #endif if (opts->ncurses_compact == 0) @@ -2106,6 +2100,9 @@ ncursesPrinter (dsd_opts * opts, dsd_state * state) attron(COLOR_PAIR(4)); } + //fix color/pair issue when compact and trunking enabled + if (opts->ncurses_compact == 1 && opts->p25_trunk == 1) attron(COLOR_PAIR(4)); + printw ("--Input Output----------------------------------------------------------------\n"); if (opts->audio_in_type == 0) { @@ -3119,6 +3116,25 @@ ncursesPrinter (dsd_opts * opts, dsd_state * state) printw ("DCC [%02lld] ", call_matrix[9-j][4]); } + #ifdef LIMAZULUTWEAKS + //Group Name Labels from CSV import + for (int k = 0; k < state->group_tally; k++) + { + if (state->group_array[k].groupNumber == call_matrix[9-j][1]) + { + attron(COLOR_PAIR(4)); + printw ("[%s]", state->group_array[k].groupName); + printw ("[%s] ", state->group_array[k].groupMode); + } + else if (state->group_array[k].groupNumber == call_matrix[9-j][2]) + { + attron(COLOR_PAIR(4)); + printw ("[%s]", state->group_array[k].groupName); + printw ("[%s] ", state->group_array[k].groupMode); + } + } + #endif + printw ("%s ", getDateC(call_matrix[9-j][5]) ); //You're welcome printw ("%s \n", getTimeC(call_matrix[9-j][5]) ); //Remus } diff --git a/src/nxdn_element.c b/src/nxdn_element.c index 383faae..4906006 100644 --- a/src/nxdn_element.c +++ b/src/nxdn_element.c @@ -1129,56 +1129,9 @@ void NXDN_decode_VCALL(dsd_opts * opts, dsd_state * state, uint8_t * Message) if (state->rkey_array[KeyID] != 0) state->R = state->rkey_array[KeyID]; else if (state->rkey_array[DestinationID] != 0) state->R = state->rkey_array[DestinationID]; -// #ifdef LIMAZULUTWEAKS - -// //LimaZulu specific tweak, load keys from frequency value, if avalable -- untested - -// long int freq = 0; -// uint8_t hash_bits[24]; -// memset (hash_bits, 0, sizeof(hash_bits)); -// uint16_t limazulu = 0; - -// //if not available, then poll rigctl if its available -// if (opts->use_rigctl == 1) -// freq = GetCurrentFreq (opts->rigctl_sockfd); - -// //if using rtl input, we can ask for the current frequency tuned -// else if (opts->audio_in_type == 3) -// freq = (long int)opts->rtlsdr_center_freq; - -// //freq = 167831250; //hardset for testing - -// //since a frequency value will be larger than the 16-bit max, we need to hash it first -// //the hash has to be run the same way as the import, so at a 24-bit depth, which hopefully -// //will not lead to any duplicate key loads due to multiple CRC16 collisions on a larger value? -// for (int i = 0; i < 24; i++) -// hash_bits[i] = ((freq << i) & 0x800000) >> 23; //load into array for CRC16 - -// if (freq) limazulu = ComputeCrcCCITT16d (hash_bits, 24); -// limazulu = limazulu & 0xFFFF; //make sure no larger than 16-bits - -// fprintf (stderr, "%s", KCYN); -// if (freq) fprintf (stderr, "\n Freq: %ld - Freq Hash: %d", freq, limazulu); -// if (state->rkey_array[limazulu] != 0) fprintf (stderr, " - Key Loaded: %lld", state->rkey_array[limazulu]); -// fprintf (stderr, "%s", KNRM); - -// if (state->rkey_array[limazulu] != 0) -// state->R = state->rkey_array[limazulu]; - -// #endif //end LIMAZULUTWEAKS - //Don't zero key if no keyloader if (CipherType != 0x1 && state->keyloader == 1) state->R = 0; - //NOTE: Broadcast Call appears to have values that aren't typical for VCALL, - //so not applying any settings below if CallType == 0 (BC Call) - - //NOTE: Above note may be in error; its possible that the issues I was having - //was from not resetting the entire SACCH superframe after reading it, and - //the samples in question having interwoven ALIAS and VCALL, and bad settings - //coming from a missed SF Part of Frame, if not reset, we could skip a SF POF - //and still believe we have a good decode -- will need further testing #118 - /* Print the "Cipher Type" */ if(CipherType != 0 && MessageType == 0x1) {