mirror of https://github.com/ARMmbed/mbed-os.git
netsocket: fix astyle coding style
parent
884a7748b2
commit
63160d8c5b
|
|
@ -10,6 +10,7 @@ features/storage/FEATURE_STORAGE
|
||||||
features/frameworks
|
features/frameworks
|
||||||
features/FEATURE_BLE/targets
|
features/FEATURE_BLE/targets
|
||||||
features/unsupported/
|
features/unsupported/
|
||||||
|
features/netsocket/emac-drivers
|
||||||
hal/storage_abstraction
|
hal/storage_abstraction
|
||||||
features/nanostack/coap-service
|
features/nanostack/coap-service
|
||||||
features/nanostack/sal-stack-nanostack
|
features/nanostack/sal-stack-nanostack
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Create a SocketAddress from a raw IP address and port
|
/** Create a SocketAddress from a raw IP address and port
|
||||||
*
|
*
|
||||||
* To construct from a host name, use NetworkInterface::gethostbyname
|
* To construct from a host name, use NetworkInterface::gethostbyname
|
||||||
*
|
*
|
||||||
* @param addr Raw IP address
|
* @param addr Raw IP address
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ TCPSocket::TCPSocket()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
TCPSocket::TCPSocket(TCPSocket* parent, nsapi_socket_t socket, SocketAddress address)
|
TCPSocket::TCPSocket(TCPSocket *parent, nsapi_socket_t socket, SocketAddress address)
|
||||||
{
|
{
|
||||||
_socket = socket,
|
_socket = socket,
|
||||||
_stack = parent->_stack;
|
_stack = parent->_stack;
|
||||||
|
|
|
||||||
|
|
@ -70,12 +70,14 @@ public:
|
||||||
* @param stack Network stack as target for socket
|
* @param stack Network stack as target for socket
|
||||||
* @return 0 on success, negative error code on failure
|
* @return 0 on success, negative error code on failure
|
||||||
*/
|
*/
|
||||||
virtual nsapi_error_t open(NetworkStack *stack) {
|
virtual nsapi_error_t open(NetworkStack *stack)
|
||||||
|
{
|
||||||
return tcp_socket.open(stack);
|
return tcp_socket.open(stack);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename S>
|
template <typename S>
|
||||||
nsapi_error_t open(S *stack) {
|
nsapi_error_t open(S *stack)
|
||||||
|
{
|
||||||
return open(nsapi_create_stack(stack));
|
return open(nsapi_create_stack(stack));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -33,8 +33,8 @@ TLSSocketWrapper::TLSSocketWrapper(Socket *transport, const char *hostname, cont
|
||||||
_clicert(NULL),
|
_clicert(NULL),
|
||||||
#endif
|
#endif
|
||||||
_ssl_conf(NULL),
|
_ssl_conf(NULL),
|
||||||
_connect_transport(control==TRANSPORT_CONNECT || control==TRANSPORT_CONNECT_AND_CLOSE),
|
_connect_transport(control == TRANSPORT_CONNECT || control == TRANSPORT_CONNECT_AND_CLOSE),
|
||||||
_close_transport(control==TRANSPORT_CLOSE || control==TRANSPORT_CONNECT_AND_CLOSE),
|
_close_transport(control == TRANSPORT_CLOSE || control == TRANSPORT_CONNECT_AND_CLOSE),
|
||||||
_handshake_completed(false),
|
_handshake_completed(false),
|
||||||
_cacert_allocated(false),
|
_cacert_allocated(false),
|
||||||
_clicert_allocated(false),
|
_clicert_allocated(false),
|
||||||
|
|
@ -50,7 +50,8 @@ TLSSocketWrapper::TLSSocketWrapper(Socket *transport, const char *hostname, cont
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TLSSocketWrapper::~TLSSocketWrapper() {
|
TLSSocketWrapper::~TLSSocketWrapper()
|
||||||
|
{
|
||||||
if (_transport) {
|
if (_transport) {
|
||||||
close();
|
close();
|
||||||
}
|
}
|
||||||
|
|
@ -90,7 +91,7 @@ nsapi_error_t TLSSocketWrapper::set_root_ca_cert(const void *root_ca, size_t len
|
||||||
/* Parse CA certification */
|
/* Parse CA certification */
|
||||||
int ret;
|
int ret;
|
||||||
if ((ret = mbedtls_x509_crt_parse(crt, static_cast<const unsigned char *>(root_ca),
|
if ((ret = mbedtls_x509_crt_parse(crt, static_cast<const unsigned char *>(root_ca),
|
||||||
len)) != 0) {
|
len)) != 0) {
|
||||||
print_mbedtls_error("mbedtls_x509_crt_parse", ret);
|
print_mbedtls_error("mbedtls_x509_crt_parse", ret);
|
||||||
return NSAPI_ERROR_PARAMETER;
|
return NSAPI_ERROR_PARAMETER;
|
||||||
}
|
}
|
||||||
|
|
@ -111,7 +112,7 @@ nsapi_error_t TLSSocketWrapper::set_client_cert_key(const char *client_cert_pem,
|
||||||
}
|
}
|
||||||
|
|
||||||
nsapi_error_t TLSSocketWrapper::set_client_cert_key(const void *client_cert, size_t client_cert_len,
|
nsapi_error_t TLSSocketWrapper::set_client_cert_key(const void *client_cert, size_t client_cert_len,
|
||||||
const void *client_private_key_pem, size_t client_private_key_len)
|
const void *client_private_key_pem, size_t client_private_key_len)
|
||||||
{
|
{
|
||||||
#if !defined(MBEDTLS_X509_CRT_PARSE_C)
|
#if !defined(MBEDTLS_X509_CRT_PARSE_C)
|
||||||
return NSAPI_ERROR_UNSUPPORTED;
|
return NSAPI_ERROR_UNSUPPORTED;
|
||||||
|
|
@ -120,14 +121,14 @@ nsapi_error_t TLSSocketWrapper::set_client_cert_key(const void *client_cert, siz
|
||||||
int ret;
|
int ret;
|
||||||
mbedtls_x509_crt *crt = new mbedtls_x509_crt;
|
mbedtls_x509_crt *crt = new mbedtls_x509_crt;
|
||||||
mbedtls_x509_crt_init(crt);
|
mbedtls_x509_crt_init(crt);
|
||||||
if((ret = mbedtls_x509_crt_parse(crt, static_cast<const unsigned char *>(client_cert),
|
if ((ret = mbedtls_x509_crt_parse(crt, static_cast<const unsigned char *>(client_cert),
|
||||||
client_cert_len)) != 0) {
|
client_cert_len)) != 0) {
|
||||||
print_mbedtls_error("mbedtls_x509_crt_parse", ret);
|
print_mbedtls_error("mbedtls_x509_crt_parse", ret);
|
||||||
return NSAPI_ERROR_PARAMETER;
|
return NSAPI_ERROR_PARAMETER;
|
||||||
}
|
}
|
||||||
mbedtls_pk_init(&_pkctx);
|
mbedtls_pk_init(&_pkctx);
|
||||||
if((ret = mbedtls_pk_parse_key(&_pkctx, static_cast<const unsigned char *>(client_private_key_pem),
|
if ((ret = mbedtls_pk_parse_key(&_pkctx, static_cast<const unsigned char *>(client_private_key_pem),
|
||||||
client_private_key_len, NULL, 0)) != 0) {
|
client_private_key_len, NULL, 0)) != 0) {
|
||||||
print_mbedtls_error("mbedtls_pk_parse_key", ret);
|
print_mbedtls_error("mbedtls_pk_parse_key", ret);
|
||||||
return NSAPI_ERROR_PARAMETER;
|
return NSAPI_ERROR_PARAMETER;
|
||||||
}
|
}
|
||||||
|
|
@ -139,7 +140,8 @@ nsapi_error_t TLSSocketWrapper::set_client_cert_key(const void *client_cert, siz
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
nsapi_error_t TLSSocketWrapper::do_handshake() {
|
nsapi_error_t TLSSocketWrapper::do_handshake()
|
||||||
|
{
|
||||||
nsapi_error_t _error;
|
nsapi_error_t _error;
|
||||||
const char DRBG_PERS[] = "mbed TLS client";
|
const char DRBG_PERS[] = "mbed TLS client";
|
||||||
|
|
||||||
|
|
@ -153,8 +155,8 @@ nsapi_error_t TLSSocketWrapper::do_handshake() {
|
||||||
*/
|
*/
|
||||||
int ret;
|
int ret;
|
||||||
if ((ret = mbedtls_ctr_drbg_seed(&_ctr_drbg, mbedtls_entropy_func, &_entropy,
|
if ((ret = mbedtls_ctr_drbg_seed(&_ctr_drbg, mbedtls_entropy_func, &_entropy,
|
||||||
(const unsigned char *) DRBG_PERS,
|
(const unsigned char *) DRBG_PERS,
|
||||||
sizeof (DRBG_PERS))) != 0) {
|
sizeof(DRBG_PERS))) != 0) {
|
||||||
print_mbedtls_error("mbedtls_crt_drbg_init", ret);
|
print_mbedtls_error("mbedtls_crt_drbg_init", ret);
|
||||||
_error = ret;
|
_error = ret;
|
||||||
return _error;
|
return _error;
|
||||||
|
|
@ -177,7 +179,7 @@ nsapi_error_t TLSSocketWrapper::do_handshake() {
|
||||||
return _error;
|
return _error;
|
||||||
}
|
}
|
||||||
|
|
||||||
mbedtls_ssl_set_bio(&_ssl, this, ssl_send, ssl_recv, NULL );
|
mbedtls_ssl_set_bio(&_ssl, this, ssl_send, ssl_recv, NULL);
|
||||||
|
|
||||||
#ifdef MBEDTLS_X509_CRT_PARSE_C
|
#ifdef MBEDTLS_X509_CRT_PARSE_C
|
||||||
/* Start the handshake, the rest will be done in onReceive() */
|
/* Start the handshake, the rest will be done in onReceive() */
|
||||||
|
|
@ -189,7 +191,7 @@ nsapi_error_t TLSSocketWrapper::do_handshake() {
|
||||||
do {
|
do {
|
||||||
ret = mbedtls_ssl_handshake(&_ssl);
|
ret = mbedtls_ssl_handshake(&_ssl);
|
||||||
} while (ret != 0 && (ret == MBEDTLS_ERR_SSL_WANT_READ ||
|
} while (ret != 0 && (ret == MBEDTLS_ERR_SSL_WANT_READ ||
|
||||||
ret == MBEDTLS_ERR_SSL_WANT_WRITE));
|
ret == MBEDTLS_ERR_SSL_WANT_WRITE));
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
print_mbedtls_error("mbedtls_ssl_handshake", ret);
|
print_mbedtls_error("mbedtls_ssl_handshake", ret);
|
||||||
return ret;
|
return ret;
|
||||||
|
|
@ -205,13 +207,13 @@ nsapi_error_t TLSSocketWrapper::do_handshake() {
|
||||||
#ifdef MBEDTLS_X509_CRT_PARSE_C
|
#ifdef MBEDTLS_X509_CRT_PARSE_C
|
||||||
/* Prints the server certificate and verify it. */
|
/* Prints the server certificate and verify it. */
|
||||||
const size_t buf_size = 1024;
|
const size_t buf_size = 1024;
|
||||||
char* buf = new char[buf_size];
|
char *buf = new char[buf_size];
|
||||||
mbedtls_x509_crt_info(buf, buf_size, "\r ",
|
mbedtls_x509_crt_info(buf, buf_size, "\r ",
|
||||||
mbedtls_ssl_get_peer_cert(&_ssl));
|
mbedtls_ssl_get_peer_cert(&_ssl));
|
||||||
tr_debug("Server certificate:\r\n%s\r\n", buf);
|
tr_debug("Server certificate:\r\n%s\r\n", buf);
|
||||||
|
|
||||||
uint32_t flags = mbedtls_ssl_get_verify_result(&_ssl);
|
uint32_t flags = mbedtls_ssl_get_verify_result(&_ssl);
|
||||||
if( flags != 0 ) {
|
if (flags != 0) {
|
||||||
/* Verification failed. */
|
/* Verification failed. */
|
||||||
mbedtls_x509_crt_verify_info(buf, buf_size, "\r ! ", flags);
|
mbedtls_x509_crt_verify_info(buf, buf_size, "\r ! ", flags);
|
||||||
tr_error("Certificate verification failed:\r\n%s", buf);
|
tr_error("Certificate verification failed:\r\n%s", buf);
|
||||||
|
|
@ -228,7 +230,8 @@ nsapi_error_t TLSSocketWrapper::do_handshake() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
nsapi_error_t TLSSocketWrapper::send(const void *data, nsapi_size_t size) {
|
nsapi_error_t TLSSocketWrapper::send(const void *data, nsapi_size_t size)
|
||||||
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (!_transport) {
|
if (!_transport) {
|
||||||
|
|
@ -239,7 +242,7 @@ nsapi_error_t TLSSocketWrapper::send(const void *data, nsapi_size_t size) {
|
||||||
ret = mbedtls_ssl_write(&_ssl, (const unsigned char *) data, size);
|
ret = mbedtls_ssl_write(&_ssl, (const unsigned char *) data, size);
|
||||||
|
|
||||||
if (ret == MBEDTLS_ERR_SSL_WANT_WRITE ||
|
if (ret == MBEDTLS_ERR_SSL_WANT_WRITE ||
|
||||||
ret == MBEDTLS_ERR_SSL_WANT_READ) {
|
ret == MBEDTLS_ERR_SSL_WANT_READ) {
|
||||||
// translate to socket error
|
// translate to socket error
|
||||||
return NSAPI_ERROR_WOULD_BLOCK;
|
return NSAPI_ERROR_WOULD_BLOCK;
|
||||||
}
|
}
|
||||||
|
|
@ -255,7 +258,8 @@ nsapi_size_or_error_t TLSSocketWrapper::sendto(const SocketAddress &, const void
|
||||||
return send(data, size);
|
return send(data, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
nsapi_size_or_error_t TLSSocketWrapper::recv(void *data, nsapi_size_t size) {
|
nsapi_size_or_error_t TLSSocketWrapper::recv(void *data, nsapi_size_t size)
|
||||||
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (!_transport) {
|
if (!_transport) {
|
||||||
|
|
@ -265,7 +269,7 @@ nsapi_size_or_error_t TLSSocketWrapper::recv(void *data, nsapi_size_t size) {
|
||||||
ret = mbedtls_ssl_read(&_ssl, (unsigned char *) data, size);
|
ret = mbedtls_ssl_read(&_ssl, (unsigned char *) data, size);
|
||||||
|
|
||||||
if (ret == MBEDTLS_ERR_SSL_WANT_WRITE ||
|
if (ret == MBEDTLS_ERR_SSL_WANT_WRITE ||
|
||||||
ret == MBEDTLS_ERR_SSL_WANT_READ) {
|
ret == MBEDTLS_ERR_SSL_WANT_READ) {
|
||||||
// translate to socket error
|
// translate to socket error
|
||||||
return NSAPI_ERROR_WOULD_BLOCK;
|
return NSAPI_ERROR_WOULD_BLOCK;
|
||||||
} else if (ret == MBEDTLS_ERR_SSL_PEER_CLOSE_NOTIFY) {
|
} else if (ret == MBEDTLS_ERR_SSL_PEER_CLOSE_NOTIFY) {
|
||||||
|
|
@ -287,7 +291,8 @@ nsapi_size_or_error_t TLSSocketWrapper::recvfrom(SocketAddress *address, void *d
|
||||||
return recv(data, size);
|
return recv(data, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TLSSocketWrapper::print_mbedtls_error(const char *name, int err) {
|
void TLSSocketWrapper::print_mbedtls_error(const char *name, int err)
|
||||||
|
{
|
||||||
#ifdef MBEDTLS_ERROR_C
|
#ifdef MBEDTLS_ERROR_C
|
||||||
char *buf = new char[128];
|
char *buf = new char[128];
|
||||||
mbedtls_strerror(err, buf, 128);
|
mbedtls_strerror(err, buf, 128);
|
||||||
|
|
@ -303,14 +308,14 @@ void TLSSocketWrapper::print_mbedtls_error(const char *name, int err) {
|
||||||
#if MBED_CONF_TLS_SOCKET_DEBUG_LEVEL > 0
|
#if MBED_CONF_TLS_SOCKET_DEBUG_LEVEL > 0
|
||||||
|
|
||||||
void TLSSocketWrapper::my_debug(void *ctx, int level, const char *file, int line,
|
void TLSSocketWrapper::my_debug(void *ctx, int level, const char *file, int line,
|
||||||
const char *str)
|
const char *str)
|
||||||
{
|
{
|
||||||
const char *p, *basename;
|
const char *p, *basename;
|
||||||
(void) ctx;
|
(void) ctx;
|
||||||
|
|
||||||
/* Extract basename from file */
|
/* Extract basename from file */
|
||||||
for(p = basename = file; *p != '\0'; p++) {
|
for (p = basename = file; *p != '\0'; p++) {
|
||||||
if(*p == '/' || *p == '\\') {
|
if (*p == '/' || *p == '\\') {
|
||||||
basename = p + 1;
|
basename = p + 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -329,10 +334,9 @@ int TLSSocketWrapper::my_verify(void *data, mbedtls_x509_crt *crt, int depth, ui
|
||||||
mbedtls_x509_crt_info(buf, buf_size - 1, " ", crt);
|
mbedtls_x509_crt_info(buf, buf_size - 1, " ", crt);
|
||||||
tr_debug("%s", buf);
|
tr_debug("%s", buf);
|
||||||
|
|
||||||
if (*flags == 0)
|
if (*flags == 0) {
|
||||||
tr_info("No verification issue for this certificate\n");
|
tr_info("No verification issue for this certificate\n");
|
||||||
else
|
} else {
|
||||||
{
|
|
||||||
mbedtls_x509_crt_verify_info(buf, buf_size, " ! ", *flags);
|
mbedtls_x509_crt_verify_info(buf, buf_size, " ! ", *flags);
|
||||||
tr_info("%s\n", buf);
|
tr_info("%s\n", buf);
|
||||||
}
|
}
|
||||||
|
|
@ -345,7 +349,8 @@ int TLSSocketWrapper::my_verify(void *data, mbedtls_x509_crt *crt, int depth, ui
|
||||||
#endif /* MBED_CONF_TLS_SOCKET_DEBUG_LEVEL > 0 */
|
#endif /* MBED_CONF_TLS_SOCKET_DEBUG_LEVEL > 0 */
|
||||||
|
|
||||||
|
|
||||||
int TLSSocketWrapper::ssl_recv(void *ctx, unsigned char *buf, size_t len) {
|
int TLSSocketWrapper::ssl_recv(void *ctx, unsigned char *buf, size_t len)
|
||||||
|
{
|
||||||
int recv;
|
int recv;
|
||||||
|
|
||||||
TLSSocketWrapper *my = static_cast<TLSSocketWrapper *>(ctx);
|
TLSSocketWrapper *my = static_cast<TLSSocketWrapper *>(ctx);
|
||||||
|
|
@ -358,14 +363,15 @@ int TLSSocketWrapper::ssl_recv(void *ctx, unsigned char *buf, size_t len) {
|
||||||
|
|
||||||
if (NSAPI_ERROR_WOULD_BLOCK == recv) {
|
if (NSAPI_ERROR_WOULD_BLOCK == recv) {
|
||||||
return MBEDTLS_ERR_SSL_WANT_READ;
|
return MBEDTLS_ERR_SSL_WANT_READ;
|
||||||
} else if(recv < 0) {
|
} else if (recv < 0) {
|
||||||
tr_error("Socket recv error %d", recv);
|
tr_error("Socket recv error %d", recv);
|
||||||
}
|
}
|
||||||
// Propagate also Socket errors to SSL, it allows negative error codes to be returned here.
|
// Propagate also Socket errors to SSL, it allows negative error codes to be returned here.
|
||||||
return recv;
|
return recv;
|
||||||
}
|
}
|
||||||
|
|
||||||
int TLSSocketWrapper::ssl_send(void *ctx, const unsigned char *buf, size_t len) {
|
int TLSSocketWrapper::ssl_send(void *ctx, const unsigned char *buf, size_t len)
|
||||||
|
{
|
||||||
int size = -1;
|
int size = -1;
|
||||||
TLSSocketWrapper *my = static_cast<TLSSocketWrapper *>(ctx);
|
TLSSocketWrapper *my = static_cast<TLSSocketWrapper *>(ctx);
|
||||||
|
|
||||||
|
|
@ -377,12 +383,12 @@ int TLSSocketWrapper::ssl_send(void *ctx, const unsigned char *buf, size_t len)
|
||||||
|
|
||||||
if (NSAPI_ERROR_WOULD_BLOCK == size) {
|
if (NSAPI_ERROR_WOULD_BLOCK == size) {
|
||||||
return MBEDTLS_ERR_SSL_WANT_WRITE;
|
return MBEDTLS_ERR_SSL_WANT_WRITE;
|
||||||
} else if(size < 0){
|
} else if (size < 0) {
|
||||||
tr_error("Socket send error %d", size);
|
tr_error("Socket send error %d", size);
|
||||||
}
|
}
|
||||||
// Propagate also Socket errors to SSL, it allows negative error codes to be returned here.
|
// Propagate also Socket errors to SSL, it allows negative error codes to be returned here.
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MBEDTLS_X509_CRT_PARSE_C
|
#ifdef MBEDTLS_X509_CRT_PARSE_C
|
||||||
|
|
||||||
|
|
@ -401,7 +407,7 @@ int TLSSocketWrapper::set_own_cert(mbedtls_x509_crt *crt)
|
||||||
}
|
}
|
||||||
_clicert = crt;
|
_clicert = crt;
|
||||||
if (crt) {
|
if (crt) {
|
||||||
if((ret = mbedtls_ssl_conf_own_cert(get_ssl_config(), _clicert, &_pkctx)) != 0) {
|
if ((ret = mbedtls_ssl_conf_own_cert(get_ssl_config(), _clicert, &_pkctx)) != 0) {
|
||||||
print_mbedtls_error("mbedtls_ssl_conf_own_cert", ret);
|
print_mbedtls_error("mbedtls_ssl_conf_own_cert", ret);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -437,12 +443,12 @@ mbedtls_ssl_config *TLSSocketWrapper::get_ssl_config()
|
||||||
|
|
||||||
tr_info("mbedtls_ssl_config_defaults()");
|
tr_info("mbedtls_ssl_config_defaults()");
|
||||||
if ((ret = mbedtls_ssl_config_defaults(_ssl_conf,
|
if ((ret = mbedtls_ssl_config_defaults(_ssl_conf,
|
||||||
MBEDTLS_SSL_IS_CLIENT,
|
MBEDTLS_SSL_IS_CLIENT,
|
||||||
MBEDTLS_SSL_TRANSPORT_STREAM,
|
MBEDTLS_SSL_TRANSPORT_STREAM,
|
||||||
MBEDTLS_SSL_PRESET_DEFAULT)) != 0) {
|
MBEDTLS_SSL_PRESET_DEFAULT)) != 0) {
|
||||||
print_mbedtls_error("mbedtls_ssl_config_defaults", ret);
|
print_mbedtls_error("mbedtls_ssl_config_defaults", ret);
|
||||||
set_ssl_config(NULL);
|
set_ssl_config(NULL);
|
||||||
MBED_ERROR( MBED_MAKE_ERROR(MBED_MODULE_NETWORK_STACK, MBED_ERROR_CODE_OUT_OF_MEMORY), "mbedtls_ssl_config_defaults() failed" );
|
MBED_ERROR(MBED_MAKE_ERROR(MBED_MODULE_NETWORK_STACK, MBED_ERROR_CODE_OUT_OF_MEMORY), "mbedtls_ssl_config_defaults() failed");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
/* It is possible to disable authentication by passing
|
/* It is possible to disable authentication by passing
|
||||||
|
|
|
||||||
|
|
@ -123,7 +123,7 @@ public:
|
||||||
virtual nsapi_error_t connect(const SocketAddress &address = SocketAddress());
|
virtual nsapi_error_t connect(const SocketAddress &address = SocketAddress());
|
||||||
virtual nsapi_size_or_error_t sendto(const SocketAddress &address, const void *data, nsapi_size_t size);
|
virtual nsapi_size_or_error_t sendto(const SocketAddress &address, const void *data, nsapi_size_t size);
|
||||||
virtual nsapi_size_or_error_t recvfrom(SocketAddress *address,
|
virtual nsapi_size_or_error_t recvfrom(SocketAddress *address,
|
||||||
void *data, nsapi_size_t size);
|
void *data, nsapi_size_t size);
|
||||||
virtual nsapi_error_t bind(const SocketAddress &address);
|
virtual nsapi_error_t bind(const SocketAddress &address);
|
||||||
virtual void set_blocking(bool blocking);
|
virtual void set_blocking(bool blocking);
|
||||||
virtual void set_timeout(int timeout);
|
virtual void set_timeout(int timeout);
|
||||||
|
|
@ -190,7 +190,7 @@ protected:
|
||||||
* Just prints on the USB serial port
|
* Just prints on the USB serial port
|
||||||
*/
|
*/
|
||||||
static void my_debug(void *ctx, int level, const char *file, int line,
|
static void my_debug(void *ctx, int level, const char *file, int line,
|
||||||
const char *str);
|
const char *str);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Certificate verification callback for mbed TLS
|
* Certificate verification callback for mbed TLS
|
||||||
|
|
@ -219,17 +219,17 @@ private:
|
||||||
Socket *_transport;
|
Socket *_transport;
|
||||||
|
|
||||||
#ifdef MBEDTLS_X509_CRT_PARSE_C
|
#ifdef MBEDTLS_X509_CRT_PARSE_C
|
||||||
mbedtls_x509_crt* _cacert;
|
mbedtls_x509_crt *_cacert;
|
||||||
mbedtls_x509_crt* _clicert;
|
mbedtls_x509_crt *_clicert;
|
||||||
#endif
|
#endif
|
||||||
mbedtls_ssl_config* _ssl_conf;
|
mbedtls_ssl_config *_ssl_conf;
|
||||||
|
|
||||||
bool _connect_transport:1;
|
bool _connect_transport: 1;
|
||||||
bool _close_transport:1;
|
bool _close_transport: 1;
|
||||||
bool _handshake_completed:1;
|
bool _handshake_completed: 1;
|
||||||
bool _cacert_allocated:1;
|
bool _cacert_allocated: 1;
|
||||||
bool _clicert_allocated:1;
|
bool _clicert_allocated: 1;
|
||||||
bool _ssl_conf_allocated:1;
|
bool _ssl_conf_allocated: 1;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -29,9 +29,9 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
OnboardCellularInterface::OnboardCellularInterface(bool debug) :
|
OnboardCellularInterface::OnboardCellularInterface(bool debug) :
|
||||||
UARTCellularInterface(MDMTXD, MDMRXD, MDMDCD, MDMRTS,
|
UARTCellularInterface(MDMTXD, MDMRXD, MDMDCD, MDMRTS,
|
||||||
MDMCTS, MDMRI, MDMDTR, MDMDSR,
|
MDMCTS, MDMRI, MDMDTR, MDMDSR,
|
||||||
MBED_CONF_PPP_CELL_IFACE_BAUD_RATE, MDM_PIN_POLARITY, debug)
|
MBED_CONF_PPP_CELL_IFACE_BAUD_RATE, MDM_PIN_POLARITY, debug)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -91,7 +91,7 @@ static bool get_MEID(ATCmdParser *at)
|
||||||
{
|
{
|
||||||
// Mobile equipment identifier
|
// Mobile equipment identifier
|
||||||
bool success = at->send("AT+GSN")
|
bool success = at->send("AT+GSN")
|
||||||
&& at->recv("%18[^\n]\nOK\n", dev_info.meid);
|
&& at->recv("%18[^\n]\nOK\n", dev_info.meid);
|
||||||
tr_debug("DevInfo: MEID=%s", dev_info.meid);
|
tr_debug("DevInfo: MEID=%s", dev_info.meid);
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|
@ -156,10 +156,12 @@ static nsapi_error_t do_sim_pin_check(ATCmdParser *at, const char *pin)
|
||||||
success = at->send("AT+CLCK=\"SC\",1,\"%s\"", pin) && at->recv("OK");
|
success = at->send("AT+CLCK=\"SC\",1,\"%s\"", pin) && at->recv("OK");
|
||||||
} else {
|
} else {
|
||||||
/* use the SIM unlocked */
|
/* use the SIM unlocked */
|
||||||
success = at->send("AT+CLCK=\"SC\",0,\"%s\"",pin) && at->recv("OK");
|
success = at->send("AT+CLCK=\"SC\",0,\"%s\"", pin) && at->recv("OK");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (success) return NSAPI_ERROR_OK;
|
if (success) {
|
||||||
|
return NSAPI_ERROR_OK;
|
||||||
|
}
|
||||||
|
|
||||||
return NSAPI_ERROR_AUTH_FAILURE;
|
return NSAPI_ERROR_AUTH_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
@ -170,12 +172,12 @@ static nsapi_error_t do_sim_pin_check(ATCmdParser *at, const char *pin)
|
||||||
static nsapi_error_t do_change_sim_pin(ATCmdParser *at, const char *old_pin, const char *new_pin)
|
static nsapi_error_t do_change_sim_pin(ATCmdParser *at, const char *old_pin, const char *new_pin)
|
||||||
{
|
{
|
||||||
/* changes the SIM pin */
|
/* changes the SIM pin */
|
||||||
bool success = at->send("AT+CPWD=\"SC\",\"%s\",\"%s\"", old_pin, new_pin) && at->recv("OK");
|
bool success = at->send("AT+CPWD=\"SC\",\"%s\",\"%s\"", old_pin, new_pin) && at->recv("OK");
|
||||||
if (success) {
|
if (success) {
|
||||||
return NSAPI_ERROR_OK;
|
return NSAPI_ERROR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
return NSAPI_ERROR_AUTH_FAILURE;
|
return NSAPI_ERROR_AUTH_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void set_nwk_reg_status_csd(unsigned int status)
|
static void set_nwk_reg_status_csd(unsigned int status)
|
||||||
|
|
@ -240,15 +242,15 @@ static void set_nwk_reg_status_psd(unsigned int status)
|
||||||
|
|
||||||
static bool is_registered_csd()
|
static bool is_registered_csd()
|
||||||
{
|
{
|
||||||
return (dev_info.reg_status_csd == CSD_REGISTERED) ||
|
return (dev_info.reg_status_csd == CSD_REGISTERED) ||
|
||||||
(dev_info.reg_status_csd == CSD_REGISTERED_ROAMING) ||
|
(dev_info.reg_status_csd == CSD_REGISTERED_ROAMING) ||
|
||||||
(dev_info.reg_status_csd == CSD_CSFB_NOT_PREFERRED);
|
(dev_info.reg_status_csd == CSD_CSFB_NOT_PREFERRED);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool is_registered_psd()
|
static bool is_registered_psd()
|
||||||
{
|
{
|
||||||
return (dev_info.reg_status_psd == PSD_REGISTERED) ||
|
return (dev_info.reg_status_psd == PSD_REGISTERED) ||
|
||||||
(dev_info.reg_status_psd == PSD_REGISTERED_ROAMING);
|
(dev_info.reg_status_psd == PSD_REGISTERED_ROAMING);
|
||||||
}
|
}
|
||||||
|
|
||||||
PPPCellularInterface::PPPCellularInterface(FileHandle *fh, bool debug)
|
PPPCellularInterface::PPPCellularInterface(FileHandle *fh, bool debug)
|
||||||
|
|
@ -335,70 +337,70 @@ void PPPCellularInterface::set_new_sim_pin(const char *new_pin)
|
||||||
bool PPPCellularInterface::nwk_registration(uint8_t nwk_type)
|
bool PPPCellularInterface::nwk_registration(uint8_t nwk_type)
|
||||||
{
|
{
|
||||||
bool success = false;
|
bool success = false;
|
||||||
bool registered = false;
|
bool registered = false;
|
||||||
|
|
||||||
char str[35];
|
char str[35];
|
||||||
int retcode;
|
int retcode;
|
||||||
int retry_counter = 0;
|
int retry_counter = 0;
|
||||||
unsigned int reg_status;
|
unsigned int reg_status;
|
||||||
|
|
||||||
success = nwk_type == PACKET_SWITCHED ?
|
success = nwk_type == PACKET_SWITCHED ?
|
||||||
_at->send("AT+CGREG=0") :
|
_at->send("AT+CGREG=0") :
|
||||||
_at->send("AT+CREG=0") && _at->recv("OK\n");
|
_at->send("AT+CREG=0") && _at->recv("OK\n");
|
||||||
|
|
||||||
success = _at->send("AT+COPS=0") //initiate auto-registration
|
success = _at->send("AT+COPS=0") //initiate auto-registration
|
||||||
&& _at->recv("OK");
|
&& _at->recv("OK");
|
||||||
if (!success) {
|
if (!success) {
|
||||||
tr_error("Modem not responding.");
|
tr_error("Modem not responding.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Network search
|
//Network search
|
||||||
//If not registered after 60 attempts, i.e., 30 seconds wait, give up
|
//If not registered after 60 attempts, i.e., 30 seconds wait, give up
|
||||||
tr_debug("Searching Network ...");
|
tr_debug("Searching Network ...");
|
||||||
|
|
||||||
while (!registered) {
|
while (!registered) {
|
||||||
|
|
||||||
if (retry_counter > 60) {
|
if (retry_counter > 60) {
|
||||||
success = false;
|
success = false;
|
||||||
goto give_up;
|
goto give_up;
|
||||||
}
|
}
|
||||||
|
|
||||||
success = nwk_type == PACKET_SWITCHED ?
|
success = nwk_type == PACKET_SWITCHED ?
|
||||||
_at->send("AT+CGREG?")
|
_at->send("AT+CGREG?")
|
||||||
&& _at->recv("+CGREG: %34[^\n]\n", str)
|
&& _at->recv("+CGREG: %34[^\n]\n", str)
|
||||||
&& _at->recv("OK\n") :
|
&& _at->recv("OK\n") :
|
||||||
_at->send("AT+CREG?")
|
_at->send("AT+CREG?")
|
||||||
&& _at->recv("+CREG: %34[^\n]\n", str)
|
&& _at->recv("+CREG: %34[^\n]\n", str)
|
||||||
&& _at->recv("OK\n");
|
&& _at->recv("OK\n");
|
||||||
|
|
||||||
retcode = sscanf(str, "%*u,%u", ®_status);
|
retcode = sscanf(str, "%*u,%u", ®_status);
|
||||||
|
|
||||||
if (retcode >= 1) {
|
if (retcode >= 1) {
|
||||||
if (nwk_type == PACKET_SWITCHED) {
|
if (nwk_type == PACKET_SWITCHED) {
|
||||||
set_nwk_reg_status_psd(reg_status);
|
set_nwk_reg_status_psd(reg_status);
|
||||||
if (is_registered_psd()) {
|
if (is_registered_psd()) {
|
||||||
registered = true;
|
registered = true;
|
||||||
}
|
}
|
||||||
} else if (nwk_type == CIRCUIT_SWITCHED) {
|
} else if (nwk_type == CIRCUIT_SWITCHED) {
|
||||||
set_nwk_reg_status_csd(reg_status);
|
set_nwk_reg_status_csd(reg_status);
|
||||||
if (is_registered_csd()) {
|
if (is_registered_csd()) {
|
||||||
registered = true;
|
registered = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (registered) {
|
if (registered) {
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
wait_ms(500);
|
wait_ms(500);
|
||||||
}
|
}
|
||||||
|
|
||||||
retry_counter++;
|
retry_counter++;
|
||||||
}
|
}
|
||||||
|
|
||||||
give_up:
|
give_up:
|
||||||
return registered;
|
return registered;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PPPCellularInterface::is_connected()
|
bool PPPCellularInterface::is_connected()
|
||||||
|
|
@ -444,7 +446,8 @@ nsapi_error_t PPPCellularInterface::initialize_sim_card()
|
||||||
return nsapi_error;
|
return nsapi_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PPPCellularInterface::set_sim_pin(const char *pin) {
|
void PPPCellularInterface::set_sim_pin(const char *pin)
|
||||||
|
{
|
||||||
/* overwrite the default pin by user provided pin */
|
/* overwrite the default pin by user provided pin */
|
||||||
_pin = pin;
|
_pin = pin;
|
||||||
}
|
}
|
||||||
|
|
@ -473,11 +476,11 @@ nsapi_error_t PPPCellularInterface::setup_context_and_credentials()
|
||||||
retry_without_dual_stack:
|
retry_without_dual_stack:
|
||||||
#endif
|
#endif
|
||||||
success = _at->send("AT"
|
success = _at->send("AT"
|
||||||
"+FCLASS=0;" // set to connection (ATD) to data mode
|
"+FCLASS=0;" // set to connection (ATD) to data mode
|
||||||
"+CGDCONT=" CTX ",\"%s\",\"%s%s\"",
|
"+CGDCONT=" CTX ",\"%s\",\"%s%s\"",
|
||||||
pdp_type, auth, _apn
|
pdp_type, auth, _apn
|
||||||
)
|
)
|
||||||
&& _at->recv("OK");
|
&& _at->recv("OK");
|
||||||
|
|
||||||
#if NSAPI_PPP_IPV4_AVAILABLE && NSAPI_PPP_IPV6_AVAILABLE
|
#if NSAPI_PPP_IPV4_AVAILABLE && NSAPI_PPP_IPV6_AVAILABLE
|
||||||
if (_stack == IPV4V6_STACK) {
|
if (_stack == IPV4V6_STACK) {
|
||||||
|
|
@ -513,7 +516,7 @@ void PPPCellularInterface::setup_at_parser()
|
||||||
}
|
}
|
||||||
|
|
||||||
_at = new ATCmdParser(_fh, OUTPUT_ENTER_KEY, AT_PARSER_BUFFER_SIZE, AT_PARSER_TIMEOUT,
|
_at = new ATCmdParser(_fh, OUTPUT_ENTER_KEY, AT_PARSER_BUFFER_SIZE, AT_PARSER_TIMEOUT,
|
||||||
_debug_trace_on ? true : false);
|
_debug_trace_on ? true : false);
|
||||||
|
|
||||||
/* Error cases, out of band handling */
|
/* Error cases, out of band handling */
|
||||||
_at->oob("ERROR", callback(parser_abort, _at));
|
_at->oob("ERROR", callback(parser_abort, _at));
|
||||||
|
|
@ -583,7 +586,7 @@ nsapi_error_t PPPCellularInterface::connect()
|
||||||
}
|
}
|
||||||
|
|
||||||
do {
|
do {
|
||||||
retry_init:
|
retry_init:
|
||||||
|
|
||||||
retcode = NSAPI_ERROR_OK;
|
retcode = NSAPI_ERROR_OK;
|
||||||
|
|
||||||
|
|
@ -608,12 +611,12 @@ nsapi_error_t PPPCellularInterface::connect()
|
||||||
}
|
}
|
||||||
|
|
||||||
success = nwk_registration(PACKET_SWITCHED) //perform network registration
|
success = nwk_registration(PACKET_SWITCHED) //perform network registration
|
||||||
&& get_CCID(_at)//get integrated circuit ID of the SIM
|
&& get_CCID(_at)//get integrated circuit ID of the SIM
|
||||||
&& get_IMSI(_at)//get international mobile subscriber information
|
&& get_IMSI(_at)//get international mobile subscriber information
|
||||||
&& get_IMEI(_at)//get international mobile equipment identifier
|
&& get_IMEI(_at)//get international mobile equipment identifier
|
||||||
&& get_MEID(_at)//its same as IMEI
|
&& get_MEID(_at)//its same as IMEI
|
||||||
&& set_CMGF(_at)//set message format for SMS
|
&& set_CMGF(_at)//set message format for SMS
|
||||||
&& set_CNMI(_at);//set new SMS indication
|
&& set_CNMI(_at);//set new SMS indication
|
||||||
|
|
||||||
if (!success) {
|
if (!success) {
|
||||||
retcode = NSAPI_ERROR_NO_CONNECTION;
|
retcode = NSAPI_ERROR_NO_CONNECTION;
|
||||||
|
|
@ -712,7 +715,7 @@ nsapi_error_t PPPCellularInterface::connect()
|
||||||
_connect_status = NSAPI_STATUS_GLOBAL_UP;
|
_connect_status = NSAPI_STATUS_GLOBAL_UP;
|
||||||
}
|
}
|
||||||
} while ((_connect_status == NSAPI_STATUS_CONNECTING && _connect_is_blocking) &&
|
} while ((_connect_status == NSAPI_STATUS_CONNECTING && _connect_is_blocking) &&
|
||||||
apn_config && *apn_config);
|
apn_config && *apn_config);
|
||||||
|
|
||||||
|
|
||||||
if (retcode != NSAPI_ERROR_OK) {
|
if (retcode != NSAPI_ERROR_OK) {
|
||||||
|
|
|
||||||
|
|
@ -30,14 +30,14 @@ class NetworkStack;
|
||||||
* UBX-13001820 - AT Commands Example Application Note (Section 4.1.4.5)
|
* UBX-13001820 - AT Commands Example Application Note (Section 4.1.4.5)
|
||||||
*/
|
*/
|
||||||
typedef enum {
|
typedef enum {
|
||||||
GSM=0,
|
GSM = 0,
|
||||||
COMPACT_GSM=1,
|
COMPACT_GSM = 1,
|
||||||
UTRAN=2,
|
UTRAN = 2,
|
||||||
EDGE=3,
|
EDGE = 3,
|
||||||
HSDPA=4,
|
HSDPA = 4,
|
||||||
HSUPA=5,
|
HSUPA = 5,
|
||||||
HSDPA_HSUPA=6,
|
HSDPA_HSUPA = 6,
|
||||||
LTE=7
|
LTE = 7
|
||||||
} radio_access_nwk_type;
|
} radio_access_nwk_type;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -45,7 +45,7 @@ typedef enum {
|
||||||
* to connect.
|
* to connect.
|
||||||
*/
|
*/
|
||||||
typedef enum {
|
typedef enum {
|
||||||
CIRCUIT_SWITCHED=0,
|
CIRCUIT_SWITCHED = 0,
|
||||||
PACKET_SWITCHED
|
PACKET_SWITCHED
|
||||||
} nwk_type;
|
} nwk_type;
|
||||||
|
|
||||||
|
|
@ -54,15 +54,15 @@ typedef enum {
|
||||||
* UBX-13001820 - AT Commands Example Application Note (Section 7.10.3)
|
* UBX-13001820 - AT Commands Example Application Note (Section 7.10.3)
|
||||||
*/
|
*/
|
||||||
typedef enum {
|
typedef enum {
|
||||||
CSD_NOT_REGISTERED_NOT_SEARCHING=0,
|
CSD_NOT_REGISTERED_NOT_SEARCHING = 0,
|
||||||
CSD_REGISTERED=1,
|
CSD_REGISTERED = 1,
|
||||||
CSD_NOT_REGISTERED_SEARCHING=2,
|
CSD_NOT_REGISTERED_SEARCHING = 2,
|
||||||
CSD_REGISTRATION_DENIED=3,
|
CSD_REGISTRATION_DENIED = 3,
|
||||||
CSD_UNKNOWN_COVERAGE=4,
|
CSD_UNKNOWN_COVERAGE = 4,
|
||||||
CSD_REGISTERED_ROAMING=5,
|
CSD_REGISTERED_ROAMING = 5,
|
||||||
CSD_SMS_ONLY=6,
|
CSD_SMS_ONLY = 6,
|
||||||
CSD_SMS_ONLY_ROAMING=7,
|
CSD_SMS_ONLY_ROAMING = 7,
|
||||||
CSD_CSFB_NOT_PREFERRED=9
|
CSD_CSFB_NOT_PREFERRED = 9
|
||||||
} nwk_registration_status_csd;
|
} nwk_registration_status_csd;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -70,20 +70,20 @@ typedef enum {
|
||||||
* UBX-13001820 - AT Commands Example Application Note (Section 18.27.3)
|
* UBX-13001820 - AT Commands Example Application Note (Section 18.27.3)
|
||||||
*/
|
*/
|
||||||
typedef enum {
|
typedef enum {
|
||||||
PSD_NOT_REGISTERED_NOT_SEARCHING=0,
|
PSD_NOT_REGISTERED_NOT_SEARCHING = 0,
|
||||||
PSD_REGISTERED=1,
|
PSD_REGISTERED = 1,
|
||||||
PSD_NOT_REGISTERED_SEARCHING=2,
|
PSD_NOT_REGISTERED_SEARCHING = 2,
|
||||||
PSD_REGISTRATION_DENIED=3,
|
PSD_REGISTRATION_DENIED = 3,
|
||||||
PSD_UNKNOWN_COVERAGE=4,
|
PSD_UNKNOWN_COVERAGE = 4,
|
||||||
PSD_REGISTERED_ROAMING=5,
|
PSD_REGISTERED_ROAMING = 5,
|
||||||
PSD_EMERGENCY_SERVICES_ONLY=8
|
PSD_EMERGENCY_SERVICES_ONLY = 8
|
||||||
} nwk_registration_status_psd;
|
} nwk_registration_status_psd;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
char ccid[20+1]; //!< Integrated Circuit Card ID
|
char ccid[20 + 1]; //!< Integrated Circuit Card ID
|
||||||
char imsi[15+1]; //!< International Mobile Station Identity
|
char imsi[15 + 1]; //!< International Mobile Station Identity
|
||||||
char imei[15+1]; //!< International Mobile Equipment Identity
|
char imei[15 + 1]; //!< International Mobile Equipment Identity
|
||||||
char meid[18+1]; //!< Mobile Equipment IDentifier
|
char meid[18 + 1]; //!< Mobile Equipment IDentifier
|
||||||
int flags;
|
int flags;
|
||||||
radio_access_nwk_type rat;
|
radio_access_nwk_type rat;
|
||||||
nwk_registration_status_csd reg_status_csd;
|
nwk_registration_status_csd reg_status_csd;
|
||||||
|
|
@ -135,7 +135,7 @@ public:
|
||||||
*/
|
*/
|
||||||
MBED_DEPRECATED_SINCE("mbed-os-5.9", "This API will be deprecated, use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead.")
|
MBED_DEPRECATED_SINCE("mbed-os-5.9", "This API will be deprecated, use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead.")
|
||||||
virtual void set_credentials(const char *apn, const char *uname = 0,
|
virtual void set_credentials(const char *apn, const char *uname = 0,
|
||||||
const char *pwd = 0);
|
const char *pwd = 0);
|
||||||
|
|
||||||
/** Set the pin code for SIM card
|
/** Set the pin code for SIM card
|
||||||
*
|
*
|
||||||
|
|
@ -403,7 +403,7 @@ protected:
|
||||||
*
|
*
|
||||||
* @return true if registration is successful
|
* @return true if registration is successful
|
||||||
*/
|
*/
|
||||||
bool nwk_registration(uint8_t nwk_type=PACKET_SWITCHED);
|
bool nwk_registration(uint8_t nwk_type = PACKET_SWITCHED);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -86,10 +86,10 @@ static void unlock();
|
||||||
* Verification tests for a successful porting
|
* Verification tests for a successful porting
|
||||||
* These tests must pass:
|
* These tests must pass:
|
||||||
*
|
*
|
||||||
* test_udp_echo()
|
* test_udp_echo()
|
||||||
* test_tcp_echo_async
|
* test_tcp_echo_async
|
||||||
* test_connect_credentials
|
* test_connect_credentials
|
||||||
* test_connect_preset_credentials
|
* test_connect_preset_credentials
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -148,7 +148,7 @@ void test_tcp_echo_async()
|
||||||
TEST_ASSERT(do_connect(&driver) == 0);
|
TEST_ASSERT(do_connect(&driver) == 0);
|
||||||
|
|
||||||
TEST_ASSERT(
|
TEST_ASSERT(
|
||||||
driver.gethostbyname(MBED_CONF_APP_ECHO_SERVER, &host_address) == 0);
|
driver.gethostbyname(MBED_CONF_APP_ECHO_SERVER, &host_address) == 0);
|
||||||
host_address.set_port(MBED_CONF_APP_ECHO_TCP_PORT);
|
host_address.set_port(MBED_CONF_APP_ECHO_TCP_PORT);
|
||||||
|
|
||||||
tr_debug("TCP: Server %s address: %s on port %d.",
|
tr_debug("TCP: Server %s address: %s on port %d.",
|
||||||
|
|
@ -172,7 +172,7 @@ void test_tcp_echo_async()
|
||||||
drop_connection(&driver);
|
drop_connection(&driver);
|
||||||
|
|
||||||
tr_debug("TCP packets of size up to %d byte(s) echoed asynchronously and successfully.",
|
tr_debug("TCP packets of size up to %d byte(s) echoed asynchronously and successfully.",
|
||||||
MBED_CONF_APP_TCP_MAX_PACKET_SIZE);
|
MBED_CONF_APP_TCP_MAX_PACKET_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -196,7 +196,7 @@ void test_connect_preset_credentials()
|
||||||
driver.disconnect();
|
driver.disconnect();
|
||||||
driver.set_sim_pin(MBED_CONF_APP_DEFAULT_PIN);
|
driver.set_sim_pin(MBED_CONF_APP_DEFAULT_PIN);
|
||||||
driver.set_credentials(MBED_CONF_APP_APN, MBED_CONF_APP_USERNAME,
|
driver.set_credentials(MBED_CONF_APP_APN, MBED_CONF_APP_USERNAME,
|
||||||
MBED_CONF_APP_PASSWORD);
|
MBED_CONF_APP_PASSWORD);
|
||||||
int num_retries = 0;
|
int num_retries = 0;
|
||||||
nsapi_error_t err = NSAPI_ERROR_OK;
|
nsapi_error_t err = NSAPI_ERROR_OK;
|
||||||
while (!driver.is_connected()) {
|
while (!driver.is_connected()) {
|
||||||
|
|
@ -226,10 +226,11 @@ utest::v1::status_t test_setup(const size_t number_of_cases)
|
||||||
*/
|
*/
|
||||||
Case cases[] = { Case("UDP echo test", test_udp_echo),
|
Case cases[] = { Case("UDP echo test", test_udp_echo),
|
||||||
#if MBED_CONF_LWIP_TCP_ENABLED
|
#if MBED_CONF_LWIP_TCP_ENABLED
|
||||||
Case("TCP async echo test", test_tcp_echo_async),
|
Case("TCP async echo test", test_tcp_echo_async),
|
||||||
#endif
|
#endif
|
||||||
Case("Connect with credentials", test_connect_credentials),
|
Case("Connect with credentials", test_connect_credentials),
|
||||||
Case("Connect with preset credentials", test_connect_preset_credentials) };
|
Case("Connect with preset credentials", test_connect_preset_credentials)
|
||||||
|
};
|
||||||
|
|
||||||
Specification specification(test_setup, cases);
|
Specification specification(test_setup, cases);
|
||||||
|
|
||||||
|
|
@ -255,7 +256,7 @@ static nsapi_error_t do_connect(OnboardCellularInterface *iface)
|
||||||
nsapi_error_t err = NSAPI_ERROR_OK;
|
nsapi_error_t err = NSAPI_ERROR_OK;
|
||||||
while (!iface->is_connected()) {
|
while (!iface->is_connected()) {
|
||||||
err = driver.connect(MBED_CONF_APP_DEFAULT_PIN, MBED_CONF_APP_APN,
|
err = driver.connect(MBED_CONF_APP_DEFAULT_PIN, MBED_CONF_APP_APN,
|
||||||
MBED_CONF_APP_USERNAME, MBED_CONF_APP_PASSWORD);
|
MBED_CONF_APP_USERNAME, MBED_CONF_APP_PASSWORD);
|
||||||
if (err == NSAPI_ERROR_OK || num_retries > MBED_CONF_APP_MAX_RETRIES) {
|
if (err == NSAPI_ERROR_OK || num_retries > MBED_CONF_APP_MAX_RETRIES) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -284,14 +285,14 @@ static int fix(int size, int limit)
|
||||||
static void do_udp_echo(UDPSocket *sock, SocketAddress *host_address, int size)
|
static void do_udp_echo(UDPSocket *sock, SocketAddress *host_address, int size)
|
||||||
{
|
{
|
||||||
bool success = false;
|
bool success = false;
|
||||||
void * recv_data = malloc(size);
|
void *recv_data = malloc(size);
|
||||||
TEST_ASSERT(recv_data != NULL);
|
TEST_ASSERT(recv_data != NULL);
|
||||||
|
|
||||||
// Retry this a few times, don't want to fail due to a flaky link
|
// Retry this a few times, don't want to fail due to a flaky link
|
||||||
for (int x = 0; !success && (x < NUM_UDP_RETRIES); x++) {
|
for (int x = 0; !success && (x < NUM_UDP_RETRIES); x++) {
|
||||||
tr_debug("Echo testing UDP packet size %d byte(s), try %d.", size, x + 1);
|
tr_debug("Echo testing UDP packet size %d byte(s), try %d.", size, x + 1);
|
||||||
if ((sock->sendto(*host_address, (void*) test_data, size) == size)
|
if ((sock->sendto(*host_address, (void *) test_data, size) == size)
|
||||||
&& (sock->recvfrom(host_address, recv_data, size) == size)) {
|
&& (sock->recvfrom(host_address, recv_data, size) == size)) {
|
||||||
TEST_ASSERT(memcmp(test_data, recv_data, size) == 0);
|
TEST_ASSERT(memcmp(test_data, recv_data, size) == 0);
|
||||||
success = true;
|
success = true;
|
||||||
}
|
}
|
||||||
|
|
@ -340,7 +341,7 @@ static void async_cb(bool *callback_triggered)
|
||||||
static void do_tcp_echo_async(TCPSocket *sock, int size,
|
static void do_tcp_echo_async(TCPSocket *sock, int size,
|
||||||
bool *callback_triggered)
|
bool *callback_triggered)
|
||||||
{
|
{
|
||||||
void * recv_data = malloc(size);
|
void *recv_data = malloc(size);
|
||||||
int recv_size = 0;
|
int recv_size = 0;
|
||||||
int remaining_size;
|
int remaining_size;
|
||||||
int x, y;
|
int x, y;
|
||||||
|
|
@ -370,7 +371,7 @@ static void do_tcp_echo_async(TCPSocket *sock, int size,
|
||||||
y = memcmp(test_data, recv_data, size);
|
y = memcmp(test_data, recv_data, size);
|
||||||
if (y != 0) {
|
if (y != 0) {
|
||||||
tr_debug("Sent %d, |%*.*s|", size, size, size, test_data);
|
tr_debug("Sent %d, |%*.*s|", size, size, size, test_data);
|
||||||
tr_debug("Rcvd %d, |%*.*s|", size, size, size, (char * ) recv_data);
|
tr_debug("Rcvd %d, |%*.*s|", size, size, size, (char *) recv_data);
|
||||||
// We do not assert a failure here because ublox TCP echo server doesn't send
|
// We do not assert a failure here because ublox TCP echo server doesn't send
|
||||||
// back original data. It actually constructs a ublox message string. They need to fix it as
|
// back original data. It actually constructs a ublox message string. They need to fix it as
|
||||||
// at the minute in case of TCP, their server is not behaving like a echo TCP server.
|
// at the minute in case of TCP, their server is not behaving like a echo TCP server.
|
||||||
|
|
@ -386,9 +387,9 @@ static void do_tcp_echo_async(TCPSocket *sock, int size,
|
||||||
*/
|
*/
|
||||||
static void use_connection(OnboardCellularInterface *driver)
|
static void use_connection(OnboardCellularInterface *driver)
|
||||||
{
|
{
|
||||||
const char * ip_address = driver->get_ip_address();
|
const char *ip_address = driver->get_ip_address();
|
||||||
const char * net_mask = driver->get_netmask();
|
const char *net_mask = driver->get_netmask();
|
||||||
const char * gateway = driver->get_gateway();
|
const char *gateway = driver->get_gateway();
|
||||||
|
|
||||||
TEST_ASSERT(driver->is_connected());
|
TEST_ASSERT(driver->is_connected());
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,8 +19,8 @@
|
||||||
|
|
||||||
UARTCellularInterface::UARTCellularInterface(PinName txd, PinName rxd, PinName dcd, PinName rts, PinName cts, PinName ri,
|
UARTCellularInterface::UARTCellularInterface(PinName txd, PinName rxd, PinName dcd, PinName rts, PinName cts, PinName ri,
|
||||||
PinName dtr, PinName dsr, int baud, bool active_high, bool debug) :
|
PinName dtr, PinName dsr, int baud, bool active_high, bool debug) :
|
||||||
PPPCellularInterface(&_serial, debug),
|
PPPCellularInterface(&_serial, debug),
|
||||||
_serial(txd, rxd, baud)
|
_serial(txd, rxd, baud)
|
||||||
{
|
{
|
||||||
_dcd_pin = dcd;
|
_dcd_pin = dcd;
|
||||||
_active_high = active_high;
|
_active_high = active_high;
|
||||||
|
|
|
||||||
|
|
@ -42,9 +42,9 @@ public:
|
||||||
*/
|
*/
|
||||||
MBED_DEPRECATED_SINCE("mbed-os-5.9", "This API will be deprecated, use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead.")
|
MBED_DEPRECATED_SINCE("mbed-os-5.9", "This API will be deprecated, use mbed-os/features/cellular/easy_cellular/EasyCellularConnection.h instead.")
|
||||||
UARTCellularInterface(PinName tx, PinName rx, PinName dcd = NC, PinName rts = NC, PinName cts = NC, PinName ri = NC,
|
UARTCellularInterface(PinName tx, PinName rx, PinName dcd = NC, PinName rts = NC, PinName cts = NC, PinName ri = NC,
|
||||||
PinName dtr = NC, PinName dsr = NC, int baud = MBED_CONF_PPP_CELL_IFACE_BAUD_RATE,
|
PinName dtr = NC, PinName dsr = NC, int baud = MBED_CONF_PPP_CELL_IFACE_BAUD_RATE,
|
||||||
bool active_high = false,
|
bool active_high = false,
|
||||||
bool debug = false);
|
bool debug = false);
|
||||||
|
|
||||||
/** Destructor
|
/** Destructor
|
||||||
*
|
*
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue