<?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>HTTP AT</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/59597/http-at</link><description>Hello, 
 
 i work on nrf9160 dk 
 I would like to know if it is possible to use an AT firmware to be able to easily switch to LTE-M, NB-IOT, send sms, switch off the modem etc.... and also to make http post as on the example &amp;quot;http sample&amp;quot; which works</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Wed, 08 Apr 2020 15:46:10 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/59597/http-at" /><item><title>RE: HTTP AT</title><link>https://devzone.nordicsemi.com/thread/244117?ContentTypeID=1</link><pubDate>Wed, 08 Apr 2020 15:46:10 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ae4d8fc5-76e8-45fd-bb24-a90e8ec709bb</guid><dc:creator>&amp;#216;yvind</dc:creator><description>&lt;p&gt;&lt;span&gt;Hi Max,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;w_lte_lc_connect() is called within lte_lc_init_and_connect(). This is used by several of our samples, e.g.&amp;nbsp;&lt;a href="https://github.com/NordicPlayground/fw-nrfconnect-nrf/blob/b71ceb04b516b57b0e4048d7235760620b50d245/samples/nrf9160/https_client/src/main.c#L177"&gt;https_client&lt;/a&gt;.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;Kind regards,&lt;br /&gt;Øyvind&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: HTTP AT</title><link>https://devzone.nordicsemi.com/thread/244114?ContentTypeID=1</link><pubDate>Wed, 08 Apr 2020 15:27:42 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d8199bc1-435f-411f-a9ef-bdc9dbde9480</guid><dc:creator>Maxvi33</dc:creator><description>&lt;p&gt;Hello,&lt;br /&gt;&lt;br /&gt;Thank&amp;#39;s for your answer.&lt;br /&gt;&lt;br /&gt;I solved this problem with this function:&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;/****************************************************************************************************
*name: 
*to do:  Repete AT+CEREG jusqu&amp;#39;&amp;#224; avoir du reseau
*return: 
****************************************************************************************************/
void Wait_connection(void) {
  char recv_buf1[50];
  char *bufatest;
  int event = 0;

  const char *at_commandsOFF[] =
      {
          &amp;quot;AT+CEREG?&amp;quot;, /* Retour d&amp;#39;&amp;#233;tat de connexion( PSM activ&amp;#233;, Connect&amp;#233; au reseau etc...) */
      };
  int at_socket_fd = socket(AF_LTE, 0, NPROTO_AT);
  if (at_socket_fd &amp;lt; 0) {
    printk(&amp;quot;Socket err: %d, errno: %d\r\n&amp;quot;, at_socket_fd, errno);
  }

  /* On attend que le modem se connect a la station de base */
  while (event != 8) {
    switch (event) {

    case 0: {

      for (int i = 0; i &amp;lt; ARRAY_SIZE(at_commandsOFF); i++) {
        int bytes_written = send(at_socket_fd, at_commandsOFF[i],
            strlen(at_commandsOFF[i]), 0);
        if (bytes_written &amp;gt; 0) {
          int r_bytes =
              blocking_recv(at_socket_fd, recv_buf1,
                  sizeof(recv_buf1), MSG_DONTWAIT);
          if (r_bytes &amp;gt; 0) {
            printk(&amp;quot;%s&amp;quot;, recv_buf1);
          }
        }
      }
      event = 1;
    }

    case 1: {
      bufatest = strstr(recv_buf1, &amp;quot;+CEREG: 0,1,&amp;quot;);
      if (bufatest != NULL) {
        event = 8;
      } else {
        printk(&amp;quot;wait&amp;quot;);
        k_sleep(K_MSEC(1000));
        event = 0;
      }
    }
    }
  }
  (void)close(at_socket_fd);
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;I think to use &amp;quot;w_lte_lc_connect&amp;quot; is better but do you have some example for this ? Because i can&amp;#39;t&amp;nbsp;replace and use my function with your function like that..&lt;br /&gt;&lt;br /&gt;Thank&amp;#39;s for your help&lt;br /&gt;&lt;br /&gt;Max&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: HTTP AT</title><link>https://devzone.nordicsemi.com/thread/244113?ContentTypeID=1</link><pubDate>Wed, 08 Apr 2020 15:13:10 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f752e92b-6107-46a2-aece-05beb4c1bf3d</guid><dc:creator>&amp;#216;yvind</dc:creator><description>&lt;p&gt;Hi Max,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;From what I see, you&amp;#39;re not waiting for the network connection. Between each switch of&amp;nbsp;&lt;span&gt;&amp;nbsp;LTE-M and NB-IoT, you need to verify the connection. In NCS this is handled in &lt;em&gt;nrf\lib\lte_link_control\lte_lc.c&lt;/em&gt;, more specific the &lt;a href="https://github.com/NordicPlayground/fw-nrfconnect-nrf/blob/b71ceb04b516b57b0e4048d7235760620b50d245/lib/lte_link_control/lte_lc.c#L229"&gt;w_lte_lc_connect()&lt;/a&gt;. Have a look at the do{}while loop.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Kind regards,&lt;br /&gt;Øyvind&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: HTTP AT</title><link>https://devzone.nordicsemi.com/thread/242660?ContentTypeID=1</link><pubDate>Tue, 31 Mar 2020 11:00:48 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1819a290-ce91-4e64-8152-a5b3f6fbf301</guid><dc:creator>Maxvi33</dc:creator><description>&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;CONFIG_BSD_LIBRARY=y
CONFIG_GPIO=n
CONFIG_SERIAL=y
CONFIG_STDOUT_CONSOLE=y
CONFIG_UART_INTERRUPT_DRIVEN=y
CONFIG_TEST_RANDOM_GENERATOR=y
CONFIG_NETWORKING=y
CONFIG_NET_BUF_USER_DATA_SIZE=1
CONFIG_NET_SOCKETS_OFFLOAD=y
CONFIG_NET_SOCKETS=y
CONFIG_NET_SOCKETS_POSIX_NAMES=y
CONFIG_NET_RAW_MODE=y
CONFIG_TRUSTED_EXECUTION_NONSECURE=y
CONFIG_LOG=n
CONFIG_LOG_DEFAULT_LEVEL=4
CONFIG_HEAP_MEM_POOL_SIZE=1024
# LTE link control
//CONFIG_LTE_LINK_CONTROL=y
CONFIG_MAIN_STACK_SIZE=4096&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#39;m trying to make a code that:&lt;br /&gt;1- Modem OFF&lt;br /&gt;2- Modem ON + http post&lt;br /&gt;3-Modem OFF&lt;/p&gt;
&lt;p&gt;I make sure that CONFIG_LTE_LINK_CONTROL = y is not present in the prj.conf file to be able to turn ON and OFF the modem with AT + CFUN = 4/1&lt;/p&gt;
&lt;p&gt;But I have the impression that the problem comes from CFUN = 4&lt;/p&gt;
&lt;p&gt;Currently, I just changed branches (&lt;a href="https://github.com/Rallare/fw-nrfconnect-nrf/tree/nrf9160_samples/samples/nrf9160/http)"&gt;github.com/.../http)&lt;/a&gt; and my code:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;/*
 * Copyright (c) 2018 Nordic Semiconductor ASA
 *
 * SPDX-License-Identifier: LicenseRef-BSD-5-Clause-Nordic
 */

#include &amp;lt;zephyr.h&amp;gt;
#include &amp;lt;net/socket.h&amp;gt;
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;uart.h&amp;gt;
#include &amp;lt;string.h&amp;gt;

#define HTTP_HOST &amp;quot;lp.fr&amp;quot;
#define HTTP_PORT 80
#define RECV_BUF_SIZE 8192

char recv_buf[RECV_BUF_SIZE + 1];

/**@brief Recoverable BSD library error. */
void bsd_recoverable_error_handler(uint32_t err)
{
	printk(&amp;quot;bsdlib recoverable error: %u\n&amp;quot;, err);
}

int blocking_recv(int fd, u8_t *buf, u32_t size, u32_t flags)
{
	int err;

	do {
		err = recv(fd, buf, size, flags);
	} while (err &amp;lt; 0 &amp;amp;&amp;amp; errno == EAGAIN);

	return err;
}

int blocking_send(int fd, u8_t *buf, u32_t size, u32_t flags)
{
	int err;

	do {
		err = send(fd, buf, size, flags);
	} while (err &amp;lt; 0 &amp;amp;&amp;amp; errno == EAGAIN);

	return err;
}

int blocking_connect(int fd, struct sockaddr *local_addr, socklen_t len)
{
	int err;

	do {
		err = connect(fd, local_addr, len);
	} while (err &amp;lt; 0 &amp;amp;&amp;amp; errno == EAGAIN);

	return err;
}



const char *at_commands[] = {
	&amp;quot;AT+CFUN=4&amp;quot;,&amp;quot;AT%XSYSTEMMODE=1,0,0,0&amp;quot;,&amp;quot;AT+CFUN?&amp;quot;, &amp;quot;AT+CFUN=1&amp;quot;, &amp;quot;AT+CFUN?&amp;quot;,&amp;quot;AT+CEREG?&amp;quot;,
	/* Add more here if needed */
};
void app_socket_start(void)
{
	int at_socket_fd = socket(AF_LTE, 0, NPROTO_AT);

	printk(&amp;quot;Starting simple AT socket application\n\r&amp;quot;);

	if (at_socket_fd &amp;lt; 0) {
		printk(&amp;quot;Socket err: %d, errno: %d\r\n&amp;quot;, at_socket_fd, errno);
	}
	for (int i = 0; i &amp;lt; ARRAY_SIZE(at_commands); i++) {
		int bytes_written = send(at_socket_fd, at_commands[i],
					 strlen(at_commands[i]), 0);
		if (bytes_written &amp;gt; 0) {
			int r_bytes =
				blocking_recv(at_socket_fd, recv_buf,
					      sizeof(recv_buf), MSG_DONTWAIT);
			if (r_bytes &amp;gt; 0) {
				printk(&amp;quot;%s&amp;quot;, recv_buf);
			}
		}
	}
	printk(&amp;quot;Closing socket\n\r&amp;quot;);

	(void)close(at_socket_fd);
}





void app_http_start(void)
{
	struct sockaddr_in local_addr;
	struct addrinfo *res;

	local_addr.sin_family = AF_INET;
	local_addr.sin_port = htons(0);
	local_addr.sin_addr.s_addr = 0;

	printk(&amp;quot;HTTP example\n\r&amp;quot;);

	int err = getaddrinfo(HTTP_HOST, NULL, NULL, &amp;amp;res);

	printk(&amp;quot;getaddrinfo err: %d\n\r&amp;quot;, err);
	((struct sockaddr_in *)res-&amp;gt;ai_addr)-&amp;gt;sin_port = htons(HTTP_PORT);

	char send_buf[] =
		//&amp;quot;GET / HTTP/1.1\r\nHost: www.google.com:80\r\nConnection: close\r\n\r\n&amp;quot;;
                &amp;quot;POST / HTTP/1.0\r\nHost: laposte.insgroup.fr\r\nContent-Type: application/json\r\nContent-Length: 41\r\n\r\n\{\&amp;quot;payload\&amp;quot;: \&amp;quot;trame NBIOT de nrf9160 v01\&amp;quot;\}\x1A&amp;quot;;
	int send_data_len = strlen(send_buf);

	int client_fd = socket(AF_INET, SOCK_STREAM, 0);

	printk(&amp;quot;client_fd: %d\n\r&amp;quot;, client_fd);
	err = bind(client_fd, (struct sockaddr *)&amp;amp;local_addr,
		   sizeof(local_addr));
	printk(&amp;quot;bind err: %d\n\r&amp;quot;, err);
	err = blocking_connect(client_fd, (struct sockaddr *)res-&amp;gt;ai_addr,
			       sizeof(struct sockaddr_in));
	printk(&amp;quot;connect err: %d\n\r&amp;quot;, err);

	int num_bytes = send(client_fd, send_buf, send_data_len, 0);

	printk(&amp;quot;send err: %d\n\r&amp;quot;, num_bytes);

	int tot_num_bytes = 0;

	do {
		/* TODO: make a proper timeout *
		 * Current solution will just hang 
		 * until remote side closes connection */
		num_bytes =
			blocking_recv(client_fd, recv_buf, RECV_BUF_SIZE, 0);
		tot_num_bytes += num_bytes;

		if (num_bytes &amp;lt;= 0) {
			break;
		}
		printk(&amp;quot;%s&amp;quot;, recv_buf);
	} while (num_bytes &amp;gt; 0);

	printk(&amp;quot;\n\rFinished. Closing socket&amp;quot;);
	freeaddrinfo(res);
	err = close(client_fd);
}

int main(void)
{
        app_socket_start();
	//app_http_start();

}
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;but same result if&amp;nbsp;&lt;span&gt;CONFIG_LTE_LINK_CONTROL = y present and start at command with CFUN=4&lt;br /&gt;or&amp;nbsp;CONFIG_LTE_LINK_CONTROL = y non present and start at command with CFUN=1 etc..&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;(11:44:51.028) ***** Booting Zephyr OS build v2.0.99-ncs1-rc1-11-g9be97c63368a *****
(11:44:54.524) Starting simple AT socket application
(11:44:54.534) &amp;lt;CR&amp;gt;OK&amp;lt;CR&amp;gt;
(11:44:55.965) OK&amp;lt;CR&amp;gt;
(11:44:55.965) +CFUN: 4&amp;lt;CR&amp;gt;
(11:44:55.965) OK&amp;lt;CR&amp;gt;
(11:44:55.990) OK&amp;lt;CR&amp;gt;
(11:44:55.990) +CFUN: 1&amp;lt;CR&amp;gt;
(11:44:56.025) OK&amp;lt;CR&amp;gt;
(11:44:56.025) +CEREG: 0,0,&amp;quot;61A0&amp;quot;,&amp;quot;01189806&amp;quot;,7&amp;lt;CR&amp;gt;
(11:44:56.025) OK&amp;lt;CR&amp;gt;
(11:44:56.025) Closing socket
(11:44:56.025) &amp;lt;CR&amp;gt;HTTP example
(11:44:56.025) &amp;lt;CR&amp;gt;getaddrinfo err: 51
&lt;/pre&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Kind regards&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: HTTP AT</title><link>https://devzone.nordicsemi.com/thread/242649?ContentTypeID=1</link><pubDate>Tue, 31 Mar 2020 10:09:27 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f9f442e4-18fc-4924-bdec-efb3138023f9</guid><dc:creator>&amp;#216;yvind</dc:creator><description>&lt;p&gt;Thanks for providing the information.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;getaddrinfo err: 51, seems that you do not have a network:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;// From zephyr\lib\libc\minimal\include\errno.h
#define ENETUNREACH 51  /* Network is unreachable */&lt;/pre&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;What does your prj.conf look like?&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: HTTP AT</title><link>https://devzone.nordicsemi.com/thread/242416?ContentTypeID=1</link><pubDate>Mon, 30 Mar 2020 12:50:46 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d0f79881-ffba-4f7a-924f-22459f92ac29</guid><dc:creator>Maxvi33</dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;My working environment is:&lt;br /&gt;&lt;br /&gt;NCS folder tag: Master&lt;br /&gt;Modem FW: 1.1.1&lt;/p&gt;
&lt;p&gt;&lt;span&gt;test sample code:\ncs\nrf\samples\nrf9160\at_client&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://devzone.nordicsemi.com/resized-image/__size/320x240/__key/communityserver-discussions-components-files/4/pastedimage1585576143826v1.png" alt=" " /&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;thank you&lt;br /&gt;Kind regards,&lt;br /&gt;Max&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: HTTP AT</title><link>https://devzone.nordicsemi.com/thread/242358?ContentTypeID=1</link><pubDate>Mon, 30 Mar 2020 10:31:15 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:7ffb65bb-f659-4deb-9de8-b12fbad9da5d</guid><dc:creator>&amp;#216;yvind</dc:creator><description>&lt;p&gt;Hello,&amp;nbsp;&lt;br /&gt;&lt;br /&gt;Can you provide some more information regarding what version of NCS and modem FW your are running?&amp;nbsp;&lt;br /&gt;&lt;br /&gt;Thank you!&lt;br /&gt;&lt;br /&gt;Kind regards,&lt;br /&gt;Øyvind&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>