Commit 9948d972 authored by Robert Schmidt's avatar Robert Schmidt

Use GPIO flag and fix bug

parent 72460cec
...@@ -733,8 +733,8 @@ void tx_rf(RU_t *ru,int frame,int slot, uint64_t timestamp) { ...@@ -733,8 +733,8 @@ void tx_rf(RU_t *ru,int frame,int slot, uint64_t timestamp) {
T_INT(0), T_BUFFER(&ru->common.txdata[0][fp->get_samples_slot_timestamp(slot,fp,0)], fp->samples_per_subframe * 4)); T_INT(0), T_BUFFER(&ru->common.txdata[0][fp->get_samples_slot_timestamp(slot,fp,0)], fp->samples_per_subframe * 4));
int sf_extension = 0; int sf_extension = 0;
int siglen=fp->get_samples_per_slot(slot,fp); int siglen=fp->get_samples_per_slot(slot,fp);
int flags=0,flags_gpio=0;
radio_tx_burst_flag_t flags_burst = TX_BURST_INVALID; radio_tx_burst_flag_t flags_burst = TX_BURST_INVALID;
radio_tx_gpio_flag_t flags_gpio = 0;
if (cfg->cell_config.frame_duplex_type.value == TDD && !get_softmodem_params()->continuous_tx) { if (cfg->cell_config.frame_duplex_type.value == TDD && !get_softmodem_params()->continuous_tx) {
int slot_type = nr_slot_select(cfg,frame,slot%fp->slots_per_frame); int slot_type = nr_slot_select(cfg,frame,slot%fp->slots_per_frame);
...@@ -796,11 +796,11 @@ void tx_rf(RU_t *ru,int frame,int slot, uint64_t timestamp) { ...@@ -796,11 +796,11 @@ void tx_rf(RU_t *ru,int frame,int slot, uint64_t timestamp) {
if (slot==30 || slot==70) beam=3|8; if (slot==30 || slot==70) beam=3|8;
*/ */
flags_gpio = beam & 0x1000; //enable change of gpio flags_gpio = beam | TX_GPIO_CHANGE; //enable change of gpio
} }
flags = flags_burst | flags_gpio<<4; const int flags = flags_burst | flags_gpio << 4;
if (proc->first_tx == 1) proc->first_tx = 0; if (proc->first_tx == 1) proc->first_tx = 0;
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_TRX_WRITE_FLAGS, flags ); VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_TRX_WRITE_FLAGS, flags );
......
...@@ -160,6 +160,12 @@ typedef enum { ...@@ -160,6 +160,12 @@ typedef enum {
TX_BURST_END_NO_TIME_SPEC = 10, TX_BURST_END_NO_TIME_SPEC = 10,
} radio_tx_burst_flag_t; } radio_tx_burst_flag_t;
/*! \brief Radio TX GPIO flags: MSB to enable sending GPIO command, 12 LSB carry GPIO values */
typedef enum {
/* first 12 bits reserved for beams */
TX_GPIO_CHANGE = 0x1000,
} radio_tx_gpio_flag_t;
/*! \brief Structure used for initializing UDP read threads */ /*! \brief Structure used for initializing UDP read threads */
typedef struct { typedef struct {
openair0_device *device; openair0_device *device;
...@@ -317,7 +323,7 @@ typedef struct { ...@@ -317,7 +323,7 @@ typedef struct {
int cc; int cc;
signed char first_packet; signed char first_packet;
signed char last_packet; signed char last_packet;
int flags_gpio; radio_tx_gpio_flag_t flags_gpio;
} openair0_write_package_t; } openair0_write_package_t;
typedef struct { typedef struct {
......
...@@ -390,7 +390,7 @@ static int trx_usrp_write(openair0_device *device, ...@@ -390,7 +390,7 @@ static int trx_usrp_write(openair0_device *device,
int nsamps2; // aligned to upper 32 or 16 byte boundary int nsamps2; // aligned to upper 32 or 16 byte boundary
radio_tx_burst_flag_t flags_burst = (radio_tx_burst_flag_t) (flags & 0xf); radio_tx_burst_flag_t flags_burst = (radio_tx_burst_flag_t) (flags & 0xf);
int flags_gpio = (flags>>4)&0x1fff; //MSB to enable sending GPIO command, 12 LSB carry GPIO values radio_tx_gpio_flag_t flags_gpio = (radio_tx_gpio_flag_t) ((flags >> 4) & 0x1fff);
int end; int end;
openair0_thread_t *write_thread = &device->write_thread; openair0_thread_t *write_thread = &device->write_thread;
...@@ -466,7 +466,7 @@ static int trx_usrp_write(openair0_device *device, ...@@ -466,7 +466,7 @@ static int trx_usrp_write(openair0_device *device,
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_BEAM_SWITCHING_GPIO,1); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_BEAM_SWITCHING_GPIO,1);
// bit 13 enables gpio // bit 13 enables gpio
if (flags_gpio&0x1000) { if ((flags_gpio & TX_GPIO_CHANGE) != 0) {
// push GPIO bits // push GPIO bits
s->usrp->set_command_time(s->tx_md.time_spec); s->usrp->set_command_time(s->tx_md.time_spec);
s->usrp->set_gpio_attr(s->gpio_bank, "OUT", flags_gpio, MAN_MASK); s->usrp->set_gpio_attr(s->gpio_bank, "OUT", flags_gpio, MAN_MASK);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment