diff --git a/UNITTESTS/features/cellular/framework/AT/at_cellularbase/at_cellularbasetest.cpp b/UNITTESTS/features/cellular/framework/AT/at_cellularbase/at_cellularbasetest.cpp deleted file mode 100644 index 82229d0ad2..0000000000 --- a/UNITTESTS/features/cellular/framework/AT/at_cellularbase/at_cellularbasetest.cpp +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Copyright (c) 2018, Arm Limited and affiliates. - * 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 "gtest/gtest.h" -#include "AT_CellularBase.h" -#include "events/EventQueue.h" -#include "AT_CellularNetwork.h" -#include "ATHandler_stub.h" -#include "FileHandle_stub.h" -#include - -using namespace mbed; -using namespace events; - -class my_base : public AT_CellularBase { -public: - my_base(ATHandler &at) : AT_CellularBase(at) - { - } - bool check_not_supported() - { - static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { - AT_CellularNetwork::RegistrationModeDisable,// C_EREG - AT_CellularNetwork::RegistrationModeLAC, // C_GREG - AT_CellularNetwork::RegistrationModeLAC, // C_REG - 0, // AT_CGSN_WITH_TYPE - 1, // AT_CGDATA - 1, // AT_CGAUTH - 1, // PROPERTY_IPV4_STACK - 0, // PROPERTY_IPV6_STACK - 0, // PROPERTY_IPV4V6_STACK - }; - - set_cellular_properties(cellular_properties); - return get_property(PROPERTY_AT_CGSN_WITH_TYPE); - } - - bool check_supported() - { - return get_property(PROPERTY_AT_CGDATA); - } - - void reset_property_array() - { - _property_array = NULL; - } -}; - -// AStyle ignored as the definition is not clear due to preprocessor usage -// *INDENT-OFF* -class TestAT_CellularBase : public testing::Test { -protected: - - void SetUp() - { - } - - void TearDown() - { - } -}; -// *INDENT-ON* - -TEST_F(TestAT_CellularBase, Create) -{ - EventQueue eq; - FileHandle_stub fh; - ATHandler ah(&fh, eq, 100, ","); - AT_CellularBase *unit = new AT_CellularBase(ah); - - EXPECT_TRUE(unit != NULL); - - delete unit; -} - -TEST_F(TestAT_CellularBase, test_AT_CellularBase_get_at_handler) -{ - EventQueue eq; - FileHandle_stub fh; - ATHandler ah(&fh, eq, 100, ","); - AT_CellularBase at(ah); - - EXPECT_TRUE(&ah == &at.get_at_handler()); -} - -TEST_F(TestAT_CellularBase, test_AT_CellularBase_get_device_error) -{ - EventQueue eq; - FileHandle_stub fh; - ATHandler ah(&fh, eq, 0, ","); - AT_CellularBase at(ah); - - ATHandler_stub::device_err_value.errCode = 8; - - EXPECT_EQ(8, at.get_device_error().errCode); - - ATHandler_stub::device_err_value.errCode = 0; -} - -TEST_F(TestAT_CellularBase, test_AT_CellularBase_set_cellular_properties) -{ - EventQueue eq; - FileHandle_stub fh; - ATHandler ah(&fh, eq, 0, ","); - AT_CellularBase at(ah); - - static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { - AT_CellularNetwork::RegistrationModeDisable,// C_EREG - AT_CellularNetwork::RegistrationModeLAC, // C_GREG - AT_CellularNetwork::RegistrationModeLAC, // C_REG - 0, // AT_CGSN_WITH_TYPE - 1, // AT_CGDATA - 1, // AT_CGAUTH - 1, // PROPERTY_IPV4_STACK - 0, // PROPERTY_IPV6_STACK - 0, // PROPERTY_IPV4V6_STACK - }; - at.set_cellular_properties(cellular_properties); -} - -TEST_F(TestAT_CellularBase, test_AT_CellularBase_is_supported) -{ - EventQueue eq; - FileHandle_stub fh; - ATHandler ah(&fh, eq, 0, ","); - my_base my_at(ah); - - EXPECT_EQ(true, my_at.check_supported()); - EXPECT_EQ(false, my_at.check_not_supported()); -} - -TEST_F(TestAT_CellularBase, test_invalid_params) -{ - EventQueue eq; - FileHandle_stub fh; - ATHandler ah(&fh, eq, 0, ","); - my_base my_at(ah); - - my_at.reset_property_array(); // as array is a static variable, it might have been set in previous tests - - my_at.set_cellular_properties(NULL); - - // Property array not set - EXPECT_EQ(0, my_at.get_property(AT_CellularBase::PROPERTY_IPV4_PDP_TYPE)); -} diff --git a/UNITTESTS/features/cellular/framework/AT/at_cellularbase/unittest.cmake b/UNITTESTS/features/cellular/framework/AT/at_cellularbase/unittest.cmake deleted file mode 100644 index a5eb81daab..0000000000 --- a/UNITTESTS/features/cellular/framework/AT/at_cellularbase/unittest.cmake +++ /dev/null @@ -1,30 +0,0 @@ - -#################### -# UNIT TESTS -#################### - -# Add test specific include paths -set(unittest-includes ${unittest-includes} - features/cellular/framework/AT/AT_CellularBase - ../features/cellular/framework/AT - ../features/cellular/framework/common - ../features/frameworks/mbed-trace - ../features/frameworks/nanostack-libservice/mbed-client-libservice - ../features/netsocket -) - -# Source files -set(unittest-sources - ../features/cellular/framework/AT/AT_CellularBase.cpp -) - -# Test files -set(unittest-test-sources - features/cellular/framework/AT/at_cellularbase/at_cellularbasetest.cpp - stubs/mbed_assert_stub.cpp - stubs/ATHandler_stub.cpp - stubs/EventQueue_stub.cpp - stubs/FileHandle_stub.cpp - stubs/ConditionVariable_stub.cpp - stubs/Mutex_stub.cpp -) diff --git a/UNITTESTS/features/cellular/framework/AT/at_cellularcontext/at_cellularcontexttest.cpp b/UNITTESTS/features/cellular/framework/AT/at_cellularcontext/at_cellularcontexttest.cpp index 2099c8ebfb..18f682c3d9 100644 --- a/UNITTESTS/features/cellular/framework/AT/at_cellularcontext/at_cellularcontexttest.cpp +++ b/UNITTESTS/features/cellular/framework/AT/at_cellularcontext/at_cellularcontexttest.cpp @@ -26,8 +26,8 @@ #include "AT_CellularStack.h" #include "Semaphore_stub.h" #include "CellularDevice_stub.h" +#include "AT_CellularDevice_stub.h" #include "equeue_stub.h" -#include "AT_CellularBase_stub.h" #include "CellularUtil_stub.h" #include "PinNames.h" @@ -76,7 +76,7 @@ protected: // *INDENT-ON* class my_stack : public AT_CellularStack { public: - my_stack(ATHandler &atHandler) : AT_CellularStack(atHandler, 1, IPV4_STACK) {} + my_stack(ATHandler &atHandler, AT_CellularDevice &device) : AT_CellularStack(atHandler, 1, IPV4_STACK, device) {} virtual int get_max_socket_count() { return 1; @@ -117,9 +117,9 @@ public: class my_AT_CTX : public AT_CellularContext { public: my_AT_CTX(ATHandler &at, CellularDevice *device, const char *apn = MBED_CONF_NSAPI_DEFAULT_CELLULAR_APN) : - AT_CellularContext(at, device, apn), _st(at) + AT_CellularContext(at, device, apn), _st(at, *get_device()) { - AT_CellularBase_stub::supported_bool = false; + AT_CellularDevice_stub::supported_bool = false; } virtual ~my_AT_CTX() {} @@ -152,7 +152,7 @@ public: class my_AT_CTXIPV6 : public AT_CellularContext { public: my_AT_CTXIPV6(ATHandler &at, CellularDevice *device, const char *apn = MBED_CONF_NSAPI_DEFAULT_CELLULAR_APN) : - AT_CellularContext(at, device, apn), _st(at) {} + AT_CellularContext(at, device, apn), _st(at, *get_device()) {} virtual ~my_AT_CTXIPV6() {} virtual NetworkStack *get_stack() { @@ -579,13 +579,13 @@ TEST_F(TestAT_CellularContext, connect_disconnect_sync) ATHandler_stub::read_string_index = 2; ASSERT_EQ(ctx1.connect(), NSAPI_ERROR_OK); - AT_CellularBase_stub::supported_bool = true; + AT_CellularDevice_stub::supported_bool = true; ASSERT_EQ(ctx1.disconnect(), NSAPI_ERROR_OK); ATHandler_stub::resp_info_true_counter = 1; ATHandler_stub::read_string_table[1] = (char *)"IPV4V6"; ATHandler_stub::read_string_index = 2; ASSERT_EQ(ctx1.connect(), NSAPI_ERROR_OK); - AT_CellularBase_stub::supported_bool = false; + AT_CellularDevice_stub::supported_bool = false; ASSERT_EQ(ctx1.disconnect(), NSAPI_ERROR_OK); ATHandler_stub::resp_info_true_counter = 1; diff --git a/UNITTESTS/features/cellular/framework/AT/at_cellularcontext/unittest.cmake b/UNITTESTS/features/cellular/framework/AT/at_cellularcontext/unittest.cmake index d0bd83c975..d087aec36b 100644 --- a/UNITTESTS/features/cellular/framework/AT/at_cellularcontext/unittest.cmake +++ b/UNITTESTS/features/cellular/framework/AT/at_cellularcontext/unittest.cmake @@ -21,7 +21,6 @@ set(unittest-sources set(unittest-test-sources features/cellular/framework/AT/at_cellularcontext/at_cellularcontexttest.cpp stubs/ATHandler_stub.cpp - stubs/AT_CellularBase_stub.cpp stubs/AT_CellularDevice_stub.cpp stubs/AT_CellularStack_stub.cpp stubs/AT_CellularNetwork_stub.cpp diff --git a/UNITTESTS/features/cellular/framework/AT/at_cellulardevice/at_cellulardevicetest.cpp b/UNITTESTS/features/cellular/framework/AT/at_cellulardevice/at_cellulardevicetest.cpp index af8b7107f6..610517f5ac 100644 --- a/UNITTESTS/features/cellular/framework/AT/at_cellulardevice/at_cellulardevicetest.cpp +++ b/UNITTESTS/features/cellular/framework/AT/at_cellulardevice/at_cellulardevicetest.cpp @@ -18,7 +18,7 @@ #include #include "AT_CellularDevice.h" #include "ATHandler_stub.h" -#include "AT_CellularBase_stub.h" +#include "AT_CellularDevice_stub.h" using namespace mbed; using namespace events; @@ -70,7 +70,6 @@ TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_get_at_handler) EXPECT_TRUE(dev.open_network(&fh1)); // AT fh1 ref count 2 dev.modem_debug_on(true); EXPECT_TRUE(dev.open_sms(&fh2)); - AT_CellularBase_stub::handler_value = AT_CellularBase_stub::handler_at_constructor_value; EXPECT_TRUE(dev.open_information(&fh3)); ATHandler_stub::fh_value = &fh1; @@ -132,7 +131,6 @@ TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_close_network) AT_CellularDevice dev(&fh1); EXPECT_TRUE(dev.open_network(&fh1)); - AT_CellularBase_stub::handler_value = AT_CellularBase_stub::handler_at_constructor_value; EXPECT_EQ(ATHandler_stub::ref_count, 1); dev.close_network(); @@ -144,7 +142,6 @@ TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_close_sms) AT_CellularDevice dev(&fh1); EXPECT_TRUE(dev.open_sms(&fh1)); - AT_CellularBase_stub::handler_value = AT_CellularBase_stub::handler_at_constructor_value; EXPECT_EQ(ATHandler_stub::ref_count, 1); dev.close_sms(); @@ -159,16 +156,11 @@ TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_close_information) EXPECT_TRUE(dev.open_information(&fh1)); ATHandler_stub::fh_value = NULL; - AT_CellularBase_stub::handler_value = NULL; dev.close_information(); - EventQueue que; ATHandler_stub::fh_value = &fh1; - ATHandler at(&fh1, que, 0, ","); - AT_CellularBase_stub::handler_value = &at; EXPECT_TRUE(dev.open_information(&fh1)); - AT_CellularBase_stub::handler_value = AT_CellularBase_stub::handler_at_constructor_value; dev.close_information(); diff --git a/UNITTESTS/features/cellular/framework/AT/at_cellulardevice/unittest.cmake b/UNITTESTS/features/cellular/framework/AT/at_cellulardevice/unittest.cmake index 4584229884..ecd7ebab06 100644 --- a/UNITTESTS/features/cellular/framework/AT/at_cellulardevice/unittest.cmake +++ b/UNITTESTS/features/cellular/framework/AT/at_cellulardevice/unittest.cmake @@ -29,7 +29,6 @@ set(unittest-test-sources stubs/AT_CellularSMS_stub.cpp stubs/AT_CellularInformation_stub.cpp stubs/CellularUtil_stub.cpp - stubs/AT_CellularBase_stub.cpp stubs/NetworkInterface_stub.cpp stubs/NetworkInterfaceDefaults_stub.cpp stubs/EventQueue_stub.cpp diff --git a/UNITTESTS/features/cellular/framework/AT/at_cellularinformation/at_cellularinformationtest.cpp b/UNITTESTS/features/cellular/framework/AT/at_cellularinformation/at_cellularinformationtest.cpp index 5d9bb2bfdc..7ad41b3ed1 100644 --- a/UNITTESTS/features/cellular/framework/AT/at_cellularinformation/at_cellularinformationtest.cpp +++ b/UNITTESTS/features/cellular/framework/AT/at_cellularinformation/at_cellularinformationtest.cpp @@ -19,10 +19,11 @@ #include "ATHandler_stub.h" #include "events/EventQueue.h" #include "FileHandle_stub.h" -#include "AT_CellularBase_stub.h" +#include "CellularDevice_stub.h" +#include "AT_CellularDevice_stub.h" #include "ATHandler.h" +#include "myCellularDevice.h" #include "AT_CellularInformation.h" -#include "AT_CellularBase.h" using namespace mbed; using namespace events; @@ -38,11 +39,17 @@ protected: ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; ATHandler_stub::read_string_value = NULL; ATHandler_stub::ssize_value = 0; + + _dev = new myCellularDevice(&_fh); } void TearDown() { + delete _dev; } + + FileHandle_stub _fh; + AT_CellularDevice *_dev; }; // *INDENT-ON* @@ -51,7 +58,7 @@ TEST_F(TestAT_CellularInformation, Create) EventQueue eq; FileHandle_stub fh; ATHandler ah(&fh, eq, 0, ","); - AT_CellularInformation *unit = new AT_CellularInformation(ah); + AT_CellularInformation *unit = new AT_CellularInformation(ah, *_dev); EXPECT_TRUE(unit != NULL); delete unit; } @@ -61,7 +68,7 @@ TEST_F(TestAT_CellularInformation, test_AT_CellularInformation_get_manufacturer) EventQueue eq; FileHandle_stub fh; ATHandler ah(&fh, eq, 0, ","); - AT_CellularInformation aci(ah); + AT_CellularInformation aci(ah, *_dev); ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; ATHandler_stub::read_string_value = (char *)"some"; @@ -83,7 +90,7 @@ TEST_F(TestAT_CellularInformation, test_AT_CellularInformation_get_model) EventQueue eq; FileHandle_stub fh; ATHandler ah(&fh, eq, 0, ","); - AT_CellularInformation aci(ah); + AT_CellularInformation aci(ah, *_dev); ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; ATHandler_stub::read_string_value = (char *)"model"; @@ -106,7 +113,7 @@ TEST_F(TestAT_CellularInformation, test_AT_CellularInformation_get_revision) ATHandler ah(&fh, eq, 0, ","); //Used heap var here to visit heap constructor - AT_CellularInformation *aci = new AT_CellularInformation(ah); + AT_CellularInformation *aci = new AT_CellularInformation(ah, *_dev); ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; ATHandler_stub::read_string_value = (char *)"revision"; @@ -132,7 +139,7 @@ TEST_F(TestAT_CellularInformation, test_AT_CellularInformation_get_serial_number EventQueue eq; FileHandle_stub fh; ATHandler ah(&fh, eq, 0, ","); - AT_CellularInformation aci(ah); + AT_CellularInformation aci(ah, *_dev); ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; ATHandler_stub::read_string_value = (char *)"1234567"; @@ -148,14 +155,14 @@ TEST_F(TestAT_CellularInformation, test_AT_CellularInformation_get_serial_number EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == aci.get_serial_number(buf, 8, CellularInformation::SN)); EXPECT_TRUE(strlen(buf) == 0); - AT_CellularBase_stub::supported_bool = false; + AT_CellularDevice_stub::supported_bool = false; EXPECT_TRUE(NSAPI_ERROR_UNSUPPORTED == aci.get_serial_number(buf, 8, CellularInformation::IMEI)); EXPECT_TRUE(strlen(buf) == 0); ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; ATHandler_stub::read_string_value = (char *)"1234567"; ATHandler_stub::ssize_value = 7; - AT_CellularBase_stub::supported_bool = true; + AT_CellularDevice_stub::supported_bool = true; EXPECT_TRUE(NSAPI_ERROR_OK == aci.get_serial_number(buf, 8, CellularInformation::IMEI)); EXPECT_TRUE(strcmp("1234567", buf) == 0); @@ -168,7 +175,7 @@ TEST_F(TestAT_CellularInformation, TestAT_CellularInformation_get_imsi) EventQueue eq; FileHandle_stub fh; ATHandler ah(&fh, eq, 0, ","); - AT_CellularInformation aci(ah); + AT_CellularInformation aci(ah, *_dev); char imsi[16]; ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; @@ -195,7 +202,7 @@ TEST_F(TestAT_CellularInformation, TestAT_CellularInformation_get_iccid) EventQueue eq; FileHandle_stub fh; ATHandler ah(&fh, eq, 0, ","); - AT_CellularInformation aci(ah); + AT_CellularInformation aci(ah, *_dev); char buf[16]; ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; diff --git a/UNITTESTS/features/cellular/framework/AT/at_cellularinformation/unittest.cmake b/UNITTESTS/features/cellular/framework/AT/at_cellularinformation/unittest.cmake index f49beec89f..d908510989 100644 --- a/UNITTESTS/features/cellular/framework/AT/at_cellularinformation/unittest.cmake +++ b/UNITTESTS/features/cellular/framework/AT/at_cellularinformation/unittest.cmake @@ -9,6 +9,7 @@ set(unittest-includes ${unittest-includes} ../features/cellular/framework/common ../features/cellular/framework/AT ../features/frameworks/mbed-client-randlib/mbed-client-randlib + ../features/netsocket/cellular ) # Source files @@ -21,10 +22,16 @@ set(unittest-sources set(unittest-test-sources features/cellular/framework/AT//at_cellularinformation/at_cellularinformationtest.cpp stubs/ATHandler_stub.cpp - stubs/AT_CellularBase_stub.cpp stubs/EventQueue_stub.cpp stubs/FileHandle_stub.cpp stubs/mbed_assert_stub.cpp stubs/ConditionVariable_stub.cpp + stubs/CellularDevice_stub.cpp + stubs/AT_CellularDevice_stub.cpp + stubs/CellularContext_stub.cpp + stubs/AT_CellularContext_stub.cpp + stubs/AT_CellularNetwork_stub.cpp + stubs/NetworkInterface_stub.cpp + stubs/NetworkInterfaceDefaults_stub.cpp stubs/Mutex_stub.cpp ) diff --git a/UNITTESTS/features/cellular/framework/AT/at_cellularnetwork/at_cellularnetworktest.cpp b/UNITTESTS/features/cellular/framework/AT/at_cellularnetwork/at_cellularnetworktest.cpp index f6dd1baf63..e68cdfdf80 100644 --- a/UNITTESTS/features/cellular/framework/AT/at_cellularnetwork/at_cellularnetworktest.cpp +++ b/UNITTESTS/features/cellular/framework/AT/at_cellularnetwork/at_cellularnetworktest.cpp @@ -24,6 +24,9 @@ #include "CellularLog.h" #include "ATHandler_stub.h" #include "AT_CellularStack.h" +#include "myCellularDevice.h" +#include "CellularDevice_stub.h" +#include "AT_CellularDevice_stub.h" using namespace mbed; using namespace events; @@ -40,17 +43,25 @@ protected: ATHandler_stub::resp_stop_success_count = kResp_stop_count_default; ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; ATHandler_stub::int_value = -1; + AT_CellularDevice_stub::supported_bool = false; + + _dev = new myCellularDevice(&_fh); } void TearDown() { + delete _dev; + AT_CellularDevice_stub::supported_bool = false; } + + FileHandle_stub _fh; + AT_CellularDevice *_dev; }; class my_AT_CN : public AT_CellularNetwork { public: - my_AT_CN(ATHandler &atHandler) : AT_CellularNetwork(atHandler) {} + my_AT_CN(ATHandler &atHandler, AT_CellularDevice &device) : AT_CellularNetwork(atHandler, device) {} virtual ~my_AT_CN() {} virtual nsapi_error_t set_access_technology_impl(RadioAccessTechnology op_rat) { @@ -58,16 +69,6 @@ public: } }; -class my_AT_CNipv6 : public AT_CellularNetwork { -public: - my_AT_CNipv6(ATHandler &atHandler) : AT_CellularNetwork(atHandler) {} - virtual ~my_AT_CNipv6() {} - virtual nsapi_error_t set_access_technology_impl(RadioAccessTechnology op_rat) - { - return NSAPI_ERROR_OK; - } -}; - static int network_cb_count; static void network_cb(nsapi_event_t ev, intptr_t intptr) { @@ -80,7 +81,7 @@ TEST_F(TestAT_CellularNetwork, Create) FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - AT_CellularNetwork *cn = new AT_CellularNetwork(at); + AT_CellularNetwork *cn = new AT_CellularNetwork(at, *_dev); EXPECT_TRUE(cn != NULL); delete cn; } @@ -120,7 +121,7 @@ TEST_F(TestAT_CellularNetwork, test_urc_creg) FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - AT_CellularNetwork cn(at); + AT_CellularNetwork cn(at, *_dev); cn.attach(status_cb_urc); EXPECT_STREQ("+CEREG:", ATHandler_stub::urc_handlers[0].urc); @@ -174,7 +175,7 @@ TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_set_registration) FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - AT_CellularNetwork cn(at); + AT_CellularNetwork cn(at, *_dev); ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR; EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == cn.set_registration()); @@ -195,7 +196,7 @@ TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_get_registration_params) FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - AT_CellularNetwork cn(at); + AT_CellularNetwork cn(at, *_dev); ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; ATHandler_stub::int_value = 3; CellularNetwork::registration_params_t reg_params; @@ -236,7 +237,7 @@ TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_get_registration_params) ASSERT_EQ(reg_params._act, CellularNetwork::RAT_EGPRS); ASSERT_EQ(reg_params._cell_id, -1); - my_AT_CN nw(at); + my_AT_CN nw(at, *_dev); reg_params._status = CellularNetwork::NotRegistered; reg_params._act = CellularNetwork::RAT_GSM; @@ -300,7 +301,7 @@ TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_registration_status_chang FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - AT_CellularNetwork cn(at); + AT_CellularNetwork cn(at, *_dev); cn.attach(&disconnect_cb); @@ -353,7 +354,7 @@ TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_get_network_registering_m FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - AT_CellularNetwork cn(at); + AT_CellularNetwork cn(at, *_dev); ATHandler_stub::int_value = 0; CellularNetwork::NWRegisteringMode mode = CellularNetwork::NWModeManual; @@ -372,7 +373,7 @@ TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_set_registration_urc) FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - AT_CellularNetwork cn(at); + AT_CellularNetwork cn(at, *_dev); CellularNetwork::RegistrationType type = CellularNetwork::C_EREG; ASSERT_EQ(NSAPI_ERROR_OK, cn.set_registration_urc(type, true)); @@ -381,7 +382,7 @@ TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_set_registration_urc) type = CellularNetwork::C_REG; ASSERT_EQ(NSAPI_ERROR_OK, cn.set_registration_urc(type, true)); - my_AT_CN nw(at); + my_AT_CN nw(at, *_dev); type = CellularNetwork::C_EREG; ASSERT_EQ(NSAPI_ERROR_OK, nw.set_registration_urc(type, true)); type = CellularNetwork::C_GREG; @@ -440,7 +441,7 @@ TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_set_attach) FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - AT_CellularNetwork cn(at); + AT_CellularNetwork cn(at, *_dev); ATHandler_stub::int_value = 0; EXPECT_TRUE(NSAPI_ERROR_OK == cn.set_attach()); ATHandler_stub::int_value = 1; @@ -456,7 +457,7 @@ TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_get_attach) FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - AT_CellularNetwork cn(at); + AT_CellularNetwork cn(at, *_dev); CellularNetwork::AttachStatus stat = CellularNetwork::Detached; ATHandler_stub::int_value = 1; ATHandler_stub::bool_value = true; @@ -490,7 +491,7 @@ TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_detach) FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - my_AT_CN cn(at); + my_AT_CN cn(at, *_dev); EXPECT_TRUE(NSAPI_ERROR_OK == cn.detach()); @@ -504,12 +505,12 @@ TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_set_access_technology) FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - AT_CellularNetwork cn(at); + AT_CellularNetwork cn(at, *_dev); ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; EXPECT_TRUE(NSAPI_ERROR_UNSUPPORTED == cn.set_access_technology(CellularNetwork::RAT_UNKNOWN)); EXPECT_TRUE(NSAPI_ERROR_UNSUPPORTED == cn.set_access_technology(CellularNetwork::RAT_GSM_COMPACT)); - my_AT_CN my_cn(at); + my_AT_CN my_cn(at, *_dev); EXPECT_TRUE(NSAPI_ERROR_OK == my_cn.set_access_technology(CellularNetwork::RAT_GSM_COMPACT)); } @@ -519,7 +520,7 @@ TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_scan_plmn) FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - AT_CellularNetwork cn(at); + AT_CellularNetwork cn(at, *_dev); int c = -1; CellularNetwork::operList_t ops; ATHandler_stub::bool_value = false; @@ -567,7 +568,7 @@ TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_set_ciot_optimization_con FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - AT_CellularNetwork cn(at); + AT_CellularNetwork cn(at, *_dev); ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; EXPECT_TRUE(NSAPI_ERROR_OK == cn.set_ciot_optimization_config(CellularNetwork::CIOT_OPT_NO_SUPPORT, CellularNetwork::PREFERRED_UE_OPT_NO_PREFERENCE, NULL)); @@ -581,7 +582,7 @@ TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_get_ciot_ue_optimization_ FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - AT_CellularNetwork cn(at); + AT_CellularNetwork cn(at, *_dev); CellularNetwork::CIoT_Supported_Opt sup = CellularNetwork::CIOT_OPT_NO_SUPPORT; CellularNetwork::CIoT_Preferred_UE_Opt pref = CellularNetwork::PREFERRED_UE_OPT_NO_PREFERENCE; ATHandler_stub::int_value = 1; @@ -606,7 +607,7 @@ TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_get_ciot_network_optimiza FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - AT_CellularNetwork cn(at); + AT_CellularNetwork cn(at, *_dev); CellularNetwork::CIoT_Supported_Opt sup = CellularNetwork::CIOT_OPT_NO_SUPPORT; ATHandler_stub::int_value = 1; ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; @@ -620,7 +621,7 @@ TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_get_signal_quality) FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - AT_CellularNetwork cn(at); + AT_CellularNetwork cn(at, *_dev); int rs = -1, ber = -1; ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR; EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == cn.get_signal_quality(rs, &ber)); @@ -639,7 +640,7 @@ TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_get_3gpp_error) FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - AT_CellularNetwork cn(at); + AT_CellularNetwork cn(at, *_dev); ATHandler_stub::int_value = 8; EXPECT_TRUE(8 == cn.get_3gpp_error()); } @@ -650,7 +651,7 @@ TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_get_operator_params) FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - AT_CellularNetwork cn(at); + AT_CellularNetwork cn(at, *_dev); int format; CellularNetwork::operator_t ops; ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR; @@ -696,7 +697,7 @@ TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_get_operator_names) FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - AT_CellularNetwork cn(at); + AT_CellularNetwork cn(at, *_dev); CellularNetwork::operator_names_list name_list; ATHandler_stub::resp_info_true_counter = 0; @@ -731,7 +732,7 @@ TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_attach) FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - AT_CellularNetwork cn(at); + AT_CellularNetwork cn(at, *_dev); ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; network_cb_count = 0; @@ -744,7 +745,7 @@ TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_set_receive_period) FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - AT_CellularNetwork cn(at); + AT_CellularNetwork cn(at, *_dev); ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; EXPECT_TRUE(NSAPI_ERROR_OK == cn.set_receive_period(1, CellularNetwork::EDRXUTRAN_Iu_mode, 3)); @@ -758,8 +759,11 @@ TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_set_packet_domain_event_r FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - AT_CellularNetwork cn(at); + AT_CellularNetwork cn(at, *_dev); ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; + EXPECT_TRUE(NSAPI_ERROR_UNSUPPORTED == cn.set_packet_domain_event_reporting(true)); + AT_CellularDevice_stub::supported_bool = true; + EXPECT_TRUE(NSAPI_ERROR_OK == cn.set_packet_domain_event_reporting(true)); EXPECT_TRUE(NSAPI_ERROR_OK == cn.set_packet_domain_event_reporting(false)); @@ -774,7 +778,7 @@ TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_is_active_context) FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - AT_CellularNetwork cn(at); + AT_CellularNetwork cn(at, *_dev); // No contexts int active_contexts = -1; diff --git a/UNITTESTS/features/cellular/framework/AT/at_cellularnetwork/unittest.cmake b/UNITTESTS/features/cellular/framework/AT/at_cellularnetwork/unittest.cmake index e68b7e6819..41ff31cd58 100644 --- a/UNITTESTS/features/cellular/framework/AT/at_cellularnetwork/unittest.cmake +++ b/UNITTESTS/features/cellular/framework/AT/at_cellularnetwork/unittest.cmake @@ -9,6 +9,7 @@ set(unittest-includes ${unittest-includes} ../features/cellular/framework/common ../features/cellular/framework/AT ../features/frameworks/mbed-client-randlib/mbed-client-randlib + ../features/netsocket/cellular ) # Source files @@ -21,10 +22,15 @@ set(unittest-sources set(unittest-test-sources features/cellular/framework/AT/at_cellularnetwork/at_cellularnetworktest.cpp stubs/ATHandler_stub.cpp - stubs/AT_CellularBase_stub.cpp stubs/EventQueue_stub.cpp stubs/FileHandle_stub.cpp stubs/us_ticker_stub.cpp + stubs/CellularDevice_stub.cpp + stubs/AT_CellularDevice_stub.cpp + stubs/CellularContext_stub.cpp + stubs/AT_CellularContext_stub.cpp + stubs/NetworkInterface_stub.cpp + stubs/NetworkInterfaceDefaults_stub.cpp stubs/mbed_assert_stub.cpp stubs/SocketAddress_stub.cpp stubs/randLIB_stub.cpp diff --git a/UNITTESTS/features/cellular/framework/AT/at_cellularsms/at_cellularsmstest.cpp b/UNITTESTS/features/cellular/framework/AT/at_cellularsms/at_cellularsmstest.cpp index 1a8ffc7ae6..4f4b1d9bc0 100644 --- a/UNITTESTS/features/cellular/framework/AT/at_cellularsms/at_cellularsmstest.cpp +++ b/UNITTESTS/features/cellular/framework/AT/at_cellularsms/at_cellularsmstest.cpp @@ -23,6 +23,7 @@ #include "AT_CellularSMS.h" #include "FileHandle_stub.h" #include "CellularLog.h" +#include "myCellularDevice.h" using namespace mbed; using namespace events; @@ -36,11 +37,17 @@ protected: { ATHandler_stub::return_given_size = false; ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK; + + _dev = new myCellularDevice(&_fh); } void TearDown() { + delete _dev; } + + FileHandle_stub _fh; + AT_CellularDevice *_dev; }; // *INDENT-ON* @@ -50,7 +57,7 @@ TEST_F(TestAT_CellularSMS, Create) FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - AT_CellularSMS *sms = new AT_CellularSMS(at); + AT_CellularSMS *sms = new AT_CellularSMS(at, *_dev); EXPECT_TRUE(sms != NULL); delete sms; @@ -69,7 +76,7 @@ TEST_F(TestAT_CellularSMS, test_AT_CellularSMS_initialize) ATHandler_stub::call_immediately = true; - AT_CellularSMS sms(at); + AT_CellularSMS sms(at, *_dev); ATHandler_stub::nsapi_error_value = NSAPI_ERROR_AUTH_FAILURE; EXPECT_EQ(NSAPI_ERROR_AUTH_FAILURE, sms.initialize(CellularSMS::CellularSMSMmodeText)); @@ -89,7 +96,7 @@ TEST_F(TestAT_CellularSMS, test_AT_CellularSMS_send_sms) FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - AT_CellularSMS sms(at); + AT_CellularSMS sms(at, *_dev); EXPECT_EQ(NSAPI_ERROR_PARAMETER, sms.send_sms(NULL, "2", 1)); sms.initialize(CellularSMS::CellularSMSMmodeText); @@ -129,7 +136,7 @@ TEST_F(TestAT_CellularSMS, test_AT_CellularSMS_get_sms) FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - AT_CellularSMS sms(at); + AT_CellularSMS sms(at, *_dev); char buf[16]; char phone[21]; char stamp[21]; @@ -174,7 +181,7 @@ TEST_F(TestAT_CellularSMS, test_AT_CellularSMS_set_sms_callback) FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - AT_CellularSMS sms(at); + AT_CellularSMS sms(at, *_dev); sms.set_sms_callback(NULL); } @@ -184,7 +191,7 @@ TEST_F(TestAT_CellularSMS, test_AT_CellularSMS_set_cpms) FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - AT_CellularSMS sms(at); + AT_CellularSMS sms(at, *_dev); ATHandler_stub::nsapi_error_value = NSAPI_ERROR_AUTH_FAILURE; EXPECT_TRUE(NSAPI_ERROR_AUTH_FAILURE == sms.set_cpms("2", "3", "4")); } @@ -195,7 +202,7 @@ TEST_F(TestAT_CellularSMS, test_AT_CellularSMS_set_csca) FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - AT_CellularSMS sms(at); + AT_CellularSMS sms(at, *_dev); ATHandler_stub::nsapi_error_value = NSAPI_ERROR_AUTH_FAILURE; EXPECT_TRUE(NSAPI_ERROR_AUTH_FAILURE == sms.set_csca("2", 1)); } @@ -206,7 +213,7 @@ TEST_F(TestAT_CellularSMS, test_AT_CellularSMS_set_cscs) FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - AT_CellularSMS sms(at); + AT_CellularSMS sms(at, *_dev); ATHandler_stub::nsapi_error_value = NSAPI_ERROR_AUTH_FAILURE; EXPECT_TRUE(NSAPI_ERROR_AUTH_FAILURE == sms.set_cscs("2")); } @@ -217,7 +224,7 @@ TEST_F(TestAT_CellularSMS, test_AT_CellularSMS_delete_all_messages) FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - AT_CellularSMS sms(at); + AT_CellularSMS sms(at, *_dev); ATHandler_stub::nsapi_error_value = NSAPI_ERROR_AUTH_FAILURE; EXPECT_TRUE(NSAPI_ERROR_AUTH_FAILURE == sms.delete_all_messages()); } @@ -228,6 +235,6 @@ TEST_F(TestAT_CellularSMS, test_AT_CellularSMS_set_extra_sim_wait_time) FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - AT_CellularSMS sms(at); + AT_CellularSMS sms(at, *_dev); sms.set_extra_sim_wait_time(56); } diff --git a/UNITTESTS/features/cellular/framework/AT/at_cellularsms/unittest.cmake b/UNITTESTS/features/cellular/framework/AT/at_cellularsms/unittest.cmake index cd4cc12980..3e2201be65 100644 --- a/UNITTESTS/features/cellular/framework/AT/at_cellularsms/unittest.cmake +++ b/UNITTESTS/features/cellular/framework/AT/at_cellularsms/unittest.cmake @@ -9,6 +9,7 @@ set(unittest-includes ${unittest-includes} ../features/cellular/framework/common ../features/cellular/framework/AT ../features/frameworks/mbed-client-randlib/mbed-client-randlib + ../features/netsocket/cellular ) # Source files @@ -20,7 +21,6 @@ set(unittest-sources set(unittest-test-sources features/cellular/framework/AT/at_cellularsms/at_cellularsmstest.cpp stubs/ATHandler_stub.cpp - stubs/AT_CellularBase_stub.cpp stubs/EventQueue_stub.cpp stubs/FileHandle_stub.cpp stubs/CellularUtil_stub.cpp @@ -29,6 +29,13 @@ set(unittest-test-sources stubs/ThisThread_stub.cpp stubs/mbed_wait_api_stub.cpp stubs/ConditionVariable_stub.cpp + stubs/CellularDevice_stub.cpp + stubs/AT_CellularDevice_stub.cpp + stubs/CellularContext_stub.cpp + stubs/AT_CellularContext_stub.cpp + stubs/AT_CellularNetwork_stub.cpp + stubs/NetworkInterface_stub.cpp + stubs/NetworkInterfaceDefaults_stub.cpp stubs/Mutex_stub.cpp ) diff --git a/UNITTESTS/features/cellular/framework/AT/at_cellularstack/at_cellularstacktest.cpp b/UNITTESTS/features/cellular/framework/AT/at_cellularstack/at_cellularstacktest.cpp index d5e83c9323..c4f59f7d93 100644 --- a/UNITTESTS/features/cellular/framework/AT/at_cellularstack/at_cellularstacktest.cpp +++ b/UNITTESTS/features/cellular/framework/AT/at_cellularstack/at_cellularstacktest.cpp @@ -25,6 +25,8 @@ #include "CellularLog.h" #include "ATHandler_stub.h" #include "SocketAddress.h" +#include "CellularDevice_stub.h" +#include "myCellularDevice.h" using namespace mbed; using namespace events; @@ -36,7 +38,7 @@ public: nsapi_error_t create_error; CellularSocket socket; - MyStack(ATHandler &atr, int cid, nsapi_ip_stack_t typ) : AT_CellularStack(atr, cid, typ) + MyStack(ATHandler &atr, int cid, nsapi_ip_stack_t typ, AT_CellularDevice &device) : AT_CellularStack(atr, cid, typ, device) { bool_value = false; max_sock_value = 0; @@ -148,11 +150,16 @@ protected: ATHandler_stub::ssize_value = 0; ATHandler_stub::bool_value = false; ATHandler_stub::read_string_value = NULL; + _dev = new myCellularDevice(&_fh); } void TearDown() { + delete _dev; } + + FileHandle_stub _fh; + AT_CellularDevice *_dev; }; // *INDENT-ON* @@ -162,7 +169,7 @@ TEST_F(TestAT_CellularStack, Create) FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - MyStack *st = new MyStack(at, 0, IPV4_STACK); + MyStack *st = new MyStack(at, 0, IPV4_STACK, *_dev); EXPECT_TRUE(st != NULL); delete st; @@ -174,7 +181,7 @@ TEST_F(TestAT_CellularStack, test_AT_CellularStack_get_ip_address) FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - MyStack st(at, 0, IPV6_STACK); + MyStack st(at, 0, IPV6_STACK, *_dev); SocketAddress a; EXPECT_EQ(st.get_ip_address(&a), NSAPI_ERROR_NO_ADDRESS); EXPECT_EQ(a.get_ip_address(), nullptr); @@ -199,7 +206,7 @@ TEST_F(TestAT_CellularStack, test_AT_CellularStack_socket_open) FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - MyStack st(at, 0, IPV6_STACK); + MyStack st(at, 0, IPV6_STACK, *_dev); st.bool_value = false; EXPECT_EQ(st.socket_open(NULL, NSAPI_TCP), NSAPI_ERROR_UNSUPPORTED); @@ -208,7 +215,7 @@ TEST_F(TestAT_CellularStack, test_AT_CellularStack_socket_open) nsapi_socket_t sock = &st.socket; EXPECT_EQ(st.socket_open(&sock, NSAPI_TCP), NSAPI_ERROR_NO_SOCKET); - MyStack st2(at, 0, IPV6_STACK); + MyStack st2(at, 0, IPV6_STACK, *_dev); st2.bool_value = true; st2.max_sock_value = 1; sock = &st2.socket; @@ -221,7 +228,7 @@ TEST_F(TestAT_CellularStack, test_AT_CellularStack_socket_close) FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - MyStack st(at, 0, IPV6_STACK); + MyStack st(at, 0, IPV6_STACK, *_dev); EXPECT_EQ(st.socket_close(&st.socket), NSAPI_ERROR_DEVICE_ERROR); nsapi_socket_t sock = &st.socket; @@ -231,7 +238,7 @@ TEST_F(TestAT_CellularStack, test_AT_CellularStack_socket_close) st.max_sock_value = 0; EXPECT_EQ(st.socket_close(sock), NSAPI_ERROR_DEVICE_ERROR); - MyStack st2(at, 0, IPV6_STACK); + MyStack st2(at, 0, IPV6_STACK, *_dev); st2.max_sock_value = 1; st2.bool_value = true; sock = &st2.socket; @@ -245,7 +252,7 @@ TEST_F(TestAT_CellularStack, test_AT_CellularStack_socket_bind) FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - MyStack st(at, 0, IPV6_STACK); + MyStack st(at, 0, IPV6_STACK, *_dev); SocketAddress addr; ATHandler_stub::nsapi_error_value = NSAPI_ERROR_ALREADY; EXPECT_EQ(st.socket_bind(NULL, addr), NSAPI_ERROR_NO_SOCKET); @@ -259,7 +266,7 @@ TEST_F(TestAT_CellularStack, test_AT_CellularStack_socket_listen) FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - MyStack st(at, 0, IPV6_STACK); + MyStack st(at, 0, IPV6_STACK, *_dev); EXPECT_EQ(st.socket_listen(&st.socket, 4), NSAPI_ERROR_UNSUPPORTED); } @@ -269,7 +276,7 @@ TEST_F(TestAT_CellularStack, test_AT_CellularStack_socket_connect) FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - MyStack st(at, 0, IPV6_STACK); + MyStack st(at, 0, IPV6_STACK, *_dev); SocketAddress addr; EXPECT_EQ(st.socket_connect(NULL, addr), NSAPI_ERROR_NO_SOCKET); @@ -282,7 +289,7 @@ TEST_F(TestAT_CellularStack, test_AT_CellularStack_socket_accept) FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - MyStack st(at, 0, IPV6_STACK); + MyStack st(at, 0, IPV6_STACK, *_dev); nsapi_socket_t sock = &st.socket; EXPECT_EQ(st.socket_accept(NULL, &sock), NSAPI_ERROR_UNSUPPORTED); } @@ -293,7 +300,7 @@ TEST_F(TestAT_CellularStack, test_AT_CellularStack_socket_send) FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - MyStack st(at, 0, IPV6_STACK); + MyStack st(at, 0, IPV6_STACK, *_dev); EXPECT_EQ(st.socket_send(NULL, "addr", 4), NSAPI_ERROR_NO_SOCKET); EXPECT_EQ(st.socket_send(&st.socket, "addr", 4), NSAPI_ERROR_NO_CONNECTION); @@ -313,7 +320,7 @@ TEST_F(TestAT_CellularStack, test_AT_CellularStack_socket_sendto) FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - MyStack st(at, 0, IPV6_STACK); + MyStack st(at, 0, IPV6_STACK, *_dev); SocketAddress addr("fc00::", 123); EXPECT_EQ(st.socket_sendto(NULL, addr, "addr", 4), NSAPI_ERROR_NO_SOCKET); @@ -336,7 +343,7 @@ TEST_F(TestAT_CellularStack, test_AT_CellularStack_socket_recv) FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - MyStack st(at, 0, IPV6_STACK); + MyStack st(at, 0, IPV6_STACK, *_dev); char table[4]; EXPECT_EQ(st.socket_recv(NULL, table, 4), NSAPI_ERROR_NO_SOCKET); } @@ -347,7 +354,7 @@ TEST_F(TestAT_CellularStack, test_AT_CellularStack_socket_recvfrom) FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - MyStack st(at, 0, IPV6_STACK); + MyStack st(at, 0, IPV6_STACK, *_dev); char table[4]; EXPECT_EQ(st.socket_recvfrom(NULL, NULL, table, 4), NSAPI_ERROR_NO_SOCKET); @@ -370,7 +377,7 @@ TEST_F(TestAT_CellularStack, test_AT_CellularStack_socket_attach) FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - MyStack st(at, 0, IPV6_STACK); + MyStack st(at, 0, IPV6_STACK, *_dev); st.socket_attach(NULL, NULL, NULL); st.max_sock_value = 1; diff --git a/UNITTESTS/features/cellular/framework/AT/at_cellularstack/unittest.cmake b/UNITTESTS/features/cellular/framework/AT/at_cellularstack/unittest.cmake index d12d38398d..aa347bccad 100644 --- a/UNITTESTS/features/cellular/framework/AT/at_cellularstack/unittest.cmake +++ b/UNITTESTS/features/cellular/framework/AT/at_cellularstack/unittest.cmake @@ -9,6 +9,7 @@ set(unittest-includes ${unittest-includes} ../features/cellular/framework/common ../features/cellular/framework/AT ../features/frameworks/mbed-client-randlib/mbed-client-randlib + ../features/netsocket/cellular ) # Source files @@ -26,10 +27,16 @@ set(unittest-sources set(unittest-test-sources features/cellular/framework/AT/at_cellularstack/at_cellularstacktest.cpp stubs/ATHandler_stub.cpp - stubs/AT_CellularBase_stub.cpp stubs/EventQueue_stub.cpp stubs/FileHandle_stub.cpp stubs/CellularUtil_stub.cpp + stubs/CellularContext_stub.cpp + stubs/AT_CellularContext_stub.cpp + stubs/AT_CellularNetwork_stub.cpp + stubs/NetworkInterfaceDefaults_stub.cpp + stubs/NetworkInterface_stub.cpp + stubs/CellularDevice_stub.cpp + stubs/AT_CellularDevice_stub.cpp stubs/us_ticker_stub.cpp stubs/NetworkStack_stub.cpp stubs/mbed_assert_stub.cpp diff --git a/UNITTESTS/features/cellular/framework/AT/athandler/athandlertest.cpp b/UNITTESTS/features/cellular/framework/AT/athandler/athandlertest.cpp index 44a86e5e94..40cd643941 100644 --- a/UNITTESTS/features/cellular/framework/AT/athandler/athandlertest.cpp +++ b/UNITTESTS/features/cellular/framework/AT/athandler/athandlertest.cpp @@ -385,8 +385,14 @@ TEST_F(TestATHandler, test_ATHandler_write_int) at.write_int(2147483647); +//This is intentional for this test, so let's disable build time warning for next line +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Woverflow" + at.write_int(2147483647 + 1); +#pragma GCC diagnostic pop + // at.at_error(0, DeviceErrorType(0)); // at.write_int(4); } diff --git a/UNITTESTS/features/cellular/framework/AT/athandler/unittest.cmake b/UNITTESTS/features/cellular/framework/AT/athandler/unittest.cmake index c2f232945b..ca88840f79 100644 --- a/UNITTESTS/features/cellular/framework/AT/athandler/unittest.cmake +++ b/UNITTESTS/features/cellular/framework/AT/athandler/unittest.cmake @@ -21,7 +21,6 @@ set(unittest-sources # Test files set(unittest-test-sources features/cellular/framework/AT/athandler/athandlertest.cpp - stubs/AT_CellularBase_stub.cpp stubs/EventQueue_stub.cpp stubs/FileHandle_stub.cpp stubs/us_ticker_stub.cpp diff --git a/UNITTESTS/features/cellular/framework/device/cellularcontext/unittest.cmake b/UNITTESTS/features/cellular/framework/device/cellularcontext/unittest.cmake index a51ee147fb..3f2452493b 100644 --- a/UNITTESTS/features/cellular/framework/device/cellularcontext/unittest.cmake +++ b/UNITTESTS/features/cellular/framework/device/cellularcontext/unittest.cmake @@ -33,8 +33,8 @@ set(unittest-test-sources stubs/SerialBase_stub.cpp stubs/ATHandler_stub.cpp stubs/AT_CellularNetwork_stub.cpp - stubs/AT_CellularBase_stub.cpp stubs/AT_CellularContext_stub.cpp + stubs/AT_CellularDevice_stub.cpp stubs/Semaphore_stub.cpp stubs/NetworkInterface_stub.cpp stubs/NetworkInterfaceDefaults_stub.cpp diff --git a/UNITTESTS/features/cellular/framework/device/cellulardevice/unittest.cmake b/UNITTESTS/features/cellular/framework/device/cellulardevice/unittest.cmake index 7a21e10003..65468996c3 100644 --- a/UNITTESTS/features/cellular/framework/device/cellulardevice/unittest.cmake +++ b/UNITTESTS/features/cellular/framework/device/cellulardevice/unittest.cmake @@ -27,8 +27,8 @@ set(unittest-test-sources stubs/SerialBase_stub.cpp stubs/ATHandler_stub.cpp stubs/AT_CellularNetwork_stub.cpp - stubs/AT_CellularBase_stub.cpp stubs/AT_CellularContext_stub.cpp + stubs/AT_CellularDevice_stub.cpp stubs/Semaphore_stub.cpp stubs/NetworkInterface_stub.cpp stubs/NetworkInterfaceDefaults_stub.cpp diff --git a/UNITTESTS/features/cellular/framework/device/cellularstatemachine/unittest.cmake b/UNITTESTS/features/cellular/framework/device/cellularstatemachine/unittest.cmake index 61e33e03ff..dfaa51b608 100644 --- a/UNITTESTS/features/cellular/framework/device/cellularstatemachine/unittest.cmake +++ b/UNITTESTS/features/cellular/framework/device/cellularstatemachine/unittest.cmake @@ -27,7 +27,6 @@ set(unittest-test-sources stubs/SerialBase_stub.cpp stubs/ATHandler_stub.cpp stubs/AT_CellularNetwork_stub.cpp - stubs/AT_CellularBase_stub.cpp stubs/AT_CellularContext_stub.cpp stubs/AT_CellularDevice_stub.cpp stubs/Semaphore_stub.cpp diff --git a/UNITTESTS/features/netsocket/EthernetInterface/test_EthernetInterface.cpp b/UNITTESTS/features/netsocket/EthernetInterface/test_EthernetInterface.cpp index 7f8e670c71..f143b2ee59 100644 --- a/UNITTESTS/features/netsocket/EthernetInterface/test_EthernetInterface.cpp +++ b/UNITTESTS/features/netsocket/EthernetInterface/test_EthernetInterface.cpp @@ -123,7 +123,6 @@ TEST_F(TestEthernetInterface, constructor_default) EXPECT_NE(nullptr, iface->emacInterface()); EXPECT_EQ(nullptr, iface->wifiInterface()); - EXPECT_EQ(nullptr, iface->cellularBase()); EXPECT_EQ(nullptr, iface->cellularInterface()); EXPECT_EQ(nullptr, iface->meshInterface()); } diff --git a/UNITTESTS/features/netsocket/PPPInterface/test_PPPInterface.cpp b/UNITTESTS/features/netsocket/PPPInterface/test_PPPInterface.cpp index cab12b275a..003ff846b4 100644 --- a/UNITTESTS/features/netsocket/PPPInterface/test_PPPInterface.cpp +++ b/UNITTESTS/features/netsocket/PPPInterface/test_PPPInterface.cpp @@ -123,7 +123,6 @@ TEST_F(TestPPPInterface, constructor_default) EXPECT_EQ(nullptr, iface->emacInterface()); EXPECT_EQ(nullptr, iface->ethInterface()); EXPECT_EQ(nullptr, iface->wifiInterface()); - EXPECT_EQ(nullptr, iface->cellularBase()); EXPECT_EQ(nullptr, iface->cellularInterface()); EXPECT_EQ(nullptr, iface->meshInterface()); } diff --git a/UNITTESTS/stubs/AT_CellularBase_stub.cpp b/UNITTESTS/stubs/AT_CellularBase_stub.cpp deleted file mode 100644 index d4b1369418..0000000000 --- a/UNITTESTS/stubs/AT_CellularBase_stub.cpp +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) , Arm Limited and affiliates. - * 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 "nsapi_types.h" -#include "AT_CellularBase_stub.h" -#include "AT_CellularNetwork.h" -using namespace mbed; - -ATHandler *AT_CellularBase_stub::handler_value = NULL; -ATHandler *AT_CellularBase_stub::handler_at_constructor_value = NULL; -device_err_t AT_CellularBase_stub::device_err_value; -bool AT_CellularBase_stub::supported_bool = true; - -AT_CellularBase::AT_CellularBase(ATHandler &at) : _at(at) -{ - AT_CellularBase_stub::handler_at_constructor_value = &_at; -} - -ATHandler &AT_CellularBase::get_at_handler() -{ - AT_CellularBase_stub::handler_value = &_at; - return _at; -} - -device_err_t AT_CellularBase::get_device_error() const -{ - return AT_CellularBase_stub::device_err_value; -} - -intptr_t AT_CellularBase::get_property(CellularProperty key) -{ - if (key == PROPERTY_C_GREG) { - return AT_CellularNetwork::RegistrationModeDisable; - } else if (key == PROPERTY_C_REG || key == PROPERTY_C_EREG) { - return AT_CellularNetwork::RegistrationModeEnable; - } else if (key == PROPERTY_AT_CGAUTH) { - return true; - } else if (key == PROPERTY_IPV4_PDP_TYPE) { - return true; - } - - return AT_CellularBase_stub::supported_bool; -} diff --git a/UNITTESTS/stubs/AT_CellularBase_stub.h b/UNITTESTS/stubs/AT_CellularBase_stub.h deleted file mode 100644 index bbf63882fe..0000000000 --- a/UNITTESTS/stubs/AT_CellularBase_stub.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright (c) , Arm Limited and affiliates. - * 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 "AT_CellularBase.h" - -namespace AT_CellularBase_stub { -extern mbed::ATHandler *handler_value; -extern mbed::ATHandler *handler_at_constructor_value; -extern mbed::device_err_t device_err_value; -extern bool supported_bool; -} diff --git a/UNITTESTS/stubs/AT_CellularContext_stub.cpp b/UNITTESTS/stubs/AT_CellularContext_stub.cpp index e2ce0c2cd5..28ae13d425 100644 --- a/UNITTESTS/stubs/AT_CellularContext_stub.cpp +++ b/UNITTESTS/stubs/AT_CellularContext_stub.cpp @@ -20,7 +20,7 @@ using namespace mbed; AT_CellularContext::AT_CellularContext(ATHandler &at, CellularDevice *device, const char *apn, bool cp_req, bool nonip_req) : - AT_CellularBase(at), _is_connected(false), + _at(at), _is_connected(false), _current_op(OP_INVALID), _fh(0), _cp_req(cp_req) { _stack = NULL; @@ -169,15 +169,15 @@ const char *AT_CellularContext::get_gateway() return NULL; } -AT_CellularBase::CellularProperty AT_CellularContext::pdp_type_t_to_cellular_property(pdp_type_t pdp_type) +AT_CellularDevice::CellularProperty AT_CellularContext::pdp_type_t_to_cellular_property(pdp_type_t pdp_type) { - AT_CellularBase::CellularProperty prop = PROPERTY_IPV4_PDP_TYPE; + AT_CellularDevice::CellularProperty prop = AT_CellularDevice::PROPERTY_IPV4_PDP_TYPE; if (pdp_type == IPV6_PDP_TYPE) { - prop = PROPERTY_IPV6_PDP_TYPE; + prop = AT_CellularDevice::PROPERTY_IPV6_PDP_TYPE; } else if (pdp_type == IPV4V6_PDP_TYPE) { - prop = PROPERTY_IPV4V6_PDP_TYPE; + prop = AT_CellularDevice::PROPERTY_IPV4V6_PDP_TYPE; } else if (pdp_type == NON_IP_PDP_TYPE) { - prop = PROPERTY_NON_IP_PDP_TYPE; + prop = AT_CellularDevice::PROPERTY_NON_IP_PDP_TYPE; } return prop; @@ -307,3 +307,8 @@ char *AT_CellularContext::get_interface_name(char *interface_name) { return NULL; } + +ATHandler &AT_CellularContext::get_at_handler() +{ + return _at; +} diff --git a/UNITTESTS/stubs/AT_CellularDevice_stub.cpp b/UNITTESTS/stubs/AT_CellularDevice_stub.cpp index 60346ab6ed..653ee22e6a 100644 --- a/UNITTESTS/stubs/AT_CellularDevice_stub.cpp +++ b/UNITTESTS/stubs/AT_CellularDevice_stub.cpp @@ -30,6 +30,7 @@ int AT_CellularDevice_stub::init_module_failure_count = 0; int AT_CellularDevice_stub::set_pin_failure_count = 0; int AT_CellularDevice_stub::get_sim_failure_count = 0; bool AT_CellularDevice_stub::pin_needed = false; +bool AT_CellularDevice_stub::supported_bool = false; AT_CellularDevice::AT_CellularDevice(FileHandle *fh) : CellularDevice(fh), _network(0), _sms(0), _information(0), _context_list(0), _default_timeout(DEFAULT_AT_TIMEOUT), _modem_debug_on(false) @@ -83,7 +84,7 @@ CellularNetwork *AT_CellularDevice::open_network(FileHandle *fh) _default_timeout, "\r", get_send_delay(), - _modem_debug_on)); + _modem_debug_on), *this); return _network; } @@ -136,7 +137,7 @@ void AT_CellularDevice::delete_context(CellularContext *context) AT_CellularNetwork *AT_CellularDevice::open_network_impl(ATHandler &at) { - _network = new AT_CellularNetwork(at); + _network = new AT_CellularNetwork(at, *this); return _network; } @@ -271,3 +272,22 @@ nsapi_error_t AT_CellularDevice::set_baud_rate_impl(int baud_rate) { return NSAPI_ERROR_OK; } + +void AT_CellularDevice::set_cellular_properties(const intptr_t *property_array) +{ +} + +intptr_t AT_CellularDevice::get_property(CellularProperty key) +{ + if (key == PROPERTY_C_GREG) { + return AT_CellularNetwork::RegistrationModeDisable; + } else if (key == PROPERTY_C_REG || key == PROPERTY_C_EREG) { + return AT_CellularNetwork::RegistrationModeEnable; + } else if (key == PROPERTY_AT_CGAUTH) { + return true; + } else if (key == PROPERTY_IPV4_PDP_TYPE) { + return true; + } + + return AT_CellularDevice_stub::supported_bool; +} diff --git a/UNITTESTS/stubs/AT_CellularDevice_stub.h b/UNITTESTS/stubs/AT_CellularDevice_stub.h index 696475d0df..92c53df3a2 100644 --- a/UNITTESTS/stubs/AT_CellularDevice_stub.h +++ b/UNITTESTS/stubs/AT_CellularDevice_stub.h @@ -18,6 +18,7 @@ #define AT_CELLULARDEVICE_STUB_H_ #include "AT_CellularDevice.h" +#include "ATHandler.h" namespace AT_CellularDevice_stub { extern int failure_count; @@ -26,6 +27,7 @@ extern int init_module_failure_count; extern int set_pin_failure_count; extern int get_sim_failure_count; extern bool pin_needed; +extern bool supported_bool; } diff --git a/UNITTESTS/stubs/AT_CellularInformation_stub.cpp b/UNITTESTS/stubs/AT_CellularInformation_stub.cpp index 832c038433..035a5fac99 100644 --- a/UNITTESTS/stubs/AT_CellularInformation_stub.cpp +++ b/UNITTESTS/stubs/AT_CellularInformation_stub.cpp @@ -20,7 +20,7 @@ using namespace mbed; -AT_CellularInformation::AT_CellularInformation(ATHandler &at) : AT_CellularBase(at) +AT_CellularInformation::AT_CellularInformation(ATHandler &at, AT_CellularDevice &device) : _at(at), _device(device) { } @@ -57,3 +57,8 @@ nsapi_error_t AT_CellularInformation::get_iccid(char *buf, size_t buf_size) { return NSAPI_ERROR_OK; } + +ATHandler &AT_CellularInformation::get_at_handler() +{ + return _at; +} diff --git a/UNITTESTS/stubs/AT_CellularMultiplexer_stub.cpp b/UNITTESTS/stubs/AT_CellularMultiplexer_stub.cpp deleted file mode 100644 index 21ea7e9f54..0000000000 --- a/UNITTESTS/stubs/AT_CellularMultiplexer_stub.cpp +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (c) , Arm Limited and affiliates. - * 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 "AT_CellularMultiplexer.h" -#include "CellularLog.h" -#include "nsapi_types.h" - -using namespace mbed; - -AT_CellularMultiplexer::AT_CellularMultiplexer(ATHandler &at) : AT_CellularBase(at) -{ -} - -AT_CellularMultiplexer::~AT_CellularMultiplexer() -{ -} - -nsapi_error_t AT_CellularMultiplexer::multiplexer_mode_start() -{ - return 0; -} diff --git a/UNITTESTS/stubs/AT_CellularNetwork_stub.cpp b/UNITTESTS/stubs/AT_CellularNetwork_stub.cpp index 6305b2aba0..a14b8cc27b 100644 --- a/UNITTESTS/stubs/AT_CellularNetwork_stub.cpp +++ b/UNITTESTS/stubs/AT_CellularNetwork_stub.cpp @@ -32,7 +32,7 @@ int AT_CellularNetwork_stub::fail_counter = 0; int AT_CellularNetwork_stub::set_registration_urc_fail_counter = 0; int AT_CellularNetwork_stub::get_registration_params_fail_counter = 0; -AT_CellularNetwork::AT_CellularNetwork(ATHandler &atHandler) : AT_CellularBase(atHandler) +AT_CellularNetwork::AT_CellularNetwork(ATHandler &atHandler, AT_CellularDevice &device) : _at(atHandler), _device(device) { } @@ -171,3 +171,8 @@ nsapi_error_t AT_CellularNetwork::clear() { return NSAPI_ERROR_OK; } + +ATHandler &AT_CellularNetwork::get_at_handler() +{ + return _at; +} diff --git a/UNITTESTS/stubs/AT_CellularSMS_stub.cpp b/UNITTESTS/stubs/AT_CellularSMS_stub.cpp index e69ab3aa88..115900f611 100644 --- a/UNITTESTS/stubs/AT_CellularSMS_stub.cpp +++ b/UNITTESTS/stubs/AT_CellularSMS_stub.cpp @@ -34,8 +34,8 @@ const uint16_t SMS_MAX_8BIT_CONCATENATED_SINGLE_SMS_SIZE = 134; const uint16_t SMS_MAX_GSM7_CONCATENATED_SINGLE_SMS_SIZE = 153; -AT_CellularSMS::AT_CellularSMS(ATHandler &at) : AT_CellularBase(at), _cb(0), _mode(CellularSMSMmodeText), - _use_8bit_encoding(false), _sim_wait_time(0), _sms_message_ref_number(1), _sms_info(NULL) +AT_CellularSMS::AT_CellularSMS(ATHandler &at, AT_CellularDevice &device) : _cb(0), _mode(CellularSMSMmodeText), + _use_8bit_encoding(false), _sim_wait_time(0), _sms_message_ref_number(1), _sms_info(NULL), _at(at), _device(device) { } @@ -189,3 +189,8 @@ bool AT_CellularSMS::create_time(const char *time_string, time_t *time) return 0; } +ATHandler &AT_CellularSMS::get_at_handler() +{ + return _at; +} + diff --git a/UNITTESTS/stubs/AT_CellularStack_stub.cpp b/UNITTESTS/stubs/AT_CellularStack_stub.cpp index 8bf7f85ebc..9269887777 100644 --- a/UNITTESTS/stubs/AT_CellularStack_stub.cpp +++ b/UNITTESTS/stubs/AT_CellularStack_stub.cpp @@ -22,7 +22,8 @@ using namespace mbed; using namespace mbed_cellular_util; -AT_CellularStack::AT_CellularStack(ATHandler &atHandler, int cid, nsapi_ip_stack_t stack_type) : AT_CellularBase(atHandler), _socket(NULL), _cid(cid), _stack_type(stack_type) +AT_CellularStack::AT_CellularStack(ATHandler &atHandler, int cid, nsapi_ip_stack_t stack_type, AT_CellularDevice &device) : + _socket(NULL), _cid(cid), _stack_type(stack_type), _at(atHandler), _device(device) { } diff --git a/UNITTESTS/stubs/CellularDevice_stub.h b/UNITTESTS/stubs/CellularDevice_stub.h index b8aa69e00c..ada5d9ee94 100644 --- a/UNITTESTS/stubs/CellularDevice_stub.h +++ b/UNITTESTS/stubs/CellularDevice_stub.h @@ -18,6 +18,7 @@ #define CELLULARDEVICE_STUB_H_ #include "CellularDevice.h" +#include "ATHandler.h" namespace CellularDevice_stub { extern int connect_counter; diff --git a/UNITTESTS/target_h/myCellularDevice.h b/UNITTESTS/target_h/myCellularDevice.h index f4a54f2cdf..b00c8549c8 100644 --- a/UNITTESTS/target_h/myCellularDevice.h +++ b/UNITTESTS/target_h/myCellularDevice.h @@ -17,7 +17,7 @@ #ifndef MY_CELLULARDEVICE_H_ #define MY_CELLULARDEVICE_H_ -#include "CellularDevice.h" +#include "AT_CellularDevice.h" #include "AT_CellularNetwork.h" #include "FileHandle_stub.h" #include "ATHandler_stub.h" @@ -33,9 +33,9 @@ class CellularInformation; class CellularContext; class FileHandle; -class myCellularDevice : public CellularDevice { +class myCellularDevice : public AT_CellularDevice { public: - myCellularDevice(FileHandle *fh) : CellularDevice(fh), _context_list(0), _network(0) {} + myCellularDevice(FileHandle *fh) : AT_CellularDevice(fh), _context_list(0), _network(0) {} virtual ~myCellularDevice() { delete _context_list; @@ -89,7 +89,7 @@ public: EventQueue que; FileHandle_stub fh1; ATHandler at(&fh1, que, 0, ","); - _network = new AT_CellularNetwork(at); + _network = new AT_CellularNetwork(at, *this); return _network; } @@ -198,6 +198,8 @@ public: } } + + AT_CellularNetwork *_network; AT_CellularContext *_context_list; }; diff --git a/features/cellular/framework/API/CellularDevice.h b/features/cellular/framework/API/CellularDevice.h index ffa64c01e0..024410572e 100644 --- a/features/cellular/framework/API/CellularDevice.h +++ b/features/cellular/framework/API/CellularDevice.h @@ -90,6 +90,8 @@ public: */ virtual ~CellularDevice(); +public: //Virtual functions + /** Clear modem to a default initial state * * Clear persistent user data from the modem, such as PDP contexts. @@ -102,6 +104,39 @@ public: */ virtual nsapi_error_t clear(); + /** Shutdown cellular device to minimum functionality. + * + * Actual functionality is modem specific, for example UART may is not be responsive without + * explicit wakeup signal (such as RTS) after shutdown. + * + * @remark You must call shutdown before power off to prepare the modem and to quit cellular network. + * + * @return NSAPI_ERROR_OK on success + * NSAPI_ERROR_DEVICE_ERROR on failure + */ + virtual nsapi_error_t shutdown(); + + /** Get the linked list of CellularContext instances + * + * @return Pointer to first item in linked list + */ + virtual CellularContext *get_context_list() const; + + /** Get event queue that can be chained to main event queue. + * @return event queue + */ + virtual events::EventQueue *get_queue(); + +protected: //Virtual functions + /** Cellular callback to be attached to Network and CellularStateMachine classes. + * CellularContext calls this when in PPP mode to provide network changes. + * This method will broadcast to every interested classes: + * CellularContext (might be many) and CellularStateMachine if available. + */ + virtual void cellular_callback(nsapi_event_t ev, intptr_t ptr, CellularContext *ctx = NULL); + +public: //Pure virtual functions + /** Sets the modem up for powering on * This is equivalent to plugging in the device, i.e., attaching power and serial port. * In general, hard_power_on and soft_power_on provides a simple hardware abstraction layer @@ -219,6 +254,124 @@ public: */ virtual void delete_context(CellularContext *context) = 0; + /** Turn modem debug traces on + * + * @param on set true to enable debug traces + */ + virtual void modem_debug_on(bool on) = 0; + + /** Initialize cellular device must be called right after the module is ready. + * + * For example, when multiple cellular modules are supported in a single driver this function + * detects and adapts to an actual module at runtime. + * + * @remark CellularStateMachine calls soft_power_on and init repeatedly when starting to connect + * until the modem responds. + * + * @return NSAPI_ERROR_OK on success + * NSAPI_ERROR_NO_MEMORY on case of memory failure + * NSAPI_ERROR_UNSUPPORTED if current cellular module type is not detected + * NSAPI_ERROR_DEVICE_ERROR if model information could not be read + * + */ + virtual nsapi_error_t init() = 0; + + /** Check whether the device is ready to accept commands. + * + * @return NSAPI_ERROR_OK on success + * NSAPI_ERROR_DEVICE_ERROR on failure + */ + virtual nsapi_error_t is_ready() = 0; + + /** Set callback function to listen when device is ready. + * + * @param callback function to call on device ready, or NULL to remove callback. + */ + virtual void set_ready_cb(Callback callback) = 0; + + /** Set power save mode + * + * @remark See 3GPP TS 27.007 PSM for details + * + * @param periodic_time in seconds to enable power save, or zero to disable + * @param active_time in seconds to wait before entering power save mode + * + * @return NSAPI_ERROR_OK on success + * NSAPI_ERROR_DEVICE_ERROR on failure + */ + virtual nsapi_error_t set_power_save_mode(int periodic_time, int active_time = 0) = 0; + + /** Get the current ATHandler instance in use for debug purposes etc. + * Once use has been finished call to release_at_handler() has to be made + * + * @return Pointer to the ATHandler in use + */ + virtual ATHandler *get_at_handler() = 0; + + /** Release the ATHandler taken into use with get_at_handler() + * + * @param at_handler + * @return NSAPI_ERROR_OK on success, NSAPI_ERROR_PARAMETER on failure + */ + virtual nsapi_error_t release_at_handler(ATHandler *at_handler) = 0; + + /** Sets cellular modem to given baud rate + * + * @param baud_rate + * @return NSAPI_ERROR_OK on success, NSAPI_ERROR_DEVICE_ERROR on failure + */ + virtual nsapi_error_t set_baud_rate(int baud_rate) = 0; + + /** Create new CellularNetwork interface. + * + * @param fh file handle used in communication to modem. This can be, for example, UART handle. If null, then the default + * file handle is used. + * @return New instance of interface CellularNetwork. + */ + virtual CellularNetwork *open_network(FileHandle *fh = NULL) = 0; + +#if MBED_CONF_CELLULAR_USE_SMS || defined(DOXYGEN_ONLY) + /** Create new CellularSMS interface. + * + * @param fh file handle used in communication to modem. This can be, for example, UART handle. If null, then the default + * file handle is used. + * @return New instance of interface CellularSMS. + */ + virtual CellularSMS *open_sms(FileHandle *fh = NULL) = 0; + + /** Closes the opened CellularSMS by deleting the CellularSMS instance. + */ + virtual void close_sms() = 0; + +#endif // MBED_CONF_CELLULAR_USE_SMS + + /** Create new CellularInformation interface. + * + * @param fh file handle used in communication to modem. This can be, for example, UART handle. If null, then the default + * file handle is used. + * @return New instance of interface CellularInformation. + */ + virtual CellularInformation *open_information(FileHandle *fh = NULL) = 0; + + /** Closes the opened CellularNetwork by deleting the CellularNetwork instance. + */ + virtual void close_network() = 0; + + /** Closes the opened CellularInformation by deleting the CellularInformation instance. + */ + virtual void close_information() = 0; + + /** Set the default response timeout. + * + * @remark CellularStateMachine timeouts for all states are also changed to `timeout`. + * + * @param timeout milliseconds to wait response from modem + */ + virtual void set_timeout(int timeout) = 0; + + +public: //Common functions + /** Stop the current operation. Operations: set_device_ready, set_sim_ready, register_to_network, attach_to_network * */ @@ -231,11 +384,6 @@ public: */ FileHandle &get_file_handle() const; - /** Get event queue that can be chained to main event queue. - * @return event queue - */ - virtual events::EventQueue *get_queue(); - /** Set the pin code for SIM card * * @param sim_pin PIN for the SIM card @@ -307,53 +455,6 @@ public: */ void attach(Callback status_cb); - /** Create new CellularNetwork interface. - * - * @param fh file handle used in communication to modem. This can be, for example, UART handle. If null, then the default - * file handle is used. - * @return New instance of interface CellularNetwork. - */ - virtual CellularNetwork *open_network(FileHandle *fh = NULL) = 0; - -#if MBED_CONF_CELLULAR_USE_SMS || defined(DOXYGEN_ONLY) - /** Create new CellularSMS interface. - * - * @param fh file handle used in communication to modem. This can be, for example, UART handle. If null, then the default - * file handle is used. - * @return New instance of interface CellularSMS. - */ - virtual CellularSMS *open_sms(FileHandle *fh = NULL) = 0; - - /** Closes the opened CellularSMS by deleting the CellularSMS instance. - */ - virtual void close_sms() = 0; - -#endif // MBED_CONF_CELLULAR_USE_SMS - - /** Create new CellularInformation interface. - * - * @param fh file handle used in communication to modem. This can be, for example, UART handle. If null, then the default - * file handle is used. - * @return New instance of interface CellularInformation. - */ - virtual CellularInformation *open_information(FileHandle *fh = NULL) = 0; - - /** Closes the opened CellularNetwork by deleting the CellularNetwork instance. - */ - virtual void close_network() = 0; - - /** Closes the opened CellularInformation by deleting the CellularInformation instance. - */ - virtual void close_information() = 0; - - /** Set the default response timeout. - * - * @remark CellularStateMachine timeouts for all states are also changed to `timeout`. - * - * @param timeout milliseconds to wait response from modem - */ - virtual void set_timeout(int timeout) = 0; - /** Set an array of timeouts to wait before CellularStateMachine retries after failure. * To disable retry behavior completely use `set_retry_timeout_array(NULL, 0)`. * CellularContext callback event `cell_callback_data_t.final_try` indicates true when all retries have failed. @@ -368,93 +469,7 @@ public: */ void set_retry_timeout_array(const uint16_t timeout[], int array_len); - /** Turn modem debug traces on - * - * @param on set true to enable debug traces - */ - virtual void modem_debug_on(bool on) = 0; - - /** Initialize cellular device must be called right after the module is ready. - * - * For example, when multiple cellular modules are supported in a single driver this function - * detects and adapts to an actual module at runtime. - * - * @remark CellularStateMachine calls soft_power_on and init repeatedly when starting to connect - * until the modem responds. - * - * @return NSAPI_ERROR_OK on success - * NSAPI_ERROR_NO_MEMORY on case of memory failure - * NSAPI_ERROR_UNSUPPORTED if current cellular module type is not detected - * NSAPI_ERROR_DEVICE_ERROR if model information could not be read - * - */ - virtual nsapi_error_t init() = 0; - - /** Shutdown cellular device to minimum functionality. - * - * Actual functionality is modem specific, for example UART may is not be responsive without - * explicit wakeup signal (such as RTS) after shutdown. - * - * @remark You must call shutdown before power off to prepare the modem and to quit cellular network. - * - * @return NSAPI_ERROR_OK on success - * NSAPI_ERROR_DEVICE_ERROR on failure - */ - virtual nsapi_error_t shutdown(); - - /** Check whether the device is ready to accept commands. - * - * @return NSAPI_ERROR_OK on success - * NSAPI_ERROR_DEVICE_ERROR on failure - */ - virtual nsapi_error_t is_ready() = 0; - - /** Set callback function to listen when device is ready. - * - * @param callback function to call on device ready, or NULL to remove callback. - */ - virtual void set_ready_cb(Callback callback) = 0; - - /** Set power save mode - * - * @remark See 3GPP TS 27.007 PSM for details - * - * @param periodic_time in seconds to enable power save, or zero to disable - * @param active_time in seconds to wait before entering power save mode - * - * @return NSAPI_ERROR_OK on success - * NSAPI_ERROR_DEVICE_ERROR on failure - */ - virtual nsapi_error_t set_power_save_mode(int periodic_time, int active_time = 0) = 0; - - /** Get the linked list of CellularContext instances - * - * @return Pointer to first item in linked list - */ - virtual CellularContext *get_context_list() const; - - /** Get the current ATHandler instance in use for debug purposes etc. - * Once use has been finished call to release_at_handler() has to be made - * - * @return Pointer to the ATHandler in use - */ - virtual ATHandler *get_at_handler() = 0; - - /** Release the ATHandler taken into use with get_at_handler() - * - * @param at_handler - * @return NSAPI_ERROR_OK on success, NSAPI_ERROR_PARAMETER on failure - */ - virtual nsapi_error_t release_at_handler(ATHandler *at_handler) = 0; - - /** Sets cellular modem to given baud rate - * - * @param baud_rate - * @return NSAPI_ERROR_OK on success, NSAPI_ERROR_DEVICE_ERROR on failure - */ - virtual nsapi_error_t set_baud_rate(int baud_rate) = 0; - -protected: +protected: //Common functions friend class AT_CellularNetwork; friend class AT_CellularContext; friend class CellularContext; @@ -468,13 +483,14 @@ protected: */ void get_retry_timeout_array(uint16_t *timeout, int &array_len) const; - /** Cellular callback to be attached to Network and CellularStateMachine classes. - * CellularContext calls this when in PPP mode to provide network changes. - * This method will broadcast to every interested classes: - * CellularContext (might be many) and CellularStateMachine if available. - */ - virtual void cellular_callback(nsapi_event_t ev, intptr_t ptr, CellularContext *ctx = NULL); +private: //Common functions + nsapi_error_t start_state_machine(CellularStateMachine::CellularState target_state); + + nsapi_error_t create_state_machine(); + void stm_callback(nsapi_event_t ev, intptr_t ptr); + +protected: //Member variables int _network_ref_count; #if MBED_CONF_CELLULAR_USE_SMS int _sms_ref_count; @@ -483,15 +499,15 @@ protected: FileHandle *_fh; events::EventQueue _queue; CellularStateMachine *_state_machine; -private: - nsapi_error_t start_state_machine(CellularStateMachine::CellularState target_state); - nsapi_error_t create_state_machine(); +private: //Member variables CellularNetwork *_nw; char _sim_pin[MAX_PIN_SIZE + 1]; char _plmn[MAX_PLMN_SIZE + 1]; PlatformMutex _mutex; Callback _status_cb; + + const intptr_t *_property_array; }; /** diff --git a/features/cellular/framework/AT/AT_CellularBase.cpp b/features/cellular/framework/AT/AT_CellularBase.cpp deleted file mode 100644 index 498116e708..0000000000 --- a/features/cellular/framework/AT/AT_CellularBase.cpp +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2017, Arm Limited and affiliates. - * 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 "AT_CellularBase.h" -#include "CellularLog.h" - -using namespace mbed; - -AT_CellularBase::AT_CellularBase(ATHandler &at) : _at(at) -{ -} - -ATHandler &AT_CellularBase::get_at_handler() -{ - return _at; -} - -device_err_t AT_CellularBase::get_device_error() const -{ - return _at.get_last_device_error(); -} - -const intptr_t *AT_CellularBase::_property_array = NULL; - -void AT_CellularBase::set_cellular_properties(const intptr_t *property_array) -{ - if (!property_array) { - tr_warning("trying to set an empty cellular property array"); - return; - } - - _property_array = property_array; -} - -intptr_t AT_CellularBase::get_property(CellularProperty key) -{ - if (_property_array) { - return _property_array[key]; - } else { - return 0; - } -} diff --git a/features/cellular/framework/AT/AT_CellularBase.h b/features/cellular/framework/AT/AT_CellularBase.h deleted file mode 100644 index c4448142a7..0000000000 --- a/features/cellular/framework/AT/AT_CellularBase.h +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright (c) 2017, Arm Limited and affiliates. - * 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. - */ -#ifndef AT_CELLULAR_BASE_H_ -#define AT_CELLULAR_BASE_H_ - -#include "ATHandler.h" - -namespace mbed { - -/** - * Class AT_CellularBase - * - * A base class for AT-classes. - */ -class AT_CellularBase { -public: - AT_CellularBase(ATHandler &at); - /** Getter for at handler. Common method for all AT-classes. - * - * @return reference to ATHandler - */ - ATHandler &get_at_handler(); - - /** Gets the device error that happened when using AT commands/responses. This is at error - * returned by the device. Returned CME/CMS errors can be found from 3gpp documents 27007 and 27005. - * - * @return at error (CME/CMS) while communicating with the device - */ - device_err_t get_device_error() const; - - /* Supported features by the modem - * - * NOTE! These are used as index to feature table, so the only allowed modification to this is appending - * to the end (just before PROPERTY_MAX). Do not modify any of the existing fields. - */ - enum CellularProperty { - PROPERTY_C_EREG, // AT_CellularNetwork::RegistrationMode. What support modem has for this registration type. - PROPERTY_C_GREG, // AT_CellularNetwork::RegistrationMode. What support modem has for this registration type. - PROPERTY_C_REG, // AT_CellularNetwork::RegistrationMode. What support modem has for this registration type. - PROPERTY_AT_CGSN_WITH_TYPE, // 0 = not supported, 1 = supported. AT+CGSN without type is likely always supported similar to AT+GSN. - PROPERTY_AT_CGDATA, // 0 = not supported, 1 = supported. Alternative is to support only ATD*99***# - PROPERTY_AT_CGAUTH, // 0 = not supported, 1 = supported. APN authentication AT commands supported - PROPERTY_AT_CNMI, // 0 = not supported, 1 = supported. New message (SMS) indication AT command - PROPERTY_AT_CSMP, // 0 = not supported, 1 = supported. Set text mode AT command - PROPERTY_AT_CMGF, // 0 = not supported, 1 = supported. Set preferred message format AT command - PROPERTY_AT_CSDH, // 0 = not supported, 1 = supported. Show text mode AT command - PROPERTY_IPV4_PDP_TYPE, // 0 = not supported, 1 = supported. Does modem support IPV4? - PROPERTY_IPV6_PDP_TYPE, // 0 = not supported, 1 = supported. Does modem support IPV6? - PROPERTY_IPV4V6_PDP_TYPE, // 0 = not supported, 1 = supported. Does modem support IPV4 and IPV6 simultaneously? - PROPERTY_NON_IP_PDP_TYPE, // 0 = not supported, 1 = supported. Does modem support Non-IP? - PROPERTY_AT_CGEREP, // 0 = not supported, 1 = supported. Does modem support AT command AT+CGEREP. - - PROPERTY_MAX - }; - - /** Cellular module need to define an array of cellular properties which defines module supported property values. - * - * @param property_array array of module properties - */ - static void set_cellular_properties(const intptr_t *property_array); - - /** Get value for the given key. - * - * @param key key for value to be fetched - * @return property value for the given key. Value type is defined in enum CellularProperty - */ - static intptr_t get_property(CellularProperty key); - -protected: - - static const intptr_t *_property_array; - - ATHandler &_at; -}; - -} // namespace mbed - -#endif /* AT_CELLULAR_BASE_H_ */ diff --git a/features/cellular/framework/AT/AT_CellularContext.cpp b/features/cellular/framework/AT/AT_CellularContext.cpp index 3651b9801f..c72ce6711a 100644 --- a/features/cellular/framework/AT/AT_CellularContext.cpp +++ b/features/cellular/framework/AT/AT_CellularContext.cpp @@ -36,19 +36,17 @@ #include "nsapi_ppp.h" #endif -#define USE_APN_LOOKUP (MBED_CONF_CELLULAR_USE_APN_LOOKUP || (NSAPI_PPP_AVAILABLE && MBED_CONF_PPP_CELL_IFACE_APN_LOOKUP)) - -#if USE_APN_LOOKUP +#if MBED_CONF_CELLULAR_USE_APN_LOOKUP #include "CellularInformation.h" #include "APN_db.h" -#endif //USE_APN_LOOKUP +#endif //MBED_CONF_CELLULAR_USE_APN_LOOKUP using namespace mbed_cellular_util; using namespace mbed; using namespace rtos; AT_CellularContext::AT_CellularContext(ATHandler &at, CellularDevice *device, const char *apn, bool cp_req, bool nonip_req) : - AT_CellularBase(at), _current_op(OP_INVALID), _fh(0), _cp_req(cp_req), _is_connected(false) + _current_op(OP_INVALID), _fh(0), _cp_req(cp_req), _is_connected(false), _at(at) { tr_info("New CellularContext %s (%p)", apn ? apn : "", this); _nonip_req = nonip_req; @@ -342,7 +340,7 @@ nsapi_error_t AT_CellularContext::do_user_authentication() { // if user has defined user name and password we need to call CGAUTH before activating or modifying context if (_pwd && _uname) { - if (!get_property(PROPERTY_AT_CGAUTH)) { + if (!get_device()->get_property(AT_CellularDevice::PROPERTY_AT_CGAUTH)) { return NSAPI_ERROR_UNSUPPORTED; } const bool stored_debug_state = _at.get_debug(); @@ -360,15 +358,15 @@ nsapi_error_t AT_CellularContext::do_user_authentication() return NSAPI_ERROR_OK; } -AT_CellularBase::CellularProperty AT_CellularContext::pdp_type_t_to_cellular_property(pdp_type_t pdp_type) +AT_CellularDevice::CellularProperty AT_CellularContext::pdp_type_t_to_cellular_property(pdp_type_t pdp_type) { - AT_CellularBase::CellularProperty prop = PROPERTY_IPV4_PDP_TYPE; + AT_CellularDevice::CellularProperty prop = AT_CellularDevice::PROPERTY_IPV4_PDP_TYPE; if (pdp_type == IPV6_PDP_TYPE) { - prop = PROPERTY_IPV6_PDP_TYPE; + prop = AT_CellularDevice::PROPERTY_IPV6_PDP_TYPE; } else if (pdp_type == IPV4V6_PDP_TYPE) { - prop = PROPERTY_IPV4V6_PDP_TYPE; + prop = AT_CellularDevice::PROPERTY_IPV4V6_PDP_TYPE; } else if (pdp_type == NON_IP_PDP_TYPE) { - prop = PROPERTY_NON_IP_PDP_TYPE; + prop = AT_CellularDevice::PROPERTY_NON_IP_PDP_TYPE; } return prop; @@ -401,8 +399,9 @@ bool AT_CellularContext::get_context() pdp_type_t pdp_type = string_to_pdp_type(pdp_type_from_context); // Accept exact matching PDP context type or dual PDP context for modems that support both IPv4 and IPv6 stacks - if (get_property(pdp_type_t_to_cellular_property(pdp_type)) || - ((pdp_type == IPV4V6_PDP_TYPE && (get_property(PROPERTY_IPV4_PDP_TYPE) && get_property(PROPERTY_IPV6_PDP_TYPE))) && !_nonip_req)) { + if (get_device()->get_property(pdp_type_t_to_cellular_property(pdp_type)) || + ((pdp_type == IPV4V6_PDP_TYPE && (get_device()->get_property(AT_CellularDevice::PROPERTY_IPV4_PDP_TYPE) && + get_device()->get_property(AT_CellularDevice::PROPERTY_IPV6_PDP_TYPE))) && !_nonip_req)) { _pdp_type = pdp_type; set_cid(cid); } @@ -432,16 +431,18 @@ bool AT_CellularContext::set_new_context(int cid) char pdp_type_str[8 + 1] = {0}; pdp_type_t pdp_type = IPV4_PDP_TYPE; - if (_nonip_req && _cp_in_use && get_property(PROPERTY_NON_IP_PDP_TYPE)) { + if (_nonip_req && _cp_in_use && get_device()->get_property(AT_CellularDevice::PROPERTY_NON_IP_PDP_TYPE)) { strncpy(pdp_type_str, "Non-IP", sizeof(pdp_type_str)); pdp_type = NON_IP_PDP_TYPE; - } else if (get_property(PROPERTY_IPV4V6_PDP_TYPE) || (get_property(PROPERTY_IPV4_PDP_TYPE) && get_property(PROPERTY_IPV6_PDP_TYPE))) { + } else if (get_device()->get_property(AT_CellularDevice::PROPERTY_IPV4V6_PDP_TYPE) || + (get_device()->get_property(AT_CellularDevice::PROPERTY_IPV4_PDP_TYPE) && + get_device()->get_property(AT_CellularDevice::PROPERTY_IPV6_PDP_TYPE))) { strncpy(pdp_type_str, "IPV4V6", sizeof(pdp_type_str)); pdp_type = IPV4V6_PDP_TYPE; - } else if (get_property(PROPERTY_IPV6_PDP_TYPE)) { + } else if (get_device()->get_property(AT_CellularDevice::PROPERTY_IPV6_PDP_TYPE)) { strncpy(pdp_type_str, "IPV6", sizeof(pdp_type_str)); pdp_type = IPV6_PDP_TYPE; - } else if (get_property(PROPERTY_IPV4_PDP_TYPE)) { + } else if (get_device()->get_property(AT_CellularDevice::PROPERTY_IPV4_PDP_TYPE)) { strncpy(pdp_type_str, "IP", sizeof(pdp_type_str)); pdp_type = IPV4_PDP_TYPE; } else { @@ -615,7 +616,7 @@ nsapi_error_t AT_CellularContext::open_data_channel() } tr_info("CellularContext PPP connect"); - if (get_property(PROPERTY_AT_CGDATA)) { + if (get_device()->get_property(AT_CellularDevice::PROPERTY_AT_CGDATA)) { _at.cmd_start_stop("+CGDATA", "=\"PPP\",", "%d", _cid); } else { MBED_ASSERT(_cid >= 0 && _cid <= 99); @@ -914,7 +915,7 @@ void AT_CellularContext::cellular_callback(nsapi_event_t ev, intptr_t ptr) _semaphore.release(); } } -#if USE_APN_LOOKUP +#if MBED_CONF_CELLULAR_USE_APN_LOOKUP if (st == CellularSIMStatusChanged && data->status_data == CellularDevice::SimStateReady && _cb_data.error == NSAPI_ERROR_OK) { if (!_apn) { @@ -943,7 +944,7 @@ void AT_CellularContext::cellular_callback(nsapi_event_t ev, intptr_t ptr) _device->close_information(); } } -#endif // USE_APN_LOOKUP +#endif // MBED_CONF_CELLULAR_USE_APN_LOOKUP if (!_nw && st == CellularDeviceReady && _cb_data.error == NSAPI_ERROR_OK) { _nw = _device->open_network(_fh); @@ -1093,3 +1094,8 @@ void AT_CellularContext::set_cid(int cid) static_cast(_stack)->set_cid(_cid); } } + +ATHandler &AT_CellularContext::get_at_handler() +{ + return _at; +} diff --git a/features/cellular/framework/AT/AT_CellularContext.h b/features/cellular/framework/AT/AT_CellularContext.h index 8825884ac2..b19c5f3849 100644 --- a/features/cellular/framework/AT/AT_CellularContext.h +++ b/features/cellular/framework/AT/AT_CellularContext.h @@ -18,21 +18,20 @@ #define AT_CELLULARCONTEXT_H_ #include "CellularContext.h" -#include "AT_CellularBase.h" +#include "ATHandler.h" #include "Semaphore.h" +#include "AT_CellularDevice.h" const int MAX_APN_LENGTH = 63 + 1; namespace mbed { -class AT_CellularDevice; - -class AT_CellularContext : public CellularContext, public AT_CellularBase { +class AT_CellularContext : public CellularContext { public: AT_CellularContext(ATHandler &at, CellularDevice *device, const char *apn = 0, bool cp_req = false, bool nonip_req = false); virtual ~AT_CellularContext(); -// from CellularBase/NetworkInterface +// from CellularInterface/NetworkInterface virtual nsapi_error_t set_blocking(bool blocking); virtual NetworkStack *get_stack(); virtual nsapi_error_t get_ip_address(SocketAddress *address); @@ -43,7 +42,7 @@ public: virtual nsapi_error_t disconnect(); virtual nsapi_connection_status_t get_connection_status() const; virtual bool is_connected(); - // from CellularBase + // from CellularInterface virtual void set_plmn(const char *plmn); virtual void set_sim_pin(const char *sim_pin); virtual nsapi_error_t connect(const char *sim_pin, const char *apn = 0, const char *uname = 0, @@ -72,6 +71,8 @@ public: virtual ControlPlane_netif *get_cp_netif(); AT_CellularDevice *get_device() const; + + ATHandler &get_at_handler(); protected: virtual void cellular_callback(nsapi_event_t ev, intptr_t ptr); @@ -104,7 +105,7 @@ protected: virtual void set_disconnect(); virtual void deactivate_context(); virtual bool get_context(); - AT_CellularBase::CellularProperty pdp_type_t_to_cellular_property(pdp_type_t pdp_type); + AT_CellularDevice::CellularProperty pdp_type_t_to_cellular_property(pdp_type_t pdp_type); bool set_new_context(int cid); private: #if NSAPI_PPP_AVAILABLE @@ -134,6 +135,9 @@ protected: // flag indicating if CP was requested to be setup bool _cp_req; bool _is_connected; + +protected: + ATHandler &_at; }; } // namespace mbed diff --git a/features/cellular/framework/AT/AT_CellularDevice.cpp b/features/cellular/framework/AT/AT_CellularDevice.cpp index 32003a947f..2aed8c7042 100644 --- a/features/cellular/framework/AT/AT_CellularDevice.cpp +++ b/features/cellular/framework/AT/AT_CellularDevice.cpp @@ -43,7 +43,7 @@ AT_CellularDevice::AT_CellularDevice(FileHandle *fh) : CellularDevice(fh), _sms(0), #endif // MBED_CONF_CELLULAR_USE_SMS _network(0), _information(0), _context_list(0), _default_timeout(DEFAULT_AT_TIMEOUT), - _modem_debug_on(false) + _modem_debug_on(false), _property_array(NULL) { MBED_ASSERT(fh); _at = get_at_handler(fh); @@ -52,7 +52,7 @@ AT_CellularDevice::AT_CellularDevice(FileHandle *fh) : CellularDevice(fh), AT_CellularDevice::~AT_CellularDevice() { - if (AT_CellularBase::get_property(AT_CellularBase::PROPERTY_AT_CGEREP)) { + if (get_property(PROPERTY_AT_CGEREP)) { _at->set_urc_handler("+CGEV: NW DEACT", 0); _at->set_urc_handler("+CGEV: ME DEACT", 0); _at->set_urc_handler("+CGEV: NW PDN D", 0); @@ -93,7 +93,7 @@ void AT_CellularDevice::set_at_urcs_impl() void AT_CellularDevice::set_at_urcs() { - if (AT_CellularBase::get_property(AT_CellularBase::PROPERTY_AT_CGEREP)) { + if (get_property(PROPERTY_AT_CGEREP)) { _at->set_urc_handler("+CGEV: NW DEACT", callback(this, &AT_CellularDevice::urc_nw_deact)); _at->set_urc_handler("+CGEV: ME DEACT", callback(this, &AT_CellularDevice::urc_nw_deact)); _at->set_urc_handler("+CGEV: NW PDN D", callback(this, &AT_CellularDevice::urc_pdn_deact)); @@ -370,7 +370,7 @@ CellularInformation *AT_CellularDevice::open_information(FileHandle *fh) AT_CellularNetwork *AT_CellularDevice::open_network_impl(ATHandler &at) { - return new AT_CellularNetwork(at); + return new AT_CellularNetwork(at, *this); } #if MBED_CONF_CELLULAR_USE_SMS @@ -399,13 +399,13 @@ void AT_CellularDevice::close_sms() AT_CellularSMS *AT_CellularDevice::open_sms_impl(ATHandler &at) { - return new AT_CellularSMS(at); + return new AT_CellularSMS(at, *this); } #endif // MBED_CONF_CELLULAR_USE_SMS AT_CellularInformation *AT_CellularDevice::open_information_impl(ATHandler &at) { - return new AT_CellularInformation(at); + return new AT_CellularInformation(at, *this); } void AT_CellularDevice::close_network() @@ -671,3 +671,22 @@ nsapi_error_t AT_CellularDevice::set_baud_rate_impl(int baud_rate) { return _at->at_cmd_discard("+IPR", "=", "%d", baud_rate); } + +void AT_CellularDevice::set_cellular_properties(const intptr_t *property_array) +{ + if (!property_array) { + tr_warning("trying to set an empty cellular property array"); + return; + } + + _property_array = property_array; +} + +intptr_t AT_CellularDevice::get_property(CellularProperty key) +{ + if (_property_array) { + return _property_array[key]; + } else { + return 0; + } +} diff --git a/features/cellular/framework/AT/AT_CellularDevice.h b/features/cellular/framework/AT/AT_CellularDevice.h index 2de495c8db..5c028a141b 100755 --- a/features/cellular/framework/AT/AT_CellularDevice.h +++ b/features/cellular/framework/AT/AT_CellularDevice.h @@ -35,6 +35,32 @@ class AT_CellularContext; * Deleting/Closing of opened interfaces can be done only through this class. */ class AT_CellularDevice : public CellularDevice { +public: + /* Supported features by the modem + * + * NOTE! These are used as index to feature table, so the only allowed modification to this is appending + * to the end (just before PROPERTY_MAX). Do not modify any of the existing fields. + */ + enum CellularProperty { + PROPERTY_C_EREG, // AT_CellularNetwork::RegistrationMode. What support modem has for this registration type. + PROPERTY_C_GREG, // AT_CellularNetwork::RegistrationMode. What support modem has for this registration type. + PROPERTY_C_REG, // AT_CellularNetwork::RegistrationMode. What support modem has for this registration type. + PROPERTY_AT_CGSN_WITH_TYPE, // 0 = not supported, 1 = supported. AT+CGSN without type is likely always supported similar to AT+GSN. + PROPERTY_AT_CGDATA, // 0 = not supported, 1 = supported. Alternative is to support only ATD*99***# + PROPERTY_AT_CGAUTH, // 0 = not supported, 1 = supported. APN authentication AT commands supported + PROPERTY_AT_CNMI, // 0 = not supported, 1 = supported. New message (SMS) indication AT command + PROPERTY_AT_CSMP, // 0 = not supported, 1 = supported. Set text mode AT command + PROPERTY_AT_CMGF, // 0 = not supported, 1 = supported. Set preferred message format AT command + PROPERTY_AT_CSDH, // 0 = not supported, 1 = supported. Show text mode AT command + PROPERTY_IPV4_PDP_TYPE, // 0 = not supported, 1 = supported. Does modem support IPV4? + PROPERTY_IPV6_PDP_TYPE, // 0 = not supported, 1 = supported. Does modem support IPV6? + PROPERTY_IPV4V6_PDP_TYPE, // 0 = not supported, 1 = supported. Does modem support IPV4 and IPV6 simultaneously? + PROPERTY_NON_IP_PDP_TYPE, // 0 = not supported, 1 = supported. Does modem support Non-IP? + PROPERTY_AT_CGEREP, // 0 = not supported, 1 = supported. Does modem support AT command AT+CGEREP. + + PROPERTY_MAX + }; + public: AT_CellularDevice(FileHandle *fh); virtual ~AT_CellularDevice(); @@ -142,6 +168,21 @@ public: #endif // MBED_CONF_CELLULAR_USE_SMS +public: + /** Get value for the given key. + * + * @param key key for value to be fetched + * @return property value for the given key. Value type is defined in enum CellularProperty + */ + intptr_t get_property(CellularProperty key); + + /** Cellular module need to define an array of cellular properties which defines module supported property values. + * + * @param property_array array of module properties + */ + void set_cellular_properties(const intptr_t *property_array); + +public: //Member variables AT_CellularNetwork *_network; AT_CellularInformation *_information; @@ -165,6 +206,9 @@ protected: private: void urc_nw_deact(); void urc_pdn_deact(); + +private: + const intptr_t *_property_array; }; } // namespace mbed diff --git a/features/cellular/framework/AT/AT_CellularInformation.cpp b/features/cellular/framework/AT/AT_CellularInformation.cpp index d7b182944f..4ee0953e19 100644 --- a/features/cellular/framework/AT/AT_CellularInformation.cpp +++ b/features/cellular/framework/AT/AT_CellularInformation.cpp @@ -17,11 +17,12 @@ #include +#include "AT_CellularDevice.h" #include "AT_CellularInformation.h" using namespace mbed; -AT_CellularInformation::AT_CellularInformation(ATHandler &at) : AT_CellularBase(at) +AT_CellularInformation::AT_CellularInformation(ATHandler &at, AT_CellularDevice &device) : _at(at), _device(device) { } @@ -54,7 +55,7 @@ nsapi_error_t AT_CellularInformation::get_serial_number(char *buf, size_t buf_si return get_info("AT+CGSN", buf, buf_size); } - if (!get_property(PROPERTY_AT_CGSN_WITH_TYPE)) { + if (!_device.get_property(AT_CellularDevice::PROPERTY_AT_CGSN_WITH_TYPE)) { return NSAPI_ERROR_UNSUPPORTED; } @@ -97,3 +98,8 @@ nsapi_error_t AT_CellularInformation::get_iccid(char *buf, size_t buf_size) } return _at.at_cmd_str("+CCID", "?", buf, buf_size); } + +ATHandler &AT_CellularInformation::get_at_handler() +{ + return _at; +} diff --git a/features/cellular/framework/AT/AT_CellularInformation.h b/features/cellular/framework/AT/AT_CellularInformation.h index 6e7e6f8cad..36ad047e9a 100644 --- a/features/cellular/framework/AT/AT_CellularInformation.h +++ b/features/cellular/framework/AT/AT_CellularInformation.h @@ -19,7 +19,8 @@ #define AT_CELLULAR_INFORMATION_H_ #include "CellularInformation.h" -#include "AT_CellularBase.h" +#include "ATHandler.h" +#include "AT_CellularDevice.h" namespace mbed { @@ -28,9 +29,10 @@ namespace mbed { * * Class that provides information about cellular device. */ -class AT_CellularInformation : public CellularInformation, public AT_CellularBase { +class AT_CellularInformation : public CellularInformation { public: - AT_CellularInformation(ATHandler &atHandler); + AT_CellularInformation(ATHandler &at, AT_CellularDevice &device); + virtual ~AT_CellularInformation(); public: @@ -45,6 +47,8 @@ public: virtual nsapi_error_t get_imsi(char *imsi, size_t buf_size); virtual nsapi_error_t get_iccid(char *buf, size_t buf_size); + + ATHandler &get_at_handler(); protected: /** Request information text from cellular device * @@ -54,6 +58,11 @@ protected: * @return on success read character count, on failure negative error code */ nsapi_error_t get_info(const char *cmd, char *buf, size_t buf_size); + +protected: + ATHandler &_at; + + AT_CellularDevice &_device; }; } // namespace mbed diff --git a/features/cellular/framework/AT/AT_CellularNetwork.cpp b/features/cellular/framework/AT/AT_CellularNetwork.cpp index 4e35dcb4fa..bd3ef20f2e 100644 --- a/features/cellular/framework/AT/AT_CellularNetwork.cpp +++ b/features/cellular/framework/AT/AT_CellularNetwork.cpp @@ -20,6 +20,7 @@ #include "CellularUtil.h" #include "CellularLog.h" #include "CellularCommon.h" +#include "AT_CellularDevice.h" using namespace std; using namespace mbed_cellular_util; @@ -70,22 +71,22 @@ static const char *const rat_str[AT_CellularNetwork::RAT_MAX] = { #endif -AT_CellularNetwork::AT_CellularNetwork(ATHandler &atHandler) : AT_CellularBase(atHandler), +AT_CellularNetwork::AT_CellularNetwork(ATHandler &atHandler, AT_CellularDevice &device) : _connection_status_cb(NULL), _ciotopt_network_support_cb(NULL), _op_act(RAT_UNKNOWN), - _connect_status(NSAPI_STATUS_DISCONNECTED), _supported_network_opt(CIOT_OPT_MAX) + _connect_status(NSAPI_STATUS_DISCONNECTED), _supported_network_opt(CIOT_OPT_MAX), + _at(atHandler), _device(device) { - _urc_funcs[C_EREG] = callback(this, &AT_CellularNetwork::urc_cereg); _urc_funcs[C_GREG] = callback(this, &AT_CellularNetwork::urc_cgreg); _urc_funcs[C_REG] = callback(this, &AT_CellularNetwork::urc_creg); for (int type = 0; type < CellularNetwork::C_MAX; type++) { - if (get_property((AT_CellularBase::CellularProperty)type) != RegistrationModeDisable) { + if (_device.get_property((AT_CellularDevice::CellularProperty)type) != RegistrationModeDisable) { _at.set_urc_handler(at_reg[type].urc_prefix, _urc_funcs[type]); } } - if (get_property(AT_CellularBase::PROPERTY_AT_CGEREP)) { + if (_device.get_property(AT_CellularDevice::PROPERTY_AT_CGEREP)) { // additional urc to get better disconnect info for application. Not critical. _at.set_urc_handler("+CGEV: NW DET", callback(this, &AT_CellularNetwork::urc_cgev)); _at.set_urc_handler("+CGEV: ME DET", callback(this, &AT_CellularNetwork::urc_cgev)); @@ -99,12 +100,12 @@ AT_CellularNetwork::~AT_CellularNetwork() { (void)set_packet_domain_event_reporting(false); for (int type = 0; type < CellularNetwork::C_MAX; type++) { - if (get_property((AT_CellularBase::CellularProperty)type) != RegistrationModeDisable) { + if (_device.get_property((AT_CellularDevice::CellularProperty)type) != RegistrationModeDisable) { _at.set_urc_handler(at_reg[type].urc_prefix, 0); } } - if (get_property(AT_CellularBase::PROPERTY_AT_CGEREP)) { + if (_device.get_property(AT_CellularDevice::PROPERTY_AT_CGEREP)) { _at.set_urc_handler("+CGEV: ME DET", 0); _at.set_urc_handler("+CGEV: NW DET", 0); } @@ -185,7 +186,7 @@ nsapi_error_t AT_CellularNetwork::set_registration_urc(RegistrationType type, bo int index = (int)type; MBED_ASSERT(index >= 0 && index < C_MAX); - RegistrationMode mode = (RegistrationMode)get_property((AT_CellularBase::CellularProperty)type); + RegistrationMode mode = (RegistrationMode)_device.get_property((AT_CellularDevice::CellularProperty)type); if (mode == RegistrationModeDisable) { return NSAPI_ERROR_UNSUPPORTED; } else { @@ -544,7 +545,7 @@ nsapi_error_t AT_CellularNetwork::get_registration_params(RegistrationType type, int i = (int)type; MBED_ASSERT(i >= 0 && i < C_MAX); - if (!get_property((AT_CellularBase::CellularProperty)at_reg[i].type)) { + if (!_device.get_property((AT_CellularDevice::CellularProperty)at_reg[i].type)) { return NSAPI_ERROR_UNSUPPORTED; } @@ -625,7 +626,7 @@ nsapi_error_t AT_CellularNetwork::set_receive_period(int mode, EDRXAccessTechnol nsapi_error_t AT_CellularNetwork::set_packet_domain_event_reporting(bool on) { - if (!get_property(AT_CellularBase::PROPERTY_AT_CGEREP)) { + if (!_device.get_property(AT_CellularDevice::PROPERTY_AT_CGEREP)) { return NSAPI_ERROR_UNSUPPORTED; } @@ -683,10 +684,10 @@ nsapi_error_t AT_CellularNetwork::clear() } #ifdef MBED_CONF_NSAPI_DEFAULT_CELLULAR_APN char pdp_type_str[sizeof("IPV4V6")]; - if (get_property(PROPERTY_IPV4V6_PDP_TYPE) || - (get_property(PROPERTY_IPV4_PDP_TYPE) && get_property(PROPERTY_IPV6_PDP_TYPE))) { + if (_device.get_property(AT_CellularDevice::PROPERTY_IPV4V6_PDP_TYPE) || + (_device.get_property(AT_CellularDevice::PROPERTY_IPV4_PDP_TYPE) && _device.get_property(AT_CellularDevice::PROPERTY_IPV6_PDP_TYPE))) { strcpy(pdp_type_str, "IPV4V6"); - } else if (get_property(PROPERTY_IPV6_PDP_TYPE)) { + } else if (_device.get_property(AT_CellularDevice::PROPERTY_IPV6_PDP_TYPE)) { strcpy(pdp_type_str, "IPV6"); } else { strcpy(pdp_type_str, "IP"); @@ -697,3 +698,8 @@ nsapi_error_t AT_CellularNetwork::clear() return _at.unlock_return_error(); } + +ATHandler &AT_CellularNetwork::get_at_handler() +{ + return _at; +} diff --git a/features/cellular/framework/AT/AT_CellularNetwork.h b/features/cellular/framework/AT/AT_CellularNetwork.h index fa265bcd91..aa2f61ca34 100644 --- a/features/cellular/framework/AT/AT_CellularNetwork.h +++ b/features/cellular/framework/AT/AT_CellularNetwork.h @@ -19,7 +19,8 @@ #define AT_CELLULAR_NETWORK_H_ #include "CellularNetwork.h" -#include "AT_CellularBase.h" +#include "ATHandler.h" +#include "AT_CellularDevice.h" namespace mbed { @@ -34,11 +35,11 @@ namespace mbed { * * Class for attaching to a network and getting information from it. */ -class AT_CellularNetwork : public CellularNetwork, public AT_CellularBase { +class AT_CellularNetwork : public CellularNetwork { public: - AT_CellularNetwork(ATHandler &atHandler); + AT_CellularNetwork(ATHandler &atHandler, AT_CellularDevice &device); virtual ~AT_CellularNetwork(); // declare friend so it can access stack friend class AT_CellularDevice; @@ -96,6 +97,9 @@ public: // CellularNetwork virtual nsapi_error_t set_packet_domain_event_reporting(bool on); +public: + ATHandler &get_at_handler(); + protected: /** Sets access technology to be scanned. Modem specific implementation. @@ -145,6 +149,11 @@ protected: registration_params_t _reg_params; mbed::Callback _urc_funcs[C_MAX]; + +protected: + ATHandler &_at; + + AT_CellularDevice &_device; }; } // namespace mbed diff --git a/features/cellular/framework/AT/AT_CellularSMS.cpp b/features/cellular/framework/AT/AT_CellularSMS.cpp index a0ab72afcb..af526013ab 100644 --- a/features/cellular/framework/AT/AT_CellularSMS.cpp +++ b/features/cellular/framework/AT/AT_CellularSMS.cpp @@ -177,8 +177,9 @@ static const unsigned char gsm_to_ascii[] = { const int GSM_TO_ASCII_TABLE_SIZE = sizeof(gsm_to_ascii) / sizeof(gsm_to_ascii[0]); -AT_CellularSMS::AT_CellularSMS(ATHandler &at) : AT_CellularBase(at), _cb(0), _mode(CellularSMSMmodeText), - _use_8bit_encoding(false), _sim_wait_time(0), _sms_message_ref_number(1), _sms_info(NULL) +AT_CellularSMS::AT_CellularSMS(ATHandler &at, AT_CellularDevice &device) : _cb(0), _mode(CellularSMSMmodeText), + _use_8bit_encoding(false), _sim_wait_time(0), _sms_message_ref_number(1), + _sms_info(NULL), _at(at), _device(device) { } @@ -213,7 +214,7 @@ void AT_CellularSMS::cmti_urc() nsapi_error_t AT_CellularSMS::set_cnmi() { - if (!get_property(PROPERTY_AT_CNMI)) { + if (!_device.get_property(AT_CellularDevice::PROPERTY_AT_CNMI)) { return NSAPI_ERROR_UNSUPPORTED; } @@ -222,7 +223,7 @@ nsapi_error_t AT_CellularSMS::set_cnmi() nsapi_error_t AT_CellularSMS::set_cmgf(int msg_format) { - if (!get_property(PROPERTY_AT_CMGF)) { + if (!_device.get_property(AT_CellularDevice::PROPERTY_AT_CMGF)) { return NSAPI_ERROR_UNSUPPORTED; } @@ -231,7 +232,7 @@ nsapi_error_t AT_CellularSMS::set_cmgf(int msg_format) nsapi_error_t AT_CellularSMS::set_csmp(int fo, int vp, int pid, int dcs) { - if (!get_property(PROPERTY_AT_CSMP)) { + if (!_device.get_property(AT_CellularDevice::PROPERTY_AT_CSMP)) { return NSAPI_ERROR_UNSUPPORTED; } @@ -240,7 +241,7 @@ nsapi_error_t AT_CellularSMS::set_csmp(int fo, int vp, int pid, int dcs) nsapi_error_t AT_CellularSMS::set_csdh(int show_header) { - if (!get_property(PROPERTY_AT_CSDH)) { + if (!_device.get_property(AT_CellularDevice::PROPERTY_AT_CSDH)) { return NSAPI_ERROR_UNSUPPORTED; } @@ -1250,4 +1251,10 @@ uint16_t AT_CellularSMS::unpack_7_bit_gsm_to_str(const char *str, int len, char return decodedCount; } + +ATHandler &AT_CellularSMS::get_at_handler() +{ + return _at; +} + #endif //MBED_CONF_CELLULAR_USE_SMS diff --git a/features/cellular/framework/AT/AT_CellularSMS.h b/features/cellular/framework/AT/AT_CellularSMS.h index 0e8d100ffd..98191bc630 100644 --- a/features/cellular/framework/AT/AT_CellularSMS.h +++ b/features/cellular/framework/AT/AT_CellularSMS.h @@ -21,8 +21,9 @@ #if MBED_CONF_CELLULAR_USE_SMS #include "CellularSMS.h" -#include "AT_CellularBase.h" +#include "ATHandler.h" #include "Callback.h" +#include "AT_CellularDevice.h" #include namespace mbed { @@ -32,10 +33,10 @@ namespace mbed { * * Class for SMS sending, reading and deleting. */ -class AT_CellularSMS: public CellularSMS, public AT_CellularBase { +class AT_CellularSMS: public CellularSMS { public: - AT_CellularSMS(ATHandler &atHandler); + AT_CellularSMS(ATHandler &atHandler, AT_CellularDevice &device); virtual ~AT_CellularSMS(); public: @@ -61,6 +62,9 @@ public: virtual void set_extra_sim_wait_time(int sim_wait_time); +public: + ATHandler &get_at_handler(); + private: struct sms_info_t { @@ -165,6 +169,11 @@ private: */ uint16_t unpack_7_bit_gsm_to_str(const char *str, int len, char *buf, int padding_bits, int msg_len); + +private: + ATHandler &_at; + + AT_CellularDevice &_device; }; } // namespace mbed diff --git a/features/cellular/framework/AT/AT_CellularStack.cpp b/features/cellular/framework/AT/AT_CellularStack.cpp index 6d444fd24e..bfa502f86d 100644 --- a/features/cellular/framework/AT/AT_CellularStack.cpp +++ b/features/cellular/framework/AT/AT_CellularStack.cpp @@ -19,11 +19,14 @@ #include "CellularUtil.h" #include "CellularLog.h" #include "ThisThread.h" +#include "AT_CellularDevice.h" using namespace mbed_cellular_util; using namespace mbed; -AT_CellularStack::AT_CellularStack(ATHandler &at, int cid, nsapi_ip_stack_t stack_type) : AT_CellularBase(at), _socket(NULL), _socket_count(0), _cid(cid), _stack_type(stack_type), _ip_ver_sendto(NSAPI_UNSPEC) +AT_CellularStack::AT_CellularStack(ATHandler &at, int cid, nsapi_ip_stack_t stack_type, AT_CellularDevice &device) : + _socket(NULL), _socket_count(0), _cid(cid), + _stack_type(stack_type), _ip_ver_sendto(NSAPI_UNSPEC), _at(at), _device(device) { memset(_ip, 0, PDP_IPV6_SIZE); } @@ -79,7 +82,7 @@ nsapi_error_t AT_CellularStack::get_ip_address(SocketAddress *address) // Try to look for second address ONLY if modem has support for dual stack(can handle both IPv4 and IPv6 simultaneously). // Otherwise assumption is that second address is not reliable, even if network provides one. - if ((get_property(PROPERTY_IPV4V6_PDP_TYPE) && (_at.read_string(_ip, PDP_IPV6_SIZE) != -1))) { + if ((_device.get_property(AT_CellularDevice::PROPERTY_IPV4V6_PDP_TYPE) && (_at.read_string(_ip, PDP_IPV6_SIZE) != -1))) { convert_ipv6(_ip); address->set_ip_address(_ip); ipv6 = (address->get_ip_version() == NSAPI_IPv6); @@ -122,7 +125,7 @@ const char *AT_CellularStack::get_ip_address() // Try to look for second address ONLY if modem has support for dual stack(can handle both IPv4 and IPv6 simultaneously). // Otherwise assumption is that second address is not reliable, even if network provides one. - if ((get_property(PROPERTY_IPV4V6_PDP_TYPE) && (_at.read_string(_ip, PDP_IPV6_SIZE) != -1))) { + if ((_device.get_property(AT_CellularDevice::PROPERTY_IPV4V6_PDP_TYPE) && (_at.read_string(_ip, PDP_IPV6_SIZE) != -1))) { convert_ipv6(_ip); address.set_ip_address(_ip); ipv6 = (address.get_ip_version() == NSAPI_IPv6); diff --git a/features/cellular/framework/AT/AT_CellularStack.h b/features/cellular/framework/AT/AT_CellularStack.h index 7b706d5275..8aef39a143 100644 --- a/features/cellular/framework/AT/AT_CellularStack.h +++ b/features/cellular/framework/AT/AT_CellularStack.h @@ -18,9 +18,10 @@ #ifndef AT_CELLULAR_STACK_H_ #define AT_CELLULAR_STACK_H_ -#include "AT_CellularBase.h" +#include "ATHandler.h" #include "NetworkStack.h" #include "PlatformMutex.h" +#include "AT_CellularDevice.h" namespace mbed { @@ -35,10 +36,10 @@ namespace mbed { * * Implements NetworkStack and introduces interface for modem specific stack implementations. */ -class AT_CellularStack : public NetworkStack, public AT_CellularBase { +class AT_CellularStack : public NetworkStack { public: - AT_CellularStack(ATHandler &at, int cid, nsapi_ip_stack_t stack_type); + AT_CellularStack(ATHandler &at, int cid, nsapi_ip_stack_t stack_type, AT_CellularDevice &device); virtual ~AT_CellularStack(); public: // NetworkStack @@ -232,6 +233,11 @@ private: // mutex for write/read to a _socket array, needed when multiple threads may open sockets simultaneously PlatformMutex _socket_mutex; + +protected: + ATHandler &_at; + + AT_CellularDevice &_device; }; } // namespace mbed diff --git a/features/cellular/framework/AT/AT_ControlPlane_netif.cpp b/features/cellular/framework/AT/AT_ControlPlane_netif.cpp index 882c5d2d8e..cd1f493617 100644 --- a/features/cellular/framework/AT/AT_ControlPlane_netif.cpp +++ b/features/cellular/framework/AT/AT_ControlPlane_netif.cpp @@ -3,8 +3,8 @@ namespace mbed { -AT_ControlPlane_netif::AT_ControlPlane_netif(ATHandler &at, int cid) : AT_CellularBase(at), - _cid(cid), _cb(NULL), _data(NULL), _recv_len(0) +AT_ControlPlane_netif::AT_ControlPlane_netif(ATHandler &at, int cid) : + _cid(cid), _cb(NULL), _data(NULL), _recv_len(0), _at(at) { _at.set_urc_handler("+CRTDCP:", mbed::Callback(this, &AT_ControlPlane_netif::urc_cp_recv)); } diff --git a/features/cellular/framework/AT/AT_ControlPlane_netif.h b/features/cellular/framework/AT/AT_ControlPlane_netif.h index 5e9044e0fc..eaf0eb30fd 100644 --- a/features/cellular/framework/AT/AT_ControlPlane_netif.h +++ b/features/cellular/framework/AT/AT_ControlPlane_netif.h @@ -1,10 +1,9 @@ #include "ControlPlane_netif.h" #include "ATHandler.h" -#include "AT_CellularBase.h" namespace mbed { -class AT_ControlPlane_netif: public ControlPlane_netif, public AT_CellularBase { +class AT_ControlPlane_netif: public ControlPlane_netif { public: AT_ControlPlane_netif(ATHandler &at, int cid); virtual ~AT_ControlPlane_netif(); @@ -37,6 +36,9 @@ private: size_t _recv_len; // Called on receiving URC: +CRTDCP void urc_cp_recv(); + +protected: + ATHandler &_at; }; } //mbed namespace diff --git a/features/cellular/framework/device/CellularDevice.cpp b/features/cellular/framework/device/CellularDevice.cpp index b61f95e37d..1bccde4d67 100644 --- a/features/cellular/framework/device/CellularDevice.cpp +++ b/features/cellular/framework/device/CellularDevice.cpp @@ -37,7 +37,8 @@ CellularDevice::CellularDevice(FileHandle *fh) : _network_ref_count(0), #if MBED_CONF_CELLULAR_USE_SMS _sms_ref_count(0), #endif //MBED_CONF_CELLULAR_USE_SMS - _info_ref_count(0), _fh(fh), _queue(10 * EVENTS_EVENT_SIZE), _state_machine(0), _nw(0), _status_cb(0) + _info_ref_count(0), _fh(fh), _queue(10 * EVENTS_EVENT_SIZE), _state_machine(0), + _nw(0), _status_cb(0), _property_array(0) { MBED_ASSERT(fh); set_sim_pin(NULL); @@ -258,4 +259,5 @@ nsapi_error_t CellularDevice::clear() return NSAPI_ERROR_OK; } + } // namespace mbed diff --git a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION.cpp b/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION.cpp index a2c59ac4b9..1a0c52aa4c 100644 --- a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION.cpp +++ b/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION.cpp @@ -40,7 +40,7 @@ AT_CellularContext *GEMALTO_CINTERION::create_context_impl(ATHandler &at, const AT_CellularInformation *GEMALTO_CINTERION::open_information_impl(ATHandler &at) { if (_module == ModuleBGS2) { - return new GEMALTO_CINTERION_CellularInformation(at); + return new GEMALTO_CINTERION_CellularInformation(at, *this); } return AT_CellularDevice::open_information_impl(at); } @@ -96,7 +96,7 @@ GEMALTO_CINTERION::Module GEMALTO_CINTERION::get_module() void GEMALTO_CINTERION::init_module_bgs2() { // BGS2-W_ATC_V00.100 - static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { + static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = { AT_CellularNetwork::RegistrationModeDisable, // C_EREG AT_CellularNetwork::RegistrationModeEnable, // C_GREG AT_CellularNetwork::RegistrationModeLAC, // C_REG @@ -113,14 +113,14 @@ void GEMALTO_CINTERION::init_module_bgs2() 0, // PROPERTY_NON_IP_PDP_TYPE 1, // PROPERTY_AT_CGEREP }; - AT_CellularBase::set_cellular_properties(cellular_properties); + set_cellular_properties(cellular_properties); _module = ModuleBGS2; } void GEMALTO_CINTERION::init_module_els61() { // ELS61-E2_ATC_V01.000 - static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { + static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = { AT_CellularNetwork::RegistrationModeDisable, // C_EREG AT_CellularNetwork::RegistrationModeEnable, // C_GREG AT_CellularNetwork::RegistrationModeLAC, // C_REG @@ -133,14 +133,14 @@ void GEMALTO_CINTERION::init_module_els61() 0, // PROPERTY_NON_IP_PDP_TYPE 1, // PROPERTY_AT_CGEREP }; - AT_CellularBase::set_cellular_properties(cellular_properties); + set_cellular_properties(cellular_properties); _module = ModuleELS61; } void GEMALTO_CINTERION::init_module_ems31() { // EMS31-US_ATC_V4.9.5 - static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { + static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = { AT_CellularNetwork::RegistrationModeLAC, // C_EREG AT_CellularNetwork::RegistrationModeDisable, // C_GREG AT_CellularNetwork::RegistrationModeDisable, // C_REG @@ -153,14 +153,14 @@ void GEMALTO_CINTERION::init_module_ems31() 0, // PROPERTY_NON_IP_PDP_TYPE 1, // PROPERTY_AT_CGEREP }; - AT_CellularBase::set_cellular_properties(cellular_properties); + set_cellular_properties(cellular_properties); _module = ModuleEMS31; } void GEMALTO_CINTERION::init_module_ehs5e() { // EHS5-E - static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { + static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = { AT_CellularNetwork::RegistrationModeDisable, // C_EREG AT_CellularNetwork::RegistrationModeLAC, // C_GREG AT_CellularNetwork::RegistrationModeLAC, // C_REG @@ -171,7 +171,7 @@ void GEMALTO_CINTERION::init_module_ehs5e() 1, // PROPERTY_IPV6_STACK 0, // PROPERTY_IPV4V6_STACK }; - AT_CellularBase::set_cellular_properties(cellular_properties); + set_cellular_properties(cellular_properties); _module = ModuleEHS5E; } diff --git a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularContext.cpp b/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularContext.cpp index 1bbe3da29f..ce4c65ed26 100644 --- a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularContext.cpp +++ b/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularContext.cpp @@ -17,6 +17,7 @@ #include "GEMALTO_CINTERION_CellularContext.h" #include "GEMALTO_CINTERION_CellularStack.h" #include "CellularLog.h" +#include "CellularDevice.h" namespace mbed { @@ -38,7 +39,7 @@ NetworkStack *GEMALTO_CINTERION_CellularContext::get_stack() } if (!_stack) { - _stack = new GEMALTO_CINTERION_CellularStack(_at, _apn, _uname, _pwd, _cid, (nsapi_ip_stack_t)_pdp_type); + _stack = new GEMALTO_CINTERION_CellularStack(get_at_handler(), _apn, _uname, _pwd, _cid, (nsapi_ip_stack_t)_pdp_type, *get_device()); } return _stack; } diff --git a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularInformation.cpp b/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularInformation.cpp index 8699fde101..e12b96b3bf 100644 --- a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularInformation.cpp +++ b/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularInformation.cpp @@ -19,7 +19,7 @@ namespace mbed { -GEMALTO_CINTERION_CellularInformation::GEMALTO_CINTERION_CellularInformation(ATHandler &at) : AT_CellularInformation(at) +GEMALTO_CINTERION_CellularInformation::GEMALTO_CINTERION_CellularInformation(ATHandler &at, AT_CellularDevice &device) : AT_CellularInformation(at, device) { } diff --git a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularInformation.h b/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularInformation.h index ef9fabc37b..c3f6bddb9e 100644 --- a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularInformation.h +++ b/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularInformation.h @@ -24,7 +24,7 @@ namespace mbed { class GEMALTO_CINTERION_CellularInformation: public AT_CellularInformation { public: - GEMALTO_CINTERION_CellularInformation(ATHandler &at); + GEMALTO_CINTERION_CellularInformation(ATHandler &at, AT_CellularDevice &device); public: // AT_CellularInformation virtual nsapi_error_t get_iccid(char *buf, size_t buf_size); diff --git a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp b/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp index 7b1d2ff8aa..0b19823760 100644 --- a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp +++ b/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp @@ -33,8 +33,8 @@ using namespace mbed; GEMALTO_CINTERION_CellularStack::GEMALTO_CINTERION_CellularStack(ATHandler &atHandler, const char *apn, const char *user, const char *password, - int cid, nsapi_ip_stack_t stack_type) : AT_CellularStack(atHandler, cid, stack_type), _apn(apn), - _user(user), _password(password) + int cid, nsapi_ip_stack_t stack_type, AT_CellularDevice &device) : + AT_CellularStack(atHandler, cid, stack_type, device), _apn(apn), _user(user), _password(password) { } diff --git a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.h b/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.h index 6e16055961..c2a7c3c6b1 100644 --- a/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.h +++ b/features/cellular/framework/targets/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.h @@ -24,7 +24,8 @@ namespace mbed { class GEMALTO_CINTERION_CellularStack : public AT_CellularStack { public: - GEMALTO_CINTERION_CellularStack(ATHandler &atHandler, const char *apn, const char *username, const char *password, int cid, nsapi_ip_stack_t stack_type); + GEMALTO_CINTERION_CellularStack(ATHandler &atHandler, const char *apn, const char *username, + const char *password, int cid, nsapi_ip_stack_t stack_type, AT_CellularDevice &device); virtual ~GEMALTO_CINTERION_CellularStack(); protected: diff --git a/features/cellular/framework/targets/GENERIC/GENERIC_AT3GPP/GENERIC_AT3GPP.cpp b/features/cellular/framework/targets/GENERIC/GENERIC_AT3GPP/GENERIC_AT3GPP.cpp index 8f3ea0811f..15df309b2f 100644 --- a/features/cellular/framework/targets/GENERIC/GENERIC_AT3GPP/GENERIC_AT3GPP.cpp +++ b/features/cellular/framework/targets/GENERIC/GENERIC_AT3GPP/GENERIC_AT3GPP.cpp @@ -21,7 +21,7 @@ using namespace mbed; // by default all properties are supported -static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { +static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = { AT_CellularNetwork::RegistrationModeLAC, // C_EREG AT_CellularNetwork::RegistrationModeLAC, // C_GREG AT_CellularNetwork::RegistrationModeLAC, // C_REG @@ -41,7 +41,7 @@ static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { GENERIC_AT3GPP::GENERIC_AT3GPP(FileHandle *fh) : AT_CellularDevice(fh) { - AT_CellularBase::set_cellular_properties(cellular_properties); + set_cellular_properties(cellular_properties); } #if MBED_CONF_GENERIC_AT3GPP_PROVIDE_DEFAULT diff --git a/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP.cpp b/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP.cpp index 95f7d4f813..ad1b1082b9 100644 --- a/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP.cpp +++ b/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP.cpp @@ -21,7 +21,7 @@ using namespace mbed; using namespace events; -static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { +static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = { AT_CellularNetwork::RegistrationModeLAC, // C_EREG AT_CellularNetwork::RegistrationModeLAC, // C_GREG AT_CellularNetwork::RegistrationModeDisable, // C_REG @@ -41,12 +41,12 @@ static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { SARA4_PPP::SARA4_PPP(FileHandle *fh) : AT_CellularDevice(fh) { - AT_CellularBase::set_cellular_properties(cellular_properties); + set_cellular_properties(cellular_properties); } AT_CellularNetwork *SARA4_PPP::open_network_impl(ATHandler &at) { - return new SARA4_PPP_CellularNetwork(at); + return new SARA4_PPP_CellularNetwork(at, *this); } #if MBED_CONF_SARA4_PPP_PROVIDE_DEFAULT diff --git a/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP_CellularNetwork.cpp b/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP_CellularNetwork.cpp index a505d6f09c..e703ee669b 100644 --- a/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP_CellularNetwork.cpp +++ b/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP_CellularNetwork.cpp @@ -19,7 +19,7 @@ using namespace mbed; -SARA4_PPP_CellularNetwork::SARA4_PPP_CellularNetwork(ATHandler &atHandler) : AT_CellularNetwork(atHandler) +SARA4_PPP_CellularNetwork::SARA4_PPP_CellularNetwork(ATHandler &atHandler, AT_CellularDevice &device) : AT_CellularNetwork(atHandler, device) { } diff --git a/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP_CellularNetwork.h b/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP_CellularNetwork.h index 2799bb58e6..4643a61c47 100644 --- a/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP_CellularNetwork.h +++ b/features/cellular/framework/targets/MultiTech/DragonflyNano/PPP/SARA4_PPP_CellularNetwork.h @@ -24,7 +24,7 @@ namespace mbed { class SARA4_PPP_CellularNetwork : public AT_CellularNetwork { public: - SARA4_PPP_CellularNetwork(ATHandler &atHandler); + SARA4_PPP_CellularNetwork(ATHandler &atHandler, AT_CellularDevice &device); virtual ~SARA4_PPP_CellularNetwork(); protected: diff --git a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95.cpp b/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95.cpp index 50b0abfea0..7661d1821e 100644 --- a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95.cpp +++ b/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95.cpp @@ -28,7 +28,7 @@ using namespace events; using namespace mbed; -static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { +static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = { AT_CellularNetwork::RegistrationModeLAC, // C_EREG AT_CellularNetwork::RegistrationModeDisable, // C_GREG AT_CellularNetwork::RegistrationModeDisable, // C_REG @@ -48,7 +48,7 @@ static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { QUECTEL_BC95::QUECTEL_BC95(FileHandle *fh) : AT_CellularDevice(fh) { - AT_CellularBase::set_cellular_properties(cellular_properties); + set_cellular_properties(cellular_properties); } nsapi_error_t QUECTEL_BC95::get_sim_state(SimState &state) @@ -69,7 +69,7 @@ nsapi_error_t QUECTEL_BC95::get_sim_state(SimState &state) AT_CellularNetwork *QUECTEL_BC95::open_network_impl(ATHandler &at) { - return new QUECTEL_BC95_CellularNetwork(at); + return new QUECTEL_BC95_CellularNetwork(at, *this); } AT_CellularContext *QUECTEL_BC95::create_context_impl(ATHandler &at, const char *apn, bool cp_req, bool nonip_req) @@ -79,7 +79,7 @@ AT_CellularContext *QUECTEL_BC95::create_context_impl(ATHandler &at, const char AT_CellularInformation *QUECTEL_BC95::open_information_impl(ATHandler &at) { - return new QUECTEL_BC95_CellularInformation(at); + return new QUECTEL_BC95_CellularInformation(at, *this); } nsapi_error_t QUECTEL_BC95::init() diff --git a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularContext.cpp b/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularContext.cpp index 6dad2a1206..fd298b9d40 100644 --- a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularContext.cpp +++ b/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularContext.cpp @@ -38,7 +38,7 @@ NetworkStack *QUECTEL_BC95_CellularContext::get_stack() } if (!_stack) { - _stack = new QUECTEL_BC95_CellularStack(_at, _cid, (nsapi_ip_stack_t)_pdp_type); + _stack = new QUECTEL_BC95_CellularStack(_at, _cid, (nsapi_ip_stack_t)_pdp_type, *get_device()); } return _stack; } diff --git a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularInformation.cpp b/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularInformation.cpp index 88cdfdb5a0..950bff447c 100644 --- a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularInformation.cpp +++ b/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularInformation.cpp @@ -18,7 +18,7 @@ namespace mbed { -QUECTEL_BC95_CellularInformation::QUECTEL_BC95_CellularInformation(ATHandler &at) : AT_CellularInformation(at) +QUECTEL_BC95_CellularInformation::QUECTEL_BC95_CellularInformation(ATHandler &at, AT_CellularDevice &device) : AT_CellularInformation(at, device) { } diff --git a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularInformation.h b/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularInformation.h index 833649eee9..0a93b44085 100644 --- a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularInformation.h +++ b/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularInformation.h @@ -23,7 +23,7 @@ namespace mbed { class QUECTEL_BC95_CellularInformation : public AT_CellularInformation { public: - QUECTEL_BC95_CellularInformation(ATHandler &at); + QUECTEL_BC95_CellularInformation(ATHandler &at, AT_CellularDevice &device); virtual ~QUECTEL_BC95_CellularInformation(); public: diff --git a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularNetwork.cpp b/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularNetwork.cpp index 440c7b519e..ea7d43d86e 100644 --- a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularNetwork.cpp +++ b/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularNetwork.cpp @@ -19,7 +19,7 @@ using namespace mbed; -QUECTEL_BC95_CellularNetwork::QUECTEL_BC95_CellularNetwork(ATHandler &atHandler) : AT_CellularNetwork(atHandler) +QUECTEL_BC95_CellularNetwork::QUECTEL_BC95_CellularNetwork(ATHandler &atHandler, AT_CellularDevice &device) : AT_CellularNetwork(atHandler, device) { _op_act = RAT_NB1; } diff --git a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularNetwork.h b/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularNetwork.h index 7058e2af5b..1d76316fd8 100644 --- a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularNetwork.h +++ b/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularNetwork.h @@ -24,7 +24,7 @@ namespace mbed { class QUECTEL_BC95_CellularNetwork : public AT_CellularNetwork { public: - QUECTEL_BC95_CellularNetwork(ATHandler &atHandler); + QUECTEL_BC95_CellularNetwork(ATHandler &atHandler, AT_CellularDevice &device); virtual ~QUECTEL_BC95_CellularNetwork(); protected: diff --git a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularStack.cpp b/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularStack.cpp index 848b5e0ee3..badf70c3a5 100644 --- a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularStack.cpp +++ b/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularStack.cpp @@ -24,7 +24,8 @@ using namespace mbed; using namespace mbed_cellular_util; -QUECTEL_BC95_CellularStack::QUECTEL_BC95_CellularStack(ATHandler &atHandler, int cid, nsapi_ip_stack_t stack_type) : AT_CellularStack(atHandler, cid, stack_type) +QUECTEL_BC95_CellularStack::QUECTEL_BC95_CellularStack(ATHandler &atHandler, int cid, nsapi_ip_stack_t stack_type, AT_CellularDevice &device) : + AT_CellularStack(atHandler, cid, stack_type, device) { _at.set_urc_handler("+NSONMI:", mbed::Callback(this, &QUECTEL_BC95_CellularStack::urc_nsonmi)); _at.set_urc_handler("+NSOCLI:", mbed::Callback(this, &QUECTEL_BC95_CellularStack::urc_nsocli)); diff --git a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularStack.h b/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularStack.h index abeed14bc4..46546edf0f 100644 --- a/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularStack.h +++ b/features/cellular/framework/targets/QUECTEL/BC95/QUECTEL_BC95_CellularStack.h @@ -26,7 +26,7 @@ namespace mbed { class QUECTEL_BC95_CellularStack : public AT_CellularStack { public: - QUECTEL_BC95_CellularStack(ATHandler &atHandler, int cid, nsapi_ip_stack_t stack_type); + QUECTEL_BC95_CellularStack(ATHandler &atHandler, int cid, nsapi_ip_stack_t stack_type, AT_CellularDevice &device); virtual ~QUECTEL_BC95_CellularStack(); protected: // NetworkStack diff --git a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96.cpp b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96.cpp index fe31a3920f..3a5de952da 100644 --- a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96.cpp +++ b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96.cpp @@ -45,7 +45,7 @@ using namespace rtos; #define MBED_CONF_QUECTEL_BG96_POLARITY 1 // active high #endif -static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { +static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = { AT_CellularNetwork::RegistrationModeLAC, // C_EREG AT_CellularNetwork::RegistrationModeLAC, // C_GREG AT_CellularNetwork::RegistrationModeLAC, // C_REG @@ -69,7 +69,7 @@ QUECTEL_BG96::QUECTEL_BG96(FileHandle *fh, PinName pwr, bool active_high, PinNam _pwr(pwr, !_active_high), _rst(rst, !_active_high) { - AT_CellularBase::set_cellular_properties(cellular_properties); + set_cellular_properties(cellular_properties); } void QUECTEL_BG96::set_at_urcs_impl() @@ -79,7 +79,7 @@ void QUECTEL_BG96::set_at_urcs_impl() AT_CellularNetwork *QUECTEL_BG96::open_network_impl(ATHandler &at) { - return new QUECTEL_BG96_CellularNetwork(at); + return new QUECTEL_BG96_CellularNetwork(at, *this); } AT_CellularContext *QUECTEL_BG96::create_context_impl(ATHandler &at, const char *apn, bool cp_req, bool nonip_req) @@ -89,7 +89,7 @@ AT_CellularContext *QUECTEL_BG96::create_context_impl(ATHandler &at, const char AT_CellularInformation *QUECTEL_BG96::open_information_impl(ATHandler &at) { - return new QUECTEL_BG96_CellularInformation(at); + return new QUECTEL_BG96_CellularInformation(at, *this); } void QUECTEL_BG96::set_ready_cb(Callback callback) diff --git a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularContext.cpp b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularContext.cpp index ba0a90f4e1..a580f0a3f6 100644 --- a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularContext.cpp +++ b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularContext.cpp @@ -52,7 +52,7 @@ NetworkStack *QUECTEL_BG96_CellularContext::get_stack() } if (!_stack) { - _stack = new QUECTEL_BG96_CellularStack(_at, _cid, (nsapi_ip_stack_t)_pdp_type); + _stack = new QUECTEL_BG96_CellularStack(_at, _cid, (nsapi_ip_stack_t)_pdp_type, *get_device()); } return _stack; diff --git a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularInformation.cpp b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularInformation.cpp index 7102e0fcc8..4a72d51499 100644 --- a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularInformation.cpp +++ b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularInformation.cpp @@ -18,7 +18,7 @@ namespace mbed { -QUECTEL_BG96_CellularInformation::QUECTEL_BG96_CellularInformation(ATHandler &at) : AT_CellularInformation(at) +QUECTEL_BG96_CellularInformation::QUECTEL_BG96_CellularInformation(ATHandler &at, AT_CellularDevice &device) : AT_CellularInformation(at, device) { } diff --git a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularInformation.h b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularInformation.h index c952eac33e..3c0c7f20fc 100644 --- a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularInformation.h +++ b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularInformation.h @@ -23,7 +23,7 @@ namespace mbed { class QUECTEL_BG96_CellularInformation: public AT_CellularInformation { public: - QUECTEL_BG96_CellularInformation(ATHandler &at); + QUECTEL_BG96_CellularInformation(ATHandler &at, AT_CellularDevice &device); virtual ~QUECTEL_BG96_CellularInformation(); public: // AT_CellularInformation diff --git a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularNetwork.cpp b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularNetwork.cpp index e4646166b8..d3f2e42027 100644 --- a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularNetwork.cpp +++ b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularNetwork.cpp @@ -21,7 +21,7 @@ using namespace mbed; -QUECTEL_BG96_CellularNetwork::QUECTEL_BG96_CellularNetwork(ATHandler &atHandler) : AT_CellularNetwork(atHandler) +QUECTEL_BG96_CellularNetwork::QUECTEL_BG96_CellularNetwork(ATHandler &atHandler, AT_CellularDevice &device) : AT_CellularNetwork(atHandler, device) { } diff --git a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularNetwork.h b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularNetwork.h index d9d20d19b5..710c29f356 100644 --- a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularNetwork.h +++ b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularNetwork.h @@ -24,7 +24,7 @@ namespace mbed { class QUECTEL_BG96_CellularNetwork : public AT_CellularNetwork { public: - QUECTEL_BG96_CellularNetwork(ATHandler &atHandler); + QUECTEL_BG96_CellularNetwork(ATHandler &atHandler, AT_CellularDevice &device); virtual ~QUECTEL_BG96_CellularNetwork(); protected: diff --git a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularStack.cpp b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularStack.cpp index 5d5a49b1b6..9f49c65237 100644 --- a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularStack.cpp +++ b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularStack.cpp @@ -31,7 +31,8 @@ static const int sslctxID = 0; using namespace mbed; -QUECTEL_BG96_CellularStack::QUECTEL_BG96_CellularStack(ATHandler &atHandler, int cid, nsapi_ip_stack_t stack_type) : AT_CellularStack(atHandler, cid, stack_type) +QUECTEL_BG96_CellularStack::QUECTEL_BG96_CellularStack(ATHandler &atHandler, int cid, nsapi_ip_stack_t stack_type, AT_CellularDevice &device) : + AT_CellularStack(atHandler, cid, stack_type, device) #ifdef MBED_CONF_CELLULAR_OFFLOAD_DNS_QUERIES #if (MBED_CONF_CELLULAR_OFFLOAD_DNS_QUERIES != 1) #error Define cellular.offload-dns-queries to null or 1. diff --git a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularStack.h b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularStack.h index e056344b73..dcc636779c 100644 --- a/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularStack.h +++ b/features/cellular/framework/targets/QUECTEL/BG96/QUECTEL_BG96_CellularStack.h @@ -36,7 +36,7 @@ typedef enum { class QUECTEL_BG96_CellularStack : public AT_CellularStack { public: - QUECTEL_BG96_CellularStack(ATHandler &atHandler, int cid, nsapi_ip_stack_t stack_type); + QUECTEL_BG96_CellularStack(ATHandler &atHandler, int cid, nsapi_ip_stack_t stack_type, AT_CellularDevice &device); virtual ~QUECTEL_BG96_CellularStack(); protected: // NetworkStack diff --git a/features/cellular/framework/targets/QUECTEL/EC2X/QUECTEL_EC2X.cpp b/features/cellular/framework/targets/QUECTEL/EC2X/QUECTEL_EC2X.cpp index 73a2e15828..502d4ca509 100644 --- a/features/cellular/framework/targets/QUECTEL/EC2X/QUECTEL_EC2X.cpp +++ b/features/cellular/framework/targets/QUECTEL/EC2X/QUECTEL_EC2X.cpp @@ -46,7 +46,7 @@ using namespace events; #define MBED_CONF_QUECTEL_EC2X_POLARITY 1 // active high #endif -static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { +static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = { AT_CellularNetwork::RegistrationModeLAC, // C_EREG AT_CellularNetwork::RegistrationModeLAC, // C_GREG AT_CellularNetwork::RegistrationModeLAC, // C_REG @@ -70,7 +70,7 @@ QUECTEL_EC2X::QUECTEL_EC2X(FileHandle *fh, PinName pwr, bool active_high, PinNam _pwr_key(pwr, !_active_high), _rst(rst, !_active_high) { - AT_CellularBase::set_cellular_properties(cellular_properties); + set_cellular_properties(cellular_properties); } #if MBED_CONF_QUECTEL_EC2X_PROVIDE_DEFAULT diff --git a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26.cpp b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26.cpp index e198547a0c..d5637c269e 100644 --- a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26.cpp +++ b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26.cpp @@ -24,7 +24,7 @@ using namespace mbed; -static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { +static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = { AT_CellularNetwork::RegistrationModeDisable,// C_EREG AT_CellularNetwork::RegistrationModeLAC, // C_GREG AT_CellularNetwork::RegistrationModeDisable,// C_REG @@ -44,7 +44,7 @@ static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { QUECTEL_M26::QUECTEL_M26(FileHandle *fh) : AT_CellularDevice(fh) { - AT_CellularBase::set_cellular_properties(cellular_properties); + set_cellular_properties(cellular_properties); } nsapi_error_t QUECTEL_M26::get_sim_state(SimState &state) diff --git a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularContext.cpp b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularContext.cpp index d96ce4eacf..a019465f95 100644 --- a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularContext.cpp +++ b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularContext.cpp @@ -28,7 +28,7 @@ QUECTEL_M26_CellularContext::QUECTEL_M26_CellularContext(ATHandler &at, Cellular NetworkStack *QUECTEL_M26_CellularContext::get_stack() { if (!_stack) { - _stack = new QUECTEL_M26_CellularStack(_at, _cid, (nsapi_ip_stack_t)_pdp_type); + _stack = new QUECTEL_M26_CellularStack(_at, _cid, (nsapi_ip_stack_t)_pdp_type, *get_device()); } return _stack; } diff --git a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularInformation.cpp b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularInformation.cpp index 1f5b414e10..bcdb0b32aa 100644 --- a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularInformation.cpp +++ b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularInformation.cpp @@ -19,7 +19,7 @@ using namespace mbed; -QUECTEL_M26_CellularInformation::QUECTEL_M26_CellularInformation(ATHandler &atHandler) : AT_CellularInformation(atHandler) +QUECTEL_M26_CellularInformation::QUECTEL_M26_CellularInformation(ATHandler &atHandler, AT_CellularDevice &device) : AT_CellularInformation(atHandler, device) { } diff --git a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularInformation.h b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularInformation.h index a1a48a6f23..95b8d1e2b9 100644 --- a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularInformation.h +++ b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularInformation.h @@ -24,7 +24,7 @@ namespace mbed { class QUECTEL_M26_CellularInformation : public AT_CellularInformation { public: - QUECTEL_M26_CellularInformation(ATHandler &atHandler); + QUECTEL_M26_CellularInformation(ATHandler &atHandler, AT_CellularDevice &device); public: //from CellularInformation virtual nsapi_error_t get_iccid(char *buf, size_t buf_size); diff --git a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularStack.cpp b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularStack.cpp index 36241c81c1..83ed44a19c 100644 --- a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularStack.cpp +++ b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularStack.cpp @@ -24,7 +24,8 @@ using namespace mbed; -QUECTEL_M26_CellularStack::QUECTEL_M26_CellularStack(ATHandler &atHandler, int cid, nsapi_ip_stack_t stack_type) : AT_CellularStack(atHandler, cid, stack_type) +QUECTEL_M26_CellularStack::QUECTEL_M26_CellularStack(ATHandler &atHandler, int cid, nsapi_ip_stack_t stack_type, AT_CellularDevice &device) : + AT_CellularStack(atHandler, cid, stack_type, device) { _at.set_urc_handler("+QIRDI:", Callback(this, &QUECTEL_M26_CellularStack::urc_qiurc)); diff --git a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularStack.h b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularStack.h index 958aa2223a..91bfd73397 100644 --- a/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularStack.h +++ b/features/cellular/framework/targets/QUECTEL/M26/QUECTEL_M26_CellularStack.h @@ -29,7 +29,7 @@ namespace mbed { class QUECTEL_M26_CellularStack : public AT_CellularStack { public: - QUECTEL_M26_CellularStack(ATHandler &atHandler, int cid, nsapi_ip_stack_t stack_type); + QUECTEL_M26_CellularStack(ATHandler &atHandler, int cid, nsapi_ip_stack_t stack_type, AT_CellularDevice &device); virtual ~QUECTEL_M26_CellularStack(); protected: // NetworkStack diff --git a/features/cellular/framework/targets/QUECTEL/UG96/QUECTEL_UG96.cpp b/features/cellular/framework/targets/QUECTEL/UG96/QUECTEL_UG96.cpp index 89f49f05cd..a2b52f4ecc 100644 --- a/features/cellular/framework/targets/QUECTEL/UG96/QUECTEL_UG96.cpp +++ b/features/cellular/framework/targets/QUECTEL/UG96/QUECTEL_UG96.cpp @@ -27,7 +27,7 @@ using namespace events; #define CONNECT_BUFFER_SIZE (1280 + 80 + 80) // AT response + sscanf format #define CONNECT_TIMEOUT 8000 -static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { +static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = { AT_CellularNetwork::RegistrationModeDisable,// C_EREG AT_CellularNetwork::RegistrationModeLAC, // C_GREG AT_CellularNetwork::RegistrationModeLAC, // C_REG @@ -47,7 +47,7 @@ static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { QUECTEL_UG96::QUECTEL_UG96(FileHandle *fh) : AT_CellularDevice(fh) { - AT_CellularBase::set_cellular_properties(cellular_properties); + set_cellular_properties(cellular_properties); } AT_CellularContext *QUECTEL_UG96::create_context_impl(ATHandler &at, const char *apn, bool cp_req, bool nonip_req) diff --git a/features/cellular/framework/targets/RiotMicro/AT/RM1000_AT.cpp b/features/cellular/framework/targets/RiotMicro/AT/RM1000_AT.cpp index 4f8c5b9472..2d13cc828e 100644 --- a/features/cellular/framework/targets/RiotMicro/AT/RM1000_AT.cpp +++ b/features/cellular/framework/targets/RiotMicro/AT/RM1000_AT.cpp @@ -28,7 +28,7 @@ using namespace mbed; using namespace events; static const uint16_t retry_timeout[] = {1, 2, 4}; -static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { +static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = { AT_CellularNetwork::RegistrationModeLAC,// C_EREG AT_CellularNetwork::RegistrationModeDisable,// C_GREG AT_CellularNetwork::RegistrationModeDisable,// C_REG @@ -49,14 +49,14 @@ static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { RM1000_AT::RM1000_AT(FileHandle *fh) : AT_CellularDevice(fh) { tr_debug("RM1000_AT::RM1000_AT"); - AT_CellularBase::set_cellular_properties(cellular_properties); + set_cellular_properties(cellular_properties); set_retry_timeout_array(retry_timeout, sizeof(retry_timeout) / sizeof(retry_timeout[0])); } AT_CellularNetwork *RM1000_AT::open_network_impl(ATHandler &at) { tr_debug("RM1000_AT::open_network_impl"); - return new RM1000_AT_CellularNetwork(at); + return new RM1000_AT_CellularNetwork(at, *this); } AT_CellularContext *RM1000_AT::create_context_impl(ATHandler &at, const char *apn, bool cp_req, bool nonip_req) diff --git a/features/cellular/framework/targets/RiotMicro/AT/RM1000_AT_CellularContext.cpp b/features/cellular/framework/targets/RiotMicro/AT/RM1000_AT_CellularContext.cpp index bd3d2ba44b..a1365ebea0 100644 --- a/features/cellular/framework/targets/RiotMicro/AT/RM1000_AT_CellularContext.cpp +++ b/features/cellular/framework/targets/RiotMicro/AT/RM1000_AT_CellularContext.cpp @@ -45,7 +45,7 @@ NetworkStack *RM1000_AT_CellularContext::get_stack() return NULL; } if (!_stack) { - _stack = new RM1000_AT_CellularStack(_at, _cid, (nsapi_ip_stack_t)_pdp_type); + _stack = new RM1000_AT_CellularStack(_at, _cid, (nsapi_ip_stack_t)_pdp_type, *get_device()); } return _stack; diff --git a/features/cellular/framework/targets/RiotMicro/AT/RM1000_AT_CellularNetwork.cpp b/features/cellular/framework/targets/RiotMicro/AT/RM1000_AT_CellularNetwork.cpp index f8c3fd5c1b..6c783b4de1 100644 --- a/features/cellular/framework/targets/RiotMicro/AT/RM1000_AT_CellularNetwork.cpp +++ b/features/cellular/framework/targets/RiotMicro/AT/RM1000_AT_CellularNetwork.cpp @@ -20,6 +20,7 @@ #include "CellularCommon.h" #include "RM1000_AT_CellularNetwork.h" #include "platform/mbed_wait_api.h" +#include "AT_CellularDevice.h" #include "mbed-trace/mbed_trace.h" #ifndef TRACE_GROUP @@ -37,7 +38,7 @@ void RM1000_AT_CellularNetwork::MODEM_FAULT_URC() } } -RM1000_AT_CellularNetwork::RM1000_AT_CellularNetwork(ATHandler &atHandler) : AT_CellularNetwork(atHandler) +RM1000_AT_CellularNetwork::RM1000_AT_CellularNetwork(ATHandler &atHandler, AT_CellularDevice &device) : AT_CellularNetwork(atHandler, device) { tr_debug("RM1000_AT_CellularNetwork::RM1000_B0_CellularNetwork"); _op_act = RAT_UNKNOWN; @@ -80,7 +81,7 @@ nsapi_error_t RM1000_AT_CellularNetwork::set_registration_urc(RegistrationType t int index = (int)type; MBED_ASSERT(index >= 0 && index < C_MAX); - RegistrationMode mode = (RegistrationMode)get_property((AT_CellularBase::CellularProperty)type); + RegistrationMode mode = (RegistrationMode)_device.get_property((AT_CellularDevice::CellularProperty)type); if (mode == RegistrationModeDisable) { return NSAPI_ERROR_UNSUPPORTED; } else { diff --git a/features/cellular/framework/targets/RiotMicro/AT/RM1000_AT_CellularNetwork.h b/features/cellular/framework/targets/RiotMicro/AT/RM1000_AT_CellularNetwork.h index ceb9974d50..81f710830c 100644 --- a/features/cellular/framework/targets/RiotMicro/AT/RM1000_AT_CellularNetwork.h +++ b/features/cellular/framework/targets/RiotMicro/AT/RM1000_AT_CellularNetwork.h @@ -24,7 +24,7 @@ namespace mbed { class RM1000_AT_CellularNetwork : public AT_CellularNetwork { public: - RM1000_AT_CellularNetwork(ATHandler &atHandler); + RM1000_AT_CellularNetwork(ATHandler &atHandler, AT_CellularDevice &device); virtual ~RM1000_AT_CellularNetwork(); virtual nsapi_error_t set_registration_urc(RegistrationType type, bool on); diff --git a/features/cellular/framework/targets/RiotMicro/AT/RM1000_AT_CellularStack.cpp b/features/cellular/framework/targets/RiotMicro/AT/RM1000_AT_CellularStack.cpp index 0b73dfb3f5..e3e3a7e7ba 100644 --- a/features/cellular/framework/targets/RiotMicro/AT/RM1000_AT_CellularStack.cpp +++ b/features/cellular/framework/targets/RiotMicro/AT/RM1000_AT_CellularStack.cpp @@ -27,7 +27,8 @@ using namespace mbed; using namespace mbed_cellular_util; -RM1000_AT_CellularStack::RM1000_AT_CellularStack(ATHandler &atHandler, int cid, nsapi_ip_stack_t stack_type) : AT_CellularStack(atHandler, cid, stack_type) +RM1000_AT_CellularStack::RM1000_AT_CellularStack(ATHandler &atHandler, int cid, nsapi_ip_stack_t stack_type, AT_CellularDevice &device) : + AT_CellularStack(atHandler, cid, stack_type, device) { tr_debug("RM1000_AT_CellularStack::RM1000_AT_CellularStack"); diff --git a/features/cellular/framework/targets/RiotMicro/AT/RM1000_AT_CellularStack.h b/features/cellular/framework/targets/RiotMicro/AT/RM1000_AT_CellularStack.h index 5c7302b741..83eb5f0bef 100644 --- a/features/cellular/framework/targets/RiotMicro/AT/RM1000_AT_CellularStack.h +++ b/features/cellular/framework/targets/RiotMicro/AT/RM1000_AT_CellularStack.h @@ -27,7 +27,7 @@ namespace mbed { class RM1000_AT_CellularStack : public AT_CellularStack { public: - RM1000_AT_CellularStack(ATHandler &atHandler, int cid, nsapi_ip_stack_t stack_type); + RM1000_AT_CellularStack(ATHandler &atHandler, int cid, nsapi_ip_stack_t stack_type, AT_CellularDevice &device); virtual ~RM1000_AT_CellularStack(); virtual nsapi_error_t gethostbyname(const char *host, diff --git a/features/cellular/framework/targets/TELIT/HE910/TELIT_HE910.cpp b/features/cellular/framework/targets/TELIT/HE910/TELIT_HE910.cpp index abbfcffd1f..dc32dac060 100644 --- a/features/cellular/framework/targets/TELIT/HE910/TELIT_HE910.cpp +++ b/features/cellular/framework/targets/TELIT/HE910/TELIT_HE910.cpp @@ -21,7 +21,7 @@ using namespace mbed; using namespace events; -static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { +static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = { AT_CellularNetwork::RegistrationModeDisable,// C_EREG AT_CellularNetwork::RegistrationModeLAC, // C_GREG AT_CellularNetwork::RegistrationModeLAC, // C_REG @@ -41,7 +41,7 @@ static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { TELIT_HE910::TELIT_HE910(FileHandle *fh) : AT_CellularDevice(fh) { - AT_CellularBase::set_cellular_properties(cellular_properties); + set_cellular_properties(cellular_properties); } uint16_t TELIT_HE910::get_send_delay() const diff --git a/features/cellular/framework/targets/TELIT/ME910/TELIT_ME910.cpp b/features/cellular/framework/targets/TELIT/ME910/TELIT_ME910.cpp index 42bced57fd..9449a67eef 100644 --- a/features/cellular/framework/targets/TELIT/ME910/TELIT_ME910.cpp +++ b/features/cellular/framework/targets/TELIT/ME910/TELIT_ME910.cpp @@ -41,7 +41,7 @@ using namespace events; #define MBED_CONF_TELIT_ME910_POLARITY 1 // active high #endif -static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { +static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = { AT_CellularNetwork::RegistrationModeLAC, // C_EREG AT_CellularNetwork::RegistrationModeLAC, // C_GREG AT_CellularNetwork::RegistrationModeLAC, // C_REG @@ -67,7 +67,7 @@ TELIT_ME910::TELIT_ME910(FileHandle *fh, PinName pwr, bool active_high) _active_high(active_high), _pwr_key(pwr, !_active_high) { - AT_CellularBase::set_cellular_properties(cellular_properties); + set_cellular_properties(cellular_properties); } AT_CellularContext *TELIT_ME910::create_context_impl(ATHandler &at, const char *apn, bool cp_req, bool nonip_req) diff --git a/features/cellular/framework/targets/TELIT/ME910/TELIT_ME910_CellularContext.cpp b/features/cellular/framework/targets/TELIT/ME910/TELIT_ME910_CellularContext.cpp index e2fa4119d1..9d167f3f32 100644 --- a/features/cellular/framework/targets/TELIT/ME910/TELIT_ME910_CellularContext.cpp +++ b/features/cellular/framework/targets/TELIT/ME910/TELIT_ME910_CellularContext.cpp @@ -34,8 +34,8 @@ TELIT_ME910_CellularContext::~TELIT_ME910_CellularContext() bool TELIT_ME910_CellularContext::get_context() { - bool modem_supports_ipv6 = get_property(PROPERTY_IPV6_PDP_TYPE); - bool modem_supports_ipv4 = get_property(PROPERTY_IPV4_PDP_TYPE); + bool modem_supports_ipv6 = get_device()->get_property(AT_CellularDevice::PROPERTY_IPV6_PDP_TYPE); + bool modem_supports_ipv4 = get_device()->get_property(AT_CellularDevice::PROPERTY_IPV4_PDP_TYPE); _at.cmd_start_stop("+CGDCONT", "?"); _at.resp_start("+CGDCONT:"); @@ -62,7 +62,7 @@ bool TELIT_ME910_CellularContext::get_context() pdp_type_t pdp_type = string_to_pdp_type(pdp_type_from_context); // Accept exact matching PDP context type or dual PDP context for IPv4/IPv6 only modems - if (get_property(pdp_type_t_to_cellular_property(pdp_type)) || + if (get_device()->get_property(pdp_type_t_to_cellular_property(pdp_type)) || ((pdp_type == IPV4V6_PDP_TYPE && (modem_supports_ipv4 || modem_supports_ipv6)) && !_nonip_req)) { _pdp_type = pdp_type; _cid = cid; diff --git a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT.cpp b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT.cpp index 8c96693213..70fdda50d7 100644 --- a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT.cpp +++ b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT.cpp @@ -21,7 +21,7 @@ using namespace mbed; using namespace events; #ifdef UBX_MDM_SARA_R41XM -static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { +static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = { AT_CellularNetwork::RegistrationModeDisable,// C_EREG AT_CellularNetwork::RegistrationModeLAC, // C_GREG AT_CellularNetwork::RegistrationModeLAC, // C_REG @@ -39,7 +39,7 @@ static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { 1, // PROPERTY_AT_CGEREP }; #elif defined(UBX_MDM_SARA_U2XX) || defined(UBX_MDM_SARA_G3XX) -static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { +static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = { AT_CellularNetwork::RegistrationModeDisable,// C_EREG AT_CellularNetwork::RegistrationModeLAC, // C_GREG AT_CellularNetwork::RegistrationModeLAC, // C_REG @@ -61,7 +61,7 @@ static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { 1, // PROPERTY_AT_CGEREP }; #else -static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { +static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = { 0, // C_EREG 0, // C_GREG 0, // C_REG @@ -82,12 +82,12 @@ static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { UBLOX_AT::UBLOX_AT(FileHandle *fh) : AT_CellularDevice(fh) { - AT_CellularBase::set_cellular_properties(cellular_properties); + set_cellular_properties(cellular_properties); } AT_CellularNetwork *UBLOX_AT::open_network_impl(ATHandler &at) { - return new UBLOX_AT_CellularNetwork(at); + return new UBLOX_AT_CellularNetwork(at, *this); } AT_CellularContext *UBLOX_AT::create_context_impl(ATHandler &at, const char *apn, bool cp_req, bool nonip_req) diff --git a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularContext.cpp b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularContext.cpp index 09c5e9f78f..309589d22e 100644 --- a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularContext.cpp +++ b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularContext.cpp @@ -40,7 +40,7 @@ NetworkStack *UBLOX_AT_CellularContext::get_stack() return NULL; } if (!_stack) { - _stack = new UBLOX_AT_CellularStack(_at, _cid, (nsapi_ip_stack_t)_pdp_type); + _stack = new UBLOX_AT_CellularStack(_at, _cid, (nsapi_ip_stack_t)_pdp_type, *get_device()); } return _stack; diff --git a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularNetwork.cpp b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularNetwork.cpp index d6b566ea8c..da383b2684 100644 --- a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularNetwork.cpp +++ b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularNetwork.cpp @@ -20,7 +20,7 @@ using namespace mbed; -UBLOX_AT_CellularNetwork::UBLOX_AT_CellularNetwork(ATHandler &atHandler) : AT_CellularNetwork(atHandler) +UBLOX_AT_CellularNetwork::UBLOX_AT_CellularNetwork(ATHandler &atHandler, AT_CellularDevice &device) : AT_CellularNetwork(atHandler, device) { _op_act = RAT_UNKNOWN; } diff --git a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularNetwork.h b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularNetwork.h index f60a076e77..ce7d67a6c6 100644 --- a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularNetwork.h +++ b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularNetwork.h @@ -28,7 +28,7 @@ namespace mbed { class UBLOX_AT_CellularNetwork : public AT_CellularNetwork { public: - UBLOX_AT_CellularNetwork(ATHandler &atHandler); + UBLOX_AT_CellularNetwork(ATHandler &atHandler, AT_CellularDevice &device); virtual ~UBLOX_AT_CellularNetwork(); nsapi_error_t ubx_reboot(); diff --git a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularStack.cpp b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularStack.cpp index b35fde497f..4c002e3480 100644 --- a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularStack.cpp +++ b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularStack.cpp @@ -21,7 +21,8 @@ using namespace mbed; using namespace mbed_cellular_util; -UBLOX_AT_CellularStack::UBLOX_AT_CellularStack(ATHandler &atHandler, int cid, nsapi_ip_stack_t stack_type) : AT_CellularStack(atHandler, cid, stack_type) +UBLOX_AT_CellularStack::UBLOX_AT_CellularStack(ATHandler &atHandler, int cid, nsapi_ip_stack_t stack_type, AT_CellularDevice &device) : + AT_CellularStack(atHandler, cid, stack_type, device) { // URC handlers for sockets _at.set_urc_handler("+UUSORD:", callback(this, &UBLOX_AT_CellularStack::UUSORD_URC)); diff --git a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularStack.h b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularStack.h index 1614fc7602..259d70f09e 100644 --- a/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularStack.h +++ b/features/cellular/framework/targets/UBLOX/AT/UBLOX_AT_CellularStack.h @@ -27,7 +27,7 @@ namespace mbed { class UBLOX_AT_CellularStack : public AT_CellularStack { public: - UBLOX_AT_CellularStack(ATHandler &atHandler, int cid, nsapi_ip_stack_t stack_type); + UBLOX_AT_CellularStack(ATHandler &atHandler, int cid, nsapi_ip_stack_t stack_type, AT_CellularDevice &device); virtual ~UBLOX_AT_CellularStack(); virtual const char *get_ip_address(); diff --git a/features/cellular/framework/targets/UBLOX/N2XX/UBLOX_N2XX.cpp b/features/cellular/framework/targets/UBLOX/N2XX/UBLOX_N2XX.cpp index 5ec96a8f0c..dcf832641f 100644 --- a/features/cellular/framework/targets/UBLOX/N2XX/UBLOX_N2XX.cpp +++ b/features/cellular/framework/targets/UBLOX/N2XX/UBLOX_N2XX.cpp @@ -20,7 +20,7 @@ using namespace mbed; using namespace events; -static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { +static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = { AT_CellularNetwork::RegistrationModeLAC, // C_EREG AT_CellularNetwork::RegistrationModeDisable, // C_GREG AT_CellularNetwork::RegistrationModeDisable, // C_REG @@ -38,7 +38,7 @@ static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { UBLOX_N2XX::UBLOX_N2XX(FileHandle *fh): AT_CellularDevice(fh) { - AT_CellularBase::set_cellular_properties(cellular_properties); + set_cellular_properties(cellular_properties); memset(simstr, 0, sizeof(simstr)); } @@ -66,7 +66,7 @@ AT_CellularContext *UBLOX_N2XX::create_context_impl(ATHandler &at, const char *a #if MBED_CONF_CELLULAR_USE_SMS AT_CellularSMS *UBLOX_N2XX::open_sms_impl(ATHandler &at) { - return new UBLOX_N2XX_CellularSMS(at); + return new UBLOX_N2XX_CellularSMS(at, *this); } #endif // MBED_CONF_CELLULAR_USE_SMS diff --git a/features/cellular/framework/targets/UBLOX/N2XX/UBLOX_N2XX_CellularContext.cpp b/features/cellular/framework/targets/UBLOX/N2XX/UBLOX_N2XX_CellularContext.cpp index 2d39c10429..9946d59b58 100644 --- a/features/cellular/framework/targets/UBLOX/N2XX/UBLOX_N2XX_CellularContext.cpp +++ b/features/cellular/framework/targets/UBLOX/N2XX/UBLOX_N2XX_CellularContext.cpp @@ -38,7 +38,7 @@ NetworkStack *UBLOX_N2XX_CellularContext::get_stack() return NULL; } if (!_stack) { - _stack = new UBLOX_N2XX_CellularStack(_at, _cid, (nsapi_ip_stack_t)_pdp_type); + _stack = new UBLOX_N2XX_CellularStack(_at, _cid, (nsapi_ip_stack_t)_pdp_type, *get_device()); } return _stack; } diff --git a/features/cellular/framework/targets/UBLOX/N2XX/UBLOX_N2XX_CellularSMS.cpp b/features/cellular/framework/targets/UBLOX/N2XX/UBLOX_N2XX_CellularSMS.cpp index 82e16baaf0..19dba889fe 100644 --- a/features/cellular/framework/targets/UBLOX/N2XX/UBLOX_N2XX_CellularSMS.cpp +++ b/features/cellular/framework/targets/UBLOX/N2XX/UBLOX_N2XX_CellularSMS.cpp @@ -21,7 +21,7 @@ using namespace mbed; -UBLOX_N2XX_CellularSMS::UBLOX_N2XX_CellularSMS(ATHandler &atHandler) : AT_CellularSMS(atHandler) +UBLOX_N2XX_CellularSMS::UBLOX_N2XX_CellularSMS(ATHandler &atHandler, AT_CellularDevice &device) : AT_CellularSMS(atHandler, device) { } diff --git a/features/cellular/framework/targets/UBLOX/N2XX/UBLOX_N2XX_CellularSMS.h b/features/cellular/framework/targets/UBLOX/N2XX/UBLOX_N2XX_CellularSMS.h index a0b893ab30..f46cfa4f97 100644 --- a/features/cellular/framework/targets/UBLOX/N2XX/UBLOX_N2XX_CellularSMS.h +++ b/features/cellular/framework/targets/UBLOX/N2XX/UBLOX_N2XX_CellularSMS.h @@ -28,7 +28,7 @@ class UBLOX_N2XX_CellularSMS : public AT_CellularSMS { public: - UBLOX_N2XX_CellularSMS(ATHandler &atHandler); + UBLOX_N2XX_CellularSMS(ATHandler &atHandler, AT_CellularDevice &device); virtual ~UBLOX_N2XX_CellularSMS(); virtual nsapi_error_t set_cpms(const char *memr, const char *memw, const char *mems); diff --git a/features/cellular/framework/targets/UBLOX/N2XX/UBLOX_N2XX_CellularStack.cpp b/features/cellular/framework/targets/UBLOX/N2XX/UBLOX_N2XX_CellularStack.cpp index 811e2d6961..de9d65ec6f 100644 --- a/features/cellular/framework/targets/UBLOX/N2XX/UBLOX_N2XX_CellularStack.cpp +++ b/features/cellular/framework/targets/UBLOX/N2XX/UBLOX_N2XX_CellularStack.cpp @@ -22,7 +22,8 @@ using namespace mbed; using namespace mbed_cellular_util; -UBLOX_N2XX_CellularStack::UBLOX_N2XX_CellularStack(ATHandler &atHandler, int cid, nsapi_ip_stack_t stack_type): AT_CellularStack(atHandler, cid, stack_type) +UBLOX_N2XX_CellularStack::UBLOX_N2XX_CellularStack(ATHandler &atHandler, int cid, nsapi_ip_stack_t stack_type, AT_CellularDevice &device): + AT_CellularStack(atHandler, cid, stack_type, device) { // URC handlers for sockets _at.set_urc_handler("+NSONMI:", callback(this, &UBLOX_N2XX_CellularStack::NSONMI_URC)); diff --git a/features/cellular/framework/targets/UBLOX/N2XX/UBLOX_N2XX_CellularStack.h b/features/cellular/framework/targets/UBLOX/N2XX/UBLOX_N2XX_CellularStack.h index f8c6a06732..3dcf8ded1d 100644 --- a/features/cellular/framework/targets/UBLOX/N2XX/UBLOX_N2XX_CellularStack.h +++ b/features/cellular/framework/targets/UBLOX/N2XX/UBLOX_N2XX_CellularStack.h @@ -28,7 +28,7 @@ class UBLOX_N2XX_CellularStack : public AT_CellularStack { public: - UBLOX_N2XX_CellularStack(ATHandler &atHandler, int cid, nsapi_ip_stack_t stack_type); + UBLOX_N2XX_CellularStack(ATHandler &atHandler, int cid, nsapi_ip_stack_t stack_type, AT_CellularDevice &device); virtual ~UBLOX_N2XX_CellularStack(); protected: diff --git a/features/cellular/framework/targets/UBLOX/PPP/UBLOX_PPP.cpp b/features/cellular/framework/targets/UBLOX/PPP/UBLOX_PPP.cpp index da54fd85f9..f2a2396d70 100644 --- a/features/cellular/framework/targets/UBLOX/PPP/UBLOX_PPP.cpp +++ b/features/cellular/framework/targets/UBLOX/PPP/UBLOX_PPP.cpp @@ -22,7 +22,7 @@ using namespace mbed; using namespace events; #ifdef UBX_MDM_SARA_R41XM -static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { +static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = { AT_CellularNetwork::RegistrationModeDisable,// C_EREG AT_CellularNetwork::RegistrationModeLAC, // C_GREG AT_CellularNetwork::RegistrationModeLAC, // C_REG @@ -40,7 +40,7 @@ static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { 1, // PROPERTY_AT_CGEREP }; #elif defined(UBX_MDM_SARA_U2XX) || defined(UBX_MDM_SARA_G3XX) -static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { +static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = { AT_CellularNetwork::RegistrationModeDisable,// C_EREG AT_CellularNetwork::RegistrationModeLAC, // C_GREG AT_CellularNetwork::RegistrationModeLAC, // C_REG @@ -62,7 +62,7 @@ static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { 1, // PROPERTY_AT_CGEREP }; #else -static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { +static const intptr_t cellular_properties[AT_CellularDevice::PROPERTY_MAX] = { 0, // C_EREG 0, // C_GREG 0, // C_REG @@ -83,7 +83,7 @@ static const intptr_t cellular_properties[AT_CellularBase::PROPERTY_MAX] = { UBLOX_PPP::UBLOX_PPP(FileHandle *fh) : AT_CellularDevice(fh) { - AT_CellularBase::set_cellular_properties(cellular_properties); + set_cellular_properties(cellular_properties); } #if MBED_CONF_UBLOX_PPP_PROVIDE_DEFAULT diff --git a/features/cellular/mbed_lib.json b/features/cellular/mbed_lib.json index ca4dfcaf58..265c151f78 100644 --- a/features/cellular/mbed_lib.json +++ b/features/cellular/mbed_lib.json @@ -3,11 +3,11 @@ "config": { "use-apn-lookup": { "help": "Use APN database lookup", - "value": true + "value": false }, "use-sms": { "help": "Enable or disable SMS functionality in Cellular stack.", - "value": true + "value": false }, "random_max_start_delay": { "help": "Maximum random delay value used in start-up sequence in milliseconds", diff --git a/features/netsocket/CellularBase.h b/features/netsocket/CellularBase.h deleted file mode 100644 index 881480b8df..0000000000 --- a/features/netsocket/CellularBase.h +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright (c) 2017 ARM Limited - * - * 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. - */ - -/* @file CellularBase.h CellularBase */ - -/** @addtogroup netinterface - * @{ - */ - -#ifndef CELLULAR_BASE_H -#define CELLULAR_BASE_H - -#include "CellularInterface.h" - -/** - * This class is deprecated and will be removed altogether after expiration of - * deprecation notice. - * @deprecated Migrated to CellularInterface - */ -MBED_DEPRECATED_SINCE("mbed-os-5.12", "Migrated to CellularInterface") -typedef CellularInterface CellularBase; - -#endif //CELLULAR_BASE_H - -/** @}*/ diff --git a/features/netsocket/CellularInterface.h b/features/netsocket/CellularInterface.h index 34e2bf7bd7..7a47e467eb 100644 --- a/features/netsocket/CellularInterface.h +++ b/features/netsocket/CellularInterface.h @@ -113,14 +113,6 @@ public: MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated") virtual const char *get_gateway() = 0; - /** @copydoc NetworkInterface::cellularBase - */ - MBED_DEPRECATED_SINCE("mbed-os-5.12", "Migrated to CellularInterface") - virtual CellularInterface *cellularBase() - { - return this; - } - /** @copydoc NetworkInterface::cellularInterface */ virtual CellularInterface *cellularInterface() diff --git a/features/netsocket/NetworkInterface.h b/features/netsocket/NetworkInterface.h index 6c1f605335..19df56e379 100644 --- a/features/netsocket/NetworkInterface.h +++ b/features/netsocket/NetworkInterface.h @@ -373,16 +373,6 @@ public: return 0; } - /** Return pointer to a CellularInterface. - * @return Pointer to requested interface type or NULL if this class doesn't implement the interface. - * @deprecated CellularBase migrated to CellularInterface - use cellularInterface() - */ - MBED_DEPRECATED_SINCE("mbed-os-5.12", "CellularBase migrated to CellularInterface - use cellularInterface()") - virtual CellularInterface *cellularBase() // virtual retained for binary compatibility - { - return 0; - } - /** Return pointer to an EMACInterface. * @return Pointer to requested interface type or NULL if this class doesn't implement the interface. */ @@ -391,6 +381,14 @@ public: return 0; } + /** Return pointer to a CellularInterface. + * @return Pointer to requested interface type or NULL if this class doesn't implement the interface. + */ + virtual CellularInterface *cellularInterface() + { + return 0; + } + #if !defined(DOXYGEN_ONLY) protected: @@ -451,14 +449,6 @@ public: * configuration). */ virtual void set_default_parameters(); - - /** Return pointer to a CellularInterface. - * @return Pointer to requested interface type or NULL if this class doesn't implement the interface. - */ - virtual CellularInterface *cellularInterface() - { - return 0; - } }; #endif diff --git a/features/netsocket/cellular/mbed_lib.json b/features/netsocket/cellular/mbed_lib.json deleted file mode 100644 index 542221e609..0000000000 --- a/features/netsocket/cellular/mbed_lib.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name": "ppp-cell-iface", - "config": { - "baud-rate": 115200, - "apn-lookup": true, - "at-parser-buffer-size": 256, - "at-parser-timeout": 8000 - } -} \ No newline at end of file diff --git a/features/netsocket/nsapi.h b/features/netsocket/nsapi.h index 8e91c4afb4..41f2b88dd4 100644 --- a/features/netsocket/nsapi.h +++ b/features/netsocket/nsapi.h @@ -33,7 +33,7 @@ #include "netsocket/NetworkInterface.h" #include "netsocket/EthInterface.h" #include "netsocket/WiFiInterface.h" -#include "netsocket/CellularBase.h" +#include "netsocket/CellularInterface.h" #include "netsocket/MeshInterface.h" #include "netsocket/Socket.h" diff --git a/tools/test_configs/CellularInterface.json b/tools/test_configs/CellularInterface.json index e12b3cab98..958c39a759 100644 --- a/tools/test_configs/CellularInterface.json +++ b/tools/test_configs/CellularInterface.json @@ -34,7 +34,6 @@ "target.network-default-interface-type": "CELLULAR", "nsapi.default-cellular-sim-pin": null, "nsapi.dns-response-wait-time": 30000, - "ppp-cell-iface.apn-lookup": false, "cellular.use-apn-lookup": false, "lwip.ipv4-enabled": true, "lwip.ipv6-enabled": true,