T: make number of subframes per frame a configurable item

Think: NR with different number of slots per frame depending on mu.

The name 'subframes_per_frame' is a bit ambiguous. It is valid for LTE,
but for NR it should be 'slots_per_frame'.

For example, for sub-carrier spacing of 30KHz, we have 20 slots per
frame, so in this case subframes_per_frame = 20. In reality whatever
the numerology, there is always 10 subframes per frame in NR.

But how to name this variable which is used both for LTE and NR cases?
'subframes_or_slots_per_frame'? It's a bit long and also ambiguous.

Conclusion: no big deal I think. 'subframes_per_frame' and so be it.
This commit is contained in:
Cedric Roux
2025-08-18 11:53:54 +02:00
parent 138886ad5e
commit c4acec706d
7 changed files with 86 additions and 58 deletions
+1 -1
View File
@@ -16,7 +16,7 @@ logger *new_ticked_ttilog(void *event_handler, void *database,
int convert_to_dB, float empty_value);
logger *new_throughputlog(void *event_handler, void *database,
char *tick_event_name, char *frame_varname, char *subframe_varname,
char *event_name, char *data_varname);
char *event_name, char *data_varname, int subframes_per_frame);
logger *new_timelog(void *event_handler, void *database, char *event_name);
logger *new_ticklog(void *event_handler, void *database,
char *event_name, char *frame_name, char *subframe_name);
+9 -4
View File
@@ -19,7 +19,8 @@ struct throughputlog {
int data_arg;
int last_tick_frame;
int last_tick_subframe;
unsigned long bits[1000];
int subframes_per_frame;
unsigned long *bits;
unsigned long total;
int insert_point;
char *tick_event_name;
@@ -74,11 +75,11 @@ static void _tick_event(void *p, event e)
l->common.v[i]->append(l->common.v[i], frame, subframe, (double)l->total);
while (l->last_tick_frame != frame || l->last_tick_subframe != subframe) {
l->insert_point = (l->insert_point + 1) % 1000;
l->insert_point = (l->insert_point + 1) % (100 * l->subframes_per_frame);
l->total -= l->bits[l->insert_point];
l->bits[l->insert_point] = 0;
l->last_tick_subframe++;
if (l->last_tick_subframe == 10) {
if (l->last_tick_subframe == l->subframes_per_frame) {
l->last_tick_subframe = 0;
l->last_tick_frame++;
l->last_tick_frame %= 1024;
@@ -89,7 +90,7 @@ static void _tick_event(void *p, event e)
logger *new_throughputlog(event_handler *h, void *database,
char *tick_event_name, char *frame_varname, char *subframe_varname,
char *event_name, char *data_varname)
char *event_name, char *data_varname, int subframes_per_frame)
{
struct throughputlog *ret;
int event_id;
@@ -189,6 +190,10 @@ logger *new_throughputlog(event_handler *h, void *database,
abort();
}
ret->subframes_per_frame = subframes_per_frame;
ret->bits = calloc(100 * subframes_per_frame, sizeof(unsigned long));
if (ret->bits == NULL) abort();
return ret;
}