Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Integrate KVS with device session tables #4976

Merged
merged 9 commits into from
Feb 24, 2021
Prev Previous commit
Add stubs for K32W & cc13x2_26x2
mspang committed Feb 23, 2021
commit b33daa615a4d972040512c7a9b0dbc31fe5354c3
4 changes: 4 additions & 0 deletions src/platform/BUILD.gn
Original file line number Diff line number Diff line change
@@ -253,6 +253,8 @@ if (chip_device_platform != "none" && chip_device_platform != "external") {
"cc13x2_26x2/DeviceNetworkProvisioningDelegateImpl.cpp",
"cc13x2_26x2/DeviceNetworkProvisioningDelegateImpl.h",
"cc13x2_26x2/InetPlatformConfig.h",
"cc13x2_26x2/KeyValueStoreManagerImpl.cpp",
"cc13x2_26x2/KeyValueStoreManagerImpl.h",
"cc13x2_26x2/Logging.cpp",
"cc13x2_26x2/PlatformManagerImpl.cpp",
"cc13x2_26x2/PlatformManagerImpl.h",
@@ -425,6 +427,8 @@ if (chip_device_platform != "none" && chip_device_platform != "external") {
"K32W/DeviceNetworkProvisioningDelegateImpl.h",
"K32W/K32WConfig.cpp",
"K32W/K32WConfig.h",
"K32W/KeyValueStoreManagerImpl.cpp",
"K32W/KeyValueStoreManagerImpl.h",
"K32W/Logging.cpp",
"K32W/NetworkProvisioningServerImpl.h",
"K32W/PlatformManagerImpl.cpp",
34 changes: 34 additions & 0 deletions src/platform/K32W/KeyValueStoreManagerImpl.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/*
*
* Copyright (c) 2021 Project CHIP Authors
* All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

/**
* @file
* Platform-specific key value storage implementation for K32W
*/

#include <platform/KeyValueStoreManager.h>

namespace chip {
namespace DeviceLayer {
namespace PersistedStorage {

KeyValueStoreManagerImpl KeyValueStoreManagerImpl::sInstance;

} // namespace PersistedStorage
} // namespace DeviceLayer
} // namespace chip
80 changes: 80 additions & 0 deletions src/platform/K32W/KeyValueStoreManagerImpl.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
/*
*
* Copyright (c) 2021 Project CHIP Authors
* All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

/**
* @file
* Platform-specific key value storage implementation for K32W
*/

#pragma once

namespace chip {
namespace DeviceLayer {
namespace PersistedStorage {

class KeyValueStoreManagerImpl final : public KeyValueStoreManager
{
// Allow the KeyValueStoreManager interface class to delegate method calls to
// the implementation methods provided by this class.
friend class KeyValueStoreManager;

public:
// NOTE: Currently this platform does not support partial and offset reads

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe this comment needs to be updated to state that every function returns NOT_IMPLEMENTED (same on other platforms), or maybe just a comment/TODO on the class to explain.

// these will return CHIP_ERROR_NOT_IMPLEMENTED.
CHIP_ERROR _Get(const char * key, void * value, size_t value_size, size_t * read_bytes_size = nullptr, size_t offset = 0)
{
return CHIP_ERROR_NOT_IMPLEMENTED;
}

CHIP_ERROR _Delete(const char * key) { return CHIP_ERROR_NOT_IMPLEMENTED; }

CHIP_ERROR _Put(const char * key, const void * value, size_t value_size) { return CHIP_ERROR_NOT_IMPLEMENTED; }

private:
// ===== Members for internal use by the following friends.
friend KeyValueStoreManager & KeyValueStoreMgr();
friend KeyValueStoreManagerImpl & KeyValueStoreMgrImpl();

static KeyValueStoreManagerImpl sInstance;
};

/**
* Returns the public interface of the KeyValueStoreManager singleton object.
*
* Chip applications should use this to access features of the KeyValueStoreManager object
* that are common to all platforms.
*/
inline KeyValueStoreManager & KeyValueStoreMgr(void)
{
return KeyValueStoreManagerImpl::sInstance;
}

/**
* Returns the platform-specific implementation of the KeyValueStoreManager singleton object.
*
* Chip applications can use this to gain access to features of the KeyValueStoreManager
* that are specific to the ESP32 platform.
*/
inline KeyValueStoreManagerImpl & KeyValueStoreMgrImpl(void)
{
return KeyValueStoreManagerImpl::sInstance;
}

} // namespace PersistedStorage
} // namespace DeviceLayer
} // namespace chip
34 changes: 34 additions & 0 deletions src/platform/cc13x2_26x2/KeyValueStoreManagerImpl.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/*
*
* Copyright (c) 2021 Project CHIP Authors
* All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

/**
* @file
* Platform-specific key value storage implementation for CC1352
*/

#include <platform/KeyValueStoreManager.h>

namespace chip {
namespace DeviceLayer {
namespace PersistedStorage {

KeyValueStoreManagerImpl KeyValueStoreManagerImpl::sInstance;

} // namespace PersistedStorage
} // namespace DeviceLayer
} // namespace chip
80 changes: 80 additions & 0 deletions src/platform/cc13x2_26x2/KeyValueStoreManagerImpl.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
/*
*
* Copyright (c) 2021 Project CHIP Authors
* All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

/**
* @file
* Platform-specific key value storage implementation for CC1352.
*/

#pragma once

namespace chip {
namespace DeviceLayer {
namespace PersistedStorage {

class KeyValueStoreManagerImpl final : public KeyValueStoreManager
{
// Allow the KeyValueStoreManager interface class to delegate method calls to
// the implementation methods provided by this class.
friend class KeyValueStoreManager;

public:
// NOTE: Currently this platform does not support partial and offset reads
// these will return CHIP_ERROR_NOT_IMPLEMENTED.
CHIP_ERROR _Get(const char * key, void * value, size_t value_size, size_t * read_bytes_size = nullptr, size_t offset = 0)
{
return CHIP_ERROR_NOT_IMPLEMENTED;
}

CHIP_ERROR _Delete(const char * key) { return CHIP_ERROR_NOT_IMPLEMENTED; }

CHIP_ERROR _Put(const char * key, const void * value, size_t value_size) { return CHIP_ERROR_NOT_IMPLEMENTED; }

private:
// ===== Members for internal use by the following friends.
friend KeyValueStoreManager & KeyValueStoreMgr();
friend KeyValueStoreManagerImpl & KeyValueStoreMgrImpl();

static KeyValueStoreManagerImpl sInstance;
};

/**
* Returns the public interface of the KeyValueStoreManager singleton object.
*
* Chip applications should use this to access features of the KeyValueStoreManager object
* that are common to all platforms.
*/
inline KeyValueStoreManager & KeyValueStoreMgr(void)
{
return KeyValueStoreManagerImpl::sInstance;
}

/**
* Returns the platform-specific implementation of the KeyValueStoreManager singleton object.
*
* Chip applications can use this to gain access to features of the KeyValueStoreManager
* that are specific to the ESP32 platform.
*/
inline KeyValueStoreManagerImpl & KeyValueStoreMgrImpl(void)
{
return KeyValueStoreManagerImpl::sInstance;
}

} // namespace PersistedStorage
} // namespace DeviceLayer
} // namespace chip