UPDATE
Found out that I need to set UBLOX_AT
configs instead of GENERIC_AT3GPP
in mbed_app.json
.
File mbed_app.json:
{
"target_overrides": {
"*": {
"mbed-trace.enable": true,
"platform.stdio-baud-rate": 115200,
"platform.stdio-convert-newlines": true,
"cellular.debug-at": true,
"cellular.clear-on-connect": true,
"cellular.use-apn-lookup": true,
"nsapi.default-cellular-apn": null,
"nsapi.default-cellular-plmn": null,
"nsapi.default-cellular-sim-pin": null,
"nsapi.default-cellular-username": null,
"nsapi.default-cellular-password": null,
"lwip.ethernet-enabled": false,
"lwip.ppp-enabled": false,
"lwip.tcp-enabled": true,
"lwip.ipv4-enabled": true,
"lwip.ipv6-enabled": true,
"ppp.ipv4-enabled": false,
"ppp.ipv6-enabled": false
},
"UBLOX_C030_R412M": {
"UBLOX_AT.provide-default": true,
"UBLOX_AT.tx": "MDMTXD",
"UBLOX_AT.rx": "MDMRXD",
"UBLOX_AT.cts": "MDMCTS",
"UBLOX_AT.rts": "MDMRTS",
"target.network-default-interface-type": "CELLULAR"
}
}
}
File main.cpp:
#include "CellularContext.h"
#include "MQTTClientMbedOs.h"
#include "NetworkInterface.h"
#include "cellular_demo_tracing.h"
#include "mbed.h"
#define RETRY_COUNT 10
const char* hostname = "test.mosquitto.org";
uint16_t port = 1883;
NetworkInterface *iface;
void print_function(const char *format, ...) {
trace_mutex.lock();
va_list arglist;
va_start( arglist, format );
vprintf(format, arglist);
va_end( arglist );
trace_mutex.unlock();
}
nsapi_error_t do_connect() {
nsapi_error_t retcode = NSAPI_ERROR_OK;
uint8_t retry_counter = 0;
while (iface->get_connection_status() != NSAPI_STATUS_GLOBAL_UP) {
retcode = iface->connect();
if (retcode == NSAPI_ERROR_AUTH_FAILURE) {
print_function("\n\nAuthentication Failure. Exiting application\n");
} else if (retcode == NSAPI_ERROR_OK) {
print_function("\n\nConnection Established.\n");
} else if (retry_counter > RETRY_COUNT) {
print_function("\n\nFatal connection failure: %d\n", retcode);
} else {
print_function("\n\nCouldn't connect: %d, will retry\n", retcode);
retry_counter++;
continue;
}
break;
}
return retcode;
}
int main() {
trace_open();
print_function("\n\nMQTT test on %s\n\n", hostname);
iface = CellularContext::get_default_instance();
MBED_ASSERT(iface);
iface->set_default_parameters();
nsapi_error_t retcode = NSAPI_ERROR_NO_CONNECTION;
if (do_connect() == NSAPI_ERROR_OK) {
print_function("\n\nConnected\n\n");
}
if (iface->disconnect() != NSAPI_ERROR_OK) {
print_function("\n\n disconnect failed.\n\n");
}
if (retcode == NSAPI_ERROR_OK) {
print_function("\n\nSuccess. Exiting \n\n");
} else {
print_function("\n\nFailure. Exiting \n\n");
}
trace_close();
}
File cellular_demo_tracing.h
/*
* Copyright (c) 2017 ARM Limited. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
* Licensed under the Apache License, Version 2.0 (the License); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "Kernel.h"
#include "mbed.h"
#include "CellularLog.h"
#include "chrono"
#ifndef CELLULAR_DEMO_TRACING_H_
#define CELLULAR_DEMO_TRACING_H_
#if MBED_CONF_MBED_TRACE_ENABLE
static PlatformMutex trace_mutex;
static void trace_wait()
{
trace_mutex.lock();
}
static void trace_release()
{
trace_mutex.unlock();
}
static char* trace_time(size_t ss)
{
static char time_st[50];
snprintf(time_st, 49, "[%08llums]", Kernel::get_ms_count());
return time_st;
}
static void trace_open()
{
mbed_trace_init();
mbed_trace_prefix_function_set( &trace_time );
mbed_trace_mutex_wait_function_set(trace_wait);
mbed_trace_mutex_release_function_set(trace_release);
mbed_cellular_trace::mutex_wait_function_set(trace_wait);
mbed_cellular_trace::mutex_release_function_set(trace_release);
#ifdef MBED_CONF_NSAPI_DEFAULT_CELLULAR_PLMN
printf("\n\n[MAIN], plmn: %s\n", (MBED_CONF_NSAPI_DEFAULT_CELLULAR_PLMN ? MBED_CONF_NSAPI_DEFAULT_CELLULAR_PLMN : "NULL"));
#endif
}
static void trace_close()
{
mbed_cellular_trace::mutex_wait_function_set(NULL);
mbed_cellular_trace::mutex_release_function_set(NULL);
mbed_trace_free();
}
#else
static void trace_open()
{
}
static void trace_close()
{
}
#endif // #if MBED_CONF_MBED_TRACE_ENABLE
#endif // CELLULAR_DEMO_TRACING_H_