-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Infineon CYW30739 - lock-app support. (#14012)
- Loading branch information
1 parent
92d228e
commit 4090399
Showing
23 changed files
with
1,197 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
# Copyright (c) 2020 Project CHIP Authors | ||
# | ||
# 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. | ||
|
||
import("//build_overrides/build.gni") | ||
|
||
# The location of the build configuration file. | ||
buildconfig = "${build_root}/config/BUILDCONFIG.gn" | ||
|
||
# CHIP uses angle bracket includes. | ||
check_system_includes = true | ||
|
||
default_args = { | ||
target_cpu = "arm" | ||
target_os = "cyw30739" | ||
|
||
import("//args.gni") | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
# Copyright (c) 2020 Project CHIP Authors | ||
# | ||
# 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. | ||
|
||
import("//build_overrides/build.gni") | ||
import("//build_overrides/chip.gni") | ||
import("//build_overrides/cyw30739_sdk.gni") | ||
|
||
import("${cyw30739_sdk_build_root}/cyw30739_executable.gni") | ||
import("${cyw30739_sdk_build_root}/cyw30739_sdk.gni") | ||
|
||
cyw30739_project_dir = "${chip_root}/examples/lock-app/cyw30739" | ||
|
||
declare_args() { | ||
setupPinCode = 0 | ||
setupDiscriminator = 0 | ||
} | ||
|
||
cyw30739_sdk("sdk") { | ||
sources = [ "${cyw30739_project_dir}/include/CHIPProjectConfig.h" ] | ||
|
||
include_dirs = [ "${cyw30739_project_dir}/include" ] | ||
|
||
defines = [ | ||
"CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE=${setupPinCode}", | ||
"CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR=${setupDiscriminator}", | ||
] | ||
} | ||
|
||
cyw30739_executable("lock_app") { | ||
output_name = "chip-cyw30739-lock-example.elf" | ||
|
||
sources = [ | ||
"src/AppShellCommands.cpp", | ||
"src/BoltLockManager.cpp", | ||
"src/ButtonHandler.cpp", | ||
"src/ZclCallbacks.cpp", | ||
"src/main.cpp", | ||
] | ||
|
||
deps = [ | ||
":sdk", | ||
"${chip_root}/examples/lock-app/lock-common", | ||
"${chip_root}/examples/shell/shell_common:shell_common", | ||
"${chip_root}/src/lib", | ||
"${chip_root}/third_party/openthread/repo:libopenthread-ftd", | ||
] | ||
|
||
include_dirs = [ "include" ] | ||
} | ||
|
||
group("cyw30739") { | ||
deps = [ ":lock_app" ] | ||
} | ||
|
||
group("default") { | ||
deps = [ ":cyw30739" ] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,104 @@ | ||
# Matter CYW30739 Lock Example | ||
|
||
An example showing the use of Matter on the Infineon CYW30739 platform. | ||
|
||
--- | ||
|
||
## Table of Contents | ||
|
||
- [CHIP CYW30739 Lock Example](#matter-cyw30739-lock-example) | ||
- [Introduction](#introduction) | ||
- [Building](#building) | ||
- [Flashing the Application](#flashing-the-application) | ||
- [Running the Complete Example](#running-the-complete-example) | ||
|
||
--- | ||
|
||
## Introduction | ||
|
||
The CYW30739 lock example provides a baseline demonstration of a Light control | ||
device, built using Matter and the Infineon Modustoolbox SDK. It can be | ||
controlled by a Matter controller over Openthread network. | ||
|
||
The CYW30739 device can be commissioned over Bluetooth Low Energy where the | ||
device and the Matter controller will exchange security information with the | ||
Rendez-vous procedure. Thread Network credentials are then provided to the | ||
CYW30739 device which will then join the network. | ||
|
||
## Building | ||
|
||
- Build the example application: | ||
|
||
```bash | ||
$ cd ~/connectedhomeip | ||
$ git submodule update --init | ||
$ ./scripts/examples/gn_build_example.sh examples/lock-app/cyw30739 out/lock-app | ||
``` | ||
|
||
- To delete generated executable, libraries and object files use: | ||
|
||
```bash | ||
$ cd ~/connectedhomeip | ||
$ rm -rf ./out/ | ||
``` | ||
|
||
- OR use GN/Ninja directly | ||
|
||
```bash | ||
$ cd ~/connectedhomeip/examples/lock-app/cyw30739 | ||
$ git submodule update --init | ||
$ source third_party/connectedhomeip/scripts/activate.sh | ||
$ gn gen out/debug | ||
$ ninja -C out/debug | ||
``` | ||
|
||
- To delete generated executable, libraries and object files use: | ||
|
||
```bash | ||
$ cd ~/connectedhomeip/examples/lock-app/cyw30739 | ||
$ rm -rf out/ | ||
``` | ||
|
||
## Flashing the Application | ||
|
||
### Enter Recovery Mode | ||
|
||
Put the CYW30739 in to the recovery mode before running the flash script. | ||
|
||
1. Press and hold the `RECOVERY` button on the board. | ||
2. Press and hold the `RESET` button on the board. | ||
3. Release the `RESET` button. | ||
4. After one second, release the `RECOVERY` button. | ||
|
||
### Run Flash Script | ||
|
||
- On the command line: | ||
|
||
```bash | ||
$ cd ~/connectedhomeip/examples/lock-app/cyw30739 | ||
$ python3 out/debug/chip-cyw30739-lock-example.flash.py | ||
``` | ||
|
||
## Running the Complete Example | ||
|
||
- It is assumed here that you already have an OpenThread border router | ||
configured and running. If not see the following guide | ||
[Openthread_border_router](https://github.com/project-chip/connectedhomeip/blob/master/docs/guides/openthread_border_router_pi.md) | ||
for more information on how to setup a border router on a raspberryPi. | ||
|
||
- You can provision and control the Chip device using the python controller, | ||
Chip tool standalone, Android or iOS app | ||
|
||
[Python Controller](https://github.com/project-chip/connectedhomeip/blob/master/src/controller/python/README.md) | ||
|
||
Here is an example with the Python controller: | ||
|
||
```bash | ||
$ chip-device-ctrl | ||
chip-device-ctrl > connect -ble 3840 20202021 1234 | ||
chip-device-ctrl > zcl NetworkCommissioning AddThreadNetwork 1234 0 0 operationalDataset=hex:0e080000000000000000000300000b35060004001fffe00208dead00beef00cafe0708fddead00beef000005108e11d8ea8ffaa875713699f59e8807e0030a4f70656e5468726561640102c2980410edc641eb63b100b87e90a9980959befc0c0402a0fff8 breadcrumb=0 timeoutMs=1000 | ||
chip-device-ctrl > zcl NetworkCommissioning EnableNetwork 1234 0 0 networkID=hex:dead00beef00cafe breadcrumb=0 timeoutMs=1000 | ||
chip-device-ctrl > close-ble | ||
chip-device-ctrl > resolve 1234 | ||
chip-device-ctrl > zcl OnOff Toggle 1234 1 0 | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
# Copyright (c) 2020 Project CHIP Authors | ||
# | ||
# 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. | ||
|
||
import("//build_overrides/chip.gni") | ||
import("${chip_root}/src/platform/CYW30739/args.gni") | ||
|
||
cyw30739_sdk_target = get_label_info(":sdk", "label_no_toolchain") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
../../build_overrides |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
/* | ||
* | ||
* Copyright (c) 2021 Project CHIP Authors | ||
* Copyright (c) 2019 Google LLC. | ||
* 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. | ||
*/ | ||
|
||
#pragma once | ||
|
||
void RegisterAppShellCommands(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
/* | ||
* | ||
* Copyright (c) 2019 Google LLC. | ||
* 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. | ||
*/ | ||
|
||
#pragma once | ||
|
||
#include <chip_lock.h> | ||
#include <lib/core/CHIPError.h> | ||
#include <wiced_timer.h> | ||
|
||
class BoltLockManager | ||
{ | ||
public: | ||
enum Action_t | ||
{ | ||
LOCK_ACTION = 0, | ||
UNLOCK_ACTION, | ||
|
||
INVALID_ACTION | ||
} Action; | ||
|
||
enum State_t | ||
{ | ||
kState_LockingInitiated = 0, | ||
kState_LockingCompleted, | ||
kState_UnlockingInitiated, | ||
kState_UnlockingCompleted, | ||
} State; | ||
|
||
enum Actor_t | ||
{ | ||
ACTOR_ZCL_CMD = 0, | ||
ACTOR_APP_CMD, | ||
ACTOR_BUTTON, | ||
} Actor; | ||
|
||
CHIP_ERROR Init(); | ||
bool IsUnlocked(); | ||
void EnableAutoRelock(bool aOn); | ||
void SetAutoLockDuration(uint32_t aDurationInSecs); | ||
bool IsActionInProgress(); | ||
bool InitiateAction(int32_t aActor, Action_t aAction); | ||
|
||
typedef void (*Callback_fn_initiated)(Action_t, int32_t aActor); | ||
typedef void (*Callback_fn_completed)(Action_t); | ||
void SetCallbacks(Callback_fn_initiated aActionInitiated_CB, Callback_fn_completed aActionCompleted_CB); | ||
|
||
private: | ||
friend BoltLockManager & BoltLockMgr(void); | ||
State_t mState; | ||
|
||
Callback_fn_initiated mActionInitiated_CB; | ||
Callback_fn_completed mActionCompleted_CB; | ||
|
||
bool mAutoRelock; | ||
uint32_t mAutoLockDuration; | ||
bool mAutoLockTimerArmed; | ||
|
||
void CancelTimer(void); | ||
void StartTimer(uint32_t aTimeoutMs); | ||
|
||
static void TimerEventHandler(WICED_TIMER_PARAM_TYPE cb_params); | ||
static int AutoReLockTimerEventHandler(void * aEvent); | ||
static int ActuatorMovementTimerEventHandler(void * aEvent); | ||
|
||
static BoltLockManager sLock; | ||
}; | ||
|
||
inline BoltLockManager & BoltLockMgr(void) | ||
{ | ||
return BoltLockManager::sLock; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
/* | ||
* | ||
* Copyright (c) 2021 Project CHIP Authors | ||
* Copyright (c) 2019 Google LLC. | ||
* 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. | ||
*/ | ||
#include "wiced.h" | ||
|
||
typedef enum | ||
{ | ||
ON_OFF_BUTTON, | ||
APP_MAX_BUTTON, | ||
} application_button_t; | ||
#define APP_MAX_BUTTON_DEF 1 // define for preprocessor | ||
|
||
wiced_result_t app_button_init(void); |
Oops, something went wrong.