<?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>Target Wake Time (TWT) on nRF7002-DK is not working properly</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/96037/target-wake-time-twt-on-nrf7002-dk-is-not-working-properly</link><description>Hi, 
 I wrote an application based on the wifi-sta sample to test the Target Wake Time (TWT) feature and measure the current consumption while the nRF7002 is in sleep mode. 
 My test-setup consists of one nRF7002-DK operating as &amp;quot;Wifi-sta&amp;quot; and one Fritz</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Mon, 20 Mar 2023 15:54:24 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/96037/target-wake-time-twt-on-nrf7002-dk-is-not-working-properly" /><item><title>RE: Target Wake Time (TWT) on nRF7002-DK is not working properly</title><link>https://devzone.nordicsemi.com/thread/416349?ContentTypeID=1</link><pubDate>Mon, 20 Mar 2023 15:54:24 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e8c9ed63-470c-4a5a-a33f-f9913ec612c9</guid><dc:creator>dejans</dc:creator><description>&lt;p&gt;Hi Tareq,&lt;br /&gt;&lt;br /&gt;STA sample should now work with UDP Rx and TWT. Please have a look at&amp;nbsp;&lt;a href="https://github.com/D-Triveni/sdk-nrf/commits/sta_sample_twt_test"&gt;TWT test with STA&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Best regards,&lt;br /&gt;Dejan&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Target Wake Time (TWT) on nRF7002-DK is not working properly</title><link>https://devzone.nordicsemi.com/thread/416095?ContentTypeID=1</link><pubDate>Fri, 17 Mar 2023 16:40:43 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:aa18f9c8-5799-484e-b7d5-78a0d587f7ad</guid><dc:creator>Tareq-M</dc:creator><description>&lt;p&gt;Hi Dejan,&lt;/p&gt;
&lt;p&gt;Thank you for your replay.&lt;/p&gt;
&lt;p&gt;I got this Error when setting the &lt;a href="https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/kconfig/index.html#CONFIG_POSIX_MAX_FDS"&gt;CONFIG_POSIX_MAX_FDS&lt;/a&gt; = 16 &lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;[0/1] Re-running CMake...
Loading Zephyr default modules (Zephyr base (cached)).
-- Application: /home/tareq/Projects/Einvorment-test-repo/Test-shell
-- Cache files will be written to: /home/tareq/.cache/zephyr
-- Zephyr version: 3.2.99 (/home/tareq/ncs/v2.3.0/zephyr)
-- Found west (found suitable version &amp;quot;0.14.0&amp;quot;, minimum required is &amp;quot;0.7.1&amp;quot;)
-- Board: nrf7002dk_nrf5340_cpuapp
-- Found host-tools: zephyr 0.15.2 (/home/tareq/ncs/toolchains/v2.3.0/opt/zephyr-sdk)
-- Found toolchain: zephyr 0.15.2 (/home/tareq/ncs/toolchains/v2.3.0/opt/zephyr-sdk)
-- Found BOARD.dts: /home/tareq/ncs/v2.3.0/nrf/boards/arm/nrf7002dk_nrf5340/nrf7002dk_nrf5340_cpuapp.dts
-- Generated zephyr.dts: /home/tareq/Projects/Einvorment-test-repo/Test-shell/build/zephyr/zephyr.dts
-- Generated devicetree_generated.h: /home/tareq/Projects/Einvorment-test-repo/Test-shell/build/zephyr/include/generated/devicetree_generated.h
-- Including generated dts.cmake file: /home/tareq/Projects/Einvorment-test-repo/Test-shell/build/zephyr/dts.cmake
Parsing /home/tareq/ncs/v2.3.0/zephyr/Kconfig
Loaded configuration &amp;#39;/home/tareq/ncs/v2.3.0/nrf/boards/arm/nrf7002dk_nrf5340/nrf7002dk_nrf5340_cpuapp_defconfig&amp;#39;
Merged configuration &amp;#39;/home/tareq/Projects/Einvorment-test-repo/Test-shell/prj.conf&amp;#39;
Merged configuration &amp;#39;/home/tareq/Projects/Einvorment-test-repo/Test-shell/build/zephyr/misc/generated/extra_kconfig_options.conf&amp;#39;

warning: Experimental symbol NET_SOCKETPAIR is enabled.


/home/tareq/Projects/Einvorment-test-repo/Test-shell/prj.conf:22: warning: attempt to assign the value &amp;#39;16&amp;#39; to the undefined symbol POSIX_MAX_FDS 

error: Aborting due to Kconfig warnings

CMake Error at /home/tareq/ncs/v2.3.0/zephyr/cmake/modules/kconfig.cmake:328 (message):
  command failed with return code: 1
Call Stack (most recent call first):
  /home/tareq/ncs/v2.3.0/nrf/cmake/modules/kconfig.cmake:29 (include)
  /home/tareq/ncs/v2.3.0/zephyr/cmake/modules/zephyr_default.cmake:108 (include)
  /home/tareq/ncs/v2.3.0/zephyr/share/zephyr-package/cmake/ZephyrConfig.cmake:66 (include)
  /home/tareq/ncs/v2.3.0/zephyr/share/zephyr-package/cmake/ZephyrConfig.cmake:97 (include_boilerplate)
  CMakeLists.txt:9 (find_package)


-- Configuring incomplete, errors occurred!
See also &amp;quot;/home/tareq/Projects/Einvorment-test-repo/Test-shell/build/CMakeFiles/CMakeOutput.log&amp;quot;.
See also &amp;quot;/home/tareq/Projects/Einvorment-test-repo/Test-shell/build/CMakeFiles/CMakeError.log&amp;quot;.
FAILED: build.ninja 
/home/tareq/ncs/toolchains/v2.3.0/usr/local/lib/python3.8/site-packages/cmake/data/bin/cmake --regenerate-during-build -S/home/tareq/Projects/Einvorment-test-repo/Test-shell -B/home/tareq/Projects/Einvorment-test-repo/Test-shell/build
ninja: error: rebuilding &amp;#39;build.ninja&amp;#39;: subcommand failed
FATAL ERROR: command exited with status 1: /home/tareq/ncs/toolchains/v2.3.0/usr/local/bin/cmake --build /home/tareq/Projects/Einvorment-test-repo/Test-shell/build&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I can not enable &amp;nbsp;&lt;a href="https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/kconfig/index.html#CONFIG_POSIX_API"&gt;CONFIG_POSIX_API&lt;/a&gt; because when i enable it i will have to disable &lt;span style="text-decoration:underline;"&gt;CONFIG_NET_SOCKETS_POSIX_NAMES&lt;/span&gt; which will cause a lot of errors in the code!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Do you have another solution for that problem? &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Have you tested the TWT feature with UDP server on the Wi-Fi Shell sample (from NCS v2.3.0)?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Did that work successfully?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Thanks in advance!&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Tareq&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Target Wake Time (TWT) on nRF7002-DK is not working properly</title><link>https://devzone.nordicsemi.com/thread/415912?ContentTypeID=1</link><pubDate>Fri, 17 Mar 2023 08:56:52 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ec1a263d-2d55-4892-a49f-f73af6ce9c37</guid><dc:creator>dejans</dc:creator><description>&lt;p&gt;Hi Tareq,&lt;br /&gt;&lt;br /&gt;You set CONFIG_POSIX_API=n in your prj.conf which gives default value 4 for maximum number of open file descriptors. You could try increasing maximum number of open file descriptors &lt;a href="https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/kconfig/index.html#CONFIG_POSIX_MAX_FDS"&gt;CONFIG_POSIX_MAX_FDS&lt;/a&gt;&amp;nbsp;to 16 or enabling&amp;nbsp;&lt;a href="https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/kconfig/index.html#CONFIG_POSIX_API"&gt;CONFIG_POSIX_API&lt;/a&gt;&amp;nbsp;in your prj.conf.&lt;br /&gt;&lt;br /&gt;Best regards,&lt;br /&gt;Dejan&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Target Wake Time (TWT) on nRF7002-DK is not working properly</title><link>https://devzone.nordicsemi.com/thread/415734?ContentTypeID=1</link><pubDate>Thu, 16 Mar 2023 13:48:01 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f40f68e8-a388-4196-9126-f535bcbd2325</guid><dc:creator>Tareq-M</dc:creator><description>&lt;p&gt;Hi Dejan,&lt;/p&gt;
&lt;p&gt;Thank you for your reply.&lt;/p&gt;
&lt;p&gt;I have used the Shell sample from NCS v2.3.0 to test the TWT with UDP Server.&lt;/p&gt;
&lt;p&gt;1) Compile shell sample with zperf: Done successfully&lt;/p&gt;
&lt;p&gt;2) Connect to AP: Done successfully&lt;br /&gt;3) Setup TWT: Done successfully with twt quick_setup 10 5000&lt;/p&gt;
&lt;p&gt;4) Run UDP RX: Socket creation failed! &lt;/p&gt;
&lt;p&gt;As you can see in the screenshoot the creation of the UDP-Socket always fails.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:240px;max-width:320px;" alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/Screenshot-from-2023_2D00_03_2D00_16-14_2D00_29_2D00_02.png" /&gt;&lt;/p&gt;
&lt;p&gt;This is the case when the NCS v2.3.0 or the NCS v2.3.0-rc. But when using &lt;span style="text-decoration:underline;"&gt;the same code&lt;/span&gt; with the NCS v2.2 the UDP Server works fine!&lt;/p&gt;
&lt;p&gt;Here is the code i am using for the test:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;/*
 * Copyright (c) 2022 Nordic Semiconductor ASA
 *
 * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
 */

/** @file
 * @brief WiFi shell sample main function
 */
#include &amp;lt;zephyr/logging/log.h&amp;gt;
LOG_MODULE_REGISTER(codi, LOG_LEVEL_DBG);

#include &amp;lt;nrfx_clock.h&amp;gt;
#include &amp;lt;zephyr/kernel.h&amp;gt;
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;zephyr/shell/shell.h&amp;gt;
#include &amp;lt;zephyr/sys/printk.h&amp;gt;
#include &amp;lt;zephyr/net/socket.h&amp;gt;
//#include &amp;lt;zephyr/net/net_config.h&amp;gt;

// For buttons and LEDs
#include &amp;lt;zephyr/device.h&amp;gt;
#include &amp;lt;zephyr/devicetree.h&amp;gt;
#include &amp;lt;zephyr/drivers/gpio.h&amp;gt;



#define PORT	 1337
#define MAXLINE 1024
#define IP_ADDR &amp;quot;192.168.178.24&amp;quot;
#define Receive_Stack    1024

/* size of stack area used by each thread */
#define STACKSIZE 2048

/* scheduling priority used by each thread */
#define PRIORITY 7

//STEP 1
/* SW0_NODE is the devicetree node identifier for the node with alias &amp;quot;sw0&amp;quot; */
#define SW0_NODE	DT_ALIAS(sw0) 
static const struct gpio_dt_spec button = GPIO_DT_SPEC_GET(SW0_NODE, gpios);

//STEP 1
/* LED0_NODE is the devicetree node identifier for the node with alias &amp;quot;led0&amp;quot;. */
#define LED0_NODE	DT_ALIAS(led0)
static const struct gpio_dt_spec led = GPIO_DT_SPEC_GET(LED0_NODE, gpios);

//Swtich_state variables struct
typedef struct 
{
    int state; // 1 for on, 0 for off
} States;
States udpSocket;
	

/* STEP 5 - Define the callback function */
void button_pressed(const struct device *dev, struct gpio_callback *cb, uint32_t pins)
{
    gpio_pin_toggle_dt(&amp;amp;led);
}	

/* STEP 6 - Define a variable of type static struct gpio_callback */
static struct gpio_callback button_cb_data;


int send_udp_datagram(const struct shell *shell, size_t argc,
                char *argv[]) {
	shell_fprintf(shell, SHELL_ERROR, &amp;quot;Enterd Ip address: %s: \n&amp;quot;, argv[1]);
	
	int err;
	struct sockaddr_in server;

	server.sin_family = AF_INET;
	server.sin_port = htons(1337);
	//if (inet_pton(AF_INET, IP_ADDR, &amp;amp;server.sin_addr) != 1) {
	if (inet_pton(AF_INET, argv[1], &amp;amp;server.sin_addr) != 1) {
		//LOG_ERR(&amp;quot;Could not convert IP addr %s\n&amp;quot;, IP_ADDR);
		LOG_ERR(&amp;quot;Could not convert IP addr %s\n&amp;quot;, argv[1]);
		return -1;
	}

	int coap_socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
	if (coap_socket &amp;lt; 0) {
		LOG_ERR(&amp;quot;Failed to create CoAP socket: %d.\n&amp;quot;, errno);
		return -errno;
	}

	err = connect(coap_socket, (struct sockaddr *)&amp;amp;server,sizeof(struct sockaddr_in));
	if (err &amp;lt; 0) {
		LOG_ERR(&amp;quot;Failed to connect UDP socket (err %d)\n&amp;quot;, err);
		return err;
	}

	const char * payload = &amp;quot;Hello from the nRF7002&amp;quot;;
	
	err = send(coap_socket, payload, strlen(payload), 0);
	if (err &amp;lt; 0) {
		LOG_ERR(&amp;quot;Failed to send message via UDP socket (errno %d)\n&amp;quot;, -errno);
		return -errno;
	}
	
	err = sendto(coap_socket, payload, strlen(payload),0, (struct sockaddr *)&amp;amp;server, sizeof(struct sockaddr_in));
	if (err &amp;lt; 0) {
		LOG_ERR(&amp;quot;Failed to send message via UDP socket (errno %d)\n&amp;quot;, -errno);
		return -errno;
	}
	LOG_INF(&amp;quot;Message sent&amp;quot;);
	

	close(coap_socket);

	return 0;
	k_yield();
}


int udp_server(void) {
	int sockfd;
	char buffer[MAXLINE];
	struct sockaddr_in servaddr, cliaddr;
	
	// Creating socket file descriptor
	if ( (sockfd = socket(AF_INET, SOCK_DGRAM, 0)) &amp;lt; 0 ) {
		printk(&amp;quot;socket creation failed&amp;quot;);
		return -errno;
	}
		
	memset(&amp;amp;servaddr, 0, sizeof(servaddr));
	memset(&amp;amp;cliaddr, 0, sizeof(cliaddr));
	memset(&amp;amp;buffer, 0, sizeof(buffer));
	// Filling server information
	servaddr.sin_family = AF_INET; // IPv4
	servaddr.sin_addr.s_addr = INADDR_ANY;
	servaddr.sin_port = htons(PORT);
	
	// Bind the socket with the server address
	if ( bind(sockfd, (const struct sockaddr *)&amp;amp;servaddr,
			sizeof(servaddr)) &amp;lt; 0 )
	{
		printk(&amp;quot;bind faileed&amp;quot;);
		return -errno;
	}
	
	int len, n;
	len = sizeof(cliaddr); //len is value/result

	while(true) {		
		n = recvfrom(sockfd, (char *)buffer, MAXLINE,
		 			MSG_WAITALL, ( struct sockaddr *) &amp;amp;cliaddr,
		 			&amp;amp;len);
		// n = recv(sockfd, (char *)buffer, sizeof(buffer),
		//  			MSG_DONTWAIT);
		buffer[n] = &amp;#39;\0&amp;#39;;
		//printk(&amp;quot;Message client : %s\n&amp;quot;, buffer);
		printk(&amp;quot;%s\n&amp;quot;, buffer);
		if(buffer[0]== &amp;#39;q&amp;#39; || gpio_pin_get_dt(&amp;amp;button) == 1)
		{	
			close(sockfd);
			break;
		}
		//memset(&amp;amp;buffer, 0, sizeof(buffer));
		
			}
		
		printk(&amp;quot;Close the socket\n&amp;quot;);
		if(udpSocket.state==0)
		{
			close(sockfd);
		}
		k_yield();
	return 0;
}

int sett(void)
{
	//resceiveSwitch = 1;
	//k_thread_resume(udp_server_tid);
	printf(&amp;quot;Start receive\n&amp;quot;);
	//udp_server(button1.state);
	//return 0;
	k_yield();
}
int unsett(void)
{
	//resceiveSwitch = 0;
	//k_thread_suspend(udp_server_tid);
	printf(&amp;quot;what would you like me to do?\n&amp;quot;);
	//return 0;
	k_yield();
}

//K_THREAD_DEFINE(send_udp_datagram_id, STACKSIZE, send_udp_datagram, NULL, NULL, NULL,PRIORITY, 0, 0);
K_THREAD_DEFINE(udp_server_tid, STACKSIZE, udp_server, NULL, NULL, NULL,6, 0, 0);

int start_udp_server_as_aThread(void)
{	
	udpSocket.state =1;
	printf(&amp;quot;Start receive\n&amp;quot;);
	k_thread_resume(udp_server_tid);	
}
int stop_udp_server_as_aThread(void)
{	
	udpSocket.state =0;
	printf(&amp;quot;Stop receive\n&amp;quot;);
	k_thread_suspend(udp_server_tid);
}

	
	
//K_THREAD_DEFINE(sett_id, STACKSIZE, sett, NULL, NULL, NULL,PRIORITY, 0, 2000);
//K_THREAD_DEFINE(unsett_id, STACKSIZE, unsett, NULL, NULL, NULL,PRIORITY, 0, 0);

void main(void)
{	
	k_thread_suspend(udp_server_tid);
	
	// #ifdef CLOCK_FEATURE_HFCLK_DIVIDE_PRESENT
	// /* For now hardcode to 128MHz */
	// nrfx_clock_divider_set(NRF_CLOCK_DOMAIN_HFCLK,
	// 		       NRF_CLOCK_HFCLK_DIV_1);
	// #endif
	// printk(&amp;quot;Starting %s with CPU frequency: %d MHz\n&amp;quot;, CONFIG_BOARD, SystemCoreClock/MHZ(1));

	// #ifdef CONFIG_NET_CONFIG_SETTINGS
	// /* Without this, DHCPv4 starts on first interface and if that is not Wi-Fi or
	//  * only supports IPv6, then its an issue. (E.g., OpenThread)
	//  *
	//  * So, we start DHCPv4 on Wi-Fi interface always, independent of the ordering.
	//  */
	// /* TODO: Replace device name with DTS settings later */
	// const struct device *dev = device_get_binding(&amp;quot;wlan0&amp;quot;);

	// net_config_init_app(dev, &amp;quot;Initializing network&amp;quot;);
	// #endif
	
	int ret;
	//STEP 2
	if (!device_is_ready(led.port)) {
		return;
	}
	//STEP 2
	if (!device_is_ready(button.port)) {
		return;
	}
	//STEP 3
	ret = gpio_pin_configure_dt(&amp;amp;led, GPIO_OUTPUT_ACTIVE);
	if (ret &amp;lt; 0) {
		return;
	}
	//STEP 3
	ret = gpio_pin_configure_dt(&amp;amp;button, GPIO_INPUT);
	if (ret &amp;lt; 0) {
		return;
	}
	

	/* STEP 4 - Configure the interrupt on the button&amp;#39;s pin */
	ret = gpio_pin_interrupt_configure_dt(&amp;amp;button, GPIO_INT_EDGE_TO_ACTIVE );

	/* STEP 7 - Initialize the static struct gpio_callback variable   */
    gpio_init_callback(&amp;amp;button_cb_data, button_pressed, BIT(button.pin)); 	

	/* STEP 8 - Add the callback function by calling gpio_add_callback()   */
	 gpio_add_callback(button.port, &amp;amp;button_cb_data);


	//Shell create and rigester for udp functions
	SHELL_STATIC_SUBCMD_SET_CREATE(
        g_udp_cmds,
        SHELL_CMD_ARG(send_data, NULL,
            &amp;quot;Send udp message\n&amp;quot;,
            send_udp_datagram, 0, 0),
        SHELL_CMD_ARG(recv_data, NULL,
            &amp;quot;Start udp receive function\n To stop the receiveing send &amp;#39;q&amp;#39; from the client or push the Button 1&amp;quot;,
            udp_server, 0, 0),
			SHELL_CMD_ARG(recv_data_th, NULL,
            &amp;quot;start udp recv thread\n&amp;quot;,
            start_udp_server_as_aThread, 0, 0),
			SHELL_CMD_ARG(stop_recv_data_th, NULL,
            &amp;quot;stop udp recv thread\n&amp;quot;,
            stop_udp_server_as_aThread, 0, 0),
        SHELL_SUBCMD_SET_END
        );
 
    SHELL_CMD_REGISTER(udp, &amp;amp;g_udp_cmds, &amp;quot;start or stop udp recv&amp;quot;, NULL);

#ifdef CLOCK_FEATURE_HFCLK_DIVIDE_PRESENT
	/* For now hardcode to 128MHz */
	nrfx_clock_divider_set(NRF_CLOCK_DOMAIN_HFCLK,
			       NRF_CLOCK_HFCLK_DIV_1);
#endif
	printk(&amp;quot;Starting %s with CPU frequency: %d MHz\n&amp;quot;, CONFIG_BOARD, SystemCoreClock/MHZ(1));
	k_sleep(K_SECONDS(1));
//	send_udp_datagram();
//	udp_server();
//k_yield();
}







&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;prj.conf&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;#
# Copyright (c) 2022 Nordic Semiconductor ASA
#
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
#
CONFIG_WIFI=y
CONFIG_WIFI_NRF700X=y

# WPA supplicant
CONFIG_WPA_SUPP=y
CONFIG_NET_L2_WIFI_SHELL=y

# System settings
CONFIG_NEWLIB_LIBC=y
CONFIG_NEWLIB_LIBC_NANO=n

# Networking
CONFIG_NETWORKING=y
CONFIG_NET_SOCKETS=y
CONFIG_POSIX_API=n
CONFIG_NET_SOCKETS_POSIX_NAMES=y
CONFIG_NET_LOG=y
CONFIG_NET_IPV6=y
CONFIG_NET_IPV4=y
CONFIG_NET_UDP=y
CONFIG_NET_TCP=y
CONFIG_NET_DHCPV4=y
CONFIG_DNS_RESOLVER=y

CONFIG_NET_STATISTICS=y
CONFIG_NET_STATISTICS_WIFI=y
CONFIG_NET_STATISTICS_USER_API=y

CONFIG_NET_PKT_RX_COUNT=8
CONFIG_NET_PKT_TX_COUNT=8

# Below section is the primary contributor to SRAM and is currently
# tuned for performance, but this will be revisited in the future.
CONFIG_NET_BUF_RX_COUNT=16
CONFIG_NET_BUF_TX_COUNT=16
CONFIG_NET_BUF_DATA_SIZE=128
CONFIG_HEAP_MEM_POOL_SIZE=153600
CONFIG_NET_TC_TX_COUNT=1

CONFIG_NET_IF_UNICAST_IPV6_ADDR_COUNT=4
CONFIG_NET_IF_MCAST_IPV6_ADDR_COUNT=5
CONFIG_NET_MAX_CONTEXTS=5
CONFIG_NET_CONTEXT_SYNC_RECV=y

CONFIG_INIT_STACKS=y

CONFIG_NET_L2_ETHERNET=y
CONFIG_NET_SHELL=y

CONFIG_NET_CONFIG_SETTINGS=y
#CONFIG_NET_CONFIG_MY_IPV6_ADDR=&amp;quot;2001:db8::1&amp;quot;
#CONFIG_NET_CONFIG_PEER_IPV6_ADDR=&amp;quot;2001:db8::2&amp;quot;
#Just temporalaly until it gets a new IP from the Wifi AP
CONFIG_NET_CONFIG_MY_IPV4_ADDR=&amp;quot;192.168.188.150&amp;quot;
#CONFIG_NET_CONFIG_PEER_IPV4_ADDR=&amp;quot;192.165.100.1&amp;quot;
CONFIG_NET_SOCKETS_POLL_MAX=4

# Memories
CONFIG_MAIN_STACK_SIZE=4096
CONFIG_SHELL_STACK_SIZE=4096
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048
CONFIG_NET_TX_STACK_SIZE=4096
CONFIG_NET_RX_STACK_SIZE=4096

# Debugging
CONFIG_STACK_SENTINEL=y
CONFIG_DEBUG_COREDUMP=y
CONFIG_DEBUG_COREDUMP_BACKEND_LOGGING=y
CONFIG_DEBUG_COREDUMP_MEMORY_DUMP_MIN=y
CONFIG_SHELL_CMDS_RESIZE=n
#CONFIG_DEBUG=y
CONFIG_WPA_SUPP_LOG_LEVEL_INF=y

# Kernel options
CONFIG_ENTROPY_GENERATOR=y

# Logging
CONFIG_LOG=y
CONFIG_PRINTK=y
CONFIG_SHELL=y
CONFIG_SHELL_GETOPT=y
CONFIG_DEVICE_SHELL=y
CONFIG_POSIX_CLOCK=y
CONFIG_DATE_SHELL=y
CONFIG_NET_CONFIG_AUTO_INIT=n

CONFIG_WIFI_MGMT_EXT=y
CONFIG_WIFI_CREDENTIALS=y
CONFIG_WIFI_CREDENTIALS_BACKEND_SETTINGS=y
CONFIG_FLASH=y
CONFIG_FLASH_PAGE_LAYOUT=y
CONFIG_FLASH_MAP=y
CONFIG_NVS=y
CONFIG_SETTINGS=y
CONFIG_SETTINGS_NVS=y&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Have you tested the TWT feature with udp server on the Wi-Fi Shell sample (from NCS v2.3.0)?&lt;/p&gt;
&lt;p&gt;Did that work successfully?&lt;/p&gt;
&lt;p&gt;If yes, can you provide me with the code that you have used for the test ? and also with the name of the AP that you have used in your test setup.&lt;/p&gt;
&lt;p&gt;Thanks in advance!&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Tareq&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Target Wake Time (TWT) on nRF7002-DK is not working properly</title><link>https://devzone.nordicsemi.com/thread/414703?ContentTypeID=1</link><pubDate>Fri, 10 Mar 2023 15:03:05 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5ff440a2-130a-49d2-9217-24107eed65ef</guid><dc:creator>dejans</dc:creator><description>&lt;p&gt;Hi Tareq,&lt;br /&gt;&lt;br /&gt;Could you try using Wi-Fi Shell sample (from NCS v2.3.0) instead of STA? Please use 4 steps shown below and provide results.&lt;br /&gt;&lt;br /&gt;1) Compile shell sample with zperf&lt;br /&gt;2) Connect to AP&lt;br /&gt;3) Setup TWT&lt;br /&gt;4) Run UDP RX&lt;br /&gt;&lt;br /&gt;Best regards,&lt;br /&gt;Dejan&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Target Wake Time (TWT) on nRF7002-DK is not working properly</title><link>https://devzone.nordicsemi.com/thread/414452?ContentTypeID=1</link><pubDate>Thu, 09 Mar 2023 15:54:47 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:46a5ae92-5a9a-44c8-93d4-6436d9a27dd5</guid><dc:creator>dejans</dc:creator><description>&lt;p&gt;Hi Tareq,&lt;br /&gt;&lt;br /&gt;Could you provide wireless sniffer capture for all experiments?&lt;br /&gt;&lt;br /&gt;Best regards,&lt;br /&gt;Dejan&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Target Wake Time (TWT) on nRF7002-DK is not working properly</title><link>https://devzone.nordicsemi.com/thread/413324?ContentTypeID=1</link><pubDate>Fri, 03 Mar 2023 17:18:48 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:12922f5e-42c8-4977-b58a-ab95df784ca0</guid><dc:creator>dejans</dc:creator><description>&lt;p&gt;Hi Tareq,&lt;br /&gt;&lt;br /&gt;We would need to investigate this issue further. Please note that looking into this issue might require longer time. I&amp;#39;ll get back to you when I get new information.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;Best regards,&lt;br /&gt;Dejan&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Target Wake Time (TWT) on nRF7002-DK is not working properly</title><link>https://devzone.nordicsemi.com/thread/411746?ContentTypeID=1</link><pubDate>Thu, 23 Feb 2023 16:53:57 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b79cd881-a6df-4af4-8032-2209eb7331e3</guid><dc:creator>dejans</dc:creator><description>&lt;p&gt;Hi Tareq,&lt;br /&gt;&lt;br /&gt;Thank you for providing the results of your experiments. I&amp;#39;ll get back to you when I get new information related to this issue, probably during next week.&lt;br /&gt;&lt;br /&gt;Best regards,&lt;br /&gt;Dejan&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Target Wake Time (TWT) on nRF7002-DK is not working properly</title><link>https://devzone.nordicsemi.com/thread/411397?ContentTypeID=1</link><pubDate>Wed, 22 Feb 2023 14:00:14 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f0b347ef-4d79-48c5-bda6-46645f946a4e</guid><dc:creator>Tareq-M</dc:creator><description>&lt;p&gt;Hi dejans,&lt;br /&gt;Thank you for your reply.&lt;/p&gt;
&lt;p&gt;The results for the Experiment 2&lt;span&gt;&lt;span dir="ltr"&gt;&lt;br /&gt; 1) Connect to AP&amp;nbsp;: successful&lt;br /&gt; 2) Create Static ARP table at both devices &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;The command (# arp -s 192.168.0.65 00:50:ba:85:85:ca) worked on the udp-client device Laptop (ubuntu) but not on the udp-server device(nRF7002-dk). See next image:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;&lt;img style="max-height:240px;max-width:320px;" alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/Screenshot-from-2023_2D00_02_2D00_22-13_2D00_36_2D00_57.png" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span dir="ltr"&gt;&lt;br /&gt; 3) Setup TWT : successful for three variants:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;For: 0 0 1 1 1 1 1 1 100 3000&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;and for: 0 0 1 1 1 1 1 1 100 15000&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;and for: 0 0 1 1 1 1 1 1 100 10000&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;The results were: &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;For: 0 0 1 1 1 1 1 1 100 3000&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;The udp-server was able to receive some of the messages but not all of them! &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;See the next image:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;&lt;img style="max-height:240px;max-width:320px;" alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/Screenshot-from-2023_2D00_02_2D00_22-13_2D00_39_2D00_14.png" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;For: 0 0 1 1 1 1 1 1 100 15000&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;The udp-server was able to receive just the second message and then no more! &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;&lt;img style="max-height:240px;max-width:320px;" alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/Screenshot-from-2023_2D00_02_2D00_22-14_2D00_15_2D00_35.png" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;For: 0 0 1 1 1 1 1 1 100 10000&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;Again the udp-server was able to receive some of the messages but not all of them until the &amp;lt;inf&amp;gt; message came. After that udp-server was not able to receive any messages. &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;&lt;img style="max-height:240px;max-width:320px;" alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/Screenshot-from-2023_2D00_02_2D00_22-14_2D00_21_2D00_42.png" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;I&amp;#39;ve also found that there&amp;#39;s a higher chance of receiving a message if the message is sent just before the UDP-server device wakes up.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;In this test the ncs v2.2.0 was used. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;As Wifi 6 AP the FRITZ!Box 6690 was used.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;Here is the used code:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;&lt;pre class="ui-code" data-mode="text"&gt;/* Minimal UDP+Shell source code (was tested on nRF connect sdk 2.22) 
 * Copyright (c) 2012-2014 Wind River Systems, Inc.
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include &amp;lt;zephyr/logging/log.h&amp;gt;
LOG_MODULE_REGISTER(codi, LOG_LEVEL_DBG);

#include &amp;lt;nrfx_clock.h&amp;gt;
#include &amp;lt;zephyr/kernel.h&amp;gt;
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;zephyr/shell/shell.h&amp;gt;
#include &amp;lt;zephyr/sys/printk.h&amp;gt;
#include &amp;lt;zephyr/net/socket.h&amp;gt;


#define PORT	 1337
#define MAXLINE 1024
#define IP_ADDR &amp;quot;192.168.50.54&amp;quot;
#define Receive_Stack    1024


int send_udp_datagram(void) {
	int err;
	struct sockaddr_in server;

	server.sin_family = AF_INET;
	server.sin_port = htons(1337);
	if (inet_pton(AF_INET, IP_ADDR, &amp;amp;server.sin_addr) != 1) {
		LOG_ERR(&amp;quot;Could not convert IP addr %s\n&amp;quot;, IP_ADDR);
		return -1;
	}

	int coap_socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
	if (coap_socket &amp;lt; 0) {
		LOG_ERR(&amp;quot;Failed to create CoAP socket: %d.\n&amp;quot;, errno);
		return -errno;
	}

	err = connect(coap_socket, (struct sockaddr *)&amp;amp;server,sizeof(struct sockaddr_in));
	if (err &amp;lt; 0) {
		LOG_ERR(&amp;quot;Failed to connect UDP socket (err %d)\n&amp;quot;, err);
		return err;
	}

	const char * payload = &amp;quot;Hello from the nRF7002&amp;quot;;
	
	err = send(coap_socket, payload, strlen(payload), 0);
	if (err &amp;lt; 0) {
		LOG_ERR(&amp;quot;Failed to send message via UDP socket (errno %d)\n&amp;quot;, -errno);
		return -errno;
	}
	
	err = sendto(coap_socket, payload, strlen(payload),0, (struct sockaddr *)&amp;amp;server, sizeof(struct sockaddr_in));
	if (err &amp;lt; 0) {
		LOG_ERR(&amp;quot;Failed to send message via UDP socket (errno %d)\n&amp;quot;, -errno);
		return -errno;
	}
	LOG_INF(&amp;quot;Message sent&amp;quot;);
	

	close(coap_socket);

	return 0;
}


int udp_server(void) {
int sockfd;
	char buffer[MAXLINE];
	char *hello = &amp;quot;Hello from server&amp;quot;;
	struct sockaddr_in servaddr, cliaddr;
	
	// Creating socket file descriptor
	if ( (sockfd = socket(AF_INET, SOCK_DGRAM, 0)) &amp;lt; 0 ) {
		printk(&amp;quot;socket creation failed&amp;quot;);
		return -errno;
	}
		
	memset(&amp;amp;servaddr, 0, sizeof(servaddr));
	memset(&amp;amp;cliaddr, 0, sizeof(cliaddr));
	
	// Filling server information
	servaddr.sin_family = AF_INET; // IPv4
	servaddr.sin_addr.s_addr = INADDR_ANY;
	servaddr.sin_port = htons(PORT);
	
	// Bind the socket with the server address
	if ( bind(sockfd, (const struct sockaddr *)&amp;amp;servaddr,
			sizeof(servaddr)) &amp;lt; 0 )
	{
		printk(&amp;quot;bind faileed&amp;quot;);
		return -errno;
	}
	
	int len, n;
	len = sizeof(cliaddr); //len is value/result

	while(true) {		
		n = recvfrom(sockfd, (char *)buffer, MAXLINE,
		 			MSG_WAITALL, ( struct sockaddr *) &amp;amp;cliaddr,
		 			&amp;amp;len);
		buffer[n] = &amp;#39;\0&amp;#39;;
		printk(&amp;quot;Message client : %s\n&amp;quot;, buffer);
			}
		
	return 0;
}


void main(void)
{
#ifdef CLOCK_FEATURE_HFCLK_DIVIDE_PRESENT
	/* For now hardcode to 128MHz */
	nrfx_clock_divider_set(NRF_CLOCK_DOMAIN_HFCLK,
			       NRF_CLOCK_HFCLK_DIV_1);
#endif
	printk(&amp;quot;Starting %s with CPU frequency: %d MHz\n&amp;quot;, CONFIG_BOARD, SystemCoreClock/MHZ(1));
k_sleep(K_SECONDS(1));
send_udp_datagram();
udp_server();
}&lt;/pre&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;Experiment 3:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;I was not able to set the Legacy power mode on the nRF7002-dk using the ncs v2.2&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;See the next image: &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;&lt;img style="max-height:240px;max-width:320px;" alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/Screenshot-from-2023_2D00_02_2D00_20-16_2D00_57_2D00_22.png" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;So i tried to use the same code and the same configurations (prj.conf) in an new application created with ncs v3. The result was that i was able to set the legacy power mode but the creation of the udp socket was always not successful. I dont why is that. The creation of the udp socket with the same code work fine with the ncs v2.2.&lt;br /&gt;&lt;br /&gt;I will be thankful if you have new information that could help solve this problem.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;Best regards.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;Tareq&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Target Wake Time (TWT) on nRF7002-DK is not working properly</title><link>https://devzone.nordicsemi.com/thread/410902?ContentTypeID=1</link><pubDate>Mon, 20 Feb 2023 13:24:33 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:2f7c31c1-49b3-4092-9187-8d324865e1e3</guid><dc:creator>dejans</dc:creator><description>&lt;p&gt;Hi Tareq,&lt;br /&gt;&lt;br /&gt;I have reported the issue internally. I&amp;#39;ll get back to you when I get new information, hopefully during this week or the next one.&lt;br /&gt;&lt;br /&gt;Could you please provide the results of the other two experiments?&lt;br /&gt;&lt;br /&gt;Best regards,&lt;br /&gt;Dejan&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Target Wake Time (TWT) on nRF7002-DK is not working properly</title><link>https://devzone.nordicsemi.com/thread/410851?ContentTypeID=1</link><pubDate>Mon, 20 Feb 2023 10:57:08 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1e395940-1a07-4fb2-94cd-87f6ed51b394</guid><dc:creator>Tareq-M</dc:creator><description>&lt;p&gt;Here is also the C code :&lt;pre class="ui-code" data-mode="c_cpp"&gt;/*
 * Copyright (c) 2022 Nordic Semiconductor ASA
 *
 * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
 */

/** @file
 * @brief WiFi station sample
 */

#include &amp;lt;zephyr/logging/log.h&amp;gt;
LOG_MODULE_REGISTER(sta, LOG_LEVEL_DBG);

#include &amp;lt;nrfx_clock.h&amp;gt;
#include &amp;lt;zephyr/kernel.h&amp;gt;
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;zephyr/shell/shell.h&amp;gt;
#include &amp;lt;zephyr/sys/printk.h&amp;gt;
#include &amp;lt;zephyr/init.h&amp;gt;

#include &amp;lt;zephyr/net/net_if.h&amp;gt;
#include &amp;lt;zephyr/net/wifi_mgmt.h&amp;gt;
#include &amp;lt;zephyr/net/net_event.h&amp;gt;


#include &amp;lt;zephyr/net/socket.h&amp;gt;
#include &amp;lt;zephyr/net/net_mgmt.h&amp;gt;
#include &amp;lt;zephyr/net/net_ip.h&amp;gt;
#include &amp;lt;zephyr/net/udp.h&amp;gt;

//#include &amp;lt;zephyr/net/net_shell.h&amp;gt;
#include &amp;lt;sys/types.h&amp;gt; 
#include &amp;quot;net_private.h&amp;quot;

#define PORT	 1337
#define MAXLINE 1024
#define WIFI_SHELL_MODULE &amp;quot;wifi&amp;quot;

#define WIFI_SHELL_MGMT_EVENTS (NET_EVENT_WIFI_CONNECT_RESULT |		\
				NET_EVENT_WIFI_DISCONNECT_RESULT)

#define MAX_SSID_LEN        32

#define IP_ADDR &amp;quot;192.168.178.21&amp;quot;
#define Receive_Stack    1024


static struct net_mgmt_event_callback wifi_shell_mgmt_cb;
static struct net_mgmt_event_callback net_shell_mgmt_cb;

static struct {
	const struct shell *sh;
	union {
		struct {
			uint8_t disconnecting	: 1;
			uint8_t _unused		: 6;
		};
		uint8_t all;
	};
} context;



int udp_server(void) {

	int sockfd;
	char buffer[MAXLINE];
	char *hello = &amp;quot;Hello&amp;quot;;
	struct sockaddr_in servaddr, cliaddr;
	
	// Creating socket file descriptor
	if ( (sockfd = socket(AF_INET, SOCK_DGRAM, 0)) &amp;lt; 0 ) {
		LOG_ERR(&amp;quot;socket creation failed&amp;quot;);
		return -errno;
	}
		
	memset(&amp;amp;servaddr, 0, sizeof(servaddr));
	memset(&amp;amp;cliaddr, 0, sizeof(cliaddr));
		
	// Filling server information
	servaddr.sin_family = AF_INET; // IPv4
	servaddr.sin_addr.s_addr = INADDR_ANY;
	servaddr.sin_port = htons(PORT);
		
	// Bind the socket with the server address
	if ( bind(sockfd, (const struct sockaddr *)&amp;amp;servaddr,
			sizeof(servaddr)) &amp;lt; 0 )
	{
		LOG_ERR(&amp;quot;bind failed&amp;quot;);
		return -errno;
	}
		
	int len, n;
	len = sizeof(cliaddr); //len is value/result

	while(true) {		
		n = recvfrom(sockfd, (char *)buffer, MAXLINE,
		 			MSG_WAITALL, ( struct sockaddr *) &amp;amp;cliaddr,
		 			&amp;amp;len);
		buffer[n] = &amp;#39;\0&amp;#39;;
		printf(&amp;quot;Message client : %s\n&amp;quot;, buffer);	
	}
		
	return 0;
}


 int send_udp_datagram(void) {
	int err;
	struct sockaddr_in server;

	server.sin_family = AF_INET;
	server.sin_port = htons(1337);
	if (inet_pton(AF_INET, IP_ADDR, &amp;amp;server.sin_addr) != 1) {
		LOG_ERR(&amp;quot;Could not convert IP addr %s\n&amp;quot;, IP_ADDR);
		return -1;
	}

	int coap_socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
	if (coap_socket &amp;lt; 0) {
		LOG_ERR(&amp;quot;Failed to create CoAP socket: %d.\n&amp;quot;, errno);
		return -errno;
	}

	err = connect(coap_socket, (struct sockaddr *)&amp;amp;server,sizeof(struct sockaddr_in));
	if (err &amp;lt; 0) {
		LOG_ERR(&amp;quot;Failed to connect UDP socket (err %d)\n&amp;quot;, err);
		return err;
	}

	const char * payload = &amp;quot;Hello from the nRF7002&amp;quot;;
	
	err = send(coap_socket, payload, strlen(payload), 0);
	if (err &amp;lt; 0) {
		LOG_ERR(&amp;quot;Failed to send message via UDP socket (errno %d)\n&amp;quot;, -errno);
		return -errno;
	}
	
	err = sendto(coap_socket, payload, strlen(payload),0, (struct sockaddr *)&amp;amp;server, sizeof(struct sockaddr_in));
	if (err &amp;lt; 0) {
		LOG_ERR(&amp;quot;Failed to send message via UDP socket (errno %d)\n&amp;quot;, -errno);
		return -errno;
	}
	LOG_INF(&amp;quot;Message sent&amp;quot;);
	

	close(coap_socket);

	return 0;
}

static int cmd_wifi_status(void)
{
	struct net_if *iface = net_if_get_default();
	struct wifi_iface_status status = { 0 };

	if (net_mgmt(NET_REQUEST_WIFI_IFACE_STATUS, iface, &amp;amp;status,
				sizeof(struct wifi_iface_status))) {
		printk(&amp;quot;Status request failed\n&amp;quot;);

		return -ENOEXEC;
	}

	printk(&amp;quot;Status: successful\n&amp;quot;);
	printk(&amp;quot;==================\n&amp;quot;);
	printk(&amp;quot;State: %s\n&amp;quot;, wifi_state_txt(status.state));

	if (status.state &amp;gt;= WIFI_STATE_ASSOCIATED) {
		uint8_t mac_string_buf[sizeof(&amp;quot;xx:xx:xx:xx:xx:xx&amp;quot;)];

		printk(&amp;quot;Interface Mode: %s\n&amp;quot;,
		       wifi_mode_txt(status.iface_mode));
		printk(&amp;quot;Link Mode: %s\n&amp;quot;,
		       wifi_link_mode_txt(status.link_mode));
		printk(&amp;quot;SSID: %-32s\n&amp;quot;, status.ssid);
		printk(&amp;quot;BSSID: %s\n&amp;quot;,
		       net_sprint_ll_addr_buf(
				status.bssid, WIFI_MAC_ADDR_LEN,
				mac_string_buf, sizeof(mac_string_buf)));
		printk(&amp;quot;Band: %s\n&amp;quot;, wifi_band_txt(status.band));
		printk(&amp;quot;Channel: %d\n&amp;quot;, status.channel);
		printk(&amp;quot;Security: %s\n&amp;quot;, wifi_security_txt(status.security));
		printk(&amp;quot;MFP: %s\n&amp;quot;, wifi_mfp_txt(status.mfp));
		printk(&amp;quot;RSSI: %d\n&amp;quot;, status.rssi);
	}

	return 0;
}

static void handle_wifi_connect_result(struct net_mgmt_event_callback *cb)
{
	const struct wifi_status *status =
		(const struct wifi_status *) cb-&amp;gt;info;

	if (status-&amp;gt;status) {
		LOG_ERR(&amp;quot;Connection request failed (%d)&amp;quot;, status-&amp;gt;status);
	} else {
		LOG_INF(&amp;quot;Connected&amp;quot;);
	}

	cmd_wifi_status();
}

static void handle_wifi_disconnect_result(struct net_mgmt_event_callback *cb)
{
	const struct wifi_status *status =
		(const struct wifi_status *) cb-&amp;gt;info;

	if (context.disconnecting) {
		LOG_INF(&amp;quot;Disconnection request %s (%d)&amp;quot;,
			 status-&amp;gt;status ? &amp;quot;failed&amp;quot; : &amp;quot;done&amp;quot;,
					status-&amp;gt;status);
		context.disconnecting = false;
	} else {
		LOG_INF(&amp;quot;Disconnected&amp;quot;);
	}

	cmd_wifi_status();
}

static void wifi_mgmt_event_handler(struct net_mgmt_event_callback *cb,
				     uint32_t mgmt_event, struct net_if *iface)
{
	switch (mgmt_event) {
	case NET_EVENT_WIFI_CONNECT_RESULT:
		handle_wifi_connect_result(cb);
		break;
	case NET_EVENT_WIFI_DISCONNECT_RESULT:
		handle_wifi_disconnect_result(cb);
		break;
	default:
		break;
	}
}



static void print_dhcp_ip(struct net_mgmt_event_callback *cb)
{
	/* Get DHCP info from struct net_if_dhcpv4 and print */
	const struct net_if_dhcpv4 *dhcpv4 = cb-&amp;gt;info;
	const struct in_addr *addr = &amp;amp;dhcpv4-&amp;gt;requested_ip;
	char dhcp_info[128];

	net_addr_ntop(AF_INET, addr, dhcp_info, sizeof(dhcp_info));

	LOG_INF(&amp;quot;IP address: %s&amp;quot;, dhcp_info);

}


static void net_mgmt_event_handler(struct net_mgmt_event_callback *cb,
				    uint32_t mgmt_event, struct net_if *iface)
{
	switch (mgmt_event) {
	case NET_EVENT_IPV4_DHCP_BOUND:
		print_dhcp_ip(cb);
		break;
	default:
		break;
	}
}

static int __wifi_args_to_params(struct wifi_connect_req_params *params)
{
	params-&amp;gt;timeout = SYS_FOREVER_MS;

	/* SSID */
	params-&amp;gt;ssid = CONFIG_STA_SAMPLE_SSID;
	params-&amp;gt;ssid_length = strlen(params-&amp;gt;ssid);

#if defined(CONFIG_STA_KEY_MGMT_WPA2)
	params-&amp;gt;security = 1;
#elif defined(CONFIG_STA_KEY_MGMT_WPA2_256)
	params-&amp;gt;security = 2;
#elif defined(CONFIG_STA_KEY_MGMT_WPA3)
	params-&amp;gt;security = 3;
#else
	params-&amp;gt;security = 0;
#endif

#if !defined(CONFIG_STA_KEY_MGMT_NONE)
	params-&amp;gt;psk = CONFIG_STA_SAMPLE_PASSWORD;
	params-&amp;gt;psk_length = strlen(params-&amp;gt;psk);
#endif
	params-&amp;gt;channel = WIFI_CHANNEL_ANY;

	/* MFP (optional) */
	params-&amp;gt;mfp = WIFI_MFP_OPTIONAL;

	return 0;
}

static int wifi_connect(void)
{
	struct net_if *iface = net_if_get_default();
	static struct wifi_connect_req_params cnx_params;

	__wifi_args_to_params(&amp;amp;cnx_params);

	if (net_mgmt(NET_REQUEST_WIFI_CONNECT, iface,
		     &amp;amp;cnx_params, sizeof(struct wifi_connect_req_params))) {
		LOG_ERR(&amp;quot;Connection request failed&amp;quot;);

		return -ENOEXEC;
	}

	LOG_INF(&amp;quot;Connection requested&amp;quot;);

	return 0;
}

static int wifi_disconnect(void)
{
	struct net_if *iface = net_if_get_default();
	int status;

	context.disconnecting = true;

	status = net_mgmt(NET_REQUEST_WIFI_DISCONNECT, iface, NULL, 0);

	if (status) {
		context.disconnecting = false;

		if (status == -EALREADY) {
			LOG_INF(&amp;quot;Already disconnected&amp;quot;);
		} else {
			LOG_ERR(&amp;quot;Disconnect request failed&amp;quot;);
			return -ENOEXEC;
		}
	} else {
		LOG_INF(&amp;quot;Disconnect requested&amp;quot;);
	}

	return 0;
}

void main(void)
{

	context.all = 0U;

	net_mgmt_init_event_callback(&amp;amp;wifi_shell_mgmt_cb,
				     wifi_mgmt_event_handler,
				     WIFI_SHELL_MGMT_EVENTS);

	net_mgmt_add_event_callback(&amp;amp;wifi_shell_mgmt_cb);


	net_mgmt_init_event_callback(&amp;amp;net_shell_mgmt_cb,
				     net_mgmt_event_handler,
				     NET_EVENT_IPV4_DHCP_BOUND);

	net_mgmt_add_event_callback(&amp;amp;net_shell_mgmt_cb);

#ifdef CLOCK_FEATURE_HFCLK_DIVIDE_PRESENT
	/* For now hardcode to 128MHz */
	nrfx_clock_divider_set(NRF_CLOCK_DOMAIN_HFCLK,
			       NRF_CLOCK_HFCLK_DIV_1);
#endif
	LOG_INF(&amp;quot;Starting %s with CPU frequency: %d MHz&amp;quot;, CONFIG_BOARD, SystemCoreClock/MHZ(1));
	k_sleep(K_SECONDS(1));

    // Start receiving messages via udp
	udp_server();
}&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Target Wake Time (TWT) on nRF7002-DK is not working properly</title><link>https://devzone.nordicsemi.com/thread/410849?ContentTypeID=1</link><pubDate>Mon, 20 Feb 2023 10:55:05 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:44e88e5e-4b6e-4b56-9c08-418b1ecbb381</guid><dc:creator>Tareq-M</dc:creator><description>&lt;p&gt;Hi dejans,&lt;/p&gt;
&lt;p&gt;Thank you very much for your reply.&lt;/p&gt;
&lt;p&gt;Here are the results for the first experiment:&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;1) Connect to AP &lt;/span&gt;&lt;/span&gt;: successful&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;2) Ping from UDP client to UDP server - 5 pings&amp;nbsp;&lt;/span&gt;&lt;/span&gt; : successful&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;3) Setup TWT &lt;/span&gt;&lt;/span&gt;: 0 0 1 1 1 1 1 1 100 500 : successful&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;4) Run UDP RX&lt;/span&gt;&lt;/span&gt; : Not successful! &lt;/p&gt;
&lt;p&gt;The first 8 messages were received, but not the rest!&lt;/p&gt;
&lt;p&gt;See &lt;img style="max-height:240px;max-width:320px;" alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/Screenshot-from-2023_2D00_02_2D00_20-11_2D00_32_2D00_34.png" /&gt;&lt;br /&gt;&lt;br /&gt;I have also tried another TWT setup and the results were like this:&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;1) Connect to AP &lt;/span&gt;&lt;/span&gt;: successful&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;2) Ping from UDP client to UDP server - 5 pings&amp;nbsp;&lt;/span&gt;&lt;/span&gt; : successful&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;3) Setup TWT &lt;/span&gt;&lt;/span&gt;: 0 0 1 1 1 1 1 1 100 3000 : successful&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span dir="ltr"&gt;4) Run UDP RX&lt;/span&gt;&lt;/span&gt; : Not successful!&lt;/p&gt;
&lt;p&gt;No messages were received!&lt;/p&gt;
&lt;p&gt;Wait 40 sec then do wifi twt teardown 0 0 1 1&lt;/p&gt;
&lt;p&gt;The Messages that were sent will be received directly at once.&lt;/p&gt;
&lt;p&gt;See the Photos:&lt;/p&gt;
&lt;p&gt;1. After setting up the TWT and sending the messages:&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:240px;max-width:320px;" alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/Screenshot-from-2023_2D00_02_2D00_20-11_2D00_34_2D00_49.png" /&gt;&lt;/p&gt;
&lt;p&gt;2. After waiting about 40 sec and then calling wifi twt teardown 0 0 1 1&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:240px;max-width:320px;" alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/Screenshot-from-2023_2D00_02_2D00_20-11_2D00_35_2D00_31.png" /&gt;&lt;/p&gt;
&lt;p&gt;I will be very thankful if you could help solving this problem!&lt;/p&gt;
&lt;p&gt;The code i am using is below.&lt;/p&gt;
&lt;p&gt;Best regards&lt;/p&gt;
&lt;p&gt;Tareq&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;#
# Copyright (c) 2022 Nordic Semiconductor ASA
#
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
#
CONFIG_WIFI=y
CONFIG_WIFI_NRF700X=y
#CONFIG_NRF700X_REV_A=y

# WPA supplicant
CONFIG_WPA_SUPP=y
CONFIG_NET_L2_WIFI_SHELL=y
# Below configs need to be modified based on security
CONFIG_STA_SAMPLE_SSID=&amp;quot;wifi6test&amp;quot;
CONFIG_STA_SAMPLE_PASSWORD=&amp;quot;wifi6test&amp;quot;
#CONFIG_STA_SAMPLE_SSID=&amp;quot;grandcentrix&amp;quot;
#CONFIG_STA_SAMPLE_PASSWORD=&amp;quot;multimeter&amp;quot;
#CONFIG_STA_SAMPLE_SSID=&amp;quot;iPhone&amp;quot;
#CONFIG_STA_SAMPLE_PASSWORD=&amp;quot;12345678@@&amp;quot;
CONFIG_STA_KEY_MGMT_WPA2=y

# System settings
CONFIG_NEWLIB_LIBC=y
CONFIG_NEWLIB_LIBC_NANO=n

# Networking
CONFIG_NETWORKING=y
CONFIG_NET_SOCKETS=y
CONFIG_POSIX_API=n
CONFIG_NET_SOCKETS_POSIX_NAMES=y
CONFIG_NET_LOG=y
CONFIG_NET_IPV4=y
CONFIG_NET_UDP=y
CONFIG_NET_TCP=y
CONFIG_NET_DHCPV4=y

CONFIG_NET_PKT_RX_COUNT=8
CONFIG_NET_PKT_TX_COUNT=8

CONFIG_COAP=y
#CONFIG_THINGSBOARD=y
CONFIG_COAP_EXTENDED_OPTIONS_LEN=y
CONFIG_COAP_EXTENDED_OPTIONS_LEN_VALUE=20

CONFIG_JSON_LIBRARY=y
# Below section is the primary contributor to SRAM and is currently
# tuned for performance, but this will be revisited in the future.
CONFIG_NET_BUF_RX_COUNT=16
CONFIG_NET_BUF_TX_COUNT=16
CONFIG_NET_BUF_DATA_SIZE=128
CONFIG_HEAP_MEM_POOL_SIZE=153600
CONFIG_NET_TC_TX_COUNT=0

CONFIG_NET_IF_UNICAST_IPV4_ADDR_COUNT=1
CONFIG_NET_MAX_CONTEXTS=5
CONFIG_NET_CONTEXT_SYNC_RECV=y

CONFIG_INIT_STACKS=y

CONFIG_NET_L2_ETHERNET=y

CONFIG_NET_CONFIG_SETTINGS=y

CONFIG_NET_SOCKETS_POLL_MAX=4

# Memories
CONFIG_MAIN_STACK_SIZE=4096
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048
CONFIG_NET_TX_STACK_SIZE=4096
CONFIG_NET_RX_STACK_SIZE=4096

# Debugging
CONFIG_STACK_SENTINEL=y
CONFIG_DEBUG_COREDUMP=y
CONFIG_DEBUG_COREDUMP_BACKEND_LOGGING=y
CONFIG_DEBUG_COREDUMP_MEMORY_DUMP_MIN=y
CONFIG_SHELL_CMDS_RESIZE=n


# Kernel options
CONFIG_ENTROPY_GENERATOR=y

# Logging
CONFIG_LOG=y
CONFIG_PRINTK=y
CONFIG_POSIX_CLOCK=y

CONFIG_NET_MGMT_EVENT_STACK_SIZE=2048
CONFIG_SHELL=y
CONFIG_SHELL_GETOPT=y
CONFIG_DEVICE_SHELL=y
CONFIG_DATE_SHELL=y

CONFIG_NET_SHELL=y
#CONFIG_NET_RAW_MODE=n
CONFIG_NET_ARP=y

#CONFIG_NET_MGMT_EVENT_MONITOR=y
#CONFIG_NET_STATISTICS=y
#CONFIG_NET_CAPTURE=y
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Target Wake Time (TWT) on nRF7002-DK is not working properly</title><link>https://devzone.nordicsemi.com/thread/410267?ContentTypeID=1</link><pubDate>Thu, 16 Feb 2023 09:12:04 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:2692a075-a88d-42a7-b59e-fa0b08acc241</guid><dc:creator>dejans</dc:creator><description>&lt;p&gt;Hi Tareq,&lt;br /&gt;&lt;br /&gt;In order to be able to better assist you, we would need you to perform several experiments which would provide us with better understanding of your problem. After you finish with 3 experiments mentioned below, please provide the results.&lt;br /&gt;&lt;br /&gt;Experiment 1&lt;br /&gt;&lt;span&gt;&lt;span dir="ltr"&gt;1) Connect to AP&amp;nbsp;&lt;br /&gt; 2) Ping from UDP client to UDP server - 5 pings&amp;nbsp;&lt;br /&gt; 3) Setup TWT&amp;nbsp;&lt;br /&gt; 4) Run UDP RX&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Experiment 2&lt;span&gt;&lt;span dir="ltr"&gt;&lt;br /&gt; 1) Connect to AP&amp;nbsp;&lt;br /&gt; 2) Create Static ARP table at both devices (# arp -s 192.168.0.65 00:50:ba:85:85:ca)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; 3) Setup TWT&amp;nbsp;&lt;br /&gt; 4) Run UDP RX&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;span dir="ltr"&gt;Experiment 3&amp;nbsp;&lt;br /&gt; 1) Connect to AP&amp;nbsp;&lt;br /&gt; 2) Run UDP RX for 10 seconds (in legacy power save)&amp;nbsp;&lt;br /&gt; 3) Setup TWT&amp;nbsp;&lt;br /&gt; 4) Run UDP RX&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Best regards,&lt;br /&gt;Dejan&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Target Wake Time (TWT) on nRF7002-DK is not working properly</title><link>https://devzone.nordicsemi.com/thread/410038?ContentTypeID=1</link><pubDate>Wed, 15 Feb 2023 10:32:11 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:fe14a39b-b4e7-46c9-be1e-d87496c1c260</guid><dc:creator>Tareq-M</dc:creator><description>&lt;p&gt;Hi dejans, &lt;/p&gt;
&lt;p&gt;I have again tested this feature with a WiFi 6 Asus access point RT-AX92U but it did not work also. &lt;br /&gt;Could you please tell me what is the ASUS device that you have used to test the TWT feature with UDP ?&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Tareq&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Target Wake Time (TWT) on nRF7002-DK is not working properly</title><link>https://devzone.nordicsemi.com/thread/407475?ContentTypeID=1</link><pubDate>Wed, 01 Feb 2023 08:42:18 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:110f61ee-78a9-4e6e-91d3-9148dabc15cb</guid><dc:creator>dejans</dc:creator><description>&lt;p&gt;Hi Tareq,&lt;br /&gt;&lt;br /&gt;UDP server is expected to work with TWT. In out tests, we were able to run UDP_RX (AP to DK) when TWT was active. We used Qualcomm and ASUS devices as access points.&lt;br /&gt;&lt;br /&gt;Best regards,&lt;br /&gt;Dejan&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Target Wake Time (TWT) on nRF7002-DK is not working properly</title><link>https://devzone.nordicsemi.com/thread/407103?ContentTypeID=1</link><pubDate>Mon, 30 Jan 2023 12:50:17 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f7290ec0-b15a-4670-b07f-a305f42f4a08</guid><dc:creator>Tareq-M</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I used the nRF Connect SDK 2.2 and the nRF Connect Toolchain 2.2.0&lt;br /&gt;Yes i have tried decreasing the sleeping time of the&amp;nbsp;&lt;a href="https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/ug_nrf70_developing_powersave.html#key-parameters"&gt;TWT Wake Interval&lt;/a&gt; from specified 60 seconds to 500 ms on less. But that did not help also!&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Have you tested the TWT feature in such example?&lt;/p&gt;
&lt;p&gt;I mean have you tested sending messages to nRF7002 module while TWT is active?&lt;/p&gt;
&lt;p&gt;What is the WiFi Access point that you have used for the test?&lt;/p&gt;
&lt;p&gt;Best regards,&lt;br /&gt;Tareq&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Target Wake Time (TWT) on nRF7002-DK is not working properly</title><link>https://devzone.nordicsemi.com/thread/407090?ContentTypeID=1</link><pubDate>Mon, 30 Jan 2023 12:17:22 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9dcf830c-8372-41c3-ad4c-e425d2b7bf3f</guid><dc:creator>dejans</dc:creator><description>&lt;p&gt;Hi,&lt;br /&gt;&lt;br /&gt;Could you provide information about the NCS version/tag which you used for testing?&lt;br /&gt;&lt;br /&gt;Have you tried decreasing the sleeping time of the&amp;nbsp;&lt;a href="https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/ug_nrf70_developing_powersave.html#key-parameters"&gt;TWT Wake Interval&lt;/a&gt; from specified 60 seconds to 500 ms?&amp;nbsp;&lt;br /&gt;&lt;br /&gt;For better visibility, when you submit code, you could use Insert-&amp;gt;Code.&lt;br /&gt;&lt;br /&gt;Best regards,&lt;br /&gt;Dejan&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Target Wake Time (TWT) on nRF7002-DK is not working properly</title><link>https://devzone.nordicsemi.com/thread/406833?ContentTypeID=1</link><pubDate>Fri, 27 Jan 2023 11:45:49 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5a704b2e-bedd-4ac6-8c44-163e4231581c</guid><dc:creator>Tareq-M</dc:creator><description>&lt;p&gt;Hi Dejon&lt;br /&gt;Thank for your reply.&lt;br /&gt;I have connected the PPK2 as shown in&amp;nbsp;&lt;a href="https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/ug_nrf70_developing_powersave.html#power-profiling"&gt;power profiling&lt;/a&gt; and set the parameters of the TWT like: &lt;br /&gt;wifi twt setup 0 0 1 1 0 1 1 1 65&amp;nbsp; 60000&lt;br /&gt;&lt;img style="max-height:240px;max-width:320px;" alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/0842.Image.jpeg" /&gt;&lt;br /&gt;&lt;img style="max-height:240px;max-width:320px;" alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/Screenshot-from-2023_2D00_01_2D00_27-12_2D00_10_2D00_45.png" /&gt;&lt;br /&gt;As you can see the current consumption is around 13.57&amp;micro;A when the nrf7002&amp;nbsp;is in sleep mode and around 79&amp;micro;A as average for the TWT-intervall 1min.&lt;br /&gt;When i try now to send messages from the computer to the station (nrf7002 dk) via UDP the station will not receive any messages!&lt;/p&gt;
&lt;p&gt;When i try to use &amp;quot;wifi twt teardown 0 0 1 1&amp;quot; it works. ( i mean the TWT session will be teared down)&lt;br /&gt;After that when i try again to send messages from the computer to the station (nrf7002 dk) via UDP the station will receive the messages successfully without any problems. &lt;br /&gt;This is shown in the next image: &lt;br /&gt;&lt;img style="max-height:240px;max-width:320px;" alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/Screenshot-from-2023_2D00_01_2D00_27-12_2D00_23_2D00_26.png" /&gt;&lt;br /&gt;&lt;strong&gt;So, the problem is that the station does not receive the messages when the TWT is activated!&lt;/strong&gt; Have you checked if your Wi-Fi AP fully supports TWT?&lt;br /&gt;As AP i am using the fritzbox-7590-ax &lt;a id="" href="https://en.avm.de/products/fritzbox/fritzbox-7590-ax/technical-specifications/"&gt;https://en.avm.de/products/fritzbox/fritzbox-7590-ax/technical-specifications/&lt;/a&gt;&lt;br /&gt;As described in the &amp;quot;technical-specifications&amp;quot; it should support the &lt;span&gt;Wi-Fi 6 (802.11&lt;em&gt;ax&lt;/em&gt;) protocol. I i guess that means it should support the TWT feature.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Below you can find the code of the project.&lt;/p&gt;
&lt;p&gt;&lt;span style="color:rgba(0, 0, 0, 1);font-size:inherit;"&gt;Best regards&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:rgba(0, 0, 0, 1);font-size:inherit;"&gt;Tareq&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;prj.conf&lt;/p&gt;
&lt;div style="background-color:#1e1e1e;color:#d4d4d4;font-family:&amp;#39;Droid Sans Mono&amp;#39;, &amp;#39;monospace&amp;#39;, monospace;font-size:14px;font-weight:normal;line-height:19px;white-space:pre;"&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_WIFI&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=y&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_WIFI_NRF700X&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=y&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#6a9955;"&gt;#CONFIG_NRF700X_REV_A=y&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style="color:#6a9955;"&gt;# WPA supplicant&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_WPA_SUPP&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=y&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_NET_L2_WIFI_SHELL&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=y&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#6a9955;"&gt;# Below configs need to be modified based on security&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_STA_SAMPLE_SSID&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=&lt;/span&gt;&lt;span style="color:#ce9178;"&gt;&amp;quot;wifi6test&amp;quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_STA_SAMPLE_PASSWORD&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=&lt;/span&gt;&lt;span style="color:#ce9178;"&gt;&amp;quot;wifi6test&amp;quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_STA_KEY_MGMT_WPA2&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=y&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style="color:#6a9955;"&gt;# System settings&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_NEWLIB_LIBC&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=y&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_NEWLIB_LIBC_NANO&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=n&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style="color:#6a9955;"&gt;# Networking&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_NETWORKING&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=y&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_NET_SOCKETS&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=y&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_POSIX_API&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=n&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_NET_SOCKETS_POSIX_NAMES&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=y&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_NET_LOG&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=y&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_NET_IPV4&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=y&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_NET_UDP&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=y&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_NET_TCP&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=y&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_NET_DHCPV4&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=y&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_NET_PKT_RX_COUNT&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=8&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_NET_PKT_TX_COUNT&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=8&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style="color:#6a9955;"&gt;# Below section is the primary contributor to SRAM and is currently&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#6a9955;"&gt;# tuned for performance, but this will be revisited in the future.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_NET_BUF_RX_COUNT&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=16&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_NET_BUF_TX_COUNT&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=16&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_NET_BUF_DATA_SIZE&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=128&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_HEAP_MEM_POOL_SIZE&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=153600&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_NET_TC_TX_COUNT&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=0&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_NET_IF_UNICAST_IPV4_ADDR_COUNT&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=1&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_NET_MAX_CONTEXTS&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=5&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_NET_CONTEXT_SYNC_RECV&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=y&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_INIT_STACKS&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=y&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_NET_L2_ETHERNET&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=y&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_NET_CONFIG_SETTINGS&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=y&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_NET_SOCKETS_POLL_MAX&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=4&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style="color:#6a9955;"&gt;# Memories&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_MAIN_STACK_SIZE&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=4096&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=2048&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_NET_TX_STACK_SIZE&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=4096&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_NET_RX_STACK_SIZE&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=4096&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style="color:#6a9955;"&gt;# Debugging&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_STACK_SENTINEL&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=y&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_DEBUG_COREDUMP&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=y&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_DEBUG_COREDUMP_BACKEND_LOGGING&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=y&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_DEBUG_COREDUMP_MEMORY_DUMP_MIN&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=y&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_SHELL_CMDS_RESIZE&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=n&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;&lt;span style="color:#6a9955;"&gt;# Kernel options&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_ENTROPY_GENERATOR&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=y&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style="color:#6a9955;"&gt;# Logging&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_LOG&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=y&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_PRINTK&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=y&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_POSIX_CLOCK&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=y&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_NET_MGMT_EVENT_STACK_SIZE&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=2048&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_SHELL&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=y&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_SHELL_GETOPT&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=y&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_DEVICE_SHELL&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=y&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;CONFIG_DATE_SHELL&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=y&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#d4d4d4;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#d4d4d4;"&gt;main.c&lt;br /&gt;#include &amp;lt;zephyr/logging/log.h&amp;gt;&lt;br /&gt;LOG_MODULE_REGISTER(sta, LOG_LEVEL_DBG);&lt;br /&gt;&lt;br /&gt;#include &amp;lt;nrfx_clock.h&amp;gt;&lt;br /&gt;#include &amp;lt;zephyr/kernel.h&amp;gt;&lt;br /&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;#include &amp;lt;zephyr/shell/shell.h&amp;gt;&lt;br /&gt;#include &amp;lt;zephyr/sys/printk.h&amp;gt;&lt;br /&gt;#include &amp;lt;zephyr/init.h&amp;gt;&lt;br /&gt;&lt;br /&gt;#include &amp;lt;zephyr/net/net_if.h&amp;gt;&lt;br /&gt;#include &amp;lt;zephyr/net/wifi_mgmt.h&amp;gt;&lt;br /&gt;#include &amp;lt;zephyr/net/net_event.h&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#include &amp;lt;zephyr/net/socket.h&amp;gt;&lt;br /&gt;#include &amp;lt;zephyr/net/net_mgmt.h&amp;gt;&lt;br /&gt;#include &amp;lt;zephyr/net/net_ip.h&amp;gt;&lt;br /&gt;#include &amp;lt;zephyr/net/udp.h&amp;gt;&lt;br /&gt;&lt;br /&gt;#include &amp;quot;net_private.h&amp;quot;&lt;br /&gt;&lt;br /&gt;#define WIFI_SHELL_MODULE &amp;quot;wifi&amp;quot;&lt;br /&gt;&lt;br /&gt;#define WIFI_SHELL_MGMT_EVENTS (NET_EVENT_WIFI_CONNECT_RESULT |&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;\&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;NET_EVENT_WIFI_DISCONNECT_RESULT)&lt;br /&gt;&lt;br /&gt;#define MAX_SSID_LEN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 32&lt;br /&gt;// IP adresse of the server(Receiver)&lt;br /&gt;#define IP_ADDR &amp;quot;192.168.178.22&amp;quot;&lt;br /&gt;#define IP_ADDR_client &amp;quot;192.168.178.22&amp;quot;&lt;br /&gt;#define IP_ADDR_server &amp;quot;192.168.178.21&amp;quot;&lt;br /&gt;&lt;br /&gt;static struct net_mgmt_event_callback wifi_shell_mgmt_cb;&lt;br /&gt;static struct net_mgmt_event_callback net_shell_mgmt_cb;&lt;br /&gt;&lt;br /&gt;static struct {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;const struct shell *sh;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;union {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;struct {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;uint8_t disconnecting&amp;nbsp;&amp;nbsp; &amp;nbsp;: 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;uint8_t _unused&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;: 6;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;};&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;uint8_t all;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;};&lt;br /&gt;} context;&lt;br /&gt;&lt;br /&gt;#define PORT&amp;nbsp;&amp;nbsp; &amp;nbsp; 1337&lt;br /&gt;#define MAXLINE 1024&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;// Driver code&lt;br /&gt;int udp_server(void) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;int sockfd;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;char buffer[MAXLINE];&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;char *hello = &amp;quot;Hello from server&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;struct sockaddr_in servaddr, cliaddr;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;// Creating socket file descriptor&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if ( (sockfd = socket(AF_INET, SOCK_DGRAM, 0)) &amp;lt; 0 ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LOG_ERR(&amp;quot;socket creation failed&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return -errno;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;memset(&amp;amp;servaddr, 0, sizeof(servaddr));&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;memset(&amp;amp;cliaddr, 0, sizeof(cliaddr));&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;// Filling server information&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;servaddr.sin_family = AF_INET; // IPv4&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;servaddr.sin_addr.s_addr = INADDR_ANY;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;servaddr.sin_port = htons(PORT);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;// Bind the socket with the server address&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if ( bind(sockfd, (const struct sockaddr *)&amp;amp;servaddr,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;sizeof(servaddr)) &amp;lt; 0 )&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LOG_ERR(&amp;quot;bind failed&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return -errno;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;int len, n;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;len = sizeof(cliaddr); //len is value/result&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;while(true) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;n = recvfrom(sockfd, (char *)buffer, MAXLINE,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;MSG_WAITALL, ( struct sockaddr *) &amp;amp;cliaddr,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;amp;len);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;buffer[n] = &amp;#39;\0&amp;#39;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;printf(&amp;quot;Client : %s\n&amp;quot;, buffer);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// If you want to send a response to the sender &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//sendto(sockfd, (const char *)hello, strlen(hello),0, (const struct sockaddr *) &amp;amp;cliaddr,&amp;amp;len);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//buffer[n] = &amp;#39;\0&amp;#39;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;static int cmd_wifi_status(void)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;struct net_if *iface = net_if_get_default();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;struct wifi_iface_status status = { 0 };&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (net_mgmt(NET_REQUEST_WIFI_IFACE_STATUS, iface, &amp;amp;status,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;sizeof(struct wifi_iface_status))) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;printk(&amp;quot;Status request failed\n&amp;quot;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return -ENOEXEC;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;printk(&amp;quot;Status: successful\n&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;printk(&amp;quot;==================\n&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;printk(&amp;quot;State: %s\n&amp;quot;, wifi_state_txt(status.state));&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (status.state &amp;gt;= WIFI_STATE_ASSOCIATED) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;uint8_t mac_string_buf[sizeof("xx:xx:xx:xx:xx:xx")];&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;printk(&amp;quot;Interface Mode: %s\n&amp;quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wifi_mode_txt(status.iface_mode));&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;printk(&amp;quot;Link Mode: %s\n&amp;quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wifi_link_mode_txt(status.link_mode));&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;printk(&amp;quot;SSID: %-32s\n&amp;quot;, status.ssid);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;printk(&amp;quot;BSSID: %s\n&amp;quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; net_sprint_ll_addr_buf(&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;status.bssid, WIFI_MAC_ADDR_LEN,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;mac_string_buf, sizeof(mac_string_buf)));&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;printk(&amp;quot;Band: %s\n&amp;quot;, wifi_band_txt(status.band));&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;printk(&amp;quot;Channel: %d\n&amp;quot;, status.channel);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;printk(&amp;quot;Security: %s\n&amp;quot;, wifi_security_txt(status.security));&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;printk(&amp;quot;MFP: %s\n&amp;quot;, wifi_mfp_txt(status.mfp));&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;printk(&amp;quot;RSSI: %d\n&amp;quot;, status.rssi);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;static void handle_wifi_connect_result(struct net_mgmt_event_callback *cb)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;const struct wifi_status *status =&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;(const struct wifi_status *) cb-&amp;gt;info;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (status-&amp;gt;status) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LOG_ERR(&amp;quot;Connection request failed (%d)&amp;quot;, status-&amp;gt;status);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;} else {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LOG_INF(&amp;quot;Connected&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;cmd_wifi_status();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;static void handle_wifi_disconnect_result(struct net_mgmt_event_callback *cb)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;const struct wifi_status *status =&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;(const struct wifi_status *) cb-&amp;gt;info;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (context.disconnecting) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LOG_INF(&amp;quot;Disconnection request %s (%d)&amp;quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; status-&amp;gt;status ? &amp;quot;failed&amp;quot; : &amp;quot;done&amp;quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;status-&amp;gt;status);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;context.disconnecting = false;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;} else {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LOG_INF(&amp;quot;Disconnected&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;cmd_wifi_status();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;static void wifi_mgmt_event_handler(struct net_mgmt_event_callback *cb,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t mgmt_event, struct net_if *iface)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;switch (mgmt_event) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case NET_EVENT_WIFI_CONNECT_RESULT:&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;handle_wifi_connect_result(cb);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case NET_EVENT_WIFI_DISCONNECT_RESULT:&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;handle_wifi_disconnect_result(cb);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;default:&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;static void print_dhcp_ip(struct net_mgmt_event_callback *cb)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* Get DHCP info from struct net_if_dhcpv4 and print */&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;const struct net_if_dhcpv4 *dhcpv4 = cb-&amp;gt;info;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;const struct in_addr *addr = &amp;amp;dhcpv4-&amp;gt;requested_ip;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;char dhcp_info[128];&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;net_addr_ntop(AF_INET, addr, dhcp_info, sizeof(dhcp_info));&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LOG_INF(&amp;quot;IP address: %s&amp;quot;, dhcp_info);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;static void net_mgmt_event_handler(struct net_mgmt_event_callback *cb,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t mgmt_event, struct net_if *iface)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;switch (mgmt_event) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case NET_EVENT_IPV4_DHCP_BOUND:&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;print_dhcp_ip(cb);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;default:&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;static int __wifi_args_to_params(struct wifi_connect_req_params *params)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;params-&amp;gt;timeout = SYS_FOREVER_MS;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* SSID */&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;params-&amp;gt;ssid = CONFIG_STA_SAMPLE_SSID;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;params-&amp;gt;ssid_length = strlen(params-&amp;gt;ssid);&lt;br /&gt;&lt;br /&gt;#if defined(CONFIG_STA_KEY_MGMT_WPA2)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;params-&amp;gt;security = 1;&lt;br /&gt;#elif defined(CONFIG_STA_KEY_MGMT_WPA2_256)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;params-&amp;gt;security = 2;&lt;br /&gt;#elif defined(CONFIG_STA_KEY_MGMT_WPA3)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;params-&amp;gt;security = 3;&lt;br /&gt;#else&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;params-&amp;gt;security = 0;&lt;br /&gt;#endif&lt;br /&gt;&lt;br /&gt;#if !defined(CONFIG_STA_KEY_MGMT_NONE)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;params-&amp;gt;psk = CONFIG_STA_SAMPLE_PASSWORD;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;params-&amp;gt;psk_length = strlen(params-&amp;gt;psk);&lt;br /&gt;#endif&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;params-&amp;gt;channel = WIFI_CHANNEL_ANY;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* MFP (optional) */&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;params-&amp;gt;mfp = WIFI_MFP_OPTIONAL;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;static int wifi_connect(void)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;struct net_if *iface = net_if_get_default();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;static struct wifi_connect_req_params cnx_params;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;__wifi_args_to_params(&amp;amp;cnx_params);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (net_mgmt(NET_REQUEST_WIFI_CONNECT, iface,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;cnx_params, sizeof(struct wifi_connect_req_params))) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//LOG_ERR(&amp;quot;Connection request failed&amp;quot;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return -ENOEXEC;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;//LOG_INF(&amp;quot;Connection requested&amp;quot;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;static int wifi_disconnect(void)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;struct net_if *iface = net_if_get_default();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;int status;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;context.disconnecting = true;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;status = net_mgmt(NET_REQUEST_WIFI_DISCONNECT, iface, NULL, 0);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (status) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;context.disconnecting = false;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (status == -EALREADY) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//LOG_INF(&amp;quot;Already disconnected&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;} else {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//&amp;nbsp;&amp;nbsp; &amp;nbsp;LOG_ERR(&amp;quot;Disconnect request failed&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return -ENOEXEC;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;} else {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//LOG_INF(&amp;quot;Disconnect requested&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void main(void)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;context.all = 0U;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;net_mgmt_init_event_callback(&amp;amp;wifi_shell_mgmt_cb,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wifi_mgmt_event_handler,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WIFI_SHELL_MGMT_EVENTS);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;net_mgmt_add_event_callback(&amp;amp;wifi_shell_mgmt_cb);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;net_mgmt_init_event_callback(&amp;amp;net_shell_mgmt_cb,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; net_mgmt_event_handler,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NET_EVENT_IPV4_DHCP_BOUND);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;net_mgmt_add_event_callback(&amp;amp;net_shell_mgmt_cb);&lt;br /&gt;&lt;br /&gt;#ifdef CLOCK_FEATURE_HFCLK_DIVIDE_PRESENT&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* For now hardcode to 128MHz */&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;nrfx_clock_divider_set(NRF_CLOCK_DOMAIN_HFCLK,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NRF_CLOCK_HFCLK_DIV_1);&lt;br /&gt;#endif&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LOG_INF(&amp;quot;Starting %s with CPU frequency: %d MHz&amp;quot;, CONFIG_BOARD, SystemCoreClock/MHZ(1));&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;k_sleep(K_SECONDS(1));&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;wifi_connect();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;udp_server();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;//send_udp_datagram();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;k_sleep(K_FOREVER);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Target Wake Time (TWT) on nRF7002-DK is not working properly</title><link>https://devzone.nordicsemi.com/thread/406735?ContentTypeID=1</link><pubDate>Thu, 26 Jan 2023 17:04:47 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8c334817-7735-40e0-9b83-7226defaa90a</guid><dc:creator>dejans</dc:creator><description>&lt;p&gt;Hi Tareq,&lt;br /&gt;&lt;br /&gt;Could you verify that you have correct PPK2 setup as shown in&amp;nbsp;&lt;a href="https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/ug_nrf70_developing_powersave.html#power-profiling"&gt;power profiling&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;Have you checked if your Wi-Fi AP fully supports TWT?&lt;br /&gt;&lt;br /&gt;Could you provide more information about your application?&lt;br /&gt;&lt;br /&gt;Have you tried using &amp;quot;wifi twt teardown 0 0 x x&amp;quot; instead of &amp;quot;wifi twt teardown_all&amp;quot;?&lt;br /&gt;&lt;br /&gt;Best regards,&lt;br /&gt;Dejan&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>