mirror of https://github.com/ARMmbed/mbed-os.git
				
				
				
			cellular unittests ported to googletest framework
							parent
							
								
									0cd43157d1
								
							
						
					
					
						commit
						9f9aa4a210
					
				| 
						 | 
				
			
			@ -90,17 +90,35 @@ endif(COVERAGE)
 | 
			
		|||
set(unittest-includes-base
 | 
			
		||||
  "${PROJECT_SOURCE_DIR}/target_h"
 | 
			
		||||
  "${PROJECT_SOURCE_DIR}/target_h/events"
 | 
			
		||||
  "${PROJECT_SOURCE_DIR}/target_h/events/equeue"
 | 
			
		||||
  "${PROJECT_SOURCE_DIR}/target_h/platform"
 | 
			
		||||
  "${PROJECT_SOURCE_DIR}/stubs"
 | 
			
		||||
  "${PROJECT_SOURCE_DIR}/.."
 | 
			
		||||
  "${PROJECT_SOURCE_DIR}/../features"
 | 
			
		||||
  "${PROJECT_SOURCE_DIR}/../features/netsocket"
 | 
			
		||||
  "${PROJECT_SOURCE_DIR}/../platform"
 | 
			
		||||
  "${PROJECT_SOURCE_DIR}/../drivers"
 | 
			
		||||
  "${PROJECT_SOURCE_DIR}/../hal"
 | 
			
		||||
  "${PROJECT_SOURCE_DIR}/../events"
 | 
			
		||||
  "${PROJECT_SOURCE_DIR}/../events/equeue"
 | 
			
		||||
  "${PROJECT_SOURCE_DIR}/../rtos"
 | 
			
		||||
  "${PROJECT_SOURCE_DIR}/../rtos/TARGET_CORTEX"
 | 
			
		||||
  "${PROJECT_SOURCE_DIR}/../rtos/TARGET_CORTEX/rtx5/Include"
 | 
			
		||||
  "${PROJECT_SOURCE_DIR}/../cmsis"
 | 
			
		||||
  "${PROJECT_SOURCE_DIR}/../features/frameworks/nanostack-libservice/mbed-client-libservice/"
 | 
			
		||||
  "${PROJECT_SOURCE_DIR}/../features/frameworks"
 | 
			
		||||
  "${PROJECT_SOURCE_DIR}/../features/frameworks/mbed-trace"
 | 
			
		||||
  "${PROJECT_SOURCE_DIR}/../features/frameworks/nanostack-libservice"
 | 
			
		||||
  "${PROJECT_SOURCE_DIR}/../features/frameworks/nanostack-libservice/mbed-client-libservice"
 | 
			
		||||
  "${PROJECT_SOURCE_DIR}/../features/filesystem/fat"
 | 
			
		||||
  "${PROJECT_SOURCE_DIR}/../features/filesystem/fat/ChaN"
 | 
			
		||||
  "${PROJECT_SOURCE_DIR}/../features/filesystem/bd"
 | 
			
		||||
  "${PROJECT_SOURCE_DIR}/../features/filesystem/"
 | 
			
		||||
  "${PROJECT_SOURCE_DIR}/../features/filesystem/littlefs"
 | 
			
		||||
  "${PROJECT_SOURCE_DIR}/../features/filesystem/littlefs/littlefs"
 | 
			
		||||
  "${PROJECT_SOURCE_DIR}/../features/cellular/framework/API"
 | 
			
		||||
  "${PROJECT_SOURCE_DIR}/../features/cellular/framework/AT"
 | 
			
		||||
  "${PROJECT_SOURCE_DIR}/../features/cellular/framework"
 | 
			
		||||
  "${PROJECT_SOURCE_DIR}/../features/cellular/framework/common"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
# Create a list for test suites.
 | 
			
		||||
| 
						 | 
				
			
			@ -168,3 +186,4 @@ foreach(testfile ${unittest-file-list})
 | 
			
		|||
    message(WARNING "No test source files found for ${TEST_SUITE_NAME}.\n")
 | 
			
		||||
  endif(unittest-test-sources)
 | 
			
		||||
endforeach(testfile)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,49 +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 "test_at_cellularbase.h"
 | 
			
		||||
#include "AT_CellularBase.h"
 | 
			
		||||
 | 
			
		||||
class TestAT_CellularBase : public testing::Test {
 | 
			
		||||
protected:
 | 
			
		||||
    Test_AT_CellularBase *unit;
 | 
			
		||||
 | 
			
		||||
    virtual void SetUp()
 | 
			
		||||
    {
 | 
			
		||||
        unit = new Test_AT_CellularBase();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual void TearDown()
 | 
			
		||||
    {
 | 
			
		||||
        delete unit;
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularBase, Create)
 | 
			
		||||
{
 | 
			
		||||
    EXPECT_TRUE(unit);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularBase, test_AT_CellularBase_get_at_handler)
 | 
			
		||||
{
 | 
			
		||||
    unit->test_AT_CellularBase_get_at_handler();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularBase, test_AT_CellularBase_get_device_error)
 | 
			
		||||
{
 | 
			
		||||
    unit->test_AT_CellularBase_get_device_error();
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,59 +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 "test_at_cellularbase.h"
 | 
			
		||||
#include "EventQueue.h"
 | 
			
		||||
#include "AT_CellularBase.h"
 | 
			
		||||
#include "ATHandler_stub.h"
 | 
			
		||||
#include "FileHandle_stub.h"
 | 
			
		||||
#include <string.h>
 | 
			
		||||
 | 
			
		||||
using namespace mbed;
 | 
			
		||||
using namespace events;
 | 
			
		||||
 | 
			
		||||
Test_AT_CellularBase::Test_AT_CellularBase()
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Test_AT_CellularBase::~Test_AT_CellularBase()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Test_AT_CellularBase::test_AT_CellularBase_get_at_handler()
 | 
			
		||||
{
 | 
			
		||||
    EventQueue eq;
 | 
			
		||||
    FileHandle_stub fh;
 | 
			
		||||
    ATHandler ah(&fh, eq, 100, ",");
 | 
			
		||||
    AT_CellularBase at(ah);
 | 
			
		||||
 | 
			
		||||
    EXPECT_EQ(&ah, &at.get_at_handler());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Test_AT_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;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,137 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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 "EventQueue.h"
 | 
			
		||||
#include "AT_CellularBase.h"
 | 
			
		||||
#include "ATHandler_stub.h"
 | 
			
		||||
#include "FileHandle_stub.h"
 | 
			
		||||
#include <string.h>
 | 
			
		||||
 | 
			
		||||
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 AT_CellularBase::SupportedFeature unsupported_features[] =  {
 | 
			
		||||
            AT_CellularBase::AT_CGSN_WITH_TYPE,
 | 
			
		||||
            AT_CellularBase::SUPPORTED_FEATURE_END_MARK
 | 
			
		||||
        };
 | 
			
		||||
        set_unsupported_features(unsupported_features);
 | 
			
		||||
        return is_supported(AT_CGSN_WITH_TYPE);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    bool check_supported()
 | 
			
		||||
    {
 | 
			
		||||
        set_unsupported_features(NULL);
 | 
			
		||||
        return is_supported(AT_CGSN_WITH_TYPE);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    bool check_supported_not_found()
 | 
			
		||||
    {
 | 
			
		||||
        static const AT_CellularBase::SupportedFeature unsupported_features[] =  {
 | 
			
		||||
            AT_CellularBase::AT_CGSN_WITH_TYPE,
 | 
			
		||||
            AT_CellularBase::SUPPORTED_FEATURE_END_MARK
 | 
			
		||||
        };
 | 
			
		||||
        set_unsupported_features(unsupported_features);
 | 
			
		||||
        return is_supported(SUPPORTED_FEATURE_END_MARK);
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// 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_unsupported_features)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue eq;
 | 
			
		||||
    FileHandle_stub fh;
 | 
			
		||||
    ATHandler ah(&fh, eq, 0, ",");
 | 
			
		||||
    AT_CellularBase at(ah);
 | 
			
		||||
 | 
			
		||||
    static const AT_CellularBase::SupportedFeature unsupported_features[] =  {
 | 
			
		||||
        AT_CellularBase::AT_CGSN_WITH_TYPE,
 | 
			
		||||
        AT_CellularBase::SUPPORTED_FEATURE_END_MARK
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    at.set_unsupported_features(unsupported_features);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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_TRUE(true == my_at.check_supported());
 | 
			
		||||
    EXPECT_TRUE(true == my_at.check_supported_not_found());
 | 
			
		||||
    EXPECT_TRUE(false == my_at.check_not_supported());
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -23,10 +23,9 @@ set(unittest-sources
 | 
			
		|||
 | 
			
		||||
# Test files
 | 
			
		||||
set(unittest-test-sources
 | 
			
		||||
  features/cellular/framework/AT/at_cellularbase/at_cellularbasetest.cpp
 | 
			
		||||
  stubs/mbed_assert_stub.c
 | 
			
		||||
  stubs/ATHandler_stub.cpp
 | 
			
		||||
  stubs/EventQueue_stub.cpp
 | 
			
		||||
  stubs/FileHandle_stub.cpp
 | 
			
		||||
  features/cellular/framework/AT/AT_CellularBase/test_at_cellularbase.cpp
 | 
			
		||||
  features/cellular/framework/AT/AT_CellularBase/at_cellularbasetest.cpp
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,261 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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_CellularDevice.h"
 | 
			
		||||
#include "ATHandler_stub.h"
 | 
			
		||||
#include "AT_CellularBase_stub.h"
 | 
			
		||||
#include <string.h>
 | 
			
		||||
 | 
			
		||||
using namespace mbed;
 | 
			
		||||
using namespace events;
 | 
			
		||||
 | 
			
		||||
class TestAT_CellularDevice : public testing::Test {
 | 
			
		||||
protected:
 | 
			
		||||
 | 
			
		||||
    void SetUp() {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void TearDown() {
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularDevice, Create)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    AT_CellularDevice dev(que);
 | 
			
		||||
 | 
			
		||||
    CellularDevice *dev2 = new AT_CellularDevice(que);
 | 
			
		||||
 | 
			
		||||
    EXPECT_TRUE(dev2 != NULL);
 | 
			
		||||
    delete dev2;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_get_at_handler)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    AT_CellularDevice dev(que);
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    FileHandle_stub fh2;
 | 
			
		||||
    FileHandle_stub fh3;
 | 
			
		||||
 | 
			
		||||
    EXPECT_TRUE(dev.open_network(&fh1));
 | 
			
		||||
    EXPECT_TRUE(dev.open_sms(&fh2));
 | 
			
		||||
    AT_CellularBase_stub::handler_value = AT_CellularBase_stub::handler_at_constructor_value;
 | 
			
		||||
    EXPECT_TRUE(dev.open_sim(&fh3));
 | 
			
		||||
    ATHandler_stub::fh_value = &fh1;
 | 
			
		||||
    EXPECT_TRUE(dev.open_power(&fh1));
 | 
			
		||||
 | 
			
		||||
    ATHandler_stub::fh_value = NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_open_network)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    AT_CellularDevice dev(que);
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
 | 
			
		||||
    EXPECT_TRUE(!dev.open_network(NULL));
 | 
			
		||||
    EXPECT_TRUE(dev.open_network(&fh1));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_open_sms)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    AT_CellularDevice dev(que);
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
 | 
			
		||||
    EXPECT_TRUE(!dev.open_sms(NULL));
 | 
			
		||||
    EXPECT_TRUE(dev.open_sms(&fh1));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_open_power)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    AT_CellularDevice dev(que);
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
 | 
			
		||||
    EXPECT_TRUE(!dev.open_power(NULL));
 | 
			
		||||
    EXPECT_TRUE(dev.open_power(&fh1));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_open_sim)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    AT_CellularDevice dev(que);
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
 | 
			
		||||
    EXPECT_TRUE(! dev.open_sim(NULL));
 | 
			
		||||
    EXPECT_TRUE(dev.open_sim(&fh1));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_open_information)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    AT_CellularDevice dev(que);
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
 | 
			
		||||
    EXPECT_TRUE(!dev.open_information(NULL));
 | 
			
		||||
    EXPECT_TRUE(dev.open_information(&fh1));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_close_network)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    AT_CellularDevice dev(que);
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler_stub::ref_count = 0;
 | 
			
		||||
 | 
			
		||||
    EXPECT_TRUE(dev.open_network(&fh1));
 | 
			
		||||
    EXPECT_TRUE(ATHandler_stub::ref_count == 1);
 | 
			
		||||
 | 
			
		||||
    dev.close_network();
 | 
			
		||||
    EXPECT_TRUE(ATHandler_stub::ref_count == 0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_close_sms)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    AT_CellularDevice dev(que);
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler_stub::ref_count = 0;
 | 
			
		||||
 | 
			
		||||
    EXPECT_TRUE(dev.open_sms(&fh1));
 | 
			
		||||
    EXPECT_TRUE(ATHandler_stub::ref_count == 1);
 | 
			
		||||
 | 
			
		||||
    dev.close_sms();
 | 
			
		||||
    EXPECT_TRUE(ATHandler_stub::ref_count == 0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_close_power)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    AT_CellularDevice dev(que);
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler_stub::ref_count = 0;
 | 
			
		||||
 | 
			
		||||
    EXPECT_TRUE(dev.open_power(&fh1));
 | 
			
		||||
    EXPECT_TRUE(ATHandler_stub::ref_count == 1);
 | 
			
		||||
 | 
			
		||||
    dev.close_power();
 | 
			
		||||
    EXPECT_TRUE(ATHandler_stub::ref_count == 0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_close_sim)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    AT_CellularDevice dev(que);
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler_stub::ref_count = 0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    EXPECT_TRUE(dev.open_sim(&fh1));
 | 
			
		||||
    dev.close_sms(); // this should not affect to refcount as it's not opened
 | 
			
		||||
    EXPECT_TRUE(ATHandler_stub::ref_count == 1);
 | 
			
		||||
 | 
			
		||||
    dev.close_sim();
 | 
			
		||||
    EXPECT_TRUE(ATHandler_stub::ref_count == 0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_close_information)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    AT_CellularDevice dev(que);
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler_stub::int_value = 0;
 | 
			
		||||
 | 
			
		||||
    EXPECT_TRUE(dev.open_information(&fh1));
 | 
			
		||||
 | 
			
		||||
    ATHandler_stub::fh_value = NULL;
 | 
			
		||||
    AT_CellularBase_stub::handler_value = NULL;
 | 
			
		||||
    dev.close_information();
 | 
			
		||||
 | 
			
		||||
    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();
 | 
			
		||||
 | 
			
		||||
    ATHandler_stub::fh_value = NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_set_timeout)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    AT_CellularDevice dev(que);
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler_stub::timeout = 0;
 | 
			
		||||
    ATHandler_stub::default_timeout = false;
 | 
			
		||||
 | 
			
		||||
    // no interfaces open so settings timeout should not change anything
 | 
			
		||||
    dev.set_timeout(5000);
 | 
			
		||||
    EXPECT_TRUE(ATHandler_stub::timeout == 0);
 | 
			
		||||
    EXPECT_TRUE(ATHandler_stub::default_timeout == false);
 | 
			
		||||
 | 
			
		||||
    EXPECT_TRUE(dev.open_sim(&fh1));
 | 
			
		||||
    EXPECT_TRUE(ATHandler_stub::ref_count == 1);
 | 
			
		||||
 | 
			
		||||
    dev.set_timeout(5000);
 | 
			
		||||
    EXPECT_TRUE(ATHandler_stub::timeout == 5000);
 | 
			
		||||
    EXPECT_TRUE(ATHandler_stub::default_timeout == true);
 | 
			
		||||
 | 
			
		||||
    dev.close_sim();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_modem_debug_on)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    AT_CellularDevice dev(que);
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler_stub::debug_on = false;
 | 
			
		||||
 | 
			
		||||
    // no interfaces open so debug toggling should not affect
 | 
			
		||||
    dev.modem_debug_on(true);
 | 
			
		||||
    EXPECT_TRUE(ATHandler_stub::debug_on == false);
 | 
			
		||||
 | 
			
		||||
    EXPECT_TRUE(dev.open_sim(&fh1));
 | 
			
		||||
    EXPECT_TRUE(ATHandler_stub::ref_count == 1);
 | 
			
		||||
 | 
			
		||||
    dev.modem_debug_on(true);
 | 
			
		||||
    EXPECT_TRUE(ATHandler_stub::debug_on == true);
 | 
			
		||||
 | 
			
		||||
    dev.close_sim();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_get_stack)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    AT_CellularDevice dev(que);
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
 | 
			
		||||
    NetworkStack *stack = dev.get_stack();
 | 
			
		||||
    EXPECT_TRUE(stack == NULL);
 | 
			
		||||
 | 
			
		||||
    EXPECT_TRUE(dev.open_network(&fh1));
 | 
			
		||||
 | 
			
		||||
    stack = dev.get_stack();
 | 
			
		||||
    EXPECT_TRUE(stack == NULL); // Not in PPP so also null but this is got from the network class
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularDevice, test_AT_CellularDevice_get_send_delay)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    AT_CellularDevice dev(que);
 | 
			
		||||
    EXPECT_TRUE(0 == dev.get_send_delay());
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,38 @@
 | 
			
		|||
 | 
			
		||||
####################
 | 
			
		||||
# UNIT TESTS
 | 
			
		||||
####################
 | 
			
		||||
 | 
			
		||||
# Unit test suite name
 | 
			
		||||
set(TEST_SUITE_NAME "at_cellular_device_unit")
 | 
			
		||||
 | 
			
		||||
# Add test specific include paths
 | 
			
		||||
set(unittest-includes ${unittest-includes}
 | 
			
		||||
  features/cellular/framework/common/util
 | 
			
		||||
  ../features/cellular/framework/common
 | 
			
		||||
  ../features/cellular/framework/AT
 | 
			
		||||
  ../features/frameworks/mbed-client-randlib/mbed-client-randlib
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
# Source files
 | 
			
		||||
set(unittest-sources
 | 
			
		||||
  stubs/randLIB_stub.c
 | 
			
		||||
  ../features/cellular/framework/AT/AT_CellularDevice.cpp
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
# Test files
 | 
			
		||||
set(unittest-test-sources
 | 
			
		||||
  features/cellular/framework/AT/at_cellulardevice/at_cellulardevicetest.cpp
 | 
			
		||||
  stubs/AT_CellularNetwork_stub.cpp 
 | 
			
		||||
  stubs/ATHandler_stub.cpp 
 | 
			
		||||
  stubs/AT_CellularSMS_stub.cpp 
 | 
			
		||||
  stubs/AT_CellularSIM_stub.cpp 
 | 
			
		||||
  stubs/AT_CellularPower_stub.cpp 
 | 
			
		||||
  stubs/AT_CellularInformation_stub.cpp 
 | 
			
		||||
  stubs/CellularUtil_stub.cpp 
 | 
			
		||||
  stubs/AT_CellularBase_stub.cpp 
 | 
			
		||||
  stubs/NetworkInterface_stub.cpp 
 | 
			
		||||
  stubs/EventQueue_stub.cpp 
 | 
			
		||||
  stubs/FileHandle_stub.cpp 
 | 
			
		||||
  stubs/mbed_assert_stub.cpp
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,155 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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 <string.h>
 | 
			
		||||
#include "ATHandler_stub.h"
 | 
			
		||||
#include "EventQueue.h"
 | 
			
		||||
#include "FileHandle_stub.h"
 | 
			
		||||
#include "AT_CellularBase_stub.h"
 | 
			
		||||
#include "ATHandler.h"
 | 
			
		||||
#include "AT_CellularInformation.h"
 | 
			
		||||
#include "AT_CellularBase.h"
 | 
			
		||||
 | 
			
		||||
using namespace mbed;
 | 
			
		||||
using namespace events;
 | 
			
		||||
 | 
			
		||||
// AStyle ignored as the definition is not clear due to preprocessor usage
 | 
			
		||||
// *INDENT-OFF*
 | 
			
		||||
class TestAT_CellularInformation : public testing::Test {
 | 
			
		||||
protected:
 | 
			
		||||
 | 
			
		||||
    void SetUp()
 | 
			
		||||
    {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void TearDown()
 | 
			
		||||
    {
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
// *INDENT-ON*
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularInformation, Create)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue eq;
 | 
			
		||||
    FileHandle_stub fh;
 | 
			
		||||
    ATHandler ah(&fh, eq, 0, ",");
 | 
			
		||||
    AT_CellularInformation *unit = new AT_CellularInformation(ah);
 | 
			
		||||
    EXPECT_TRUE(unit != NULL);
 | 
			
		||||
    delete unit;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularInformation, test_AT_CellularInformation_get_manufacturer)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue eq;
 | 
			
		||||
    FileHandle_stub fh;
 | 
			
		||||
    ATHandler ah(&fh, eq, 0, ",");
 | 
			
		||||
    AT_CellularInformation aci(ah);
 | 
			
		||||
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK;
 | 
			
		||||
    ATHandler_stub::read_string_value = "some";
 | 
			
		||||
    ATHandler_stub::ssize_value = 4;
 | 
			
		||||
 | 
			
		||||
    char buf[8];
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == aci.get_manufacturer(buf, 8));
 | 
			
		||||
    EXPECT_TRUE(strcmp("some", buf) == 0);
 | 
			
		||||
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR;
 | 
			
		||||
    ATHandler_stub::ssize_value = -1;
 | 
			
		||||
    buf[0] = 0;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == aci.get_manufacturer(buf, 8));
 | 
			
		||||
    EXPECT_TRUE(strlen(buf) == 0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularInformation, test_AT_CellularInformation_get_model)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue eq;
 | 
			
		||||
    FileHandle_stub fh;
 | 
			
		||||
    ATHandler ah(&fh, eq, 0, ",");
 | 
			
		||||
    AT_CellularInformation aci(ah);
 | 
			
		||||
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK;
 | 
			
		||||
    ATHandler_stub::read_string_value = "model";
 | 
			
		||||
    ATHandler_stub::ssize_value = 5;
 | 
			
		||||
    char buf[8];
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == aci.get_model(buf, 8));
 | 
			
		||||
    EXPECT_TRUE(strcmp("model", buf) == 0);
 | 
			
		||||
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR;
 | 
			
		||||
    ATHandler_stub::ssize_value = -1;
 | 
			
		||||
    buf[0] = 0;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == aci.get_model(buf, 8));
 | 
			
		||||
    EXPECT_TRUE(strlen(buf) == 0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularInformation, test_AT_CellularInformation_get_revision)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue eq;
 | 
			
		||||
    FileHandle_stub fh;
 | 
			
		||||
    ATHandler ah(&fh, eq, 0, ",");
 | 
			
		||||
 | 
			
		||||
    //Used heap var here to visit heap constructor
 | 
			
		||||
    AT_CellularInformation *aci = new AT_CellularInformation(ah);
 | 
			
		||||
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK;
 | 
			
		||||
    ATHandler_stub::read_string_value = "revision";
 | 
			
		||||
    ATHandler_stub::ssize_value = 8;
 | 
			
		||||
 | 
			
		||||
    char buf[9];
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == aci->get_revision(buf, 9));
 | 
			
		||||
    EXPECT_TRUE(strcmp("revision", buf) == 0);
 | 
			
		||||
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR;
 | 
			
		||||
    ATHandler_stub::ssize_value = -1;
 | 
			
		||||
    buf[0] = 0;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == aci->get_revision(buf, 8));
 | 
			
		||||
    EXPECT_TRUE(strlen(buf) == 0);
 | 
			
		||||
 | 
			
		||||
    delete aci;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularInformation, test_AT_CellularInformation_get_serial_number)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue eq;
 | 
			
		||||
    FileHandle_stub fh;
 | 
			
		||||
    ATHandler ah(&fh, eq, 0, ",");
 | 
			
		||||
    AT_CellularInformation aci(ah);
 | 
			
		||||
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK;
 | 
			
		||||
    ATHandler_stub::read_string_value = "1234567";
 | 
			
		||||
    ATHandler_stub::ssize_value = 7;
 | 
			
		||||
    char buf[8];
 | 
			
		||||
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == aci.get_serial_number(buf, 8, CellularInformation::SN));
 | 
			
		||||
    EXPECT_TRUE(strcmp("1234567", buf) == 0);
 | 
			
		||||
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR;
 | 
			
		||||
    ATHandler_stub::ssize_value = -1;
 | 
			
		||||
    buf[0] = 0;
 | 
			
		||||
    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;
 | 
			
		||||
    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 = "1234567";
 | 
			
		||||
    ATHandler_stub::ssize_value = 7;
 | 
			
		||||
    AT_CellularBase_stub::supported_bool = true;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == aci.get_serial_number(buf, 8, CellularInformation::IMEI));
 | 
			
		||||
    EXPECT_TRUE(strcmp("1234567", buf) == 0);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,31 @@
 | 
			
		|||
 | 
			
		||||
####################
 | 
			
		||||
# UNIT TESTS
 | 
			
		||||
####################
 | 
			
		||||
 | 
			
		||||
# Unit test suite name
 | 
			
		||||
set(TEST_SUITE_NAME "at_cellular_information_unit")
 | 
			
		||||
 | 
			
		||||
# Add test specific include paths
 | 
			
		||||
set(unittest-includes ${unittest-includes}
 | 
			
		||||
  features/cellular/framework/common/util
 | 
			
		||||
  ../features/cellular/framework/common
 | 
			
		||||
  ../features/cellular/framework/AT
 | 
			
		||||
  ../features/frameworks/mbed-client-randlib/mbed-client-randlib
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
# Source files
 | 
			
		||||
set(unittest-sources
 | 
			
		||||
  stubs/randLIB_stub.c
 | 
			
		||||
  ../features/cellular/framework/AT/AT_CellularInformation.cpp
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
# Test files
 | 
			
		||||
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
 | 
			
		||||
)
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| 
						 | 
				
			
			@ -0,0 +1,37 @@
 | 
			
		|||
 | 
			
		||||
####################
 | 
			
		||||
# UNIT TESTS
 | 
			
		||||
####################
 | 
			
		||||
 | 
			
		||||
# Unit test suite name
 | 
			
		||||
set(TEST_SUITE_NAME "at_cellular_network_unit")
 | 
			
		||||
 | 
			
		||||
# Add test specific include paths
 | 
			
		||||
set(unittest-includes ${unittest-includes}
 | 
			
		||||
  features/cellular/framework/common/util
 | 
			
		||||
  ../features/cellular/framework/common
 | 
			
		||||
  ../features/cellular/framework/AT
 | 
			
		||||
  ../features/frameworks/mbed-client-randlib/mbed-client-randlib
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
# Source files
 | 
			
		||||
set(unittest-sources
 | 
			
		||||
  ../features/cellular/framework/AT/AT_CellularNetwork.cpp
 | 
			
		||||
  ../features/cellular/framework/AT/AT_CellularStack.cpp
 | 
			
		||||
  ../features/cellular/framework/common/CellularUtil.cpp
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
# Test files
 | 
			
		||||
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/NetworkInterface_stub.cpp 
 | 
			
		||||
  stubs/NetworkStack_stub.cpp 
 | 
			
		||||
  stubs/us_ticker_stub.cpp 
 | 
			
		||||
  stubs/mbed_assert_stub.cpp 
 | 
			
		||||
  stubs/SocketAddress_stub.cpp 
 | 
			
		||||
  stubs/randLIB_stub.cpp 
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,201 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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 <string.h>
 | 
			
		||||
#include "AT_CellularNetwork.h"
 | 
			
		||||
#include "EventQueue.h"
 | 
			
		||||
#include "ATHandler.h"
 | 
			
		||||
#include "AT_CellularPower.h"
 | 
			
		||||
#include "FileHandle_stub.h"
 | 
			
		||||
#include "ATHandler_stub.h"
 | 
			
		||||
 | 
			
		||||
using namespace mbed;
 | 
			
		||||
using namespace events;
 | 
			
		||||
 | 
			
		||||
// AStyle ignored as the definition is not clear due to preprocessor usage
 | 
			
		||||
// *INDENT-OFF*
 | 
			
		||||
class TestAT_CellularPower : public testing::Test {
 | 
			
		||||
protected:
 | 
			
		||||
 | 
			
		||||
    void SetUp() {
 | 
			
		||||
        ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void TearDown() {
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
// *INDENT-ON*
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void device_ready_cb()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularPower, Create)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    AT_CellularPower *pow = new AT_CellularPower(at);
 | 
			
		||||
 | 
			
		||||
    EXPECT_TRUE(pow != NULL);
 | 
			
		||||
 | 
			
		||||
    delete pow;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularPower, test_AT_CellularPower_on)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    AT_CellularPower pow(at);
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_UNSUPPORTED == pow.on());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularPower, test_AT_CellularPower_off)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    AT_CellularPower pow(at);
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_UNSUPPORTED == pow.off());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularPower, test_AT_CellularPower_set_at_mode)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    AT_CellularPower pow(at);
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == pow.set_at_mode());
 | 
			
		||||
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == pow.set_at_mode());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularPower, test_AT_CellularPower_set_power_level)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    AT_CellularPower pow(at);
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == pow.set_power_level(6));
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == pow.set_power_level(1, 1));
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == pow.set_power_level(1, 0));
 | 
			
		||||
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == pow.set_power_level(6));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularPower, test_AT_CellularPower_reset)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    AT_CellularPower pow(at);
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == pow.reset());
 | 
			
		||||
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == pow.reset());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularPower, test_AT_CellularPower_opt_power_save_mode)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    AT_CellularPower pow(at);
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == pow.opt_power_save_mode(0, 0));
 | 
			
		||||
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == pow.opt_power_save_mode(10, 0));
 | 
			
		||||
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == pow.opt_power_save_mode(912, 0));
 | 
			
		||||
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == pow.opt_power_save_mode(1834, 1834));
 | 
			
		||||
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == pow.opt_power_save_mode(18345, 18345));
 | 
			
		||||
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == pow.opt_power_save_mode(101234, 101234));
 | 
			
		||||
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == pow.opt_power_save_mode(1012345, 1012345));
 | 
			
		||||
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == pow.opt_power_save_mode(39612345, 39612345));
 | 
			
		||||
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == pow.opt_power_save_mode(0, 0));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularPower, test_AT_CellularPower_opt_receive_period)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    AT_CellularPower pow(at);
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == pow.opt_receive_period(1, CellularPower::EDRXUTRAN_Iu_mode, 3));
 | 
			
		||||
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == pow.opt_receive_period(1, CellularPower::EDRXUTRAN_Iu_mode, 3));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularPower, test_AT_CellularPower_is_device_ready)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    AT_CellularPower pow(at);
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_AUTH_FAILURE;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_AUTH_FAILURE == pow.is_device_ready());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularPower, test_AT_CellularPower_set_device_ready_urc_cb)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    AT_CellularPower pow(at);
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_UNSUPPORTED == pow.set_device_ready_urc_cb(&device_ready_cb));
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_UNSUPPORTED == pow.set_device_ready_urc_cb(NULL));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularPower, test_AT_CellularPower_remove_device_ready_urc_cb)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    AT_CellularPower pow(at);
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_UNSUPPORTED == pow.set_device_ready_urc_cb(&device_ready_cb));
 | 
			
		||||
 | 
			
		||||
    pow.remove_device_ready_urc_cb(NULL);
 | 
			
		||||
    pow.remove_device_ready_urc_cb(&device_ready_cb);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,31 @@
 | 
			
		|||
 | 
			
		||||
####################
 | 
			
		||||
# UNIT TESTS
 | 
			
		||||
####################
 | 
			
		||||
 | 
			
		||||
# Unit test suite name
 | 
			
		||||
set(TEST_SUITE_NAME "at_cellular_power_unit")
 | 
			
		||||
 | 
			
		||||
# Add test specific include paths
 | 
			
		||||
set(unittest-includes ${unittest-includes}
 | 
			
		||||
  features/cellular/framework/common/util
 | 
			
		||||
  ../features/cellular/framework/common
 | 
			
		||||
  ../features/cellular/framework/AT
 | 
			
		||||
  ../features/frameworks/mbed-client-randlib/mbed-client-randlib
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
# Source files
 | 
			
		||||
set(unittest-sources
 | 
			
		||||
  ../features/cellular/framework/AT/AT_CellularPower.cpp
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
# Test files
 | 
			
		||||
set(unittest-test-sources
 | 
			
		||||
  features/cellular/framework/AT/at_cellularpower/at_cellularpowertest.cpp
 | 
			
		||||
  stubs/ATHandler_stub.cpp
 | 
			
		||||
  stubs/AT_CellularBase_stub.cpp
 | 
			
		||||
  stubs/EventQueue_stub.cpp
 | 
			
		||||
  stubs/FileHandle_stub.cpp
 | 
			
		||||
  stubs/CellularUtil_stub.cpp
 | 
			
		||||
  stubs/mbed_assert_stub.cpp
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,204 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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 "ATHandler_stub.h"
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include "AT_CellularNetwork.h"
 | 
			
		||||
#include "EventQueue.h"
 | 
			
		||||
#include "ATHandler.h"
 | 
			
		||||
#include "AT_CellularSIM.h"
 | 
			
		||||
#include "FileHandle_stub.h"
 | 
			
		||||
#include "CellularLog.h"
 | 
			
		||||
#include "ATHandler_stub.h"
 | 
			
		||||
 | 
			
		||||
using namespace mbed;
 | 
			
		||||
using namespace events;
 | 
			
		||||
 | 
			
		||||
// AStyle ignored as the definition is not clear due to preprocessor usage
 | 
			
		||||
// *INDENT-OFF*
 | 
			
		||||
class TestAT_CellularSIM : public testing::Test {
 | 
			
		||||
protected:
 | 
			
		||||
 | 
			
		||||
    void SetUp()
 | 
			
		||||
    {
 | 
			
		||||
        ATHandler_stub::read_string_index = kRead_string_table_size;
 | 
			
		||||
        ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK;
 | 
			
		||||
        ATHandler_stub::read_string_value = NULL;
 | 
			
		||||
        ATHandler_stub::ssize_value = 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void TearDown()
 | 
			
		||||
    {
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
// *INDENT-ON*
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularSIM, Create)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    AT_CellularSIM *sim = new AT_CellularSIM(at);
 | 
			
		||||
 | 
			
		||||
    EXPECT_TRUE(sim != NULL);
 | 
			
		||||
    delete sim;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularSIM, test_AT_CellularSIM_set_pin)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    AT_CellularSIM sim(at);
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == sim.set_pin("12"));
 | 
			
		||||
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == sim.set_pin("12"));
 | 
			
		||||
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK;
 | 
			
		||||
    ATHandler_stub::read_string_value = "READY";
 | 
			
		||||
    ATHandler_stub::ssize_value = 5;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == sim.set_pin("12"));
 | 
			
		||||
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == sim.set_pin(NULL));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularSIM, test_AT_CellularSIM_change_pin)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    AT_CellularSIM sim(at);
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == sim.change_pin("12", "34"));
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == sim.change_pin(NULL, "34"));
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == sim.change_pin("12", NULL));
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == sim.change_pin(NULL, NULL));
 | 
			
		||||
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == sim.change_pin("12", "34"));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularSIM, test_AT_CellularSIM_set_pin_query)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    AT_CellularSIM sim(at);
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == sim.set_pin_query("12", true));
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == sim.set_pin_query(NULL, true));
 | 
			
		||||
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == sim.set_pin_query("12", false));
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == sim.set_pin_query(NULL, false));
 | 
			
		||||
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == sim.set_pin_query("12", false));
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == sim.set_pin_query("12", true));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularSIM, test_AT_CellularSIM_get_sim_state)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    AT_CellularSIM sim(at);
 | 
			
		||||
    CellularSIM::SimState state;
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK;
 | 
			
		||||
    ATHandler_stub::ssize_value = -1;
 | 
			
		||||
    ATHandler_stub::read_string_value = NULL;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == sim.get_sim_state(state));
 | 
			
		||||
    EXPECT_TRUE(CellularSIM::SimStateUnknown == state);
 | 
			
		||||
 | 
			
		||||
    ATHandler_stub::read_string_value = "READY";
 | 
			
		||||
    ATHandler_stub::ssize_value = 5;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == sim.get_sim_state(state));
 | 
			
		||||
    EXPECT_TRUE(CellularSIM::SimStateReady == state);
 | 
			
		||||
 | 
			
		||||
    ATHandler_stub::read_string_value = "SIM PIN";
 | 
			
		||||
    ATHandler_stub::ssize_value = 7;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == sim.get_sim_state(state));
 | 
			
		||||
    EXPECT_TRUE(CellularSIM::SimStatePinNeeded == state);
 | 
			
		||||
 | 
			
		||||
    ATHandler_stub::read_string_value = "SIM PUK";
 | 
			
		||||
    ATHandler_stub::ssize_value = 7;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == sim.get_sim_state(state));
 | 
			
		||||
    EXPECT_TRUE(CellularSIM::SimStatePukNeeded == state);
 | 
			
		||||
 | 
			
		||||
    ATHandler_stub::read_string_value = "SOME CRAP";
 | 
			
		||||
    ATHandler_stub::ssize_value = 9;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == sim.get_sim_state(state));
 | 
			
		||||
    EXPECT_TRUE(CellularSIM::SimStateUnknown == state);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularSIM, test_AT_CellularSIM_get_imsi)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    char imsi[16];
 | 
			
		||||
    AT_CellularSIM sim(at);
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK;
 | 
			
		||||
    ATHandler_stub::read_string_value = "123456789012345";
 | 
			
		||||
    ATHandler_stub::ssize_value = 15;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == sim.get_imsi(imsi));
 | 
			
		||||
    EXPECT_TRUE(strcmp(ATHandler_stub::read_string_value, imsi) == 0);
 | 
			
		||||
 | 
			
		||||
    ATHandler_stub::read_string_value = NULL;
 | 
			
		||||
    ATHandler_stub::ssize_value = -1;
 | 
			
		||||
    ATHandler_stub::read_string_index = -1;
 | 
			
		||||
    imsi[0] = 0;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == sim.get_imsi(imsi));
 | 
			
		||||
    EXPECT_TRUE(strlen(imsi) == 0);
 | 
			
		||||
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_PARAMETER == sim.get_imsi(NULL));
 | 
			
		||||
 | 
			
		||||
    // this would fail as get_imsi should take another param which is the size of the buffer which we could use for validation.
 | 
			
		||||
    // Now we have improved documentation that that the given imsi buffer size must be over 15.
 | 
			
		||||
    //char imsi2[5];
 | 
			
		||||
    //EXPECT_TRUE(NSAPI_ERROR_PARAMETER == sim.get_imsi(imsi2));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularSIM, test_AT_CellularSIM_get_iccid)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    char buf[16];
 | 
			
		||||
    AT_CellularSIM sim(at);
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK;
 | 
			
		||||
    ATHandler_stub::read_string_value = "123456789012345";
 | 
			
		||||
    ATHandler_stub::ssize_value = 15;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == sim.get_iccid(buf, 16));
 | 
			
		||||
    EXPECT_TRUE(strcmp(ATHandler_stub::read_string_value, buf) == 0);
 | 
			
		||||
 | 
			
		||||
    buf[0] = 0;
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR;
 | 
			
		||||
    ATHandler_stub::read_string_value = NULL;
 | 
			
		||||
    ATHandler_stub::ssize_value = -1;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == sim.get_iccid(buf, 16));
 | 
			
		||||
    EXPECT_TRUE(strlen(buf) == 0);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,32 @@
 | 
			
		|||
 | 
			
		||||
####################
 | 
			
		||||
# UNIT TESTS
 | 
			
		||||
####################
 | 
			
		||||
 | 
			
		||||
# Unit test suite name
 | 
			
		||||
set(TEST_SUITE_NAME "at_cellular_sim_unit")
 | 
			
		||||
 | 
			
		||||
# Add test specific include paths
 | 
			
		||||
set(unittest-includes ${unittest-includes}
 | 
			
		||||
  features/cellular/framework/common/util
 | 
			
		||||
  ../features/cellular/framework/common
 | 
			
		||||
  ../features/cellular/framework/AT
 | 
			
		||||
  ../features/frameworks/mbed-client-randlib/mbed-client-randlib
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
# Source files
 | 
			
		||||
set(unittest-sources
 | 
			
		||||
  ../features/cellular/framework/AT/AT_CellularSIM.cpp
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
# Test files
 | 
			
		||||
set(unittest-test-sources
 | 
			
		||||
  features/cellular/framework/AT/at_cellularsim/at_cellularsimtest.cpp
 | 
			
		||||
  stubs/ATHandler_stub.cpp
 | 
			
		||||
  stubs/AT_CellularBase_stub.cpp
 | 
			
		||||
  stubs/EventQueue_stub.cpp
 | 
			
		||||
  stubs/FileHandle_stub.cpp
 | 
			
		||||
  stubs/CellularUtil_stub.cpp
 | 
			
		||||
  stubs/us_ticker_stub.cpp
 | 
			
		||||
  stubs/mbed_assert_stub.cpp
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,203 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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 <string.h>
 | 
			
		||||
#include "AT_CellularNetwork.h"
 | 
			
		||||
#include "EventQueue.h"
 | 
			
		||||
#include "ATHandler.h"
 | 
			
		||||
#include "ATHandler_stub.h"
 | 
			
		||||
#include "AT_CellularSMS.h"
 | 
			
		||||
#include "FileHandle_stub.h"
 | 
			
		||||
#include "CellularLog.h"
 | 
			
		||||
 | 
			
		||||
using namespace mbed;
 | 
			
		||||
using namespace events;
 | 
			
		||||
 | 
			
		||||
// AStyle ignored as the definition is not clear due to preprocessor usage
 | 
			
		||||
// *INDENT-OFF*
 | 
			
		||||
class TestAT_CellularSMS : public testing::Test {
 | 
			
		||||
protected:
 | 
			
		||||
 | 
			
		||||
    void SetUp()
 | 
			
		||||
    {
 | 
			
		||||
        ATHandler_stub::return_given_size = false;
 | 
			
		||||
        ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void TearDown()
 | 
			
		||||
    {
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
// *INDENT-ON*
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularSMS, Create)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    AT_CellularSMS *sms = new AT_CellularSMS(at);
 | 
			
		||||
 | 
			
		||||
    EXPECT_TRUE(sms != NULL);
 | 
			
		||||
    delete sms;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularSMS, test_AT_CellularSMS_initialize)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    AT_CellularSMS sms(at);
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_AUTH_FAILURE;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_NO_MEMORY == sms.initialize(CellularSMS::CellularSMSMmodeText));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularSMS, test_AT_CellularSMS_send_sms)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    AT_CellularSMS sms(at);
 | 
			
		||||
    EXPECT_EQ(NSAPI_ERROR_PARAMETER, sms.send_sms(NULL, "2", 1));
 | 
			
		||||
 | 
			
		||||
    sms.initialize(CellularSMS::CellularSMSMmodeText);
 | 
			
		||||
    ATHandler_stub::size_value = 1;
 | 
			
		||||
    EXPECT_EQ(1, sms.send_sms("1", "22", 2));
 | 
			
		||||
 | 
			
		||||
    ATHandler_stub::size_value = 2;
 | 
			
		||||
    EXPECT_EQ(2, sms.send_sms("1", "22", 2));
 | 
			
		||||
 | 
			
		||||
    ATHandler_stub::return_given_size = true; // PDU mode write is much longer than than msg len
 | 
			
		||||
    sms.initialize(CellularSMS::CellularSMSMmodePDU);
 | 
			
		||||
    EXPECT_EQ(2, sms.send_sms("1", "23", 2));;
 | 
			
		||||
 | 
			
		||||
    ATHandler_stub::nsapi_error_ok_counter = 1;
 | 
			
		||||
    ATHandler_stub::size_value = 32;
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_AUTH_FAILURE;
 | 
			
		||||
    EXPECT_EQ(NSAPI_ERROR_AUTH_FAILURE, sms.send_sms("1", "23232323", 8));
 | 
			
		||||
 | 
			
		||||
    ATHandler_stub::nsapi_error_ok_counter = 2;
 | 
			
		||||
    ATHandler_stub::size_value = 32;
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_AUTH_FAILURE;
 | 
			
		||||
    EXPECT_EQ(NSAPI_ERROR_AUTH_FAILURE, sms.send_sms("1", "23232323", 8));
 | 
			
		||||
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK;
 | 
			
		||||
    char table[] = "232323232323232323232323232323232323232323232323232323\
 | 
			
		||||
                    232323232323232323232323232323232323232323232323232323\
 | 
			
		||||
                    232323232323232323232323232323232323232323232323232323\
 | 
			
		||||
                    23232323232323232323232323232323232323\0";
 | 
			
		||||
 | 
			
		||||
    EXPECT_EQ(strlen(table), sms.send_sms("1", table, strlen(table)));
 | 
			
		||||
    EXPECT_EQ(strlen(table), sms.send_sms("12", table, strlen(table)));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularSMS, test_AT_CellularSMS_get_sms)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    AT_CellularSMS sms(at);
 | 
			
		||||
    char buf[16];
 | 
			
		||||
    char phone[21];
 | 
			
		||||
    char stamp[21];
 | 
			
		||||
    int size;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_PARAMETER == sms.get_sms(NULL, 16, phone, 21, stamp, 21, &size));
 | 
			
		||||
 | 
			
		||||
    ATHandler_stub::resp_info_true_counter = 1;
 | 
			
		||||
    ATHandler_stub::int_value = 0;
 | 
			
		||||
    EXPECT_TRUE(-1 == sms.get_sms(buf, 16, phone, 21, stamp, 21, &size));
 | 
			
		||||
 | 
			
		||||
    ATHandler_stub::resp_info_true_counter = 2;
 | 
			
		||||
    ATHandler_stub::int_value = 11;
 | 
			
		||||
    EXPECT_TRUE(0 == sms.get_sms(buf, 16, phone, 21, stamp, 21, &size));
 | 
			
		||||
    //TODO: Should make add_info to happen, before calling get_sms!
 | 
			
		||||
 | 
			
		||||
    ATHandler_stub::resp_info_true_counter = 2;
 | 
			
		||||
    ATHandler_stub::int_value = 11;
 | 
			
		||||
    sms.initialize(CellularSMS::CellularSMSMmodePDU);
 | 
			
		||||
    EXPECT_TRUE(0 == sms.get_sms(buf, 16, phone, 21, stamp, 21, &size));
 | 
			
		||||
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_AUTH_FAILURE;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_AUTH_FAILURE == sms.get_sms(buf, 16, phone, 21, stamp, 21, &size));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularSMS, test_AT_CellularSMS_set_sms_callback)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    AT_CellularSMS sms(at);
 | 
			
		||||
    sms.set_sms_callback(NULL);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularSMS, test_AT_CellularSMS_set_cpms)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    AT_CellularSMS sms(at);
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_AUTH_FAILURE;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_AUTH_FAILURE == sms.set_cpms("2", "3", "4"));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularSMS, test_AT_CellularSMS_set_csca)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    AT_CellularSMS sms(at);
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_AUTH_FAILURE;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_AUTH_FAILURE == sms.set_csca("2", 1));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularSMS, test_AT_CellularSMS_set_cscs)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    AT_CellularSMS sms(at);
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_AUTH_FAILURE;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_AUTH_FAILURE == sms.set_cscs("2"));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularSMS, test_AT_CellularSMS_delete_all_messages)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    AT_CellularSMS sms(at);
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_AUTH_FAILURE;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_AUTH_FAILURE == sms.delete_all_messages());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularSMS, test_AT_CellularSMS_set_extra_sim_wait_time)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    AT_CellularSMS sms(at);
 | 
			
		||||
    sms.set_extra_sim_wait_time(56);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,33 @@
 | 
			
		|||
 | 
			
		||||
####################
 | 
			
		||||
# UNIT TESTS
 | 
			
		||||
####################
 | 
			
		||||
 | 
			
		||||
# Unit test suite name
 | 
			
		||||
set(TEST_SUITE_NAME "at_cellular_sms_unit")
 | 
			
		||||
 | 
			
		||||
# Add test specific include paths
 | 
			
		||||
set(unittest-includes ${unittest-includes}
 | 
			
		||||
  features/cellular/framework/common/util
 | 
			
		||||
  ../features/cellular/framework/common
 | 
			
		||||
  ../features/cellular/framework/AT
 | 
			
		||||
  ../features/frameworks/mbed-client-randlib/mbed-client-randlib
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
# Source files
 | 
			
		||||
set(unittest-sources
 | 
			
		||||
  ../features/cellular/framework/AT/AT_CellularSMS.cpp
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
# Test files
 | 
			
		||||
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
 | 
			
		||||
  stubs/us_ticker_stub.cpp
 | 
			
		||||
  stubs/mbed_assert_stub.cpp
 | 
			
		||||
  stubs/mbed_wait_api_stub.cpp
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,377 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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_CellularStack.h"
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include "AT_CellularNetwork.h"
 | 
			
		||||
#include "EventQueue.h"
 | 
			
		||||
#include "ATHandler.h"
 | 
			
		||||
#include "AT_CellularStack.h"
 | 
			
		||||
#include "FileHandle_stub.h"
 | 
			
		||||
#include "CellularLog.h"
 | 
			
		||||
#include "ATHandler_stub.h"
 | 
			
		||||
#include "SocketAddress.h"
 | 
			
		||||
 | 
			
		||||
using namespace mbed;
 | 
			
		||||
using namespace events;
 | 
			
		||||
 | 
			
		||||
class MyStack : public AT_CellularStack {
 | 
			
		||||
public:
 | 
			
		||||
    bool bool_value;
 | 
			
		||||
    bool max_sock_value;
 | 
			
		||||
    nsapi_error_t create_error;
 | 
			
		||||
    CellularSocket socket;
 | 
			
		||||
 | 
			
		||||
    MyStack(ATHandler &atr, int cid, nsapi_ip_stack_t typ) : AT_CellularStack(atr, cid, typ)
 | 
			
		||||
    {
 | 
			
		||||
        bool_value = false;
 | 
			
		||||
        max_sock_value = 0;
 | 
			
		||||
        create_error = NSAPI_ERROR_OK;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual int get_max_socket_count()
 | 
			
		||||
    {
 | 
			
		||||
        return max_sock_value;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual bool is_protocol_supported(nsapi_protocol_t protocol)
 | 
			
		||||
    {
 | 
			
		||||
        return bool_value;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual nsapi_error_t socket_close_impl(int sock_id)
 | 
			
		||||
    {
 | 
			
		||||
        return NSAPI_ERROR_OK;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual nsapi_error_t create_socket_impl(CellularSocket *socket)
 | 
			
		||||
    {
 | 
			
		||||
        return create_error;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual nsapi_size_or_error_t socket_sendto_impl(CellularSocket *socket, const SocketAddress &address,
 | 
			
		||||
                                                     const void *data, nsapi_size_t size)
 | 
			
		||||
    {
 | 
			
		||||
        return NSAPI_ERROR_OK;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual nsapi_size_or_error_t socket_recvfrom_impl(CellularSocket *socket, SocketAddress *address,
 | 
			
		||||
                                                       void *buffer, nsapi_size_t size)
 | 
			
		||||
    {
 | 
			
		||||
        return NSAPI_ERROR_OK;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual nsapi_error_t socket_open(nsapi_socket_t *handle, nsapi_protocol_t proto)
 | 
			
		||||
    {
 | 
			
		||||
        return AT_CellularStack::socket_open(handle, proto);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual nsapi_error_t socket_close(nsapi_socket_t handle)
 | 
			
		||||
    {
 | 
			
		||||
        return AT_CellularStack::socket_close(handle);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual nsapi_error_t socket_bind(nsapi_socket_t handle, const SocketAddress &address)
 | 
			
		||||
    {
 | 
			
		||||
        return AT_CellularStack::socket_bind(handle, address);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual nsapi_error_t socket_listen(nsapi_socket_t handle, int backlog)
 | 
			
		||||
    {
 | 
			
		||||
        return AT_CellularStack::socket_listen(handle, backlog);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual nsapi_error_t socket_connect(nsapi_socket_t handle, const SocketAddress &address)
 | 
			
		||||
    {
 | 
			
		||||
        return AT_CellularStack::socket_connect(handle, address);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual nsapi_error_t socket_accept(nsapi_socket_t server,
 | 
			
		||||
                                        nsapi_socket_t *handle, SocketAddress *address = 0)
 | 
			
		||||
    {
 | 
			
		||||
        return AT_CellularStack::socket_accept(server, handle, address);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual nsapi_size_or_error_t socket_send(nsapi_socket_t handle,
 | 
			
		||||
                                              const void *data, nsapi_size_t size)
 | 
			
		||||
    {
 | 
			
		||||
        return AT_CellularStack::socket_send(handle, data, size);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual nsapi_size_or_error_t socket_recv(nsapi_socket_t handle,
 | 
			
		||||
                                              void *data, nsapi_size_t size)
 | 
			
		||||
    {
 | 
			
		||||
        return AT_CellularStack::socket_recv(handle, data, size);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual nsapi_size_or_error_t socket_sendto(nsapi_socket_t handle, const SocketAddress &address,
 | 
			
		||||
                                                const void *data, nsapi_size_t size)
 | 
			
		||||
    {
 | 
			
		||||
        return AT_CellularStack::socket_sendto(handle, address, data, size);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual nsapi_size_or_error_t socket_recvfrom(nsapi_socket_t handle, SocketAddress *address,
 | 
			
		||||
                                                  void *buffer, nsapi_size_t size)
 | 
			
		||||
    {
 | 
			
		||||
        return AT_CellularStack::socket_recvfrom(handle, address, buffer, size);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual void socket_attach(nsapi_socket_t handle, void (*callback)(void *), void *data)
 | 
			
		||||
    {
 | 
			
		||||
        return AT_CellularStack::socket_attach(handle, callback, data);
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// AStyle ignored as the definition is not clear due to preprocessor usage
 | 
			
		||||
// *INDENT-OFF*
 | 
			
		||||
class TestAT_CellularStack : public testing::Test {
 | 
			
		||||
protected:
 | 
			
		||||
 | 
			
		||||
    void SetUp()
 | 
			
		||||
    {
 | 
			
		||||
        ATHandler_stub::return_given_size = false;
 | 
			
		||||
        ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK;
 | 
			
		||||
        ATHandler_stub::ssize_value = 0;
 | 
			
		||||
        ATHandler_stub::bool_value = false;
 | 
			
		||||
        ATHandler_stub::read_string_value = NULL;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void TearDown()
 | 
			
		||||
    {
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
// *INDENT-ON*
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularStack, Create)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    MyStack *st = new MyStack(at, 0, IPV4_STACK);
 | 
			
		||||
 | 
			
		||||
    EXPECT_TRUE(st != NULL);
 | 
			
		||||
    delete st;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularStack, test_AT_CellularStack_get_ip_address)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    MyStack st(at, 0, IPV6_STACK);
 | 
			
		||||
    EXPECT_TRUE(0 == strlen(st.get_ip_address()));
 | 
			
		||||
 | 
			
		||||
    char table[] = "1.2.3.4.5.65.7.8.9.10.11\0";
 | 
			
		||||
    ATHandler_stub::ssize_value = -1;
 | 
			
		||||
    ATHandler_stub::bool_value = true;
 | 
			
		||||
    ATHandler_stub::read_string_value = table;
 | 
			
		||||
    EXPECT_TRUE(NULL == st.get_ip_address());
 | 
			
		||||
 | 
			
		||||
    ATHandler_stub::ssize_value = strlen(table);
 | 
			
		||||
    ATHandler_stub::bool_value = true;
 | 
			
		||||
    ATHandler_stub::read_string_value = table;
 | 
			
		||||
    EXPECT_TRUE(st.get_ip_address());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularStack, test_AT_CellularStack_socket_open)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    MyStack st(at, 0, IPV6_STACK);
 | 
			
		||||
    st.bool_value = false;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_UNSUPPORTED == st.socket_open(NULL, NSAPI_TCP));
 | 
			
		||||
 | 
			
		||||
    st.bool_value = true;
 | 
			
		||||
    st.max_sock_value = 0;
 | 
			
		||||
    nsapi_socket_t sock = &st.socket;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_NO_SOCKET == st.socket_open(&sock, NSAPI_TCP));
 | 
			
		||||
 | 
			
		||||
    MyStack st2(at, 0, IPV6_STACK);
 | 
			
		||||
    st2.bool_value = true;
 | 
			
		||||
    st2.max_sock_value = 1;
 | 
			
		||||
    sock = &st2.socket;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == st2.socket_open(&sock, NSAPI_TCP));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularStack, test_AT_CellularStack_socket_close)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    MyStack st(at, 0, IPV6_STACK);
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == st.socket_close(&st.socket));
 | 
			
		||||
 | 
			
		||||
    nsapi_socket_t sock = &st.socket;
 | 
			
		||||
    st.bool_value = true;
 | 
			
		||||
    st.max_sock_value = 1;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == st.socket_open(&sock, NSAPI_TCP));
 | 
			
		||||
    st.max_sock_value = 0;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == st.socket_close(sock));
 | 
			
		||||
 | 
			
		||||
    MyStack st2(at, 0, IPV6_STACK);
 | 
			
		||||
    st2.max_sock_value = 1;
 | 
			
		||||
    st2.bool_value = true;
 | 
			
		||||
    sock = &st2.socket;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == st2.socket_open(&sock, NSAPI_TCP));
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == st2.socket_close(sock));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularStack, test_AT_CellularStack_socket_bind)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    MyStack st(at, 0, IPV6_STACK);
 | 
			
		||||
    SocketAddress addr;
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_ALREADY;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == st.socket_bind(NULL, addr));
 | 
			
		||||
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_ALREADY == st.socket_bind(&st.socket, addr));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularStack, test_AT_CellularStack_socket_listen)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    MyStack st(at, 0, IPV6_STACK);
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_UNSUPPORTED == st.socket_listen(&st.socket, 4));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularStack, test_AT_CellularStack_socket_connect)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    MyStack st(at, 0, IPV6_STACK);
 | 
			
		||||
    SocketAddress addr;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == st.socket_connect(NULL, addr));
 | 
			
		||||
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == st.socket_connect(&st.socket, addr));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularStack, test_AT_CellularStack_socket_accept)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    MyStack st(at, 0, IPV6_STACK);
 | 
			
		||||
    nsapi_socket_t sock = &st.socket;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_UNSUPPORTED == st.socket_accept(NULL, &sock));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularStack, test_AT_CellularStack_socket_send)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    MyStack st(at, 0, IPV6_STACK);
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == st.socket_send(NULL, "addr", 4));
 | 
			
		||||
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == st.socket_send(&st.socket, "addr", 4));
 | 
			
		||||
 | 
			
		||||
    SocketAddress addr;
 | 
			
		||||
    st.max_sock_value = 1;
 | 
			
		||||
    st.bool_value = true;
 | 
			
		||||
    nsapi_socket_t sock = &st.socket;
 | 
			
		||||
    st.socket_open(&sock, NSAPI_TCP);
 | 
			
		||||
    st.socket_connect(sock, addr);
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == st.socket_send(sock, "addr", 4));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularStack, test_AT_CellularStack_socket_sendto)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    MyStack st(at, 0, IPV6_STACK);
 | 
			
		||||
 | 
			
		||||
    SocketAddress addr;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == st.socket_sendto(NULL, addr, "addr", 4));
 | 
			
		||||
 | 
			
		||||
    st.max_sock_value = 1;
 | 
			
		||||
    st.bool_value = true;
 | 
			
		||||
    nsapi_socket_t sock = &st.socket;
 | 
			
		||||
    st.socket_open(&sock, NSAPI_TCP);
 | 
			
		||||
    st.socket_connect(sock, addr);
 | 
			
		||||
    st.create_error = NSAPI_ERROR_CONNECTION_LOST;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_CONNECTION_LOST == st.socket_sendto(sock, addr, "addr", 4));
 | 
			
		||||
 | 
			
		||||
    st.create_error = NSAPI_ERROR_OK;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == st.socket_sendto(sock, addr, "addr", 4));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularStack, test_AT_CellularStack_socket_recv)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    MyStack st(at, 0, IPV6_STACK);
 | 
			
		||||
    char table[4];
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == st.socket_recv(NULL, table, 4));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularStack, test_AT_CellularStack_socket_recvfrom)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    MyStack st(at, 0, IPV6_STACK);
 | 
			
		||||
    char table[4];
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == st.socket_recvfrom(NULL, NULL, table, 4));
 | 
			
		||||
 | 
			
		||||
    SocketAddress addr;
 | 
			
		||||
    st.max_sock_value = 1;
 | 
			
		||||
    st.bool_value = true;
 | 
			
		||||
    nsapi_socket_t sock = &st.socket;
 | 
			
		||||
    st.socket_open(&sock, NSAPI_TCP);
 | 
			
		||||
    st.socket_connect(sock, addr);
 | 
			
		||||
    st.create_error = NSAPI_ERROR_CONNECTION_LOST;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_CONNECTION_LOST == st.socket_recvfrom(sock, &addr, table, 4));
 | 
			
		||||
 | 
			
		||||
    st.create_error = NSAPI_ERROR_OK;
 | 
			
		||||
    EXPECT_TRUE(NSAPI_ERROR_OK == st.socket_recvfrom(sock, &addr, table, 4));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestAT_CellularStack, test_AT_CellularStack_socket_attach)
 | 
			
		||||
{
 | 
			
		||||
    EventQueue que;
 | 
			
		||||
    FileHandle_stub fh1;
 | 
			
		||||
    ATHandler at(&fh1, que, 0, ",");
 | 
			
		||||
 | 
			
		||||
    MyStack st(at, 0, IPV6_STACK);
 | 
			
		||||
 | 
			
		||||
    st.socket_attach(NULL, NULL, NULL);
 | 
			
		||||
    st.max_sock_value = 1;
 | 
			
		||||
    st.bool_value = true;
 | 
			
		||||
    nsapi_socket_t sock = &st.socket;
 | 
			
		||||
    st.socket_open(&sock, NSAPI_TCP);
 | 
			
		||||
    st.socket_attach(sock, NULL, NULL);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,34 @@
 | 
			
		|||
 | 
			
		||||
####################
 | 
			
		||||
# UNIT TESTS
 | 
			
		||||
####################
 | 
			
		||||
 | 
			
		||||
# Unit test suite name
 | 
			
		||||
set(TEST_SUITE_NAME "at_cellular_stack_unit")
 | 
			
		||||
 | 
			
		||||
# Add test specific include paths
 | 
			
		||||
set(unittest-includes ${unittest-includes}
 | 
			
		||||
  features/cellular/framework/common/util
 | 
			
		||||
  ../features/cellular/framework/common
 | 
			
		||||
  ../features/cellular/framework/AT
 | 
			
		||||
  ../features/frameworks/mbed-client-randlib/mbed-client-randlib
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
# Source files
 | 
			
		||||
set(unittest-sources
 | 
			
		||||
  ../features/cellular/framework/AT/AT_CellularStack.cpp
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
# Test files
 | 
			
		||||
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/us_ticker_stub.cpp
 | 
			
		||||
  stubs/NetworkStack_stub.cpp
 | 
			
		||||
  stubs/SocketAddress_stub.cpp
 | 
			
		||||
  stubs/mbed_assert_stub.cpp
 | 
			
		||||
)
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| 
						 | 
				
			
			@ -0,0 +1,41 @@
 | 
			
		|||
 | 
			
		||||
####################
 | 
			
		||||
# UNIT TESTS
 | 
			
		||||
####################
 | 
			
		||||
 | 
			
		||||
# Unit test suite name
 | 
			
		||||
set(TEST_SUITE_NAME "at_handler_unit")
 | 
			
		||||
 | 
			
		||||
# Add test specific include paths
 | 
			
		||||
set(unittest-includes ${unittest-includes}
 | 
			
		||||
  features/cellular/framework/common/util
 | 
			
		||||
  ../features/cellular/framework/common
 | 
			
		||||
  ../features/cellular/framework/AT
 | 
			
		||||
  ../features/frameworks/mbed-client-randlib/mbed-client-randlib
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
# Source files
 | 
			
		||||
set(unittest-sources
 | 
			
		||||
  ../features/cellular/framework/AT/ATHandler.cpp
 | 
			
		||||
  ../features/cellular/framework/common/CellularUtil.cpp
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
# 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
 | 
			
		||||
  stubs/mbed_wait_api_stub.cpp
 | 
			
		||||
  stubs/mbed_assert_stub.cpp
 | 
			
		||||
  stubs/mbed_poll_stub.cpp
 | 
			
		||||
  stubs/Timer_stub.cpp
 | 
			
		||||
  stubs/equeue_stub.c
 | 
			
		||||
  stubs/Kernel_stub.cpp
 | 
			
		||||
  stubs/Thread_stub.cpp
 | 
			
		||||
  stubs/randLIB_stub.cpp
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DMBED_CONF_CELLULAR_DEBUG_AT=true -DOS_STACK_SIZE=2048")
 | 
			
		||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DMBED_CONF_CELLULAR_DEBUG_AT=true -DOS_STACK_SIZE=2048")
 | 
			
		||||
| 
						 | 
				
			
			@ -1,179 +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 "test_util.h"
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include "CellularUtil.h"
 | 
			
		||||
#include <iostream>
 | 
			
		||||
 | 
			
		||||
using namespace mbed_cellular_util;
 | 
			
		||||
 | 
			
		||||
Test_util::Test_util()
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Test_util::~Test_util()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Test_util::test_util_uint_to_binary_string()
 | 
			
		||||
{
 | 
			
		||||
    char str[33];
 | 
			
		||||
    uint_to_binary_str(15, str, 33, 32);
 | 
			
		||||
    str[32] = '\0';
 | 
			
		||||
    // 15 is "1111" in binary but we ask all 32 bits so it should return "00000000000000000000000000001111"
 | 
			
		||||
    EXPECT_STREQ("00000000000000000000000000001111", str);
 | 
			
		||||
 | 
			
		||||
    // test NULL pointer
 | 
			
		||||
    uint_to_binary_str(15, NULL, 0, 32);
 | 
			
		||||
 | 
			
		||||
    // test give too small buffer
 | 
			
		||||
    char too_small[5];
 | 
			
		||||
    uint_to_binary_str(15, too_small, 5, 6);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Test_util::test_util_char_str_to_hex()
 | 
			
		||||
{
 | 
			
		||||
    // basic conversion test, happy days
 | 
			
		||||
    char hex_buf[50];
 | 
			
		||||
    uint16_t number_of_hex_chars = char_str_to_hex_str("1234", 4, hex_buf);
 | 
			
		||||
    hex_buf[number_of_hex_chars] = '\0';
 | 
			
		||||
    EXPECT_STREQ("31323334", hex_buf);
 | 
			
		||||
    EXPECT_EQ(8, number_of_hex_chars);
 | 
			
		||||
 | 
			
		||||
    number_of_hex_chars = char_str_to_hex_str("wuhuu", 5, hex_buf);
 | 
			
		||||
    hex_buf[number_of_hex_chars] = '\0';
 | 
			
		||||
    EXPECT_STREQ("7775687575", hex_buf);
 | 
			
		||||
    EXPECT_EQ(10, number_of_hex_chars);
 | 
			
		||||
 | 
			
		||||
    // First don't omit the leading zero and then omit and check that leading zero is missing
 | 
			
		||||
    number_of_hex_chars = char_str_to_hex_str("\nwuhuu", 6, hex_buf);
 | 
			
		||||
    hex_buf[number_of_hex_chars] = '\0';
 | 
			
		||||
    EXPECT_STREQ("0A7775687575", hex_buf);
 | 
			
		||||
    EXPECT_EQ(12, number_of_hex_chars);
 | 
			
		||||
 | 
			
		||||
    number_of_hex_chars = char_str_to_hex_str("\nwuhuu", 6, hex_buf, true);
 | 
			
		||||
    hex_buf[number_of_hex_chars] = '\0';
 | 
			
		||||
    EXPECT_STREQ("A7775687575", hex_buf);
 | 
			
		||||
    EXPECT_EQ(11, number_of_hex_chars);
 | 
			
		||||
 | 
			
		||||
    // test giving a null pointer
 | 
			
		||||
    number_of_hex_chars = char_str_to_hex_str(NULL, 4, hex_buf);
 | 
			
		||||
    EXPECT_EQ(0, number_of_hex_chars);
 | 
			
		||||
    number_of_hex_chars = char_str_to_hex_str("1234", 4, NULL);
 | 
			
		||||
    EXPECT_EQ(0, number_of_hex_chars);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Test_util::test_util_convert_ipv6()
 | 
			
		||||
{
 | 
			
		||||
    // leading zeros omitted
 | 
			
		||||
    char ipv6[64];
 | 
			
		||||
    strncpy(ipv6, "1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1", 64);
 | 
			
		||||
    convert_ipv6(ipv6);
 | 
			
		||||
    EXPECT_STREQ("101:101:101:101:101:101:101:101", ipv6);
 | 
			
		||||
    EXPECT_EQ(31, strlen(ipv6));
 | 
			
		||||
 | 
			
		||||
    // some omitted and some not so much
 | 
			
		||||
    strncpy(ipv6, "255.1.120.2.244.12.55.45.201.110.11.2.233.154.85.96", 64);
 | 
			
		||||
    convert_ipv6(ipv6);
 | 
			
		||||
    EXPECT_STREQ("FF01:7802:F40C:372D:C96E:B02:E99A:5560", ipv6);
 | 
			
		||||
    EXPECT_EQ(38, strlen(ipv6));
 | 
			
		||||
 | 
			
		||||
    // test giving a null pointer
 | 
			
		||||
    convert_ipv6(NULL);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Test_util::test_util_prefer_ipv6()
 | 
			
		||||
{
 | 
			
		||||
    char tt[20] = "62.241.198.246";
 | 
			
		||||
    char temp[64] = "2001:14B8:1000:000:000:000:000:002";
 | 
			
		||||
 | 
			
		||||
    // not enough space to swap, arrays should stay the same
 | 
			
		||||
    prefer_ipv6(tt, sizeof(tt), temp, sizeof(temp));
 | 
			
		||||
    EXPECT_STREQ("62.241.198.246", tt);
 | 
			
		||||
    EXPECT_STREQ("2001:14B8:1000:000:000:000:000:002", temp);
 | 
			
		||||
 | 
			
		||||
    // should swap as first one was ip4 and later was ipv6 and enough space
 | 
			
		||||
    char tt2[64] = "62.241.198.246";
 | 
			
		||||
    prefer_ipv6(tt2, sizeof(tt2), temp, sizeof(temp));
 | 
			
		||||
    EXPECT_STREQ("62.241.198.246", temp);
 | 
			
		||||
    EXPECT_STREQ("2001:14B8:1000:000:000:000:000:002", tt2);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Test_util::test_util_separate_ip_addresses()
 | 
			
		||||
{
 | 
			
		||||
    char *s = (char *)calloc(128, 1);
 | 
			
		||||
 | 
			
		||||
    char ip[64] = {0};
 | 
			
		||||
    char subnet[64] = {0};
 | 
			
		||||
 | 
			
		||||
    strncpy(s, "32.1.20.187.1.112.139.245.251.136.232.110.123.51.230.138.0.1.2.3.4.5.6.7.8.9.10.11.12.13.14.15", 94);
 | 
			
		||||
    separate_ip_addresses(s, ip, sizeof(ip), subnet, sizeof(subnet));
 | 
			
		||||
    EXPECT_STREQ("2001:14BB:170:8BF5:FB88:E86E:7B33:E68A", ip);
 | 
			
		||||
    EXPECT_STREQ("001:203:405:607:809:A0B:C0D:E0F", subnet);
 | 
			
		||||
 | 
			
		||||
    strncpy(s, "32:1:20:187:1:112:139:245:251:136:232:110:123:51:230:138 0:1:2:3:4:5:6:7:8:9:10:11:12:13:14:15", 94);
 | 
			
		||||
    separate_ip_addresses(s, ip, sizeof(ip), subnet, sizeof(subnet));
 | 
			
		||||
    EXPECT_STREQ("32:1:20:187:1:112:139:245:251:136:232:110:123:51:230:138", ip);
 | 
			
		||||
    EXPECT_STREQ("0:1:2:3:4:5:6:7:8:9:10:11:12:13:14:15", subnet);
 | 
			
		||||
 | 
			
		||||
    ip[0] = '\0';
 | 
			
		||||
    subnet[0] = '\0';
 | 
			
		||||
    strncpy(s, "1.2.3.4\0", 8);
 | 
			
		||||
    separate_ip_addresses(s, ip, sizeof(ip), subnet, sizeof(subnet));
 | 
			
		||||
    EXPECT_STREQ("1.2.3.4", ip);
 | 
			
		||||
    EXPECT_STREQ("", subnet);
 | 
			
		||||
 | 
			
		||||
    ip[0] = '\0';
 | 
			
		||||
    subnet[0] = '\0';
 | 
			
		||||
    strncpy(s, "1.2.3.4.5.6.7.8\0", 16);
 | 
			
		||||
    separate_ip_addresses(s, ip, sizeof(ip), subnet, sizeof(subnet));
 | 
			
		||||
    EXPECT_STREQ("1.2.3.4", ip);
 | 
			
		||||
    EXPECT_STREQ("5.6.7.8", subnet);
 | 
			
		||||
 | 
			
		||||
    ip[0] = '\0';
 | 
			
		||||
    subnet[0] = '\0';
 | 
			
		||||
    strncpy(s, "1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16\0", 39);
 | 
			
		||||
    separate_ip_addresses(s, ip, sizeof(ip), subnet, sizeof(subnet));
 | 
			
		||||
    EXPECT_STREQ("102:304:506:708:90A:B0C:D0E:F10", ip);
 | 
			
		||||
    EXPECT_STREQ("", subnet);
 | 
			
		||||
 | 
			
		||||
    ip[0] = '\0';
 | 
			
		||||
    subnet[0] = '\0';
 | 
			
		||||
    strncpy(s, "32:1:20:187:1:112:139:245:251:136:232:110:123:51:230:138\0", 57);
 | 
			
		||||
    separate_ip_addresses(s, ip, sizeof(ip), subnet, sizeof(subnet));
 | 
			
		||||
    EXPECT_STREQ("32:1:20:187:1:112:139:245:251:136:232:110:123:51:230:138", ip);
 | 
			
		||||
    EXPECT_STREQ("", subnet);
 | 
			
		||||
 | 
			
		||||
    ip[0] = '\0';
 | 
			
		||||
    subnet[0] = '\0';
 | 
			
		||||
    strncpy(s, "1.2.3.4 32:1:20:187:1:112:139:245:251:136:232:110:123:51:230:138\0", 65);
 | 
			
		||||
    separate_ip_addresses(s, ip, sizeof(ip), subnet, sizeof(subnet));
 | 
			
		||||
    EXPECT_STREQ("1.2.3.4", ip);
 | 
			
		||||
    EXPECT_STREQ("32:1:20:187:1:112:139:245:251:136:232:110:123:51:230:138", subnet);
 | 
			
		||||
 | 
			
		||||
    ip[0] = '\0';
 | 
			
		||||
    subnet[0] = '\0';
 | 
			
		||||
    strncpy(s, "1.2.3.4 5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20\0", 51);
 | 
			
		||||
    separate_ip_addresses(s, ip, sizeof(ip), subnet, sizeof(subnet));
 | 
			
		||||
    EXPECT_STREQ("1.2.3.4", ip);
 | 
			
		||||
    EXPECT_STREQ("506:708:90A:B0C:D0E:F10:1112:1314", subnet);
 | 
			
		||||
    EXPECT_STREQ("1.2.3.4 5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20", s);
 | 
			
		||||
 | 
			
		||||
    free(s);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -20,7 +20,6 @@ set(unittest-sources
 | 
			
		|||
 | 
			
		||||
# Test files
 | 
			
		||||
set(unittest-test-sources
 | 
			
		||||
  stubs/randLIB_stub.c
 | 
			
		||||
  features/cellular/framework/common/util/test_util.cpp
 | 
			
		||||
  features/cellular/framework/common/util/utiltest.cpp
 | 
			
		||||
  stubs/randLIB_stub.cpp
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (c) 2018, Arm Limited and affiliates
 | 
			
		||||
 * Copyright (c) 2018, Arm Limited and affiliates.
 | 
			
		||||
 * SPDX-License-Identifier: Apache-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
| 
						 | 
				
			
			@ -15,49 +15,167 @@
 | 
			
		|||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
#include "gtest/gtest.h"
 | 
			
		||||
#include "test_util.h"
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include "CellularUtil.h"
 | 
			
		||||
 | 
			
		||||
class TestUtil : public testing::Test {
 | 
			
		||||
using namespace mbed_cellular_util;
 | 
			
		||||
 | 
			
		||||
// AStyle ignored as the definition is not clear due to preprocessor usage
 | 
			
		||||
// *INDENT-OFF*
 | 
			
		||||
class Testutil : public testing::Test {
 | 
			
		||||
protected:
 | 
			
		||||
    Test_util *unit;
 | 
			
		||||
 | 
			
		||||
    virtual void SetUp()
 | 
			
		||||
    void SetUp()
 | 
			
		||||
    {
 | 
			
		||||
        unit = new Test_util();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual void TearDown()
 | 
			
		||||
    void TearDown()
 | 
			
		||||
    {
 | 
			
		||||
        delete unit;
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
// *INDENT-ON*
 | 
			
		||||
 | 
			
		||||
TEST_F(TestUtil, Create)
 | 
			
		||||
TEST_F(Testutil, test_util_uint_to_binary_string)
 | 
			
		||||
{
 | 
			
		||||
    EXPECT_TRUE(unit);
 | 
			
		||||
    char str[33];
 | 
			
		||||
    uint_to_binary_str(15, str, 33, 32);
 | 
			
		||||
    str[32] = '\0';
 | 
			
		||||
    // 15 is "1111" in binary but we ask all 32 bits so it should return "00000000000000000000000000001111"
 | 
			
		||||
    EXPECT_STREQ("00000000000000000000000000001111", str);
 | 
			
		||||
 | 
			
		||||
    // test NULL pointer
 | 
			
		||||
    uint_to_binary_str(15, NULL, 0, 32);
 | 
			
		||||
 | 
			
		||||
    // test give too small buffer
 | 
			
		||||
    char too_small[5];
 | 
			
		||||
    uint_to_binary_str(15, too_small, 5, 6);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestUtil, test_util_uint_to_binary_string)
 | 
			
		||||
TEST_F(Testutil, char_str_to_hex)
 | 
			
		||||
{
 | 
			
		||||
    unit->test_util_uint_to_binary_string();
 | 
			
		||||
    // basic conversion test, happy days
 | 
			
		||||
    char hex_buf[50];
 | 
			
		||||
    uint16_t number_of_hex_chars = char_str_to_hex_str("1234", 4, hex_buf);
 | 
			
		||||
    hex_buf[number_of_hex_chars] = '\0';
 | 
			
		||||
    EXPECT_STREQ("31323334", hex_buf);
 | 
			
		||||
    EXPECT_EQ(8, number_of_hex_chars);
 | 
			
		||||
 | 
			
		||||
    number_of_hex_chars = char_str_to_hex_str("wuhuu", 5, hex_buf);
 | 
			
		||||
    hex_buf[number_of_hex_chars] = '\0';
 | 
			
		||||
    EXPECT_STREQ("7775687575", hex_buf);
 | 
			
		||||
    EXPECT_EQ(10, number_of_hex_chars);
 | 
			
		||||
 | 
			
		||||
    // First don't omit the leading zero and then omit and check that leading zero is missing
 | 
			
		||||
    number_of_hex_chars = char_str_to_hex_str("\nwuhuu", 6, hex_buf);
 | 
			
		||||
    hex_buf[number_of_hex_chars] = '\0';
 | 
			
		||||
    EXPECT_STREQ("0A7775687575", hex_buf);
 | 
			
		||||
    EXPECT_EQ(12, number_of_hex_chars);
 | 
			
		||||
 | 
			
		||||
    number_of_hex_chars = char_str_to_hex_str("\nwuhuu", 6, hex_buf, true);
 | 
			
		||||
    hex_buf[number_of_hex_chars] = '\0';
 | 
			
		||||
    EXPECT_STREQ("A7775687575", hex_buf);
 | 
			
		||||
    EXPECT_EQ(11, number_of_hex_chars);
 | 
			
		||||
 | 
			
		||||
    // test giving a null pointer
 | 
			
		||||
    number_of_hex_chars = char_str_to_hex_str(NULL, 4, hex_buf);
 | 
			
		||||
    EXPECT_EQ(0, number_of_hex_chars);
 | 
			
		||||
    number_of_hex_chars = char_str_to_hex_str("1234", 4, NULL);
 | 
			
		||||
    EXPECT_EQ(0, number_of_hex_chars);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestUtil, char_str_to_hex)
 | 
			
		||||
TEST_F(Testutil, convert_ipv6)
 | 
			
		||||
{
 | 
			
		||||
    unit->test_util_char_str_to_hex();
 | 
			
		||||
    // leading zeros omitted
 | 
			
		||||
    char ipv6[64];
 | 
			
		||||
    strncpy(ipv6, "1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1", 64);
 | 
			
		||||
    convert_ipv6(ipv6);
 | 
			
		||||
    EXPECT_STREQ("101:101:101:101:101:101:101:101", ipv6);
 | 
			
		||||
    EXPECT_EQ(31, strlen(ipv6));
 | 
			
		||||
 | 
			
		||||
    // some omitted and some not so much
 | 
			
		||||
    strncpy(ipv6, "255.1.120.2.244.12.55.45.201.110.11.2.233.154.85.96", 64);
 | 
			
		||||
    convert_ipv6(ipv6);
 | 
			
		||||
    EXPECT_STREQ("FF01:7802:F40C:372D:C96E:B02:E99A:5560", ipv6);
 | 
			
		||||
    EXPECT_EQ(38, strlen(ipv6));
 | 
			
		||||
 | 
			
		||||
    // test giving a null pointer
 | 
			
		||||
    convert_ipv6(NULL);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestUtil, convert_ipv6)
 | 
			
		||||
TEST_F(Testutil, prefer_ipv6)
 | 
			
		||||
{
 | 
			
		||||
    unit->test_util_convert_ipv6();
 | 
			
		||||
    char tt[20] = "62.241.198.246";
 | 
			
		||||
    char temp[64] = "2001:14B8:1000:000:000:000:000:002";
 | 
			
		||||
 | 
			
		||||
    // not enough space to swap, arrays should stay the same
 | 
			
		||||
    prefer_ipv6(tt, sizeof(tt), temp, sizeof(temp));
 | 
			
		||||
    EXPECT_STREQ("62.241.198.246", tt);
 | 
			
		||||
    EXPECT_STREQ("2001:14B8:1000:000:000:000:000:002", temp);
 | 
			
		||||
 | 
			
		||||
    // should swap as first one was ip4 and later was ipv6 and enough space
 | 
			
		||||
    char tt2[64] = "62.241.198.246";
 | 
			
		||||
    prefer_ipv6(tt2, sizeof(tt2), temp, sizeof(temp));
 | 
			
		||||
    EXPECT_STREQ("62.241.198.246", temp);
 | 
			
		||||
    EXPECT_STREQ("2001:14B8:1000:000:000:000:000:002", tt2);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestUtil, prefer_ipv6)
 | 
			
		||||
TEST_F(Testutil, separate_ip_addresses)
 | 
			
		||||
{
 | 
			
		||||
    unit->test_util_prefer_ipv6();
 | 
			
		||||
}
 | 
			
		||||
    char *s = (char *)malloc(128);
 | 
			
		||||
 | 
			
		||||
TEST_F(TestUtil, separate_ip_addresses)
 | 
			
		||||
{
 | 
			
		||||
    unit->test_util_separate_ip_addresses();
 | 
			
		||||
    char ip[64] = {0};
 | 
			
		||||
    char subnet[64] = {0};
 | 
			
		||||
 | 
			
		||||
    strncpy(s, "32.1.20.187.1.112.139.245.251.136.232.110.123.51.230.138.0.1.2.3.4.5.6.7.8.9.10.11.12.13.14.15", 94);
 | 
			
		||||
    separate_ip_addresses(s, ip, sizeof(ip), subnet, sizeof(subnet));
 | 
			
		||||
    EXPECT_STREQ("2001:14BB:170:8BF5:FB88:E86E:7B33:E68A", ip);
 | 
			
		||||
    EXPECT_STREQ("001:203:405:607:809:A0B:C0D:E0F", subnet);
 | 
			
		||||
 | 
			
		||||
    strncpy(s, "32:1:20:187:1:112:139:245:251:136:232:110:123:51:230:138 0:1:2:3:4:5:6:7:8:9:10:11:12:13:14:15", 94);
 | 
			
		||||
    separate_ip_addresses(s, ip, sizeof(ip), subnet, sizeof(subnet));
 | 
			
		||||
    EXPECT_STREQ("32:1:20:187:1:112:139:245:251:136:232:110:123:51:230:138", ip);
 | 
			
		||||
    EXPECT_STREQ("0:1:2:3:4:5:6:7:8:9:10:11:12:13:14:15", subnet);
 | 
			
		||||
 | 
			
		||||
    ip[0] = '\0';
 | 
			
		||||
    subnet[0] = '\0';
 | 
			
		||||
    strncpy(s, "1.2.3.4\0", 8);
 | 
			
		||||
    separate_ip_addresses(s, ip, sizeof(ip), subnet, sizeof(subnet));
 | 
			
		||||
    EXPECT_STREQ("1.2.3.4", ip);
 | 
			
		||||
    EXPECT_STREQ("", subnet);
 | 
			
		||||
 | 
			
		||||
    ip[0] = '\0';
 | 
			
		||||
    subnet[0] = '\0';
 | 
			
		||||
    strncpy(s, "1.2.3.4.5.6.7.8\0", 16);
 | 
			
		||||
    separate_ip_addresses(s, ip, sizeof(ip), subnet, sizeof(subnet));
 | 
			
		||||
    EXPECT_STREQ("1.2.3.4", ip);
 | 
			
		||||
    EXPECT_STREQ("5.6.7.8", subnet);
 | 
			
		||||
 | 
			
		||||
    ip[0] = '\0';
 | 
			
		||||
    subnet[0] = '\0';
 | 
			
		||||
    strncpy(s, "1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16\0", 39);
 | 
			
		||||
    separate_ip_addresses(s, ip, sizeof(ip), subnet, sizeof(subnet));
 | 
			
		||||
    EXPECT_STREQ("102:304:506:708:90A:B0C:D0E:F10", ip);
 | 
			
		||||
    EXPECT_STREQ("", subnet);
 | 
			
		||||
 | 
			
		||||
    ip[0] = '\0';
 | 
			
		||||
    subnet[0] = '\0';
 | 
			
		||||
    strncpy(s, "32:1:20:187:1:112:139:245:251:136:232:110:123:51:230:138\0", 57);
 | 
			
		||||
    separate_ip_addresses(s, ip, sizeof(ip), subnet, sizeof(subnet));
 | 
			
		||||
    EXPECT_STREQ("32:1:20:187:1:112:139:245:251:136:232:110:123:51:230:138", ip);
 | 
			
		||||
    EXPECT_STREQ("", subnet);
 | 
			
		||||
 | 
			
		||||
    ip[0] = '\0';
 | 
			
		||||
    subnet[0] = '\0';
 | 
			
		||||
    strncpy(s, "1.2.3.4 32:1:20:187:1:112:139:245:251:136:232:110:123:51:230:138\0", 65);
 | 
			
		||||
    separate_ip_addresses(s, ip, sizeof(ip), subnet, sizeof(subnet));
 | 
			
		||||
    EXPECT_STREQ("1.2.3.4", ip);
 | 
			
		||||
    EXPECT_STREQ("32:1:20:187:1:112:139:245:251:136:232:110:123:51:230:138", subnet);
 | 
			
		||||
 | 
			
		||||
    ip[0] = '\0';
 | 
			
		||||
    subnet[0] = '\0';
 | 
			
		||||
    strncpy(s, "1.2.3.4 5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20\0", 51);
 | 
			
		||||
    separate_ip_addresses(s, ip, sizeof(ip), subnet, sizeof(subnet));
 | 
			
		||||
    EXPECT_STREQ("1.2.3.4", ip);
 | 
			
		||||
    EXPECT_STREQ("506:708:90A:B0C:D0E:F10:1112:1314", subnet);
 | 
			
		||||
    EXPECT_STREQ("1.2.3.4 5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20", s);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,420 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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 "ATCmdParser.h"
 | 
			
		||||
#include "mbed_poll.h"
 | 
			
		||||
#include "mbed_debug.h"
 | 
			
		||||
 | 
			
		||||
#ifdef LF
 | 
			
		||||
#undef LF
 | 
			
		||||
#define LF  10
 | 
			
		||||
#else
 | 
			
		||||
#define LF  10
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef CR
 | 
			
		||||
#undef CR
 | 
			
		||||
#define CR  13
 | 
			
		||||
#else
 | 
			
		||||
#define CR  13
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// getc/putc handling with timeouts
 | 
			
		||||
int ATCmdParser::putc(char c)
 | 
			
		||||
{
 | 
			
		||||
    pollfh fhs;
 | 
			
		||||
    fhs.fh = _fh;
 | 
			
		||||
    fhs.events = POLLOUT;
 | 
			
		||||
 | 
			
		||||
    int count = poll(&fhs, 1, _timeout);
 | 
			
		||||
    if (count > 0 && (fhs.revents & POLLOUT)) {
 | 
			
		||||
        return _fh->write(&c, 1) == 1 ? 0 : -1;
 | 
			
		||||
    } else {
 | 
			
		||||
        return -1;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ATCmdParser::getc()
 | 
			
		||||
{
 | 
			
		||||
    pollfh fhs;
 | 
			
		||||
    fhs.fh = _fh;
 | 
			
		||||
    fhs.events = POLLIN;
 | 
			
		||||
 | 
			
		||||
    int count = poll(&fhs, 1, _timeout);
 | 
			
		||||
    if (count > 0 && (fhs.revents & POLLIN)) {
 | 
			
		||||
        unsigned char ch;
 | 
			
		||||
        return _fh->read(&ch, 1) == 1 ? ch : -1;
 | 
			
		||||
    } else {
 | 
			
		||||
        return -1;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ATCmdParser::flush()
 | 
			
		||||
{
 | 
			
		||||
    while (_fh->readable()) {
 | 
			
		||||
        unsigned char ch;
 | 
			
		||||
        _fh->read(&ch, 1);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// read/write handling with timeouts
 | 
			
		||||
int ATCmdParser::write(const char *data, int size)
 | 
			
		||||
{
 | 
			
		||||
    int i = 0;
 | 
			
		||||
    for (; i < size; i++) {
 | 
			
		||||
        if (putc(data[i]) < 0) {
 | 
			
		||||
            return -1;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    return i;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ATCmdParser::read(char *data, int size)
 | 
			
		||||
{
 | 
			
		||||
    int i = 0;
 | 
			
		||||
    for (; i < size; i++) {
 | 
			
		||||
        int c = getc();
 | 
			
		||||
        if (c < 0) {
 | 
			
		||||
            return -1;
 | 
			
		||||
        }
 | 
			
		||||
        data[i] = c;
 | 
			
		||||
    }
 | 
			
		||||
    return i;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// printf/scanf handling
 | 
			
		||||
int ATCmdParser::vprintf(const char *format, va_list args)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
    if (vsprintf(_buffer, format, args) < 0) {
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    int i = 0;
 | 
			
		||||
    for (; _buffer[i]; i++) {
 | 
			
		||||
        if (putc(_buffer[i]) < 0) {
 | 
			
		||||
            return -1;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    return i;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ATCmdParser::vscanf(const char *format, va_list args)
 | 
			
		||||
{
 | 
			
		||||
    // Since format is const, we need to copy it into our buffer to
 | 
			
		||||
    // add the line's null terminator and clobber value-matches with asterisks.
 | 
			
		||||
    //
 | 
			
		||||
    // We just use the beginning of the buffer to avoid unnecessary allocations.
 | 
			
		||||
    int i = 0;
 | 
			
		||||
    int offset = 0;
 | 
			
		||||
 | 
			
		||||
    while (format[i]) {
 | 
			
		||||
        if (format[i] == '%' && format[i + 1] != '%' && format[i + 1] != '*') {
 | 
			
		||||
            _buffer[offset++] = '%';
 | 
			
		||||
            _buffer[offset++] = '*';
 | 
			
		||||
            i++;
 | 
			
		||||
        } else {
 | 
			
		||||
            _buffer[offset++] = format[i++];
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Scanf has very poor support for catching errors
 | 
			
		||||
    // fortunately, we can abuse the %n specifier to determine
 | 
			
		||||
    // if the entire string was matched.
 | 
			
		||||
    _buffer[offset++] = '%';
 | 
			
		||||
    _buffer[offset++] = 'n';
 | 
			
		||||
    _buffer[offset++] = 0;
 | 
			
		||||
 | 
			
		||||
    // To workaround scanf's lack of error reporting, we actually
 | 
			
		||||
    // make two passes. One checks the validity with the modified
 | 
			
		||||
    // format string that only stores the matched characters (%n).
 | 
			
		||||
    // The other reads in the actual matched values.
 | 
			
		||||
    //
 | 
			
		||||
    // We keep trying the match until we succeed or some other error
 | 
			
		||||
    // derails us.
 | 
			
		||||
    int j = 0;
 | 
			
		||||
 | 
			
		||||
    while (true) {
 | 
			
		||||
        // Ran out of space
 | 
			
		||||
        if (j + 1 >= _buffer_size - offset) {
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
        // Recieve next character
 | 
			
		||||
        int c = getc();
 | 
			
		||||
        if (c < 0) {
 | 
			
		||||
            return -1;
 | 
			
		||||
        }
 | 
			
		||||
        _buffer[offset + j++] = c;
 | 
			
		||||
        _buffer[offset + j] = 0;
 | 
			
		||||
 | 
			
		||||
        // Check for match
 | 
			
		||||
        int count = -1;
 | 
			
		||||
        sscanf(_buffer + offset, _buffer, &count);
 | 
			
		||||
 | 
			
		||||
        // We only succeed if all characters in the response are matched
 | 
			
		||||
        if (count == j) {
 | 
			
		||||
            // Store the found results
 | 
			
		||||
            vsscanf(_buffer + offset, format, args);
 | 
			
		||||
            return j;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Command parsing with line handling
 | 
			
		||||
bool ATCmdParser::vsend(const char *command, va_list args)
 | 
			
		||||
{
 | 
			
		||||
    // Create and send command
 | 
			
		||||
    if (vsprintf(_buffer, command, args) < 0) {
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    for (int i = 0; _buffer[i]; i++) {
 | 
			
		||||
        if (putc(_buffer[i]) < 0) {
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Finish with newline
 | 
			
		||||
    for (size_t i = 0; _output_delimiter[i]; i++) {
 | 
			
		||||
        if (putc(_output_delimiter[i]) < 0) {
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    debug_if(_dbg_on, "AT> %s\n", _buffer);
 | 
			
		||||
    return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool ATCmdParser::vrecv(const char *response, va_list args)
 | 
			
		||||
{
 | 
			
		||||
restart:
 | 
			
		||||
    _aborted = false;
 | 
			
		||||
    // Iterate through each line in the expected response
 | 
			
		||||
    while (response[0]) {
 | 
			
		||||
        // Since response is const, we need to copy it into our buffer to
 | 
			
		||||
        // add the line's null terminator and clobber value-matches with asterisks.
 | 
			
		||||
        //
 | 
			
		||||
        // We just use the beginning of the buffer to avoid unnecessary allocations.
 | 
			
		||||
        int i = 0;
 | 
			
		||||
        int offset = 0;
 | 
			
		||||
        bool whole_line_wanted = false;
 | 
			
		||||
 | 
			
		||||
        while (response[i]) {
 | 
			
		||||
            if (response[i] == '%' && response[i + 1] != '%' && response[i + 1] != '*') {
 | 
			
		||||
                _buffer[offset++] = '%';
 | 
			
		||||
                _buffer[offset++] = '*';
 | 
			
		||||
                i++;
 | 
			
		||||
            } else {
 | 
			
		||||
                _buffer[offset++] = response[i++];
 | 
			
		||||
                // Find linebreaks, taking care not to be fooled if they're in a %[^\n] conversion specification
 | 
			
		||||
                if (response[i - 1] == '\n' && !(i >= 3 && response[i - 3] == '[' && response[i - 2] == '^')) {
 | 
			
		||||
                    whole_line_wanted = true;
 | 
			
		||||
                    break;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Scanf has very poor support for catching errors
 | 
			
		||||
        // fortunately, we can abuse the %n specifier to determine
 | 
			
		||||
        // if the entire string was matched.
 | 
			
		||||
        _buffer[offset++] = '%';
 | 
			
		||||
        _buffer[offset++] = 'n';
 | 
			
		||||
        _buffer[offset++] = 0;
 | 
			
		||||
 | 
			
		||||
        debug_if(_dbg_on, "AT? %s\n", _buffer);
 | 
			
		||||
        // To workaround scanf's lack of error reporting, we actually
 | 
			
		||||
        // make two passes. One checks the validity with the modified
 | 
			
		||||
        // format string that only stores the matched characters (%n).
 | 
			
		||||
        // The other reads in the actual matched values.
 | 
			
		||||
        //
 | 
			
		||||
        // We keep trying the match until we succeed or some other error
 | 
			
		||||
        // derails us.
 | 
			
		||||
        int j = 0;
 | 
			
		||||
 | 
			
		||||
        while (true) {
 | 
			
		||||
            // Receive next character
 | 
			
		||||
            int c = getc();
 | 
			
		||||
            if (c < 0) {
 | 
			
		||||
                debug_if(_dbg_on, "AT(Timeout)\n");
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
            // Simplify newlines (borrowed from retarget.cpp)
 | 
			
		||||
            if ((c == CR && _in_prev != LF) ||
 | 
			
		||||
                    (c == LF && _in_prev != CR)) {
 | 
			
		||||
                _in_prev = c;
 | 
			
		||||
                c = '\n';
 | 
			
		||||
            } else if ((c == CR && _in_prev == LF) ||
 | 
			
		||||
                       (c == LF && _in_prev == CR)) {
 | 
			
		||||
                _in_prev = c;
 | 
			
		||||
                // onto next character
 | 
			
		||||
                continue;
 | 
			
		||||
            } else {
 | 
			
		||||
                _in_prev = c;
 | 
			
		||||
            }
 | 
			
		||||
            _buffer[offset + j++] = c;
 | 
			
		||||
            _buffer[offset + j] = 0;
 | 
			
		||||
 | 
			
		||||
            // Check for oob data
 | 
			
		||||
            for (struct oob *oob = _oobs; oob; oob = oob->next) {
 | 
			
		||||
                if ((unsigned)j == oob->len && memcmp(
 | 
			
		||||
                            oob->prefix, _buffer + offset, oob->len) == 0) {
 | 
			
		||||
                    debug_if(_dbg_on, "AT! %s\n", oob->prefix);
 | 
			
		||||
                    oob->cb();
 | 
			
		||||
 | 
			
		||||
                    if (_aborted) {
 | 
			
		||||
                        debug_if(_dbg_on, "AT(Aborted)\n");
 | 
			
		||||
                        return false;
 | 
			
		||||
                    }
 | 
			
		||||
                    // oob may have corrupted non-reentrant buffer,
 | 
			
		||||
                    // so we need to set it up again
 | 
			
		||||
                    goto restart;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Check for match
 | 
			
		||||
            int count = -1;
 | 
			
		||||
            if (whole_line_wanted && c != '\n') {
 | 
			
		||||
                // Don't attempt scanning until we get delimiter if they included it in format
 | 
			
		||||
                // This allows recv("Foo: %s\n") to work, and not match with just the first character of a string
 | 
			
		||||
                // (scanf does not itself match whitespace in its format string, so \n is not significant to it)
 | 
			
		||||
            } else {
 | 
			
		||||
                sscanf(_buffer + offset, _buffer, &count);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // We only succeed if all characters in the response are matched
 | 
			
		||||
            if (count == j) {
 | 
			
		||||
                debug_if(_dbg_on, "AT= %s\n", _buffer + offset);
 | 
			
		||||
                // Reuse the front end of the buffer
 | 
			
		||||
                memcpy(_buffer, response, i);
 | 
			
		||||
                _buffer[i] = 0;
 | 
			
		||||
 | 
			
		||||
                // Store the found results
 | 
			
		||||
                vsscanf(_buffer + offset, _buffer, args);
 | 
			
		||||
 | 
			
		||||
                // Jump to next line and continue parsing
 | 
			
		||||
                response += i;
 | 
			
		||||
                break;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Clear the buffer when we hit a newline or ran out of space
 | 
			
		||||
            // running out of space usually means we ran into binary data
 | 
			
		||||
            if (c == '\n' || j + 1 >= _buffer_size - offset) {
 | 
			
		||||
                debug_if(_dbg_on, "AT< %s", _buffer + offset);
 | 
			
		||||
                j = 0;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Mapping to vararg functions
 | 
			
		||||
int ATCmdParser::printf(const char *format, ...)
 | 
			
		||||
{
 | 
			
		||||
    va_list args;
 | 
			
		||||
    va_start(args, format);
 | 
			
		||||
    int res = vprintf(format, args);
 | 
			
		||||
    va_end(args);
 | 
			
		||||
    return res;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ATCmdParser::scanf(const char *format, ...)
 | 
			
		||||
{
 | 
			
		||||
    va_list args;
 | 
			
		||||
    va_start(args, format);
 | 
			
		||||
    int res = vscanf(format, args);
 | 
			
		||||
    va_end(args);
 | 
			
		||||
    return res;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool ATCmdParser::send(const char *command, ...)
 | 
			
		||||
{
 | 
			
		||||
    va_list args;
 | 
			
		||||
    va_start(args, command);
 | 
			
		||||
    bool res = vsend(command, args);
 | 
			
		||||
    va_end(args);
 | 
			
		||||
    return res;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool ATCmdParser::recv(const char *response, ...)
 | 
			
		||||
{
 | 
			
		||||
    va_list args;
 | 
			
		||||
    va_start(args, response);
 | 
			
		||||
    bool res = vrecv(response, args);
 | 
			
		||||
    va_end(args);
 | 
			
		||||
    return res;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// oob registration
 | 
			
		||||
void ATCmdParser::oob(const char *prefix, Callback<void()> cb)
 | 
			
		||||
{
 | 
			
		||||
    struct oob *oob = new struct oob;
 | 
			
		||||
    oob->len = strlen(prefix);
 | 
			
		||||
    oob->prefix = prefix;
 | 
			
		||||
    oob->cb = cb;
 | 
			
		||||
    oob->next = _oobs;
 | 
			
		||||
    _oobs = oob;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ATCmdParser::abort()
 | 
			
		||||
{
 | 
			
		||||
    _aborted = true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool ATCmdParser::process_oob()
 | 
			
		||||
{
 | 
			
		||||
    if (!_fh->readable()) {
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    int i = 0;
 | 
			
		||||
    while (true) {
 | 
			
		||||
        // Receive next character
 | 
			
		||||
        int c = getc();
 | 
			
		||||
        if (c < 0) {
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
        _buffer[i++] = c;
 | 
			
		||||
        _buffer[i] = 0;
 | 
			
		||||
 | 
			
		||||
        // Check for oob data
 | 
			
		||||
        struct oob *oob = _oobs;
 | 
			
		||||
        while (oob) {
 | 
			
		||||
            if (i == (int)oob->len && memcmp(
 | 
			
		||||
                        oob->prefix, _buffer, oob->len) == 0) {
 | 
			
		||||
                debug_if(_dbg_on, "AT! %s\r\n", oob->prefix);
 | 
			
		||||
                oob->cb();
 | 
			
		||||
                return true;
 | 
			
		||||
            }
 | 
			
		||||
            oob = oob->next;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Clear the buffer when we hit a newline or ran out of space
 | 
			
		||||
        // running out of space usually means we ran into binary data
 | 
			
		||||
        if (i + 1 >= _buffer_size ||
 | 
			
		||||
                strcmp(&_buffer[i - _output_delim_size], _output_delimiter) == 0) {
 | 
			
		||||
 | 
			
		||||
            debug_if(_dbg_on, "AT< %s", _buffer);
 | 
			
		||||
            i = 0;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -31,6 +31,10 @@ const int DEFAULT_AT_TIMEOUT = 1000; // at default timeout in milliseconds
 | 
			
		|||
nsapi_error_t ATHandler_stub::nsapi_error_value = 0;
 | 
			
		||||
uint8_t ATHandler_stub::nsapi_error_ok_counter = 0;
 | 
			
		||||
int ATHandler_stub::int_value = -1;
 | 
			
		||||
int ATHandler_stub::ref_count = 0;
 | 
			
		||||
int ATHandler_stub::timeout = 0;
 | 
			
		||||
bool ATHandler_stub::default_timeout = 0;
 | 
			
		||||
bool ATHandler_stub::debug_on = 0;
 | 
			
		||||
ssize_t ATHandler_stub::ssize_value = 0;
 | 
			
		||||
char *ATHandler_stub::read_string_value = NULL;
 | 
			
		||||
size_t ATHandler_stub::size_value = 0;
 | 
			
		||||
| 
						 | 
				
			
			@ -41,28 +45,45 @@ FileHandle_stub *ATHandler_stub::fh_value = NULL;
 | 
			
		|||
device_err_t ATHandler_stub::device_err_value;
 | 
			
		||||
Callback<void()> ATHandler_stub::callback = NULL;
 | 
			
		||||
uint8_t ATHandler_stub::resp_info_true_counter = false;
 | 
			
		||||
uint8_t ATHandler_stub::info_elem_true_counter = false;
 | 
			
		||||
int ATHandler_stub::int_valid_count_table[kRead_int_table_size];
 | 
			
		||||
int ATHandler_stub::int_count = kRead_int_table_size;
 | 
			
		||||
 | 
			
		||||
ATHandler::ATHandler(FileHandle *fh, EventQueue &queue, int timeout, const char *output_delimiter, uint16_t send_delay) : _nextATHandler(0),
 | 
			
		||||
int ATHandler_stub::read_string_index = kRead_string_table_size;
 | 
			
		||||
char *ATHandler_stub::read_string_table[kRead_string_table_size];
 | 
			
		||||
int ATHandler_stub::resp_stop_success_count = kResp_stop_count_default;
 | 
			
		||||
 | 
			
		||||
ATHandler::ATHandler(FileHandle *fh, EventQueue &queue, int timeout, const char *output_delimiter, uint16_t send_delay) :
 | 
			
		||||
    _nextATHandler(0),
 | 
			
		||||
    _fileHandle(fh),
 | 
			
		||||
    _queue(queue)
 | 
			
		||||
{
 | 
			
		||||
    ATHandler_stub::ref_count = 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ATHandler::set_debug(bool debug_on)
 | 
			
		||||
{
 | 
			
		||||
    ATHandler_stub::debug_on = debug_on;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
ATHandler::~ATHandler()
 | 
			
		||||
{
 | 
			
		||||
    ATHandler_stub::ref_count = -909;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ATHandler::inc_ref_count()
 | 
			
		||||
{
 | 
			
		||||
    ATHandler_stub::ref_count++;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ATHandler::dec_ref_count()
 | 
			
		||||
{
 | 
			
		||||
    ATHandler_stub::ref_count--;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ATHandler::get_ref_count()
 | 
			
		||||
{
 | 
			
		||||
    return ATHandler_stub::int_value;
 | 
			
		||||
    return ATHandler_stub::ref_count;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
FileHandle *ATHandler::get_file_handle()
 | 
			
		||||
| 
						 | 
				
			
			@ -77,7 +98,7 @@ void ATHandler::set_file_handle(FileHandle *fh)
 | 
			
		|||
nsapi_error_t ATHandler::set_urc_handler(const char *urc, mbed::Callback<void()> cb)
 | 
			
		||||
{
 | 
			
		||||
    ATHandler_stub::callback = cb;
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
    return ATHandler_stub::nsapi_error_value;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ATHandler::remove_urc_handler(const char *prefix, mbed::Callback<void()> callback)
 | 
			
		||||
| 
						 | 
				
			
			@ -108,6 +129,8 @@ nsapi_error_t ATHandler::unlock_return_error()
 | 
			
		|||
 | 
			
		||||
void ATHandler::set_at_timeout(uint32_t timeout_milliseconds, bool default_timeout)
 | 
			
		||||
{
 | 
			
		||||
    ATHandler_stub::timeout = timeout_milliseconds;
 | 
			
		||||
    ATHandler_stub::default_timeout = default_timeout;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ATHandler::restore_at_timeout()
 | 
			
		||||
| 
						 | 
				
			
			@ -120,10 +143,12 @@ void ATHandler::process_oob()
 | 
			
		|||
 | 
			
		||||
void ATHandler::clear_error()
 | 
			
		||||
{
 | 
			
		||||
    ATHandler_stub::nsapi_error_ok_counter++;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ATHandler::skip_param(uint32_t count)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ATHandler::skip_param(ssize_t len, uint32_t count)
 | 
			
		||||
| 
						 | 
				
			
			@ -137,15 +162,44 @@ ssize_t ATHandler::read_bytes(uint8_t *buf, size_t len)
 | 
			
		|||
 | 
			
		||||
ssize_t ATHandler::read_string(char *buf, size_t size, bool read_even_stop_tag)
 | 
			
		||||
{
 | 
			
		||||
    if (ATHandler_stub::read_string_value && ATHandler_stub::ssize_value >= 0) {
 | 
			
		||||
        memcpy(buf, ATHandler_stub::read_string_value, ATHandler_stub::ssize_value);
 | 
			
		||||
 | 
			
		||||
    if (ATHandler_stub::read_string_index == kRead_string_table_size) {
 | 
			
		||||
        if (ATHandler_stub::read_string_value && ATHandler_stub::ssize_value >= 0) {
 | 
			
		||||
            memcpy(buf, ATHandler_stub::read_string_value, ATHandler_stub::ssize_value + 1);
 | 
			
		||||
        }
 | 
			
		||||
        return ATHandler_stub::ssize_value;
 | 
			
		||||
    }
 | 
			
		||||
    return ATHandler_stub::ssize_value;
 | 
			
		||||
 | 
			
		||||
    ATHandler_stub::read_string_index--;
 | 
			
		||||
    if (ATHandler_stub::read_string_index >= 0) {
 | 
			
		||||
        char *tmp = ATHandler_stub::read_string_table[ATHandler_stub::read_string_index];
 | 
			
		||||
        ssize_t len = strlen(tmp);
 | 
			
		||||
        memcpy(buf, tmp, len + 1);
 | 
			
		||||
        return len;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR;
 | 
			
		||||
    return -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ATHandler::read_int()
 | 
			
		||||
int32_t ATHandler::read_int()
 | 
			
		||||
{
 | 
			
		||||
    return ATHandler_stub::int_value;
 | 
			
		||||
    if (ATHandler_stub::nsapi_error_value != NSAPI_ERROR_OK) {
 | 
			
		||||
        return -1;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (ATHandler_stub::int_count == kRead_int_table_size) {
 | 
			
		||||
        return ATHandler_stub::int_value;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    //printf("ATHandler_stub::int_count: %d", ATHandler_stub::int_count);
 | 
			
		||||
    ATHandler_stub::int_count--;
 | 
			
		||||
    if (ATHandler_stub::int_count < kRead_int_table_size && ATHandler_stub::int_count >= 0) {
 | 
			
		||||
        return ATHandler_stub::int_valid_count_table[ATHandler_stub::int_count];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR;
 | 
			
		||||
    return -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ATHandler::set_delimiter(char delimiter)
 | 
			
		||||
| 
						 | 
				
			
			@ -180,6 +234,10 @@ bool ATHandler::info_resp()
 | 
			
		|||
 | 
			
		||||
bool ATHandler::info_elem(char start_tag)
 | 
			
		||||
{
 | 
			
		||||
    if (ATHandler_stub::info_elem_true_counter) {
 | 
			
		||||
        ATHandler_stub::info_elem_true_counter--;
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
    return ATHandler_stub::bool_value;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -190,13 +248,18 @@ bool ATHandler::consume_to_stop_tag()
 | 
			
		|||
 | 
			
		||||
void ATHandler::resp_stop()
 | 
			
		||||
{
 | 
			
		||||
    if (ATHandler_stub::resp_stop_success_count > 0) {
 | 
			
		||||
        ATHandler_stub::resp_stop_success_count--;
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
    ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ATHandler::cmd_start(const char *cmd)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ATHandler::write_int(int param)
 | 
			
		||||
void ATHandler::write_int(int32_t param)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -223,4 +286,5 @@ device_err_t ATHandler::get_last_device_error() const
 | 
			
		|||
 | 
			
		||||
void ATHandler::flush()
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,21 +23,37 @@
 | 
			
		|||
#include "FileHandle_stub.h"
 | 
			
		||||
#include "Callback.h"
 | 
			
		||||
 | 
			
		||||
namespace ATHandler_stub
 | 
			
		||||
{
 | 
			
		||||
#ifndef __AT_HANDLER_STUB_H__
 | 
			
		||||
#define __AT_HANDLER_STUB_H__
 | 
			
		||||
 | 
			
		||||
static const int kRead_string_table_size = 100;
 | 
			
		||||
static const int kRead_int_table_size = 100;
 | 
			
		||||
static const int kResp_stop_count_default = 100;
 | 
			
		||||
 | 
			
		||||
namespace ATHandler_stub {
 | 
			
		||||
extern nsapi_error_t nsapi_error_value;
 | 
			
		||||
extern uint8_t nsapi_error_ok_counter;
 | 
			
		||||
extern int int_value;
 | 
			
		||||
extern int ref_count;
 | 
			
		||||
extern int timeout;
 | 
			
		||||
extern bool default_timeout;
 | 
			
		||||
extern bool debug_on;
 | 
			
		||||
extern ssize_t ssize_value;
 | 
			
		||||
extern char *read_string_value;
 | 
			
		||||
extern size_t size_value;
 | 
			
		||||
extern size_t return_given_size;
 | 
			
		||||
extern bool bool_value;
 | 
			
		||||
extern uint8_t resp_info_true_counter;
 | 
			
		||||
extern uint8_t info_elem_true_counter;
 | 
			
		||||
extern uint8_t uint8_value;
 | 
			
		||||
extern mbed::FileHandle_stub *fh_value;
 | 
			
		||||
extern mbed::device_err_t device_err_value;
 | 
			
		||||
extern mbed::Callback<void()> callback;
 | 
			
		||||
extern char *read_string_table[kRead_string_table_size];
 | 
			
		||||
extern int read_string_index;
 | 
			
		||||
extern int int_valid_count_table[kRead_int_table_size];
 | 
			
		||||
extern int int_count;
 | 
			
		||||
extern int resp_stop_success_count;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
} // namespace ATHandler_stub
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,48 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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 "nsapi_types.h"
 | 
			
		||||
#include "AT_CellularBase.h"
 | 
			
		||||
#include "AT_CellularBase_stub.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()
 | 
			
		||||
{
 | 
			
		||||
    return *AT_CellularBase_stub::handler_value;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
device_err_t AT_CellularBase::get_device_error() const
 | 
			
		||||
{
 | 
			
		||||
    return AT_CellularBase_stub::device_err_value;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool AT_CellularBase::is_supported(SupportedFeature feature)
 | 
			
		||||
{
 | 
			
		||||
    return AT_CellularBase_stub::supported_bool;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,25 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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 "ATHandler.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;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,91 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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_CellularDevice.h"
 | 
			
		||||
 | 
			
		||||
AT_CellularDevice::AT_CellularDevice(EventQueue &queue) :
 | 
			
		||||
    _atHandlers(0), _network(0), _sms(0), _sim(0), _power(0), _multiplexer(0), _information(0), _queue(queue)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
AT_CellularDevice::~AT_CellularDevice()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
ATHandler *AT_CellularDevice::get_at_handler(FileHandle *fileHandle)
 | 
			
		||||
{
 | 
			
		||||
    return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void AT_CellularDevice::release_at_handler(ATHandler *at_handler)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
CellularNetwork *AT_CellularDevice::open_network(FileHandle *fh)
 | 
			
		||||
{
 | 
			
		||||
    return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
CellularSMS *AT_CellularDevice::open_sms(FileHandle *fh)
 | 
			
		||||
{
 | 
			
		||||
    return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
CellularSIM *AT_CellularDevice::open_sim(FileHandle *fh)
 | 
			
		||||
{
 | 
			
		||||
    return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
CellularPower *AT_CellularDevice::open_power(FileHandle *fh)
 | 
			
		||||
{
 | 
			
		||||
    return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
CellularMultiplexer *AT_CellularDevice::open_multiplexer(FileHandle *fh)
 | 
			
		||||
{
 | 
			
		||||
    return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
CellularInformation *AT_CellularDevice::open_information(FileHandle *fh)
 | 
			
		||||
{
 | 
			
		||||
    return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void AT_CellularDevice::close_network()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void AT_CellularDevice::close_sms()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void AT_CellularDevice::close_power()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void AT_CellularDevice::close_sim()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void AT_CellularDevice::close_multiplexer()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void AT_CellularDevice::close_information()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,49 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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 "AT_CellularInformation.h"
 | 
			
		||||
#include "nsapi_types.h"
 | 
			
		||||
 | 
			
		||||
using namespace mbed;
 | 
			
		||||
 | 
			
		||||
AT_CellularInformation::AT_CellularInformation(ATHandler &at) : AT_CellularBase(at)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
AT_CellularInformation::~AT_CellularInformation()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularInformation::get_manufacturer(char *buf, size_t buf_size)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularInformation::get_model(char *buf, size_t buf_size)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularInformation::get_revision(char *buf, size_t buf_size)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularInformation::get_serial_number(char *buf, size_t buf_size, SerialNumberType type)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,35 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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_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;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,256 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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_CellularNetwork.h"
 | 
			
		||||
#include "CellularNetwork.h"
 | 
			
		||||
#include "CellularUtil.h"
 | 
			
		||||
#include "CellularLog.h"
 | 
			
		||||
#include "FileHandle.h"
 | 
			
		||||
#include "nsapi_types.h"
 | 
			
		||||
 | 
			
		||||
using namespace mbed;
 | 
			
		||||
using namespace mbed_cellular_util;
 | 
			
		||||
 | 
			
		||||
AT_CellularNetwork::AT_CellularNetwork(ATHandler &atHandler) : AT_CellularBase(atHandler)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
AT_CellularNetwork::~AT_CellularNetwork()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularNetwork::init()
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularNetwork::set_credentials(const char *apn,
 | 
			
		||||
                                                  const char *username, const char *password)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularNetwork::set_credentials(const char *apn,
 | 
			
		||||
                                                  AuthenticationType type, const char *username, const char *password)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularNetwork::connect(const char *apn,
 | 
			
		||||
                                          const char *username, const char *password)
 | 
			
		||||
{
 | 
			
		||||
    return connect();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularNetwork::connect()
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularNetwork::activate_context()
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularNetwork::open_data_channel()
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularNetwork::disconnect()
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void AT_CellularNetwork::attach(Callback<void(nsapi_event_t, intptr_t)> status_cb)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_connection_status_t AT_CellularNetwork::get_connection_status() const
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_STATUS_LOCAL_UP;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularNetwork::set_blocking(bool blocking)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_ip_stack_t AT_CellularNetwork::string_to_stack_type(const char *pdp_type)
 | 
			
		||||
{
 | 
			
		||||
    return IPV4_STACK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularNetwork::set_registration_urc(RegistrationType type, bool urc_on)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularNetwork::get_network_registering_mode(NWRegisteringMode &mode)
 | 
			
		||||
{
 | 
			
		||||
    mode = NWModeAutomatic;
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularNetwork::set_registration(const char *plmn)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularNetwork::get_registration_status(RegistrationType type, RegistrationStatus &status)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularNetwork::get_cell_id(int &cell_id)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
AT_CellularNetwork::RegistrationMode AT_CellularNetwork::has_registration(RegistrationType reg_type)
 | 
			
		||||
{
 | 
			
		||||
    return RegistrationModeDisable;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularNetwork::set_attach(int timeout)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularNetwork::get_attach(AttachStatus &status)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularNetwork::detach()
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularNetwork::get_apn_backoff_timer(int &backoffTime)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
NetworkStack *AT_CellularNetwork::get_stack()
 | 
			
		||||
{
 | 
			
		||||
    return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const char *AT_CellularNetwork::get_ip_address()
 | 
			
		||||
{
 | 
			
		||||
    return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularNetwork::set_stack_type(nsapi_ip_stack_t stack_type)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_ip_stack_t AT_CellularNetwork::get_stack_type()
 | 
			
		||||
{
 | 
			
		||||
    return IPV4_STACK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool AT_CellularNetwork::get_modem_stack_type(nsapi_ip_stack_t requested_stack)
 | 
			
		||||
{
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void AT_CellularNetwork::urc_no_carrier()
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularNetwork::set_access_technology_impl(RadioAccessTechnology opsAct)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularNetwork::set_access_technology(RadioAccessTechnology opAct)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularNetwork::get_access_technology(RadioAccessTechnology &rat)
 | 
			
		||||
{
 | 
			
		||||
    rat = RAT_CATM1;
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularNetwork::scan_plmn(operList_t &operators, int &opsCount)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularNetwork::set_ciot_optimization_config(Supported_UE_Opt supported_opt,
 | 
			
		||||
                                                               Preferred_UE_Opt preferred_opt)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularNetwork::get_ciot_optimization_config(Supported_UE_Opt &supported_opt,
 | 
			
		||||
                                                               Preferred_UE_Opt &preferred_opt)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularNetwork::get_rate_control(
 | 
			
		||||
    CellularNetwork::RateControlExceptionReports &reports,
 | 
			
		||||
    CellularNetwork::RateControlUplinkTimeUnit &timeUnit, int &uplinkRate)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularNetwork::get_pdpcontext_params(pdpContextList_t ¶ms_list)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularNetwork::get_extended_signal_quality(int &rxlev, int &ber, int &rscp, int &ecno, int &rsrq, int &rsrp)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularNetwork::get_signal_quality(int &rssi, int &ber)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularNetwork::get_operator_params(int &format, operator_t &operator_params)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int AT_CellularNetwork::get_3gpp_error()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularNetwork::get_operator_names(operator_names_list &op_names)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularNetwork::do_user_authentication()
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,81 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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_CellularPower.h"
 | 
			
		||||
#include "CellularUtil.h"
 | 
			
		||||
#include "CellularLog.h"
 | 
			
		||||
 | 
			
		||||
using namespace mbed_cellular_util;
 | 
			
		||||
using namespace mbed;
 | 
			
		||||
 | 
			
		||||
AT_CellularPower::AT_CellularPower(ATHandler &at) : AT_CellularBase(at)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
AT_CellularPower::~AT_CellularPower()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularPower::on()
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularPower::off()
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularPower::set_at_mode()
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularPower::set_power_level(int func_level, int do_reset)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularPower::reset()
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularPower::opt_power_save_mode(int periodic_time, int active_time)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularPower::opt_receive_period(int mode, EDRXAccessTechnology act_type, uint8_t edrx_value)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularPower::set_device_ready_urc_cb(mbed::Callback<void()> callback)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void AT_CellularPower::remove_device_ready_urc_cb(mbed::Callback<void()> callback)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularPower::is_device_ready()
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,59 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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_CellularSIM.h"
 | 
			
		||||
#include "CellularLog.h"
 | 
			
		||||
 | 
			
		||||
using namespace mbed;
 | 
			
		||||
 | 
			
		||||
AT_CellularSIM::AT_CellularSIM(ATHandler &at) : AT_CellularBase(at)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
AT_CellularSIM::~AT_CellularSIM()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularSIM::get_sim_state(SimState &state)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularSIM::set_pin(const char *sim_pin)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularSIM::change_pin(const char *sim_pin, const char *new_pin)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularSIM::set_pin_query(const char *sim_pin, bool query_pin)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularSIM::get_imsi(char *imsi)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularSIM::get_iccid(char *buf, size_t buf_size)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,190 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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 <time.h>
 | 
			
		||||
#include "AT_CellularSMS.h"
 | 
			
		||||
#include "CellularLog.h"
 | 
			
		||||
 | 
			
		||||
using namespace mbed;
 | 
			
		||||
 | 
			
		||||
#define CTRL_Z  "\x1a"
 | 
			
		||||
#define ESC     "\x1b"
 | 
			
		||||
 | 
			
		||||
const int SMS_STATUS_SIZE = 12 + 1;
 | 
			
		||||
const int FIRST_OCTET_DELIVER_SUBMIT = 17;
 | 
			
		||||
const int TP_VALIDITY_PERIOD_24_HOURS = 167;
 | 
			
		||||
const int TP_PROTOCOL_IDENTIFIER = 0;
 | 
			
		||||
const int SMS_DATA_CODING_SCHEME = 0;
 | 
			
		||||
 | 
			
		||||
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()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void AT_CellularSMS::cmt_urc()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void AT_CellularSMS::cmti_urc()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularSMS::set_cnmi()
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularSMS::set_cmgf(int msg_format)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularSMS::set_csmp(int fo, int vp, int pid, int dcs)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularSMS::set_csdh(int show_header)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularSMS::initialize(CellularSMSMmode mode)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void AT_CellularSMS::set_extra_sim_wait_time(int sim_wait_time)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
char *AT_CellularSMS::create_pdu(const char *phone_number, const char *message, uint8_t message_length, uint8_t msg_parts,
 | 
			
		||||
                                 uint8_t msg_part_number, uint8_t &header_size)
 | 
			
		||||
{
 | 
			
		||||
    return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_size_or_error_t AT_CellularSMS::send_sms(const char *phone_number, const char *message, int msg_len)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void AT_CellularSMS::set_sms_callback(Callback<void()> func)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularSMS::set_cpms(const char *memr, const char *memw, const char *mems)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularSMS::set_csca(const char *sca, int type)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_size_or_error_t AT_CellularSMS::set_cscs(const char *chr_set)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//nsapi_error_t AT_CellularSMS::set_csms(int msg_service)
 | 
			
		||||
//{
 | 
			
		||||
//    return NSAPI_ERROR_OK;
 | 
			
		||||
//}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularSMS::delete_sms(sms_info_t *sms)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularSMS::delete_all_messages()
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_size_or_error_t AT_CellularSMS::read_sms_from_index(int msg_index, char *buf, uint16_t len, char *phone_num, char *time_stamp)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// read msg in PDU mode
 | 
			
		||||
nsapi_size_or_error_t AT_CellularSMS::read_sms(sms_info_t *sms, char *buf, char *phone_num, char *time_stamp)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_size_or_error_t AT_CellularSMS::get_sms(char *buf, uint16_t len, char *phone_num, uint16_t phone_len,
 | 
			
		||||
                                              char *time_stamp, uint16_t time_len, int *buf_size)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_size_or_error_t AT_CellularSMS::get_data_from_pdu(const char *pdu, sms_info_t *info, int *part_number, char *phone_number, char *msg)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// read params from User DEfined Header
 | 
			
		||||
int AT_CellularSMS::read_udh_from_pdu(const char *pdu, sms_info_t *info, int &part_number, int &padding_bits)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_size_or_error_t AT_CellularSMS::read_pdu_payload(const char *pdu, int msg_len, int scheme, char *msg, int padding_bits)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void AT_CellularSMS::free_linked_list()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void AT_CellularSMS::add_info(sms_info_t *info, int index, int part_number)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// reads all the messages to the linked list AT_CellularSMS::_sms_info
 | 
			
		||||
nsapi_error_t AT_CellularSMS::list_messages()
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
AT_CellularSMS::sms_info_t *AT_CellularSMS::get_oldest_sms_index()
 | 
			
		||||
{
 | 
			
		||||
    return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// if time_string_1 is greater (more fresh date) then return 1, same 0, smaller -1. Error -2
 | 
			
		||||
int AT_CellularSMS::compare_time_strings(const char *time_string_1, const char *time_string_2)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool AT_CellularSMS::create_time(const char *time_string, time_t *time)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,90 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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_CellularStack.h"
 | 
			
		||||
#include "CellularUtil.h"
 | 
			
		||||
#include "CellularLog.h"
 | 
			
		||||
 | 
			
		||||
using namespace mbed_cellular_util;
 | 
			
		||||
 | 
			
		||||
AT_CellularStack::AT_CellularStack(ATHandler &atHandler, int cid, nsapi_ip_stack_t stack_type) : _at(atHandler), _socket(NULL), _cid(cid), _stack_type(stack_type)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
AT_CellularStack::~AT_CellularStack()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const char *AT_CellularStack::get_ip_address()
 | 
			
		||||
{
 | 
			
		||||
    return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularStack::socket_open(nsapi_socket_t *handle, nsapi_protocol_t proto)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularStack::socket_close(nsapi_socket_t handle)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularStack::socket_bind(nsapi_socket_t handle, const SocketAddress &addr)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularStack::socket_listen(nsapi_socket_t handle, int backlog)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularStack::socket_connect(nsapi_socket_t handle, const SocketAddress &addr)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t AT_CellularStack::socket_accept(void *server, void **socket, SocketAddress *addr)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_size_or_error_t AT_CellularStack::socket_send(nsapi_socket_t handle, const void *data, unsigned size)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_size_or_error_t AT_CellularStack::socket_sendto(nsapi_socket_t handle, const SocketAddress &addr, const void *data, unsigned size)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_size_or_error_t AT_CellularStack::socket_recv(nsapi_socket_t handle, void *data, unsigned size)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_size_or_error_t AT_CellularStack::socket_recvfrom(nsapi_socket_t handle, SocketAddress *addr, void *buffer, unsigned size)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void AT_CellularStack::socket_attach(nsapi_socket_t handle, void (*callback)(void *), void *data)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,104 @@
 | 
			
		|||
/* mbed Microcontroller Library
 | 
			
		||||
 * Copyright (c) 2018 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.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "BufferedBlockDevice.h"
 | 
			
		||||
#include "mbed_assert.h"
 | 
			
		||||
#include "mbed_critical.h"
 | 
			
		||||
#include <algorithm>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
 | 
			
		||||
static inline uint32_t align_down(bd_size_t val, bd_size_t size)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
BufferedBlockDevice::BufferedBlockDevice(BlockDevice *bd)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
BufferedBlockDevice::~BufferedBlockDevice()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int BufferedBlockDevice::init()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int BufferedBlockDevice::deinit()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int BufferedBlockDevice::flush()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int BufferedBlockDevice::sync()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int BufferedBlockDevice::read(void *b, bd_addr_t addr, bd_size_t size)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int BufferedBlockDevice::program(const void *b, bd_addr_t addr, bd_size_t size)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int BufferedBlockDevice::erase(bd_addr_t addr, bd_size_t size)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int BufferedBlockDevice::trim(bd_addr_t addr, bd_size_t size)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t BufferedBlockDevice::get_read_size() const
 | 
			
		||||
{
 | 
			
		||||
    return 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t BufferedBlockDevice::get_program_size() const
 | 
			
		||||
{
 | 
			
		||||
    return 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t BufferedBlockDevice::get_erase_size() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t BufferedBlockDevice::get_erase_size(bd_addr_t addr) const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int BufferedBlockDevice::get_erase_value() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t BufferedBlockDevice::size() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,113 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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 "CellularUtil.h"
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
 | 
			
		||||
namespace mbed_cellular_util {
 | 
			
		||||
 | 
			
		||||
#define MAX_STRING_LEN 200
 | 
			
		||||
 | 
			
		||||
void str_copy_skip_char(char *dest, uint16_t dest_size, const char *src, char c)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void str_remove_char(char *src, char c)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void uint_to_binary_str(uint32_t num, char *str, uint8_t str_size, uint8_t bit_cnt)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// converts the given str to hex string to buf
 | 
			
		||||
uint16_t char_str_to_hex(const char *str, uint16_t len, char *buf, bool omit_leading_zero)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void convert_ipv6(char *ip)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
char *find_dot_number(char *str, int dot_number)
 | 
			
		||||
{
 | 
			
		||||
    return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void separate_ip4like_addresses(char *orig, char *ip, size_t ip_size, char *ip2, size_t ip2_size)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void separate_ip_addresses(char *orig, char *ip, size_t ip_size, char *ip2, size_t ip2_size)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void prefer_ipv6(char *ip, size_t ip_size, char *ip2, size_t ip2_size)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void int_to_hex_str(uint8_t num, char *buf)
 | 
			
		||||
{
 | 
			
		||||
    buf[0] = '0';
 | 
			
		||||
    buf[1] = '2';
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int hex_str_to_int(const char *hex_string, int hex_string_length)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int hex_str_to_char_str(const char *str, uint16_t len, char *buf)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void uint_to_binary_str(uint32_t num, char *str, int str_size, int bit_cnt)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int char_str_to_hex_str(const char *str, uint16_t len, char *buf, bool omit_leading_zero)
 | 
			
		||||
{
 | 
			
		||||
    //The code is dependent on this, so this is easiest just to put here
 | 
			
		||||
    if (!str || !buf) {
 | 
			
		||||
        return 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    char *ptr = buf;
 | 
			
		||||
    int i = 0;
 | 
			
		||||
    while (i < len) {
 | 
			
		||||
        if (omit_leading_zero == true && i == 0 && !(str[i] >> 4 & 0x0F)) {
 | 
			
		||||
            *ptr++ = hex_values[(str[i]) & 0x0F];
 | 
			
		||||
        } else {
 | 
			
		||||
            *ptr++ = hex_values[((str[i]) >> 4) & 0x0F];
 | 
			
		||||
            *ptr++ = hex_values[(str[i]) & 0x0F];
 | 
			
		||||
        }
 | 
			
		||||
        i++;
 | 
			
		||||
    }
 | 
			
		||||
    return ptr - buf;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint16_t get_dynamic_ip_port()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
} // namespace mbed_cellular_util
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,88 @@
 | 
			
		|||
/* mbed Microcontroller Library
 | 
			
		||||
 * 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.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "ChainingBlockDevice.h"
 | 
			
		||||
#include "mbed_critical.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ChainingBlockDevice::ChainingBlockDevice(BlockDevice **bds, size_t bd_count)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static bool is_aligned(uint64_t x, uint64_t alignment)
 | 
			
		||||
{
 | 
			
		||||
    return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ChainingBlockDevice::init()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ChainingBlockDevice::deinit()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ChainingBlockDevice::sync()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ChainingBlockDevice::read(void *b, bd_addr_t addr, bd_size_t size)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ChainingBlockDevice::program(const void *b, bd_addr_t addr, bd_size_t size)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ChainingBlockDevice::erase(bd_addr_t addr, bd_size_t size)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t ChainingBlockDevice::get_read_size() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t ChainingBlockDevice::get_program_size() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t ChainingBlockDevice::get_erase_size() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t ChainingBlockDevice::get_erase_size(bd_addr_t addr) const
 | 
			
		||||
{
 | 
			
		||||
    return 0; 
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ChainingBlockDevice::get_erase_value() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t ChainingBlockDevice::size() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -15,6 +15,7 @@
 | 
			
		|||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <cstddef>
 | 
			
		||||
#include "rtos/EventFlags.h"
 | 
			
		||||
 | 
			
		||||
rtos::EventFlags::EventFlags() {}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,88 @@
 | 
			
		|||
/* mbed Microcontroller Library
 | 
			
		||||
 * 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.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "ExhaustibleBlockDevice.h"
 | 
			
		||||
#include "mbed.h"
 | 
			
		||||
#include "mbed_critical.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ExhaustibleBlockDevice::ExhaustibleBlockDevice(BlockDevice *bd, uint32_t erase_cycles)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
ExhaustibleBlockDevice::~ExhaustibleBlockDevice()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ExhaustibleBlockDevice::init()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ExhaustibleBlockDevice::deinit()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ExhaustibleBlockDevice::sync()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ExhaustibleBlockDevice::read(void *buffer, bd_addr_t addr, bd_size_t size)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ExhaustibleBlockDevice::program(const void *buffer, bd_addr_t addr, bd_size_t size)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ExhaustibleBlockDevice::erase(bd_addr_t addr, bd_size_t size)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t ExhaustibleBlockDevice::get_read_size() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t ExhaustibleBlockDevice::get_program_size() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t ExhaustibleBlockDevice::get_erase_size() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t ExhaustibleBlockDevice::get_erase_size(bd_addr_t addr) const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ExhaustibleBlockDevice::get_erase_value() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t ExhaustibleBlockDevice::size() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,97 @@
 | 
			
		|||
/* mbed Microcontroller Library
 | 
			
		||||
 * Copyright (c) 2018 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.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "FlashSimBlockDevice.h"
 | 
			
		||||
#include "mbed_assert.h"
 | 
			
		||||
#include "mbed_critical.h"
 | 
			
		||||
#include <algorithm>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
 | 
			
		||||
static const bd_size_t min_blank_buf_size = 32;
 | 
			
		||||
 | 
			
		||||
static inline uint32_t align_up(bd_size_t val, bd_size_t size)
 | 
			
		||||
{
 | 
			
		||||
    return (((val - 1) / size) + 1) * size;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
FlashSimBlockDevice::FlashSimBlockDevice(BlockDevice *bd, uint8_t erase_value)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
FlashSimBlockDevice::~FlashSimBlockDevice()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int FlashSimBlockDevice::init()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int FlashSimBlockDevice::deinit()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int FlashSimBlockDevice::sync()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t FlashSimBlockDevice::get_read_size() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t FlashSimBlockDevice::get_program_size() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t FlashSimBlockDevice::get_erase_size() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t FlashSimBlockDevice::get_erase_size(bd_addr_t addr) const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t FlashSimBlockDevice::size() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int FlashSimBlockDevice::read(void *b, bd_addr_t addr, bd_size_t size)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int FlashSimBlockDevice::program(const void *b, bd_addr_t addr, bd_size_t size)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int FlashSimBlockDevice::erase(bd_addr_t addr, bd_size_t size)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int FlashSimBlockDevice::get_erase_value() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,82 @@
 | 
			
		|||
/* mbed Microcontroller Library
 | 
			
		||||
 * 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.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "HeapBlockDevice.h"
 | 
			
		||||
#include "mbed_critical.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
HeapBlockDevice::HeapBlockDevice(bd_size_t size, bd_size_t block)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
HeapBlockDevice::HeapBlockDevice(bd_size_t size, bd_size_t read, bd_size_t program, bd_size_t erase)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
HeapBlockDevice::~HeapBlockDevice()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int HeapBlockDevice::init()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int HeapBlockDevice::deinit()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t HeapBlockDevice::get_read_size() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t HeapBlockDevice::get_program_size() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t HeapBlockDevice::get_erase_size() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t HeapBlockDevice::get_erase_size(bd_addr_t addr) const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t HeapBlockDevice::size() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int HeapBlockDevice::read(void *b, bd_addr_t addr, bd_size_t size)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int HeapBlockDevice::program(const void *b, bd_addr_t addr, bd_size_t size)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int HeapBlockDevice::erase(bd_addr_t addr, bd_size_t size)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,25 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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 "Kernel.h"
 | 
			
		||||
 | 
			
		||||
namespace rtos {
 | 
			
		||||
 | 
			
		||||
uint64_t Kernel::get_ms_count()
 | 
			
		||||
{
 | 
			
		||||
    return 20;
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,156 @@
 | 
			
		|||
/* mbed Microcontroller Library
 | 
			
		||||
 * 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.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "MBRBlockDevice.h"
 | 
			
		||||
#include "mbed_critical.h"
 | 
			
		||||
#include <algorithm>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// On disk structures, all entries are little endian
 | 
			
		||||
MBED_PACKED(struct) mbr_entry {
 | 
			
		||||
    uint8_t status;
 | 
			
		||||
    uint8_t chs_start[3];
 | 
			
		||||
    uint8_t type;
 | 
			
		||||
    uint8_t chs_stop[3];
 | 
			
		||||
    uint32_t lba_offset;
 | 
			
		||||
    uint32_t lba_size;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
MBED_PACKED(struct) mbr_table {
 | 
			
		||||
    struct mbr_entry entries[4];
 | 
			
		||||
    uint8_t signature[2];
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// Little-endian conversion, should compile to noop
 | 
			
		||||
// if system is little-endian
 | 
			
		||||
static inline uint32_t tole32(uint32_t a)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline uint32_t fromle32(uint32_t a)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void tochs(uint32_t lba, uint8_t chs[3])
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Partition after address are turned into absolute
 | 
			
		||||
// addresses, assumes bd is initialized
 | 
			
		||||
static int partition_absolute(
 | 
			
		||||
        BlockDevice *bd, int part, uint8_t type,
 | 
			
		||||
        bd_size_t offset, bd_size_t size)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int MBRBlockDevice::partition(BlockDevice *bd, int part, uint8_t type, bd_addr_t start)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int MBRBlockDevice::partition(BlockDevice *bd, int part, uint8_t type,
 | 
			
		||||
        bd_addr_t start, bd_addr_t stop)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
MBRBlockDevice::MBRBlockDevice(BlockDevice *bd, int part)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int MBRBlockDevice::init()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int MBRBlockDevice::deinit()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int MBRBlockDevice::sync()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int MBRBlockDevice::read(void *b, bd_addr_t addr, bd_size_t size)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int MBRBlockDevice::program(const void *b, bd_addr_t addr, bd_size_t size)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int MBRBlockDevice::erase(bd_addr_t addr, bd_size_t size)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t MBRBlockDevice::get_read_size() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t MBRBlockDevice::get_program_size() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t MBRBlockDevice::get_erase_size() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t MBRBlockDevice::get_erase_size(bd_addr_t addr) const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int MBRBlockDevice::get_erase_value() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t MBRBlockDevice::size() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t MBRBlockDevice::get_partition_start() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t MBRBlockDevice::get_partition_stop() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint8_t MBRBlockDevice::get_partition_type() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int MBRBlockDevice::get_partition_number() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,89 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (c) 2015, 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 "netsocket/NetworkInterface.h"
 | 
			
		||||
#include "netsocket/NetworkStack.h"
 | 
			
		||||
#include <string.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Default network-interface state
 | 
			
		||||
const char *NetworkInterface::get_mac_address()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const char *NetworkInterface::get_ip_address()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const char *NetworkInterface::get_netmask()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const char *NetworkInterface::get_gateway()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t NetworkInterface::set_network(const char *ip_address, const char *netmask, const char *gateway)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_UNSUPPORTED;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t NetworkInterface::set_dhcp(bool dhcp)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_UNSUPPORTED;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// DNS operations go through the underlying stack by default
 | 
			
		||||
nsapi_error_t NetworkInterface::gethostbyname(const char *name, SocketAddress *address, nsapi_version_t version)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_UNSUPPORTED;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t NetworkInterface::add_dns_server(const SocketAddress &address)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_UNSUPPORTED;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void NetworkInterface::attach(mbed::Callback<void(nsapi_event_t, intptr_t)> status_cb)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_connection_status_t NetworkInterface::get_connection_status() const
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_STATUS_LOCAL_UP;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t NetworkInterface::set_blocking(bool blocking)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_UNSUPPORTED;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_value_or_error_t NetworkInterface::gethostbyname_async(char const *, mbed::Callback<void (int, SocketAddress *)>, nsapi_version)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_UNSUPPORTED;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t NetworkInterface::gethostbyname_async_cancel(int id)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_UNSUPPORTED;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,95 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (c) 2015, 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 "NetworkStack.h"
 | 
			
		||||
#include "nsapi_dns.h"
 | 
			
		||||
#include "mbed.h"
 | 
			
		||||
#include "stddef.h"
 | 
			
		||||
#include <new>
 | 
			
		||||
 | 
			
		||||
// Default NetworkStack operations
 | 
			
		||||
nsapi_error_t NetworkStack::gethostbyname(const char *name, SocketAddress *address, nsapi_version_t version)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t NetworkStack::add_dns_server(const SocketAddress &address)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t NetworkStack::get_dns_server(int index, SocketAddress *address)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_UNSUPPORTED;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t NetworkStack::setstackopt(int level, int optname, const void *optval, unsigned optlen)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_UNSUPPORTED;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t NetworkStack::getstackopt(int level, int optname, void *optval, unsigned *optlen)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_UNSUPPORTED;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t NetworkStack::setsockopt(void *handle, int level, int optname, const void *optval, unsigned optlen)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_UNSUPPORTED;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t NetworkStack::getsockopt(void *handle, int level, int optname, void *optval, unsigned *optlen)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_UNSUPPORTED;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Conversion function for network stacks
 | 
			
		||||
NetworkStack *nsapi_create_stack(nsapi_stack_t *stack)
 | 
			
		||||
{
 | 
			
		||||
    return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
NetworkStack *nsapi_create_stack(NetworkStack *stack)
 | 
			
		||||
{
 | 
			
		||||
    return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_value_or_error_t NetworkStack::gethostbyname_async(const char *host, hostbyname_cb_t callback,
 | 
			
		||||
                                                         nsapi_version_t version)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_UNSUPPORTED;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t NetworkStack::gethostbyname_async_cancel(int id)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_UNSUPPORTED;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
call_in_callback_cb_t NetworkStack::get_call_in_callback()
 | 
			
		||||
{
 | 
			
		||||
    return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t NetworkStack::call_in(int delay, mbed::Callback<void()> func)
 | 
			
		||||
{
 | 
			
		||||
    return NSAPI_ERROR_UNSUPPORTED;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const char *NetworkStack::get_ip_address()
 | 
			
		||||
{
 | 
			
		||||
    return NULL;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,100 @@
 | 
			
		|||
/* mbed Microcontroller Library
 | 
			
		||||
 * Copyright (c) 2017-2017 ARM Limited
 | 
			
		||||
 *
 | 
			
		||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
			
		||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
			
		||||
 * in the Software without restriction, including without limitation the rights
 | 
			
		||||
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
			
		||||
 * copies of the Software, and to permit persons to whom the Software is
 | 
			
		||||
 * furnished to do so, subject to the following conditions:
 | 
			
		||||
 *
 | 
			
		||||
 * The above copyright notice and this permission notice shall be included in
 | 
			
		||||
 * all copies or substantial portions of the Software.
 | 
			
		||||
 *
 | 
			
		||||
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
			
		||||
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | 
			
		||||
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
			
		||||
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
			
		||||
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 | 
			
		||||
 * SOFTWARE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "ObservingBlockDevice.h"
 | 
			
		||||
#include "ReadOnlyBlockDevice.h"
 | 
			
		||||
#include "mbed.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ObservingBlockDevice::ObservingBlockDevice(BlockDevice *bd)
 | 
			
		||||
{
 | 
			
		||||
    // Does nothing
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
ObservingBlockDevice::~ObservingBlockDevice()
 | 
			
		||||
{
 | 
			
		||||
    // Does nothing
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ObservingBlockDevice::attach(Callback<void(BlockDevice *)> cb)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ObservingBlockDevice::init()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ObservingBlockDevice::deinit()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ObservingBlockDevice::sync()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ObservingBlockDevice::read(void *buffer, bd_addr_t addr, bd_size_t size)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ObservingBlockDevice::program(const void *buffer, bd_addr_t addr, bd_size_t size)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ObservingBlockDevice::erase(bd_addr_t addr, bd_size_t size)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t ObservingBlockDevice::get_read_size() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t ObservingBlockDevice::get_program_size() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t ObservingBlockDevice::get_erase_size() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t ObservingBlockDevice::get_erase_size(bd_addr_t addr) const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ObservingBlockDevice::get_erase_value() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t ObservingBlockDevice::size() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,101 @@
 | 
			
		|||
/* mbed Microcontroller Library
 | 
			
		||||
 * 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.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "ProfilingBlockDevice.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ProfilingBlockDevice::ProfilingBlockDevice(BlockDevice *bd)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ProfilingBlockDevice::init()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ProfilingBlockDevice::deinit()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ProfilingBlockDevice::sync()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ProfilingBlockDevice::read(void *b, bd_addr_t addr, bd_size_t size)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ProfilingBlockDevice::program(const void *b, bd_addr_t addr, bd_size_t size)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ProfilingBlockDevice::erase(bd_addr_t addr, bd_size_t size)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t ProfilingBlockDevice::get_read_size() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t ProfilingBlockDevice::get_program_size() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t ProfilingBlockDevice::get_erase_size() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t ProfilingBlockDevice::get_erase_size(bd_addr_t addr) const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ProfilingBlockDevice::get_erase_value() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t ProfilingBlockDevice::size() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ProfilingBlockDevice::reset()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t ProfilingBlockDevice::get_read_count() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t ProfilingBlockDevice::get_program_count() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t ProfilingBlockDevice::get_erase_count() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,95 @@
 | 
			
		|||
/* mbed Microcontroller Library
 | 
			
		||||
 * Copyright (c) 2017-2017 ARM Limited
 | 
			
		||||
 *
 | 
			
		||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
			
		||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
			
		||||
 * in the Software without restriction, including without limitation the rights
 | 
			
		||||
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
			
		||||
 * copies of the Software, and to permit persons to whom the Software is
 | 
			
		||||
 * furnished to do so, subject to the following conditions:
 | 
			
		||||
 *
 | 
			
		||||
 * The above copyright notice and this permission notice shall be included in
 | 
			
		||||
 * all copies or substantial portions of the Software.
 | 
			
		||||
 *
 | 
			
		||||
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
			
		||||
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | 
			
		||||
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
			
		||||
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
			
		||||
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 | 
			
		||||
 * SOFTWARE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "ReadOnlyBlockDevice.h"
 | 
			
		||||
#include "mbed_error.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ReadOnlyBlockDevice::ReadOnlyBlockDevice(BlockDevice *bd)
 | 
			
		||||
{
 | 
			
		||||
    // Does nothing
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
ReadOnlyBlockDevice::~ReadOnlyBlockDevice()
 | 
			
		||||
{
 | 
			
		||||
    // Does nothing
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ReadOnlyBlockDevice::init()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ReadOnlyBlockDevice::deinit()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ReadOnlyBlockDevice::sync()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ReadOnlyBlockDevice::read(void *buffer, bd_addr_t addr, bd_size_t size)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ReadOnlyBlockDevice::program(const void *buffer, bd_addr_t addr, bd_size_t size)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ReadOnlyBlockDevice::erase(bd_addr_t addr, bd_size_t size)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t ReadOnlyBlockDevice::get_read_size() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t ReadOnlyBlockDevice::get_program_size() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t ReadOnlyBlockDevice::get_erase_size() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t ReadOnlyBlockDevice::get_erase_size(bd_addr_t addr) const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ReadOnlyBlockDevice::get_erase_value() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t ReadOnlyBlockDevice::size() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,57 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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 "Semaphore.h"
 | 
			
		||||
 | 
			
		||||
namespace rtos {
 | 
			
		||||
 | 
			
		||||
Semaphore::Semaphore(int32_t count)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Semaphore::Semaphore(int32_t count, uint16_t max_count)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Semaphore::constructor(int32_t count, uint16_t max_count)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int32_t Semaphore::wait(uint32_t millisec)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int32_t Semaphore::wait_until(uint64_t millisec)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
osStatus Semaphore::release(void)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Semaphore::~Semaphore()
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,83 @@
 | 
			
		|||
/* mbed Microcontroller Library
 | 
			
		||||
 * 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.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "SlicingBlockDevice.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
SlicingBlockDevice::SlicingBlockDevice(BlockDevice *bd, bd_addr_t start, bd_addr_t stop)
 | 
			
		||||
{
 | 
			
		||||
   
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int SlicingBlockDevice::init()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int SlicingBlockDevice::deinit()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int SlicingBlockDevice::sync()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int SlicingBlockDevice::read(void *b, bd_addr_t addr, bd_size_t size)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int SlicingBlockDevice::program(const void *b, bd_addr_t addr, bd_size_t size)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int SlicingBlockDevice::erase(bd_addr_t addr, bd_size_t size)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t SlicingBlockDevice::get_read_size() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t SlicingBlockDevice::get_program_size() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t SlicingBlockDevice::get_erase_size() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t SlicingBlockDevice::get_erase_size(bd_addr_t addr) const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int SlicingBlockDevice::get_erase_value() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bd_size_t SlicingBlockDevice::size() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,145 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (c) 2015, 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 "SocketAddress.h"
 | 
			
		||||
#include "NetworkInterface.h"
 | 
			
		||||
#include "NetworkStack.h"
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include "mbed.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static bool ipv4_is_valid(const char *addr)
 | 
			
		||||
{
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static bool ipv6_is_valid(const char *addr)
 | 
			
		||||
{
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void ipv4_from_address(uint8_t *bytes, const char *addr)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int ipv6_scan_chunk(uint16_t *shorts, const char *chunk)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void ipv6_from_address(uint8_t *bytes, const char *addr)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void ipv4_to_address(char *addr, const uint8_t *bytes)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void ipv6_to_address(char *addr, const uint8_t *bytes)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
SocketAddress::SocketAddress(nsapi_addr_t addr, uint16_t port)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SocketAddress::SocketAddress(const char *addr, uint16_t port)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SocketAddress::SocketAddress(const void *bytes, nsapi_version_t version, uint16_t port)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SocketAddress::SocketAddress(const SocketAddress &addr)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SocketAddress::~SocketAddress()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool SocketAddress::set_ip_address(const char *addr)
 | 
			
		||||
{
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void SocketAddress::set_ip_bytes(const void *bytes, nsapi_version_t version)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void SocketAddress::set_addr(nsapi_addr_t addr)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void SocketAddress::set_port(uint16_t port)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const char *SocketAddress::get_ip_address() const
 | 
			
		||||
{
 | 
			
		||||
    return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const void *SocketAddress::get_ip_bytes() const
 | 
			
		||||
{
 | 
			
		||||
    return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_version_t SocketAddress::get_ip_version() const
 | 
			
		||||
{
 | 
			
		||||
    nsapi_version_t ver = NSAPI_IPv6;
 | 
			
		||||
    return ver;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_addr_t SocketAddress::get_addr() const
 | 
			
		||||
{
 | 
			
		||||
    nsapi_addr_t addr;
 | 
			
		||||
    addr.version = NSAPI_IPv6;
 | 
			
		||||
    return _addr;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint16_t SocketAddress::get_port() const
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SocketAddress::operator bool() const
 | 
			
		||||
{
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SocketAddress &SocketAddress::operator=(const SocketAddress &addr)
 | 
			
		||||
{
 | 
			
		||||
    set_addr(addr.get_addr());
 | 
			
		||||
    set_port(addr.get_port());
 | 
			
		||||
    return *this;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool operator==(const SocketAddress &a, const SocketAddress &b)
 | 
			
		||||
{
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool operator!=(const SocketAddress &a, const SocketAddress &b)
 | 
			
		||||
{
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,27 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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 "Thread.h"
 | 
			
		||||
 | 
			
		||||
namespace rtos {
 | 
			
		||||
 | 
			
		||||
osStatus Thread::wait_until(uint64_t millisec)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,74 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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 "Timer.h"
 | 
			
		||||
#include "Timer_stub.h"
 | 
			
		||||
 | 
			
		||||
namespace mbed {
 | 
			
		||||
 | 
			
		||||
Timer::Timer()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Timer::Timer(const ticker_data_t *data)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Timer::~Timer()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Timer::start()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Timer::stop()
 | 
			
		||||
{
 | 
			
		||||
    ;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int Timer::read_us()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
float Timer::read()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int Timer::read_ms()
 | 
			
		||||
{
 | 
			
		||||
    timer_stub_value += timer_stub_step;
 | 
			
		||||
    return timer_stub_value;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
us_timestamp_t Timer::read_high_resolution_us()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Timer::reset()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Timer::operator float()
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
} // namespace mbed
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,24 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef TIMER_STUB_H
 | 
			
		||||
#define TIMER_STUB_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static uint16_t timer_stub_value = 0;
 | 
			
		||||
static uint16_t timer_stub_step = 20;
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (c) 2017, Arm Limited and affiliates.
 | 
			
		||||
 * Copyright (c) , Arm Limited and affiliates.
 | 
			
		||||
 * SPDX-License-Identifier: Apache-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
| 
						 | 
				
			
			@ -15,25 +15,90 @@
 | 
			
		|||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "equeue/equeue.h"
 | 
			
		||||
#include "equeue.h"
 | 
			
		||||
 | 
			
		||||
void *equeue_alloc(equeue_t *q, size_t size)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int equeue_post(equeue_t *q, void (*cb)(void *), void *p)
 | 
			
		||||
int equeue_create(equeue_t *queue, size_t size)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void equeue_event_delay(void *p, int ms)
 | 
			
		||||
int equeue_create_inplace(equeue_t *queue, size_t size, void *buffer)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void equeue_event_period(void *p, int ms)
 | 
			
		||||
void equeue_destroy(equeue_t *queue)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void equeue_event_dtor(void *p, void (*dtor)(void *))
 | 
			
		||||
void equeue_dispatch(equeue_t *queue, int ms)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void equeue_break(equeue_t *queue)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int equeue_call(equeue_t *queue, void (*cb)(void *), void *data)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int equeue_call_in(equeue_t *queue, int ms, void (*cb)(void *), void *data)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int equeue_call_every(equeue_t *queue, int ms, void (*cb)(void *), void *data)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void *equeue_alloc(equeue_t *queue, size_t size)
 | 
			
		||||
{
 | 
			
		||||
    return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void equeue_dealloc(equeue_t *queue, void *event)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void equeue_event_delay(void *event, int ms)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void equeue_event_period(void *event, int ms)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void equeue_event_dtor(void *event, void (*dtor)(void *))
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int equeue_post(equeue_t *queue, void (*cb)(void *), void *event)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void equeue_cancel(equeue_t *queue, int id)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void equeue_background(equeue_t *queue,
 | 
			
		||||
                       void (*update)(void *timer, int ms), void *timer)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void equeue_chain(equeue_t *queue, equeue_t *target)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,24 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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 "mbed_assert.h"
 | 
			
		||||
 | 
			
		||||
void mbed_assert_internal(const char *expr, const char *file, int line)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,115 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (c) 2015-2016, ARM Limited, All Rights Reserved
 | 
			
		||||
 * SPDX-License-Identifier: Apache-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under the Apache License, Version 2.0 (the "License"); you may
 | 
			
		||||
 * not use this file except in compliance with the License.
 | 
			
		||||
 * You may obtain a copy of the License at
 | 
			
		||||
 *
 | 
			
		||||
 * http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
			
		||||
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* Declare __STDC_LIMIT_MACROS so stdint.h defines UINT32_MAX when using C++ */
 | 
			
		||||
#define __STDC_LIMIT_MACROS
 | 
			
		||||
#include "hal/critical_section_api.h"
 | 
			
		||||
 | 
			
		||||
#include "cmsis.h"
 | 
			
		||||
#include "platform/mbed_assert.h"
 | 
			
		||||
#include "platform/mbed_critical.h"
 | 
			
		||||
#include "platform/mbed_toolchain.h"
 | 
			
		||||
 | 
			
		||||
static volatile uint32_t critical_section_reentrancy_counter = 0;
 | 
			
		||||
 | 
			
		||||
bool core_util_are_interrupts_enabled(void)
 | 
			
		||||
{
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool core_util_is_isr_active(void)
 | 
			
		||||
{
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool core_util_in_critical_section(void)
 | 
			
		||||
{
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void core_util_critical_section_enter(void)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void core_util_critical_section_exit(void)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool core_util_atomic_cas_u8(volatile uint8_t *ptr, uint8_t *expectedCurrentValue, uint8_t desiredValue)
 | 
			
		||||
{
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool core_util_atomic_cas_u16(volatile uint16_t *ptr, uint16_t *expectedCurrentValue, uint16_t desiredValue)
 | 
			
		||||
{
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
bool core_util_atomic_cas_u32(volatile uint32_t *ptr, uint32_t *expectedCurrentValue, uint32_t desiredValue)
 | 
			
		||||
{
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
uint8_t core_util_atomic_incr_u8(volatile uint8_t *valuePtr, uint8_t delta)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint16_t core_util_atomic_incr_u16(volatile uint16_t *valuePtr, uint16_t delta)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint32_t core_util_atomic_incr_u32(volatile uint32_t *valuePtr, uint32_t delta)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
uint8_t core_util_atomic_decr_u8(volatile uint8_t *valuePtr, uint8_t delta)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint16_t core_util_atomic_decr_u16(volatile uint16_t *valuePtr, uint16_t delta)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint32_t core_util_atomic_decr_u32(volatile uint32_t *valuePtr, uint32_t delta)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
bool core_util_atomic_cas_ptr(void *volatile *ptr, void **expectedCurrentValue, void *desiredValue)
 | 
			
		||||
{
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void *core_util_atomic_incr_ptr(void *volatile *valuePtr, ptrdiff_t delta)
 | 
			
		||||
{
 | 
			
		||||
    return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void *core_util_atomic_decr_ptr(void *volatile *valuePtr, ptrdiff_t delta)
 | 
			
		||||
{
 | 
			
		||||
    return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (c) 2018, Arm Limited and affiliates.
 | 
			
		||||
 * Copyright (c) , Arm Limited and affiliates.
 | 
			
		||||
 * SPDX-License-Identifier: Apache-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
| 
						 | 
				
			
			@ -14,18 +14,19 @@
 | 
			
		|||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef TEST_AT_CELLULARBASE_H
 | 
			
		||||
#define TEST_AT_CELLULARBASE_H
 | 
			
		||||
 | 
			
		||||
class Test_AT_CellularBase {
 | 
			
		||||
public:
 | 
			
		||||
    Test_AT_CellularBase();
 | 
			
		||||
#include "mbed_poll.h"
 | 
			
		||||
#include "mbed_poll_stub.h"
 | 
			
		||||
 | 
			
		||||
    virtual ~Test_AT_CellularBase();
 | 
			
		||||
int mbed_poll_stub::revents_value = POLLOUT;
 | 
			
		||||
int mbed_poll_stub::int_value = 0;
 | 
			
		||||
 | 
			
		||||
    void test_AT_CellularBase_get_at_handler();
 | 
			
		||||
namespace mbed {
 | 
			
		||||
 | 
			
		||||
    void test_AT_CellularBase_get_device_error();
 | 
			
		||||
};
 | 
			
		||||
int poll(pollfh fhs[], unsigned nfhs, int timeout)
 | 
			
		||||
{
 | 
			
		||||
    fhs->revents = mbed_poll_stub::revents_value;
 | 
			
		||||
    return mbed_poll_stub::int_value;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif // TEST_AT_CELLULARBASE_H
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,27 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef __MBED_POLL_STUB_H__
 | 
			
		||||
#define __MBED_POLL_STUB_H__
 | 
			
		||||
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
 | 
			
		||||
namespace mbed_poll_stub {
 | 
			
		||||
extern int revents_value;
 | 
			
		||||
extern int int_value;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,30 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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 "mbed_wait_api.h"
 | 
			
		||||
 | 
			
		||||
void wait(float s)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void wait_ms(int ms)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void wait_us(int us)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,27 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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 "randLIB.h"
 | 
			
		||||
 | 
			
		||||
void randLIB_seed_random(void)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint16_t randLIB_get_random_in_range(uint16_t min, uint16_t max)
 | 
			
		||||
{
 | 
			
		||||
    return min;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,54 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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 "stdlib.h"
 | 
			
		||||
#include "us_ticker_api.h"
 | 
			
		||||
 | 
			
		||||
const ticker_data_t *get_us_ticker_data(void)
 | 
			
		||||
{
 | 
			
		||||
    return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void us_ticker_irq_handler(void)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void us_ticker_init(void)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint32_t us_ticker_read(void)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void us_ticker_set_interrupt(timestamp_t timestamp)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void us_ticker_disable_interrupt(void)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void us_ticker_clear_interrupt(void)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void us_ticker_fire_interrupt(void)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,33 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef __AT_CMD_PARSER_H__
 | 
			
		||||
#define __AT_CMD_PARSER_H__
 | 
			
		||||
 | 
			
		||||
#include "mbed.h"
 | 
			
		||||
#include <cstdarg>
 | 
			
		||||
#include "FileHandle.h"
 | 
			
		||||
 | 
			
		||||
class ATCmdParser {
 | 
			
		||||
public:
 | 
			
		||||
    ATCmdParser(mbed::FileHandle *fh, const char *output_delimiter = "\r",
 | 
			
		||||
                int buffer_size = 256, int timeout = 8000, bool debug = false) {}
 | 
			
		||||
 | 
			
		||||
    ~ATCmdParser() {}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //__AT_CMD_PARSER_H__
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,16 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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.
 | 
			
		||||
 */
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,16 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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.
 | 
			
		||||
 */
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,16 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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.
 | 
			
		||||
 */
 | 
			
		||||
| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (c) 2018, Arm Limited and affiliates.
 | 
			
		||||
 * Copyright (c) , Arm Limited and affiliates.
 | 
			
		||||
 * SPDX-License-Identifier: Apache-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
| 
						 | 
				
			
			@ -14,24 +14,17 @@
 | 
			
		|||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef TEST_UTIL_H
 | 
			
		||||
#define TEST_UTIL_H
 | 
			
		||||
 | 
			
		||||
class Test_util {
 | 
			
		||||
public:
 | 
			
		||||
    Test_util();
 | 
			
		||||
#ifndef CMSIS_OS_H_
 | 
			
		||||
#define CMSIS_OS_H_
 | 
			
		||||
 | 
			
		||||
    virtual ~Test_util();
 | 
			
		||||
#include "cmsis_os2.h"
 | 
			
		||||
 | 
			
		||||
    void test_util_uint_to_binary_string();
 | 
			
		||||
#define osPriority osPriority_t
 | 
			
		||||
 | 
			
		||||
    void test_util_char_str_to_hex();
 | 
			
		||||
#define osThreadId osThreadId_t
 | 
			
		||||
 | 
			
		||||
    void test_util_convert_ipv6();
 | 
			
		||||
typedef struct {
 | 
			
		||||
} osEvent;
 | 
			
		||||
 | 
			
		||||
    void test_util_prefer_ipv6();
 | 
			
		||||
 | 
			
		||||
    void test_util_separate_ip_addresses();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif // TEST_UTIL_H
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,78 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __CMSIS_OS2_H__
 | 
			
		||||
#define __CMSIS_OS2_H__
 | 
			
		||||
 | 
			
		||||
#include <inttypes.h>
 | 
			
		||||
 | 
			
		||||
//If conflicts, then remove these, copied from cmsis_os.h
 | 
			
		||||
typedef int32_t                  osStatus;
 | 
			
		||||
 | 
			
		||||
#define osOK 0
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//These are from cmsis_os2.h
 | 
			
		||||
typedef void *osSemaphoreId_t;
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
    const char                   *name;   ///< name of the semaphore
 | 
			
		||||
    uint32_t                 attr_bits;   ///< attribute bits
 | 
			
		||||
    void                      *cb_mem;    ///< memory for control block
 | 
			
		||||
    uint32_t                   cb_size;   ///< size of provided memory for control block
 | 
			
		||||
} osSemaphoreAttr_t;
 | 
			
		||||
 | 
			
		||||
//Thread
 | 
			
		||||
typedef enum {
 | 
			
		||||
    osPriorityNormal        = 24       ///< Priority: normal
 | 
			
		||||
} osPriority_t;
 | 
			
		||||
 | 
			
		||||
typedef void *osThreadId_t;
 | 
			
		||||
 | 
			
		||||
typedef void *osEventFlagsId_t;
 | 
			
		||||
 | 
			
		||||
/// Attributes structure for thread.
 | 
			
		||||
typedef struct {
 | 
			
		||||
} osThreadAttr_t;
 | 
			
		||||
 | 
			
		||||
#define osWaitForever         0xFFFFFFFFU ///< Wait forever timeout value.
 | 
			
		||||
 
 | 
			
		||||
// Flags options (\ref osThreadFlagsWait and \ref osEventFlagsWait).
 | 
			
		||||
#define osFlagsWaitAny        0x00000000U ///< Wait for any flag (default).
 | 
			
		||||
#define osFlagsWaitAll        0x00000001U ///< Wait for all flags.
 | 
			
		||||
#define osFlagsNoClear        0x00000002U ///< Do not clear flags which have been specified to wait for.
 | 
			
		||||
 
 | 
			
		||||
// Flags errors (returned by osThreadFlagsXxxx and osEventFlagsXxxx).
 | 
			
		||||
#define osFlagsError          0x80000000U ///< Error indicator.
 | 
			
		||||
#define osFlagsErrorUnknown   0xFFFFFFFFU ///< osError (-1).
 | 
			
		||||
#define osFlagsErrorTimeout   0xFFFFFFFEU ///< osErrorTimeout (-2).
 | 
			
		||||
#define osFlagsErrorResource  0xFFFFFFFDU ///< osErrorResource (-3).
 | 
			
		||||
#define osFlagsErrorParameter 0xFFFFFFFCU ///< osErrorParameter (-4).
 | 
			
		||||
#define osFlagsErrorISR       0xFFFFFFFAU ///< osErrorISR (-6).
 | 
			
		||||
 
 | 
			
		||||
// Thread attributes (attr_bits in \ref osThreadAttr_t).
 | 
			
		||||
#define osThreadDetached      0x00000000U ///< Thread created in detached mode (default)
 | 
			
		||||
#define osThreadJoinable      0x00000001U ///< Thread created in joinable mode
 | 
			
		||||
 
 | 
			
		||||
// Mutex attributes (attr_bits in \ref osMutexAttr_t).
 | 
			
		||||
#define osMutexRecursive      0x00000001U ///< Recursive mutex.
 | 
			
		||||
#define osMutexPrioInherit    0x00000002U ///< Priority inherit protocol.
 | 
			
		||||
#define osMutexRobust         0x00000008U ///< Robust mutex.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (c) 2017, Arm Limited and affiliates.
 | 
			
		||||
 * Copyright (c) 2018, Arm Limited and affiliates.
 | 
			
		||||
 * SPDX-License-Identifier: Apache-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
| 
						 | 
				
			
			@ -22,6 +22,7 @@
 | 
			
		|||
#include <cstring>
 | 
			
		||||
 | 
			
		||||
#include "events/mbed_events.h"
 | 
			
		||||
#include "events/mbed_shared_queues.h"
 | 
			
		||||
 | 
			
		||||
namespace mbed {
 | 
			
		||||
#include "platform/Callback.h"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,6 +18,7 @@
 | 
			
		|||
#ifndef MBED_RTOS1_TYPES_H
 | 
			
		||||
#define MBED_RTOS1_TYPES_H
 | 
			
		||||
 | 
			
		||||
#include "cmsis_os.h"
 | 
			
		||||
#include "mbed_rtos_storage.h"
 | 
			
		||||
 | 
			
		||||
#endif // MBED_RTOS1_TYPES_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,17 +23,13 @@ extern "C" {
 | 
			
		|||
#endif
 | 
			
		||||
 | 
			
		||||
#include "cmsis_os2.h"
 | 
			
		||||
#include "rtx_os.h"
 | 
			
		||||
#include "rtx_lib.h"
 | 
			
		||||
#include "mbed_rtx_conf.h"
 | 
			
		||||
 | 
			
		||||
typedef osMutexId_t mbed_rtos_storage_mutex_t;
 | 
			
		||||
typedef osSemaphoreId_t mbed_rtos_storage_semaphore_t;
 | 
			
		||||
typedef osThreadId_t mbed_rtos_storage_thread_t;
 | 
			
		||||
typedef osThreadId_t osThreadId;
 | 
			
		||||
typedef osMemoryPoolId_t mbed_rtos_storage_mem_pool_t;
 | 
			
		||||
typedef osMessageQueueId_t mbed_rtos_storage_msg_queue_t;
 | 
			
		||||
typedef osEventFlagsId_t mbed_rtos_storage_event_flags_t;
 | 
			
		||||
typedef void *mbed_rtos_storage_message_t;
 | 
			
		||||
typedef osTimerId_t mbed_rtos_storage_timer_t;
 | 
			
		||||
typedef osStatus_t osStatus;
 | 
			
		||||
typedef os_semaphore_t mbed_rtos_storage_semaphore_t;
 | 
			
		||||
typedef os_thread_t mbed_rtos_storage_thread_t;
 | 
			
		||||
typedef osRtxEventFlags_t mbed_rtos_storage_event_flags_t;
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,16 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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.
 | 
			
		||||
 */
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,20 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef OS_STACK_SIZE
 | 
			
		||||
#define OS_STACK_SIZE 0
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,16 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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.
 | 
			
		||||
 */
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,17 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -18,7 +18,15 @@
 | 
			
		|||
#ifndef RETARGET_H
 | 
			
		||||
#define RETARGET_H
 | 
			
		||||
 | 
			
		||||
#include <inttypes.h>
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
 | 
			
		||||
#include <time.h>
 | 
			
		||||
 | 
			
		||||
namespace mbed {
 | 
			
		||||
 | 
			
		||||
#define NAME_MAX 255
 | 
			
		||||
 | 
			
		||||
#undef  EPERM
 | 
			
		||||
#define EPERM           1       /* Operation not permitted */
 | 
			
		||||
| 
						 | 
				
			
			@ -283,4 +291,75 @@
 | 
			
		|||
#undef  ENOTRECOVERABLE
 | 
			
		||||
#define ENOTRECOVERABLE 131     /* State not recoverable */
 | 
			
		||||
 | 
			
		||||
#define     _IFMT   0170000 //< type of file
 | 
			
		||||
#define     _IFSOCK 0140000 //< socket
 | 
			
		||||
#define     _IFLNK  0120000 //< symbolic link
 | 
			
		||||
#define     _IFREG  0100000 //< regular
 | 
			
		||||
#define     _IFBLK  0060000 //< block special
 | 
			
		||||
#define     _IFDIR  0040000 //< directory
 | 
			
		||||
#define     _IFCHR  0020000 //< character special
 | 
			
		||||
#define     _IFIFO  0010000 //< fifo special
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define O_RDONLY 0        ///< Open for reading
 | 
			
		||||
#define O_WRONLY 1        ///< Open for writing
 | 
			
		||||
#define O_RDWR   2        ///< Open for reading and writing
 | 
			
		||||
#define O_NONBLOCK 0x0004 ///< Non-blocking mode
 | 
			
		||||
#define O_APPEND   0x0008 ///< Set file offset to end of file prior to each write
 | 
			
		||||
#define O_CREAT    0x0200 ///< Create file if it does not exist
 | 
			
		||||
#define O_TRUNC    0x0400 ///< Truncate file to zero length
 | 
			
		||||
#define O_EXCL     0x0800 ///< Fail if file exists
 | 
			
		||||
#define O_BINARY   0x8000 ///< Open file in binary mode
 | 
			
		||||
 | 
			
		||||
#define O_ACCMODE   (O_RDONLY|O_WRONLY|O_RDWR)
 | 
			
		||||
 | 
			
		||||
#define NAME_MAX 255    ///< Maximum size of a name in a file path
 | 
			
		||||
 | 
			
		||||
#define STDIN_FILENO  0
 | 
			
		||||
#define STDOUT_FILENO 1
 | 
			
		||||
#define STDERR_FILENO 2
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
struct statvfs {
 | 
			
		||||
    unsigned long  f_bsize;    ///< Filesystem block size
 | 
			
		||||
    unsigned long  f_frsize;   ///< Fragment size (block size)
 | 
			
		||||
 | 
			
		||||
    fsblkcnt_t     f_blocks;   ///< Number of blocks
 | 
			
		||||
    fsblkcnt_t     f_bfree;    ///< Number of free blocks
 | 
			
		||||
    fsblkcnt_t     f_bavail;   ///< Number of free blocks for unprivileged users
 | 
			
		||||
 | 
			
		||||
    unsigned long  f_fsid;     ///< Filesystem ID
 | 
			
		||||
 | 
			
		||||
    unsigned long  f_namemax;  ///< Maximum filename length
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
struct dirent {
 | 
			
		||||
    char d_name[NAME_MAX + 1]; ///< Name of file
 | 
			
		||||
    uint8_t d_type;          ///< Type of file
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
    DT_UNKNOWN, ///< The file type could not be determined.
 | 
			
		||||
    DT_FIFO,    ///< This is a named pipe (FIFO).
 | 
			
		||||
    DT_CHR,     ///< This is a character device.
 | 
			
		||||
    DT_DIR,     ///< This is a directory.
 | 
			
		||||
    DT_BLK,     ///< This is a block device.
 | 
			
		||||
    DT_REG,     ///< This is a regular file.
 | 
			
		||||
    DT_LNK,     ///< This is a symbolic link.
 | 
			
		||||
    DT_SOCK,    ///< This is a UNIX domain socket.
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* fcntl.h defines */
 | 
			
		||||
#define F_GETFL 3
 | 
			
		||||
#define F_SETFL 4
 | 
			
		||||
 | 
			
		||||
struct pollfd {
 | 
			
		||||
    int fd;
 | 
			
		||||
    short events;
 | 
			
		||||
    short revents;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif //RETARGET_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,27 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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 FEATURES_CELLULAR_UNITTESTS_TARGET_H_RANDLIB_H_
 | 
			
		||||
#define FEATURES_CELLULAR_UNITTESTS_TARGET_H_RANDLIB_H_
 | 
			
		||||
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
 | 
			
		||||
extern void randLIB_seed_random(void);
 | 
			
		||||
 | 
			
		||||
uint16_t randLIB_get_random_in_range(uint16_t min, uint16_t max);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif /* FEATURES_CELLULAR_UNITTESTS_TARGET_H_RANDLIB_H_ */
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,48 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef __MUTEX_H__
 | 
			
		||||
#define __MUTEX_H__
 | 
			
		||||
 | 
			
		||||
#include <inttypes.h>
 | 
			
		||||
#include "cmsis_os2.h"
 | 
			
		||||
 | 
			
		||||
namespace rtos {
 | 
			
		||||
 | 
			
		||||
class Mutex {
 | 
			
		||||
public:
 | 
			
		||||
    Mutex();
 | 
			
		||||
 | 
			
		||||
    Mutex(const char *name);
 | 
			
		||||
 | 
			
		||||
    osStatus lock(uint32_t millisec=osWaitForever);
 | 
			
		||||
 | 
			
		||||
    bool trylock();
 | 
			
		||||
 | 
			
		||||
    bool trylock_for(uint32_t millisec);
 | 
			
		||||
 | 
			
		||||
    bool trylock_until(uint64_t millisec);
 | 
			
		||||
 | 
			
		||||
    osStatus unlock();
 | 
			
		||||
 | 
			
		||||
    osThreadId_t get_owner();
 | 
			
		||||
 | 
			
		||||
    ~Mutex();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,18 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
typedef void *Semaphore;
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,25 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef __RTX_LIB_H__
 | 
			
		||||
#define __RTX_LIB_H__
 | 
			
		||||
 | 
			
		||||
#include "rtx_os.h"
 | 
			
		||||
 | 
			
		||||
#define os_semaphore_t      osRtxSemaphore_t
 | 
			
		||||
#define os_thread_t         osRtxThread_t
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,70 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __RTX_OS__
 | 
			
		||||
#define __RTX_OS__
 | 
			
		||||
 | 
			
		||||
#include "inttypes.h"
 | 
			
		||||
 | 
			
		||||
typedef struct osRtxSemaphore_s {
 | 
			
		||||
    uint8_t                          id;  ///< Object Identifier
 | 
			
		||||
    uint8_t                       state;  ///< Object State
 | 
			
		||||
    uint8_t                       flags;  ///< Object Flags
 | 
			
		||||
    uint8_t                    reserved;
 | 
			
		||||
    const char                    *name;  ///< Object Name
 | 
			
		||||
    uint16_t                     tokens;  ///< Current number of tokens
 | 
			
		||||
    uint16_t                 max_tokens;  ///< Maximum number of tokens
 | 
			
		||||
} osRtxSemaphore_t;
 | 
			
		||||
 | 
			
		||||
typedef struct osRtxThread_s {
 | 
			
		||||
    uint8_t                          id;  ///< Object Identifier
 | 
			
		||||
    uint8_t                       state;  ///< Object State
 | 
			
		||||
    uint8_t                       flags;  ///< Object Flags
 | 
			
		||||
    uint8_t                        attr;  ///< Object Attributes
 | 
			
		||||
    const char                    *name;  ///< Object Name
 | 
			
		||||
    struct osRtxThread_s   *thread_next;  ///< Link pointer to next Thread in Object list
 | 
			
		||||
    struct osRtxThread_s   *thread_prev;  ///< Link pointer to previous Thread in Object list
 | 
			
		||||
    struct osRtxThread_s    *delay_next;  ///< Link pointer to next Thread in Delay list
 | 
			
		||||
    struct osRtxThread_s    *delay_prev;  ///< Link pointer to previous Thread in Delay list
 | 
			
		||||
    struct osRtxThread_s   *thread_join;  ///< Thread waiting to Join
 | 
			
		||||
    uint32_t                      delay;  ///< Delay Time
 | 
			
		||||
    int8_t                     priority;  ///< Thread Priority
 | 
			
		||||
    int8_t                priority_base;  ///< Base Priority
 | 
			
		||||
    uint8_t                 stack_frame;  ///< Stack Frame (EXC_RETURN[7..0])
 | 
			
		||||
    uint8_t               flags_options;  ///< Thread/Event Flags Options
 | 
			
		||||
    uint32_t                 wait_flags;  ///< Waiting Thread/Event Flags
 | 
			
		||||
    uint32_t               thread_flags;  ///< Thread Flags
 | 
			
		||||
    struct osRtxMutex_s     *mutex_list;  ///< Link pointer to list of owned Mutexes
 | 
			
		||||
    void                     *stack_mem;  ///< Stack Memory
 | 
			
		||||
    uint32_t                 stack_size;  ///< Stack Size
 | 
			
		||||
    uint32_t                         sp;  ///< Current Stack Pointer
 | 
			
		||||
    uint32_t                thread_addr;  ///< Thread entry address
 | 
			
		||||
    uint32_t                  tz_memory;  ///< TrustZone Memory Identifier
 | 
			
		||||
    void                       *context;  ///< Context for OsEventObserver objects
 | 
			
		||||
} osRtxThread_t;
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
  uint8_t                          id;  ///< Object Identifier
 | 
			
		||||
  uint8_t                       state;  ///< Object State
 | 
			
		||||
  uint8_t                       flags;  ///< Object Flags
 | 
			
		||||
  uint8_t                    reserved;
 | 
			
		||||
  const char                    *name;  ///< Object Name
 | 
			
		||||
  osRtxThread_t          *thread_list;  ///< Waiting Threads List
 | 
			
		||||
  uint32_t                event_flags;  ///< Event Flags
 | 
			
		||||
} osRtxEventFlags_t;
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,17 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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.
 | 
			
		||||
 */
 | 
			
		||||
#define NAME_MAX          255
 | 
			
		||||
		Loading…
	
		Reference in New Issue