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

Power transmission with OpenThread.

Hi, I tested "Simple_coap_client" and "simple_coap_server" on NRF52840 using Threading SDK.

I want to change the transmit power, so I used "otPlatRadioSetTransmitPower ()".

The power consumption and communication distance were measured, but there was no change.

This is my code.

How do I use "otPlatRadioSetTransmitPower ()"?

I'm sorry in poor English.

void thread_coap_utils_multicast_light_request_send(uint8_t                         command,
                                                    thread_coap_utils_multicast_scope_t scope)
{
    NRF_LOG_INFO("thread_coap_utils_multicast_light_request_send");

    otError       error = OT_ERROR_NONE;
    otMessage   * p_request;
    otMessageInfo message_info;
    const char  * p_scope = NULL;
    otInstance  * p_instance = thread_ot_instance_get();

    int8_t TX_power = 8;

    char *send_data = "hello world";

    do
    {
        p_request = otCoapNewMessage(p_instance, NULL);
        if (p_request == NULL)
        {
            NRF_LOG_INFO("Failed to allocate message for CoAP Request\r\n");
            break;
        }

        otCoapMessageInit(p_request, OT_COAP_TYPE_NON_CONFIRMABLE, OT_COAP_CODE_PUT);

        error = otCoapMessageAppendUriPathOptions(p_request, "light");
        ASSERT(error == OT_ERROR_NONE);

        error = otCoapMessageSetPayloadMarker(p_request);
        ASSERT(error == OT_ERROR_NONE);

        error = otMessageAppend(p_request, send_data, 12);
        //NRF_LOG_INFO("send_data : %s", send_data);
       

        if (error != OT_ERROR_NONE)
        {
            break;
        }

        switch (scope)
        {
        case THREAD_COAP_UTILS_MULTICAST_LINK_LOCAL:
            p_scope = "ff02::1";
            break;

        case THREAD_COAP_UTILS_MULTICAST_REALM_LOCAL:
            p_scope = "ff03::1";
            break;

        default:
            ASSERT(false);
        }

        memset(&message_info, 0, sizeof(message_info));
        message_info.mPeerPort = OT_DEFAULT_COAP_PORT;

        error = otIp6AddressFromString(p_scope, &message_info.mPeerAddr);
        ASSERT(error == OT_ERROR_NONE);
        
       
        error = otPlatRadioSetTransmitPower(p_instance, TX_power);
        NRF_LOG_INFO("error: %d", error);
        
        
        error = otCoapSendRequest(p_instance, p_request, &message_info, NULL, NULL);
    } while (false);

    if (error != OT_ERROR_NONE && p_request != NULL)
    {
        NRF_LOG_INFO("Failed to send CoAP Request: %d\r\n", error);
        otMessageFree(p_request);
    }
}

Related