echo_client / echo_server hop limit
Diana Rivera
Hello,
I am currently working on an OpenThread app based on the echo_client and echo_server. I am currently trying to use the hop-limit field by setting it as follows: In the echo_client udp.c file: static void send_udp_data(struct net_app_ctx *ctx, struct data *data) {    struct net_pkt *pkt;    size_t len;    int ret;    data->expecting_udp = ipsum_len;    pkt = prepare_send_pkt(ctx, data->proto, &data->expecting_udp);    if (!pkt) {       return;    }         net_pkt_set_ipv6_hop_limit(pkt, 8);    NET_INFO("Hop limit set to: %d", net_pkt_ipv6_hop_limit(pkt));    len = net_pkt_get_len(pkt);    NET_ASSERT_INFO(data->expecting_udp == len,          "Data to send %d bytes, real len %zu",          data->expecting_udp, len);    ret = net_app_send_pkt(ctx, pkt, NULL, 0, K_FOREVER,                UINT_TO_POINTER(len));    if (ret < 0) {       NET_ERR("Cannot send %s data to peer (%d)", data->proto, ret);       net_pkt_unref(pkt);    }    k_delayed_work_submit(&data->recv, WAIT_TIME); } In the echo_server udp.c: struct net_pkt *build_reply_pkt(const char *name,             struct net_app_ctx *ctx,             struct net_pkt *pkt) {    struct net_pkt *reply_pkt;    struct net_buf *frag, *tmp;    int header_len = 0, recv_len, reply_len;    u8_t *ptr = net_pkt_appdata(pkt);    // hop_lim = pkt->ipv6_hop_limit;   hop_lim = net_pkt_ipv6_hop_limit(pkt);     NET_INFO("Application message received: %s, hop limit: %d\n", ptr, hop_lim);    NET_INFO("%s received %d bytes", name, net_pkt_appdatalen(pkt));    if (net_pkt_appdatalen(pkt) == 0) {       return NULL;    }    reply_pkt = net_app_get_net_pkt(ctx, net_pkt_family(pkt), K_FOREVER);    NET_ASSERT(reply_pkt);    NET_ASSERT(net_pkt_family(reply_pkt) == net_pkt_family(pkt));    recv_len = net_pkt_get_len(pkt);    tmp = pkt->frags;    /* If we have link layer headers, then get rid of them here. */    if (recv_len != net_pkt_appdatalen(pkt)) {       /* First fragment will contain IP header so move the data        * down in order to get rid of it.        */       header_len = net_pkt_appdata(pkt) - tmp->data;       NET_ASSERT(header_len < CONFIG_NET_BUF_DATA_SIZE);       /* After this pull, the tmp->data points directly to application        * data.        */       net_buf_pull(tmp, header_len);    }    net_pkt_set_appdatalen(reply_pkt, net_pkt_appdatalen(pkt));    while (tmp) {       frag = net_app_get_net_buf(ctx, reply_pkt, K_FOREVER);       if (net_buf_headroom(tmp) == 0) {          /* If there is no link layer headers in the           * received fragment, then get rid of that also           * in the sending fragment. We end up here           * if MTU is larger than fragment size, this           * is typical for ethernet.           */          net_buf_push(frag, net_buf_headroom(frag));          frag->len = 0; /* to make fragment empty */          /* Make sure to set the reserve so that           * in sending side we add the link layer           * header if needed.           */          net_pkt_set_ll_reserve(reply_pkt, 0);       }       NET_ASSERT_INFO(net_buf_tailroom(frag) >= tmp->len,             "tail %zd longer than len %d",             net_buf_tailroom(frag), tmp->len);       memcpy(net_buf_add(frag, tmp->len), tmp->data, tmp->len);       tmp = net_pkt_frag_del(pkt, NULL, tmp);    }    reply_len = net_pkt_get_len(reply_pkt);    NET_ASSERT_INFO((recv_len - header_len) == reply_len,          "Received %d bytes, sending %d bytes",          recv_len - header_len, reply_len);    return reply_pkt; } On the client side, I'm able to observe that the hop limit has been set to 8; however, by the time I read the hop limit field at the server, this value returns zero, instead of having decreased by just 1 as expected. Am I making a mistake in the way I'm using the  net_pkt_set_ipv6_hop_limit and  net_pkt_ipv6_hop_limit functions? Or is there another way to be able to use the hop limit field in OT? Thank you in advance for your answer, Diana
|
|||||||||||||||
|
|||||||||||||||
Re: How to configure #NVS if #FCB in used for #BluetoothMesh ?
#nvs
#fcb
#bluetoothmesh
Puzdrowski, Andrzej
Hi  As you notice right now it is impossible to use both NVS and FCB out of the box. So you need a hack. I think finally this problem should be resolved by introduction of dedicate flash slot which are described via DTS (similar to the current one, the  STORAGE_PARTITION). STORAGE_PARTITION might be kept for situation where it is only storage partition. Unfortunately I don’t have time right now to improve this. Any contribution and further comment regard this are highly welcome 😃  Andrzej Â
From: devel@... [mailto:devel@...]
On Behalf Of vikrant8051
Sent: Monday, June 04, 2018 4:50 PM To: devel@...; users@... Cc: Laczen JMS <laczenjms@...> Subject: [Zephyr-devel] How to configure #NVS if #FCB in used for #BluetoothMesh ? Â Hi all, Â I wanna use #NVS to save #BluetoothMesh Models states. Â As per current implementation, #BluetoothMesh stack is using #FCB for persistent storage. Â If I use #NVS (with default setting) along with #FCB, and try to save some data using it, then it pushes NODE into unprovisioned state. This should be because of overlapping. Â Solution is to modify NVS's storage offset. For e.g. Â #define NVS_STORAGE_OFFSET (FLASH_AREA_STORAGE_OFFSET - 4096) Â But it will be not a good idea, if #DFU_OTA going to be part of project. Am i right ? Â Do anyone have better solution ? Â Thank You !! Â Â Â Â Â Â
|
|||||||||||||||
|
|||||||||||||||
Re: [Zephyr-users] [Zephyr-devel] How to change Bluetooth default TX power ?
Gurpreet Singh <gurpreet@...>
I'd second that vote as our use case also involves being able to change the tx power depending on the type of advertisement packet being sent out.Â
On Mon, Jun 4, 2018 at 11:16 AM, Ryan Erickson <ryan.erickson@...> wrote: I'd like to put in a vote for changing the TX power at runtime. Our use case would be making the TX power less during advertisements and then increasing it once the connection is made. --
|
|||||||||||||||
|
|||||||||||||||
Re: [Zephyr-users] [Zephyr-devel] How to change Bluetooth default TX power ?
Chettimada, Vinayak Kariappa
Hi,
toggle quoted messageShow quoted text
Ryan,
As stated in my earlier email, runtime changes need Host API and corresponding vendor HCI extensions, let alone controller implementations to handle runtime changes. This will need a bit more effort and re-prioritising my current tasks!
Regards,
Vinayak
|
|||||||||||||||
|
|||||||||||||||
Re: [Zephyr-users] [Zephyr-devel] How to change Bluetooth default TX power ?
Abderrezak Mekkaoui <ab.mekka@...>
Hi Vinayak, Abderrezak
On 6/4/2018 1:59 PM, Chettimada,
Vinayak Kariappa wrote:
Hi Vikrant and Abderrezak,
|
|||||||||||||||
|
|||||||||||||||
Re: [Zephyr-users] [Zephyr-devel] How to change Bluetooth default TX power ?
Abderrezak Mekkaoui
Hi Vinayak,
On 6/4/2018 1:59 PM, Chettimada,
Vinayak Kariappa wrote:
Hi Vikrant and Abderrezak,
|
|||||||||||||||
|
|||||||||||||||
Re: [Zephyr-users] [Zephyr-devel] How to change Bluetooth default TX power ?
Ryan Erickson
I'd like to put in a vote for changing the TX power at runtime. Our use case would be making the TX power less during advertisements and then increasing it once the connection is made.
Thanks, Ryan From: devel@lists.zephyrproject.org <devel@lists.zephyrproject.org> On Behalf Of Chettimada, Vinayak Kariappa Sent: Monday, June 4, 2018 13:13 To: Vikrant More <vikrant8051@gmail.com> Cc: Abderrezak Mekkaoui <ab.mekka@gmail.com>; devel@lists.zephyrproject.org; users@lists.zephyrproject.org Subject: Re: [Zephyr-users] [Zephyr-devel] How to change Bluetooth default TX power ? Vikrant, Sure, I will send a PR for that one as soon as I can (tomorrow maybe). Regards, Vinayak On 4 Jun 2018, at 23:41, Vikrant More <mailto:vikrant8051@gmail.com> wrote: Hi Vinayak, As of now, I need build time configuration option to change Tx power. It will be great, if we could do it by editing prj.conf. Thank You !! On Mon, Jun 4, 2018, 11:29 PM Chettimada, Vinayak Kariappa <mailto:vinayak.kariappa.chettimada@nordicsemi.no> wrote: Hi Vikrant and Abderrezak, Please elaborate on your applications' use case for Tx power change. Do you want to use a build time custom Tx power setting or runtime dynamic update to Tx Power? As there is no HCI command to update Tx power, except in Extended Advertising feature, it is important to define a Host API for a dynamic update well suited targeting an use case for legacy advertising and connections. This will then need to define vendor specific HCI extensions to update the settings in the controller’s radio implementations. Regards, Vinayak On 4 Jun 2018, at 19:28, Abderrezak Mekkaoui <mailto:ab.mekka@gmail.com> wrote: Hi All, I have the same issue. This is clearly an app variable imho. Thanks Abderrezak On 6/4/2018 9:45 AM, vikrant8051 wrote: Hi, If anyone want to edit tx power of #nRF52840_PDK, then have to edit two file .. 1) $zephyr/subsys/bluetooth/controller/ll_sw/ctrl.c: L5882 2) $zephyr/subsys/bluetooth/controller/ll_sw/ll_test.c: L189 which are part of Bluetooth Stack. How to modify TX power at APP level (after reboot or in middle of firmware execution) ? Is it possible to use some configuration parameter for it ? Thank You !!
|
|||||||||||||||
|
|||||||||||||||
Re: [Zephyr-users] [Zephyr-devel] How to change Bluetooth default TX power ?
Chettimada, Vinayak Kariappa
Vikrant,
toggle quoted messageShow quoted text
Sure, I will send a PR for that one as soon as I can (tomorrow maybe).
Regards,
Vinayak
|
|||||||||||||||
|
|||||||||||||||
Re: [Zephyr-users] [Zephyr-devel] How to change Bluetooth default TX power ?
vikrant8051 <vikrant8051@...>
Hi Vinayak, As of now, I need build time configuration option to change Tx power. It will be great, if we could do it by editing prj.conf. Thank You !!
On Mon, Jun 4, 2018, 11:29 PM Chettimada, Vinayak Kariappa <vinayak.kariappa.chettimada@...> wrote:
|
|||||||||||||||
|
|||||||||||||||
Re: [Zephyr-users] [Zephyr-devel] How to change Bluetooth default TX power ?
Chettimada, Vinayak Kariappa
Hi Vikrant and Abderrezak,
toggle quoted messageShow quoted text
Please elaborate on your applications' use case for Tx power change. Do you want to use a build time custom Tx power setting or runtime dynamic update to Tx Power?
As there is no HCI command to update Tx power, except in Extended Advertising feature, it is important to define a Host API for a dynamic update well suited targeting an use case for legacy advertising and connections.
This will then need to define vendor specific HCI extensions to update the settings in the controller’s radio implementations.
Regards,
Vinayak
|
|||||||||||||||
|
|||||||||||||||
Re: How to change Bluetooth default TX power ?
Abderrezak Mekkaoui <ab.mekka@...>
Hi All, I have the same issue. This is clearly an app variable imho. Abderrezak
On 6/4/2018 9:45 AM, vikrant8051 wrote:
|
|||||||||||||||
|
|||||||||||||||
How to configure #NVS if #FCB in used for #BluetoothMesh ?
#nvs
#fcb
#bluetoothmesh
vikrant8051 <vikrant8051@...>
Hi all, I wanna use #NVS to save #BluetoothMesh Models states. As per current implementation, #BluetoothMesh stack is using #FCB for persistent storage. If I use #NVS (with default setting) along with #FCB, and try to save some data using it, then it pushes NODE into unprovisioned state. This should be because of overlapping. Solution is to modify NVS's storage offset. For e.g. #define NVS_STORAGE_OFFSET (FLASH_AREA_STORAGE_OFFSET - 4096) But it will be not a good idea, if #DFU_OTA going to be part of project. Am i right ? Do anyone have better solution ? Thank You !!
|
|||||||||||||||
|
|||||||||||||||
How to change Bluetooth default TX power ?
vikrant8051 <vikrant8051@...>
Hi, If anyone want to edit tx power of #nRF52840_PDK, then have to edit two file .. 1) $zephyr/subsys/bluetooth/controller/ll_sw/ctrl.c: L5882 2)Â $zephyr/subsys/bluetooth/controller/ll_sw/ll_test.c: L189 which are part of Bluetooth Stack. How to modify TX power at APP level (after reboot or in middle of firmware execution) ? Is it possible to use some configuration parameter for it ? Thank You !!
|
|||||||||||||||
|
|||||||||||||||
Re: File exist error on settings_subsys_init
Carles Cufi
Hi Daniele,  Thanks for the suggested change. Instead of sending a patch through the mailing list, could you open a pull request? It makes it simpler to discuss the change and it will be included if accepted. It’s quite easy to send one via GitHub, you can find more details here: http://docs.zephyrproject.org/contribute/contribute_guidelines.html  Regards,  Carles Â
From: devel@... <devel@...>
On Behalf Of Daniele
Sent: 04 June 2018 13:29 To: devel@... Subject: [Zephyr-devel] File exist error on settings_subsys_init  Hello everyone,
|
|||||||||||||||
|
|||||||||||||||
File exist error on settings_subsys_init
Daniele
Hello everyone,
Playing around the permanent storage of bluetooth settings, I think I found an issue in the settings subsystem. Enabling the CONFIG_SETTINGS_FS option If I restart my device after the settings has been saved on the flash I allways get the error -17 (EEXIST). I think the issue comes from the settings_subsys_init() funtion in /subsys/settings/src/settings_init.c. The fs_mkdir generate the error due to the fact that the setting folder already exist. I think this error should be ignored. So I have modified settings_subsys_init() this way: @@ -115,6 +115,12 @@ int settings_subsys_init(void) Â Â Â Â Â Â Â Â * Must be called after root FS has been initialized. Â Â Â Â Â Â Â Â */ Â Â Â Â Â Â Â err = fs_mkdir(CONFIG_SETTINGS_FS_DIR); +Â Â Â /* +Â Â Â Â * The following lines mask the file exist error. +Â Â Â Â */ +Â Â Â if (err == -EEXIST) { +Â Â Â Â Â Â Â err = 0; +Â Â Â } What do you think about? Good day Daniele
|
|||||||||||||||
|
|||||||||||||||
Re: [Zephyr-users] #BluetoothMesh ...about latest kernel OOPS & exception
#bluetoothmesh
vikrant8051 <vikrant8051@...>
Hi Andy, commit 43553da9b2bb9e537185695899fb5184c3b17ebe Author: Andy Ross <andrew.j.ross@...> Date:  Thu May 31 11:13:49 2018 -0700    kernel/sched: Fix preemption logic       The should_preempt() code was catching some of the "unrunnable" cases    but not all of them, opening the possibility of failing to preempt a    just-pended thread and thus waking it up synchronously. There are    reports of this causing spin loops over k_poll() in the network stack    work queues (see #8049).       Note that the previous _is_dummy() call is folded into (the somewhat    verbosely named) _is_thread_prevented_from_running(), and that the    order of tests has been changed/optimized to hopefully catch common    cases earlier.       Suggested-by: Michael Scott <michael@...>    Signed-off-by: Andy Ross <andrew.j.ross@...> Is this what you are pointing? It is there in my local repository. May I now comment out line no. line no. 3318 of subsys/bluetooth/host/hci_core -------------------------------------------------------------------------------------------------------------------------------------- Could anybody help me to find out serious bugs in my PR:8101? It is very simple & will help for testing. I am not interested in merging it, but need a complete bug free/easy to test App which will help in such scenarios. Thank You !!
On Sat, Jun 2, 2018 at 4:10 AM, Andy Ross <andrew.j.ross@...> wrote: Vikrant8051 <vikrant8051@...> wrote:
|
|||||||||||||||
|
|||||||||||||||
Re: [Zephyr-users] #BluetoothMesh ...about latest kernel OOPS & exception
#bluetoothmesh
Andy Ross
Vikrant8051 <vikrant8051@gmail.com> wrote:
I commented line no. 3318 of subsys/bluetooth/host/hci_core.c i.e. //I was pointed to this on IRC. The symptom you've got there sounds a lot like a scheduler mistake that got fixed yesterday, where ostensibly-pended threads could be incorrectly swapped back in. They would then wake up (generally with an -EAGAIN return value from _Swap()) and take whatever default action is approparite (like returning a NULL value from the empty list), so it's a little subtle to recognize as a bug and often "recoverable" by existing handling. But it's a real bug. Can you verify that you tree contains commit 43553da9b2bb9e5 and see if that was the same root cause? There's at least one other report of instability after that merged, but this definitely sounds like it might be your local problem. I'm trying to track this down locally, but alas our test suite passes, so I'm hoping to get more information. Andy
|
|||||||||||||||
|
|||||||||||||||
Re: SODAQ One V3 porting
Henrik Brix Andersen
Hi Léonard
On 18 May 2018, at 11.56, Léonard Bise <leodido99@gmail.com> wrote:Sweet. In the supported hardware I see that the Adafruit Feather M0 Basic Prot is listed, which has this exact same microcontroller. I also read the Board Porting Guide and as I understand it basically I'd need to take the Adafruit configuration as a base and add these new components to the kconfiguration. All of the aspects related to the microcontroller are already there.I did the port to the Adafruit Feather M0 Basic Proto. Let me know if I can help with the port for the SODAQ board. In particular I'm also wondering how to handle the LoRa microchip, since Zephyr has no LoRaWAN stack what would be the best way to handle the porting of this part?Perhaps a simple solution could be to just add a sample application using the LoRaWAN chip over UART from the application layer? Best regards, Brix -- Henrik Brix Andersen
|
|||||||||||||||
|
|||||||||||||||
Re: [Zephyr-users] #BluetoothMesh ...about latest kernel OOPS & exception
#bluetoothmesh
vikrant8051 <vikrant8051@...>
Hi, I've created new PR https://github.com/zephyrproject-rtos/zephyr/pull/8101. It is basically modified version of samples/bluetooth/mesh as well as inspired from samples/boards/nrf52/mesh/onoff-app. Thank You !!
On Fri, Jun 1, 2018 at 2:52 PM, vikrant8051 <vikrant8051@...> wrote:
|
|||||||||||||||
|
|||||||||||||||
Re: [Zephyr-users] #BluetoothMesh ...about latest kernel OOPS & exception
#bluetoothmesh
vikrant8051 <vikrant8051@...>
Hi, I commented line no. 3318 of subsys/bluetooth/host/hci_core.c i.e. // BT_ASSERT(buf); And after that everything is working perfectly normal. Thanks !!
On Thu, May 31, 2018 at 8:36 PM, vikrant8051 <vikrant8051@...> wrote:
|
|||||||||||||||
|