Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Revision 40:c46ee5b71843, committed 2019-05-06
- Comitter:
- mbed_official
- Date:
- Mon May 06 09:02:01 2019 +0100
- Parent:
- 39:e57f130d65bd
- Child:
- 41:1f13c9a6ee23
- Commit message:
- Merge pull request #135 from mirelachirica/nonip_socket_support
Added NonIP socket example
.
Commit copied from https://github.com/ARMmbed/mbed-os-example-cellular
Changed in this revision
| README.md | Show annotated file Show diff for this revision Revisions of this file |
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/README.md Tue Apr 30 11:02:03 2019 +0100
+++ b/README.md Mon May 06 09:02:01 2019 +0100
@@ -38,7 +38,7 @@
"nsapi.default-cellular-password": 0
```
-### Selecting socket type (TCP or UDP)
+### Selecting socket type (TCP, UDP or NONIP)
You can choose which socket type the application should use; however, please note that TCP is a more reliable transmission protocol. For example:
@@ -137,6 +137,7 @@
* The modem may support only a fixed baud-rate, such as `"platform.default-serial-baud-rate": 9600`.
* The modem and network may only support IPv6 in which case `"lwip.ipv6-enabled": true` shall be defined.
* The SIM and modem must have compatible cellular technology (3G, 4G, NB-IoT, ...) supported and cellular network available.
+* Enable CIoT optimization for NONIP socket `control-plane-opt: true`.
If you have problems to get started with debugging, you can review the [documentation](https://os.mbed.com/docs/latest/tutorials/debugging.html) for suggestions on what could be wrong and how to fix it.
--- a/main.cpp Tue Apr 30 11:02:03 2019 +0100
+++ b/main.cpp Mon May 06 09:02:01 2019 +0100
@@ -16,11 +16,14 @@
#include "mbed.h"
#include "common_functions.h"
+#include "CellularNonIPSocket.h"
+#include "CellularDevice.h"
#include "UDPSocket.h"
#include "CellularLog.h"
#define UDP 0
#define TCP 1
+#define NONIP 2
// Number of retries /
#define RETRY_COUNT 3
@@ -129,28 +132,59 @@
}
/**
- * Opens a UDP or a TCP socket with the given echo server and performs an echo
- * transaction retrieving current.
+ * Opens:
+ * - UDP or TCP socket with the given echo server and performs an echo
+ * transaction retrieving current.
+ * - Cellular Non-IP socket for which the data delivery path is decided
+ * by network's control plane CIoT optimisation setup, for the given APN.
*/
nsapi_error_t test_send_recv()
{
nsapi_size_or_error_t retcode;
#if MBED_CONF_APP_SOCK_TYPE == TCP
TCPSocket sock;
-#else
+#elif MBED_CONF_APP_SOCK_TYPE == UDP
UDPSocket sock;
+#elif MBED_CONF_APP_SOCK_TYPE == NONIP
+ CellularNonIPSocket sock;
#endif
+#if MBED_CONF_APP_SOCK_TYPE == NONIP
+ retcode = sock.open((CellularContext*)iface);
+#else
retcode = sock.open(iface);
+#endif
+
if (retcode != NSAPI_ERROR_OK) {
#if MBED_CONF_APP_SOCK_TYPE == TCP
print_function("TCPSocket.open() fails, code: %d\n", retcode);
-#else
+#elif MBED_CONF_APP_SOCK_TYPE == UDP
print_function("UDPSocket.open() fails, code: %d\n", retcode);
+#elif MBED_CONF_APP_SOCK_TYPE == NONIP
+ print_function("CellularNonIPSocket.open() fails, code: %d\n", retcode);
#endif
return -1;
}
+ int n = 0;
+ const char *echo_string = "TEST";
+ char recv_buf[4];
+
+ sock.set_timeout(15000);
+
+#if MBED_CONF_APP_SOCK_TYPE == NONIP
+ retcode = sock.send((void*) echo_string, sizeof(echo_string));
+ if (retcode < 0) {
+ print_function("CellularNonIPSocket.send() fails, code: %d\n", retcode);
+ return -1;
+ } else {
+ print_function("CellularNonIPSocket: Sent %d Bytes\n", retcode);
+ }
+
+ n = sock.recv((void*) recv_buf, sizeof(recv_buf));
+
+#else
+
SocketAddress sock_addr;
retcode = iface->gethostbyname(host_name, &sock_addr);
if (retcode != NSAPI_ERROR_OK) {
@@ -160,10 +194,6 @@
sock_addr.set_port(port);
- sock.set_timeout(15000);
- int n = 0;
- const char *echo_string = "TEST";
- char recv_buf[4];
#if MBED_CONF_APP_SOCK_TYPE == TCP
retcode = sock.connect(sock_addr);
if (retcode < 0) {
@@ -193,6 +223,7 @@
n = sock.recvfrom(&sock_addr, (void*) recv_buf, sizeof(recv_buf));
#endif
+#endif
sock.close();
@@ -219,10 +250,17 @@
dot_thread.start(dot_event);
#endif // #if MBED_CONF_MBED_TRACE_ENABLE
- // sim pin, apn, credentials and possible plmn are taken atuomtically from json when using get_default_instance()
- iface = NetworkInterface::get_default_instance();
+#if MBED_CONF_APP_SOCK_TYPE == NONIP
+ iface = CellularContext::get_default_nonip_instance();
+#else
+ iface = CellularContext::get_default_instance();
+#endif
+
MBED_ASSERT(iface);
+ // sim pin, apn, credentials and possible plmn are taken automatically from json when using NetworkInterface::set_default_parameters()
+ iface->set_default_parameters();
+
nsapi_error_t retcode = NSAPI_ERROR_NO_CONNECTION;
/* Attempt to connect to a cellular network */