Trigger GPIO beam control only when beam changes
This commit is contained in:
committed by
Robert Schmidt
parent
3d03e522d3
commit
e38b2433df
+10
-15
@@ -779,24 +779,19 @@ void tx_rf(RU_t *ru,int frame,int slot, uint64_t timestamp) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (fp->freq_range==nr_FR2) {
|
if (fp->freq_range==nr_FR2) {
|
||||||
// currently we switch beams every 10 slots (should = 1 TDD period in FR2) and we take the beam index of the first symbol of the first slot of this period
|
// currently we switch beams at the beginning of a slot and we take the beam index of the first symbol of this slot
|
||||||
int beam=0;
|
// we only send the beam to the gpio if the beam is different from the previous slot
|
||||||
|
|
||||||
if (slot%10==0) {
|
if ( ru->common.beam_id) {
|
||||||
if ( ru->common.beam_id && (ru->common.beam_id[0][slot*fp->symbols_per_slot] < 8)) {
|
int prev_slot = (slot - 1 + fp->slots_per_frame) % fp->slots_per_frame;
|
||||||
beam = ru->common.beam_id[0][slot*fp->symbols_per_slot];
|
const uint8_t *beam_ids = ru->common.beam_id[0];
|
||||||
|
int prev_beam = beam_ids[prev_slot * fp->symbols_per_slot];
|
||||||
|
int beam = beam_ids[slot * fp->symbols_per_slot];
|
||||||
|
if (prev_beam != beam) {
|
||||||
|
flags_gpio = beam | TX_GPIO_CHANGE; // enable change of gpio
|
||||||
|
LOG_D(HW, "slot %d, beam %d\n", slot, ru->common.beam_id[0][slot * fp->symbols_per_slot]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
LOG_D(HW,"slot %d, beam %d\n",slot,ru->common.beam_id[0][slot*fp->symbols_per_slot]);
|
|
||||||
|
|
||||||
/*
|
|
||||||
if (slot==0 || slot==40) beam=0|8;
|
|
||||||
if (slot==10 || slot==50) beam=1|8;
|
|
||||||
if (slot==20 || slot==60) beam=2|8;
|
|
||||||
if (slot==30 || slot==70) beam=3|8;
|
|
||||||
*/
|
|
||||||
|
|
||||||
flags_gpio = beam | TX_GPIO_CHANGE; //enable change of gpio
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const int flags = flags_burst | flags_gpio << 4;
|
const int flags = flags_burst | flags_gpio << 4;
|
||||||
|
|||||||
Reference in New Issue
Block a user