Channel sounding parameters

Hi,

I’m trying to understand the following parameters in the nRF54L15 channel sounding configuration, because their function is not clear to me. I added my questions as comments to the code:

Everything i srelated to this: BLE CS specification

struct bt_le_cs_create_config_params config_params = {
	// I think T_FCS steps are repeated, but I don't understand what this parameter does and how important it is to set. What exactly does main_mode_repetition control?
	.main_mode_repetition = 0,
	// Does this mean the measurement is repeated 3 times for each channel?
	.channel_map_repetition = 3,
};

And in the other structure:

Here I only understand how to set the length of the whole procedure, but:

  • Where can I set how many events and subevents are used in one procedure?

  • Is the number of events and subevents always calculated automatically by BLE?

const struct bt_le_cs_set_procedure_parameters_param procedure_params = {
	.config_id = CS_CONFIG_ID,
	// This sets the total procedure length, so 800 * 0.625 ms = 500 ms
	.max_procedure_len = 800,
	// Interval between procedures, 10 = 6.25 ms
	.min_procedure_interval = 10,
	.max_procedure_interval = 30,
	// Here, do these values set the time limits for each subevent? 
	// Does BLE then automatically decide how many subevents fit into the procedure?
	// I assume subevent length (50-60 ms) decides how many subevents will fit, but where can I set the number of events?
	.min_subevent_len = 50000,
	.max_subevent_len = 60000,
};

One last thing I don’t understand - how many RF channels will be used for the channel sounding measurement?
Should I set this explicitly, for example by using bt_le_cs_set_valid_chmap_bits, or is the channel map always chosen automatically in the background?

Example of what I’m trying to achieve:

  • I set the procedure length to 500 ms.

  • Under this, there will be 1-N events (I don’t know how many, is this calculated automatically?)

  • Each event is divided into subevents (length 50-60 ms), and T_FCS steps per subevent will depend on how many fit?, and on the main/sub mode settings. Is this understanding correct?

I understand that my questions may not be easy to understand, but at least a closer explanation would be good.

Thank you, Jan

  • What I do not understand also:

    I set max_procedure_len to 100 ms and min_procedure_interval to 1000 ms. I also set continuous measurement (max_procedure_count = 0). But in the log, the CS result has a period of 210 ms. Should not the period of the procedures be 1000ms + up to100 ms?

    Also, for the maximum procedure length (100 ms), I set min_subevent_len to 500 ms. I expected, for example, a problem during compilation - that the parameter is invalid. Or can I set the subevent to be longer than the procedure?

    Thank you.

Related