diff --git a/src/dmr_block.c b/src/dmr_block.c index 02f91b1..7b2b32d 100644 --- a/src/dmr_block.c +++ b/src/dmr_block.c @@ -92,6 +92,10 @@ void dmr_dheader (dsd_opts * opts, dsd_state * state, uint8_t dheader[], uint32_ state->dmr_lrrp_source[slot] = (dheader[5] <<16 ) + (dheader[6] << 8) + dheader[7]; + //ROMAN! Uncomment this line + // if ( (state->data_header_format[slot] & 0xF ) != 0x1 && state->data_p_head[slot] == 0) + // sprintf (state->dmr_embedded_gps[slot], "IP DATA SRC [%d] DST [%d] ", (dheader[5] <<16 ) + (dheader[6] << 8) + dheader[7], (dheader[2] <<16 ) + (dheader[3] <<8 ) + dheader[4]); + } if (state->data_header_sap[slot] == 0x0 && state->data_p_head[slot] == 0) @@ -103,6 +107,10 @@ void dmr_dheader (dsd_opts * opts, dsd_state * state, uint8_t dheader[], uint32_ state->dmr_lrrp_source[slot] = (dheader[5] <<16 ) + (dheader[6] << 8) + dheader[7]; + //ROMAN! Uncomment this line + // if ( (state->data_header_format[slot] & 0xF ) != 0x1 && state->data_p_head[slot] == 0) + // sprintf (state->dmr_embedded_gps[slot], "UDT SRC [%d] DST [%d] ", (dheader[5] <<16 ) + (dheader[6] << 8) + dheader[7], (dheader[2] <<16 ) + (dheader[3] <<8 ) + dheader[4]); + } if (state->data_header_sap[slot] == 0x9 && state->data_p_head[slot] == 0) @@ -114,6 +122,9 @@ void dmr_dheader (dsd_opts * opts, dsd_state * state, uint8_t dheader[], uint32_ state->dmr_lrrp_source[slot] = (dheader[5] <<16 ) + (dheader[6] << 8) + dheader[7]; + //ROMAN! Uncomment this line + // sprintf (state->dmr_embedded_gps[slot], "P_HEAD SRC [%d] DST [%d] ", (dheader[5] <<16 ) + (dheader[6] << 8) + dheader[7], (dheader[2] <<16 ) + (dheader[3] <<8 ) + dheader[4]); + } if (state->data_header_sap[slot] == 0x2 && state->data_p_head[slot] == 0) @@ -125,6 +136,10 @@ void dmr_dheader (dsd_opts * opts, dsd_state * state, uint8_t dheader[], uint32_ state->dmr_lrrp_source[slot] = dheader[3]; + //ROMAN! Uncomment this line + // if ( (state->data_header_format[slot] & 0xF ) != 0x1 && state->data_p_head[slot] == 0) + // sprintf (state->dmr_embedded_gps[slot], "IPC SRC [%d] DST [%d] ", dheader[3], dheader[2]); + } if (state->data_header_sap[slot] == 0x3 && state->data_p_head[slot] == 0) @@ -136,6 +151,10 @@ void dmr_dheader (dsd_opts * opts, dsd_state * state, uint8_t dheader[], uint32_ state->dmr_lrrp_source[slot] = dheader[3]; + //ROMAN! Uncomment this line + // if ( (state->data_header_format[slot] & 0xF ) != 0x1 && state->data_p_head[slot] == 0) + // sprintf (state->dmr_embedded_gps[slot], "UDP SRC [%d] DST [%d] ", dheader[3], dheader[2]); + } if (state->data_header_sap[slot] == 0x5 && state->data_p_head[slot] == 0) @@ -149,6 +168,10 @@ void dmr_dheader (dsd_opts * opts, dsd_state * state, uint8_t dheader[], uint32_ fprintf (stderr, "[%d]", (dheader[5] <<16 ) + (dheader[6] << 8) + dheader[7] ); fprintf (stderr, " Destination: "); fprintf (stderr, "[%d]", (dheader[2] <<16 ) + (dheader[3] <<8 ) + dheader[4] ); + + //ROMAN! Uncomment this line + // sprintf (state->dmr_embedded_gps[slot], "SD-D SRC [%d] DST [%d] ", (dheader[5] <<16 ) + (dheader[6] << 8) + dheader[7], (dheader[2] <<16 ) + (dheader[3] <<8 ) + dheader[4]); + } if ( (state->data_header_format[slot] & 0xF) == 0xE && state->data_p_head[slot] == 0) @@ -157,6 +180,10 @@ void dmr_dheader (dsd_opts * opts, dsd_state * state, uint8_t dheader[], uint32_ fprintf (stderr, "[%d]", (dheader[5] <<16 ) + (dheader[6] << 8) + dheader[7] ); fprintf (stderr, " Destination: "); fprintf (stderr, "[%d]", (dheader[2] <<16 ) + (dheader[3] <<8 ) + dheader[4] ); + + //ROMAN! Uncomment this line + // sprintf (state->dmr_embedded_gps[slot], "SD-R/P SRC [%d] DST [%d] ", (dheader[5] <<16 ) + (dheader[6] << 8) + dheader[7], (dheader[2] <<16 ) + (dheader[3] <<8 ) + dheader[4]); + } if ( (state->data_header_format[slot] & 0xF ) == 0x1 && state->data_p_head[slot] == 0) @@ -165,15 +192,15 @@ void dmr_dheader (dsd_opts * opts, dsd_state * state, uint8_t dheader[], uint32_ fprintf (stderr, "[%d]", (dheader[5] <<16 ) + (dheader[6] << 8) + dheader[7] ); fprintf (stderr, " Destination: "); fprintf (stderr, "[%d]", (dheader[2] <<16 ) + (dheader[3] <<8 ) + dheader[4] ); + + //ROMAN! Uncomment these lines + // char rsp[90]; + // sprintf (rsp, " - RSP SRC [%d] DST [%d] ", (dheader[5] <<16 ) + (dheader[6] << 8) + dheader[7], (dheader[2] <<16 ) + (dheader[3] <<8 ) + dheader[4]); + // strcat (state->dmr_embedded_gps[slot], rsp); + } - if ( (state->data_header_format[slot] & 0xF ) == 0x0 && state->data_p_head[slot] == 0) - { - fprintf (stderr, "\n Unified Data Transport - Source: "); - fprintf (stderr, "[%d]", (dheader[5] <<16 ) + (dheader[6] << 8) + dheader[7] ); - fprintf (stderr, " Destination: "); - fprintf (stderr, "[%d]", (dheader[2] <<16 ) + (dheader[3] <<8 ) + dheader[4] ); - } + //Removed Dup UDT Message if ( (state->data_header_format[slot] & 0x40) == 0x40 && state->data_p_head[slot] == 0) //check response req bit { @@ -182,6 +209,12 @@ void dmr_dheader (dsd_opts * opts, dsd_state * state, uint8_t dheader[], uint32_ fprintf (stderr, " [%d]", (dheader[2] <<16 ) + (dheader[3] << 8) + dheader[4] ); fprintf (stderr, " Destination:"); fprintf (stderr, " [%d]", (dheader[5] <<16 ) + (dheader[6] <<8 ) + dheader[7] ); + + //ROMAN! Uncomment these lines + // char rsp[90]; + // sprintf (rsp, "- RSP REQ "); + // strcat (state->dmr_embedded_gps[slot], rsp); + } //if proprietary header was flagged by the last data header, then process data differently diff --git a/src/dmr_pdu.c b/src/dmr_pdu.c index 64b8c0d..18f314f 100644 --- a/src/dmr_pdu.c +++ b/src/dmr_pdu.c @@ -369,12 +369,18 @@ uint8_t dmr_lrrp (dsd_opts * opts, dsd_state * state, uint8_t block_len, uint8_t //save to array for ncurses if (!source) source = state->dmr_lrrp_source[state->currentslot]; char sign[8]; + char velstr[20]; + char degstr[20]; + char lrrpstr[100]; + sprintf (lrrpstr, "%s", ""); + sprintf (velstr, "%s", ""); + sprintf (degstr, "%s", ""); if (lat_sign) sprintf (sign, "%s", "-"); else sprintf (sign, "%s", ""); - if (lat) - { - sprintf (state->dmr_embedded_gps[slot], "LRRP %08d (%s%lf, %lf)", source, sign, (double)lat * lat_unit, (double)lon * lon_unit); - } + if (lat) sprintf (lrrpstr, "LRRP %0d (%s%lf, %lf)", source, sign, (double)lat * lat_unit, (double)lon * lon_unit); + if (vel_set) sprintf (velstr, " %.4lf km/h", velocity * 3.6); + if (deg_set) sprintf (degstr, " %d deg", degrees); + sprintf (state->dmr_embedded_gps[slot], "%s%s%s", lrrpstr, velstr, degstr); }