es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo utilizar las llamadas de función UHD existentes en un módulo personalizado OOT en Gnu Radio.

Estoy creando un módulo OOT personalizado llamado test3 en GNU Radio que necesita utilizar algunas funciones de uhd.

Por ejemplo, necesito llamar a la función uhd::setthreadpriority_safe(), por lo que importo el archivo thread.hpp:

#include <uhd utils/thread.hpp="">

Dado que la llamada a la función está en el espacio de nombres uhd, intento usar el espacio de nombres para llamar a la función:

namespace gr {
  namespace test3 {
    using namespace uhd;
    .
    .
    .
    int get_time_impl::work(int noutput_items,
    gr_vector_const_void_star &input_items,
    gr_vector_void_star &output_items)
    {
        uhd::set_thread_priority_safe();
        return 0;
    }
  }
}

Pero al hacer esto, no funciona y obtengo el siguiente error:

AttributeError: el módulo 'test3' no tiene el atributo 'get_time'

Pero cuando elimino la llamada a la función de uhd, el error desaparece.

¿Cómo puedo solucionar este problema?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema parece estar relacionado con la forma en que se resuelven los espacios de nombres en el código. En lugar de usar “using namespace uhd” en el código, podemos usar el namespace completo en la llamada a la función, de esta manera:

    int get_time_impl::work(int noutput_items,
    gr_vector_const_void_star &input_items,
    gr_vector_void_star &output_items)
    {
        uhd::utils::set_thread_priority_safe();
        return 0;
    }
    

    Esto debería resolver el problema y permitir que la función uhd sea llamada desde el módulo OOT.

Comments are closed.