This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Add own backend interface to the logger failed

I try to send the NRF_LOG_INFO() messages over a own backend interface. I tried to add a new backend with nrf_log_backend_add() and enable it with nrf_log_backend_enable(). But as soon as I do this, I only get the first log print over RTT and afterwards I receive nothing. I seems the software is "stuck" somewhere.

NRF52832, SDK 15.3 and Softdevice 6.1.1.

#define NRF_LOG_BACKEND_RTT_ENABLED 1 in sdk_conf.h

void logPut(nrf_log_backend_t const * p_backend, nrf_log_entry_t * p_msg)
{
   //send over uart
}

static void logFlush(nrf_log_backend_t const * p_backend)
{
    //send over uart
}

static void logPanic(nrf_log_backend_t const * p_backend)
{
    //send over uart
}

const nrf_log_backend_api_t sOwnLogBackendApi = {
   .put       = logPut,
   .flush     = logFlush,
   .panic_set = logPanic,
};

static nrf_log_backend_t sOwnLogBackend = {
   .p_api = & sOwnLogBackendApi,
};

void logInit()
{
   const ret_code_t err_code = NRF_LOG_INIT(NULL);
   APP_ERROR_CHECK(err_code);

   NRF_LOG_DEFAULT_BACKENDS_INIT();

   int32_t backend_id = nrf_log_backend_add(& sOwnLogBackend, NRF_LOG_SEVERITY_DEBUG);
   APP_ERROR_CHECK_BOOL(backend_id >= 0);
   nrf_log_backend_enable(& sOwnLogBackend);
}

void uartInit(uartMessageHandler_t uartMessageHandler)
{
   sUartMessageHandler = uartMessageHandler;

   const app_uart_comm_params_t comm_params =
   {
      .rx_pin_no    = RX_PIN_NUMBER,
      .tx_pin_no    = TX_PIN_NUMBER,
      .rts_pin_no   = RTS_PIN_NUMBER,
      .cts_pin_no   = CTS_PIN_NUMBER,
      .flow_control = APP_UART_FLOW_CONTROL_DISABLED,
      .use_parity   = false,
      .baud_rate    = NRF_UART_BAUDRATE_115200
   };

   uint32_t result;
   APP_UART_FIFO_INIT(& comm_params,
                      UART_RX_BUF_SIZE,
                      UART_TX_BUF_SIZE,
                      onUartEvent,
                      APP_IRQ_PRIORITY_LOWEST,
                      result);
   APP_ERROR_CHECK(result);
}

Parents
  • Hello,

    Are you trying to implement a UART backend for the logger?

    If so, I suggest you take a look at one of the examples that has the option for UART backend in the NRF_LOG module, such as the ble_app_hrs example.

    Other than that I don't know what the issue is, I see a lot of empty functions in your snippets. Is the plan to populate them?

Reply
  • Hello,

    Are you trying to implement a UART backend for the logger?

    If so, I suggest you take a look at one of the examples that has the option for UART backend in the NRF_LOG module, such as the ble_app_hrs example.

    Other than that I don't know what the issue is, I see a lot of empty functions in your snippets. Is the plan to populate them?

Children
No Data
Related