<?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>How to handle at command in nRF9160?</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/47463/how-to-handle-at-command-in-nrf9160</link><description>I want to handle at command in main.c file. How can you do it? 
 For example, how can you send &amp;quot;AT+COPS?&amp;quot; and received return value? 
 I tested simple_at program below, but it doesn&amp;#39;t work. 
 https://github.com/Rallare/fw-nrfconnect-nrf/tree/nrf9160_samples</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Wed, 22 May 2019 14:03:02 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/47463/how-to-handle-at-command-in-nrf9160" /><item><title>RE: How to handle at command in nRF9160?</title><link>https://devzone.nordicsemi.com/thread/188609?ContentTypeID=1</link><pubDate>Wed, 22 May 2019 14:03:02 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:259c076a-89fb-40df-9f99-8df8bb9ed677</guid><dc:creator>Yusuke</dc:creator><description>&lt;p&gt;Thanks,&amp;nbsp;&lt;span&gt;&amp;Oslash;yvind!&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to handle at command in nRF9160?</title><link>https://devzone.nordicsemi.com/thread/188581?ContentTypeID=1</link><pubDate>Wed, 22 May 2019 13:01:21 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:50a2dfa8-2a9f-4468-b652-0adc59140a2c</guid><dc:creator>&amp;#216;yvind</dc:creator><description>&lt;p&gt;Hello again,&lt;/p&gt;
[quote user="yusuke217"]these three settings in prj.conf file.[/quote]
&lt;p&gt;Information about configuration options can be found&amp;nbsp;&lt;a href="https://developer.nordicsemi.com/nRF_Connect_SDK/doc/0.4.0/zephyr/reference/kconfig/index.html"&gt;here&lt;/a&gt;, in the Zephyr documentation.&lt;/p&gt;
[quote user="yusuke217"]What do you think about this? I&amp;#39;m not familiar with network communication side.[/quote]
&lt;p&gt;From the description given in the documentation, I don&amp;#39;t see any problems if&amp;nbsp;it works. I have not tested this myself, so if you meet any issues, please let me know.&lt;br /&gt;&lt;br /&gt;Kind regards,&lt;br /&gt;Øyvind&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to handle at command in nRF9160?</title><link>https://devzone.nordicsemi.com/thread/188357?ContentTypeID=1</link><pubDate>Tue, 21 May 2019 16:22:20 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:193b8425-7f33-46e3-8044-6945553c21c9</guid><dc:creator>Yusuke</dc:creator><description>&lt;p&gt;Thanks so much! It works out!&lt;/p&gt;
&lt;p&gt;Can I ask one&amp;nbsp;more question?&lt;/p&gt;
&lt;p&gt;I want to send MNC and MNN data of LTE cell station&amp;nbsp;through MQTT so that I&amp;#39;m trying to integrate mqtt_simple and simple_at programs.&lt;br /&gt;&lt;a href="https://github.com/NordicPlayground/fw-nrfconnect-nrf/tree/master/samples/nrf9160/mqtt_simple"&gt;https://github.com/NordicPlayground/fw-nrfconnect-nrf/tree/master/samples/nrf9160/mqtt_simple&lt;br /&gt;&lt;/a&gt;&lt;a href="https://github.com/Rallare/fw-nrfconnect-nrf/tree/nrf9160_samples/samples/nrf9160/simple_at"&gt;https://github.com/Rallare/fw-nrfconnect-nrf/tree/nrf9160_samples/samples/nrf9160/simple_at&lt;/a&gt;&lt;a href="https://github.com/NordicPlayground/fw-nrfconnect-nrf/tree/master/samples/nrf9160/mqtt_simple"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can get&lt;span&gt;&amp;nbsp;MNC and MNN data by &amp;quot;&lt;/span&gt;AT+COPS?&lt;span&gt;&amp;quot; command.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Compared to mqtt_simple prj.conf file, simple_at program additionally includes these three settings in prj.conf file.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;CONFIG_STDOUT_CONSOLE=y&lt;br /&gt;CONFIG_NET_BUF_USER_DATA_SIZE=1&lt;br /&gt;CONFIG_NET_RAW_MODE=y&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;I omitted these lines in prj.conf and integrated the two programs. It works out, but I&amp;#39;m suspicious that I might do wrong coding. What do you think about this? I&amp;#39;m not familiar with network communication side. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Full code is below.&amp;nbsp;&lt;/span&gt;app_socket_start() is added after&amp;nbsp;fds_init().&lt;br /&gt;Thanks.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;&amp;lt;prj.conf&amp;gt;

# General config
CONFIG_TEST_RANDOM_GENERATOR=y

# Networking
CONFIG_NETWORKING=y
CONFIG_NET_SOCKETS_OFFLOAD=y
CONFIG_NET_SOCKETS=y
CONFIG_NET_SOCKETS_POSIX_NAMES=y

# LTE link control
CONFIG_LTE_LINK_CONTROL=y
CONFIG_LTE_AUTO_INIT_AND_CONNECT=n

# BSD library
CONFIG_BSD_LIBRARY=y

# AT Host
CONFIG_UART_INTERRUPT_DRIVEN=y
CONFIG_AT_HOST_LIBRARY=y

# MQTT
CONFIG_MQTT_LIB=y
CONFIG_MQTT_LIB_TLS=n

# Appliaction
CONFIG_MQTT_PUB_TOPIC=&amp;quot;myPubTopic&amp;quot;
CONFIG_MQTT_SUB_TOPIC=&amp;quot;mySubTopic&amp;quot;
CONFIG_MQTT_CLIENT_ID=&amp;quot;myClientID&amp;quot;
CONFIG_MQTT_BROKER_HOSTNAME=&amp;quot;xxxxxxxxxxxxxxxxxxxxxxx&amp;quot;
CONFIG_MQTT_BROKER_PORT=1883

# Main thread
CONFIG_MAIN_THREAD_PRIORITY=7
CONFIG_MAIN_STACK_SIZE=4096

CONFIG_HEAP_MEM_POOL_SIZE=1024

# CONFIG_STDOUT_CONSOLE=y
# CONFIG_NET_BUF_USER_DATA_SIZE=1
# CONFIG_NET_RAW_MODE=y
&lt;/pre&gt;&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;stdio.h&amp;gt;
#include &amp;lt;uart.h&amp;gt;
#include &amp;lt;string.h&amp;gt;

#include &amp;lt;net/mqtt.h&amp;gt;
#include &amp;lt;net/socket.h&amp;gt;
#include &amp;lt;lte_lc.h&amp;gt;

#define MQTT_USERNAME &amp;quot;username&amp;quot;
#define MQTT_PASSWORD &amp;quot;password&amp;quot;

/* Buffers for MQTT client. */
static u8_t rx_buffer[CONFIG_MQTT_MESSAGE_BUFFER_SIZE];
static u8_t tx_buffer[CONFIG_MQTT_MESSAGE_BUFFER_SIZE];
static u8_t payload_buf[CONFIG_MQTT_PAYLOAD_BUFFER_SIZE];

/* The mqtt client struct */
static struct mqtt_client client;

/* MQTT Broker details. */
static struct sockaddr_storage broker;

/* Connected flag */
static bool connected;

/* File descriptor */
static struct pollfd fds;

#if defined(CONFIG_BSD_LIBRARY)

/**@brief Recoverable BSD library error. */
void bsd_recoverable_error_handler(uint32_t err)
{
	printk(&amp;quot;bsdlib recoverable error: %u\n&amp;quot;, err);
}

/**@brief Irrecoverable BSD library error. */
void bsd_irrecoverable_error_handler(uint32_t err)
{
	printk(&amp;quot;bsdlib irrecoverable error: %u\n&amp;quot;, err);

	__ASSERT_NO_MSG(false);
}

#endif /* defined(CONFIG_BSD_LIBRARY) */

/**@brief Function to print strings without null-termination
 */
static void data_print(u8_t *prefix, u8_t *data, size_t len)
{
	char buf[len + 1];

	memcpy(buf, data, len);
	buf[len] = 0;
	printk(&amp;quot;%s%s\n&amp;quot;, prefix, buf);
}

/**@brief Function to publish data on the configured topic
 */
static int data_publish(struct mqtt_client *c, enum mqtt_qos qos,
	u8_t *data, size_t len)
{
	struct mqtt_publish_param param;

	param.message.topic.qos = qos;
	param.message.topic.topic.utf8 = CONFIG_MQTT_PUB_TOPIC;
	param.message.topic.topic.size = strlen(CONFIG_MQTT_PUB_TOPIC);
	param.message.payload.data = data;
	param.message.payload.len = len;
	param.message_id = sys_rand32_get();
	param.dup_flag = 0;
	param.retain_flag = 0;

	data_print(&amp;quot;Publishing: &amp;quot;, data, len);
	printk(&amp;quot;to topic: %s len: %u\n&amp;quot;,
		CONFIG_MQTT_PUB_TOPIC,
		(unsigned int)strlen(CONFIG_MQTT_PUB_TOPIC));

	return mqtt_publish(c, &amp;amp;param);
}

/**@brief Function to subscribe to the configured topic
 */
static int subscribe(void)
{
	struct mqtt_topic subscribe_topic = {
		.topic = {
			.utf8 = CONFIG_MQTT_SUB_TOPIC,
			.size = strlen(CONFIG_MQTT_SUB_TOPIC)
		},
		.qos = MQTT_QOS_1_AT_LEAST_ONCE
	};

	const struct mqtt_subscription_list subscription_list = {
		.list = &amp;amp;subscribe_topic,
		.list_count = 1,
		.message_id = 1234
	};

	printk(&amp;quot;Subscribing to: %s len %u\n&amp;quot;, CONFIG_MQTT_SUB_TOPIC,
		(unsigned int)strlen(CONFIG_MQTT_SUB_TOPIC));

	return mqtt_subscribe(&amp;amp;client, &amp;amp;subscription_list);
}

/**@brief Function to read the published payload.
 */
static int publish_get_payload(struct mqtt_client *c, size_t length)
{
	u8_t *buf = payload_buf;
	u8_t *end = buf + length;

	if (length &amp;gt; sizeof(payload_buf)) {
		return -EMSGSIZE;
	}

	while (buf &amp;lt; end) {
		int ret = mqtt_read_publish_payload(c, buf, end - buf);

		if (ret &amp;lt; 0) {
			int err;

			if (ret != -EAGAIN) {
				return ret;
			}

			printk(&amp;quot;mqtt_read_publish_payload: EAGAIN\n&amp;quot;);

			err = poll(&amp;amp;fds, 1, K_SECONDS(CONFIG_MQTT_KEEPALIVE));
			if (err &amp;gt; 0 &amp;amp;&amp;amp; (fds.revents &amp;amp; POLLIN) == POLLIN) {
				continue;
			} else {
				return -EIO;
			}
		}

		if (ret == 0) {
			return -EIO;
		}

		buf += ret;
	}

	return 0;
}

/**@brief MQTT client event handler
 */
void mqtt_evt_handler(struct mqtt_client *const c,
		      const struct mqtt_evt *evt)
{
	int err;

	switch (evt-&amp;gt;type) {
	case MQTT_EVT_CONNACK:
		if (evt-&amp;gt;result != 0) {
			printk(&amp;quot;MQTT connect failed %d\n&amp;quot;, evt-&amp;gt;result);
			break;
		}

		connected = true;
		printk(&amp;quot;[%s:%d] MQTT client connected!\n&amp;quot;, __func__, __LINE__);
		subscribe();
		break;

	case MQTT_EVT_DISCONNECT:
		printk(&amp;quot;[%s:%d] MQTT client disconnected %d\n&amp;quot;, __func__,
		       __LINE__, evt-&amp;gt;result);

		connected = false;
		break;

	case MQTT_EVT_PUBLISH: {
		const struct mqtt_publish_param *p = &amp;amp;evt-&amp;gt;param.publish;

		printk(&amp;quot;[%s:%d] MQTT PUBLISH result=%d len=%d\n&amp;quot;, __func__,
		       __LINE__, evt-&amp;gt;result, p-&amp;gt;message.payload.len);
		err = publish_get_payload(c, p-&amp;gt;message.payload.len);
		if (err &amp;gt;= 0) {
			data_print(&amp;quot;Received: &amp;quot;, payload_buf,
				p-&amp;gt;message.payload.len);
			/* Echo back received data */
			data_publish(&amp;amp;client, MQTT_QOS_1_AT_LEAST_ONCE,
				payload_buf, p-&amp;gt;message.payload.len);
		} else {
			printk(&amp;quot;mqtt_read_publish_payload: Failed! %d\n&amp;quot;, err);
			printk(&amp;quot;Disconnecting MQTT client...\n&amp;quot;);

			err = mqtt_disconnect(c);
			if (err) {
				printk(&amp;quot;Could not disconnect: %d\n&amp;quot;, err);
			}
		}
	} break;

	case MQTT_EVT_PUBACK:
		if (evt-&amp;gt;result != 0) {
			printk(&amp;quot;MQTT PUBACK error %d\n&amp;quot;, evt-&amp;gt;result);
			break;
		}

		printk(&amp;quot;[%s:%d] PUBACK packet id: %u\n&amp;quot;, __func__, __LINE__,
				evt-&amp;gt;param.puback.message_id);
		break;

	case MQTT_EVT_SUBACK:
		if (evt-&amp;gt;result != 0) {
			printk(&amp;quot;MQTT SUBACK error %d\n&amp;quot;, evt-&amp;gt;result);
			break;
		}

		printk(&amp;quot;[%s:%d] SUBACK packet id: %u\n&amp;quot;, __func__, __LINE__,
				evt-&amp;gt;param.suback.message_id);
		break;

	default:
		printk(&amp;quot;[%s:%d] default: %d\n&amp;quot;, __func__, __LINE__,
				evt-&amp;gt;type);
		break;
	}
}

/**@brief Resolves the configured hostname and
 * initializes the MQTT broker structure
 */
static void broker_init(void)
{
	int err;
	struct addrinfo *result;
	struct addrinfo *addr;
	struct addrinfo hints = {
		.ai_family = AF_INET,
		.ai_socktype = SOCK_STREAM
	};

	err = getaddrinfo(CONFIG_MQTT_BROKER_HOSTNAME, NULL, &amp;amp;hints, &amp;amp;result);
	if (err) {
		printk(&amp;quot;ERROR: getaddrinfo failed %d\n&amp;quot;, err);

		return;
	}

	addr = result;
	err = -ENOENT;

	/* Look for address of the broker. */
	while (addr != NULL) {
		/* IPv4 Address. */
		if (addr-&amp;gt;ai_addrlen == sizeof(struct sockaddr_in)) {
			struct sockaddr_in *broker4 =
				((struct sockaddr_in *)&amp;amp;broker);

			broker4-&amp;gt;sin_addr.s_addr =
				((struct sockaddr_in *)addr-&amp;gt;ai_addr)
				-&amp;gt;sin_addr.s_addr;
			broker4-&amp;gt;sin_family = AF_INET;
			broker4-&amp;gt;sin_port = htons(CONFIG_MQTT_BROKER_PORT);
			printk(&amp;quot;IPv4 Address found 0x%08x\n&amp;quot;,
				broker4-&amp;gt;sin_addr.s_addr);
			break;
		} else {
			printk(&amp;quot;ai_addrlen = %u should be %u or %u\n&amp;quot;,
				(unsigned int)addr-&amp;gt;ai_addrlen,
				(unsigned int)sizeof(struct sockaddr_in),
				(unsigned int)sizeof(struct sockaddr_in6));
		}

		addr = addr-&amp;gt;ai_next;
		break;
	}

	/* Free the address. */
	freeaddrinfo(result);
}

/**@brief Initialize the MQTT client structure
 */
static void client_init(struct mqtt_client *client)
{
	mqtt_client_init(client);

	broker_init();

    static struct mqtt_utf8 password;
	static struct mqtt_utf8 user_name;

	password.utf8 = (u8_t*)MQTT_PASSWORD;
	password.size = strlen(MQTT_PASSWORD);
	user_name.utf8 = (u8_t*)MQTT_USERNAME;
	user_name.size = strlen(MQTT_USERNAME);

	/* MQTT client configuration */
	client-&amp;gt;broker = &amp;amp;broker;
	client-&amp;gt;evt_cb = mqtt_evt_handler;
	client-&amp;gt;client_id.utf8 = (u8_t *)CONFIG_MQTT_CLIENT_ID;
	client-&amp;gt;client_id.size = strlen(CONFIG_MQTT_CLIENT_ID);
	client-&amp;gt;password = &amp;amp;password;
	client-&amp;gt;user_name = &amp;amp;user_name;
	client-&amp;gt;protocol_version = MQTT_VERSION_3_1_1;

	/* MQTT buffers configuration */
	client-&amp;gt;rx_buf = rx_buffer;
	client-&amp;gt;rx_buf_size = sizeof(rx_buffer);
	client-&amp;gt;tx_buf = tx_buffer;
	client-&amp;gt;tx_buf_size = sizeof(tx_buffer);

	/* MQTT transport configuration */
	client-&amp;gt;transport.type = MQTT_TRANSPORT_NON_SECURE;
}

/**@brief Initialize the file descriptor structure used by poll.
 */
static int fds_init(struct mqtt_client *c)
{
	if (c-&amp;gt;transport.type == MQTT_TRANSPORT_NON_SECURE) {
		fds.fd = c-&amp;gt;transport.tcp.sock;
	} else {
#if defined(CONFIG_MQTT_LIB_TLS)
		fds.fd = c-&amp;gt;transport.tls.sock;
#else
		return -ENOTSUP;
#endif
	}

	fds.events = POLLIN;

	return 0;
}

/**@brief Configures modem to provide LTE link. Blocks until link is
 * successfully established.
 */
static void modem_configure(void)
{
#if defined(CONFIG_LTE_LINK_CONTROL)
	if (IS_ENABLED(CONFIG_LTE_AUTO_INIT_AND_CONNECT)) {
		/* Do nothing, modem is already turned on
		 * and connected.
		 */
	} else {
		int err;

		printk(&amp;quot;LTE Link Connecting ...\n&amp;quot;);
		err = lte_lc_init_and_connect();
		__ASSERT(err == 0, &amp;quot;LTE link could not be established.&amp;quot;);
		printk(&amp;quot;LTE Link Connected!\n&amp;quot;);
	}
#endif
}

#define RECV_BUF_SIZE 1024
char recv_buf[RECV_BUF_SIZE + 1];

const char *at_commands[] = {
	&amp;quot;AT+COPS?&amp;quot;
	/* Add more here if needed */
};

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;
}

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 main(void)
{
	int err;

	printk(&amp;quot;The MQTT simple sample started\n&amp;quot;);

	modem_configure();

	client_init(&amp;amp;client);

	err = mqtt_connect(&amp;amp;client);
	if (err != 0) {
		printk(&amp;quot;ERROR: mqtt_connect %d\n&amp;quot;, err);
		return;
	}

	err = fds_init(&amp;amp;client);
	if (err != 0) {
		printk(&amp;quot;ERROR: fds_init %d\n&amp;quot;, err);
		return;
	}

	while (1) {
        app_socket_start(); // ADD HERE

		err = poll(&amp;amp;fds, 1, K_SECONDS(CONFIG_MQTT_KEEPALIVE)); 
		if (err &amp;lt; 0) {
			printk(&amp;quot;ERROR: poll %d\n&amp;quot;, errno);
			break;
		}
		
		err = mqtt_live(&amp;amp;client);
		if (err != 0) {
			printk(&amp;quot;ERROR: mqtt_live %d\n&amp;quot;, err);
			break;
		}

		if ((fds.revents &amp;amp; POLLIN) == POLLIN) {
			err = mqtt_input(&amp;amp;client);
			if (err != 0) {
				printk(&amp;quot;ERROR: mqtt_input %d\n&amp;quot;, err);
				break;
			}
		}

		if ((fds.revents &amp;amp; POLLERR) == POLLERR) {
			printk(&amp;quot;POLLERR\n&amp;quot;);
			break;
		}

		if ((fds.revents &amp;amp; POLLNVAL) == POLLNVAL) {
			printk(&amp;quot;POLLNVAL\n&amp;quot;);
			break;
		}
	}

	printk(&amp;quot;Disconnecting MQTT client...\n&amp;quot;);

	err = mqtt_disconnect(&amp;amp;client);
	if (err) {
		printk(&amp;quot;Could not disconnect MQTT client. Error: %d\n&amp;quot;, err);
	}
}
&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to handle at command in nRF9160?</title><link>https://devzone.nordicsemi.com/thread/188089?ContentTypeID=1</link><pubDate>Tue, 21 May 2019 06:45:54 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5b2a42ba-8a7e-43bd-b40a-3a66abe845fd</guid><dc:creator>&amp;#216;yvind</dc:creator><description>&lt;p&gt;Sorry, I misread your initial question. I thought you just needed a way to send and receive AT commands.&lt;/p&gt;
&lt;p&gt;The AT_client sample uses threads in Zephyr OS to handle AT commands.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
[quote user=""]I tested simple_at program below, but it doesn&amp;#39;t work.[/quote]
&lt;p&gt;To solve the hard fault issue, please try to add the following in the prj.conf file:&lt;br /&gt;&lt;pre class="ui-code" data-mode="text"&gt;CONFIG_MAIN_STACK_SIZE=4096&lt;/pre&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Thanks!&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><item><title>RE: How to handle at command in nRF9160?</title><link>https://devzone.nordicsemi.com/thread/188060?ContentTypeID=1</link><pubDate>Tue, 21 May 2019 04:19:01 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:6e75f1b3-fa25-48af-91ee-a08b32234183</guid><dc:creator>Yusuke</dc:creator><description>&lt;p&gt;Thank you for your reply.&lt;/p&gt;
&lt;p&gt;I&amp;#39;ve already checked the at client sample.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/NordicPlayground/fw-nrfconnect-nrf/tree/master/samples/nrf9160/at_client"&gt;github.com/.../at_client&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I don&amp;#39;t see code to send at command in main.c.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Can u tell me which lines send at command?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to handle at command in nRF9160?</title><link>https://devzone.nordicsemi.com/thread/187905?ContentTypeID=1</link><pubDate>Mon, 20 May 2019 12:21:43 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8cf54362-c4d8-4ad9-8a2f-c1aff4a1c388</guid><dc:creator>&amp;#216;yvind</dc:creator><description>&lt;p&gt;Hello,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Please have a look at the AT Client sample project. This allows you to send and receive AT commands in a terminal e.g. LTE&amp;nbsp;Link Monitor.&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>