<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>NRF BLE Mesh SDK: Combine provisioner role with the Mesh client (provisionee) role</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/37374/nrf-ble-mesh-sdk-combine-provisioner-role-with-the-mesh-client-provisionee-role</link><description>Hi, 
 I am working on an application using the nrf52 sdk v15 and nrf Mesh sdk v2.1.1 on nrf52840 PDK. Starting from the nrf5_SDK_for_Mesh_v2.1.1_src\examples\sdk_coexist\ble_app_uart_coexist example, I able to communicate the light switch mesh nodes from</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Thu, 16 Aug 2018 14:36:40 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/37374/nrf-ble-mesh-sdk-combine-provisioner-role-with-the-mesh-client-provisionee-role" /><item><title>RE: NRF BLE Mesh SDK: Combine provisioner role with the Mesh client (provisionee) role</title><link>https://devzone.nordicsemi.com/thread/144577?ContentTypeID=1</link><pubDate>Thu, 16 Aug 2018 14:36:40 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:4dda4163-9554-46cb-8c32-94c48c192280</guid><dc:creator>Mttrinh</dc:creator><description>&lt;p&gt;Can you open a new ticket as this is a different issue?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: NRF BLE Mesh SDK: Combine provisioner role with the Mesh client (provisionee) role</title><link>https://devzone.nordicsemi.com/thread/144574?ContentTypeID=1</link><pubDate>Thu, 16 Aug 2018 14:29:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:2f17db31-65f9-4fcf-85a6-e439f3c47336</guid><dc:creator>Mttrinh</dc:creator><description>&lt;p&gt;Have a look at the access_setup() function in the main file.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;As for the&amp;nbsp;prov_helper_provision_self(), you need to modify the function for it to do that.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: NRF BLE Mesh SDK: Combine provisioner role with the Mesh client (provisionee) role</title><link>https://devzone.nordicsemi.com/thread/144239?ContentTypeID=1</link><pubDate>Tue, 14 Aug 2018 19:55:33 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:26056022-b75b-492a-b36a-1b6a50086d43</guid><dc:creator>brent_dong</dc:creator><description>&lt;p&gt;Hi, Mttrin&lt;/p&gt;
&lt;p&gt;I am doing same thing, to move Provisioner Feature to Proxy_Client node in Mesh_SDK 2.1.1 . I didn;t use soft_device init in Provisioner example. actually, I tried, &amp;nbsp;conflict with &amp;nbsp;that of Proxy_client example where softdevice is already started properly.&lt;/p&gt;
&lt;p&gt;See &amp;quot;mesh_init&amp;quot; ,&amp;nbsp;&amp;nbsp; &amp;quot;initialize&amp;quot; ,&amp;nbsp;&amp;nbsp;&amp;quot;start&amp;quot; and &amp;quot;debug_output&amp;quot; in the last.&lt;/p&gt;
&lt;p&gt;From the output, I can see &amp;quot;self_provision&amp;quot; is performed during mesh_init, but meet assert problem when start mesh_stack.&lt;/p&gt;
&lt;p&gt;I checked the code of &amp;nbsp;&amp;quot;nrf_mesh_enable();&amp;quot; looks like &amp;nbsp;assert came from :&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;void scanner_enable(void)&lt;br /&gt;{&lt;br /&gt; NRF_MESH_ASSERT(m_scanner.state != SCANNER_STATE_UNINITIALIZED);&lt;/p&gt;
&lt;p&gt;But I did see any place in Provisoner Example &amp;nbsp;to set scanner state. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;Could you give me some advice how to move?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Thanks&lt;/p&gt;
&lt;p&gt;Brent&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;static void mesh_init(void)&lt;br /&gt;{&lt;br /&gt; bool device_provisioned;&lt;br /&gt; mesh_stack_init_params_t init_params =&lt;br /&gt; {&lt;br /&gt; .core.irq_priority = NRF_MESH_IRQ_PRIORITY_LOWEST,&lt;br /&gt; .core.lfclksrc = DEV_BOARD_LF_CLK_CFG,&lt;br /&gt; // .core.p_uuid = m_client_node_uuid,&lt;br /&gt; .models.models_init_cb = models_init_cb,&lt;br /&gt; .models.config_server_cb = app_config_server_event_cb&lt;br /&gt; };&lt;/p&gt;
&lt;p&gt;ERROR_CHECK(mesh_stack_init(&amp;amp;init_params, &amp;amp;device_provisioned));&lt;/p&gt;
&lt;p&gt;nrf_mesh_evt_handler_add(&amp;amp;m_mesh_core_event_handler);&lt;/p&gt;
&lt;p&gt;/* Load application configuration, if available */&lt;br /&gt; m_dev_handles.flash_load_success = app_flash_config_load();&lt;/p&gt;
&lt;p&gt;/* Initialize the provisioner */&lt;br /&gt; mesh_provisioner_init_params_t m_prov_helper_init_info =&lt;br /&gt; {&lt;br /&gt; .p_dev_data = &amp;amp;m_dev_handles,&lt;br /&gt; .p_nw_data = &amp;amp;m_nw_state,&lt;br /&gt; .netkey_idx = NETKEY_INDEX,&lt;br /&gt; .p_data_store_cb = app_data_store_cb,&lt;br /&gt; .p_prov_success_cb = app_prov_success_cb,&lt;br /&gt; .p_prov_failed_cb = app_prov_failed_cb&lt;br /&gt; };&lt;br /&gt; prov_helper_init(&amp;amp;m_prov_helper_init_info);&lt;/p&gt;
&lt;p&gt;if (!device_provisioned)&lt;br /&gt; {&lt;br /&gt; __LOG(LOG_SRC_APP, LOG_LEVEL_INFO, &amp;quot;Setup defaults: Adding keys, addresses, and bindings \n&amp;quot;);&lt;/p&gt;
&lt;p&gt;prov_helper_provision_self();&lt;br /&gt; app_default_models_bind_setup();&lt;br /&gt; access_flash_config_store();&lt;br /&gt; app_data_store_cb();&lt;br /&gt; }&lt;br /&gt; else&lt;br /&gt; {&lt;br /&gt; __LOG(LOG_SRC_APP, LOG_LEVEL_INFO, &amp;quot;Restored: Handles \n&amp;quot;);&lt;br /&gt; prov_helper_device_handles_load();&lt;br /&gt; }&lt;/p&gt;
&lt;p&gt;node_setup_cb_set(app_config_successful_cb, app_config_failed_cb);&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;static void initialize(void)&lt;br /&gt;{&lt;/p&gt;
&lt;p&gt;__LOG_INIT(LOG_SRC_APP | LOG_SRC_ACCESS, LOG_LEVEL_INFO, LOG_CALLBACK_DEFAULT);&lt;br /&gt; __LOG(LOG_SRC_APP, LOG_LEVEL_INFO, &amp;quot;----- BLE Mesh Light Switch Proxy Client Demo -----\n&amp;quot;);&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;#if BUTTON_BOARD&lt;br /&gt; ERROR_CHECK(hal_buttons_init(button_event_handler));&lt;br /&gt;#endif&lt;/p&gt;
&lt;p&gt;&lt;br /&gt; ERROR_CHECK(app_timer_init());&lt;br /&gt; hal_leds_init();&lt;/p&gt;
&lt;p&gt;#if BUTTON_BOARD&lt;br /&gt; ERROR_CHECK(hal_buttons_init(button_event_handler));&lt;br /&gt;#endif&lt;br /&gt; uint32_t err_code = nrf_sdh_enable_request();&lt;br /&gt; APP_ERROR_CHECK(err_code);&lt;/p&gt;
&lt;p&gt;uint32_t ram_start = 0;&lt;br /&gt; /* Set the default configuration (as defined through sdk_config.h). */&lt;br /&gt; err_code = nrf_sdh_ble_default_cfg_set(MESH_SOFTDEVICE_CONN_CFG_TAG, &amp;amp;ram_start);&lt;br /&gt; APP_ERROR_CHECK(err_code);&lt;/p&gt;
&lt;p&gt;err_code = nrf_sdh_ble_enable(&amp;amp;ram_start);&lt;br /&gt; APP_ERROR_CHECK(err_code);&lt;/p&gt;
&lt;p&gt;gap_params_init();&lt;br /&gt; conn_params_init();&lt;/p&gt;
&lt;p&gt;mesh_init(); &lt;br /&gt; &lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;static void start(void)&lt;br /&gt;{&lt;br /&gt; // rtt_input_enable(rtt_input_handler, RTT_INPUT_POLL_PERIOD_MS);&lt;/p&gt;
&lt;p&gt;__LOG(LOG_SRC_APP, LOG_LEVEL_INFO, &amp;quot;start mesh stack\n&amp;quot;);&lt;br /&gt; ERROR_CHECK(mesh_stack_start());&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;lt;t: 0&amp;gt;, main.c, 679, ----- BLE Mesh Light Switch Proxy Client Demo -----&lt;br /&gt;&amp;lt;t: 0&amp;gt;, app_timer.c, 935, ----- app timer inited -----&lt;br /&gt;&amp;lt;t: 14&amp;gt;, main.c, 633, ----- GAP Init-----&lt;br /&gt;&amp;lt;t: 18&amp;gt;, main.c, 671, ----- BLE conn_para init-----&lt;br /&gt;&amp;lt;t: 553&amp;gt;, main.c, 538, Initializing and adding models&lt;br /&gt;&amp;lt;t: 564&amp;gt;, main.c, 614, Setup defaults: Adding keys, addresses, and bindings &lt;br /&gt;&amp;lt;t: 726&amp;gt;, provisioner_helper.c, 329, netkey_handle: 0&lt;br /&gt;&amp;lt;t: 735&amp;gt;, main.c, 506, Model bind &lt;br /&gt;&amp;lt;t: 737&amp;gt;, main.c, 290, App data store&lt;br /&gt;&amp;lt;t: 740&amp;gt;, main.c, 727, start mesh stack&lt;br /&gt;&amp;lt;t: 749&amp;gt;, proxy.c, 836, Proxy Enabled&lt;br /&gt;&amp;lt;t: 752&amp;gt;, app_error_weak.c, 95, Mesh assert at 0x0002C730 (:0)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: NRF BLE Mesh SDK: Combine provisioner role with the Mesh client (provisionee) role</title><link>https://devzone.nordicsemi.com/thread/144049?ContentTypeID=1</link><pubDate>Tue, 14 Aug 2018 05:50:50 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:493eb3eb-c6a6-46d9-a420-16f032a4348d</guid><dc:creator>amiramin</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;So to combine the proviosioner role with the mesh client, the client need to provision all the mesh server nodes and also provision itself (set unicast address, netkey and device key) and configure itself (set appkey etc). Can you point me to part of code in sdk1.0.1 client application which is doing that?&lt;/p&gt;
&lt;p&gt;I also found prov_helper_provision_self() function in nrf5_SDK_for_Mesh_v2.1.1_src\examples\light_switch\provisioner\src\provisioner_helper.c file. Apparently, provisional using this function before provisioning other devices. Can this function be used to self-configure the client in this case?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: NRF BLE Mesh SDK: Combine provisioner role with the Mesh client (provisionee) role</title><link>https://devzone.nordicsemi.com/thread/143983?ContentTypeID=1</link><pubDate>Mon, 13 Aug 2018 13:32:46 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5e2af3ef-d9d2-48fb-a4ce-fa9f29b46377</guid><dc:creator>Mttrinh</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Yes, it is certainly possible to combine the client role and provisioner role into one application. If you look at the &lt;a href="http://infocenter.nordicsemi.com/topic/com.nordic.infocenter.meshsdk.v1.0.1/md_examples_light_switch_README.html?cp=4_1_1_5_0" target="_blank" rel="noopener noreferrer"&gt;light switch example&lt;/a&gt; from Mesh SDK v1.0.x, you will find that the provisioner and the client node were the same. I have attached Mesh SDK v1.0.1, have a look at the light switch client example.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/support-attachments/beef5d1b77644c448dabff31668f3a47-5397dfd6556f44eebd3aab332531b277/nrf5_5F00_SDK_5F00_for_5F00_Mesh_5F00_v1.0.1_5F00_src.zip"&gt;devzone.nordicsemi.com/.../nrf5_5F00_SDK_5F00_for_5F00_Mesh_5F00_v1.0.1_5F00_src.zip&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>