diff --git a/src/lower_mac/tetra_lower_mac.c b/src/lower_mac/tetra_lower_mac.c index 7b62bb4..d3ff54d 100644 --- a/src/lower_mac/tetra_lower_mac.c +++ b/src/lower_mac/tetra_lower_mac.c @@ -184,6 +184,57 @@ void tp_sap_udata_ind(enum tp_sap_data_type type, const uint8_t *bits, unsigned DEBUGP("%s %s type4: %s\n", tbp->name, time_str, osmo_ubit_dump(type4, tbp->type345_bits)); + +/* ###### Begin traffic dump patch ###### */ + + if ((type == TPSAP_T_SCH_F) && (tms->cur_burst.is_traffic)) { + printf("SAVING FRAME\n"); + char fname[200]; + int16_t block[690]; + FILE *f; + int i; + + /* Open target file */ + //snprintf(fname, 100, "traffic_%d_%d.out", tcd->time.tn, tms->cur_burst.is_traffic); + //snprintf(fname, 100, "traffic_%d.out", tcd->time.tn); + extern char *dumpdir; + snprintf(fname, 199, "%s/traffic_%d.out", dumpdir, 666 /*tms->cur_burst.is_traffic*/); + f = fopen(fname, "ab"); + + /* Generate a block */ + memset(block, 0x00, sizeof(int16_t) * 690); + for (i=0; i<6; i++) + block[115*i] = 0x6b21 + i; + + for (i=0; i<114; i++) + block[ 1+i] = type4[ i] ? -127 : 127; + + for (i=0; i<114; i++) + block[116+i] = type4[114+i] ? -127 : 127; + + for (i=0; i<114; i++) + block[231+i] = type4[228+i] ? -127 : 127; + + for (i=0; i<90; i++) + block[346+i] = type4[342+i] ? -127 : 127; + + /* Write it */ + fwrite(block, sizeof(int16_t), 690, f); + + /* Close */ + fclose(f); + memset(fname, 0x0, sizeof(char)*200); + //snprintf(fname, 199, "%s/traffic_%d.txt", dumpdir, tms->cur_burst.is_traffic); + /* Write used ssi */ + /*f=fopen(fname, "a"); + memset(fname, 0x0, sizeof(char)*200); + snprintf(fname, 199, "%d\n", ssi); + fwrite(fname, sizeof(char), strlen(fname), f); + fclose(f);*/ + } + + /* end traffic dump patch */ + if (tbp->interleave_a) { /* Run block deinterleaving: type-3 bits */ block_deinterleave(tbp->type345_bits, tbp->interleave_a, type4, type3); diff --git a/src/phy/tetra_burst_sync.c b/src/phy/tetra_burst_sync.c index ae210dc..5b3f734 100644 --- a/src/phy/tetra_burst_sync.c +++ b/src/phy/tetra_burst_sync.c @@ -24,7 +24,7 @@ #include -//#define DEBUG +#define DEBUG #include #include diff --git a/src/tetra-rx.c b/src/tetra-rx.c index b5136d8..bcc33e7 100644 --- a/src/tetra-rx.c +++ b/src/tetra-rx.c @@ -38,6 +38,7 @@ #define BUF_SIZE 256 void *tetra_tall_ctx; +char *dumpdir; static int process_sym_fl(float fl) @@ -109,6 +110,8 @@ int main(int argc, char **argv) exit(1); } + dumpdir=argv[2]; + tetra_gsmtap_init("localhost", 0); tms = talloc_zero(tetra_tall_ctx, struct tetra_mac_state); diff --git a/src/tetra_upper_mac.c b/src/tetra_upper_mac.c index fdc8c73..f93113e 100644 --- a/src/tetra_upper_mac.c +++ b/src/tetra_upper_mac.c @@ -240,11 +240,12 @@ static void rx_aach(struct tetra_tmvsap_prim *tmvp, struct tetra_mac_state *tms) printf("UL_USAGE: %s ", tetra_get_ul_usage_name(aad.ul_usage)); /* save the state whether the current burst is traffic or not */ - if (aad.dl_usage > 3) + if (aad.dl_usage > 3) { tms->cur_burst.is_traffic = 1; - else + tms->cur_burst.is_traffic = aad.dl_usage; + } else { tms->cur_burst.is_traffic = 0; - + } printf("\n"); }