From 2eae8a905a2e6d3e89cfafec41e28dba011ff6fb Mon Sep 17 00:00:00 2001 From: PM0407 Date: Thu, 8 Jan 2026 16:54:50 +0530 Subject: [PATCH] Add AI Based smart predicitve farming :AI-Based Smart Predictive Farming predicts weather conditions 2 days in advance using real-time sensor data and AI analytics. --- .../.cproject | 279 + ...lchain.gnu.cdt.12.2.1.20221205.gcc.slsproj | 5 + ...lchain.gnu.cdt.12.2.1.20221205.gcc.slsproj | 2 + ...lchain.gnu.cdt.12.2.1.20221205.gcc.slsproj | 505 ++ ...lchain.gnu.cdt.12.2.1.20221205.gcc.slsproj | 2 + ...lchain.gnu.cdt.12.2.1.20221205.gcc.slsproj | 7 + ...lchain.gnu.cdt.12.2.1.20221205.gcc.slsproj | 17 + ...lchain.gnu.cdt.12.2.1.20221205.gcc.slsproj | 8 + ...lchain.gnu.cdt.12.2.1.20221205.gcc.slsproj | 13 + .../.project | 914 +++ .../AI Based smart predictive farming/app.c | 33 + .../AI Based smart predictive farming/app.h | 30 + .../autogen/.slc_state/.crc_config.crc | 12 + .../autogen/RTE_Components.h | 22 + .../autogen/gen.properties | 2 + .../autogen/linkerfile_SoC.ld | 187 + .../autogen/sbom/cyclonedx_bom.json | 854 +++ .../autogen/sbom/cyclonedx_bom.xml | 690 ++ .../autogen/sbom/spdx_bom.spdx | 1060 +++ .../autogen/sbom/spdx_bom.spdx.json | 1064 ++++ .../autogen/sl_component_catalog.h | 11 + .../autogen/sl_event_handler.c | 67 + .../autogen/sl_event_handler.h | 19 + .../autogen/sl_i2c_init.c | 69 + .../autogen/sl_i2c_instances.h | 49 + .../config/FreeRTOSConfig.h | 351 + .../config/RTE_Device_917.h | 5656 +++++++++++++++++ .../config/pin_config.h | 198 + .../config/sl_board_configuration.h | 23 + .../config/sl_board_control.h | 22 + .../config/sl_core_config.h | 44 + .../config/sl_si91x_dma_config.h | 52 + .../config/sl_si91x_i2c_init_i2c2_config.h | 115 + .../config/sl_si91x_si70xx_config.h | 72 + .../config/sl_si91x_stack_size_config.h | 35 + .../config/sl_sleeptimer_config.h | 82 + .../AI Based smart predictive farming/main.c | 71 + .../readme.md | 99 + .../resources/readme/output1.png | Bin 0 -> 32924 bytes .../resources/readme/output2.png | Bin 0 -> 72677 bytes .../resources/readme/setupdiagram.png | Bin 0 -> 35321 bytes .../resources/uc_screen/si70xx_uc_screen.png | Bin 0 -> 52128 bytes .../si70xx_example.c | 311 + .../si70xx_example.h | 41 + .../sl_si91x_si70xx_2.pintool | 10 + .../sl_si91x_si70xx_2.slcp | 45 + .../sl_si91x_si70xx_2.slpb | 21 + .../sl_si91x_si70xx_2.slps | 17 + 48 files changed, 13186 insertions(+) create mode 100644 projects/bluetooth/AI Based smart predictive farming/.cproject create mode 100644 projects/bluetooth/AI Based smart predictive farming/.pdm/uc.module.setup.CommonProjectPostBuild.com.silabs.ss.framework.project.toolchain.core.default#com.silabs.ss.tool.ide.arm.toolchain.gnu.cdt.12.2.1.20221205.gcc.slsproj create mode 100644 projects/bluetooth/AI Based smart predictive farming/.pdm/uc.module.setup.ProjectPostBuild.com.silabs.ss.framework.project.toolchain.core.default#com.silabs.ss.tool.ide.arm.toolchain.gnu.cdt.12.2.1.20221205.gcc.slsproj create mode 100644 projects/bluetooth/AI Based smart predictive farming/.pdm/uc.module.setup.componentSetup.com.silabs.ss.framework.project.toolchain.core.default#com.silabs.ss.tool.ide.arm.toolchain.gnu.cdt.12.2.1.20221205.gcc.slsproj create mode 100644 projects/bluetooth/AI Based smart predictive farming/.pdm/uc.module.setup.defaultSettings.com.silabs.ss.framework.project.toolchain.core.default#com.silabs.ss.tool.ide.arm.toolchain.gnu.cdt.12.2.1.20221205.gcc.slsproj create mode 100644 projects/bluetooth/AI Based smart predictive farming/.pdm/uc.module.setup.projectMetadata.com.silabs.ss.framework.project.toolchain.core.default#com.silabs.ss.tool.ide.arm.toolchain.gnu.cdt.12.2.1.20221205.gcc.slsproj create mode 100644 projects/bluetooth/AI Based smart predictive farming/.pdm/uc.module.setup.ucConfig.com.silabs.ss.framework.project.toolchain.core.default#com.silabs.ss.tool.ide.arm.toolchain.gnu.cdt.12.2.1.20221205.gcc.slsproj create mode 100644 projects/bluetooth/AI Based smart predictive farming/.pdm/uc.module.setup.ucProject.com.silabs.ss.framework.project.toolchain.core.default#com.silabs.ss.tool.ide.arm.toolchain.gnu.cdt.12.2.1.20221205.gcc.slsproj create mode 100644 projects/bluetooth/AI Based smart predictive farming/.pdm/uc.module.setup.ucTemplate.com.silabs.ss.framework.project.toolchain.core.default#com.silabs.ss.tool.ide.arm.toolchain.gnu.cdt.12.2.1.20221205.gcc.slsproj create mode 100644 projects/bluetooth/AI Based smart predictive farming/.project create mode 100644 projects/bluetooth/AI Based smart predictive farming/app.c create mode 100644 projects/bluetooth/AI Based smart predictive farming/app.h create mode 100644 projects/bluetooth/AI Based smart predictive farming/autogen/.slc_state/.crc_config.crc create mode 100644 projects/bluetooth/AI Based smart predictive farming/autogen/RTE_Components.h create mode 100644 projects/bluetooth/AI Based smart predictive farming/autogen/gen.properties create mode 100644 projects/bluetooth/AI Based smart predictive farming/autogen/linkerfile_SoC.ld create mode 100644 projects/bluetooth/AI Based smart predictive farming/autogen/sbom/cyclonedx_bom.json create mode 100644 projects/bluetooth/AI Based smart predictive farming/autogen/sbom/cyclonedx_bom.xml create mode 100644 projects/bluetooth/AI Based smart predictive farming/autogen/sbom/spdx_bom.spdx create mode 100644 projects/bluetooth/AI Based smart predictive farming/autogen/sbom/spdx_bom.spdx.json create mode 100644 projects/bluetooth/AI Based smart predictive farming/autogen/sl_component_catalog.h create mode 100644 projects/bluetooth/AI Based smart predictive farming/autogen/sl_event_handler.c create mode 100644 projects/bluetooth/AI Based smart predictive farming/autogen/sl_event_handler.h create mode 100644 projects/bluetooth/AI Based smart predictive farming/autogen/sl_i2c_init.c create mode 100644 projects/bluetooth/AI Based smart predictive farming/autogen/sl_i2c_instances.h create mode 100644 projects/bluetooth/AI Based smart predictive farming/config/FreeRTOSConfig.h create mode 100644 projects/bluetooth/AI Based smart predictive farming/config/RTE_Device_917.h create mode 100644 projects/bluetooth/AI Based smart predictive farming/config/pin_config.h create mode 100644 projects/bluetooth/AI Based smart predictive farming/config/sl_board_configuration.h create mode 100644 projects/bluetooth/AI Based smart predictive farming/config/sl_board_control.h create mode 100644 projects/bluetooth/AI Based smart predictive farming/config/sl_core_config.h create mode 100644 projects/bluetooth/AI Based smart predictive farming/config/sl_si91x_dma_config.h create mode 100644 projects/bluetooth/AI Based smart predictive farming/config/sl_si91x_i2c_init_i2c2_config.h create mode 100644 projects/bluetooth/AI Based smart predictive farming/config/sl_si91x_si70xx_config.h create mode 100644 projects/bluetooth/AI Based smart predictive farming/config/sl_si91x_stack_size_config.h create mode 100644 projects/bluetooth/AI Based smart predictive farming/config/sl_sleeptimer_config.h create mode 100644 projects/bluetooth/AI Based smart predictive farming/main.c create mode 100644 projects/bluetooth/AI Based smart predictive farming/readme.md create mode 100644 projects/bluetooth/AI Based smart predictive farming/resources/readme/output1.png create mode 100644 projects/bluetooth/AI Based smart predictive farming/resources/readme/output2.png create mode 100644 projects/bluetooth/AI Based smart predictive farming/resources/readme/setupdiagram.png create mode 100644 projects/bluetooth/AI Based smart predictive farming/resources/uc_screen/si70xx_uc_screen.png create mode 100644 projects/bluetooth/AI Based smart predictive farming/si70xx_example.c create mode 100644 projects/bluetooth/AI Based smart predictive farming/si70xx_example.h create mode 100644 projects/bluetooth/AI Based smart predictive farming/sl_si91x_si70xx_2.pintool create mode 100644 projects/bluetooth/AI Based smart predictive farming/sl_si91x_si70xx_2.slcp create mode 100644 projects/bluetooth/AI Based smart predictive farming/sl_si91x_si70xx_2.slpb create mode 100644 projects/bluetooth/AI Based smart predictive farming/sl_si91x_si70xx_2.slps diff --git a/projects/bluetooth/AI Based smart predictive farming/.cproject b/projects/bluetooth/AI Based smart predictive farming/.cproject new file mode 100644 index 0000000..3fc1010 --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/.cproject @@ -0,0 +1,279 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/projects/bluetooth/AI Based smart predictive farming/.pdm/uc.module.setup.CommonProjectPostBuild.com.silabs.ss.framework.project.toolchain.core.default#com.silabs.ss.tool.ide.arm.toolchain.gnu.cdt.12.2.1.20221205.gcc.slsproj b/projects/bluetooth/AI Based smart predictive farming/.pdm/uc.module.setup.CommonProjectPostBuild.com.silabs.ss.framework.project.toolchain.core.default#com.silabs.ss.tool.ide.arm.toolchain.gnu.cdt.12.2.1.20221205.gcc.slsproj new file mode 100644 index 0000000..7f736a6 --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/.pdm/uc.module.setup.CommonProjectPostBuild.com.silabs.ss.framework.project.toolchain.core.default#com.silabs.ss.tool.ide.arm.toolchain.gnu.cdt.12.2.1.20221205.gcc.slsproj @@ -0,0 +1,5 @@ + + + + $(commander) postbuild "$(project)/$(projectName).slpb" --parameter build_dir:"$(builddir)" + diff --git a/projects/bluetooth/AI Based smart predictive farming/.pdm/uc.module.setup.ProjectPostBuild.com.silabs.ss.framework.project.toolchain.core.default#com.silabs.ss.tool.ide.arm.toolchain.gnu.cdt.12.2.1.20221205.gcc.slsproj b/projects/bluetooth/AI Based smart predictive farming/.pdm/uc.module.setup.ProjectPostBuild.com.silabs.ss.framework.project.toolchain.core.default#com.silabs.ss.tool.ide.arm.toolchain.gnu.cdt.12.2.1.20221205.gcc.slsproj new file mode 100644 index 0000000..f30d1cf --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/.pdm/uc.module.setup.ProjectPostBuild.com.silabs.ss.framework.project.toolchain.core.default#com.silabs.ss.tool.ide.arm.toolchain.gnu.cdt.12.2.1.20221205.gcc.slsproj @@ -0,0 +1,2 @@ + + diff --git a/projects/bluetooth/AI Based smart predictive farming/.pdm/uc.module.setup.componentSetup.com.silabs.ss.framework.project.toolchain.core.default#com.silabs.ss.tool.ide.arm.toolchain.gnu.cdt.12.2.1.20221205.gcc.slsproj b/projects/bluetooth/AI Based smart predictive farming/.pdm/uc.module.setup.componentSetup.com.silabs.ss.framework.project.toolchain.core.default#com.silabs.ss.tool.ide.arm.toolchain.gnu.cdt.12.2.1.20221205.gcc.slsproj new file mode 100644 index 0000000..f897a27 --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/.pdm/uc.module.setup.componentSetup.com.silabs.ss.framework.project.toolchain.core.default#com.silabs.ss.tool.ide.arm.toolchain.gnu.cdt.12.2.1.20221205.gcc.slsproj @@ -0,0 +1,505 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + resources/readme/setupdiagram.png + resources/readme/output1.png + resources/readme/output2.png + resources/uc_screen/si70xx_uc_screen.png + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/projects/bluetooth/AI Based smart predictive farming/.pdm/uc.module.setup.defaultSettings.com.silabs.ss.framework.project.toolchain.core.default#com.silabs.ss.tool.ide.arm.toolchain.gnu.cdt.12.2.1.20221205.gcc.slsproj b/projects/bluetooth/AI Based smart predictive farming/.pdm/uc.module.setup.defaultSettings.com.silabs.ss.framework.project.toolchain.core.default#com.silabs.ss.tool.ide.arm.toolchain.gnu.cdt.12.2.1.20221205.gcc.slsproj new file mode 100644 index 0000000..e315d8d --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/.pdm/uc.module.setup.defaultSettings.com.silabs.ss.framework.project.toolchain.core.default#com.silabs.ss.tool.ide.arm.toolchain.gnu.cdt.12.2.1.20221205.gcc.slsproj @@ -0,0 +1,2 @@ + + diff --git a/projects/bluetooth/AI Based smart predictive farming/.pdm/uc.module.setup.projectMetadata.com.silabs.ss.framework.project.toolchain.core.default#com.silabs.ss.tool.ide.arm.toolchain.gnu.cdt.12.2.1.20221205.gcc.slsproj b/projects/bluetooth/AI Based smart predictive farming/.pdm/uc.module.setup.projectMetadata.com.silabs.ss.framework.project.toolchain.core.default#com.silabs.ss.tool.ide.arm.toolchain.gnu.cdt.12.2.1.20221205.gcc.slsproj new file mode 100644 index 0000000..801dd4e --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/.pdm/uc.module.setup.projectMetadata.com.silabs.ss.framework.project.toolchain.core.default#com.silabs.ss.tool.ide.arm.toolchain.gnu.cdt.12.2.1.20221205.gcc.slsproj @@ -0,0 +1,7 @@ + + + + + + + diff --git a/projects/bluetooth/AI Based smart predictive farming/.pdm/uc.module.setup.ucConfig.com.silabs.ss.framework.project.toolchain.core.default#com.silabs.ss.tool.ide.arm.toolchain.gnu.cdt.12.2.1.20221205.gcc.slsproj b/projects/bluetooth/AI Based smart predictive farming/.pdm/uc.module.setup.ucConfig.com.silabs.ss.framework.project.toolchain.core.default#com.silabs.ss.tool.ide.arm.toolchain.gnu.cdt.12.2.1.20221205.gcc.slsproj new file mode 100644 index 0000000..272e471 --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/.pdm/uc.module.setup.ucConfig.com.silabs.ss.framework.project.toolchain.core.default#com.silabs.ss.tool.ide.arm.toolchain.gnu.cdt.12.2.1.20221205.gcc.slsproj @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/projects/bluetooth/AI Based smart predictive farming/.pdm/uc.module.setup.ucProject.com.silabs.ss.framework.project.toolchain.core.default#com.silabs.ss.tool.ide.arm.toolchain.gnu.cdt.12.2.1.20221205.gcc.slsproj b/projects/bluetooth/AI Based smart predictive farming/.pdm/uc.module.setup.ucProject.com.silabs.ss.framework.project.toolchain.core.default#com.silabs.ss.tool.ide.arm.toolchain.gnu.cdt.12.2.1.20221205.gcc.slsproj new file mode 100644 index 0000000..298e135 --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/.pdm/uc.module.setup.ucProject.com.silabs.ss.framework.project.toolchain.core.default#com.silabs.ss.tool.ide.arm.toolchain.gnu.cdt.12.2.1.20221205.gcc.slsproj @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/projects/bluetooth/AI Based smart predictive farming/.pdm/uc.module.setup.ucTemplate.com.silabs.ss.framework.project.toolchain.core.default#com.silabs.ss.tool.ide.arm.toolchain.gnu.cdt.12.2.1.20221205.gcc.slsproj b/projects/bluetooth/AI Based smart predictive farming/.pdm/uc.module.setup.ucTemplate.com.silabs.ss.framework.project.toolchain.core.default#com.silabs.ss.tool.ide.arm.toolchain.gnu.cdt.12.2.1.20221205.gcc.slsproj new file mode 100644 index 0000000..1e9ebb8 --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/.pdm/uc.module.setup.ucTemplate.com.silabs.ss.framework.project.toolchain.core.default#com.silabs.ss.tool.ide.arm.toolchain.gnu.cdt.12.2.1.20221205.gcc.slsproj @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/projects/bluetooth/AI Based smart predictive farming/.project b/projects/bluetooth/AI Based smart predictive farming/.project new file mode 100644 index 0000000..1e98934 --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/.project @@ -0,0 +1,914 @@ + + + sl_si91x_si70xx_2 + + + + + + com.silabs.ss.framework.ide.project.sls.core.slsResourceBuilder + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + com.silabs.ss.framework.ide.project.sls.core.SLSProjectNature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + + + simplicity_sdk_2025.6.1/platform/common/inc/sl_assert.h + 1 + STUDIO_SDK_LOC/platform/common/inc/sl_assert.h + + + simplicity_sdk_2025.6.1/platform/common/inc/sl_atomic.h + 1 + STUDIO_SDK_LOC/platform/common/inc/sl_atomic.h + + + simplicity_sdk_2025.6.1/platform/common/inc/sl_code_classification.h + 1 + STUDIO_SDK_LOC/platform/common/inc/sl_code_classification.h + + + simplicity_sdk_2025.6.1/platform/common/inc/sl_common.h + 1 + STUDIO_SDK_LOC/platform/common/inc/sl_common.h + + + simplicity_sdk_2025.6.1/platform/common/inc/sl_compiler.h + 1 + STUDIO_SDK_LOC/platform/common/inc/sl_compiler.h + + + simplicity_sdk_2025.6.1/platform/common/inc/sl_core.h + 1 + STUDIO_SDK_LOC/platform/common/inc/sl_core.h + + + simplicity_sdk_2025.6.1/platform/common/inc/sl_status.h + 1 + STUDIO_SDK_LOC/platform/common/inc/sl_status.h + + + simplicity_sdk_2025.6.1/platform/common/inc/sli_code_classification.h + 1 + STUDIO_SDK_LOC/platform/common/inc/sli_code_classification.h + + + simplicity_sdk_2025.6.1/platform/common/src/sl_assert.c + 1 + STUDIO_SDK_LOC/platform/common/src/sl_assert.c + + + simplicity_sdk_2025.6.1/platform/common/src/sl_core_cortexm.c + 1 + STUDIO_SDK_LOC/platform/common/src/sl_core_cortexm.c + + + simplicity_sdk_2025.6.1/platform/common/src/sl_syscalls.c + 1 + STUDIO_SDK_LOC/platform/common/src/sl_syscalls.c + + + simplicity_sdk_2025.6.1/platform/CMSIS/Core/Include/cmsis_compiler.h + 1 + STUDIO_SDK_LOC/platform/CMSIS/Core/Include/cmsis_compiler.h + + + simplicity_sdk_2025.6.1/platform/CMSIS/Core/Include/cmsis_gcc.h + 1 + STUDIO_SDK_LOC/platform/CMSIS/Core/Include/cmsis_gcc.h + + + simplicity_sdk_2025.6.1/platform/CMSIS/Core/Include/cmsis_version.h + 1 + STUDIO_SDK_LOC/platform/CMSIS/Core/Include/cmsis_version.h + + + simplicity_sdk_2025.6.1/platform/CMSIS/Core/Include/core_cm4.h + 1 + STUDIO_SDK_LOC/platform/CMSIS/Core/Include/core_cm4.h + + + simplicity_sdk_2025.6.1/platform/CMSIS/Core/Include/mpu_armv7.h + 1 + STUDIO_SDK_LOC/platform/CMSIS/Core/Include/mpu_armv7.h + + + simplicity_sdk_2025.6.1/platform/CMSIS/Core/Include/tz_context.h + 1 + STUDIO_SDK_LOC/platform/CMSIS/Core/Include/tz_context.h + + + simplicity_sdk_2025.6.1/platform/service/sl_main/inc/sl_main_init.h + 1 + STUDIO_SDK_LOC/platform/service/sl_main/inc/sl_main_init.h + + + simplicity_sdk_2025.6.1/platform/service/sl_main/inc/sl_main_init_memory.h + 1 + STUDIO_SDK_LOC/platform/service/sl_main/inc/sl_main_init_memory.h + + + simplicity_sdk_2025.6.1/platform/service/sl_main/inc/sl_main_process_action.h + 1 + STUDIO_SDK_LOC/platform/service/sl_main/inc/sl_main_process_action.h + + + simplicity_sdk_2025.6.1/platform/service/sl_main/src/sl_main_init.c + 1 + STUDIO_SDK_LOC/platform/service/sl_main/src/sl_main_init.c + + + simplicity_sdk_2025.6.1/platform/service/sl_main/src/sl_main_init_memory.c + 1 + STUDIO_SDK_LOC/platform/service/sl_main/src/sl_main_init_memory.c + + + simplicity_sdk_2025.6.1/platform/service/sl_main/src/sl_main_process_action.c + 1 + STUDIO_SDK_LOC/platform/service/sl_main/src/sl_main_process_action.c + + + simplicity_sdk_2025.6.1/platform/service/sl_main/src/sli_main_init_memory.h + 1 + STUDIO_SDK_LOC/platform/service/sl_main/src/sli_main_init_memory.h + + + simplicity_sdk_2025.6.1/platform/service/sleeptimer/inc/sl_sleeptimer.h + 1 + STUDIO_SDK_LOC/platform/service/sleeptimer/inc/sl_sleeptimer.h + + + simplicity_sdk_2025.6.1/platform/service/sleeptimer/inc/sli_sleeptimer.h + 1 + STUDIO_SDK_LOC/platform/service/sleeptimer/inc/sli_sleeptimer.h + + + simplicity_sdk_2025.6.1/platform/service/sleeptimer/src/sl_sleeptimer.c + 1 + STUDIO_SDK_LOC/platform/service/sleeptimer/src/sl_sleeptimer.c + + + simplicity_sdk_2025.6.1/platform/service/sleeptimer/src/sli_sleeptimer_hal.h + 1 + STUDIO_SDK_LOC/platform/service/sleeptimer/src/sli_sleeptimer_hal.h + + + wiseconnect3_sdk_3.5.1/components/board/silabs/inc/rsi_board.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/board/silabs/inc/rsi_board.h + + + wiseconnect3_sdk_3.5.1/components/board/silabs/inc/rsi_board_configuration.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/board/silabs/inc/rsi_board_configuration.h + + + wiseconnect3_sdk_3.5.1/components/board/silabs/inc/sl_gpio_board.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/board/silabs/inc/sl_gpio_board.h + + + wiseconnect3_sdk_3.5.1/components/board/silabs/inc/sl_i2c_board.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/board/silabs/inc/sl_i2c_board.h + + + wiseconnect3_sdk_3.5.1/components/board/silabs/inc/sl_opamp_board.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/board/silabs/inc/sl_opamp_board.h + + + wiseconnect3_sdk_3.5.1/components/board/silabs/inc/sl_pwm_board.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/board/silabs/inc/sl_pwm_board.h + + + wiseconnect3_sdk_3.5.1/components/board/silabs/inc/sl_qei_board.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/board/silabs/inc/sl_qei_board.h + + + wiseconnect3_sdk_3.5.1/components/board/silabs/inc/sl_rs485_board.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/board/silabs/inc/sl_rs485_board.h + + + wiseconnect3_sdk_3.5.1/components/board/silabs/inc/sl_sio_board.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/board/silabs/inc/sl_sio_board.h + + + wiseconnect3_sdk_3.5.1/components/board/silabs/inc/sl_sysrtc_board.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/board/silabs/inc/sl_sysrtc_board.h + + + wiseconnect3_sdk_3.5.1/components/board/silabs/src/rsi_board.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/board/silabs/src/rsi_board.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/core/config/rsi_ccp_user_config.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/core/config/rsi_ccp_user_config.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/core/config/rsi_nvic_priorities_config.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/core/config/rsi_nvic_priorities_config.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/cmsis_driver/Driver_Common.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/cmsis_driver/Driver_Common.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/cmsis_driver/GSPI.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/cmsis_driver/GSPI.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/cmsis_driver/I2C.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/cmsis_driver/I2C.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/cmsis_driver/SAI.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/cmsis_driver/SAI.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/cmsis_driver/SPI.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/cmsis_driver/SPI.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/cmsis_driver/UDMA.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/cmsis_driver/UDMA.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/cmsis_driver/UDMA.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/cmsis_driver/UDMA.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/cmsis_driver/USART.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/cmsis_driver/USART.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/cmsis_driver/USART.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/cmsis_driver/USART.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/core/chip/inc/base_types.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/core/chip/inc/base_types.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/core/chip/inc/data_types.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/core/chip/inc/data_types.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/core/chip/inc/em_assert.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/core/chip/inc/em_assert.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/core/chip/inc/em_common.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/core/chip/inc/em_common.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/core/chip/inc/em_device.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/core/chip/inc/em_device.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/core/chip/inc/rsi_ccp_common.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/core/chip/inc/rsi_ccp_common.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/core/chip/inc/rsi_error.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/core/chip/inc/rsi_error.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/core/chip/inc/rsi_ps_config.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/core/chip/inc/rsi_ps_config.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/core/chip/inc/rsi_ps_ram_func.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/core/chip/inc/rsi_ps_ram_func.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/core/chip/inc/rsi_system_config.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/core/chip/inc/rsi_system_config.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/core/chip/inc/si91x_device.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/core/chip/inc/si91x_device.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/core/chip/inc/si91x_mvp.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/core/chip/inc/si91x_mvp.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/core/chip/inc/system_si91x.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/core/chip/inc/system_si91x.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/core/chip/src/rsi_deepsleep_soc.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/core/chip/src/rsi_deepsleep_soc.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/core/chip/src/rsi_ps_ram_func.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/core/chip/src/rsi_ps_ram_func.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/core/chip/src/startup_si91x.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/core/chip/src/startup_si91x.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/core/chip/src/system_si91x.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/core/chip/src/system_si91x.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/core/common/inc/rsi_debug.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/core/common/inc/rsi_debug.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/core/common/inc/sl_si91x_os.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/core/common/inc/sl_si91x_os.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/core/common/inc/syscalls.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/core/common/inc/syscalls.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/core/common/src/rsi_debug.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/core/common/src/rsi_debug.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/core/common/src/sl_si91x_stack_object_declare.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/core/common/src/sl_si91x_stack_object_declare.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/core/common/src/syscalls.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/core/common/src/syscalls.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/core/config/src/rsi_nvic_priorities_config.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/core/config/src/rsi_nvic_priorities_config.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/aux_reference_volt_config.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/aux_reference_volt_config.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/clock_update.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/clock_update.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_adc.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_adc.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_comparator.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_comparator.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_crc.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_crc.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_ct.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_ct.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_dac.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_dac.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_efuse.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_efuse.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_egpio.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_egpio.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_gpdma.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_gpdma.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_gspi.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_gspi.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_i2c.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_i2c.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_i2s.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_i2s.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_opamp.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_opamp.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_pwm.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_pwm.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_qei.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_qei.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_qspi.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_qspi.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_qspi_proto.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_qspi_proto.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_rng.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_rng.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_rpdma.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_rpdma.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_sio.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_sio.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_spi.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_spi.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_sspi.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_sspi.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_sysrtc.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_sysrtc.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_sysrtc_headers.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_sysrtc_headers.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_timers.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_timers.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_udma.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_udma.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_udma_wrapper.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_udma_wrapper.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_usart.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_usart.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/sl_si91x_m4_ps.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/sl_si91x_m4_ps.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/src/aux_reference_volt_config.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/src/aux_reference_volt_config.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/src/clock_update.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/src/clock_update.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/src/rsi_adc.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/src/rsi_adc.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/src/rsi_crc.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/src/rsi_crc.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/src/rsi_dac.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/src/rsi_dac.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/src/rsi_egpio.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/src/rsi_egpio.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/src/rsi_opamp.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/src/rsi_opamp.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/src/rsi_sysrtc.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/src/rsi_sysrtc.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/src/rsi_udma.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/src/rsi_udma.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/src/rsi_udma_wrapper.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/src/rsi_udma_wrapper.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/src/rsi_usart.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/peripheral_drivers/src/rsi_usart.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/rom_driver/inc/rsi_packing.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/rom_driver/inc/rsi_packing.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/rom_driver/inc/rsi_rom_clks.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/rom_driver/inc/rsi_rom_clks.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/rom_driver/inc/rsi_rom_crc.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/rom_driver/inc/rsi_rom_crc.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/rom_driver/inc/rsi_rom_egpio.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/rom_driver/inc/rsi_rom_egpio.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/rom_driver/inc/rsi_rom_table_RS1xxxx.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/rom_driver/inc/rsi_rom_table_RS1xxxx.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/rom_driver/inc/rsi_rom_table_si91x.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/rom_driver/inc/rsi_rom_table_si91x.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/rom_driver/inc/rsi_rom_udma.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/rom_driver/inc/rsi_rom_udma.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/rom_driver/inc/rsi_rom_udma_wrapper.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/rom_driver/inc/rsi_rom_udma_wrapper.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/rom_driver/inc/rsi_rom_ulpss_clk.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/rom_driver/inc/rsi_rom_ulpss_clk.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/systemlevel/inc/rsi_bod.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/systemlevel/inc/rsi_bod.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/systemlevel/inc/rsi_ds_timer.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/systemlevel/inc/rsi_ds_timer.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/systemlevel/inc/rsi_ipmu.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/systemlevel/inc/rsi_ipmu.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/systemlevel/inc/rsi_pll.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/systemlevel/inc/rsi_pll.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/systemlevel/inc/rsi_pmu.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/systemlevel/inc/rsi_pmu.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/systemlevel/inc/rsi_power_save.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/systemlevel/inc/rsi_power_save.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/systemlevel/inc/rsi_processor_sensor.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/systemlevel/inc/rsi_processor_sensor.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/systemlevel/inc/rsi_reg_spi.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/systemlevel/inc/rsi_reg_spi.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/systemlevel/inc/rsi_retention.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/systemlevel/inc/rsi_retention.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/systemlevel/inc/rsi_rtc.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/systemlevel/inc/rsi_rtc.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/systemlevel/inc/rsi_temp_sensor.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/systemlevel/inc/rsi_temp_sensor.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/systemlevel/inc/rsi_time_period.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/systemlevel/inc/rsi_time_period.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/systemlevel/inc/rsi_ulpss_clk.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/systemlevel/inc/rsi_ulpss_clk.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/systemlevel/inc/rsi_wwdt.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/systemlevel/inc/rsi_wwdt.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/systemlevel/src/rsi_bod.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/systemlevel/src/rsi_bod.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/systemlevel/src/rsi_ipmu.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/systemlevel/src/rsi_ipmu.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/systemlevel/src/rsi_pll.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/systemlevel/src/rsi_pll.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/systemlevel/src/rsi_rtc.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/systemlevel/src/rsi_rtc.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/systemlevel/src/rsi_temp_sensor.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/systemlevel/src/rsi_temp_sensor.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/systemlevel/src/rsi_time_period.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/systemlevel/src/rsi_time_period.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/systemlevel/src/rsi_ulpss_clk.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/systemlevel/src/rsi_ulpss_clk.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_driver_gpio.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_driver_gpio.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_adc.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_adc.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_bjt_temperature_sensor.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_bjt_temperature_sensor.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_driver_gpio.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_driver_gpio.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_i2c.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_i2c.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/unified_api/src/sl_si91x_adc.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/unified_api/src/sl_si91x_adc.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/unified_api/src/sl_si91x_bjt_temperature_sensor.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/unified_api/src/sl_si91x_bjt_temperature_sensor.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/unified_api/src/sl_si91x_dma.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/unified_api/src/sl_si91x_dma.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/unified_api/src/sl_si91x_driver_gpio.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/unified_api/src/sl_si91x_driver_gpio.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/unified_api/src/sl_si91x_i2c.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/unified_api/src/sl_si91x_i2c.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/unified_peripheral_drivers/inc/sl_si91x_gpio.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/unified_peripheral_drivers/inc/sl_si91x_gpio.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/unified_peripheral_drivers/inc/sl_si91x_gpio_common.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/unified_peripheral_drivers/inc/sl_si91x_gpio_common.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/unified_peripheral_drivers/inc/sl_si91x_peripheral_gpio.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/unified_peripheral_drivers/inc/sl_si91x_peripheral_gpio.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/unified_peripheral_drivers/inc/sl_si91x_peripheral_i2c.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/unified_peripheral_drivers/inc/sl_si91x_peripheral_i2c.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/unified_peripheral_drivers/src/sl_si91x_peripheral_gpio.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/unified_peripheral_drivers/src/sl_si91x_peripheral_gpio.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/unified_peripheral_drivers/src/sl_si91x_peripheral_i2c.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/unified_peripheral_drivers/src/sl_si91x_peripheral_i2c.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/hardware_drivers/si70xx_sensor/inc/sl_si91x_si70xx.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/hardware_drivers/si70xx_sensor/inc/sl_si91x_si70xx.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/hardware_drivers/si70xx_sensor/src/sl_si91x_si70xx.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/hardware_drivers/si70xx_sensor/src/sl_si91x_si70xx.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/service/clock_manager/inc/sl_si91x_clock_manager.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/service/clock_manager/inc/sl_si91x_clock_manager.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/service/clock_manager/src/sl_si91x_clock_manager.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/service/clock_manager/src/sl_si91x_clock_manager.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/service/sleeptimer/inc/sli_sleeptimer_hal.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/service/sleeptimer/inc/sli_sleeptimer_hal.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/service/sleeptimer/src/sl_sleeptimer_hal_si91x_sysrtc.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/service/sleeptimer/src/sl_sleeptimer_hal_si91x_sysrtc.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/core/chip/src/iPMU_prog/iPMU_dotc/ipmu_apis.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/core/chip/src/iPMU_prog/iPMU_dotc/ipmu_apis.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/core/chip/src/iPMU_prog/iPMU_dotc/rsi_system_config_917.c + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/core/chip/src/iPMU_prog/iPMU_dotc/rsi_system_config_917.c + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/cmsis_driver/CMSIS/Driver/Include/Driver_Common.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/cmsis_driver/CMSIS/Driver/Include/Driver_Common.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/cmsis_driver/CMSIS/Driver/Include/Driver_Flash.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/cmsis_driver/CMSIS/Driver/Include/Driver_Flash.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/cmsis_driver/CMSIS/Driver/Include/Driver_I2C.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/cmsis_driver/CMSIS/Driver/Include/Driver_I2C.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/cmsis_driver/CMSIS/Driver/Include/Driver_SAI.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/cmsis_driver/CMSIS/Driver/Include/Driver_SAI.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/cmsis_driver/CMSIS/Driver/Include/Driver_SPI.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/cmsis_driver/CMSIS/Driver/Include/Driver_SPI.h + + + wiseconnect3_sdk_3.5.1/components/device/silabs/si91x/mcu/drivers/cmsis_driver/CMSIS/Driver/Include/Driver_USART.h + 1 + STUDIO_SDK_LOC/extension/wiseconnect/components/device/silabs/si91x/mcu/drivers/cmsis_driver/CMSIS/Driver/Include/Driver_USART.h + + + diff --git a/projects/bluetooth/AI Based smart predictive farming/app.c b/projects/bluetooth/AI Based smart predictive farming/app.c new file mode 100644 index 0000000..ab2a70e --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/app.c @@ -0,0 +1,33 @@ +/***************************************************************************/ /** + * @file app.c + * @brief Top level application functions + ******************************************************************************* + * # License + * Copyright 2023 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ +#include "si70xx_example.h" +#include "app.h" +/***************************************************************************/ /** + * Initialize application. + ******************************************************************************/ +void app_init(void) +{ + si70xx_example_init(); +} + +/***************************************************************************/ /** + * App ticking function. + ******************************************************************************/ +void app_process_action(void) +{ + si70xx_example_process_action(); +} diff --git a/projects/bluetooth/AI Based smart predictive farming/app.h b/projects/bluetooth/AI Based smart predictive farming/app.h new file mode 100644 index 0000000..aeadf74 --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/app.h @@ -0,0 +1,30 @@ +/***************************************************************************/ /** + * @file app.h + * @brief Top level application functions + ******************************************************************************* + * # License + * Copyright 2023 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ +#ifndef APP_H +#define APP_H + +/***************************************************************************/ /** + * Initialize application. + ******************************************************************************/ +void app_init(void); + +/***************************************************************************/ /** + * App ticking function. + ******************************************************************************/ +void app_process_action(void); + +#endif // APP_H diff --git a/projects/bluetooth/AI Based smart predictive farming/autogen/.slc_state/.crc_config.crc b/projects/bluetooth/AI Based smart predictive farming/autogen/.slc_state/.crc_config.crc new file mode 100644 index 0000000..58ce625 --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/autogen/.slc_state/.crc_config.crc @@ -0,0 +1,12 @@ +#CRC Codes for initially generated config files -- do not modify! +FreeRTOSConfig.h=-1771758151 +RTE_Device_917.h=1546349580 +pin_config.h=1450675604 +sl_board_configuration.h=-559764842 +sl_board_control.h=1349580067 +sl_core_config.h=-119586893 +sl_si91x_dma_config.h=-1624331129 +sl_si91x_i2c_init_i2c2_config.h=353396656 +sl_si91x_si70xx_config.h=182692244 +sl_si91x_stack_size_config.h=1151736032 +sl_sleeptimer_config.h=1360009810 \ No newline at end of file diff --git a/projects/bluetooth/AI Based smart predictive farming/autogen/RTE_Components.h b/projects/bluetooth/AI Based smart predictive farming/autogen/RTE_Components.h new file mode 100644 index 0000000..aa62dc4 --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/autogen/RTE_Components.h @@ -0,0 +1,22 @@ +// This file is autogenerated by Simplicity Configuration Tools. +// The contents of this file will be replaced in their entirety upon regeneration. +// +// Source template file: RTE_Components.h.jinja + + +#ifndef RTE_COMPONENTS_H +#define RTE_COMPONENTS_H + +/* standard device header from emlib */ +#define CMSIS_device_header "em_device.h" + +/* components are auto-generated here */ + + +#endif /* RTE_COMPONENTS_H */ + +/* This file is autogenerated by Simplicity Configuration Tools. */ +/* The contents of this file will be replaced in their entirety upon regeneration. */ +/* */ +/* Source template file: RTE_Components.h.jinja */ + diff --git a/projects/bluetooth/AI Based smart predictive farming/autogen/gen.properties b/projects/bluetooth/AI Based smart predictive farming/autogen/gen.properties new file mode 100644 index 0000000..e6d1826 --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/autogen/gen.properties @@ -0,0 +1,2 @@ +sdk=simplicity_sdk:2025.6.1 +extensions=wiseconnect3_sdk:3.5.1 \ No newline at end of file diff --git a/projects/bluetooth/AI Based smart predictive farming/autogen/linkerfile_SoC.ld b/projects/bluetooth/AI Based smart predictive farming/autogen/linkerfile_SoC.ld new file mode 100644 index 0000000..5f111af --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/autogen/linkerfile_SoC.ld @@ -0,0 +1,187 @@ +/***************************************************************************//** + * GCC Linker script for Silicon Labs devices + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + + + MEMORY + { + rom (rx) : ORIGIN = 0x8202000, LENGTH = 0x1fe000 + + ram (rwx) : ORIGIN = 0xc, LENGTH = 0x2fbf4 + } + MEMORY + { + udma0 (rwx) : ORIGIN = 0x2fc00, LENGTH = 0x400 + udma1 (rwx) : ORIGIN = 0x24061c00, LENGTH = 0x400 + } + +ENTRY(Reset_Handler) + +SECTIONS +{ + .text : + { + KEEP(*(.isr_vector)) + . = ALIGN(32); + *(EXCLUDE_FILE(*UDMA.o).text*) + KEEP(*(.init)) + KEEP(*(.fini)) + + + + + + + /* .ctors */ + *crtbegin.o(.ctors) + *crtbegin?.o(.ctors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors) + *(SORT(.ctors.*)) + *(.ctors) + + /* .dtors */ + *crtbegin.o(.dtors) + *crtbegin?.o(.dtors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors) + *(SORT(.dtors.*)) + *(.dtors) + *(.rodata*) + + KEEP(*(.eh_fram e*)) + } > rom + + .ARM.extab : + { + *(.ARM.extab* .gnu.linkonce.armextab.*) + } > rom + + __exidx_start = .; + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + __exidx_end = .; + __etext = .; + + __rom_start = ORIGIN(rom); + __rom_length = LENGTH(rom); + + /* _sidata is used in code startup code */ + _sidata = __etext; + + + + + + .data : + + { + __data_start__ = .; + + /* _sdata is used in startup code */ + _sdata = __data_start__; + *(.data*) + *UDMA.o(.text*) + + + + /* ipmu calibration data */ + *(.common_ipmu_ram*) + + . = ALIGN(4); + /* preinit data */ + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP(*(.preinit_array)) + PROVIDE_HIDDEN (__preinit_array_end = .); + + . = ALIGN(4); + /* init data */ + + PROVIDE_HIDDEN (__init_array_start = .); + KEEP(*(SORT(.init_array.*))) + KEEP(*(.init_array)) + PROVIDE_HIDDEN (__init_array_end = .); + + . = ALIGN(4); + /* finit data */ + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP(*(SORT(.fini_array.*))) + KEEP(*(.fini_array)) + PROVIDE_HIDDEN (__fini_array_end = .); + + KEEP(*(.jcr*)) + . = ALIGN(4); + /* All data end */ + __data_end__ = .; + + /* _edata is used in startup code */ + _edata = __data_end__; + } > ram AT> rom + + .bss (NOLOAD) : + { + . = ALIGN(4); + __bss_start__ = .; + *(.bss*) + *(COMMON) + . = ALIGN(4); + __bss_end__ = .; + } > ram + + + .stack (NOLOAD): + { + __StackLimit = .; + KEEP(*(.stack*)) + . = ALIGN(4); + __StackTop = .; + PROVIDE(__stack = __StackTop); + } > ram + .heap (COPY): + { + __HeapBase = .; + __end__ = .; + end = __end__; + _end = __end__; + KEEP(*(.heap*)) + . = ORIGIN(ram) + LENGTH(ram); + __HeapLimit = .; + } > ram + + __heap_size = __HeapLimit - __HeapBase; + .udma_addr0 : + { + *(.udma_addr0*) + } > udma0 AT> rom + + .udma_addr1 : + { + *(.udma_addr1*) + } > udma1 AT> rom + /* nvm3 enable*/ /* Flash Present*/ /* littlefs_enable */ /* Flash Present */ +} \ No newline at end of file diff --git a/projects/bluetooth/AI Based smart predictive farming/autogen/sbom/cyclonedx_bom.json b/projects/bluetooth/AI Based smart predictive farming/autogen/sbom/cyclonedx_bom.json new file mode 100644 index 0000000..a0eb83c --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/autogen/sbom/cyclonedx_bom.json @@ -0,0 +1,854 @@ +{ + "bomFormat" : "CycloneDX", + "specVersion" : "1.6", + "version" : 1, + "metadata" : { + "timestamp" : "2025-08-29T07:11:27.009698200Z", + "authors" : [ { + "name" : "Silicon Laboratories, Inc." + } ], + "properties" : [ { + "name" : "Silicon Labs Disclaimer", + "value" : "TERMS OF USE - SILICON LABORATORIES INC.\n(With respect to Silicon Labs software components, this Software Bill of Materials (SBOM) is based upon Silicon Labs'\nreview and analysis of the code version when released. It is provided \"AS IS\" and does not modify, change or alter\nthe terms or conditions of your use of Silicon Labs' software and/or SDKs based upon license terms and/or agreements\nassociated with this software or SDKs when distributed to you, received by you, or installed by you. Further, no\nwarranties or obligations are created by this SBOM. It is your obligation to comply with the terms of licenses\nreferenced in this SBOM.)" + } ] + }, + "components" : [ { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1", + "name" : "WiSeConnect 3 SDK", + "version" : "3.5.1", + "components" : [ { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:SIWG917M111MGTBA", + "name" : "SIWG917M111MGTBA", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "MSLA" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:brd2605a", + "name" : "BRD2605A", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:i2c_instance", + "name" : "I2C", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:si91x_memory_default_config", + "name" : "Default RAM Memory Configuration", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:sl_dma", + "name" : "DMA", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:sl_i2c", + "name" : "I2C", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:sl_si70xx", + "name" : "Si70xx Humidity and Temperature Sensor", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:syscalls", + "name" : "System Calls", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "MSLA" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:rsilib_opamp", + "name" : "OPAMP", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:wiseconnect_toolchain_gcc_standard", + "name" : "GCC Toolchain Standard Linker", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:rsilib_egpio", + "name" : "EGPIO", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:cmsis_usart", + "name" : "CMSIS USART", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Apache-2.0 AND Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:systemlevel_headers", + "name" : "System-Level API Headers", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:cmsis_driver_headers", + "name" : "CMSIS Driver Header Files", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Apache-2.0" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:wiseconnect_toolchain_plugin", + "name" : "GCC Toolchain Support", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:rsilib_aux_reference_volt_config", + "name" : "AUX REFERENCE VOLT", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:sl_si91x_mcu", + "name" : "Si91x MCU Subsystem", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "MSLA" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:systemlevel_time_period", + "name" : "TIME PERIOD", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:external_psram_8mb", + "name" : "8MB PSRAM (External)", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:sl_clock_manager", + "name" : "Clock Manager", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:rsilib_usart", + "name" : "USART", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:romdriver_udma_wrapper", + "name" : "ROM DRIVER UDMA WRAPPER", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:freertos_config", + "name" : "SL SI91X FreeRTOS Configuration", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "MIT" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:romdriver_packing", + "name" : "ROM DRIVER PACKING", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:romdriver_clks", + "name" : "ROM DRIVER CLOCK", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:systemlevel_bod", + "name" : "BOD", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:cmsis_udma", + "name" : "CMSIS UDMA", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "MSLA AND Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:cmsis_common_driver", + "name" : "CMSIS COMMON DRIVER", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:rsilib_udma", + "name" : "UDMA", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:sl_i2c_peripheral", + "name" : "SL I2C Peripheral", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:sl_gpio_peripheral", + "name" : "SL GPIO Peripheral", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:romdriver_udma", + "name" : "ROM DRIVER UDMA", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:rsilib_dac", + "name" : "DAC", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:opn_config", + "name" : "opn config", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:systemlevel_ulpss_clk", + "name" : "ULPSS CLOCK", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:rsilib_adc", + "name" : "ADC", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:romdriver_romtable", + "name" : "ROM TABLE", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:systemlevel_reg_spi", + "name" : "REG SPI", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:romdriver_romtable_headers", + "name" : "ROM Table Header", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:romdriver_crc", + "name" : "ROM DRIVER CRC", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:rsilib_headers", + "name" : "RSI Peripheral Headers", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:external_flash_none", + "name" : "No External Flash", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:si91x_mem_config_1", + "name" : "MEMORY_MCU_BASIC_WIRELESS_ADVANCED", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:rsilib_userconfig", + "name" : "RSI User Configuration", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "MSLA" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:sl_bjt_temperature_sensor", + "name" : "BJT Temperature Sensor", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:cmsis_peripheral_headers", + "name" : "CMSIS Peripheral Header Files", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "MSLA AND Apache-2.0" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:sl_gpio", + "name" : "GPIO", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:systemlevel_rtc", + "name" : "RTC", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:systemlevel_ipmu", + "name" : "IPMU", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:udma_linker_config", + "name" : "UDMA Linker Configuration", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:board_configuration_headers", + "name" : "Board Configuration Header Files", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:sl_adc", + "name" : "ADC", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:romdriver_egpio", + "name" : "ROM DRIVER EGPIO", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:systemlevel_temp_sensor", + "name" : "TEMPERATURE SENSOR", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:si91x_device_init_nvic", + "name" : "NVIC Interrupt Priorities Configuration for FreeRTOS", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "MSLA" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:systemlevel_pll", + "name" : "PLL", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:rsilib_board", + "name" : "Si91x SoC Board Configurations", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "MSLA AND Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:brd2605a_config", + "name" : "brd2605a config", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:rsilib_clock_update", + "name" : "CLOCK UPDATE", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:si91x_debug", + "name" : "Debug Unit", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:si91x_common_flash", + "name" : "Common Flash Component", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:rsilib_chip", + "name" : "Core", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:rsilib_sysrtc", + "name" : "SYSRTC", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:rsilib_udma_wrapper", + "name" : "UDMA WRAPPER", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:si91x_stack_size_configuration", + "name" : "SiW91x Stack Size Configuration", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:cmsis_usart_driver", + "name" : "CMSIS USART DRIVER", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:sleeptimer_si91x", + "name" : "Sleep Timer for Si91x", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:romdriver_ulpss", + "name" : "ROM DRIVER ULPSS", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "wiseconnect3_sdk:3.5.1:rsilib_crc", + "name" : "CRC", + "version" : "3.5.1", + "licenses" : [ { + "expression" : "Zlib" + } ] + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "simplicity_sdk:2025.6.1", + "name" : "Simplicity SDK Suite", + "version" : "2025.6.1", + "supplier" : { + "name" : "Silicon Laboratories, Inc." + }, + "components" : [ { + "scope" : "required", + "type" : "library", + "bom-ref" : "simplicity_sdk:2025.6.1:sl_main", + "name" : "System Setup (sl_main)", + "version" : "2025.6.1", + "supplier" : { + "name" : "Silicon Laboratories, Inc." + }, + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "simplicity_sdk:2025.6.1:sleeptimer", + "name" : "Sleep Timer", + "version" : "2025.6.1", + "supplier" : { + "name" : "Silicon Laboratories, Inc." + }, + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "simplicity_sdk:2025.6.1:event_handler", + "name" : "Event Handler", + "version" : "2025.6.1", + "supplier" : { + "name" : "Silicon Laboratories, Inc." + }, + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "simplicity_sdk:2025.6.1:sl_main_memory_init", + "name" : "sl_main Setup", + "version" : "2025.6.1", + "supplier" : { + "name" : "Silicon Laboratories, Inc." + }, + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "simplicity_sdk:2025.6.1:atomic", + "name" : "Atomic Operations Library", + "version" : "2025.6.1", + "supplier" : { + "name" : "Silicon Laboratories, Inc." + }, + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "simplicity_sdk:2025.6.1:code_classification", + "name" : "Code Classification", + "version" : "2025.6.1", + "supplier" : { + "name" : "Silicon Laboratories, Inc." + }, + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "simplicity_sdk:2025.6.1:status", + "name" : "Status Codes Definitions", + "version" : "2025.6.1", + "supplier" : { + "name" : "Silicon Laboratories, Inc." + }, + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "simplicity_sdk:2025.6.1:toolchain_variant_arm", + "name" : "Toolchain for ARM", + "version" : "2025.6.1", + "supplier" : { + "name" : "Silicon Laboratories, Inc." + }, + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "simplicity_sdk:2025.6.1:sl_assert", + "name" : "Assert Functions", + "version" : "2025.6.1", + "supplier" : { + "name" : "Silicon Laboratories, Inc." + }, + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "simplicity_sdk:2025.6.1:component_catalog", + "name" : "Component Catalog", + "version" : "2025.6.1", + "supplier" : { + "name" : "Silicon Laboratories, Inc." + }, + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "simplicity_sdk:2025.6.1:sl_core", + "name" : "core", + "version" : "2025.6.1", + "supplier" : { + "name" : "Silicon Laboratories, Inc." + }, + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "simplicity_sdk:2025.6.1:cmsis_core", + "name" : "CMSIS-Core", + "version" : "2025.6.1", + "supplier" : { + "name" : "Silicon Laboratories, Inc." + }, + "licenses" : [ { + "expression" : "Apache 2.0" + } ], + "pedigree" : { + "ancestors" : [ { + "scope" : "required", + "type" : "library", + "bom-ref" : "cmsis_core:5.8.0", + "name" : "CMSIS_5", + "version" : "5.8.0", + "supplier" : { + "name" : "ARM-software" + }, + "externalReferences" : [ { + "type" : "website", + "url" : "https://github.com/ARM-software/CMSIS_5" + } ], + "purl" : "pkg:github/ARM-software/CMSIS_5@5.8.0", + "pedigree" : { + "notes" : "The CMSIS is a set of tools, APIs, frameworks, and work flows" + } + } ] + } + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "simplicity_sdk:2025.6.1:sl_common", + "name" : "Common Functions", + "version" : "2025.6.1", + "supplier" : { + "name" : "Silicon Laboratories, Inc." + }, + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "simplicity_sdk:2025.6.1:sl_main_init", + "name" : "sl main Init", + "version" : "2025.6.1", + "supplier" : { + "name" : "Silicon Laboratories, Inc." + }, + "licenses" : [ { + "expression" : "Zlib" + } ] + }, { + "scope" : "required", + "type" : "library", + "bom-ref" : "simplicity_sdk:2025.6.1:sl_main_process_action", + "name" : "sl_main Process Action", + "version" : "2025.6.1", + "supplier" : { + "name" : "Silicon Laboratories, Inc." + }, + "licenses" : [ { + "expression" : "Zlib" + } ] + } ] + } ] +} \ No newline at end of file diff --git a/projects/bluetooth/AI Based smart predictive farming/autogen/sbom/cyclonedx_bom.xml b/projects/bluetooth/AI Based smart predictive farming/autogen/sbom/cyclonedx_bom.xml new file mode 100644 index 0000000..3707d86 --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/autogen/sbom/cyclonedx_bom.xml @@ -0,0 +1,690 @@ + + + + + 2025-08-29T07:11:27.009698200Z + + + Silicon Laboratories, Inc. + + + + + + WiSeConnect 3 SDK + 3.5.1 + + + SIWG917M111MGTBA + 3.5.1 + + MSLA + + + + BRD2605A + 3.5.1 + + Zlib + + + + I2C + 3.5.1 + + Zlib + + + + Default RAM Memory Configuration + 3.5.1 + + Zlib + + + + DMA + 3.5.1 + + Zlib + + + + I2C + 3.5.1 + + Zlib + + + + Si70xx Humidity and Temperature Sensor + 3.5.1 + + Zlib + + + + System Calls + 3.5.1 + + MSLA + + + + OPAMP + 3.5.1 + + Zlib + + + + GCC Toolchain Standard Linker + 3.5.1 + + Zlib + + + + EGPIO + 3.5.1 + + Zlib + + + + CMSIS USART + 3.5.1 + + Apache-2.0 AND Zlib + + + + System-Level API Headers + 3.5.1 + + Zlib + + + + CMSIS Driver Header Files + 3.5.1 + + Apache-2.0 + + + + GCC Toolchain Support + 3.5.1 + + Zlib + + + + AUX REFERENCE VOLT + 3.5.1 + + Zlib + + + + Si91x MCU Subsystem + 3.5.1 + + MSLA + + + + TIME PERIOD + 3.5.1 + + Zlib + + + + 8MB PSRAM (External) + 3.5.1 + + Zlib + + + + Clock Manager + 3.5.1 + + Zlib + + + + USART + 3.5.1 + + Zlib + + + + ROM DRIVER UDMA WRAPPER + 3.5.1 + + Zlib + + + + SL SI91X FreeRTOS Configuration + 3.5.1 + + MIT + + + + ROM DRIVER PACKING + 3.5.1 + + Zlib + + + + ROM DRIVER CLOCK + 3.5.1 + + Zlib + + + + BOD + 3.5.1 + + Zlib + + + + CMSIS UDMA + 3.5.1 + + MSLA AND Zlib + + + + CMSIS COMMON DRIVER + 3.5.1 + + Zlib + + + + UDMA + 3.5.1 + + Zlib + + + + SL I2C Peripheral + 3.5.1 + + Zlib + + + + SL GPIO Peripheral + 3.5.1 + + Zlib + + + + ROM DRIVER UDMA + 3.5.1 + + Zlib + + + + DAC + 3.5.1 + + Zlib + + + + opn config + 3.5.1 + + Zlib + + + + ULPSS CLOCK + 3.5.1 + + Zlib + + + + ADC + 3.5.1 + + Zlib + + + + ROM TABLE + 3.5.1 + + Zlib + + + + REG SPI + 3.5.1 + + Zlib + + + + ROM Table Header + 3.5.1 + + Zlib + + + + ROM DRIVER CRC + 3.5.1 + + Zlib + + + + RSI Peripheral Headers + 3.5.1 + + Zlib + + + + No External Flash + 3.5.1 + + Zlib + + + + MEMORY_MCU_BASIC_WIRELESS_ADVANCED + 3.5.1 + + Zlib + + + + RSI User Configuration + 3.5.1 + + MSLA + + + + BJT Temperature Sensor + 3.5.1 + + Zlib + + + + CMSIS Peripheral Header Files + 3.5.1 + + MSLA AND Apache-2.0 + + + + GPIO + 3.5.1 + + Zlib + + + + RTC + 3.5.1 + + Zlib + + + + IPMU + 3.5.1 + + Zlib + + + + UDMA Linker Configuration + 3.5.1 + + Zlib + + + + Board Configuration Header Files + 3.5.1 + + Zlib + + + + ADC + 3.5.1 + + Zlib + + + + ROM DRIVER EGPIO + 3.5.1 + + Zlib + + + + TEMPERATURE SENSOR + 3.5.1 + + Zlib + + + + NVIC Interrupt Priorities Configuration for FreeRTOS + 3.5.1 + + MSLA + + + + PLL + 3.5.1 + + Zlib + + + + Si91x SoC Board Configurations + 3.5.1 + + MSLA AND Zlib + + + + brd2605a config + 3.5.1 + + Zlib + + + + CLOCK UPDATE + 3.5.1 + + Zlib + + + + Debug Unit + 3.5.1 + + Zlib + + + + Common Flash Component + 3.5.1 + + Zlib + + + + Core + 3.5.1 + + Zlib + + + + SYSRTC + 3.5.1 + + Zlib + + + + UDMA WRAPPER + 3.5.1 + + Zlib + + + + SiW91x Stack Size Configuration + 3.5.1 + + Zlib + + + + CMSIS USART DRIVER + 3.5.1 + + Zlib + + + + Sleep Timer for Si91x + 3.5.1 + + Zlib + + + + ROM DRIVER ULPSS + 3.5.1 + + Zlib + + + + CRC + 3.5.1 + + Zlib + + + + + + + Silicon Laboratories, Inc. + + Simplicity SDK Suite + 2025.6.1 + + + System Setup (sl_main) + 2025.6.1 + + Silicon Laboratories, Inc. + + + Zlib + + + + Sleep Timer + 2025.6.1 + + Silicon Laboratories, Inc. + + + Zlib + + + + Event Handler + 2025.6.1 + + Silicon Laboratories, Inc. + + + Zlib + + + + sl_main Setup + 2025.6.1 + + Silicon Laboratories, Inc. + + + Zlib + + + + Atomic Operations Library + 2025.6.1 + + Silicon Laboratories, Inc. + + + Zlib + + + + Code Classification + 2025.6.1 + + Silicon Laboratories, Inc. + + + Zlib + + + + Status Codes Definitions + 2025.6.1 + + Silicon Laboratories, Inc. + + + Zlib + + + + Toolchain for ARM + 2025.6.1 + + Silicon Laboratories, Inc. + + + Zlib + + + + Assert Functions + 2025.6.1 + + Silicon Laboratories, Inc. + + + Zlib + + + + Component Catalog + 2025.6.1 + + Silicon Laboratories, Inc. + + + Zlib + + + + core + 2025.6.1 + + Silicon Laboratories, Inc. + + + Zlib + + + + CMSIS-Core + 2025.6.1 + + Silicon Laboratories, Inc. + + + Apache 2.0 + + + + + + ARM-software + + CMSIS_5 + 5.8.0 + pkg:github/ARM-software/CMSIS_5@5.8.0 + + The CMSIS is a set of tools, APIs, frameworks, and work flows + + + + https://github.com/ARM-software/CMSIS_5 + + + + + + + + Common Functions + 2025.6.1 + + Silicon Laboratories, Inc. + + + Zlib + + + + sl main Init + 2025.6.1 + + Silicon Laboratories, Inc. + + + Zlib + + + + sl_main Process Action + 2025.6.1 + + Silicon Laboratories, Inc. + + + Zlib + + + + + + \ No newline at end of file diff --git a/projects/bluetooth/AI Based smart predictive farming/autogen/sbom/spdx_bom.spdx b/projects/bluetooth/AI Based smart predictive farming/autogen/sbom/spdx_bom.spdx new file mode 100644 index 0000000..5ac0282 --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/autogen/sbom/spdx_bom.spdx @@ -0,0 +1,1060 @@ +# TERMS OF USE - SILICON LABORATORIES INC. +# (With respect to Silicon Labs software components, this Software Bill of Materials (SBOM) is based upon Silicon Labs' +# review and analysis of the code version when released. It is provided "AS IS" and does not modify, change or alter +# the terms or conditions of your use of Silicon Labs' software and/or SDKs based upon license terms and/or agreements +# associated with this software or SDKs when distributed to you, received by you, or installed by you. Further, no +# warranties or obligations are created by this SBOM. It is your obligation to comply with the terms of licenses +# referenced in this SBOM.) +SPDXVersion: SPDX-2.3 +DataLicense: CC0-1.0 +SPDXID: SPDXRef-DOCUMENT +DocumentName: Silicon-Laboratories +DocumentNamespace: https://silabs.com + +## Creation Information +Creator: Organization: Silicon Laboratories, Inc. +Created: 2025-08-29T07:11:27.009698200Z +## Relationships +Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-wiseconnect3_sdk-3.5.1 +Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-simplicity_sdk-2025.6.1 + +## Package Information +PackageName: WiSeConnect 3 SDK +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1 +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-SIWG917M111MGTBA +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-brd2605a +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-i2c_instance +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-si91x_memory_default_config +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-sl_dma +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-sl_i2c +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-sl_si70xx +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-syscalls +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_opamp +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-wiseconnect_toolchain_gcc_standard +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_egpio +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-cmsis_usart +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_headers +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-cmsis_driver_headers +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-wiseconnect_toolchain_plugin +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_aux_reference_volt_config +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-sl_si91x_mcu +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_time_period +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-external_psram_8mb +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-sl_clock_manager +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_usart +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_udma_wrapper +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-freertos_config +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_packing +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_clks +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_bod +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-cmsis_udma +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-cmsis_common_driver +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_udma +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-sl_i2c_peripheral +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-sl_gpio_peripheral +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_udma +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_dac +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-opn_config +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_ulpss_clk +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_adc +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_romtable +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_reg_spi +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_romtable_headers +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_crc +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_headers +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-external_flash_none +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-si91x_mem_config_1 +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_userconfig +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-sl_bjt_temperature_sensor +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-cmsis_peripheral_headers +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-sl_gpio +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_rtc +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_ipmu +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-udma_linker_config +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-board_configuration_headers +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-sl_adc +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_egpio +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_temp_sensor +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-si91x_device_init_nvic +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_pll +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_board +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-brd2605a_config +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_clock_update +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-si91x_debug +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-si91x_common_flash +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_chip +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_sysrtc +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_udma_wrapper +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-si91x_stack_size_configuration +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-cmsis_usart_driver +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-sleeptimer_si91x +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_ulpss +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1 CONTAINS SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_crc + +## Package Information +PackageName: SIWG917M111MGTBA +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-SIWG917M111MGTBA +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: MSLA +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-SIWG917M111MGTBA CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: BRD2605A +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-brd2605a +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-brd2605a CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: I2C +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-i2c_instance +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-i2c_instance CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: Default RAM Memory Configuration +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-si91x_memory_default_config +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-si91x_memory_default_config CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: DMA +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-sl_dma +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-sl_dma CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: I2C +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-sl_i2c +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-sl_i2c CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: Si70xx Humidity and Temperature Sensor +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-sl_si70xx +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-sl_si70xx CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: System Calls +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-syscalls +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: MSLA +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-syscalls CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: OPAMP +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_opamp +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_opamp CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: GCC Toolchain Standard Linker +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-wiseconnect_toolchain_gcc_standard +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-wiseconnect_toolchain_gcc_standard CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: EGPIO +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_egpio +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_egpio CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: CMSIS USART +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-cmsis_usart +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Apache-2.0 AND Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-cmsis_usart CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: System-Level API Headers +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_headers +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_headers CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: CMSIS Driver Header Files +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-cmsis_driver_headers +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Apache-2.0 +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-cmsis_driver_headers CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: GCC Toolchain Support +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-wiseconnect_toolchain_plugin +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-wiseconnect_toolchain_plugin CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: AUX REFERENCE VOLT +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_aux_reference_volt_config +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_aux_reference_volt_config CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: Si91x MCU Subsystem +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-sl_si91x_mcu +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: MSLA +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-sl_si91x_mcu CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: TIME PERIOD +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_time_period +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_time_period CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: 8MB PSRAM (External) +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-external_psram_8mb +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-external_psram_8mb CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: Clock Manager +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-sl_clock_manager +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-sl_clock_manager CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: USART +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_usart +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_usart CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: ROM DRIVER UDMA WRAPPER +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_udma_wrapper +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_udma_wrapper CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: SL SI91X FreeRTOS Configuration +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-freertos_config +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: MIT +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-freertos_config CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: ROM DRIVER PACKING +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_packing +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_packing CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: ROM DRIVER CLOCK +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_clks +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_clks CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: BOD +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_bod +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_bod CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: CMSIS UDMA +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-cmsis_udma +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: MSLA AND Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-cmsis_udma CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: CMSIS COMMON DRIVER +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-cmsis_common_driver +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-cmsis_common_driver CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: UDMA +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_udma +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_udma CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: SL I2C Peripheral +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-sl_i2c_peripheral +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-sl_i2c_peripheral CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: SL GPIO Peripheral +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-sl_gpio_peripheral +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-sl_gpio_peripheral CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: ROM DRIVER UDMA +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_udma +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_udma CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: DAC +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_dac +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_dac CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: opn config +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-opn_config +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-opn_config CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: ULPSS CLOCK +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_ulpss_clk +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_ulpss_clk CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: ADC +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_adc +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_adc CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: ROM TABLE +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_romtable +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_romtable CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: REG SPI +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_reg_spi +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_reg_spi CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: ROM Table Header +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_romtable_headers +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_romtable_headers CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: ROM DRIVER CRC +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_crc +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_crc CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: RSI Peripheral Headers +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_headers +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_headers CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: No External Flash +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-external_flash_none +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-external_flash_none CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: MEMORY_MCU_BASIC_WIRELESS_ADVANCED +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-si91x_mem_config_1 +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-si91x_mem_config_1 CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: RSI User Configuration +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_userconfig +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: MSLA +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_userconfig CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: BJT Temperature Sensor +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-sl_bjt_temperature_sensor +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-sl_bjt_temperature_sensor CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: CMSIS Peripheral Header Files +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-cmsis_peripheral_headers +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: MSLA AND Apache-2.0 +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-cmsis_peripheral_headers CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: GPIO +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-sl_gpio +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-sl_gpio CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: RTC +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_rtc +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_rtc CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: IPMU +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_ipmu +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_ipmu CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: UDMA Linker Configuration +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-udma_linker_config +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-udma_linker_config CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: Board Configuration Header Files +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-board_configuration_headers +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-board_configuration_headers CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: ADC +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-sl_adc +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-sl_adc CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: ROM DRIVER EGPIO +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_egpio +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_egpio CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: TEMPERATURE SENSOR +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_temp_sensor +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_temp_sensor CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: NVIC Interrupt Priorities Configuration for FreeRTOS +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-si91x_device_init_nvic +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: MSLA +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-si91x_device_init_nvic CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: PLL +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_pll +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_pll CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: Si91x SoC Board Configurations +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_board +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: MSLA AND Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_board CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: brd2605a config +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-brd2605a_config +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-brd2605a_config CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: CLOCK UPDATE +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_clock_update +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_clock_update CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: Debug Unit +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-si91x_debug +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-si91x_debug CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: Common Flash Component +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-si91x_common_flash +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-si91x_common_flash CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: Core +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_chip +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_chip CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: SYSRTC +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_sysrtc +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_sysrtc CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: UDMA WRAPPER +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_udma_wrapper +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_udma_wrapper CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: SiW91x Stack Size Configuration +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-si91x_stack_size_configuration +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-si91x_stack_size_configuration CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: CMSIS USART DRIVER +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-cmsis_usart_driver +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-cmsis_usart_driver CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: Sleep Timer for Si91x +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-sleeptimer_si91x +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-sleeptimer_si91x CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: ROM DRIVER ULPSS +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_ulpss +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_ulpss CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: CRC +SPDXID: SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_crc +PackageVersion: 3.5.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: NOASSERTION +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_crc CONTAINED_BY SPDXRef-wiseconnect3_sdk-3.5.1 + +## Package Information +PackageName: Simplicity SDK Suite +SPDXID: SPDXRef-simplicity_sdk-2025.6.1 +PackageVersion: 2025.6.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: Silicon Laboratories, Inc. +## Relationships +Relationship: SPDXRef-simplicity_sdk-2025.6.1 CONTAINS SPDXRef-simplicity_sdk-2025.6.1-sl_main +Relationship: SPDXRef-simplicity_sdk-2025.6.1 CONTAINS SPDXRef-simplicity_sdk-2025.6.1-sleeptimer +Relationship: SPDXRef-simplicity_sdk-2025.6.1 CONTAINS SPDXRef-simplicity_sdk-2025.6.1-event_handler +Relationship: SPDXRef-simplicity_sdk-2025.6.1 CONTAINS SPDXRef-simplicity_sdk-2025.6.1-sl_main_memory_init +Relationship: SPDXRef-simplicity_sdk-2025.6.1 CONTAINS SPDXRef-simplicity_sdk-2025.6.1-atomic +Relationship: SPDXRef-simplicity_sdk-2025.6.1 CONTAINS SPDXRef-simplicity_sdk-2025.6.1-code_classification +Relationship: SPDXRef-simplicity_sdk-2025.6.1 CONTAINS SPDXRef-simplicity_sdk-2025.6.1-status +Relationship: SPDXRef-simplicity_sdk-2025.6.1 CONTAINS SPDXRef-simplicity_sdk-2025.6.1-toolchain_variant_arm +Relationship: SPDXRef-simplicity_sdk-2025.6.1 CONTAINS SPDXRef-simplicity_sdk-2025.6.1-sl_assert +Relationship: SPDXRef-simplicity_sdk-2025.6.1 CONTAINS SPDXRef-simplicity_sdk-2025.6.1-component_catalog +Relationship: SPDXRef-simplicity_sdk-2025.6.1 CONTAINS SPDXRef-simplicity_sdk-2025.6.1-sl_core +Relationship: SPDXRef-simplicity_sdk-2025.6.1 CONTAINS SPDXRef-simplicity_sdk-2025.6.1-cmsis_core +Relationship: SPDXRef-simplicity_sdk-2025.6.1 CONTAINS SPDXRef-simplicity_sdk-2025.6.1-sl_common +Relationship: SPDXRef-simplicity_sdk-2025.6.1 CONTAINS SPDXRef-simplicity_sdk-2025.6.1-sl_main_init +Relationship: SPDXRef-simplicity_sdk-2025.6.1 CONTAINS SPDXRef-simplicity_sdk-2025.6.1-sl_main_process_action + +## Package Information +PackageName: System Setup (sl_main) +SPDXID: SPDXRef-simplicity_sdk-2025.6.1-sl_main +PackageVersion: 2025.6.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: Silicon Laboratories, Inc. +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-simplicity_sdk-2025.6.1-sl_main CONTAINED_BY SPDXRef-simplicity_sdk-2025.6.1 + +## Package Information +PackageName: Sleep Timer +SPDXID: SPDXRef-simplicity_sdk-2025.6.1-sleeptimer +PackageVersion: 2025.6.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: Silicon Laboratories, Inc. +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-simplicity_sdk-2025.6.1-sleeptimer CONTAINED_BY SPDXRef-simplicity_sdk-2025.6.1 + +## Package Information +PackageName: Event Handler +SPDXID: SPDXRef-simplicity_sdk-2025.6.1-event_handler +PackageVersion: 2025.6.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: Silicon Laboratories, Inc. +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-simplicity_sdk-2025.6.1-event_handler CONTAINED_BY SPDXRef-simplicity_sdk-2025.6.1 + +## Package Information +PackageName: sl_main Setup +SPDXID: SPDXRef-simplicity_sdk-2025.6.1-sl_main_memory_init +PackageVersion: 2025.6.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: Silicon Laboratories, Inc. +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-simplicity_sdk-2025.6.1-sl_main_memory_init CONTAINED_BY SPDXRef-simplicity_sdk-2025.6.1 + +## Package Information +PackageName: Atomic Operations Library +SPDXID: SPDXRef-simplicity_sdk-2025.6.1-atomic +PackageVersion: 2025.6.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: Silicon Laboratories, Inc. +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-simplicity_sdk-2025.6.1-atomic CONTAINED_BY SPDXRef-simplicity_sdk-2025.6.1 + +## Package Information +PackageName: Code Classification +SPDXID: SPDXRef-simplicity_sdk-2025.6.1-code_classification +PackageVersion: 2025.6.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: Silicon Laboratories, Inc. +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-simplicity_sdk-2025.6.1-code_classification CONTAINED_BY SPDXRef-simplicity_sdk-2025.6.1 + +## Package Information +PackageName: Status Codes Definitions +SPDXID: SPDXRef-simplicity_sdk-2025.6.1-status +PackageVersion: 2025.6.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: Silicon Laboratories, Inc. +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-simplicity_sdk-2025.6.1-status CONTAINED_BY SPDXRef-simplicity_sdk-2025.6.1 + +## Package Information +PackageName: Toolchain for ARM +SPDXID: SPDXRef-simplicity_sdk-2025.6.1-toolchain_variant_arm +PackageVersion: 2025.6.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: Silicon Laboratories, Inc. +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-simplicity_sdk-2025.6.1-toolchain_variant_arm CONTAINED_BY SPDXRef-simplicity_sdk-2025.6.1 + +## Package Information +PackageName: Assert Functions +SPDXID: SPDXRef-simplicity_sdk-2025.6.1-sl_assert +PackageVersion: 2025.6.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: Silicon Laboratories, Inc. +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-simplicity_sdk-2025.6.1-sl_assert CONTAINED_BY SPDXRef-simplicity_sdk-2025.6.1 + +## Package Information +PackageName: Component Catalog +SPDXID: SPDXRef-simplicity_sdk-2025.6.1-component_catalog +PackageVersion: 2025.6.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: Silicon Laboratories, Inc. +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-simplicity_sdk-2025.6.1-component_catalog CONTAINED_BY SPDXRef-simplicity_sdk-2025.6.1 + +## Package Information +PackageName: core +SPDXID: SPDXRef-simplicity_sdk-2025.6.1-sl_core +PackageVersion: 2025.6.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: Silicon Laboratories, Inc. +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-simplicity_sdk-2025.6.1-sl_core CONTAINED_BY SPDXRef-simplicity_sdk-2025.6.1 + +## Package Information +PackageName: CMSIS-Core +SPDXID: SPDXRef-simplicity_sdk-2025.6.1-cmsis_core +PackageVersion: 2025.6.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: Silicon Laboratories, Inc. +PackageLicenseConcluded: Apache 2.0 +## Relationships +Relationship: SPDXRef-simplicity_sdk-2025.6.1-cmsis_core CONTAINED_BY SPDXRef-simplicity_sdk-2025.6.1 +Relationship: SPDXRef-simplicity_sdk-2025.6.1-cmsis_core ANCESTOR_OF SPDXRef-cmsis_core-5.8.0 + +## Package Information +PackageName: CMSIS_5 +SPDXID: SPDXRef-cmsis_core-5.8.0 +PackageVersion: 5.8.0 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: ARM-software +PackageOriginator: Organization: NOASSERTION +PackageHomePage: https://github.com/ARM-software/CMSIS_5 +ExternalRef: PACKAGE-MANAGER purl pkg:github/ARM-software/CMSIS_5@5.8.0 +PackageComment: The CMSIS is a set of tools, APIs, frameworks, and work flows +## Relationships +Relationship: SPDXRef-cmsis_core-5.8.0 DESCENDANT_OF SPDXRef-simplicity_sdk-2025.6.1-cmsis_core + +## Package Information +PackageName: Common Functions +SPDXID: SPDXRef-simplicity_sdk-2025.6.1-sl_common +PackageVersion: 2025.6.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: Silicon Laboratories, Inc. +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-simplicity_sdk-2025.6.1-sl_common CONTAINED_BY SPDXRef-simplicity_sdk-2025.6.1 + +## Package Information +PackageName: sl main Init +SPDXID: SPDXRef-simplicity_sdk-2025.6.1-sl_main_init +PackageVersion: 2025.6.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: Silicon Laboratories, Inc. +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-simplicity_sdk-2025.6.1-sl_main_init CONTAINED_BY SPDXRef-simplicity_sdk-2025.6.1 + +## Package Information +PackageName: sl_main Process Action +SPDXID: SPDXRef-simplicity_sdk-2025.6.1-sl_main_process_action +PackageVersion: 2025.6.1 +PrimaryPackagePurpose: LIBRARY +PackageDownloadLocation: NOASSERTION +PackageSupplier: Organization: Silicon Laboratories, Inc. +PackageLicenseConcluded: Zlib +## Relationships +Relationship: SPDXRef-simplicity_sdk-2025.6.1-sl_main_process_action CONTAINED_BY SPDXRef-simplicity_sdk-2025.6.1 diff --git a/projects/bluetooth/AI Based smart predictive farming/autogen/sbom/spdx_bom.spdx.json b/projects/bluetooth/AI Based smart predictive farming/autogen/sbom/spdx_bom.spdx.json new file mode 100644 index 0000000..a70c6e1 --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/autogen/sbom/spdx_bom.spdx.json @@ -0,0 +1,1064 @@ +{ + "SPDXID" : "SPDXRef-DOCUMENT", + "spdxVersion" : "SPDX-2.3", + "dataLicense" : "CC0-1.0", + "name" : "Silicon-Laboratories", + "documentNamespace" : "https://silabs.com", + "creationInfo" : { + "created" : "2025-08-29T07:11:27.009698200Z", + "creators" : [ "Tool: Silicon Labs Configuration Tooling" ] + }, + "comment" : "TERMS OF USE - SILICON LABORATORIES INC.\n(With respect to Silicon Labs software components, this Software Bill of Materials (SBOM) is based upon Silicon Labs'\nreview and analysis of the code version when released. It is provided \"AS IS\" and does not modify, change or alter\nthe terms or conditions of your use of Silicon Labs' software and/or SDKs based upon license terms and/or agreements\nassociated with this software or SDKs when distributed to you, received by you, or installed by you. Further, no\nwarranties or obligations are created by this SBOM. It is your obligation to comply with the terms of licenses\nreferenced in this SBOM.)", + "documentDescribes" : [ "SPDXRef-wiseconnect3_sdk-3.5.1", "SPDXRef-simplicity_sdk-2025.6.1" ], + "packages" : [ { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "name" : "WiSeConnect 3 SDK", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-SIWG917M111MGTBA", + "name" : "SIWG917M111MGTBA", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "MSLA" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-brd2605a", + "name" : "BRD2605A", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-i2c_instance", + "name" : "I2C", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-si91x_memory_default_config", + "name" : "Default RAM Memory Configuration", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-sl_dma", + "name" : "DMA", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-sl_i2c", + "name" : "I2C", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-sl_si70xx", + "name" : "Si70xx Humidity and Temperature Sensor", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-syscalls", + "name" : "System Calls", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "MSLA" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_opamp", + "name" : "OPAMP", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-wiseconnect_toolchain_gcc_standard", + "name" : "GCC Toolchain Standard Linker", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_egpio", + "name" : "EGPIO", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-cmsis_usart", + "name" : "CMSIS USART", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Apache-2.0 AND Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_headers", + "name" : "System-Level API Headers", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-cmsis_driver_headers", + "name" : "CMSIS Driver Header Files", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Apache-2.0" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-wiseconnect_toolchain_plugin", + "name" : "GCC Toolchain Support", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_aux_reference_volt_config", + "name" : "AUX REFERENCE VOLT", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-sl_si91x_mcu", + "name" : "Si91x MCU Subsystem", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "MSLA" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_time_period", + "name" : "TIME PERIOD", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-external_psram_8mb", + "name" : "8MB PSRAM (External)", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-sl_clock_manager", + "name" : "Clock Manager", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_usart", + "name" : "USART", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_udma_wrapper", + "name" : "ROM DRIVER UDMA WRAPPER", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-freertos_config", + "name" : "SL SI91X FreeRTOS Configuration", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "MIT" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_packing", + "name" : "ROM DRIVER PACKING", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_clks", + "name" : "ROM DRIVER CLOCK", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_bod", + "name" : "BOD", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-cmsis_udma", + "name" : "CMSIS UDMA", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "MSLA AND Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-cmsis_common_driver", + "name" : "CMSIS COMMON DRIVER", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_udma", + "name" : "UDMA", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-sl_i2c_peripheral", + "name" : "SL I2C Peripheral", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-sl_gpio_peripheral", + "name" : "SL GPIO Peripheral", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_udma", + "name" : "ROM DRIVER UDMA", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_dac", + "name" : "DAC", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-opn_config", + "name" : "opn config", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_ulpss_clk", + "name" : "ULPSS CLOCK", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_adc", + "name" : "ADC", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_romtable", + "name" : "ROM TABLE", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_reg_spi", + "name" : "REG SPI", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_romtable_headers", + "name" : "ROM Table Header", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_crc", + "name" : "ROM DRIVER CRC", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_headers", + "name" : "RSI Peripheral Headers", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-external_flash_none", + "name" : "No External Flash", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-si91x_mem_config_1", + "name" : "MEMORY_MCU_BASIC_WIRELESS_ADVANCED", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_userconfig", + "name" : "RSI User Configuration", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "MSLA" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-sl_bjt_temperature_sensor", + "name" : "BJT Temperature Sensor", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-cmsis_peripheral_headers", + "name" : "CMSIS Peripheral Header Files", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "MSLA AND Apache-2.0" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-sl_gpio", + "name" : "GPIO", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_rtc", + "name" : "RTC", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_ipmu", + "name" : "IPMU", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-udma_linker_config", + "name" : "UDMA Linker Configuration", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-board_configuration_headers", + "name" : "Board Configuration Header Files", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-sl_adc", + "name" : "ADC", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_egpio", + "name" : "ROM DRIVER EGPIO", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_temp_sensor", + "name" : "TEMPERATURE SENSOR", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-si91x_device_init_nvic", + "name" : "NVIC Interrupt Priorities Configuration for FreeRTOS", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "MSLA" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_pll", + "name" : "PLL", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_board", + "name" : "Si91x SoC Board Configurations", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "MSLA AND Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-brd2605a_config", + "name" : "brd2605a config", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_clock_update", + "name" : "CLOCK UPDATE", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-si91x_debug", + "name" : "Debug Unit", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-si91x_common_flash", + "name" : "Common Flash Component", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_chip", + "name" : "Core", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_sysrtc", + "name" : "SYSRTC", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_udma_wrapper", + "name" : "UDMA WRAPPER", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-si91x_stack_size_configuration", + "name" : "SiW91x Stack Size Configuration", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-cmsis_usart_driver", + "name" : "CMSIS USART DRIVER", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-sleeptimer_si91x", + "name" : "Sleep Timer for Si91x", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_ulpss", + "name" : "ROM DRIVER ULPSS", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_crc", + "name" : "CRC", + "versionInfo" : "3.5.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: NOASSERTION", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-simplicity_sdk-2025.6.1", + "name" : "Simplicity SDK Suite", + "versionInfo" : "2025.6.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: Silicon Laboratories, Inc." + }, { + "SPDXID" : "SPDXRef-simplicity_sdk-2025.6.1-sl_main", + "name" : "System Setup (sl_main)", + "versionInfo" : "2025.6.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: Silicon Laboratories, Inc.", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-simplicity_sdk-2025.6.1-sleeptimer", + "name" : "Sleep Timer", + "versionInfo" : "2025.6.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: Silicon Laboratories, Inc.", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-simplicity_sdk-2025.6.1-event_handler", + "name" : "Event Handler", + "versionInfo" : "2025.6.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: Silicon Laboratories, Inc.", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-simplicity_sdk-2025.6.1-sl_main_memory_init", + "name" : "sl_main Setup", + "versionInfo" : "2025.6.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: Silicon Laboratories, Inc.", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-simplicity_sdk-2025.6.1-atomic", + "name" : "Atomic Operations Library", + "versionInfo" : "2025.6.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: Silicon Laboratories, Inc.", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-simplicity_sdk-2025.6.1-code_classification", + "name" : "Code Classification", + "versionInfo" : "2025.6.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: Silicon Laboratories, Inc.", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-simplicity_sdk-2025.6.1-status", + "name" : "Status Codes Definitions", + "versionInfo" : "2025.6.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: Silicon Laboratories, Inc.", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-simplicity_sdk-2025.6.1-toolchain_variant_arm", + "name" : "Toolchain for ARM", + "versionInfo" : "2025.6.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: Silicon Laboratories, Inc.", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-simplicity_sdk-2025.6.1-sl_assert", + "name" : "Assert Functions", + "versionInfo" : "2025.6.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: Silicon Laboratories, Inc.", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-simplicity_sdk-2025.6.1-component_catalog", + "name" : "Component Catalog", + "versionInfo" : "2025.6.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: Silicon Laboratories, Inc.", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-simplicity_sdk-2025.6.1-sl_core", + "name" : "core", + "versionInfo" : "2025.6.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: Silicon Laboratories, Inc.", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-simplicity_sdk-2025.6.1-cmsis_core", + "name" : "CMSIS-Core", + "versionInfo" : "2025.6.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: Silicon Laboratories, Inc.", + "licenseConcluded" : "Apache 2.0" + }, { + "SPDXID" : "SPDXRef-cmsis_core-5.8.0", + "name" : "CMSIS_5", + "versionInfo" : "5.8.0", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: ARM-software", + "originator" : "Organization: NOASSERTION", + "homepage" : "https://github.com/ARM-software/CMSIS_5", + "externalRefs" : [ { + "referenceCategory" : "PACKAGE-MANAGER", + "referenceLocator" : "pkg:github/ARM-software/CMSIS_5@5.8.0", + "referenceType" : "purl" + } ], + "comment" : "The CMSIS is a set of tools, APIs, frameworks, and work flows" + }, { + "SPDXID" : "SPDXRef-simplicity_sdk-2025.6.1-sl_common", + "name" : "Common Functions", + "versionInfo" : "2025.6.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: Silicon Laboratories, Inc.", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-simplicity_sdk-2025.6.1-sl_main_init", + "name" : "sl main Init", + "versionInfo" : "2025.6.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: Silicon Laboratories, Inc.", + "licenseConcluded" : "Zlib" + }, { + "SPDXID" : "SPDXRef-simplicity_sdk-2025.6.1-sl_main_process_action", + "name" : "sl_main Process Action", + "versionInfo" : "2025.6.1", + "primaryPackagePurpose" : "LIBRARY", + "downloadLocation" : "NOASSERTION", + "supplier" : "Organization: Silicon Laboratories, Inc.", + "licenseConcluded" : "Zlib" + } ], + "relationships" : [ { + "spdxElementId" : "SPDXRef-DOCUMENT", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relationshipType" : "DESCRIBES" + }, { + "spdxElementId" : "SPDXRef-DOCUMENT", + "relatedSpdxElement" : "SPDXRef-simplicity_sdk-2025.6.1", + "relationshipType" : "DESCRIBES" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-SIWG917M111MGTBA", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-brd2605a", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-i2c_instance", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-si91x_memory_default_config", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-sl_dma", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-sl_i2c", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-sl_si70xx", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-syscalls", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_opamp", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-wiseconnect_toolchain_gcc_standard", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_egpio", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-cmsis_usart", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_headers", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-cmsis_driver_headers", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-wiseconnect_toolchain_plugin", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_aux_reference_volt_config", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-sl_si91x_mcu", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_time_period", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-external_psram_8mb", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-sl_clock_manager", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_usart", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_udma_wrapper", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-freertos_config", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_packing", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_clks", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_bod", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-cmsis_udma", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-cmsis_common_driver", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_udma", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-sl_i2c_peripheral", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-sl_gpio_peripheral", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_udma", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_dac", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-opn_config", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_ulpss_clk", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_adc", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_romtable", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_reg_spi", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_romtable_headers", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_crc", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_headers", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-external_flash_none", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-si91x_mem_config_1", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_userconfig", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-sl_bjt_temperature_sensor", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-cmsis_peripheral_headers", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-sl_gpio", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_rtc", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_ipmu", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-udma_linker_config", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-board_configuration_headers", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-sl_adc", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_egpio", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_temp_sensor", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-si91x_device_init_nvic", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-systemlevel_pll", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_board", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-brd2605a_config", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_clock_update", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-si91x_debug", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-si91x_common_flash", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_chip", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_sysrtc", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_udma_wrapper", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-si91x_stack_size_configuration", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-cmsis_usart_driver", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-sleeptimer_si91x", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-romdriver_ulpss", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-wiseconnect3_sdk-3.5.1", + "relatedSpdxElement" : "SPDXRef-wiseconnect3_sdk-3.5.1-rsilib_crc", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-simplicity_sdk-2025.6.1", + "relatedSpdxElement" : "SPDXRef-simplicity_sdk-2025.6.1-sl_main", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-simplicity_sdk-2025.6.1", + "relatedSpdxElement" : "SPDXRef-simplicity_sdk-2025.6.1-sleeptimer", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-simplicity_sdk-2025.6.1", + "relatedSpdxElement" : "SPDXRef-simplicity_sdk-2025.6.1-event_handler", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-simplicity_sdk-2025.6.1", + "relatedSpdxElement" : "SPDXRef-simplicity_sdk-2025.6.1-sl_main_memory_init", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-simplicity_sdk-2025.6.1", + "relatedSpdxElement" : "SPDXRef-simplicity_sdk-2025.6.1-atomic", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-simplicity_sdk-2025.6.1", + "relatedSpdxElement" : "SPDXRef-simplicity_sdk-2025.6.1-code_classification", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-simplicity_sdk-2025.6.1", + "relatedSpdxElement" : "SPDXRef-simplicity_sdk-2025.6.1-status", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-simplicity_sdk-2025.6.1", + "relatedSpdxElement" : "SPDXRef-simplicity_sdk-2025.6.1-toolchain_variant_arm", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-simplicity_sdk-2025.6.1", + "relatedSpdxElement" : "SPDXRef-simplicity_sdk-2025.6.1-sl_assert", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-simplicity_sdk-2025.6.1", + "relatedSpdxElement" : "SPDXRef-simplicity_sdk-2025.6.1-component_catalog", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-simplicity_sdk-2025.6.1", + "relatedSpdxElement" : "SPDXRef-simplicity_sdk-2025.6.1-sl_core", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-simplicity_sdk-2025.6.1", + "relatedSpdxElement" : "SPDXRef-simplicity_sdk-2025.6.1-cmsis_core", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-simplicity_sdk-2025.6.1-cmsis_core", + "relatedSpdxElement" : "SPDXRef-cmsis_core-5.8.0", + "relationshipType" : "ANCESTOR_OF" + }, { + "spdxElementId" : "SPDXRef-simplicity_sdk-2025.6.1", + "relatedSpdxElement" : "SPDXRef-simplicity_sdk-2025.6.1-sl_common", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-simplicity_sdk-2025.6.1", + "relatedSpdxElement" : "SPDXRef-simplicity_sdk-2025.6.1-sl_main_init", + "relationshipType" : "CONTAINS" + }, { + "spdxElementId" : "SPDXRef-simplicity_sdk-2025.6.1", + "relatedSpdxElement" : "SPDXRef-simplicity_sdk-2025.6.1-sl_main_process_action", + "relationshipType" : "CONTAINS" + } ] +} \ No newline at end of file diff --git a/projects/bluetooth/AI Based smart predictive farming/autogen/sl_component_catalog.h b/projects/bluetooth/AI Based smart predictive farming/autogen/sl_component_catalog.h new file mode 100644 index 0000000..ea3c98f --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/autogen/sl_component_catalog.h @@ -0,0 +1,11 @@ +#ifndef SL_COMPONENT_CATALOG_H +#define SL_COMPONENT_CATALOG_H + +// APIs present in project +#define SL_CATALOG_I2C_PRESENT +#define SL_CATALOG_I2C_I2C2_PRESENT +#define SL_CATALOG_SL_CORE_PRESENT +#define SL_CATALOG_SL_MAIN_PRESENT +#define SL_CATALOG_SLEEPTIMER_PRESENT + +#endif // SL_COMPONENT_CATALOG_H diff --git a/projects/bluetooth/AI Based smart predictive farming/autogen/sl_event_handler.c b/projects/bluetooth/AI Based smart predictive farming/autogen/sl_event_handler.c new file mode 100644 index 0000000..c815588 --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/autogen/sl_event_handler.c @@ -0,0 +1,67 @@ +#include "sl_event_handler.h" + +#include "sl_si91x_clock_manager.h" +#include "rsi_board.h" +#include "rsi_debug.h" +#include "sl_i2c_instances.h" + +void sli_driver_permanent_allocation(void) +{ +} + +void sli_service_permanent_allocation(void) +{ +} + +void sli_stack_permanent_allocation(void) +{ +} + +void sli_internal_permanent_allocation(void) +{ +} + +void sl_platform_init(void) +{ + sl_si91x_clock_manager_init(); + RSI_Board_Init(); + DEBUGINIT(); +} + +void sli_internal_init_early(void) +{ +} + +void sl_driver_init(void) +{ + sl_i2c_init_instances(); +} + +void sl_service_init(void) +{ +} + +void sl_stack_init(void) +{ +} + +void sl_internal_app_init(void) +{ +} + +void sli_platform_process_action(void) +{ +} + +void sli_service_process_action(void) +{ +} + +void sli_stack_process_action(void) +{ +} + +void sli_internal_app_process_action(void) +{ +} + diff --git a/projects/bluetooth/AI Based smart predictive farming/autogen/sl_event_handler.h b/projects/bluetooth/AI Based smart predictive farming/autogen/sl_event_handler.h new file mode 100644 index 0000000..5d22097 --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/autogen/sl_event_handler.h @@ -0,0 +1,19 @@ +#ifndef SL_EVENT_HANDLER_H +#define SL_EVENT_HANDLER_H + +void sli_driver_permanent_allocation(void); +void sli_service_permanent_allocation(void); +void sli_stack_permanent_allocation(void); +void sli_internal_permanent_allocation(void); +void sl_platform_init(void); +void sli_internal_init_early(void); +void sl_driver_init(void); +void sl_service_init(void); +void sl_stack_init(void); +void sl_internal_app_init(void); +void sli_platform_process_action(void); +void sli_service_process_action(void); +void sli_stack_process_action(void); +void sli_internal_app_process_action(void); + +#endif // SL_EVENT_HANDLER_H diff --git a/projects/bluetooth/AI Based smart predictive farming/autogen/sl_i2c_init.c b/projects/bluetooth/AI Based smart predictive farming/autogen/sl_i2c_init.c new file mode 100644 index 0000000..3922ccc --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/autogen/sl_i2c_init.c @@ -0,0 +1,69 @@ +/***************************************************************************//** + * @file sl_i2c_init.c.jinja + * @brief I2C Driver Instance Initialization + ******************************************************************************* + * # License + * Copyright 2023 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#include "sl_si91x_i2c.h" + +#include "sl_si91x_i2c_init_i2c2_config.h" + + +#include "sl_i2c_instances.h" + + +sl_i2c_config_t sl_i2c_i2c2_config = { + .mode = SL_I2C_I2C2_MODE, + .operating_mode = SL_I2C_I2C2_OPERATING_MODE, + .transfer_type = SL_I2C_I2C2_TRANSFER_TYPE, + .i2c_callback = NULL, +}; + + + +sl_i2c_pin_init_t sl_i2c_i2c2_pin_init = { + .sda_port = SL_I2C_I2C2_SDA_PORT, + .sda_pin = SL_I2C_I2C2_SDA_PIN, + .sda_mux = SL_I2C_I2C2_SDA_MUX, + .sda_pad = SL_I2C_I2C2_SDA_PAD, + .scl_port = SL_I2C_I2C2_SCL_PORT, + .scl_pin = SL_I2C_I2C2_SCL_PIN, + .scl_mux = SL_I2C_I2C2_SCL_MUX, + .scl_pad = SL_I2C_I2C2_SCL_PAD, + .instance = SL_I2C2, +}; + + + +void sl_i2c_init_instances(void) +{ + + + sl_si91x_i2c_pin_init(&sl_i2c_i2c2_pin_init); + + +} \ No newline at end of file diff --git a/projects/bluetooth/AI Based smart predictive farming/autogen/sl_i2c_instances.h b/projects/bluetooth/AI Based smart predictive farming/autogen/sl_i2c_instances.h new file mode 100644 index 0000000..c4d2a1f --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/autogen/sl_i2c_instances.h @@ -0,0 +1,49 @@ +/***************************************************************************//** + * @file sl_i2c_instances.h.jinja + * @brief I2C Driver Instance + ******************************************************************************* + * # License + * Copyright 2023 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_I2C_INSTANCES_H +#define SL_I2C_INSTANCES_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "sl_si91x_i2c.h" + + +extern sl_i2c_config_t sl_i2c_i2c2_config ; + +void sl_i2c_init_instances(void); + +#ifdef __cplusplus +} +#endif + +#endif // SL_I2C_INSTANCES_H diff --git a/projects/bluetooth/AI Based smart predictive farming/config/FreeRTOSConfig.h b/projects/bluetooth/AI Based smart predictive farming/config/FreeRTOSConfig.h new file mode 100644 index 0000000..906a3a1 --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/config/FreeRTOSConfig.h @@ -0,0 +1,351 @@ +/* +FreeRTOS Kernel V10.2.0 +Copyright (C) 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + +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. + + http://aws.amazon.com/freertos + http://www.FreeRTOS.org +*/ + +#ifndef FREERTOS_CONFIG_H +#define FREERTOS_CONFIG_H + +/*----------------------------------------------------------- +* +* These definitions should be adjusted for your particular hardware and +* application requirements. +* +* THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE +* FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. +* http://www.freertos.org/a00110.html +* +* The bottom of this file contains some constants specific to running the UDP +* stack in this demo. Constants specific to FreeRTOS+TCP itself (rather than +* the demo) are contained in FreeRTOSIPConfig.h. +*----------------------------------------------------------*/ + +#include +#include "si91x_device.h" +#if (SL_SI91X_TICKLESS_MODE == 1) +#include "sl_si91x_m4_ps.h" +#endif +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- +// Minimal stack size [words] <0-65535> +// Stack for idle task and default task stack in words. +// Default: 256 +#define configMINIMAL_STACK_SIZE 256 + +// Total heap size [bytes] <0-0xFFFFFFFF> +// Heap memory size in bytes. +// Default: 51200 +#define configTOTAL_HEAP_SIZE 51200 + +// Kernel tick frequency [Hz] <0-0xFFFFFFFF> +// Kernel tick rate in Hz. +// Default: 1000 +#define configTICK_RATE_HZ 1000 + +// Timer task stack depth [words] <0-65535> +// Stack for timer task in words. +// Default: 512 +#define configTIMER_TASK_STACK_DEPTH (configMINIMAL_STACK_SIZE * 2) + +// Timer task priority <0-56> +// Timer task priority. +// Default: 55 (High) +#define configTIMER_TASK_PRIORITY 55 + +// Timer queue length <0-1024> +// Timer command queue length. +// Default: 5 +#define configTIMER_QUEUE_LENGTH 5 + +// Use time slicing +// Enable setting to use timeslicing. +// Default: 1 +#define configUSE_TIME_SLICING 1 + +#if (SL_SI91X_TICKLESS_MODE == 1) +// Use TICKLESS IDLE for Energy Management +// Enable setting to use Tickless Idle. +// Default: 0 +#define configUSE_TICKLESS_IDLE 1 +#else +// Use TICKLESS IDLE for Energy Management +// Enable setting to use Tickless Idle. +// Default: 0 +#define configUSE_TICKLESS_IDLE 0 +#endif + +#if (configUSE_TICKLESS_IDLE == 1) + +// At least "n" further complete tick periods will pass before the kernel is +// due to transition an application task out of the Blocked state, +// where "n" is set by the configEXPECTED_IDLE_TIME_BEFORE_SLEEP +#define configEXPECTED_IDLE_TIME_BEFORE_SLEEP 100 + +// Define the following macro to set xExpectedIdleTime to 0 +// if the application prevents the device Sleep +#define configPRE_SUPPRESS_TICKS_AND_SLEEP_PROCESSING(x) + +// Activate SiWx917 MCU specific low power functionality +#define configPRE_SLEEP_PROCESSING(x) + +// It can be used to reverse the actions of configPRE_SLEEP_PROCESSING(), +// and in so doing, return the Micro-controller back to its fully operational +// state. +#define configPOST_SLEEP_PROCESSING(x) + +#endif + +// Idle should yield +// Control Yield behaviour of the idle task. +// Default: 1 +#define configIDLE_SHOULD_YIELD 1 + +// Check for stack overflow +// <0=>Disable <1=>Method one <2=>Method two +// Enable or disable stack overflow checking. +// Callback function vApplicationStackOverflowHook implementation is required when stack checking is enabled. +// Not applicable to the Win32 port. +// Default: 0 +#define configCHECK_FOR_STACK_OVERFLOW 0 + +#if (configUSE_TICKLESS_IDLE == 1) + +// Use idle hook +// Enable callback function call on each idle task iteration. +// Callback function vApplicationIdleHook implementation is required when +// idle hook is enabled. Default: 0 +#define configUSE_IDLE_HOOK 1 +#endif + +#if (configUSE_TICKLESS_IDLE == 0) + +// Use idle hook +// Enable callback function call on each idle task iteration. +// Callback function vApplicationIdleHook implementation is required when +// idle hook is enabled. Default: 0 +#define configUSE_IDLE_HOOK 0 +#endif + +// Use tick hook +// Enable callback function call during each tick interrupt. +// Callback function vApplicationTickHook implementation is required when tick hook is enabled. +// Default: 0 +#define configUSE_TICK_HOOK 0 + +// Use deamon task startup hook +// Enable callback function call when timer service starts. +// Callback function vApplicationDaemonTaskStartupHook implementation is required when deamon task startup hook is enabled. +// Default: 0 +#define configUSE_DAEMON_TASK_STARTUP_HOOK 0 + +// Use malloc failed hook +// Enable callback function call when out of dynamic memory. +// Callback function vApplicationMallocFailedHook implementation is required when malloc failed hook is enabled. +// Default: 0 +#define configUSE_MALLOC_FAILED_HOOK 0 + +// Queue registry size +// Define maximum number of queue objects registered for debug purposes. +// The queue registry is used by kernel aware debuggers to locate queue and semaphore structures and display associated text names. +// Default: 8 +#define configQUEUE_REGISTRY_SIZE 8 + +// Port Specific Features +// Enable and configure port specific features. +// Check FreeRTOS documentation for definitions that apply for the used port. + +// Use Floating Point Unit +// Using Floating Point Unit (FPU) affects context handling. +// Enable FPU when application uses floating point operations. +// Default: 1 +#define configENABLE_FPU 1 + +// Use Memory Protection Unit +// Using Memory Protection Unit (MPU) requires detailed memory map definition. +// This setting is only releavant for MPU enabled ports. +// Default: 0 +#define configENABLE_MPU 0 + +// + +// Thread Local Storage Settings +// Thread local storage pointers +// Thread local storage (or TLS) allows the application writer to store +// values inside a task's control block, making the value specific to +// (local to) the task itself. +// Default: 0 +#define configNUM_USER_THREAD_LOCAL_STORAGE_POINTERS 0 +// + +// Use Threadsafe Errno +// Enable Threadsafe Errno support. +// Default: 0 +#define configUSE_POSIX_ERRNO 1 + +//------------- <<< end of configuration section >>> --------------------------- + +extern uint32_t SystemCoreClock; + +#define configCPU_CLOCK_HZ SystemCoreClock +#define configENABLE_BACKWARD_COMPATIBILITY 1 +#define configUSE_PREEMPTION 1 +#define configUSE_PORT_OPTIMISED_TASK_SELECTION 0 +#define configMAX_PRIORITIES (56) +#define configMAX_TASK_NAME_LEN (15) +#define configUSE_TRACE_FACILITY 1 +#define configUSE_16_BIT_TICKS 0 +#define configUSE_CO_ROUTINES 0 +#define configUSE_MUTEXES 1 +#define configUSE_RECURSIVE_MUTEXES 1 +#define configUSE_APPLICATION_TASK_TAG 0 +#define configUSE_COUNTING_SEMAPHORES 1 +#define configUSE_ALTERNATIVE_API 0 +#define configNUM_THREAD_LOCAL_STORAGE_POINTERS 5 /* FreeRTOS+FAT requires 2 pointers if a CWD is supported. */ +#define configRECORD_STACK_HIGH_ADDRESS 1 + +/* Software timer related definitions. */ +#define configUSE_TIMERS 1 + +/* Event group related definitions. */ +#define configUSE_EVENT_GROUPS 1 + +/* Run time stats gathering definitions. */ + +unsigned long ulGetRunTimeCounterValue(void); +void vConfigureTimerForRunTimeStats(void); +#define configGENERATE_RUN_TIME_STATS 0 + +/* Co-routine definitions. */ +#define configUSE_CO_ROUTINES 0 +#define configMAX_CO_ROUTINE_PRIORITIES (2) + +/* Currently the TCP/IP stack is using dynamic allocation, and the MQTT task is + * using static allocation. */ +#define configSUPPORT_DYNAMIC_ALLOCATION 1 +#define configSUPPORT_STATIC_ALLOCATION 1 + +/* Set the following definitions to 1 to include the API function, or zero + * to exclude the API function. */ +#define INCLUDE_vTaskPrioritySet 1 +#define INCLUDE_uxTaskPriorityGet 1 +#define INCLUDE_vTaskDelete 1 +#define INCLUDE_vTaskCleanUpResources 1 +#define INCLUDE_vTaskSuspend 1 +#define INCLUDE_vTaskDelayUntil 1 +#define INCLUDE_vTaskDelay 1 +#define INCLUDE_uxTaskGetStackHighWaterMark 1 +#define INCLUDE_xTaskGetSchedulerState 1 +#define INCLUDE_xTimerGetTimerTaskHandle 0 +#define INCLUDE_xTaskGetIdleTaskHandle 0 +#define INCLUDE_xQueueGetMutexHolder 1 +#define INCLUDE_eTaskGetState 1 +#define INCLUDE_xEventGroupSetBitsFromISR 1 +#define INCLUDE_xTimerPendFunctionCall 1 +#define INCLUDE_xTaskGetCurrentTaskHandle 1 +#define INCLUDE_xTaskAbortDelay 1 + +/* Cortex-M specific definitions. */ +#ifdef __NVIC_PRIO_BITS +#undef __NVIC_PRIO_BITS +#endif +#define configPRIO_BITS 6 /* 6 priority levels. */ + +/* This demo makes use of one or more example stats formatting functions. These + * format the raw data provided by the uxTaskGetSystemState() function in to human + * readable ASCII form. See the notes in the implementation of vTaskList() within + * FreeRTOS/Source/tasks.c for limitations. configUSE_STATS_FORMATTING_FUNCTIONS + * is set to 2 so the formatting functions are included without the stdio.h being + * included in tasks.c. That is because this project defines its own sprintf() + * functions. */ +#define configUSE_STATS_FORMATTING_FUNCTIONS 0 + +/* Definitions that map the FreeRTOS port interrupt handlers to their CMSIS +standard names. */ +#define vPortSVCHandler SVC_Handler +#define xPortPendSVHandler PendSV_Handler +#define vHardFault_Handler HardFault_Handler + +#if (configUSE_TICKLESS_IDLE == 0) +/* Ensure Cortex-M port compatibility. */ +#define SysTick_Handler xPortSysTickHandler +#endif +/* Assert call defined for debug builds. */ +void vAssertCalled(const char *pcFile, uint32_t ulLine); + +#define configASSERT(x) \ + if ((x) == 0) { \ + taskDISABLE_INTERRUPTS(); \ + for (;;) \ + ; \ + } + +#define configASSERTNULL(x) \ + if ((x) == NULL) { \ + taskDISABLE_INTERRUPTS(); \ + for (;;) \ + ; \ + } + +/* The function that implements FreeRTOS printf style output, and the macro + * that maps the configPRINTF() macros to that function. */ +extern void vLoggingPrintf(const char *pcFormat, ...); +#define configPRINTF(X) vLoggingPrintf X + +/* Non-format version thread-safe print */ +extern void vLoggingPrint(const char *pcMessage); +#define configPRINT(X) vLoggingPrint(X) + +/* Map the logging task's printf to the board specific output function. */ +#define configPRINT_STRING(X) printf(X); /* : Change to your devices console print acceptance function. */ +/* Sets the length of the buffers into which logging messages are written - so + * also defines the maximum length of each log message. */ +#define configLOGGING_MAX_MESSAGE_LENGTH 100 + +/* Set to 1 to prepend each log message with a message number, the task name, + * and a time stamp. */ +#define configLOGGING_INCLUDE_TIME_AND_TASK_NAME 1 + +/* The priority at which the tick interrupt runs. This should probably be kept at 1. */ +//#define configKERNEL_INTERRUPT_PRIORITY 1 + +/* The lowest interrupt priority that can be used in a call to a "set priority" +function. */ +#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY 0x3f + +/* The highest interrupt priority that can be used by any interrupt service +routine that makes calls to interrupt safe FreeRTOS API functions. DO NOT CALL +INTERRUPT SAFE FREERTOS API FUNCTIONS FROM ANY INTERRUPT THAT HAS A HIGHER +PRIORITY THAN THIS! (higher priorities are lower numeric values. */ +#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5 + +/* Interrupt priorities used by the kernel port layer itself. These are generic +to all Cortex-M ports, and do not rely on any particular library functions. */ +#define configKERNEL_INTERRUPT_PRIORITY (configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS)) +/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!! +See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */ + +#define configMAX_SYSCALL_INTERRUPT_PRIORITY (configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS)) + +/* The platform FreeRTOS is running on. */ +#define configPLATFORM_NAME "Si917_SoC" + +#endif /* FREERTOS_CONFIG_H */ diff --git a/projects/bluetooth/AI Based smart predictive farming/config/RTE_Device_917.h b/projects/bluetooth/AI Based smart predictive farming/config/RTE_Device_917.h new file mode 100644 index 0000000..87f6493 --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/config/RTE_Device_917.h @@ -0,0 +1,5656 @@ +/* ----------------------------------------------------------------------------- + * Copyright (c) 2013-2016 ARM Ltd. + * + * This software is provided 'as-is', without any express or implied warranty. + * In no event will the authors be held liable for any damages arising from + * the use of this software. Permission is granted to anyone to use this + * software for any purpose, including commercial applications, and to alter + * it and redistribute it freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software in + * a product, an acknowledgement in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source distribution. + * + * $Date: 1. June 2024 + * $Revision: V2.4.4 + * + * Project: RTE Device Configuration for Si91x 2.0 B0 BRD2605A + * -------------------------------------------------------------------------- */ + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +#ifndef __RTE_DEVICE_H +#define __RTE_DEVICE_H +#include "rsi_ccp_user_config.h" +#include "pin_config.h" + +// These macros define GPIO ports generated by PinTool +// to ensure proper mapping and compatibility with the driver. +#define HP 0 +#define ULP 4 +#define UULP_VBAT 5 + +#define GPIO_PORT_0 0 // GPIO PORT HP +#define ULP_GPIO_MODE_6 6 // ULP GPIO mode 6 +#define HOST_PAD_GPIO_MIN 25 // GPIO host pad minimum pin number +#define HOST_PAD_GPIO_MAX 30 // GPIO host pad maximum pin number +#define GPIO_MAX_PIN 64 // GPIO maximum pin number + +#define RTE_ULP_PORT 0 + +#define BUTTON_0_GPIO_PIN 2 + +#define RTE_BUTTON0_PORT UULP_VBAT +#define RTE_BUTTON0_NUMBER 0 +#define RTE_BUTTON0_PIN (2U) + +#define RTE_BUTTON1_PORT 3 +#define RTE_BUTTON1_NUMBER 1 +#define RTE_BUTTON1_PIN (1U) +#define RTE_BUTTON1_PAD 13 + +// RGB LED Instance 0 +#define RTE_LED0_NUMBER 0 + +// Red LED +#define RTE_LED0_LEDR_PORT 3 +#define RTE_LED0_LEDR_NUMBER RTE_LED0_NUMBER +#define RTE_LED0_LEDR_PIN 2 +#define RTE_LED0_LEDR_PAD 14 + +// Green LED +#define RTE_LED0_LEDG_PORT 3 +#define RTE_LED0_LEDG_NUMBER RTE_LED0_NUMBER +#define RTE_LED0_LEDG_PIN 3 +#define RTE_LED0_LEDG_PAD 15 + +// Blue LED +#define RTE_LED0_LEDB_PORT HP +#define RTE_LED0_LEDB_NUMBER RTE_LED0_NUMBER +#define RTE_LED0_LEDB_PIN 15 +#define RTE_LED0_LEDB_PAD 8 + +// USART0 [Driver_USART0] +// Configuration settings for Driver_USART0 in component ::CMSIS Driver:USART +#define RTE_ENABLE_FIFO 1 + +#define RTE_USART0 1 + +#define RTE_USART0_CLK_SRC USART_ULPREFCLK +#define RTE_USART0_CLK_DIV_FACT 1 +#define RTE_USART0_FRAC_DIV_SEL USART_FRACTIONAL_DIVIDER + +#define RTE_USART_MODE 0 //!Usart mode macros +#define RTE_CONTINUOUS_CLOCK_MODE 0 + +#define RTE_USART0_LOOPBACK 0 +#define RTE_USART0_DTR_EANBLE 0 + +#define RTE_USART0_DMA_MODE1_EN 0 //!dma mode + +#define RTE_USART0_TX_FIFO_THRESHOLD USART_TRIGGER_TX_EMPTY +#define RTE_USART0_RX_FIFO_THRESHOLD USART_TRIGGER_RX_AEMPTY + +#define RTE_USART0_DMA_TX_LEN_PER_DES 1024 +#define RTE_USART0_DMA_RX_LEN_PER_DES 1024 + +#define RTE_USART0_CHNL_UDMA_TX_CH 25 + +#define RTE_USART0_CHNL_UDMA_RX_CH 24 + +// USART0_CLK <0=>P0_8 <1=>P0_25 <2=>P0_52 <3=>P0_64 +// CLK of USART0 +#ifndef USART0_CLK_LOC +#define RTE_USART0_CLK_PORT_ID 0 + +#if (RTE_USART0_CLK_PORT_ID == 0) +#define RTE_USART0_CLK_PORT HP +#define RTE_USART0_CLK_PIN 8 +#define RTE_USART0_CLK_MUX 2 +#define RTE_USART0_CLK_PAD 3 +#elif (RTE_USART0_CLK_PORT_ID == 1) +#define RTE_USART0_CLK_PORT HP +#define RTE_USART0_CLK_PIN 25 +#define RTE_USART0_CLK_MUX 2 +#define RTE_USART0_CLK_PAD 0 //NO PAD +#elif (RTE_USART0_CLK_PORT_ID == 2) +#define RTE_USART0_CLK_PORT HP +#define RTE_USART0_CLK_PIN 52 +#define RTE_USART0_CLK_MUX 2 +#define RTE_USART0_CLK_PAD 16 +#else +#error "Invalid USART0 RTE_USART0_CLK_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_USART0_CLK_PORT HP +#if (USART0_CLK_LOC == 0) +#define RTE_USART0_CLK_PIN USART0_CLK_PIN +#define RTE_USART0_CLK_MUX 2 +#define RTE_USART0_CLK_PAD 3 +#endif +#if (USART0_CLK_LOC == 1) +#define RTE_USART0_CLK_PIN USART0_CLK_PIN +#define RTE_USART0_CLK_MUX 2 +#define RTE_USART0_CLK_PAD 0 //NO PAD +#endif +#if (USART0_CLK_LOC == 2) +#define RTE_USART0_CLK_PIN USART0_CLK_PIN +#define RTE_USART0_CLK_MUX 2 +#define RTE_USART0_CLK_PAD 16 +#endif +#if (USART0_CLK_LOC == 3) +#define RTE_USART0_CLK_PIN (USART0_CLK_PIN + GPIO_MAX_PIN) +#define RTE_USART0_CLK_MUX 2 +#define RTE_USART0_CLK_PAD 22 +#endif +//Pintool data +#endif + +// USART0_TX <0=>P0_15 <1=>P0_30 <2=>P0_54 <3=>P0_68 <4=>P0_71 +// TX for USART0 +#ifndef USART0_TX_LOC +#ifdef SLI_SI91X_MCU_CONFIG_RADIO_BOARD_BASE_VER +#define RTE_USART0_TX_PORT_ID 1 +#else +#define RTE_USART0_TX_PORT_ID 0 +#endif + +#if (RTE_USART0_TX_PORT_ID == 0) +#define RTE_USART0_TX_PORT HP +#define RTE_USART0_TX_PIN 15 +#define RTE_USART0_TX_MUX 2 +#define RTE_USART0_TX_PAD 8 +#elif (RTE_USART0_TX_PORT_ID == 1) +#define RTE_USART0_TX_PORT HP +#define RTE_USART0_TX_PIN 30 +#define RTE_USART0_TX_MUX 2 +#define RTE_USART0_TX_PAD 0 //NO PAD +#elif (RTE_USART0_TX_PORT_ID == 2) +#define RTE_USART0_TX_PORT HP +#define RTE_USART0_TX_PIN 54 +#define RTE_USART0_TX_MUX 2 +#define RTE_USART0_TX_PAD 18 +#elif (RTE_USART0_TX_PORT_ID == 3) +#define RTE_USART0_TX_PORT HP +#define RTE_USART0_TX_PIN 71 +#define RTE_USART0_TX_MUX 4 +#define RTE_USART0_TX_PAD 29 +#else +#error "Invalid USART0 RTE_USART0_TX_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_USART0_TX_PORT HP +#if (USART0_TX_LOC == 4) +#define RTE_USART0_TX_PIN USART0_TX_PIN +#define RTE_USART0_TX_MUX 2 +#define RTE_USART0_TX_PAD 8 +#endif +#if (USART0_TX_LOC == 5) +#define RTE_USART0_TX_PIN USART0_TX_PIN +#define RTE_USART0_TX_MUX 2 +#define RTE_USART0_TX_PAD 0 //NO PAD +#endif +#if (USART0_TX_LOC == 6) +#define RTE_USART0_TX_PIN USART0_TX_PIN +#define RTE_USART0_TX_MUX 2 +#define RTE_USART0_TX_PAD 18 +#endif +#if (USART0_TX_LOC == 7) +#define RTE_USART0_TX_PIN (USART0_TX_PIN + GPIO_MAX_PIN) +#define RTE_USART0_TX_MUX 2 +#define RTE_USART0_TX_PAD 26 +#endif +#if (USART0_TX_LOC == 8) +#define RTE_USART0_TX_PIN (USART0_TX_PIN + GPIO_MAX_PIN) +#define RTE_USART0_TX_MUX 4 +#define RTE_USART0_TX_PAD 29 +#endif +//Pintool data +#endif + +// USART0_RX <0=>P0_10 <1=>P0_29 <2=>P0_55 <3=>P0_65 <4=>P0_70 +// RX for USART0 +#ifndef USART0_RX_LOC +#ifdef SLI_SI91X_MCU_CONFIG_RADIO_BOARD_BASE_VER +#define RTE_USART0_RX_PORT_ID 1 +#else +#define RTE_USART0_RX_PORT_ID 0 +#endif + +#if (RTE_USART0_RX_PORT_ID == 0) +#define RTE_USART0_RX_PORT HP +#define RTE_USART0_RX_PIN 10 +#define RTE_USART0_RX_MUX 2 +#define RTE_USART0_RX_PAD 5 +#elif (RTE_USART0_RX_PORT_ID == 1) +#define RTE_USART0_RX_PORT HP +#define RTE_USART0_RX_PIN 29 +#define RTE_USART0_RX_MUX 2 +#define RTE_USART0_RX_PAD 0 //no pad +#elif (RTE_USART0_RX_PORT_ID == 2) +#define RTE_USART0_RX_PORT HP +#define RTE_USART0_RX_PIN 55 +#define RTE_USART0_RX_MUX 2 +#define RTE_USART0_RX_PAD 19 +#elif (RTE_USART0_RX_PORT_ID == 3) +#define RTE_USART0_RX_PORT HP +#define RTE_USART0_RX_PIN 65 +#define RTE_USART0_RX_MUX 2 +#define RTE_USART0_RX_PAD 23 +#elif (RTE_USART0_RX_PORT_ID == 4) +#define RTE_USART0_RX_PORT HP +#define RTE_USART0_RX_PIN 70 +#define RTE_USART0_RX_MUX 4 +#define RTE_USART0_RX_PAD 28 +#else +#error "Invalid USART0 RTE_USART0_RX_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_USART0_RX_PORT HP +#if (USART0_RX_LOC == 9) +#define RTE_USART0_RX_PIN USART0_RX_PIN +#define RTE_USART0_RX_MUX 2 +#define RTE_USART0_RX_PAD 5 +#endif +#if (USART0_RX_LOC == 10) +#define RTE_USART0_RX_PIN USART0_RX_PIN +#define RTE_USART0_RX_MUX 2 +#define RTE_USART0_RX_PAD 0 //no pad +#endif +#if (USART0_RX_LOC == 11) +#define RTE_USART0_RX_PIN USART0_RX_PIN +#define RTE_USART0_RX_MUX 2 +#define RTE_USART0_RX_PAD 19 +#endif +#if (USART0_RX_LOC == 12) +#define RTE_USART0_RX_PIN (USART0_RX_PIN + GPIO_MAX_PIN) +#define RTE_USART0_RX_MUX 2 +#define RTE_USART0_RX_PAD 23 +#endif +#if (USART0_RX_LOC == 13) +#define RTE_USART0_RX_PIN (USART0_RX_PIN + GPIO_MAX_PIN) +#define RTE_USART0_RX_MUX 4 +#define RTE_USART0_RX_PAD 28 +#endif +//Pintool data +#endif + +// USART0_CTS <0=>P0_6 <1=>P0_26 <2=>P0_56 <3=>P0_70 +// CTS for USART0 +#ifndef USART0_CTS_LOC +#define RTE_USART0_CTS_PORT_ID 0 + +#if (RTE_USART0_CTS_PORT_ID == 0) +#define RTE_USART0_CTS_PORT HP +#define RTE_USART0_CTS_PIN 6 +#define RTE_USART0_CTS_MUX 2 +#define RTE_USART0_CTS_PAD 1 +#elif (RTE_USART0_CTS_PORT_ID == 1) +#define RTE_USART0_CTS_PORT HP +#define RTE_USART0_CTS_PIN 26 +#define RTE_USART0_CTS_MUX 2 +#define RTE_USART0_CTS_PAD 0 //NO PAD +#elif (RTE_USART0_CTS_PORT_ID == 2) +#define RTE_USART0_CTS_PORT HP +#define RTE_USART0_CTS_PIN 56 +#define RTE_USART0_CTS_MUX 2 +#define RTE_USART0_CTS_PAD 20 +#elif (RTE_USART0_CTS_PORT_ID == 3) +#define RTE_USART0_CTS_PORT HP +#define RTE_USART0_CTS_PIN 70 +#define RTE_USART0_CTS_MUX 2 +#define RTE_USART0_CTS_PAD 28 +#else +#error "Invalid USART0 RTE_USART0_CTS_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_USART0_CTS_PORT HP +#if (USART0_CTS_LOC == 14) +#define RTE_USART0_CTS_PIN USART0_CTS_PIN +#define RTE_USART0_CTS_MUX 2 +#define RTE_USART0_CTS_PAD 1 +#endif +#if (USART0_CTS_LOC == 15) +#define RTE_USART0_CTS_PIN USART0_CTS_PIN +#define RTE_USART0_CTS_MUX 2 +#define RTE_USART0_CTS_PAD 0 //NO PAD +#endif +#if (USART0_CTS_LOC == 16) +#define RTE_USART0_CTS_PIN USART0_CTS_PIN +#define RTE_USART0_CTS_MUX 2 +#define RTE_USART0_CTS_PAD 20 +#endif +#if (USART0_CTS_LOC == 17) +#define RTE_USART0_CTS_PIN (USART0_CTS_PIN + GPIO_MAX_PIN) +#define RTE_USART0_CTS_MUX 2 +#define RTE_USART0_CTS_PAD 28 +#endif +//Pintool data +#endif + +// USART0_RTS <0=>P0_9 <1=>P0_28 <2=>P0_53 <3=>P0_69 +// RTS for USART0 +#ifndef USART0_RTS_LOC +#define RTE_USART0_RTS_PORT_ID 0 + +#if (RTE_USART0_RTS_PORT_ID == 0) +#define RTE_USART0_RTS_PORT HP +#define RTE_USART0_RTS_PIN 9 +#define RTE_USART0_RTS_MUX 2 +#define RTE_USART0_RTS_PAD 4 +#elif (RTE_USART0_RTS_PORT_ID == 1) +#define RTE_USART0_RTS_PORT HP +#define RTE_USART0_RTS_PIN 28 +#define RTE_USART0_RTS_MUX 2 +#define RTE_USART0_RTS_PAD 0 //NO PAD +#elif (RTE_USART0_RTS_PORT_ID == 2) +#define RTE_USART0_RTS_PORT HP +#define RTE_USART0_RTS_PIN 53 +#define RTE_USART0_RTS_MUX 2 +#define RTE_USART0_RTS_PAD 17 +#else +#error "Invalid USART0 RTE_USART0_RTS_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_USART0_RTS_PORT HP +#if (USART0_RTS_LOC == 18) +#define RTE_USART0_RTS_PIN USART0_RTS_PIN +#define RTE_USART0_RTS_MUX 2 +#define RTE_USART0_RTS_PAD 4 +#endif +#if (USART0_RTS_LOC == 19) +#define RTE_USART0_RTS_PIN USART0_RTS_PIN +#define RTE_USART0_RTS_MUX 2 +#define RTE_USART0_RTS_PAD 0 //NO PAD +#endif +#if (USART0_RTS_LOC == 20) +#define RTE_USART0_RTS_PIN USART0_RTS_PIN +#define RTE_USART0_RTS_MUX 2 +#define RTE_USART0_RTS_PAD 17 +#endif +#if (USART0_RTS_LOC == 21) +#define RTE_USART0_RTS_PIN (USART0_RTS_PIN + GPIO_MAX_PIN) +#define RTE_USART0_RTS_MUX 2 +#define RTE_USART0_RTS_PAD 27 +#endif +//Pintool data +#endif + +// USART0_IR_TX <0=>P0_48 <1=>P0_72 +// IR TX for USART0 +#ifndef USART0_IRTX_LOC +#define RTE_IR_TX_PORT_ID 0 +#if ((RTE_IR_TX_PORT_ID == 2)) +#error "Invalid USART0 RTE_USART0_IR_TX_PIN Pin Configuration!" +#endif + +#if (RTE_IR_TX_PORT_ID == 0) +#define RTE_USART0_IR_TX_PORT HP +#define RTE_USART0_IR_TX_PIN 48 +#define RTE_USART0_IR_TX_MUX 2 +#define RTE_USART0_IR_TX_PAD 12 +#elif (RTE_IR_TX_PORT_ID == 1) +#define RTE_USART0_IR_TX_PORT HP +#define RTE_USART0_IR_TX_PIN 72 +#define RTE_USART0_IR_TX_MUX 2 +#define RTE_USART0_IR_TX_PAD 30 +#elif (RTE_IR_TX_PORT_ID == 2) +#define RTE_USART0_IR_TX_PORT HP +#define RTE_USART0_IR_TX_PIN 26 +#define RTE_USART0_IR_TX_MUX 13 +#define RTE_USART0_IR_TX_PAD 0 //No pad +#else +#error "Invalid USART0 RTE_USART0_IR_TX_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_USART0_IR_TX_PORT HP +#if (USART0_IRTX_LOC == 22) +#define RTE_USART0_IR_TX_PIN USART0_IRTX_PIN +#define RTE_USART0_IR_TX_MUX 13 +#define RTE_USART0_IR_TX_PAD 0 //No pad +#endif +#if (USART0_IRTX_LOC == 23) +#define RTE_USART0_IR_TX_PIN USART0_IRTX_PIN +#define RTE_USART0_IR_TX_MUX 2 +#define RTE_USART0_IR_TX_PAD 12 +#endif +#if (USART0_IRTX_LOC == 24) +#define RTE_USART0_IR_TX_PIN (USART0_IRTX_PIN + GPIO_MAX_PIN) +#define RTE_USART0_IR_TX_MUX 11 +#define RTE_USART0_IR_TX_PAD 23 +#endif +#if (USART0_IRTX_LOC == 25) +#define RTE_USART0_IR_TX_PIN (USART0_IRTX_PIN + GPIO_MAX_PIN) +#define RTE_USART0_IR_TX_MUX 2 +#define RTE_USART0_IR_TX_PAD 30 +#endif +//Pintool data +#endif + +// USART0_IR_RX <0=>P0_47 <1=>P0_71 <2=>P0_64 <3=>P0_25 +// IR RX for USART0 +#ifndef USART0_IRRX_LOC +#define RTE_IR_RX_PORT_ID 0 +#if ((RTE_IR_RX_PORT_ID == 2)) +#error "Invalid USART0 RTE_USART0_IR_RX_PIN Pin Configuration!" +#endif + +#if (RTE_IR_RX_PORT_ID == 0) +#define RTE_USART0_IR_RX_PORT HP +#define RTE_USART0_IR_RX_PIN 47 +#define RTE_USART0_IR_RX_MUX 2 +#define RTE_USART0_IR_RX_PAD 11 +#elif (RTE_IR_RX_PORT_ID == 1) +#define RTE_USART0_IR_RX_PORT HP +#define RTE_USART0_IR_RX_PIN 71 +#define RTE_USART0_IR_RX_MUX 2 +#define RTE_USART0_IR_RX_PAD 29 +#elif (RTE_IR_RX_PORT_ID == 2) +#define RTE_USART0_IR_RX_PORT HP +#define RTE_USART0_IR_RX_PIN 25 +#define RTE_USART0_IR_RX_MUX 13 +#define RTE_USART0_IR_RX_PAD 0 //no pad +#else +#error "Invalid USART0 RTE_USART0_IR_RX_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_USART0_IR_RX_PORT HP +#if (USART0_IRRX_LOC == 26) +#define RTE_USART0_IR_RX_PIN USART0_IRRX_PIN +#define RTE_USART0_IR_RX_MUX 13 +#define RTE_USART0_IR_RX_PAD 0 //no pad +#endif +#if (USART0_IRRX_LOC == 27) +#define RTE_USART0_IR_RX_PIN USART0_IRRX_PIN +#define RTE_USART0_IR_RX_MUX 2 +#define RTE_USART0_IR_RX_PAD 11 +#endif +#if (USART0_IRRX_LOC == 28) +#define RTE_USART0_IR_RX_PIN (USART0_IRRX_PIN + GPIO_MAX_PIN) +#define RTE_USART0_IR_RX_MUX 11 +#define RTE_USART0_IR_RX_PAD 22 +#endif +#if (USART0_IRRX_LOC == 29) +#define RTE_USART0_IR_RX_PIN (USART0_IRRX_PIN + GPIO_MAX_PIN) +#define RTE_USART0_IR_RX_MUX 2 +#define RTE_USART0_IR_RX_PAD 29 +#endif +//Pintool data +#endif + +// USART0_RI <0=>P0_27 <1=>P0_46 <2=>P0_68 +// RI for USART0 +#ifndef USART0_RI_LOC +#define RTE_RI_PORT_ID 0 + +#if (RTE_RI_PORT_ID == 0) +#define RTE_USART0_RI_PORT HP +#define RTE_USART0_RI_PIN 27 +#define RTE_USART0_RI_MUX 2 +#define RTE_USART0_RI_PAD 0 //no pad +#elif (RTE_RI_PORT_ID == 1) +#define RTE_USART0_RI_PORT HP +#define RTE_USART0_RI_PIN 46 +#define RTE_USART0_RI_MUX 2 +#define RTE_USART0_RI_PAD 10 +#else +#error "Invalid USART0 RTE_USART0_RI_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_USART0_RI_PORT HP +#if (USART0_RI_LOC == 30) +#define RTE_USART0_RI_PIN USART0_RI_PIN +#define RTE_USART0_RI_MUX 2 +#define RTE_USART0_RI_PAD 0 //no pad +#endif +#if (USART0_RI_LOC == 31) +#define RTE_USART0_RI_PIN USART0_RI_PIN +#define RTE_USART0_RI_MUX 2 +#define RTE_USART0_RI_PAD 10 +#endif +#if (USART0_RI_LOC == 32) +#define RTE_USART0_RI_PIN (USART0_RI_PIN + GPIO_MAX_PIN) +#define RTE_USART0_RI_MUX 11 +#define RTE_USART0_RI_PAD 26 +#endif +//Pintool data +#endif + +// USART0_DSR <0=>P0_11 <1=>P0_57 +// DSR for USART0 +#ifndef USART0_DSR_LOC +#define RTE_DSR_PORT_ID 0 + +#if (RTE_DSR_PORT_ID == 0) +#define RTE_USART0_DSR_PORT HP +#define RTE_USART0_DSR_PIN 11 +#define RTE_USART0_DSR_MUX 2 +#define RTE_USART0_DSR_PAD 6 +#elif (RTE_DSR_PORT_ID == 1) +#define RTE_USART0_DSR_PORT HP +#define RTE_USART0_DSR_PIN 57 +#define RTE_USART0_DSR_MUX 2 +#define RTE_USART0_DSR_PAD 21 +#else +#error "Invalid USART0 RTE_USART0_RI_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_USART0_DSR_PORT HP +#define RTE_USART0_DSR_PIN USART0_DSR_PIN +#if (USART0_DSR_LOC == 33) +#define RTE_USART0_DSR_MUX 2 +#define RTE_USART0_DSR_PAD 6 +#endif +#if (USART0_DSR_LOC == 34) +#define RTE_USART0_DSR_MUX 2 +#define RTE_USART0_DSR_PAD 21 +#endif +//Pintool data +#endif + +// USART0_DCD <0=>P0_12 <1=>P0_29 +// DCD for USART0 +#ifndef USART0_DCD_LOC +#define RTE_USART0_DCD_PORT HP +#define RTE_USART0_DCD_PIN 12 +#else +#define RTE_USART0_DCD_PORT HP +#define RTE_USART0_DCD_PIN USART0_DCD_PIN +#if (USART0_DCD_LOC == 35) +#define RTE_USART0_DCD_MUX 2 +#define RTE_USART0_DCD_PAD 7 +#elif (USART0_DCD_LOC == 36) +#define RTE_USART0_DCD_MUX 12 +#define RTE_USART0_DCD_PAD 0 +#endif +#endif + +// USART0_DTR <0=>P0_7 +// DTR for USART0 +#ifndef USART0_DTR_LOC +#define RTE_USART0_DTR_PORT HP +#define RTE_USART0_DTR_PIN 7 +#else +#define RTE_USART0_DTR_PORT HP +#define RTE_USART0_DTR_PIN USART0_DTR_PIN +#endif +#define RTE_USART0_DTR_MUX 2 +#define RTE_USART0_DTR_PAD 2 +// + +// UART1 [Driver_UART1] +// Configuration settings for Driver_UART1 in component ::CMSIS Driver:USART +#define RTE_UART1 1 + +#define RTE_UART1_CLK_SRC USART_ULPREFCLK +#define RTE_UART1_CLK_DIV_FACT 1 +#define RTE_UART1_FRAC_DIV_SEL USART_FRACTIONAL_DIVIDER + +#define RTE_UART1_LOOPBACK 0 +#define RTE_UART1_DMA_MODE1_EN 0 + +#define RTE_UART1_TX_FIFO_THRESHOLD USART_TRIGGER_TX_EMPTY +#define RTE_UART1_RX_FIFO_THRESHOLD USART_TRIGGER_RX_AEMPTY + +#define RTE_UART1_DMA_TX_LEN_PER_DES 1024 +#define RTE_UART1_DMA_RX_LEN_PER_DES 1024 + +#define RTE_UART1_CHNL_UDMA_TX_CH 27 + +#define RTE_UART1_CHNL_UDMA_RX_CH 26 + +/*UART1 PINS*/ +// UART1_TX <0=>P0_7 <1=>P0_30 <2=>P0_67 <3=>P0_69 <4=>P0_73 <5=>P0_75 <6=>P0_34 +// TX of UART1 +#ifndef UART1_TX_LOC +#ifdef SLI_SI91X_MCU_CONFIG_RADIO_BOARD_BASE_VER +#define RTE_UART1_TX_PORT_ID 0 +#else +#define RTE_UART1_TX_PORT_ID 0 + +#if ((RTE_UART1_TX_PORT_ID == 6)) +#error "Invalid UART1 RTE_UART1_TX_PIN Configuration!" +#endif +#endif + +#if (RTE_UART1_TX_PORT_ID == 0) +#define RTE_UART1_TX_PORT HP +#define RTE_UART1_TX_PIN 7 +#define RTE_UART1_TX_MUX 6 +#define RTE_UART1_TX_PAD 2 +#elif (RTE_UART1_TX_PORT_ID == 1) +#define RTE_UART1_TX_PORT HP +#define RTE_UART1_TX_PIN 30 +#define RTE_UART1_TX_MUX 6 +#define RTE_UART1_TX_PAD 0 //no pad +#elif (RTE_UART1_TX_PORT_ID == 2) +#define RTE_UART1_TX_PORT HP +#define RTE_UART1_TX_PIN 67 +#define RTE_UART1_TX_MUX 9 +#define RTE_UART1_TX_PAD 25 +#elif (RTE_UART1_TX_PORT_ID == 3) +#define RTE_UART1_TX_PORT HP +#define RTE_UART1_TX_PIN 73 +#define RTE_UART1_TX_MUX 6 +#define RTE_UART1_TX_PAD 31 +#elif (RTE_UART1_TX_PORT_ID == 4) +#define RTE_UART1_TX_PORT HP +#define RTE_UART1_TX_PIN 75 +#define RTE_UART1_TX_MUX 9 +#define RTE_UART1_TX_PAD 33 +#else +#error "Invalid UART1 RTE_UART1_TX_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_UART1_TX_PORT HP +#if (UART1_TX_LOC == 0) +#define RTE_UART1_TX_PIN UART1_TX_PIN +#define RTE_UART1_TX_MUX 6 +#define RTE_UART1_TX_PAD 2 +#endif +#if (UART1_TX_LOC == 1) +#define RTE_UART1_TX_PIN UART1_TX_PIN +#define RTE_UART1_TX_MUX 6 +#define RTE_UART1_TX_PAD 0 //no pad +#endif +#if (UART1_TX_LOC == 2) +#define RTE_UART1_TX_PIN (UART1_TX_PIN + GPIO_MAX_PIN) +#define RTE_UART1_TX_MUX 6 +#define RTE_UART1_TX_PAD 27 +#endif +#if (UART1_TX_LOC == 3) +#define RTE_UART1_TX_PIN (UART1_TX_PIN + GPIO_MAX_PIN) +#define RTE_UART1_TX_MUX 6 +#define RTE_UART1_TX_PAD 31 +#endif +#if (UART1_TX_LOC == 4) +#define RTE_UART1_TX_PIN (UART1_TX_PIN + GPIO_MAX_PIN) +#define RTE_UART1_TX_MUX 9 +#define RTE_UART1_TX_PAD 33 +#endif +//Pintool data +#endif + +// UART1_RX <0=>P0_6 <1=>P0_29 <2=>P0_66 <3=>P0_68 <4=>P0_72 <5=>P0_74 <6=>P0_33 +// RX of UART1 +#ifndef UART1_RX_LOC +#define RTE_UART1_RX_PORT_ID 0 + +#if (RTE_UART1_RX_PORT_ID == 0) +#define RTE_UART1_RX_PORT HP +#define RTE_UART1_RX_PIN 6 +#define RTE_UART1_RX_MUX 6 +#define RTE_UART1_RX_PAD 1 +#elif (RTE_UART1_RX_PORT_ID == 1) +#define RTE_UART1_RX_PORT HP +#define RTE_UART1_RX_PIN 29 +#define RTE_UART1_RX_MUX 6 +#define RTE_UART1_RX_PAD 0 //no pad +#elif (RTE_UART1_RX_PORT_ID == 2) +#define RTE_UART1_RX_PORT HP +#define RTE_UART1_RX_PIN 66 +#define RTE_UART1_RX_MUX 9 +#define RTE_UART1_RX_PAD 24 +#elif (RTE_UART1_RX_PORT_ID == 3) +#define RTE_UART1_RX_PORT HP +#define RTE_UART1_RX_PIN 72 +#define RTE_UART1_RX_MUX 6 +#define RTE_UART1_RX_PAD 30 +#elif (RTE_UART1_RX_PORT_ID == 4) +#define RTE_UART1_RX_PORT HP +#define RTE_UART1_RX_PIN 74 +#define RTE_UART1_RX_MUX 9 +#define RTE_UART1_RX_PAD 32 +#else +#error "Invalid UART1 RTE_UART1_RX_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_UART1_RX_PORT HP +#if (UART1_RX_LOC == 5) +#define RTE_UART1_RX_PIN UART1_RX_PIN +#define RTE_UART1_RX_MUX 6 +#define RTE_UART1_RX_PAD 1 +#endif +#if (UART1_RX_LOC == 6) +#define RTE_UART1_RX_PIN UART1_RX_PIN +#define RTE_UART1_RX_MUX 6 +#define RTE_UART1_RX_PAD 0 //no pad +#endif +#if (UART1_RX_LOC == 7) +#define RTE_UART1_RX_PIN (UART1_RX_PIN + GPIO_MAX_PIN) +#define RTE_UART1_RX_MUX 6 +#define RTE_UART1_RX_PAD 26 +#endif +#if (UART1_RX_LOC == 8) +#define RTE_UART1_RX_PIN (UART1_RX_PIN + GPIO_MAX_PIN) +#define RTE_UART1_RX_MUX 6 +#define RTE_UART1_RX_PAD 30 +#endif +#if (UART1_RX_LOC == 9) +#define RTE_UART1_RX_PIN (UART1_RX_PIN + GPIO_MAX_PIN) +#define RTE_UART1_RX_MUX 9 +#define RTE_UART1_RX_PAD 32 +#endif +//Pintool data +#endif + +// UART1_CTS <0=>P0_11 <1=>P0_28 <2=>P0_51 <3=>P0_65 <4=>P0_71 <5=>P0_73 <6=>P0_32 +// CTS of UART1 +#ifndef UART1_CTS_LOC +#define RTE_UART1_CTS_PORT_ID 0 + +#if (RTE_UART1_CTS_PORT_ID == 0) +#define RTE_UART1_CTS_PORT HP +#define RTE_UART1_CTS_PIN 11 +#define RTE_UART1_CTS_MUX 6 +#define RTE_UART1_CTS_PAD 6 +#elif (RTE_UART1_CTS_PORT_ID == 1) +#define RTE_UART1_CTS_PORT HP +#define RTE_UART1_CTS_PIN 28 +#define RTE_UART1_CTS_MUX 6 +#define RTE_UART1_CTS_PAD 0 //no pad +#elif (RTE_UART1_CTS_PORT_ID == 2) +#define RTE_UART1_CTS_PORT HP +#define RTE_UART1_CTS_PIN 51 +#define RTE_UART1_CTS_MUX 9 +#define RTE_UART1_CTS_PAD 15 +#elif (RTE_UART1_CTS_PORT_ID == 3) +#define RTE_UART1_CTS_PORT HP +#define RTE_UART1_CTS_PIN 65 +#define RTE_UART1_CTS_MUX 9 +#define RTE_UART1_CTS_PAD 23 +#elif (RTE_UART1_CTS_PORT_ID == 4) +#define RTE_UART1_CTS_PORT HP +#define RTE_UART1_CTS_PIN 71 +#define RTE_UART1_CTS_MUX 6 +#define RTE_UART1_CTS_PAD 29 +#else +#error "Invalid UART1 RTE_UART1_CTS_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_UART1_CTS_PORT HP +#if (UART1_CTS_LOC == 10) +#define RTE_UART1_CTS_PIN UART1_CTS_PIN +#define RTE_UART1_CTS_MUX 6 +#define RTE_UART1_CTS_PAD 6 +#endif +#if (UART1_CTS_LOC == 11) +#define RTE_UART1_CTS_PIN UART1_CTS_PIN +#define RTE_UART1_CTS_MUX 6 +#define RTE_UART1_CTS_PAD 0 //no pad +#endif +#if (UART1_CTS_LOC == 12) +#define RTE_UART1_CTS_PIN UART1_CTS_PIN +#define RTE_UART1_CTS_MUX 9 +#define RTE_UART1_CTS_PAD 15 +#endif +#if (UART1_CTS_LOC == 13) +#define RTE_UART1_CTS_PIN (UART1_CTS_PIN + GPIO_MAX_PIN) +#define RTE_UART1_CTS_MUX 9 +#define RTE_UART1_CTS_PAD 23 +#endif +#if (UART1_CTS_LOC == 14) +#define RTE_UART1_CTS_PIN (UART1_CTS_PIN + GPIO_MAX_PIN) +#define RTE_UART1_CTS_MUX 6 +#define RTE_UART1_CTS_PAD 29 +#endif +#if (UART1_CTS_LOC == 15) +#define RTE_UART1_CTS_PIN (UART1_CTS_PIN + GPIO_MAX_PIN) +#define RTE_UART1_CTS_MUX 9 +#define RTE_UART1_CTS_PAD 31 +#endif +//Pintool data +#endif + +// UART1_RTS <0=>P0_10 <1=>P0_27 <2=>P0_50 <3=>P0_64 <4=>P0_70 <5=>P0_72 <6=>P0_31 +// RTS of UART1 +#ifndef UART1_RTS_LOC +#ifdef SLI_SI91X_MCU_CONFIG_RADIO_BOARD_BASE_VER +#define RTE_UART1_RTS_PORT_ID 0 +#else +#define RTE_UART1_RTS_PORT_ID 0 +#endif + +#if (RTE_UART1_RTS_PORT_ID == 0) +#define RTE_UART1_RTS_PORT HP +#define RTE_UART1_RTS_PIN 10 +#define RTE_UART1_RTS_MUX 6 +#define RTE_UART1_RTS_PAD 5 +#elif (RTE_UART1_RTS_PORT_ID == 1) +#define RTE_UART1_RTS_PORT HP +#define RTE_UART1_RTS_PIN 27 +#define RTE_UART1_RTS_MUX 6 +#define RTE_UART1_RTS_PAD 0 //no pad +#elif (RTE_UART1_RTS_PORT_ID == 2) +#define RTE_UART1_RTS_PORT HP +#define RTE_UART1_RTS_PIN 50 +#define RTE_UART1_RTS_MUX 9 +#define RTE_UART1_RTS_PAD 14 +#elif (RTE_UART1_RTS_PORT_ID == 3) +#define RTE_UART1_RTS_PORT HP +#define RTE_UART1_RTS_PIN 70 +#define RTE_UART1_RTS_MUX 6 +#define RTE_UART1_RTS_PAD 28 +#elif (RTE_UART1_RTS_PORT_ID == 4) +#define RTE_UART1_RTS_PORT HP +#define RTE_UART1_RTS_PIN 72 +#define RTE_UART1_RTS_MUX 9 +#define RTE_UART1_RTS_PAD 30 +#else +#error "Invalid UART1 RTE_UART1_RTS_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_UART1_RTS_PORT HP +#if (UART1_RTS_LOC == 16) +#define RTE_UART1_RTS_PIN UART1_RTS_PIN +#define RTE_UART1_RTS_MUX 6 +#define RTE_UART1_RTS_PAD 5 +#endif +#if (UART1_RTS_LOC == 17) +#define RTE_UART1_RTS_PIN UART1_RTS_PIN +#define RTE_UART1_RTS_MUX 6 +#define RTE_UART1_RTS_PAD 0 //no pad +#endif +#if (UART1_RTS_LOC == 18) +#define RTE_UART1_RTS_PIN UART1_RTS_PIN +#define RTE_UART1_RTS_MUX 9 +#define RTE_UART1_RTS_PAD 14 +#endif +#if (UART1_RTS_LOC == 19) +#define RTE_UART1_RTS_PIN (UART1_RTS_PIN + GPIO_MAX_PIN) +#define RTE_UART1_RTS_MUX 9 +#define RTE_UART1_RTS_PAD 22 +#endif +#if (UART1_RTS_LOC == 20) +#define RTE_UART1_RTS_PIN (UART1_RTS_PIN + GPIO_MAX_PIN) +#define RTE_UART1_RTS_MUX 6 +#define RTE_UART1_RTS_PAD 28 +#endif +#if (UART1_RTS_LOC == 21) +#define RTE_UART1_RTS_PIN (UART1_RTS_PIN + GPIO_MAX_PIN) +#define RTE_UART1_RTS_MUX 9 +#define RTE_UART1_RTS_PAD 30 +#endif +//Pintool data +#endif + +// + +// ULP_UART [Driver_ULP_UART] +// Configuration settings for Driver_ULP_UART in component ::CMSIS Driver:USART +#define RTE_ULP_UART 1 + +#define RTE_ULP_UART_CLK_SRC ULP_UART_REF_CLK +#define RTE_ULP_UART_CLK_DIV_FACT 0 +#define RTE_ULP_UART_FRAC_SEL USART_FRACTIONAL_DIVIDER + +#define RTE_ULP_UART_LOOPBACK 0 +#define RTE_ULP_UART_DMA_MODE1_EN 0 + +#define RTE_ULP_UART_TX_FIFO_THRESHOLD USART_TRIGGER_TX_EMPTY +#define RTE_ULP_UART_RX_FIFO_THRESHOLD USART_TRIGGER_RX_AEMPTY + +#define RTE_ULP_UART_DMA_TX_LEN_PER_DES 1024 +#define RTE_ULP_UART_DMA_RX_LEN_PER_DES 1024 + +#define RTE_ULPUART_CHNL_UDMA_TX_CH 1 + +#define RTE_ULPUART_CHNL_UDMA_RX_CH 0 + +/*ULPSS UART PINS*/ +// UART1_TX <0=>P0_3 <1=>P0_7 <2=>P0_11 +// TX of ULPSS UART +#ifndef ULP_UART_TX_LOC +#define RTE_ULP_UART_TX_PORT_ID 1 +#if (RTE_ULP_UART_TX_PORT_ID == 0) +#define RTE_ULP_UART_TX_PORT RTE_ULP_PORT +#define RTE_ULP_UART_TX_PIN (7 + GPIO_MAX_PIN) +#define RTE_ULP_UART_TX_MUX 3 +#define RTE_ULP_UART_TX_PAD 0 +#elif (RTE_ULP_UART_TX_PORT_ID == 1) +#define RTE_ULP_UART_TX_PORT RTE_ULP_PORT +#define RTE_ULP_UART_TX_PIN (11 + GPIO_MAX_PIN) +#define RTE_ULP_UART_TX_MUX 3 +#define RTE_ULP_UART_TX_PAD 0 +#elif (RTE_ULP_UART_TX_PORT_ID == 2) +#define RTE_ULP_UART_TX_PORT RTE_ULP_PORT +#define RTE_ULP_UART_TX_PIN 9 +#define RTE_ULP_UART_TX_MUX 3 +#define RTE_ULP_UART_TX_PAD 4 +#elif (RTE_ULP_UART_TX_PORT_ID == 3) +#define RTE_ULP_UART_TX_PORT RTE_ULP_PORT +#define RTE_ULP_UART_TX_PIN 15 +#define RTE_ULP_UART_TX_MUX 3 +#define RTE_ULP_UART_TX_PAD 8 +#elif (RTE_ULP_UART_TX_PORT_ID == 4) +#define RTE_ULP_UART_TX_PORT RTE_ULP_PORT +#define RTE_ULP_UART_TX_PIN 49 +#define RTE_ULP_UART_TX_MUX 3 +#define RTE_ULP_UART_TX_PAD 13 +#else +#error "Invalid ULPSS UART RTE_ULP_UART_TX_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_ULP_UART_TX_PORT RTE_ULP_PORT +#define RTE_ULP_UART_TX_MUX 3 +#if ((ULP_UART_TX_LOC == 0) || (ULP_UART_TX_LOC == 1)) +#define RTE_ULP_UART_TX_PIN (ULP_UART_TX_PIN + GPIO_MAX_PIN) +#define RTE_ULP_UART_TX_PAD 0 +#endif +#if (ULP_UART_TX_LOC == 11) +#define RTE_ULP_UART_TX_PIN ULP_UART_TX_PIN +#define RTE_ULP_UART_TX_PAD 4 +#endif +#if (ULP_UART_TX_LOC == 12) +#define RTE_ULP_UART_TX_PIN ULP_UART_TX_PIN +#define RTE_ULP_UART_TX_PAD 8 +#endif +#if (ULP_UART_TX_LOC == 13) +#define RTE_ULP_UART_TX_PIN ULP_UART_TX_PIN +#define RTE_ULP_UART_TX_PAD 13 +#endif +//Pintool data +#endif + +// UART1_RX <0=>P0_2 <1=>P0_6 <2=>P0_9 +// RX of ULPSS UART +#ifndef ULP_UART_RX_LOC +#define RTE_ULP_UART_RX_PORT_ID 2 +#if (RTE_ULP_UART_RX_PORT_ID == 0) +#define RTE_ULP_UART_RX_PORT RTE_ULP_PORT +#define RTE_ULP_UART_RX_PIN (2 + GPIO_MAX_PIN) +#define RTE_ULP_UART_RX_MUX 3 +#define RTE_ULP_UART_RX_PAD 0 +#elif (RTE_ULP_UART_RX_PORT_ID == 1) +#define RTE_ULP_UART_RX_PORT RTE_ULP_PORT +#define RTE_ULP_UART_RX_PIN (6 + GPIO_MAX_PIN) +#define RTE_ULP_UART_RX_MUX 3 +#define RTE_ULP_UART_RX_PAD 0 +#elif (RTE_ULP_UART_RX_PORT_ID == 2) +#define RTE_ULP_UART_RX_PORT RTE_ULP_PORT +#define RTE_ULP_UART_RX_PIN (9 + GPIO_MAX_PIN) +#define RTE_ULP_UART_RX_MUX 3 +#define RTE_ULP_UART_RX_PAD 0 +#elif (RTE_ULP_UART_RX_PORT_ID == 3) +#define RTE_ULP_UART_RX_PORT RTE_ULP_PORT +#define RTE_ULP_UART_RX_PIN 8 +#define RTE_ULP_UART_RX_MUX 3 +#define RTE_ULP_UART_RX_PAD 3 +#elif (RTE_ULP_UART_RX_PORT_ID == 4) +#define RTE_ULP_UART_RX_PORT RTE_ULP_PORT +#define RTE_ULP_UART_RX_PIN 12 +#define RTE_ULP_UART_RX_MUX 3 +#define RTE_ULP_UART_RX_PAD 7 +#elif (RTE_ULP_UART_RX_PORT_ID == 5) +#define RTE_ULP_UART_RX_PORT RTE_ULP_PORT +#define RTE_ULP_UART_RX_PIN 47 +#define RTE_ULP_UART_RX_MUX 3 +#define RTE_ULP_UART_RX_PAD 11 +#else +#error "Invalid ULPSS UART RTE_ULP_UART_RX_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_ULP_UART_RX_PORT RTE_ULP_PORT +#define RTE_ULP_UART_RX_MUX 3 +#if ((ULP_UART_RX_LOC == 2) || (ULP_UART_RX_LOC == 3) || (ULP_UART_RX_LOC == 10)) +#define RTE_ULP_UART_RX_PIN (ULP_UART_RX_PIN + GPIO_MAX_PIN) +#define RTE_ULP_UART_RX_PAD 0 +#endif +#if (ULP_UART_RX_LOC == 14) +#define RTE_ULP_UART_RX_PIN ULP_UART_RX_PIN +#define RTE_ULP_UART_RX_PAD 3 +#endif +#if (ULP_UART_RX_LOC == 15) +#define RTE_ULP_UART_RX_PIN ULP_UART_RX_PIN +#define RTE_ULP_UART_RX_PAD 7 +#endif +#if (ULP_UART_RX_LOC == 16) +#define RTE_ULP_UART_RX_PIN ULP_UART_RX_PIN +#define RTE_ULP_UART_RX_PAD 11 +#endif +//Pintool data +#endif + +// UART1_CTS <0=>P0_1 <1=>P0_5 <2=>P0_8 +// CTS of ULPSS UART +#ifndef ULP_UART_CTS_LOC +#define RTE_ULP_UART_CTS_PORT_ID 0 +#if (RTE_ULP_UART_CTS_PORT_ID == 0) +#define RTE_ULP_UART_CTS_PORT RTE_ULP_PORT +#define RTE_ULP_UART_CTS_PIN (1 + GPIO_MAX_PIN) +#define RTE_ULP_UART_CTS_MUX 3 +#define RTE_ULP_UART_CTS_PAD 0 +#elif (RTE_ULP_UART_CTS_PORT_ID == 1) +#define RTE_ULP_UART_CTS_PORT RTE_ULP_PORT +#define RTE_ULP_UART_CTS_PIN (8 + GPIO_MAX_PIN) +#define RTE_ULP_UART_CTS_MUX 3 +#define RTE_ULP_UART_CTS_PAD 0 +#elif (RTE_ULP_UART_CTS_PORT_ID == 2) +#define RTE_ULP_UART_CTS_PORT RTE_ULP_PORT +#define RTE_ULP_UART_CTS_PIN 7 +#define RTE_ULP_UART_CTS_MUX 3 +#define RTE_ULP_UART_CTS_PAD 2 +#elif (RTE_ULP_UART_CTS_PORT_ID == 3) +#define RTE_ULP_UART_CTS_PORT RTE_ULP_PORT +#define RTE_ULP_UART_CTS_PIN 11 +#define RTE_ULP_UART_CTS_MUX 3 +#define RTE_ULP_UART_CTS_PAD 6 +#elif (RTE_ULP_UART_CTS_PORT_ID == 4) +#define RTE_ULP_UART_CTS_PORT RTE_ULP_PORT +#define RTE_ULP_UART_CTS_PIN 46 +#define RTE_ULP_UART_CTS_MUX 3 +#define RTE_ULP_UART_CTS_PAD 10 +#else +#error "Invalid ULPSS UART RTE_ULP_UART_CTS_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_ULP_UART_CTS_PORT RTE_ULP_PORT +#define RTE_ULP_UART_CTS_MUX 3 +#if ((ULP_UART_CTS_LOC == 4) || (ULP_UART_CTS_LOC == 5) || (ULP_UART_CTS_LOC == 6)) +#define RTE_ULP_UART_CTS_PIN (ULP_UART_CTS_PIN + GPIO_MAX_PIN) +#define RTE_ULP_UART_CTS_PAD 0 +#endif +#if (ULP_UART_CTS_LOC == 17) +#define RTE_ULP_UART_CTS_PIN ULP_UART_CTS_PIN +#define RTE_ULP_UART_CTS_PAD 2 +#endif +#if (ULP_UART_CTS_LOC == 18) +#define RTE_ULP_UART_CTS_PIN ULP_UART_CTS_PIN +#define RTE_ULP_UART_CTS_PAD 6 +#endif +#if (ULP_UART_CTS_LOC == 19) +#define RTE_ULP_UART_CTS_PIN ULP_UART_CTS_PIN +#define RTE_ULP_UART_CTS_PAD 10 +#endif +//Pintool data +#endif + +// UART1_RTS <0=>P0_0 <1=>P0_4 <2=>P0_10 +// RTS of ULPSS UART +#ifndef ULP_UART_RTS_LOC +#define RTE_ULP_UART_RTS_PORT_ID 0 +#if (RTE_ULP_UART_RTS_PORT_ID == 0) +#define RTE_ULP_UART_RTS_PORT RTE_ULP_PORT +#define RTE_ULP_UART_RTS_PIN (10 + GPIO_MAX_PIN) +#define RTE_ULP_UART_RTS_MUX 3 +#define RTE_ULP_UART_RTS_PAD 0 +#elif (RTE_ULP_UART_RTS_PORT_ID == 1) +#define RTE_ULP_UART_RTS_PORT RTE_ULP_PORT +#define RTE_ULP_UART_RTS_PIN 6 +#define RTE_ULP_UART_RTS_MUX 3 +#define RTE_ULP_UART_RTS_PAD 1 +#elif (RTE_ULP_UART_RTS_PORT_ID == 2) +#define RTE_ULP_UART_RTS_PORT RTE_ULP_PORT +#define RTE_ULP_UART_RTS_PIN 10 +#define RTE_ULP_UART_RTS_MUX 3 +#define RTE_ULP_UART_RTS_PAD 5 +#elif (RTE_ULP_UART_RTS_PORT_ID == 3) +#define RTE_ULP_UART_RTS_PORT RTE_ULP_PORT +#define RTE_ULP_UART_RTS_PIN 48 +#define RTE_ULP_UART_RTS_MUX 3 +#define RTE_ULP_UART_RTS_PAD 12 +#else +#error "Invalid ULPSS UART RTE_ULP_UART_RTS_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_ULP_UART_RTS_PORT RTE_ULP_PORT +#define RTE_ULP_UART_RTS_MUX 3 +#if ((ULP_UART_RTS_LOC == 7) || (ULP_UART_RTS_LOC == 8) || (ULP_UART_RTS_LOC == 9)) +#define RTE_ULP_UART_RTS_PIN (ULP_UART_RTS_PIN + GPIO_MAX_PIN) +#define RTE_ULP_UART_RTS_PAD 0 +#endif +#if (ULP_UART_RTS_LOC == 20) +#define RTE_ULP_UART_RTS_PIN ULP_UART_RTS_PIN +#define RTE_ULP_UART_RTS_PAD 1 +#endif +#if (ULP_UART_RTS_LOC == 21) +#define RTE_ULP_UART_RTS_PIN ULP_UART_RTS_PIN +#define RTE_ULP_UART_RTS_PAD 5 +#endif +#if (ULP_UART_RTS_LOC == 22) +#define RTE_ULP_UART_RTS_PIN ULP_UART_RTS_PIN +#define RTE_ULP_UART_RTS_PAD 12 +#endif +//Pintool data +#endif + +// + +// SSI_MASTER (Serial Peripheral Interface 1) [Driver_SSI_MASTER] +// Configuration settings for Driver_SSI_MASTER in component ::CMSIS Driver:SPI +#define RTE_SSI_MASTER 1 + +// SSI_MASTER_MISO Pin <0=>GPIO_12 <1=>GPIO_27 <2=>GPIO_57 +#ifndef SSI_MASTER_DATA1_LOC +#ifdef SLI_SI91X_MCU_CONFIG_RADIO_BOARD_BASE_VER +#define RTE_SSI_MASTER_MISO_PORT_ID 1 +#else +#define RTE_SSI_MASTER_MISO_PORT_ID 0 +#endif + +#if (RTE_SSI_MASTER_MISO_PORT_ID == 0) +#define RTE_SSI_MASTER_MISO 1 +#define RTE_SSI_MASTER_MISO_PORT HP +#define RTE_SSI_MASTER_MISO_PIN 12 +#define RTE_SSI_MASTER_MISO_MODE EGPIO_PIN_MUX_MODE3 +#define RTE_SSI_MASTER_MISO_PADSEL 7 +#elif (RTE_SSI_MASTER_MISO_PORT_ID == 1) +#define RTE_SSI_MASTER_MISO 1 +#define RTE_SSI_MASTER_MISO_PORT HP +#define RTE_SSI_MASTER_MISO_PIN 27 +#define RTE_SSI_MASTER_MISO_MODE EGPIO_PIN_MUX_MODE3 +#define RTE_SSI_MASTER_MISO_PADSEL 0 //NO PAD +#elif (RTE_SSI_MASTER_MISO_PORT_ID == 2) +#define RTE_SSI_MASTER_MISO 1 +#define RTE_SSI_MASTER_MISO_PORT HP +#define RTE_SSI_MASTER_MISO_PIN 57 +#define RTE_SSI_MASTER_MISO_MODE EGPIO_PIN_MUX_MODE3 +#define RTE_SSI_MASTER_MISO_PADSEL 21 +#else +#error "Invalid SSI_MASTER_MISO Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_SSI_MASTER_MISO 1 +#define RTE_SSI_MASTER_MISO_PORT HP +#define RTE_SSI_MASTER_MISO_PIN SSI_MASTER_MISO_DATA1_PIN +#define RTE_SSI_MASTER_MISO_MODE EGPIO_PIN_MUX_MODE3 +#if (SSI_MASTER_DATA1_LOC == 3) +#define RTE_SSI_MASTER_MISO_PADSEL 7 +#endif +#if (SSI_MASTER_DATA1_LOC == 4) +#define RTE_SSI_MASTER_MISO_PADSEL 0 //NO PAD +#endif +#if (SSI_MASTER_DATA1_LOC == 5) +#define RTE_SSI_MASTER_MISO_PADSEL 21 +#endif +//Pintool data +#endif + +// SSI_MASTER_MOSI Pin <0=>GPIO_11 <1=>GPIO_26 <2=>GPIO_56 +#ifndef SSI_MASTER_DATA0_LOC +#define RTE_SSI_MASTER_MOSI_PORT_ID 1 + +#if (RTE_SSI_MASTER_MOSI_PORT_ID == 0) +#define RTE_SSI_MASTER_MOSI 1 +#define RTE_SSI_MASTER_MOSI_PORT HP +#define RTE_SSI_MASTER_MOSI_PIN 11 +#define RTE_SSI_MASTER_MOSI_MODE EGPIO_PIN_MUX_MODE3 +#define RTE_SSI_MASTER_MOSI_PADSEL 6 +#elif (RTE_SSI_MASTER_MOSI_PORT_ID == 1) +#define RTE_SSI_MASTER_MOSI 1 +#define RTE_SSI_MASTER_MOSI_PORT HP +#define RTE_SSI_MASTER_MOSI_PIN 26 +#define RTE_SSI_MASTER_MOSI_MODE EGPIO_PIN_MUX_MODE3 +#define RTE_SSI_MASTER_MOSI_PADSEL 0 //NO PAD +#elif (RTE_SSI_MASTER_MOSI_PORT_ID == 2) +#define RTE_SSI_MASTER_MOSI 1 +#define RTE_SSI_MASTER_MOSI_PORT HP +#define RTE_SSI_MASTER_MOSI_PIN 56 +#define RTE_SSI_MASTER_MOSI_MODE EGPIO_PIN_MUX_MODE3 +#define RTE_SSI_MASTER_MOSI_PADSEL 20 +#else +#error "Invalid SSI_MASTER_MOSI Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_SSI_MASTER_MOSI 1 +#define RTE_SSI_MASTER_MOSI_PORT HP +#define RTE_SSI_MASTER_MOSI_PIN SSI_MASTER_MOSI_DATA0_PIN +#define RTE_SSI_MASTER_MOSI_MODE EGPIO_PIN_MUX_MODE3 +#if (SSI_MASTER_DATA0_LOC == 0) +#define RTE_SSI_MASTER_MOSI_PADSEL 6 +#endif +#if (SSI_MASTER_DATA0_LOC == 1) +#define RTE_SSI_MASTER_MOSI_PADSEL 0 //NO PAD +#endif +#if (SSI_MASTER_DATA0_LOC == 2) +#define RTE_SSI_MASTER_MOSI_PADSEL 20 +#endif +//Pintool data +#endif + +// SSI_MASTER_DATA2 Pin <0=>GPIO_6 <1=>GPIO_29 <2=>GPIO_54 +#ifndef SSI_MASTER_DATA2_LOC +#define RTE_SSI_MASTER_DATA2_PORT_ID 1 + +#if (RTE_SSI_MASTER_DATA2_PORT_ID == 0) +#define RTE_SSI_MASTER_DATA2 1 +#define RTE_SSI_MASTER_DATA2_PORT HP +#define RTE_SSI_MASTER_DATA2_PIN 6 +#define RTE_SSI_MASTER_DATA2_MODE EGPIO_PIN_MUX_MODE3 +#define RTE_SSI_MASTER_DATA2_PADSEL 1 +#elif (RTE_SSI_MASTER_DATA2_PORT_ID == 1) +#define RTE_SSI_MASTER_DATA2 1 +#define RTE_SSI_MASTER_DATA2_PORT HP +#define RTE_SSI_MASTER_DATA2_PIN 29 +#define RTE_SSI_MASTER_DATA2_MODE EGPIO_PIN_MUX_MODE3 +#define RTE_SSI_MASTER_DATA2_PADSEL 0 //NO PAD +#elif (RTE_SSI_MASTER_DATA2_PORT_ID == 2) +#define RTE_SSI_MASTER_DATA2 1 +#define RTE_SSI_MASTER_DATA2_PORT HP +#define RTE_SSI_MASTER_DATA2_PIN 54 +#define RTE_SSI_MASTER_DATA2_MODE EGPIO_PIN_MUX_MODE3 +#define RTE_SSI_MASTER_DATA2_PADSEL 18 +#else +#error "Invalid SSI_MASTER_DATA2 Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_SSI_MASTER_DATA2 1 +#define RTE_SSI_MASTER_DATA2_PORT HP +#define RTE_SSI_MASTER_DATA2_PIN SSI_MASTER_DATA2_PIN +#define RTE_SSI_MASTER_DATA2_MODE EGPIO_PIN_MUX_MODE3 +#if (SSI_MASTER_DATA2_LOC == 16) +#define RTE_SSI_MASTER_DATA2_PADSEL 1 +#endif +#if (SSI_MASTER_DATA2_LOC == 17) +#define RTE_SSI_MASTER_DATA2_PADSEL 0 //NO PAD +#endif +#if (SSI_MASTER_DATA2_LOC == 18) +#define RTE_SSI_MASTER_DATA2_PADSEL 18 +#endif +//Pintool data +#endif + +// SSI_MASTER_DATA3 Pin <0=>GPIO_7 <1=>GPIO_30 <2=>GPIO_55 +#ifndef SSI_MASTER_DATA3_LOC +#define RTE_SSI_MASTER_DATA3_PORT_ID 1 + +#if (RTE_SSI_MASTER_DATA3_PORT_ID == 0) +#define RTE_SSI_MASTER_DATA3 1 +#define RTE_SSI_MASTER_DATA3_PORT HP +#define RTE_SSI_MASTER_DATA3_PIN 7 +#define RTE_SSI_MASTER_DATA3_MODE EGPIO_PIN_MUX_MODE3 +#define RTE_SSI_MASTER_DATA3_PADSEL 2 +#elif (RTE_SSI_MASTER_DATA3_PORT_ID == 1) +#define RTE_SSI_MASTER_DATA3 1 +#define RTE_SSI_MASTER_DATA3_PORT HP +#define RTE_SSI_MASTER_DATA3_PIN 30 +#define RTE_SSI_MASTER_DATA3_MODE EGPIO_PIN_MUX_MODE3 +#define RTE_SSI_MASTER_DATA3_PADSEL 0 //NO PAD +#elif (RTE_SSI_MASTER_DATA3_PORT_ID == 2) +#define RTE_SSI_MASTER_DATA3 1 +#define RTE_SSI_MASTER_DATA3_PORT HP +#define RTE_SSI_MASTER_DATA3_PIN 55 +#define RTE_SSI_MASTER_DATA3_MODE EGPIO_PIN_MUX_MODE3 +#define RTE_SSI_MASTER_DATA3_PADSEL 19 +#else +#error "Invalid SSI_MASTER_DATA3 Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_SSI_MASTER_DATA3 1 +#define RTE_SSI_MASTER_DATA3_PORT HP +#define RTE_SSI_MASTER_DATA3_PIN SSI_MASTER_DATA3_PIN +#define RTE_SSI_MASTER_DATA3_MODE EGPIO_PIN_MUX_MODE3 +#if (SSI_MASTER_DATA3_LOC == 19) +#define RTE_SSI_MASTER_DATA3_PADSEL 2 +#endif +#if (SSI_MASTER_DATA3_LOC == 20) +#define RTE_SSI_MASTER_DATA3_PADSEL 0 //NO PAD +#endif +#if (SSI_MASTER_DATA3_LOC == 21) +#define RTE_SSI_MASTER_DATA3_PADSEL 19 +#endif +//Pintool data +#endif + +// SSI_MASTER_SCK Pin <0=>GPIO_8 <1=>GPIO_25 <2=>GPIO_52 +#ifndef SSI_MASTER_SCK_LOC +#define RTE_SSI_MASTER_SCK_PORT_ID 1 + +#if (RTE_SSI_MASTER_SCK_PORT_ID == 0) +#define RTE_SSI_MASTER_SCK 1 +#define RTE_SSI_MASTER_SCK_PORT HP +#define RTE_SSI_MASTER_SCK_PIN 8 +#define RTE_SSI_MASTER_SCK_MODE EGPIO_PIN_MUX_MODE3 +#define RTE_SSI_MASTER_SCK_PADSEL 3 +#elif (RTE_SSI_MASTER_SCK_PORT_ID == 1) +#define RTE_SSI_MASTER_SCK 1 +#define RTE_SSI_MASTER_SCK_PORT HP +#define RTE_SSI_MASTER_SCK_PIN 25 +#define RTE_SSI_MASTER_SCK_MODE EGPIO_PIN_MUX_MODE3 +#define RTE_SSI_MASTER_SCK_PADSEL 0 //NO PAD +#elif (RTE_SSI_MASTER_SCK_PORT_ID == 2) +#define RTE_SSI_MASTER_SCK 1 +#define RTE_SSI_MASTER_SCK_PORT HP +#define RTE_SSI_MASTER_SCK_PIN 52 +#define RTE_SSI_MASTER_SCK_MODE EGPIO_PIN_MUX_MODE3 +#define RTE_SSI_MASTER_SCK_PADSEL 16 +#else +#error "Invalid SSI_MASTER_SCK Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_SSI_MASTER_SCK 1 +#define RTE_SSI_MASTER_SCK_PORT HP +#define RTE_SSI_MASTER_SCK_PIN SSI_MASTER_SCK__PIN +#define RTE_SSI_MASTER_SCK_MODE EGPIO_PIN_MUX_MODE3 +#if (SSI_MASTER_SCK_LOC == 6) +#define RTE_SSI_MASTER_SCK_PADSEL 3 +#endif +#if (SSI_MASTER_SCK_LOC == 7) +#define RTE_SSI_MASTER_SCK_PADSEL 0 //NO PAD +#endif +#if (SSI_MASTER_SCK_LOC == 8) +#define RTE_SSI_MASTER_SCK_PADSEL 16 +#endif +//Pintool data +#endif + +#define M4_SSI_CS0 1 +#define M4_SSI_CS1 1 +#define M4_SSI_CS2 1 +#define M4_SSI_CS3 1 + +// SSI_MASTER_CS Pin <0=>GPIO_9 <1=>GPIO_28 <2=>GPIO_53 <3=>GPIO_10 <4=>GPIO_15 <5=>GPIO_50 <6=>GPIO_51 +#ifndef SSI_MASTER_CS0_LOC +#define RTE_SSI_MASTER_CS0_PORT_ID 1 + +#if (RTE_SSI_MASTER_CS0_PORT_ID == 0) +#define RTE_SSI_MASTER_CS0 M4_SSI_CS0 +#define RTE_SSI_MASTER_CS0_PORT HP +#define RTE_SSI_MASTER_CS0_PIN 9 +#define RTE_SSI_MASTER_CS0_MODE EGPIO_PIN_MUX_MODE3 +#define RTE_SSI_MASTER_CS0_PADSEL 4 +#elif (RTE_SSI_MASTER_CS0_PORT_ID == 1) +#define RTE_SSI_MASTER_CS0 M4_SSI_CS0 +#define RTE_SSI_MASTER_CS0_PORT HP +#define RTE_SSI_MASTER_CS0_PIN 28 +#define RTE_SSI_MASTER_CS0_MODE EGPIO_PIN_MUX_MODE3 +#define RTE_SSI_MASTER_CS0_PADSEL 0 //NO PAD +#elif (RTE_SSI_MASTER_CS0_PORT_ID == 2) +#define RTE_SSI_MASTER_CS0 M4_SSI_CS0 +#define RTE_SSI_MASTER_CS0_PORT HP +#define RTE_SSI_MASTER_CS0_PIN 53 +#define RTE_SSI_MASTER_CS0_MODE EGPIO_PIN_MUX_MODE3 +#define RTE_SSI_MASTER_CS0_PADSEL 17 +#else +#error "Invalid SSI_MASTER_CS0 Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_SSI_MASTER_CS0 M4_SSI_CS0 +#define RTE_SSI_MASTER_CS0_PORT HP +#define RTE_SSI_MASTER_CS0_PIN SSI_MASTER_CS0__PIN +#define RTE_SSI_MASTER_CS0_MODE EGPIO_PIN_MUX_MODE3 +#if (SSI_MASTER_CS0_LOC == 9) +#define RTE_SSI_MASTER_CS0_PADSEL 4 +#endif +#if (SSI_MASTER_CS0_LOC == 10) +#define RTE_SSI_MASTER_CS0_PADSEL 0 //NO PAD +#endif +#if (SSI_MASTER_CS0_LOC == 11) +#define RTE_SSI_MASTER_CS0_PADSEL 17 +#endif +//Pintool data +#endif + +//CS1 +#ifndef SSI_MASTER_CS1_LOC +#define RTE_SSI_MASTER_CS1_PORT_ID 0 +#if (RTE_SSI_MASTER_CS1_PORT_ID == 0) +#define RTE_SSI_MASTER_CS1_PORT HP +#define RTE_SSI_MASTER_CS1_PIN 10 +#else +#error "Invalid SSI_MASTER_CS1 Pin Configuration!" +#endif +#else +#define RTE_SSI_MASTER_CS1_PORT HP +#define RTE_SSI_MASTER_CS1_PIN SSI_MASTER_CS1__PIN +#endif +#define RTE_SSI_MASTER_CS1 M4_SSI_CS1 +#define RTE_SSI_MASTER_CS1_MODE EGPIO_PIN_MUX_MODE3 +#define RTE_SSI_MASTER_CS1_PADSEL 5 + +//CS2 +#ifndef SSI_MASTER_CS2_LOC +#define RTE_SSI_MASTER_CS2_PORT_ID 1 +#if (RTE_SSI_MASTER_CS2_PORT_ID == 0) +#define RTE_SSI_MASTER_CS2 M4_SSI_CS2 +#define RTE_SSI_MASTER_CS2_PORT HP +#define RTE_SSI_MASTER_CS2_PIN 15 +#define RTE_SSI_MASTER_CS2_MODE EGPIO_PIN_MUX_MODE3 +#define RTE_SSI_MASTER_CS2_PADSEL 8 +#elif (RTE_SSI_MASTER_CS2_PORT_ID == 1) +#define RTE_SSI_MASTER_CS2 M4_SSI_CS2 +#define RTE_SSI_MASTER_CS2_PORT HP +#define RTE_SSI_MASTER_CS2_PIN 50 +#define RTE_SSI_MASTER_CS2_MODE EGPIO_PIN_MUX_MODE3 +#define RTE_SSI_MASTER_CS2_PADSEL 14 +#else +#error "Invalid SSI_MASTER_CS2 Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_SSI_MASTER_CS2 M4_SSI_CS2 +#define RTE_SSI_MASTER_CS2_PORT HP +#define RTE_SSI_MASTER_CS2_PIN SSI_MASTER_CS2__PIN +#define RTE_SSI_MASTER_CS2_MODE EGPIO_PIN_MUX_MODE3 +#if (SSI_MASTER_CS2_LOC == 13) +#define RTE_SSI_MASTER_CS2_PADSEL 8 +#endif +#if (SSI_MASTER_CS2_LOC == 14) +#define RTE_SSI_MASTER_CS2_PADSEL 14 +#endif +//Pintool data +#endif + +//CS3 +#ifndef SSI_MASTER_CS3_LOC +#define RTE_SSI_MASTER_CS3_PORT_ID 0 +#if (RTE_SSI_MASTER_CS3_PORT_ID == 0) +#define RTE_SSI_MASTER_CS3_PORT HP +#define RTE_SSI_MASTER_CS3_PIN 51 +#else +#error "Invalid SSI_MASTER_CS3 Pin Configuration!" +#endif +#else +#define RTE_SSI_MASTER_CS3_PORT HP +#define RTE_SSI_MASTER_CS3_PIN SSI_MASTER_CS3__PIN +#endif +#define RTE_SSI_MASTER_CS3 M4_SSI_CS3 +#define RTE_SSI_MASTER_CS3_MODE EGPIO_PIN_MUX_MODE3 +#define RTE_SSI_MASTER_CS3_PADSEL 15 + +// DMA Rx +// Channel <28=>28 +// Selects DMA Channel (only Channel 28 can be used) +// +#define RTE_SSI_MASTER_UDMA_RX_CH 28 + +// DMA Tx +// Channel <29=>29 +// Selects DMA Channel (only Channel 29 can be used) +// +#define RTE_SSI_MASTER_UDMA_TX_CH 29 +// + +// SSI_SLAVE (Serial Peripheral Interface 2) [Driver_SSI_SLAVE] +// Configuration settings for Driver_SSI_SLAVE in component ::CMSIS Driver:SPI +#define RTE_SSI_SLAVE 1 + +#define RTE_SSI_SLAVE_INPUT_CLOCK SSISLAVE_CLK + +// SSI_SLAVE_MISO Pin <0=>Not Used <1=>GPIO_11 <2=>GPIO_28 <3=>GPIO_49 <4=>GPIO_57 +#ifndef SSI_SLAVE_MISO_LOC +#define RTE_SSI_SLAVE_MISO_PORT_ID 2 + +#if (RTE_SSI_SLAVE_MISO_PORT_ID == 0) +#define RTE_SSI_SLAVE_MISO 0 +#elif (RTE_SSI_SLAVE_MISO_PORT_ID == 1) +#define RTE_SSI_SLAVE_MISO 1 +#define RTE_SSI_SLAVE_MISO_PORT HP +#define RTE_SSI_SLAVE_MISO_PIN 11 +#define RTE_SSI_SLAVE_MISO_MODE EGPIO_PIN_MUX_MODE8 +#define RTE_SSI_SLAVE_MISO_PADSEL 6 +#elif (RTE_SSI_SLAVE_MISO_PORT_ID == 2) +#define RTE_SSI_SLAVE_MISO 1 +#define RTE_SSI_SLAVE_MISO_PORT HP +#define RTE_SSI_SLAVE_MISO_PIN 28 +#define RTE_SSI_SLAVE_MISO_MODE EGPIO_PIN_MUX_MODE8 +#define RTE_SSI_SLAVE_MISO_PADSEL 0 //no pad +#elif (RTE_SSI_SLAVE_MISO_PORT_ID == 3) +#define RTE_SSI_SLAVE_MISO 1 +#define RTE_SSI_SLAVE_MISO_PORT HP +#define RTE_SSI_SLAVE_MISO_PIN 49 +#define RTE_SSI_SLAVE_MISO_MODE EGPIO_PIN_MUX_MODE8 +#define RTE_SSI_SLAVE_MISO_PADSEL 13 +#elif (RTE_SSI_SLAVE_MISO_PORT_ID == 4) +#define RTE_SSI_SLAVE_MISO 1 +#define RTE_SSI_SLAVE_MISO_PORT HP +#define RTE_SSI_SLAVE_MISO_PIN 57 +#define RTE_SSI_SLAVE_MISO_MODE EGPIO_PIN_MUX_MODE8 +#define RTE_SSI_SLAVE_MISO_PADSEL 21 +#else +#error "Invalid SSI_SLAVE_MISO Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_SSI_SLAVE_MISO 1 +#define RTE_SSI_SLAVE_MISO_PORT HP +#define RTE_SSI_SLAVE_MISO_PIN SSI_SLAVE_MISO__PIN +#define RTE_SSI_SLAVE_MISO_MODE EGPIO_PIN_MUX_MODE8 +#if (SSI_SLAVE_MISO_LOC == 5) +#define RTE_SSI_SLAVE_MISO_PADSEL 6 +#endif +#if (SSI_SLAVE_MISO_LOC == 6) +#define RTE_SSI_SLAVE_MISO_PADSEL 0 //no pad +#endif +#if (SSI_SLAVE_MISO_LOC == 7) +#define RTE_SSI_SLAVE_MISO_PADSEL 13 +#endif +#if (SSI_SLAVE_MISO_LOC == 8) +#define RTE_SSI_SLAVE_MISO_PADSEL 21 +#endif +//Pintool data +#endif + +// SSI_SLAVE_MOSI Pin <0=>Not Used <1=>GPIO_10 <2=>GPIO_27 <3=>GPIO_48 <4=>GPIO_56 +#ifndef SSI_SLAVE_MOSI_LOC +#ifdef SLI_SI91X_MCU_CONFIG_RADIO_BOARD_BASE_VER +#define RTE_SSI_SLAVE_MOSI_PORT_ID 2 +#else +#define RTE_SSI_SLAVE_MOSI_PORT_ID 1 +#endif + +#if (RTE_SSI_SLAVE_MOSI_PORT_ID == 0) +#define RTE_SSI_SLAVE_MOSI 0 +#elif (RTE_SSI_SLAVE_MOSI_PORT_ID == 1) +#define RTE_SSI_SLAVE_MOSI 1 +#define RTE_SSI_SLAVE_MOSI_PORT HP +#define RTE_SSI_SLAVE_MOSI_PIN 10 +#define RTE_SSI_SLAVE_MOSI_MODE EGPIO_PIN_MUX_MODE8 +#define RTE_SSI_SLAVE_MOSI_PADSEL 5 +#elif (RTE_SSI_SLAVE_MOSI_PORT_ID == 2) +#define RTE_SSI_SLAVE_MOSI 1 +#define RTE_SSI_SLAVE_MOSI_PORT HP +#define RTE_SSI_SLAVE_MOSI_PIN 27 +#define RTE_SSI_SLAVE_MOSI_MODE EGPIO_PIN_MUX_MODE8 +#define RTE_SSI_SLAVE_MOSI_PADSEL 0 //no pad +#elif (RTE_SSI_SLAVE_MOSI_PORT_ID == 3) +#define RTE_SSI_SLAVE_MOSI 1 +#define RTE_SSI_SLAVE_MOSI_PORT HP +#define RTE_SSI_SLAVE_MOSI_PIN 48 +#define RTE_SSI_SLAVE_MOSI_MODE EGPIO_PIN_MUX_MODE8 +#define RTE_SSI_SLAVE_MOSI_PADSEL 12 +#elif (RTE_SSI_SLAVE_MOSI_PORT_ID == 4) +#define RTE_SSI_SLAVE_MOSI 1 +#define RTE_SSI_SLAVE_MOSI_PORT HP +#define RTE_SSI_SLAVE_MOSI_PIN 56 +#define RTE_SSI_SLAVE_MOSI_MODE EGPIO_PIN_MUX_MODE8 +#define RTE_SSI_SLAVE_MOSI_PADSEL 20 +#else +#error "Invalid SSI_SLAVE_MOSI Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_SSI_SLAVE_MOSI 1 +#define RTE_SSI_SLAVE_MOSI_PORT HP +#define RTE_SSI_SLAVE_MOSI_PIN SSI_SLAVE_MOSI__PIN +#define RTE_SSI_SLAVE_MOSI_MODE EGPIO_PIN_MUX_MODE8 +#if (SSI_SLAVE_MOSI_LOC == 1) +#define RTE_SSI_SLAVE_MOSI_PADSEL 5 +#endif +#if (SSI_SLAVE_MOSI_LOC == 2) +#define RTE_SSI_SLAVE_MOSI_PADSEL 0 //no pad +#endif +#if (SSI_SLAVE_MOSI_LOC == 3) +#define RTE_SSI_SLAVE_MOSI_PADSEL 12 +#endif +#if (SSI_SLAVE_MOSI_LOC == 4) +#define RTE_SSI_SLAVE_MOSI_PADSEL 20 +#endif +//Pintool data +#endif + +// SSI_SLAVE_SCK Pin <0=>Not Used <1=>GPIO_8 <2=>GPIO_26 <3=>GPIO_47 <4=>GPIO_52 +#ifndef SSI_SLAVE_SCK_LOC +#define RTE_SSI_SLAVE_SCK_PORT_ID 2 + +#if (RTE_SSI_SLAVE_SCK_PORT_ID == 0) +#define RTE_SSI_SLAVE_SCK 0 +#elif (RTE_SSI_SLAVE_SCK_PORT_ID == 1) +#define RTE_SSI_SLAVE_SCK 1 +#define RTE_SSI_SLAVE_SCK_PORT HP +#define RTE_SSI_SLAVE_SCK_PIN 8 +#define RTE_SSI_SLAVE_SCK_MODE EGPIO_PIN_MUX_MODE8 +#define RTE_SSI_SLAVE_SCK_PADSEL 3 +#elif (RTE_SSI_SLAVE_SCK_PORT_ID == 2) +#define RTE_SSI_SLAVE_SCK 1 +#define RTE_SSI_SLAVE_SCK_PORT HP +#define RTE_SSI_SLAVE_SCK_PIN 26 +#define RTE_SSI_SLAVE_SCK_MODE EGPIO_PIN_MUX_MODE8 +#define RTE_SSI_SLAVE_SCK_PADSEL 0 //no pad +#elif (RTE_SSI_SLAVE_SCK_PORT_ID == 3) +#define RTE_SSI_SLAVE_SCK 1 +#define RTE_SSI_SLAVE_SCK_PORT HP +#define RTE_SSI_SLAVE_SCK_PIN 47 +#define RTE_SSI_SLAVE_SCK_MODE EGPIO_PIN_MUX_MODE8 +#define RTE_SSI_SLAVE_SCK_PADSEL 11 +#elif (RTE_SSI_SLAVE_SCK_PORT_ID == 4) +#define RTE_SSI_SLAVE_SCK 1 +#define RTE_SSI_SLAVE_SCK_PORT HP +#define RTE_SSI_SLAVE_SCK_PIN 52 +#define RTE_SSI_SLAVE_SCK_MODE EGPIO_PIN_MUX_MODE8 +#define RTE_SSI_SLAVE_SCK_PADSEL 16 +#else +#error "Invalid SSI_SLAVE_SCK Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_SSI_SLAVE_SCK 1 +#define RTE_SSI_SLAVE_SCK_PORT HP +#define RTE_SSI_SLAVE_SCK_PIN SSI_SLAVE_SCK__PIN +#define RTE_SSI_SLAVE_SCK_MODE EGPIO_PIN_MUX_MODE8 +#if (SSI_SLAVE_SCK_LOC == 9) +#define RTE_SSI_SLAVE_SCK_PADSEL 3 +#endif +#if (SSI_SLAVE_SCK_LOC == 10) +#define RTE_SSI_SLAVE_SCK_PADSEL 0 //no pad +#endif +#if (SSI_SLAVE_SCK_LOC == 11) +#define RTE_SSI_SLAVE_SCK_PADSEL 11 +#endif +#if (SSI_SLAVE_SCK_LOC == 12) +#define RTE_SSI_SLAVE_SCK_PADSEL 16 +#endif +//Pintool data +#endif + +// SSI_SLAVE_CS Pin <0=>Not Used <1=>GPIO_9 <2=>GPIO_25 <3=>GPIO_46 <4=>GPIO_53 +#ifndef SSI_SLAVE_CS0_LOC +#define RTE_SSI_SLAVE_CS_PORT_ID 1 + +#if (RTE_SSI_SLAVE_CS_PORT_ID == 0) +#define RTE_SSI_SLAVE_CS 0 +#elif (RTE_SSI_SLAVE_CS_PORT_ID == 1) +#define RTE_SSI_SLAVE_CS 1 +#define RTE_SSI_SLAVE_CS_PORT HP +#define RTE_SSI_SLAVE_CS_PIN 9 +#define RTE_SSI_SLAVE_CS_MODE EGPIO_PIN_MUX_MODE8 +#define RTE_SSI_SLAVE_CS_PADSEL 4 +#elif (RTE_SSI_SLAVE_CS_PORT_ID == 2) +#define RTE_SSI_SLAVE_CS 1 +#define RTE_SSI_SLAVE_CS_PORT HP +#define RTE_SSI_SLAVE_CS_PIN 25 +#define RTE_SSI_SLAVE_CS_MODE EGPIO_PIN_MUX_MODE8 +#define RTE_SSI_SLAVE_CS_PADSEL 0 //no pad +#elif (RTE_SSI_SLAVE_CS_PORT_ID == 3) +#define RTE_SSI_SLAVE_CS 1 +#define RTE_SSI_SLAVE_CS_PORT HP +#define RTE_SSI_SLAVE_CS_PIN 46 +#define RTE_SSI_SLAVE_CS_MODE EGPIO_PIN_MUX_MODE8 +#define RTE_SSI_SLAVE_CS_PADSEL 10 +#elif (RTE_SSI_SLAVE_CS_PORT_ID == 4) +#define RTE_SSI_SLAVE_CS 1 +#define RTE_SSI_SLAVE_CS_PORT HP +#define RTE_SSI_SLAVE_CS_PIN 53 +#define RTE_SSI_SLAVE_CS_MODE EGPIO_PIN_MUX_MODE8 +#define RTE_SSI_SLAVE_CS_PADSEL 17 +#else +#error "Invalid SSI_SLAVE_CS Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_SSI_SLAVE_CS 1 +#define RTE_SSI_SLAVE_CS_PORT HP +#define RTE_SSI_SLAVE_CS_PIN SSI_SLAVE_CS0__PIN +#define RTE_SSI_SLAVE_CS_MODE EGPIO_PIN_MUX_MODE8 +#if (SSI_SLAVE_CS0_LOC == 13) +#define RTE_SSI_SLAVE_CS_PADSEL 4 +#endif +#if (SSI_SLAVE_CS0_LOC == 14) +#define RTE_SSI_SLAVE_CS_PADSEL 0 //no pad +#endif +#if (SSI_SLAVE_CS0_LOC == 15) +#define RTE_SSI_SLAVE_CS_PADSEL 10 +#endif +#if (SSI_SLAVE_CS0_LOC == 16) +#define RTE_SSI_SLAVE_CS_PADSEL 17 +#endif +//Pintool data +#endif + +// DMA Rx +// Channel <22=>22 +// Selects DMA Channel (only Channel 22 can be used) +// +#define RTE_SSI_SLAVE_UDMA_RX_CH 22 +#define RTE_SSI_SLAVE_DMA_RX_LEN_PER_DES 1024 + +// DMA Tx +// Channel <23=>23 +// Selects DMA Channel (only Channel 23 can be used) +// +#define RTE_SSI_SLAVE_UDMA_TX_CH 23 +#define RTE_SSI_SLAVE_DMA_TX_LEN_PER_DES 1024 + +// + +// ULP SPI Peripheral (Serial Peripheral Interface 3) [Driver_SSI_ULP_MASTER] +// Configuration settings for Driver_SSI_ULP_MASTER in component ::CMSIS Driver:SPI +#define RTE_SSI_ULP_MASTER 1 + +// Enable multiple CSN lines +#define ULP_SSI_CS0 1 +#define ULP_SSI_CS1 0 +#define ULP_SSI_CS2 0 + +// SSI_ULP_MASTER_MISO Pin <0=>Not Used <1=>ULP_GPIO_2 <2=>ULP_GPIO_9 +#if !defined(ULP_SPI_MISO_LOC) && !defined(ULP_SSI_MISO_LOC) +#define RTE_SSI_ULP_MASTER_MISO_PORT_ID 0 +#if (RTE_SSI_ULP_MASTER_MISO_PORT_ID == 0) +#define RTE_SSI_ULP_MASTER_MISO 1 +#define RTE_SSI_ULP_MASTER_MISO_PORT RTE_ULP_PORT +#define RTE_SSI_ULP_MASTER_MISO_PIN (2 + GPIO_MAX_PIN) +#define RTE_SSI_ULP_MASTER_MISO_MODE 1 +#define RTE_SSI_ULP_MASTER_MISO_PADSEL 0 +#elif (RTE_SSI_ULP_MASTER_MISO_PORT_ID == 1) +#define RTE_SSI_ULP_MASTER_MISO 1 +#define RTE_SSI_ULP_MASTER_MISO_PORT RTE_ULP_PORT +#define RTE_SSI_ULP_MASTER_MISO_PIN (6 + GPIO_MAX_PIN) +#define RTE_SSI_ULP_MASTER_MISO_MODE 8 +#define RTE_SSI_ULP_MASTER_MISO_PADSEL 0 +#elif (RTE_SSI_ULP_MASTER_MISO_PORT_ID == 2) +#define RTE_SSI_ULP_MASTER_MISO 1 +#define RTE_SSI_ULP_MASTER_MISO_PORT RTE_ULP_PORT +#define RTE_SSI_ULP_MASTER_MISO_PIN (9 + GPIO_MAX_PIN) +#define RTE_SSI_ULP_MASTER_MISO_MODE 1 +#define RTE_SSI_ULP_MASTER_MISO_PADSEL 0 +#elif (RTE_SSI_ULP_MASTER_MISO_PORT_ID == 3) +#define RTE_SSI_ULP_MASTER_MISO 1 +#define RTE_SSI_ULP_MASTER_MISO_PORT RTE_ULP_PORT +#define RTE_SSI_ULP_MASTER_MISO_PIN 8 +#define RTE_SSI_ULP_MASTER_MISO_MODE 1 +#define RTE_SSI_ULP_MASTER_MISO_PADSEL 3 +#elif (RTE_SSI_ULP_MASTER_MISO_PORT_ID == 4) +#define RTE_SSI_ULP_MASTER_MISO 1 +#define RTE_SSI_ULP_MASTER_MISO_PORT RTE_ULP_PORT +#define RTE_SSI_ULP_MASTER_MISO_PIN 47 +#define RTE_SSI_ULP_MASTER_MISO_MODE 1 +#define RTE_SSI_ULP_MASTER_MISO_PADSEL 11 +#else +#error "Invalid SSI_ULP_MISO Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_SSI_ULP_MASTER_MISO 1 +#define RTE_SSI_ULP_MASTER_MISO_PORT RTE_ULP_PORT +#if (ULP_SSI_MISO_LOC == 3) +#define RTE_SSI_ULP_MASTER_MISO_PIN (ULP_SSI_MISO__PIN + GPIO_MAX_PIN) +#define RTE_SSI_ULP_MASTER_MISO_MODE 8 +#define RTE_SSI_ULP_MASTER_MISO_PADSEL 0 +#endif +#if (ULP_SSI_MISO_LOC == 4) +#define RTE_SSI_ULP_MASTER_MISO_PIN (ULP_SSI_MISO__PIN + GPIO_MAX_PIN) +#define RTE_SSI_ULP_MASTER_MISO_MODE 1 +#define RTE_SSI_ULP_MASTER_MISO_PADSEL 0 +#endif +#if (ULP_SSI_MISO_LOC == 12) +#define RTE_SSI_ULP_MASTER_MISO_PIN (ULP_SSI_MISO__PIN + GPIO_MAX_PIN) +#define RTE_SSI_ULP_MASTER_MISO_MODE 1 +#define RTE_SSI_ULP_MASTER_MISO_PADSEL 0 +#endif +#if (ULP_SSI_MISO_LOC == 15) +#define RTE_SSI_ULP_MASTER_MISO_PIN ULP_SSI_MISO__PIN +#define RTE_SSI_ULP_MASTER_MISO_MODE 1 +#define RTE_SSI_ULP_MASTER_MISO_PADSEL 3 +#endif +#if (ULP_SSI_MISO_LOC == 16) +#define RTE_SSI_ULP_MASTER_MISO_PIN ULP_SSI_MISO__PIN +#define RTE_SSI_ULP_MASTER_MISO_MODE 1 +#define RTE_SSI_ULP_MASTER_MISO_PADSEL 11 +#endif +//Pintool data +#endif + +// SSI_ULP_MASTER_MOSI Pin <0=>Not Used <1=>ULP_GPIO_1 <2=>ULP_GPIO_11 +#if !defined(ULP_SPI_MOSI_LOC) && !defined(ULP_SSI_MOSI_LOC) +#define RTE_SSI_ULP_MASTER_MOSI_PORT_ID 0 +#if (RTE_SSI_ULP_MASTER_MOSI_PORT_ID == 0) +#define RTE_SSI_ULP_MASTER_MOSI 1 +#define RTE_SSI_ULP_MASTER_MOSI_PORT RTE_ULP_PORT +#define RTE_SSI_ULP_MASTER_MOSI_PIN (1 + GPIO_MAX_PIN) +#define RTE_SSI_ULP_MASTER_MOSI_MODE 1 +#define RTE_SSI_ULP_MASTER_MOSI_PADSEL 0 +#elif (RTE_SSI_ULP_MASTER_MOSI_PORT_ID == 1) +#define RTE_SSI_ULP_MASTER_MOSI 1 +#define RTE_SSI_ULP_MASTER_MOSI_PORT RTE_ULP_PORT +#define RTE_SSI_ULP_MASTER_MOSI_PIN (5 + GPIO_MAX_PIN) +#define RTE_SSI_ULP_MASTER_MOSI_MODE 8 +#define RTE_SSI_ULP_MASTER_MOSI_PADSEL 0 +#elif (RTE_SSI_ULP_MASTER_MOSI_PORT_ID == 2) +#define RTE_SSI_ULP_MASTER_MOSI 1 +#define RTE_SSI_ULP_MASTER_MOSI_PORT RTE_ULP_PORT +#define RTE_SSI_ULP_MASTER_MOSI_PIN (11 + GPIO_MAX_PIN) +#define RTE_SSI_ULP_MASTER_MOSI_MODE 1 +#define RTE_SSI_ULP_MASTER_MOSI_PADSEL 0 +#elif (RTE_SSI_ULP_MASTER_MOSI_PORT_ID == 3) +#define RTE_SSI_ULP_MASTER_MOSI 1 +#define RTE_SSI_ULP_MASTER_MOSI_PORT RTE_ULP_PORT +#define RTE_SSI_ULP_MASTER_MOSI_PIN 7 +#define RTE_SSI_ULP_MASTER_MOSI_MODE 1 +#define RTE_SSI_ULP_MASTER_MOSI_PADSEL 2 +#elif (RTE_SSI_ULP_MASTER_MOSI_PORT_ID == 4) +#define RTE_SSI_ULP_MASTER_MOSI 1 +#define RTE_SSI_ULP_MASTER_MOSI_PORT RTE_ULP_PORT +#define RTE_SSI_ULP_MASTER_MOSI_PIN 49 +#define RTE_SSI_ULP_MASTER_MOSI_MODE 1 +#define RTE_SSI_ULP_MASTER_MOSI_PADSEL 13 +#else +#error "Invalid SSI_ULP_MOSI Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_SSI_ULP_MASTER_MOSI 1 +#define RTE_SSI_ULP_MASTER_MOSI_PORT RTE_ULP_PORT +#if (ULP_SSI_MOSI_LOC == 0) +#define RTE_SSI_ULP_MASTER_MOSI_PIN (ULP_SSI_MOSI__PIN + GPIO_MAX_PIN) +#define RTE_SSI_ULP_MASTER_MOSI_MODE 1 +#define RTE_SSI_ULP_MASTER_MOSI_PADSEL 0 +#endif +#if (ULP_SSI_MOSI_LOC == 1) +#define RTE_SSI_ULP_MASTER_MOSI_PIN (ULP_SSI_MOSI__PIN + GPIO_MAX_PIN) +#define RTE_SSI_ULP_MASTER_MOSI_MODE 8 +#define RTE_SSI_ULP_MASTER_MOSI_PADSEL 0 +#endif +#if (ULP_SSI_MOSI_LOC == 2) +#define RTE_SSI_ULP_MASTER_MOSI_PIN (ULP_SSI_MOSI__PIN + GPIO_MAX_PIN) +#define RTE_SSI_ULP_MASTER_MOSI_MODE 1 +#define RTE_SSI_ULP_MASTER_MOSI_PADSEL 0 +#endif +#if (ULP_SSI_MOSI_LOC == 13) +#define RTE_SSI_ULP_MASTER_MOSI_PIN ULP_SSI_MOSI__PIN +#define RTE_SSI_ULP_MASTER_MOSI_MODE 1 +#define RTE_SSI_ULP_MASTER_MOSI_PADSEL 2 +#endif +#if (ULP_SSI_MOSI_LOC == 14) +#define RTE_SSI_ULP_MASTER_MOSI_PIN ULP_SSI_MOSI__PIN +#define RTE_SSI_ULP_MASTER_MOSI_MODE 1 +#define RTE_SSI_ULP_MASTER_MOSI_PADSEL 13 +#endif +//Pintool data +#endif + +// SSI_ULP_MASTER_SCK Pin <0=>Not Used <1=>ULP_GPIO_0 <2=>ULP_GPIO_8 +#if !defined(ULP_SPI_SCK_LOC) && !defined(ULP_SSI_SCK_LOC) +#ifdef SLI_SI91X_MCU_CONFIG_RADIO_BOARD_BASE_VER +#define RTE_SSI_ULP_MASTER_SCK_PORT_ID 3 +#else +#define RTE_SSI_ULP_MASTER_SCK_PORT_ID 3 +#endif +#if (RTE_SSI_ULP_MASTER_SCK_PORT_ID == 0) +#define RTE_SSI_ULP_MASTER_SCK 0 +#elif (RTE_SSI_ULP_MASTER_SCK_PORT_ID == 1) +#define RTE_SSI_ULP_MASTER_SCK 1 +#define RTE_SSI_ULP_MASTER_SCK_PORT RTE_ULP_PORT +#define RTE_SSI_ULP_MASTER_SCK_PIN (0 + GPIO_MAX_PIN) +#define RTE_SSI_ULP_MASTER_SCK_MODE 1 +#define RTE_SSI_ULP_MASTER_SCK_PADSEL 0 +#elif (RTE_SSI_ULP_MASTER_SCK_PORT_ID == 2) +#define RTE_SSI_ULP_MASTER_SCK 1 +#define RTE_SSI_ULP_MASTER_SCK_PORT RTE_ULP_PORT +#define RTE_SSI_ULP_MASTER_SCK_PIN (4 + GPIO_MAX_PIN) +#define RTE_SSI_ULP_MASTER_SCK_MODE 8 +#define RTE_SSI_ULP_MASTER_SCK_PADSEL 0 +#elif (RTE_SSI_ULP_MASTER_SCK_PORT_ID == 3) +#define RTE_SSI_ULP_MASTER_SCK 1 +#define RTE_SSI_ULP_MASTER_SCK_PORT RTE_ULP_PORT +#define RTE_SSI_ULP_MASTER_SCK_PIN (8 + GPIO_MAX_PIN) +#define RTE_SSI_ULP_MASTER_SCK_MODE 1 +#define RTE_SSI_ULP_MASTER_SCK_PADSEL 0 +#elif (RTE_SSI_ULP_MASTER_SCK_PORT_ID == 4) +#define RTE_SSI_ULP_MASTER_SCK 1 +#define RTE_SSI_ULP_MASTER_SCK_PORT RTE_ULP_PORT +#define RTE_SSI_ULP_MASTER_SCK_PIN 6 +#define RTE_SSI_ULP_MASTER_SCK_MODE 1 +#define RTE_SSI_ULP_MASTER_SCK_PADSEL 1 +#elif (RTE_SSI_ULP_MASTER_SCK_PORT_ID == 5) +#define RTE_SSI_ULP_MASTER_SCK 1 +#define RTE_SSI_ULP_MASTER_SCK_PORT RTE_ULP_PORT +#define RTE_SSI_ULP_MASTER_SCK_PIN 46 +#define RTE_SSI_ULP_MASTER_SCK_MODE 1 +#define RTE_SSI_ULP_MASTER_SCK_PADSEL 10 +#else +#error "Invalid SSI_ULP_SCK Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_SSI_ULP_MASTER_SCK 1 +#define RTE_SSI_ULP_MASTER_SCK_PORT RTE_ULP_PORT +#if (ULP_SSI_SCK_LOC == 5) +#define RTE_SSI_ULP_MASTER_SCK_PIN (ULP_SSI_SCK__PIN + GPIO_MAX_PIN) +#define RTE_SSI_ULP_MASTER_SCK_MODE 1 +#define RTE_SSI_ULP_MASTER_SCK_PADSEL 0 +#endif +#if (ULP_SSI_SCK_LOC == 6) +#define RTE_SSI_ULP_MASTER_SCK_PIN (ULP_SSI_SCK__PIN + GPIO_MAX_PIN) +#define RTE_SSI_ULP_MASTER_SCK_MODE 8 +#define RTE_SSI_ULP_MASTER_SCK_PADSEL 0 +#endif +#if (ULP_SSI_SCK_LOC == 7) +#define RTE_SSI_ULP_MASTER_SCK_PIN (ULP_SSI_SCK__PIN + GPIO_MAX_PIN) +#define RTE_SSI_ULP_MASTER_SCK_MODE 1 +#define RTE_SSI_ULP_MASTER_SCK_PADSEL 0 +#endif +#if (ULP_SSI_SCK_LOC == 17) +#define RTE_SSI_ULP_MASTER_SCK_PIN ULP_SSI_SCK__PIN +#define RTE_SSI_ULP_MASTER_SCK_MODE 1 +#define RTE_SSI_ULP_MASTER_SCK_PADSEL 1 +#endif +#if (ULP_SSI_SCK_LOC == 18) +#define RTE_SSI_ULP_MASTER_SCK_PIN ULP_SSI_SCK__PIN +#define RTE_SSI_ULP_MASTER_SCK_MODE 1 +#define RTE_SSI_ULP_MASTER_SCK_PADSEL 10 +#endif +//Pintool data +#endif + +// CS0 +#if !defined(ULP_SPI_CS0_LOC) && !defined(ULP_SSI_CS0_LOC) +#define RTE_SSI_ULP_MASTER_CS0_PORT_ID 2 +#if (RTE_SSI_ULP_MASTER_CS0_PORT_ID == 0) +#define RTE_SSI_ULP_MASTER_CS0 ULP_SSI_CS0 +#define RTE_SSI_ULP_MASTER_CS0_PORT RTE_ULP_PORT +#define RTE_SSI_ULP_MASTER_CS0_PIN (3 + GPIO_MAX_PIN) +#define RTE_SSI_ULP_MASTER_CS0_MODE 1 +#define RTE_SSI_ULP_MASTER_CS0_PADSEL 0 +#elif (RTE_SSI_ULP_MASTER_CS0_PORT_ID == 1) +#define RTE_SSI_ULP_MASTER_CS0 ULP_SSI_CS0 +#define RTE_SSI_ULP_MASTER_CS0_PORT RTE_ULP_PORT +#define RTE_SSI_ULP_MASTER_CS0_PIN (7 + GPIO_MAX_PIN) +#define RTE_SSI_ULP_MASTER_CS0_MODE 8 +#define RTE_SSI_ULP_MASTER_CS0_PADSEL 0 +#elif (RTE_SSI_ULP_MASTER_CS0_PORT_ID == 2) +#define RTE_SSI_ULP_MASTER_CS0 ULP_SSI_CS0 +#define RTE_SSI_ULP_MASTER_CS0_PORT RTE_ULP_PORT +#define RTE_SSI_ULP_MASTER_CS0_PIN (10 + GPIO_MAX_PIN) +#define RTE_SSI_ULP_MASTER_CS0_MODE 1 +#define RTE_SSI_ULP_MASTER_CS0_PADSEL 0 +#elif (RTE_SSI_ULP_MASTER_CS0_PORT_ID == 3) +#define RTE_SSI_ULP_MASTER_CS0 ULP_SSI_CS0 +#define RTE_SSI_ULP_MASTER_CS0_PORT RTE_ULP_PORT +#define RTE_SSI_ULP_MASTER_CS0_PIN 48 +#define RTE_SSI_ULP_MASTER_CS0_MODE 1 +#define RTE_SSI_ULP_MASTER_CS0_PADSEL 12 +#else +#error "Change RTE_SSI_ULP_MASTER_CS_PORT_ID other than '1' or'3' as per PACKAGE_TYPE" +#endif +#else +//Pintool data +#define RTE_SSI_ULP_MASTER_CS0 1 +#define RTE_SSI_ULP_MASTER_CS0_PORT RTE_ULP_PORT +#if (ULP_SSI_CS0_LOC == 8) +#define RTE_SSI_ULP_MASTER_CS0_PIN (ULP_SSI_CS0__PIN + GPIO_MAX_PIN) +#define RTE_SSI_ULP_MASTER_CS0_MODE 8 +#define RTE_SSI_ULP_MASTER_CS0_PADSEL 0 +#endif +#if (ULP_SSI_CS0_LOC == 9) +#define RTE_SSI_ULP_MASTER_CS0_PIN (ULP_SSI_CS0__PIN + GPIO_MAX_PIN) +#define RTE_SSI_ULP_MASTER_CS0_MODE 1 +#define RTE_SSI_ULP_MASTER_CS0_PADSEL 0 +#endif +#if (ULP_SSI_CS0_LOC == 19) +#define RTE_SSI_ULP_MASTER_CS0_PIN ULP_SSI_CS0__PIN +#define RTE_SSI_ULP_MASTER_CS0_MODE 1 +#define RTE_SSI_ULP_MASTER_CS0_PADSEL 12 +#endif +//Pintool data +#endif + +// CS1 +#if !defined(ULP_SPI_CS1_LOC) && !defined(ULP_SSI_CS1_LOC) +#define RTE_SSI_ULP_MASTER_CS1_PORT_ID 1 +#if (RTE_SSI_ULP_MASTER_CS1_PORT_ID == 0) +#define RTE_SSI_ULP_MASTER_CS1 ULP_SSI_CS1 +#define RTE_SSI_ULP_MASTER_CS1_PORT RTE_ULP_PORT +#define RTE_SSI_ULP_MASTER_CS1_PIN (4 + GPIO_MAX_PIN) +#define RTE_SSI_ULP_MASTER_CS1_PADSEL 0 +#elif (RTE_SSI_ULP_MASTER_CS1_PORT_ID == 1) +#define RTE_SSI_ULP_MASTER_CS1 ULP_SSI_CS1 +#define RTE_SSI_ULP_MASTER_CS1_PORT RTE_ULP_PORT +#define RTE_SSI_ULP_MASTER_CS1_PIN 10 +#define RTE_SSI_ULP_MASTER_CS1_PADSEL 5 +#else +#error "Invalid SSI_ULP_CS1 Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_SSI_ULP_MASTER_CS1_PORT RTE_ULP_PORT +#define RTE_SSI_ULP_MASTER_CS1 1 +#if (ULP_SSI_CS1_LOC == 10) +#define RTE_SSI_ULP_MASTER_CS1_PIN (ULP_SSI_CS1__PIN + GPIO_MAX_PIN) +#define RTE_SSI_ULP_MASTER_CS1_PADSEL 0 +#endif +#if (ULP_SSI_CS1_LOC == 20) +#define RTE_SSI_ULP_MASTER_CS1_PIN ULP_SSI_CS1__PIN +#define RTE_SSI_ULP_MASTER_CS1_PADSEL 5 +#endif +//Pintool data +#endif +#define RTE_SSI_ULP_MASTER_CS1_MODE 1 + +// CS2 +#if !defined(ULP_SPI_CS2_LOC) && !defined(ULP_SSI_CS2_LOC) +#define RTE_SSI_ULP_MASTER_CS2_PORT_ID 0 +#if (RTE_SSI_ULP_MASTER_CS2_PORT_ID == 0) +#define RTE_SSI_ULP_MASTER_CS2 ULP_SSI_CS2 +#define RTE_SSI_ULP_MASTER_CS2_PORT RTE_ULP_PORT +#define RTE_SSI_ULP_MASTER_CS2_PIN (6 + GPIO_MAX_PIN) +#define RTE_SSI_ULP_MASTER_CS2_PADSEL 0 +#elif (RTE_SSI_ULP_MASTER_CS1_PORT_ID == 1) +#define RTE_SSI_ULP_MASTER_CS2 ULP_SSI_CS2 +#define RTE_SSI_ULP_MASTER_CS2_PORT RTE_ULP_PORT +#define RTE_SSI_ULP_MASTER_CS2_PIN 12 +#define RTE_SSI_ULP_MASTER_CS2_PADSEL 7 +#else +#error "Invalid SSI_ULP_CS2 Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_SSI_ULP_MASTER_CS2_PORT RTE_ULP_PORT +#define RTE_SSI_ULP_MASTER_CS2 1 +#if (ULP_SSI_CS2_LOC == 11) +#define RTE_SSI_ULP_MASTER_CS2_PIN (ULP_SSI_CS2__PIN + GPIO_MAX_PIN) +#define RTE_SSI_ULP_MASTER_CS2_PADSEL 0 +#endif +#if (ULP_SSI_CS2_LOC == 21) +#define RTE_SSI_ULP_MASTER_CS2_PIN ULP_SSI_CS2__PIN +#define RTE_SSI_ULP_MASTER_CS2_PADSEL 7 +#endif +//Pintool data +#endif +#define RTE_SSI_ULP_MASTER_CS2_MODE 1 + +// DMA Rx +// Channel <2=>2 +// Selects DMA Channel (only Channel 2 can be used) +// +#define RTE_SSI_ULP_MASTER_UDMA_RX_CH 2 +#define RTE_SSI_ULP_MASTER_DMA_RX_LEN_PER_DES 96 + +// DMA Tx +// Channel <3=>3 +// Selects DMA Channel (only Channel 3 can be used) +// +#define RTE_SSI_ULP_MASTER_UDMA_TX_CH 3 +#define RTE_SSI_ULP_MASTER_DMA_TX_LEN_PER_DES 96 + +// +/*=================================================================== + UDMA Defines +====================================================================*/ +// UDMA [Driver_UDMA] +#define DESC_MAX_LEN 0x400 +#define RTE_UDMA0 1 +#define UDMA0_IRQHandler IRQ033_Handler +#define CHNL_MASK_REQ0 0 +#define CHNL_PRIORITY0 0 +#define DMA_PERI_ACK0 0 +#define BURST_REQ0_EN 1 +#define UDMA0_CHNL_PRIO_LVL 1 +#define UDMA0_SRAM_BASE 0x1FC00 + +#define RTE_UDMA1 1 +#define UDMA1_IRQHandler IRQ010_Handler +#define CHNL_MASK_REQ1 0 +#define CHNL_PRIORITY1 0 +#define BURST_REQ1_EN 1 +#define CHNL_HIGH_PRIO_EN1 1 +#define UDMA1_CHNL_PRIO_LVL 1 +#define ULP_SRAM_START_ADDR 0x24060000 +#define ULP_SRAM_END_ADDR 0x24063E00 +// RTE_UDMA1_BASE_MEM <0=>PS2 <1=>PS4 +#define RTE_UDMA1_BASE_MEM 0 +#if (RTE_UDMA1_BASE_MEM == 0) +#define UDMA1_SRAM_BASE 0x24061C00 +#elif (RTE_UDMA1_BASE_MEM == 1) +#define UDMA1_SRAM_BASE 0x1CC00 +#else +#error "Invalid UDMA1 Control Base Address!" +#endif +// + +// I2S0 [Driver_I2S0] +// Configuration settings for Driver_I2S0 in component ::CMSIS Driver:I2S + +#define RTE_I2S0 1 +#define I2S0_IRQHandler IRQ064_Handler +/*I2S0 PINS*/ + +// I2S0_SCLK <0=>P0_8 <1=>P0_25 <2=>P0_46 <3=>P0_52 +// SCLK of I2S0 +#ifndef I2S0_SCLK_LOC +#define RTE_I2S0_SCLK_PORT_ID 1 + +#if (RTE_I2S0_SCLK_PORT_ID == 0) +#define RTE_I2S0_SCLK_PORT HP +#define RTE_I2S0_SCLK_PIN 8 +#define RTE_I2S0_SCLK_MUX 7 +#define RTE_I2S0_SCLK_PAD 3 +#elif (RTE_I2S0_SCLK_PORT_ID == 1) +#define RTE_I2S0_SCLK_PORT HP +#define RTE_I2S0_SCLK_PIN 25 +#define RTE_I2S0_SCLK_MUX 7 +#define RTE_I2S0_SCLK_PAD 0 //no pad +#elif (RTE_I2S0_SCLK_PORT_ID == 2) +#define RTE_I2S0_SCLK_PORT HP +#define RTE_I2S0_SCLK_PIN 46 +#define RTE_I2S0_SCLK_MUX 7 +#define RTE_I2S0_SCLK_PAD 10 +#elif (RTE_I2S0_SCLK_PORT_ID == 3) +#define RTE_I2S0_SCLK_PORT HP +#define RTE_I2S0_SCLK_PIN 52 +#define RTE_I2S0_SCLK_MUX 7 +#define RTE_I2S0_SCLK_PAD 16 +#else +#error "Invalid I2S0 RTE_I2S0_SCLK Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_I2S0_SCLK_PORT HP +#define RTE_I2S0_SCLK_PIN I2S0_SCLK_PIN +#define RTE_I2S0_SCLK_MUX 7 +#if (I2S0_SCLK_LOC == 0) +#define RTE_I2S0_SCLK_PAD 3 +#endif +#if (I2S0_SCLK_LOC == 1) +#define RTE_I2S0_SCLK_PAD 0 //no pad +#endif +#if (I2S0_SCLK_LOC == 2) +#define RTE_I2S0_SCLK_PAD 10 +#endif +#if (I2S0_SCLK_LOC == 3) +#define RTE_I2S0_SCLK_PAD 16 +#endif +//Pintool data +#endif + +// I2S0_WSCLK <0=>P0_9 <1=>P0_26 <2=>P0_47 <3=>P0_53 +// WSCLK for I2S0 +#ifndef I2S0_WSCLK_LOC +#define RTE_I2S0_WSCLK_PORT_ID 1 + +#if (RTE_I2S0_WSCLK_PORT_ID == 0) +#define RTE_I2S0_WSCLK_PORT HP +#define RTE_I2S0_WSCLK_PIN 9 +#define RTE_I2S0_WSCLK_MUX 7 +#define RTE_I2S0_WSCLK_PAD 4 +#elif (RTE_I2S0_WSCLK_PORT_ID == 1) +#define RTE_I2S0_WSCLK_PORT HP +#define RTE_I2S0_WSCLK_PIN 26 +#define RTE_I2S0_WSCLK_MUX 7 +#define RTE_I2S0_WSCLK_PAD 0 //no pad +#elif (RTE_I2S0_WSCLK_PORT_ID == 2) +#define RTE_I2S0_WSCLK_PORT HP +#define RTE_I2S0_WSCLK_PIN 47 +#define RTE_I2S0_WSCLK_MUX 7 +#define RTE_I2S0_WSCLK_PAD 11 +#elif (RTE_I2S0_WSCLK_PORT_ID == 3) +#define RTE_I2S0_WSCLK_PORT HP +#define RTE_I2S0_WSCLK_PIN 53 +#define RTE_I2S0_WSCLK_MUX 7 +#define RTE_I2S0_WSCLK_PAD 17 +#else +#error "Invalid I2S0 RTE_I2S0_WSCLK Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_I2S0_WSCLK_PORT HP +#define RTE_I2S0_WSCLK_PIN I2S0_WSCLK_PIN +#define RTE_I2S0_WSCLK_MUX 7 +#if (I2S0_WSCLK_LOC == 4) +#define RTE_I2S0_WSCLK_PAD 4 +#endif +#if (I2S0_WSCLK_LOC == 5) +#define RTE_I2S0_WSCLK_PAD 0 +#endif +#if (I2S0_WSCLK_LOC == 6) +#define RTE_I2S0_WSCLK_PAD 11 +#endif +#if (I2S0_WSCLK_LOC == 7) +#define RTE_I2S0_WSCLK_PAD 17 +#endif +//Pintool data +#endif + +// I2S0_DOUT0 <0=>P0_11 <1=>P0_28 <2=>P0_49 <3=>P0_57 +// DOUT0 for I2S0 +#ifndef I2S0_DOUT0_LOC +#define RTE_I2S0_DOUT0_PORT_ID 1 + +#if (RTE_I2S0_DOUT0_PORT_ID == 0) +#define RTE_I2S0_DOUT0_PORT HP +#define RTE_I2S0_DOUT0_PIN 11 +#define RTE_I2S0_DOUT0_MUX 7 +#define RTE_I2S0_DOUT0_PAD 6 +#elif (RTE_I2S0_DOUT0_PORT_ID == 1) +#define RTE_I2S0_DOUT0_PORT HP +#define RTE_I2S0_DOUT0_PIN 28 +#define RTE_I2S0_DOUT0_MUX 7 +#define RTE_I2S0_DOUT0_PAD 0 // no pad +#elif (RTE_I2S0_DOUT0_PORT_ID == 2) +#define RTE_I2S0_DOUT0_PORT HP +#define RTE_I2S0_DOUT0_PIN 49 +#define RTE_I2S0_DOUT0_MUX 7 +#define RTE_I2S0_DOUT0_PAD 13 +#elif (RTE_I2S0_DOUT0_PORT_ID == 3) +#define RTE_I2S0_DOUT0_PORT HP +#define RTE_I2S0_DOUT0_PIN 57 +#define RTE_I2S0_DOUT0_MUX 7 +#define RTE_I2S0_DOUT0_PAD 21 +#else +#error "Invalid I2S0 RTE_I2S0_DOUT0 Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_I2S0_DOUT0_PORT HP +#define RTE_I2S0_DOUT0_PIN I2S0_DOUT0_PIN +#define RTE_I2S0_DOUT0_MUX 7 +#if (I2S0_DOUT0_LOC == 8) +#define RTE_I2S0_DOUT0_PAD 6 +#endif +#if (I2S0_DOUT0_LOC == 9) +#define RTE_I2S0_DOUT0_PAD 0 +#endif +#if (I2S0_DOUT0_LOC == 10) +#define RTE_I2S0_DOUT0_PAD 13 +#endif +#if (I2S0_DOUT0_LOC == 11) +#define RTE_I2S0_DOUT0_PAD 21 +#endif +//Pintool data +#endif + +// I2S0_DIN0 <0=>P0_10 <1=>P0_27 <2=>P0_48 <3=>P0_56 +// DIN0 for I2S0 +#ifndef I2S0_DIN0_LOC +#define RTE_I2S0_DIN0_PORT_ID 1 + +#if (RTE_I2S0_DIN0_PORT_ID == 0) +#define RTE_I2S0_DIN0_PORT HP +#define RTE_I2S0_DIN0_PIN 10 +#define RTE_I2S0_DIN0_MUX 7 +#define RTE_I2S0_DIN0_PAD 5 +#elif (RTE_I2S0_DIN0_PORT_ID == 1) +#define RTE_I2S0_DIN0_PORT HP +#define RTE_I2S0_DIN0_PIN 27 +#define RTE_I2S0_DIN0_MUX 7 +#define RTE_I2S0_DIN0_PAD 0 // no pad +#elif (RTE_I2S0_DIN0_PORT_ID == 2) +#define RTE_I2S0_DIN0_PORT HP +#define RTE_I2S0_DIN0_PIN 48 +#define RTE_I2S0_DIN0_MUX 7 +#define RTE_I2S0_DIN0_PAD 12 +#elif (RTE_I2S0_DIN0_PORT_ID == 3) +#define RTE_I2S0_DIN0_PORT HP +#define RTE_I2S0_DIN0_PIN 56 +#define RTE_I2S0_DIN0_MUX 7 +#define RTE_I2S0_DIN0_PAD 20 +#else +#error "Invalid I2S0 RTE_I2S0_DIN0 Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_I2S0_DIN0_PORT HP +#define RTE_I2S0_DIN0_PIN I2S0_DIN0_PIN +#define RTE_I2S0_DIN0_MUX 7 +#if (I2S0_DIN0_LOC == 12) +#define RTE_I2S0_DIN0_PAD 5 +#endif +#if (I2S0_DIN0_LOC == 13) +#define RTE_I2S0_DIN0_PAD 0 +#endif +#if (I2S0_DIN0_LOC == 14) +#define RTE_I2S0_DIN0_PAD 12 +#endif +#if (I2S0_DIN0_LOC == 15) +#define RTE_I2S0_DIN0_PAD 20 +#endif +//Pintool data +#endif + +// I2S0_DOUT1 <0=>P0_7 <1=>P0_30 <2=>P0_51 <3=>P0_55 +// DOUT1 for I2S0 +#ifndef I2S0_DOUT1_LOC +#ifdef SLI_SI91X_MCU_CONFIG_RADIO_BOARD_BASE_VER +#define RTE_I2S0_DOUT1_PORT_ID 1 +#else +#define RTE_I2S0_DOUT1_PORT_ID 0 +#endif + +#if (RTE_I2S0_DOUT1_PORT_ID == 0) +#define RTE_I2S0_DOUT1_PORT HP +#define RTE_I2S0_DOUT1_PIN 7 +#define RTE_I2S0_DOUT1_MUX 7 +#define RTE_I2S0_DOUT1_PAD 2 +#elif (RTE_I2S0_DOUT1_PORT_ID == 1) +#define RTE_I2S0_DOUT1_PORT HP +#define RTE_I2S0_DOUT1_PIN 30 +#define RTE_I2S0_DOUT1_MUX 7 +#define RTE_I2S0_DOUT1_PAD 0 //no pad +#elif (RTE_I2S0_DOUT1_PORT_ID == 2) +#define RTE_I2S0_DOUT1_PORT HP +#define RTE_I2S0_DOUT1_PIN 51 +#define RTE_I2S0_DOUT1_MUX 7 +#define RTE_I2S0_DOUT1_PAD 15 +#elif (RTE_I2S0_DOUT1_PORT_ID == 3) +#define RTE_I2S0_DOUT1_PORT HP +#define RTE_I2S0_DOUT1_PIN 55 +#define RTE_I2S0_DOUT1_MUX 7 +#define RTE_I2S0_DOUT1_PAD 19 +#else +#error "Invalid I2S0 RTE_I2S0_DOUT1 Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_I2S0_DOUT1_PORT HP +#define RTE_I2S0_DOUT1_PIN I2S0_DOUT1_PIN +#define RTE_I2S0_DOUT1_MUX 7 +#if (I2S0_DOUT1_LOC == 16) +#define RTE_I2S0_DOUT1_PAD 2 +#endif +#if (I2S0_DOUT1_LOC == 17) +#define RTE_I2S0_DOUT1_PAD 0 +#endif +#if (I2S0_DOUT1_LOC == 18) +#define RTE_I2S0_DOUT1_PAD 15 +#endif +#if (I2S0_DOUT1_LOC == 19) +#define RTE_I2S0_DOUT1_PAD 19 +#endif +//Pintool data +#endif + +// I2S0_DIN1 <0=>P0_6 <1=>P0_29 <2=>P0_50 <3=>P0_54 +// DIN1 for I2S0 +#ifndef I2S0_DIN1_LOC +#define RTE_I2S0_DIN1_PORT_ID 0 + +#if (RTE_I2S0_DIN1_PORT_ID == 0) +#define RTE_I2S0_DIN1_PORT HP +#define RTE_I2S0_DIN1_PIN 6 +#define RTE_I2S0_DIN1_MUX 7 +#define RTE_I2S0_DIN1_PAD 1 +#elif (RTE_I2S0_DIN1_PORT_ID == 1) +#define RTE_I2S0_DIN1_PORT HP +#define RTE_I2S0_DIN1_PIN 29 +#define RTE_I2S0_DIN1_MUX 7 +#define RTE_I2S0_DIN1_PAD 0 //no pad +#elif (RTE_I2S0_DIN1_PORT_ID == 2) +#define RTE_I2S0_DIN1_PORT HP +#define RTE_I2S0_DIN1_PIN 50 +#define RTE_I2S0_DIN1_MUX 7 +#define RTE_I2S0_DIN1_PAD 14 +#elif (RTE_I2S0_DIN1_PORT_ID == 3) +#define RTE_I2S0_DIN1_PORT HP +#define RTE_I2S0_DIN1_PIN 54 +#define RTE_I2S0_DIN1_MUX 7 +#define RTE_I2S0_DIN1_PAD 18 +#else +#error "Invalid I2S0 RTE_I2S0_DIN1 Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_I2S0_DIN1_PORT HP +#define RTE_I2S0_DIN1_PIN I2S0_DIN1_PIN +#define RTE_I2S0_DIN1_MUX 7 +#if (I2S0_DIN1_LOC == 20) +#define RTE_I2S0_DIN1_PAD 1 +#endif +#if (I2S0_DIN1_LOC == 21) +#define RTE_I2S0_DIN1_PAD 0 +#endif +#if (I2S0_DIN1_LOC == 22) +#define RTE_I2S0_DIN1_PAD 14 +#endif +#if (I2S0_DIN1_LOC == 23) +#define RTE_I2S0_DIN1_PAD 18 +#endif +//Pintool data +#endif +// FIFO level can have value 0 to 7 +#define I2S0_TX_FIFO_LEVEL (0U) +#define I2S0_RX_FIFO_LEVEL (2U) + +// I2S0_TX_RES <0=>12 +// <1=>16 +// <2=>20 +// <3=>24 +#define RTE_I2S0_TX_RES 1 +#if (RTE_I2S0_TX_RES == 0) +#define I2S0_TX_RES RES_12_BIT +#elif (RTE_I2S0_TX_RES == 1) +#define I2S0_TX_RES RES_16_BIT +#elif (RTE_I2S0_TX_RES == 2) +#define I2S0_TX_RES RES_20_BIT +#elif (RTE_I2S0_TX_RES == 3) +#define I2S0_TX_RES RES_24_BIT +#else +#error "Invalid I2S0 TX channel resolution!" +#endif + +// I2S0_RX_RES <0=>12 +// <1=>16 +// <2=>20 +// <3=>24 +#define RTE_I2S0_RX_RES 1 +#if (RTE_I2S0_RX_RES == 0) +#define I2S0_RX_RES RES_12_BIT +#elif (RTE_I2S0_RX_RES == 1) +#define I2S0_RX_RES RES_16_BIT +#elif (RTE_I2S0_RX_RES == 2) +#define I2S0_RX_RES RES_20_BIT +#elif (RTE_I2S0_RX_RES == 3) +#define I2S0_RX_RES RES_24_BIT +#else +#error "Invalid I2S0 RX channel resolution!" +#endif + +#define RTE_I2S0_CHNL_UDMA_TX_EN 1 +#define RTE_I2S0_CHNL_UDMA_TX_CH 15 + +#define RTE_I2S0_CHNL_UDMA_RX_EN 1 +#define RTE_I2S0_CHNL_UDMA_RX_CH 14 + +#define RTE_I2S0_DMA_TX_LEN_PER_DES 1024 +#define RTE_I2S0_DMA_RX_LEN_PER_DES 1024 + +// + +// ULP I2S [Driver_I2S1] +// Configuration settings for Driver_I2S1 in component ::Drivers:I2S +#define RTE_I2S1 1 +#define I2S1_IRQHandler IRQ014_Handler + +// I2S1_SCLK Pin <0=>P0_3 <1=>P0_7 <2=>P0_8 +/*I2S1 PINS*/ +#ifndef ULP_I2S_SCLK_LOC +#ifdef SLI_SI91X_MCU_CONFIG_RADIO_BOARD_BASE_VER +#define RTE_I2S1_SCLK_PORT_ID 0 +#else +#define RTE_I2S1_SCLK_PORT_ID 2 +#endif +#if (RTE_I2S1_SCLK_PORT_ID == 0) +#define RTE_I2S1_SCLK_PORT RTE_ULP_PORT +#define RTE_I2S1_SCLK_PIN (3 + GPIO_MAX_PIN) +#define RTE_I2S1_SCLK_MUX 2 +#define RTE_I2S1_SCLK_PAD 0 +#elif (RTE_I2S1_SCLK_PORT_ID == 1) +#define RTE_I2S1_SCLK_PORT RTE_ULP_PORT +#define RTE_I2S1_SCLK_PIN (7 + GPIO_MAX_PIN) +#define RTE_I2S1_SCLK_MUX 2 +#define RTE_I2S1_SCLK_PAD 0 +#elif (RTE_I2S1_SCLK_PORT_ID == 2) +#define RTE_I2S1_SCLK_PORT RTE_ULP_PORT +#define RTE_I2S1_SCLK_PIN (8 + GPIO_MAX_PIN) +#define RTE_I2S1_SCLK_MUX 2 +#define RTE_I2S1_SCLK_PAD 0 +#elif (RTE_I2S1_SCLK_PORT_ID == 3) +#define RTE_I2S1_SCLK_PORT RTE_ULP_PORT +#define RTE_I2S1_SCLK_PIN 15 +#define RTE_I2S1_SCLK_MUX 2 +#define RTE_I2S1_SCLK_PAD 8 +#elif (RTE_I2S1_SCLK_PORT_ID == 4) +#define RTE_I2S1_SCLK_PORT RTE_ULP_PORT +#define RTE_I2S1_SCLK_PIN 46 +#define RTE_I2S1_SCLK_MUX 2 +#define RTE_I2S1_SCLK_PAD 10 +#else +#error "Invalid I2S1 RTE_I2S1_SCLK Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_I2S1_SCLK_PORT RTE_ULP_PORT +#define RTE_I2S1_SCLK_MUX 2 +#if ((ULP_I2S_SCLK_LOC == 0) || (ULP_I2S_SCLK_LOC == 1)) +#define RTE_I2S1_SCLK_PIN (ULP_I2S_SCLK_PIN + GPIO_MAX_PIN) +#define RTE_I2S1_SCLK_PAD 0 +#endif +#if (ULP_I2S_SCLK_LOC == 10) +#define RTE_I2S1_SCLK_PIN ULP_I2S_SCLK_PIN +#define RTE_I2S1_SCLK_PAD 8 +#endif +#if (ULP_I2S_SCLK_LOC == 11) +#define RTE_I2S1_SCLK_PIN ULP_I2S_SCLK_PIN +#define RTE_I2S1_SCLK_PAD 10 +#endif +//Pintool data +#endif + +// I2S1_WSCLK Pin <0=>P0_2 <1=>P0_4 <2=>P0_10 +#ifndef ULP_I2S_WSCLK_LOC +#define RTE_I2S1_WSCLK_PORT_ID 0 +#if (RTE_I2S1_WSCLK_PORT_ID == 0) +#define RTE_I2S1_WSCLK_PORT RTE_ULP_PORT +#define RTE_I2S1_WSCLK_PIN (2 + GPIO_MAX_PIN) +#define RTE_I2S1_WSCLK_MUX 2 +#define RTE_I2S1_WSCLK_PAD 0 +#elif (RTE_I2S1_WSCLK_PORT_ID == 1) +#define RTE_I2S1_WSCLK_PORT RTE_ULP_PORT +#define RTE_I2S1_WSCLK_PIN (10 + GPIO_MAX_PIN) +#define RTE_I2S1_WSCLK_MUX 2 +#define RTE_I2S1_WSCLK_PAD 0 +#elif (RTE_I2S1_WSCLK_PORT_ID == 2) +#define RTE_I2S1_WSCLK_PORT RTE_ULP_PORT +#define RTE_I2S1_WSCLK_PIN 8 +#define RTE_I2S1_WSCLK_MUX 2 +#define RTE_I2S1_WSCLK_PAD 3 +#elif (RTE_I2S1_WSCLK_PORT_ID == 3) +#define RTE_I2S1_WSCLK_PORT RTE_ULP_PORT +#define RTE_I2S1_WSCLK_PIN 10 +#define RTE_I2S1_WSCLK_MUX 2 +#define RTE_I2S1_WSCLK_PAD 5 +#elif (RTE_I2S1_WSCLK_PORT_ID == 4) +#define RTE_I2S1_WSCLK_PORT RTE_ULP_PORT +#define RTE_I2S1_WSCLK_PIN 48 +#define RTE_I2S1_WSCLK_MUX 2 +#define RTE_I2S1_WSCLK_PAD 12 +#else +#error "Invalid I2S1 RTE_I2S1_WSCLK Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_I2S1_WSCLK_PORT RTE_ULP_PORT +#define RTE_I2S1_WSCLK_MUX 2 +#if ((ULP_I2S_WSCLK_LOC == 2) || (ULP_I2S_WSCLK_LOC == 3)) +#define RTE_I2S1_WSCLK_PIN (ULP_I2S_WSCLK_PIN + GPIO_MAX_PIN) +#define RTE_I2S1_WSCLK_PAD 0 +#endif +#if (ULP_I2S_WSCLK_LOC == 12) +#define RTE_I2S1_WSCLK_PIN ULP_I2S_WSCLK_PIN +#define RTE_I2S1_WSCLK_PAD 3 +#endif +#if (ULP_I2S_WSCLK_LOC == 13) +#define RTE_I2S1_WSCLK_PIN ULP_I2S_WSCLK_PIN +#define RTE_I2S1_WSCLK_PAD 5 +#endif +#if (ULP_I2S_WSCLK_LOC == 14) +#define RTE_I2S1_WSCLK_PIN ULP_I2S_WSCLK_PIN +#define RTE_I2S1_WSCLK_PAD 12 +#endif +//Pintool data +#endif + +// I2S1_DOUT0 Pin <0=>P0_1 <1=>P0_5 <2=>P0_11 +#ifndef ULP_I2S_DOUT0_LOC +#define RTE_I2S1_DOUT0_PORT_ID 0 +#if (RTE_I2S1_DOUT0_PORT_ID == 0) +#define RTE_I2S1_DOUT0_PORT RTE_ULP_PORT +#define RTE_I2S1_DOUT0_PIN (1 + GPIO_MAX_PIN) +#define RTE_I2S1_DOUT0_MUX 2 +#define RTE_I2S1_DOUT0_PAD 0 +#elif (RTE_I2S1_DOUT0_PORT_ID == 1) +#define RTE_I2S1_DOUT0_PORT RTE_ULP_PORT +#define RTE_I2S1_DOUT0_PIN (11 + GPIO_MAX_PIN) +#define RTE_I2S1_DOUT0_MUX 2 +#define RTE_I2S1_DOUT0_PAD 0 +#elif (RTE_I2S1_DOUT0_PORT_ID == 2) +#define RTE_I2S1_DOUT0_PORT RTE_ULP_PORT +#define RTE_I2S1_DOUT0_PIN 7 +#define RTE_I2S1_DOUT0_MUX 2 +#define RTE_I2S1_DOUT0_PAD 2 +#elif (RTE_I2S1_DOUT0_PORT_ID == 3) +#define RTE_I2S1_DOUT0_PORT RTE_ULP_PORT +#define RTE_I2S1_DOUT0_PIN 11 +#define RTE_I2S1_DOUT0_MUX 2 +#define RTE_I2S1_DOUT0_PAD 6 +#elif (RTE_I2S1_DOUT0_PORT_ID == 4) +#define RTE_I2S1_DOUT0_PORT RTE_ULP_PORT +#define RTE_I2S1_DOUT0_PIN 49 +#define RTE_I2S1_DOUT0_MUX 2 +#define RTE_I2S1_DOUT0_PAD 13 +#else +#error "Invalid I2S1 RTE_I2S1_DOUT0 Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_I2S1_DOUT0_PORT RTE_ULP_PORT +#define RTE_I2S1_DOUT0_MUX 2 +#if ((ULP_I2S_DOUT0_LOC == 4) || (ULP_I2S_DOUT0_LOC == 5) || (ULP_I2S_DOUT0_LOC == 6)) +#define RTE_I2S1_DOUT0_PIN (ULP_I2S_DOUT0_PIN + GPIO_MAX_PIN) +#define RTE_I2S1_DOUT0_PAD 0 +#endif +#if (ULP_I2S_DOUT0_LOC == 15) +#define RTE_I2S1_DOUT0_PIN ULP_I2S_DOUT0_PIN +#define RTE_I2S1_DOUT0_PAD 2 +#endif +#if (ULP_I2S_DOUT0_LOC == 16) +#define RTE_I2S1_DOUT0_PIN ULP_I2S_DOUT0_PIN +#define RTE_I2S1_DOUT0_PAD 6 +#endif +#if (ULP_I2S_DOUT0_LOC == 17) +#define RTE_I2S1_DOUT0_PIN ULP_I2S_DOUT0_PIN +#define RTE_I2S1_DOUT0_PAD 13 +#endif +//Pintool data +#endif + +// I2S1_DIN0 Pin <0=>P0_0 <1=>P0_6 <2=>P0_9 <3=>P0_13 +#ifndef ULP_I2S_DIN0_LOC +#define RTE_I2S1_DIN0_PORT_ID 1 +#if (RTE_I2S1_DIN0_PORT_ID == 0) +#define RTE_I2S1_DIN0_PORT RTE_ULP_PORT +#define RTE_I2S1_DIN0_PIN (0 + GPIO_MAX_PIN) +#define RTE_I2S1_DIN0_MUX 2 +#define RTE_I2S1_DIN0_PAD 0 +#elif (RTE_I2S1_DIN0_PORT_ID == 1) +#define RTE_I2S1_DIN0_PORT RTE_ULP_PORT +#define RTE_I2S1_DIN0_PIN (6 + GPIO_MAX_PIN) +#define RTE_I2S1_DIN0_MUX 2 +#define RTE_I2S1_DIN0_PAD 0 +#elif (RTE_I2S1_DIN0_PORT_ID == 2) +#define RTE_I2S1_DIN0_PORT RTE_ULP_PORT +#define RTE_I2S1_DIN0_PIN (9 + GPIO_MAX_PIN) +#define RTE_I2S1_DIN0_MUX 2 +#define RTE_I2S1_DIN0_PAD 0 +#elif (RTE_I2S1_DIN0_PORT_ID == 3) +#define RTE_I2S1_DIN0_PORT RTE_ULP_PORT +#define RTE_I2S1_DIN0_PIN 6 +#define RTE_I2S1_DIN0_MUX 2 +#define RTE_I2S1_DIN0_PAD 1 +#elif (RTE_I2S1_DIN0_PORT_ID == 4) +#define RTE_I2S1_DIN0_PORT RTE_ULP_PORT +#define RTE_I2S1_DIN0_PIN 12 +#define RTE_I2S1_DIN0_MUX 2 +#define RTE_I2S1_DIN0_PAD 7 +#elif (RTE_I2S1_DIN0_PORT_ID == 5) +#define RTE_I2S1_DIN0_PORT RTE_ULP_PORT +#define RTE_I2S1_DIN0_PIN 47 +#define RTE_I2S1_DIN0_MUX 2 +#define RTE_I2S1_DIN0_PAD 11 +#else +#error "Invalid I2S1 RTE_I2S1_DIN0 Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_I2S1_DIN0_PORT RTE_ULP_PORT +#define RTE_I2S1_DIN0_MUX 2 +#if ((ULP_I2S_DIN0_LOC == 7) || (ULP_I2S_DIN0_LOC == 8) || (ULP_I2S_DIN0_LOC == 9)) +#define RTE_I2S1_DIN0_PIN (ULP_I2S_DIN0_PIN + GPIO_MAX_PIN) +#define RTE_I2S1_DIN0_PAD 0 +#endif +#if (ULP_I2S_DIN0_LOC == 18) +#define RTE_I2S1_DIN0_PIN ULP_I2S_DIN0_PIN +#define RTE_I2S1_DIN0_PAD 1 +#endif +#if (ULP_I2S_DIN0_LOC == 19) +#define RTE_I2S1_DIN0_PIN ULP_I2S_DIN0_PIN +#define RTE_I2S1_DIN0_PAD 7 +#endif +#if (ULP_I2S_DIN0_LOC == 20) +#define RTE_I2S1_DIN0_PIN ULP_I2S_DIN0_PIN +#define RTE_I2S1_DIN0_PAD 11 +#endif +//Pintool data +#endif + +// FIFO level can have value 0 to 7 +#define I2S1_TX_FIFO_LEVEL (0U) +#define I2S1_RX_FIFO_LEVEL (2U) + +// I2S1_TX_RES <0=>12 +// <1=>16 +// <2=>20 +// <3=>24 +#define RTE_I2S1_TX_RES 1 +#if (RTE_I2S1_TX_RES == 0) +#define I2S1_TX_RES RES_12_BIT +#elif (RTE_I2S1_TX_RES == 1) +#define I2S1_TX_RES RES_16_BIT +#elif (RTE_I2S1_TX_RES == 2) +#define I2S1_TX_RES RES_20_BIT +#elif (RTE_I2S1_TX_RES == 3) +#define I2S1_TX_RES RES_24_BIT +#else +#error "Invalid I2S1 TX channel resolution!" +#endif + +// I2S1_RX_RES <0=>12 +// <1=>16 +// <2=>20 +// <3=>24 +#define RTE_I2S1_RX_RES 1 +#if (RTE_I2S1_RX_RES == 0) +#define I2S1_RX_RES RES_12_BIT +#elif (RTE_I2S1_RX_RES == 1) +#define I2S1_RX_RES RES_16_BIT +#elif (RTE_I2S1_RX_RES == 2) +#define I2S1_RX_RES RES_20_BIT +#elif (RTE_I2S1_RX_RES == 3) +#define I2S1_RX_RES RES_24_BIT +#else +#error "Invalid I2S1 RX channel resolution!" +#endif + +#define RTE_I2S1_CHNL_UDMA_TX_EN 1 +#define RTE_I2S1_CHNL_UDMA_TX_CH 7 + +#define RTE_I2S1_CHNL_UDMA_RX_EN 1 +#define RTE_I2S1_CHNL_UDMA_RX_CH 6 + +#define RTE_I2S1_DMA_TX_LEN_PER_DES 1024 +#define RTE_I2S1_DMA_RX_LEN_PER_DES 1024 + +// I2S1 [Driver_I2S1] + +// I2C0 (Inter-integrated Circuit Interface 0) [Driver_I2C0] +// Configuration settings for Driver_I2C0 in component ::Drivers:I2C + +#define RTE_I2C0 1 +#define I2C0_IRQHandler IRQ042_Handler + +// I2C0_SCL Pin <0=>P0_7 <1=>P0_65 <2=>P0_66 <3=>P0_75 <4=>P0_32 +#ifndef I2C0_SCL_LOC +#define RTE_I2C0_SCL_PORT_ID 1 + +#if (RTE_I2C0_SCL_PORT_ID == 0) +#define RTE_I2C0_SCL_PORT 0 +#define RTE_I2C0_SCL_PIN 7 +#define RTE_I2C0_SCL_MUX 4 +#define RTE_I2C0_SCL_PAD 2 +#define RTE_I2C0_SCL_I2C_REN 7 +#elif (RTE_I2C0_SCL_PORT_ID == 1) +#define RTE_I2C0_SCL_PORT 0 +#define RTE_I2C0_SCL_PIN 65 +#define RTE_I2C0_SCL_MUX 4 +#define RTE_I2C0_SCL_PAD 23 +#define RTE_I2C0_SCL_I2C_REN 1 +#elif (RTE_I2C0_SCL_PORT_ID == 2) +#define RTE_I2C0_SCL_PORT 0 +#define RTE_I2C0_SCL_PIN 66 +#define RTE_I2C0_SCL_MUX 4 +#define RTE_I2C0_SCL_PAD 24 +#define RTE_I2C0_SCL_I2C_REN 2 +#elif (RTE_I2C0_SCL_PORT_ID == 3) +#define RTE_I2C0_SCL_PORT 0 +#define RTE_I2C0_SCL_PIN 75 +#define RTE_I2C0_SCL_MUX 4 +#define RTE_I2C0_SCL_PAD 33 +#define RTE_I2C0_SCL_I2C_REN 11 +#elif (RTE_I2C0_SCL_PORT_ID == 4) +#define RTE_I2C0_SCL_PORT 0 +#define RTE_I2C0_SCL_PIN 32 +#define RTE_I2C0_SCL_MUX 11 +#define RTE_I2C0_SCL_PAD 9 +#define RTE_I2C0_SCL_I2C_REN 32 +#else +#error "Invalid I2C0 RTE_I2C0_SCL Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_I2C0_SCL_PORT HP +#if (I2C0_SCL_LOC == 0) +#define RTE_I2C0_SCL_PIN I2C0_SCL_PIN +#define RTE_I2C0_SCL_MUX 4 +#define RTE_I2C0_SCL_PAD 2 +#define RTE_I2C0_SCL_I2C_REN 7 +#endif +#if (I2C0_SCL_LOC == 1) +#define RTE_I2C0_SCL_PIN (I2C0_SCL_PIN + GPIO_MAX_PIN) +#define RTE_I2C0_SCL_MUX 4 +#define RTE_I2C0_SCL_PAD 23 +#define RTE_I2C0_SCL_I2C_REN 1 +#endif +#if (I2C0_SCL_LOC == 2) +#define RTE_I2C0_SCL_PIN (I2C0_SCL_PIN + GPIO_MAX_PIN) +#define RTE_I2C0_SCL_MUX 4 +#define RTE_I2C0_SCL_PAD 33 +#define RTE_I2C0_SCL_I2C_REN 11 +#endif +#if (I2C0_SCL_LOC == 7) +#define RTE_I2C0_SCL_PIN I2C0_SCL_PIN +#define RTE_I2C0_SCL_MUX 11 +#define RTE_I2C0_SCL_PAD 9 +#define RTE_I2C0_SCL_I2C_REN 32 +#endif +//Pintool data +#endif + +// I2C0_SCL Pin <0=>P0_6 <1=>P0_64 <2=>P0_67 <3=>P0_74 <4=>P0_31 +#ifndef I2C0_SDA_LOC +#ifdef SLI_SI91X_MCU_CONFIG_RADIO_BOARD_BASE_VER +#define RTE_I2C0_SDA_PORT_ID 2 +#else +#define RTE_I2C0_SDA_PORT_ID 0 +#endif + +#if (RTE_I2C0_SDA_PORT_ID == 0) +#define RTE_I2C0_SDA_PORT 0 +#define RTE_I2C0_SDA_PIN 6 +#define RTE_I2C0_SDA_MUX 4 +#define RTE_I2C0_SDA_PAD 1 +#define RTE_I2C0_SDA_I2C_REN 6 +#elif (RTE_I2C0_SDA_PORT_ID == 1) +#define RTE_I2C0_SDA_PORT 0 +#define RTE_I2C0_SDA_PIN 67 +#define RTE_I2C0_SDA_MUX 4 +#define RTE_I2C0_SDA_PAD 25 +#define RTE_I2C0_SDA_I2C_REN 3 +#elif (RTE_I2C0_SDA_PORT_ID == 2) +#define RTE_I2C0_SDA_PORT 0 +#define RTE_I2C0_SDA_PIN 74 +#define RTE_I2C0_SDA_MUX 4 +#define RTE_I2C0_SDA_PAD 32 +#define RTE_I2C0_SDA_I2C_REN 10 +#elif (RTE_I2C0_SDA_PORT_ID == 3) +#define RTE_I2C0_SDA_PORT 0 +#define RTE_I2C0_SDA_PIN 31 +#define RTE_I2C0_SDA_MUX 11 +#define RTE_I2C0_SDA_PAD 9 +#define RTE_I2C0_SDA_I2C_REN 31 +#else +#error "Invalid I2C0 RTE_I2C0_SDA Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_I2C0_SDA_PORT HP +#if (I2C0_SDA_LOC == 3) +#define RTE_I2C0_SDA_PIN I2C0_SDA_PIN +#define RTE_I2C0_SDA_MUX 4 +#define RTE_I2C0_SDA_PAD 1 +#define RTE_I2C0_SDA_I2C_REN 6 +#endif +#if (I2C0_SDA_LOC == 4) +#define RTE_I2C0_SDA_PIN (I2C0_SDA_PIN + GPIO_MAX_PIN) +#define RTE_I2C0_SDA_MUX 4 +#define RTE_I2C0_SDA_PAD 22 +#define RTE_I2C0_SDA_I2C_REN 3 +#endif +#if (I2C0_SDA_LOC == 5) +#define RTE_I2C0_SDA_PIN (I2C0_SDA_PIN + GPIO_MAX_PIN) +#define RTE_I2C0_SDA_MUX 4 +#define RTE_I2C0_SDA_PAD 32 +#define RTE_I2C0_SDA_I2C_REN 10 +#endif +#if (I2C0_SDA_LOC == 6) +#define RTE_I2C0_SDA_PIN I2C0_SDA_PIN +#define RTE_I2C0_SDA_MUX 11 +#define RTE_I2C0_SDA_PAD 9 +#define RTE_I2C0_SDA_I2C_REN 31 +#endif +//Pintool data +#endif + +#define IC_SCL_STUCK_TIMEOUT 20 +#define IC_SDA_STUCK_TIMEOUT 20 + +#define I2C_DMA 0 +#if (I2C_DMA == 1) +#define DMA_TX_TL 1 +#define DMA_RX_TL 1 +#endif +// I2C1 [Driver_I2C0] + +// I2C1 (Inter-integrated Circuit Interface 1) [Driver_I2C1] +// Configuration settings for Driver_I2C1 in component ::Drivers:I2C + +#define RTE_I2C1 1 +#define I2C1_IRQHandler IRQ061_Handler +// I2C1_SCL Pin <0=>P0_6 <1=>P0_29 <2=>P0_50 <3=>P0_54 <4=>P0_64 <4=>P0_66 <4=>P0_70 <7=>P0_33 +#ifndef I2C1_SCL_LOC +#define RTE_I2C1_SCL_PORT_ID 2 + +#if (RTE_I2C1_SCL_PORT_ID == 0) +#define RTE_I2C1_SCL_PORT HP +#define RTE_I2C1_SCL_PIN 6 +#define RTE_I2C1_SCL_MUX 5 +#define RTE_I2C1_SCL_PAD 1 +#define RTE_I2C1_SCL_REN 6 +#elif (RTE_I2C1_SCL_PORT_ID == 1) +#define RTE_I2C1_SCL_PORT HP +#define RTE_I2C1_SCL_PIN 29 +#define RTE_I2C1_SCL_MUX 5 +#define RTE_I2C1_SCL_PAD 0 //no pad +#define RTE_I2C1_SCL_REN 29 +#elif (RTE_I2C1_SCL_PORT_ID == 2) +#define RTE_I2C1_SCL_PORT HP +#define RTE_I2C1_SCL_PIN 50 +#define RTE_I2C1_SCL_MUX 5 +#define RTE_I2C1_SCL_PAD 14 +#define RTE_I2C1_SCL_REN 50 +#elif (RTE_I2C1_SCL_PORT_ID == 3) +#define RTE_I2C1_SCL_PORT HP +#define RTE_I2C1_SCL_PIN 54 +#define RTE_I2C1_SCL_MUX 5 +#define RTE_I2C1_SCL_PAD 18 +#define RTE_I2C1_SCL_REN 54 +#elif (RTE_I2C1_SCL_PORT_ID == 5) +#define RTE_I2C1_SCL_PORT HP +#define RTE_I2C1_SCL_PIN 66 +#define RTE_I2C1_SCL_MUX 5 +#define RTE_I2C1_SCL_PAD 24 +#define RTE_I2C1_SCL_REN 2 +#elif (RTE_I2C1_SCL_PORT_ID == 6) +#define RTE_I2C1_SCL_PORT HP +#define RTE_I2C1_SCL_PIN 70 +#define RTE_I2C1_SCL_MUX 5 +#define RTE_I2C1_SCL_PAD 28 +#define RTE_I2C1_SCL_REN 6 +#elif (RTE_I2C1_SCL_PORT_ID == 7) +#define RTE_I2C1_SCL_PORT HP +#define RTE_I2C1_SCL_PIN 33 +#define RTE_I2C1_SCL_MUX 11 +#define RTE_I2C1_SCL_PAD 9 +#define RTE_I2C1_SCL_REN 33 +#else +#error "Invalid I2C1_SCL Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_I2C1_SCL_PORT HP +#if (I2C1_SCL_LOC == 0) +#define RTE_I2C1_SCL_PIN I2C1_SCL_PIN +#define RTE_I2C1_SCL_MUX 5 +#define RTE_I2C1_SCL_PAD 1 +#define RTE_I2C1_SCL_REN 6 +#endif +#if (I2C1_SCL_LOC == 1) +#define RTE_I2C1_SCL_PIN I2C1_SCL_PIN +#define RTE_I2C1_SCL_MUX 5 +#define RTE_I2C1_SCL_PAD 0 //no pad +#define RTE_I2C1_SCL_REN 29 +#endif +#if (I2C1_SCL_LOC == 2) +#define RTE_I2C1_SCL_PIN I2C1_SCL_PIN +#define RTE_I2C1_SCL_MUX 5 +#define RTE_I2C1_SCL_PAD 14 +#define RTE_I2C1_SCL_REN 50 +#endif +#if (I2C1_SCL_LOC == 3) +#define RTE_I2C1_SCL_PIN I2C1_SCL_PIN +#define RTE_I2C1_SCL_MUX 5 +#define RTE_I2C1_SCL_PAD 18 +#define RTE_I2C1_SCL_REN 54 +#endif +#if (I2C1_SCL_LOC == 4) +#define RTE_I2C1_SCL_PIN (I2C1_SCL_PIN + GPIO_MAX_PIN) +#define RTE_I2C1_SCL_MUX 5 +#define RTE_I2C1_SCL_PAD 22 +#define RTE_I2C1_SCL_REN 2 +#endif +#if (I2C1_SCL_LOC == 5) +#define RTE_I2C1_SCL_PIN (I2C1_SCL_PIN + GPIO_MAX_PIN) +#define RTE_I2C1_SCL_MUX 5 +#define RTE_I2C1_SCL_PAD 28 +#define RTE_I2C1_SCL_REN 6 +#endif +#if (I2C1_SCL_LOC == 12) +#define RTE_I2C1_SCL_PIN I2C1_SCL_PIN +#define RTE_I2C1_SCL_MUX 11 +#define RTE_I2C1_SCL_PAD 9 +#define RTE_I2C1_SCL_REN 33 +#endif +//Pintool data +#endif + +// I2C1_SCL Pin <0=>P0_7 <1=>P0_30 <2=>P0_51 <3=>P0_55 <4=>P0_65 <4=>P0_67 <4=>P0_71 <7=>P0_34 +#ifndef I2C1_SDA_LOC +#define RTE_I2C1_SDA_PORT_ID 2 + +#if (RTE_I2C1_SDA_PORT_ID == 0) +#define RTE_I2C1_SDA_PORT HP +#define RTE_I2C1_SDA_PIN 7 +#define RTE_I2C1_SDA_MUX 5 +#define RTE_I2C1_SDA_PAD 2 +#define RTE_I2C1_SDA_REN 7 +#elif (RTE_I2C1_SDA_PORT_ID == 1) +#define RTE_I2C1_SDA_PORT HP +#define RTE_I2C1_SDA_PIN 30 +#define RTE_I2C1_SDA_MUX 5 +#define RTE_I2C1_SDA_PAD 0 //no pad +#define RTE_I2C1_SDA_REN 30 +#elif (RTE_I2C1_SDA_PORT_ID == 2) +#define RTE_I2C1_SDA_PORT HP +#define RTE_I2C1_SDA_PIN 51 +#define RTE_I2C1_SDA_MUX 5 +#define RTE_I2C1_SDA_PAD 15 +#define RTE_I2C1_SDA_REN 51 +#elif (RTE_I2C1_SDA_PORT_ID == 3) +#define RTE_I2C1_SDA_PORT HP +#define RTE_I2C1_SDA_PIN 55 +#define RTE_I2C1_SDA_MUX 5 +#define RTE_I2C1_SDA_PAD 19 +#define RTE_I2C1_SDA_REN 55 +#elif (RTE_I2C1_SDA_PORT_ID == 4) +#define RTE_I2C1_SDA_PORT HP +#define RTE_I2C1_SDA_PIN 65 +#define RTE_I2C1_SDA_MUX 5 +#define RTE_I2C1_SDA_PAD 23 +#define RTE_I2C1_SDA_REN 1 +#elif (RTE_I2C1_SDA_PORT_ID == 5) +#define RTE_I2C1_SDA_PORT HP +#define RTE_I2C1_SDA_PIN 67 +#define RTE_I2C1_SDA_MUX 5 +#define RTE_I2C1_SDA_PAD 25 +#define RTE_I2C1_SDA_REN 3 +#elif (RTE_I2C1_SDA_PORT_ID == 6) +#define RTE_I2C1_SDA_PORT HP +#define RTE_I2C1_SDA_PIN 71 +#define RTE_I2C1_SDA_MUX 5 +#define RTE_I2C1_SDA_PAD 29 +#define RTE_I2C1_SDA_REN 7 +#elif (RTE_I2C1_SDA_PORT_ID == 7) +#define RTE_I2C1_SDA_PORT HP +#define RTE_I2C1_SDA_PIN 34 +#define RTE_I2C1_SDA_MUX 11 +#define RTE_I2C1_SDA_PAD 9 +#define RTE_I2C1_SDA_REN 34 +#else +#error "Invalid I2C1_SDA Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_I2C1_SDA_PORT HP +#if (I2C1_SDA_LOC == 6) +#define RTE_I2C1_SDA_PIN I2C1_SDA_PIN +#define RTE_I2C1_SDA_MUX 5 +#define RTE_I2C1_SDA_PAD 2 +#define RTE_I2C1_SDA_REN 7 +#endif +#if (I2C1_SDA_LOC == 7) +#define RTE_I2C1_SDA_PIN I2C1_SDA_PIN +#define RTE_I2C1_SDA_MUX 5 +#define RTE_I2C1_SDA_PAD 0 //no pad +#define RTE_I2C1_SDA_REN 30 +#endif +#if (I2C1_SDA_LOC == 8) +#define RTE_I2C1_SDA_PIN I2C1_SDA_PIN +#define RTE_I2C1_SDA_MUX 5 +#define RTE_I2C1_SDA_PAD 15 +#define RTE_I2C1_SDA_REN 51 +#endif +#if (I2C1_SDA_LOC == 9) +#define RTE_I2C1_SDA_PIN I2C1_SDA_PIN +#define RTE_I2C1_SDA_MUX 5 +#define RTE_I2C1_SDA_PAD 19 +#define RTE_I2C1_SDA_REN 55 +#endif +#if (I2C1_SDA_LOC == 10) +#define RTE_I2C1_SDA_PIN (I2C1_SDA_PIN + GPIO_MAX_PIN) +#define RTE_I2C1_SDA_MUX 5 +#define RTE_I2C1_SDA_PAD 23 +#define RTE_I2C1_SDA_REN 1 +#endif +#if (I2C1_SDA_LOC == 11) +#define RTE_I2C1_SDA_PIN (I2C1_SDA_PIN + GPIO_MAX_PIN) +#define RTE_I2C1_SDA_MUX 5 +#define RTE_I2C1_SDA_PAD 29 +#define RTE_I2C1_SDA_REN 7 +#endif +#if (I2C1_SDA_LOC == 13) +#define RTE_I2C1_SDA_PIN I2C1_SDA_PIN +#define RTE_I2C1_SDA_MUX 11 +#define RTE_I2C1_SDA_PAD 9 +#define RTE_I2C1_SDA_REN 34 +#endif +//Pintool data +#endif + +#define IC_SCL_STUCK_TIMEOUT 20 +#define IC_SDA_STUCK_TIMEOUT 20 + +#define DMA_EN 0 +#if (DMA_EN == 1) +#define DMA_TX_TL 1 +#define DMA_RX_TL 1 +#endif + +// I2C1 [Driver_I2C1] + +// ULP I2C (Inter-integrated Circuit Interface 2) [Driver_I2C2] +// Configuration settings for Driver_I2C2 in component ::Drivers:I2C +#define RTE_I2C2 1 +#define I2C2_IRQHandler IRQ013_Handler + +// I2C2_SCL Pin <0=>P0_1 <1=>P0_5 <2=>P0_7 <3=>P0_8 <4=>P0_13 +#ifndef ULP_I2C_SCL_LOC +#ifdef SLI_SI91X_MCU_CONFIG_RADIO_BOARD_BASE_VER +#define RTE_I2C2_SCL_PORT_ID 0 +#else +#define RTE_I2C2_SCL_PORT_ID 0 +#endif +#if (RTE_I2C2_SCL_PORT_ID == 0) +#define RTE_I2C2_SCL_PORT RTE_ULP_PORT +#define RTE_I2C2_SCL_PIN (7 + GPIO_MAX_PIN) +#define RTE_I2C2_SCL_MUX 4 +#define RTE_I2C2_SCL_REN 7 +#define RTE_I2C2_SCL_PAD 0 +#elif (RTE_I2C2_SCL_PORT_ID == 1) +#define RTE_I2C2_SCL_PORT RTE_ULP_PORT +#define RTE_I2C2_SCL_PIN (8 + GPIO_MAX_PIN) +#define RTE_I2C2_SCL_MUX 4 +#define RTE_I2C2_SCL_REN 8 +#define RTE_I2C2_SCL_PAD 0 +#elif (RTE_I2C2_SCL_PORT_ID == 2) +#define RTE_I2C2_SCL_PORT RTE_ULP_PORT +#define RTE_I2C2_SCL_PIN (1 + GPIO_MAX_PIN) +#define RTE_I2C2_SCL_MUX 4 +#define RTE_I2C2_SCL_REN 1 +#define RTE_I2C2_SCL_PAD 0 +#elif (RTE_I2C2_SCL_PORT_ID == 3) +#define RTE_I2C2_SCL_PORT RTE_ULP_PORT +#define RTE_I2C2_SCL_PIN 7 +#define RTE_I2C2_SCL_MUX 4 +#define RTE_I2C2_SCL_REN 7 +#define RTE_I2C2_SCL_PAD 2 +#elif (RTE_I2C2_SCL_PORT_ID == 4) +#define RTE_I2C2_SCL_PORT RTE_ULP_PORT +#define RTE_I2C2_SCL_PIN 11 +#define RTE_I2C2_SCL_MUX 4 +#define RTE_I2C2_SCL_REN 11 +#define RTE_I2C2_SCL_PAD 6 +#elif (RTE_I2C2_SCL_PORT_ID == 5) +#define RTE_I2C2_SCL_PORT RTE_ULP_PORT +#define RTE_I2C2_SCL_PIN 15 +#define RTE_I2C2_SCL_MUX 4 +#define RTE_I2C2_SCL_REN 15 +#define RTE_I2C2_SCL_PAD 8 +#elif (RTE_I2C2_SCL_PORT_ID == 6) +#define RTE_I2C2_SCL_PORT RTE_ULP_PORT +#define RTE_I2C2_SCL_PIN 46 +#define RTE_I2C2_SCL_MUX 4 +#define RTE_I2C2_SCL_REN 46 +#define RTE_I2C2_SCL_PAD 10 +#else +#error "Invalid I2C2_SCL Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_I2C2_SCL_PORT RTE_ULP_PORT +#define RTE_I2C2_SCL_MUX 4 +#if (ULP_I2C_SCL_LOC == 0) +#define RTE_I2C2_SCL_PIN (ULP_I2C_SCL_PIN + GPIO_MAX_PIN) +#define RTE_I2C2_SCL_REN 1 +#define RTE_I2C2_SCL_PAD 0 +#endif +#if (ULP_I2C_SCL_LOC == 1) +#define RTE_I2C2_SCL_PIN (ULP_I2C_SCL_PIN + GPIO_MAX_PIN) +#define RTE_I2C2_SCL_REN 5 +#define RTE_I2C2_SCL_PAD 0 +#endif +#if (ULP_I2C_SCL_LOC == 2) +#define RTE_I2C2_SCL_PIN (ULP_I2C_SCL_PIN + GPIO_MAX_PIN) +#define RTE_I2C2_SCL_REN 7 +#define RTE_I2C2_SCL_PAD 0 +#endif +#if (ULP_I2C_SCL_LOC == 3) +#define RTE_I2C2_SCL_PIN (ULP_I2C_SCL_PIN + GPIO_MAX_PIN) +#define RTE_I2C2_SCL_REN 8 +#define RTE_I2C2_SCL_PAD 0 +#endif +#if (ULP_I2C_SCL_LOC == 9) +#define RTE_I2C2_SCL_PIN ULP_I2C_SCL_PIN +#define RTE_I2C2_SCL_REN 7 +#define RTE_I2C2_SCL_PAD 2 +#endif +#if (ULP_I2C_SCL_LOC == 10) +#define RTE_I2C2_SCL_PIN ULP_I2C_SCL_PIN +#define RTE_I2C2_SCL_REN 11 +#define RTE_I2C2_SCL_PAD 6 +#endif +#if (ULP_I2C_SCL_LOC == 11) +#define RTE_I2C2_SCL_PIN ULP_I2C_SCL_PIN +#define RTE_I2C2_SCL_REN 15 +#define RTE_I2C2_SCL_PAD 8 +#endif +#if (ULP_I2C_SCL_LOC == 12) +#define RTE_I2C2_SCL_PIN ULP_I2C_SCL_PIN +#define RTE_I2C2_SCL_REN 46 +#define RTE_I2C2_SCL_PAD 10 +#endif +//Pintool data +#endif + +// I2C2_SDA Pin <0=>P0_0 <1=>P0_4 <2=>P0_6 <3=>P0_9 <4=>P0_11 <5=>P0_12 +#ifndef ULP_I2C_SDA_LOC +#define RTE_I2C2_SDA_PORT_ID 0 +#if (RTE_I2C2_SDA_PORT_ID == 0) +#define RTE_I2C2_SDA_PORT RTE_ULP_PORT +#define RTE_I2C2_SDA_PIN (6 + GPIO_MAX_PIN) +#define RTE_I2C2_SDA_MUX 4 +#define RTE_I2C2_SDA_REN 6 +#define RTE_I2C2_SDA_PAD 0 +#elif (RTE_I2C2_SDA_PORT_ID == 1) +#define RTE_I2C2_SDA_PORT RTE_ULP_PORT +#define RTE_I2C2_SDA_PIN (9 + GPIO_MAX_PIN) +#define RTE_I2C2_SDA_MUX 4 +#define RTE_I2C2_SDA_REN 9 +#define RTE_I2C2_SDA_PAD 0 +#elif (RTE_I2C2_SDA_PORT_ID == 2) +#define RTE_I2C2_SDA_PORT RTE_ULP_PORT +#define RTE_I2C2_SDA_PIN (11 + GPIO_MAX_PIN) +#define RTE_I2C2_SDA_MUX 4 +#define RTE_I2C2_SDA_REN 11 +#define RTE_I2C2_SDA_PAD 0 +#elif (RTE_I2C2_SDA_PORT_ID == 3) +#define RTE_I2C2_SDA_PORT RTE_ULP_PORT +#define RTE_I2C2_SDA_PIN 6 +#define RTE_I2C2_SDA_MUX 4 +#define RTE_I2C2_SDA_REN 6 +#define RTE_I2C2_SDA_PAD 1 +#elif (RTE_I2C2_SDA_PORT_ID == 4) +#define RTE_I2C2_SDA_PORT RTE_ULP_PORT +#define RTE_I2C2_SDA_PIN 10 +#define RTE_I2C2_SDA_MUX 4 +#define RTE_I2C2_SDA_REN 10 +#define RTE_I2C2_SDA_PAD 5 +#elif (RTE_I2C2_SDA_PORT_ID == 5) +#define RTE_I2C2_SDA_PORT RTE_ULP_PORT +#define RTE_I2C2_SDA_PIN 12 +#define RTE_I2C2_SDA_MUX 4 +#define RTE_I2C2_SDA_REN 12 +#define RTE_I2C2_SDA_PAD 7 +#elif (RTE_I2C2_SDA_PORT_ID == 6) +#define RTE_I2C2_SDA_PORT RTE_ULP_PORT +#define RTE_I2C2_SDA_PIN 47 +#define RTE_I2C2_SDA_MUX 4 +#define RTE_I2C2_SDA_REN 47 +#define RTE_I2C2_SDA_PAD 11 +#elif (RTE_I2C2_SDA_PORT_ID == 7) +#define RTE_I2C2_SDA_PORT RTE_ULP_PORT +#define RTE_I2C2_SDA_PIN 49 +#define RTE_I2C2_SDA_MUX 4 +#define RTE_I2C2_SDA_REN 49 +#define RTE_I2C2_SDA_PAD 13 +#else +#error "Invalid I2C2_SDA Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_I2C2_SDA_PORT RTE_ULP_PORT +#define RTE_I2C2_SDA_MUX 4 +#if (ULP_I2C_SDA_LOC == 4) +#define RTE_I2C2_SDA_PIN (ULP_I2C_SDA_PIN + GPIO_MAX_PIN) +#define RTE_I2C2_SDA_REN 0 +#define RTE_I2C2_SDA_PAD 0 +#endif +#if (ULP_I2C_SCL_LOC == 5) +#define RTE_I2C2_SDA_PIN (ULP_I2C_SDA_PIN + GPIO_MAX_PIN) +#define RTE_I2C2_SDA_REN 4 +#define RTE_I2C2_SDA_PAD 0 +#endif +#if (ULP_I2C_SDA_LOC == 6) +#define RTE_I2C2_SDA_PIN (ULP_I2C_SDA_PIN + GPIO_MAX_PIN) +#define RTE_I2C2_SDA_REN 0 +#define RTE_I2C2_SDA_PAD 0 +#endif +#if (ULP_I2C_SDA_LOC == 7) +#define RTE_I2C2_SDA_PIN (ULP_I2C_SDA_PIN + GPIO_MAX_PIN) +#define RTE_I2C2_SDA_REN 9 +#define RTE_I2C2_SDA_PAD 0 +#endif +#if (ULP_I2C_SDA_LOC == 8) +#define RTE_I2C2_SDA_PIN (ULP_I2C_SDA_PIN + GPIO_MAX_PIN) +#define RTE_I2C2_SDA_REN 11 +#define RTE_I2C2_SDA_PAD 0 +#endif +#if (ULP_I2C_SDA_LOC == 13) +#define RTE_I2C2_SDA_PIN ULP_I2C_SDA_PIN +#define RTE_I2C2_SDA_REN 6 +#define RTE_I2C2_SDA_PAD 1 +#endif +#if (ULP_I2C_SDA_LOC == 14) +#define RTE_I2C2_SDA_PIN ULP_I2C_SDA_PIN +#define RTE_I2C2_SDA_REN 10 +#define RTE_I2C2_SDA_PAD 5 +#endif +#if (ULP_I2C_SDA_LOC == 15) +#define RTE_I2C2_SDA_PIN ULP_I2C_SDA_PIN +#define RTE_I2C2_SDA_REN 12 +#define RTE_I2C2_SDA_PAD 7 +#endif +#if (ULP_I2C_SDA_LOC == 16) +#define RTE_I2C2_SDA_PIN ULP_I2C_SDA_PIN +#define RTE_I2C2_SDA_REN 47 +#define RTE_I2C2_SDA_PAD 11 +#endif +#if (ULP_I2C_SDA_LOC == 17) +#define RTE_I2C2_SDA_PIN ULP_I2C_SDA_PIN +#define RTE_I2C2_SDA_REN 49 +#define RTE_I2C2_SDA_PAD 13 +#endif +//Pintool data +#endif + +#define IC_SCL_STUCK_TIMEOUT 20 +#define IC_SDA_STUCK_TIMEOUT 20 + +#define DMA_EN 0 +#if (DMA_EN == 1) +#define DMA_TX_TL 1 +#define DMA_RX_TL 1 +#endif + +// I2C2 [Driver_I2C2] + +// GSPI (Generic SPI master) [Driver_GSPI_MASTER] +// Configuration settings for Driver_GSPI_MASTER in component ::Drivers:GSPI +#define RTE_GSPI_MASTER 1 + +// GSPI_MASTER_CLK <0=>P0_8 <1=>P0_25 <2=>P0_46 <3=>P0_52 +// CLK of GSPI0 +#ifndef GSPI_MASTER_SCK_LOC +#define RTE_GSPI_MASTER_CLK_PORT_ID 1 + +#if (RTE_GSPI_MASTER_CLK_PORT_ID == 0) +#define RTE_GSPI_MASTER_CLK_PORT HP +#define RTE_GSPI_MASTER_CLK_PIN 8 +#define RTE_GSPI_MASTER_CLK_MUX 4 +#define RTE_GSPI_MASTER_CLK_PAD 3 +#elif (RTE_GSPI_MASTER_CLK_PORT_ID == 1) +#define RTE_GSPI_MASTER_CLK_PORT HP +#define RTE_GSPI_MASTER_CLK_PIN 25 +#define RTE_GSPI_MASTER_CLK_MUX 4 +#define RTE_GSPI_MASTER_CLK_PAD 0 //NO PAD +#elif (RTE_GSPI_MASTER_CLK_PORT_ID == 2) +#define RTE_GSPI_MASTER_CLK_PORT HP +#define RTE_GSPI_MASTER_CLK_PIN 46 +#define RTE_GSPI_MASTER_CLK_MUX 4 +#define RTE_GSPI_MASTER_CLK_PAD 10 +#elif (RTE_GSPI_MASTER_CLK_PORT_ID == 3) +#define RTE_GSPI_MASTER_CLK_PORT HP +#define RTE_GSPI_MASTER_CLK_PIN 52 +#define RTE_GSPI_MASTER_CLK_MUX 4 +#define RTE_GSPI_MASTER_CLK_PAD 16 +#else +#error "Invalid GSPI0 RTE_GSPI_MASTER_CLK_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_GSPI_MASTER_CLK_PORT HP +#define RTE_GSPI_MASTER_CLK_PIN GSPI_MASTER_SCK__PIN +#define RTE_GSPI_MASTER_CLK_MUX 4 +#if (GSPI_MASTER_SCK_LOC == 0) +#define RTE_GSPI_MASTER_CLK_PAD 3 +#endif +#if (GSPI_MASTER_SCK_LOC == 1) +#define RTE_GSPI_MASTER_CLK_PAD 0 +#endif +#if (GSPI_MASTER_SCK_LOC == 2) +#define RTE_GSPI_MASTER_CLK_PAD 10 +#endif +#if (GSPI_MASTER_SCK_LOC == 3) +#define RTE_GSPI_MASTER_CLK_PAD 16 +#endif +//Pintool data +#endif + +// GSPI_MASTER_CS0 +// <0=>P0_9 <1=>P0_28 <2=>P0_49 <3=>P0_53 +// CS0 of GSPI0 +// +#ifndef GSPI_MASTER_CS0_LOC +#define RTE_GSPI_MASTER_CS0_PORT_ID 1 + +#if (RTE_GSPI_MASTER_CS0_PORT_ID == 0) +#define RTE_GSPI_MASTER_CS0 1 +#define RTE_GSPI_MASTER_CS0_PORT HP +#define RTE_GSPI_MASTER_CS0_PIN 9 +#define RTE_GSPI_MASTER_CS0_MUX 4 +#define RTE_GSPI_MASTER_CS0_PAD 4 +#elif (RTE_GSPI_MASTER_CS0_PORT_ID == 1) +#define RTE_GSPI_MASTER_CS0 1 +#define RTE_GSPI_MASTER_CS0_PORT HP +#define RTE_GSPI_MASTER_CS0_PIN 28 +#define RTE_GSPI_MASTER_CS0_MUX 4 +#define RTE_GSPI_MASTER_CS0_PAD 0 //NO PAD +#elif (RTE_GSPI_MASTER_CS0_PORT_ID == 2) +#define RTE_GSPI_MASTER_CS0 1 +#define RTE_GSPI_MASTER_CS0_PORT HP +#define RTE_GSPI_MASTER_CS0_PIN 49 +#define RTE_GSPI_MASTER_CS0_MUX 4 +#define RTE_GSPI_MASTER_CS0_PAD 13 +#elif (RTE_GSPI_MASTER_CS0_PORT_ID == 3) +#define RTE_GSPI_MASTER_CS0 1 +#define RTE_GSPI_MASTER_CS0_PORT HP +#define RTE_GSPI_MASTER_CS0_PIN 53 +#define RTE_GSPI_MASTER_CS0_MUX 4 +#define RTE_GSPI_MASTER_CS0_PAD 17 +#else +#error "Invalid GSPI0 RTE_GSPI_MASTER_CS0_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_GSPI_MASTER_CS0 1 +#define RTE_GSPI_MASTER_CS0_PORT HP +#define RTE_GSPI_MASTER_CS0_PIN GSPI_MASTER_CS0__PIN +#define RTE_GSPI_MASTER_CS0_MUX 4 +#if (GSPI_MASTER_CS0_LOC == 4) +#define RTE_GSPI_MASTER_CS0_PAD 4 +#endif +#if (GSPI_MASTER_CS0_LOC == 5) +#define RTE_GSPI_MASTER_CS0_PAD 0 +#endif +#if (GSPI_MASTER_CS0_LOC == 6) +#define RTE_GSPI_MASTER_CS0_PAD 13 +#endif +#if (GSPI_MASTER_CS0_LOC == 7) +#define RTE_GSPI_MASTER_CS0_PAD 17 +#endif +//Pintool data +#endif + +// GSPI_MASTER_CS1 +// <0=>P0_10 <1=>P0_29 <2=>P0_50 <3=>P0_54 +// CS1 of GSPI0 +// +#ifndef GSPI_MASTER_CS1_LOC +#define RTE_GSPI_MASTER_CS1_PORT_ID 1 +#if (RTE_GSPI_MASTER_CS1_PORT_ID == 0) +#define RTE_GSPI_MASTER_CS1 1 +#define RTE_GSPI_MASTER_CS1_PORT HP +#define RTE_GSPI_MASTER_CS1_PIN 10 +#define RTE_GSPI_MASTER_CS1_MUX 4 +#define RTE_GSPI_MASTER_CS1_PAD 5 +#elif (RTE_GSPI_MASTER_CS1_PORT_ID == 1) +#define RTE_GSPI_MASTER_CS1 1 +#define RTE_GSPI_MASTER_CS1_PORT HP +#define RTE_GSPI_MASTER_CS1_PIN 29 +#define RTE_GSPI_MASTER_CS1_MUX 4 +#define RTE_GSPI_MASTER_CS1_PAD 0 //NO PAD +#elif (RTE_GSPI_MASTER_CS1_PORT_ID == 2) +#define RTE_GSPI_MASTER_CS1 1 +#define RTE_GSPI_MASTER_CS1_PORT HP +#define RTE_GSPI_MASTER_CS1_PIN 50 +#define RTE_GSPI_MASTER_CS1_MUX 4 +#define RTE_GSPI_MASTER_CS1_PAD 14 +#elif (RTE_GSPI_MASTER_CS1_PORT_ID == 3) +#define RTE_GSPI_MASTER_CS1 1 +#define RTE_GSPI_MASTER_CS1_PORT HP +#define RTE_GSPI_MASTER_CS1_PIN 54 +#define RTE_GSPI_MASTER_CS1_MUX 4 +#define RTE_GSPI_MASTER_CS1_PAD 18 +#else +#error "Invalid GSPI0 RTE_GSPI_MASTER_CS1_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_GSPI_MASTER_CS1 1 +#define RTE_GSPI_MASTER_CS1_PORT HP +#define RTE_GSPI_MASTER_CS1_PIN GSPI_MASTER_CS1__PIN +#define RTE_GSPI_MASTER_CS1_MUX 4 +#if (GSPI_MASTER_CS1_LOC == 8) +#define RTE_GSPI_MASTER_CS1_PAD 5 +#endif +#if (GSPI_MASTER_CS1_LOC == 9) +#define RTE_GSPI_MASTER_CS1_PAD 0 +#endif +#if (GSPI_MASTER_CS1_LOC == 10) +#define RTE_GSPI_MASTER_CS1_PAD 14 +#endif +#if (GSPI_MASTER_CS1_LOC == 11) +#define RTE_GSPI_MASTER_CS1_PAD 18 +#endif +//Pintool data +#endif + +// GSPI_MASTER_CS2 +// <0=>P0_15 <1=>P0_30 <2=>P0_51 <3=>P0_55 +// CS2 of GSPI0 +// +#ifndef GSPI_MASTER_CS2_LOC +#define RTE_GSPI_MASTER_CS2_PORT_ID 1 +#if (RTE_GSPI_MASTER_CS2_PORT_ID == 0) +#define RTE_GSPI_MASTER_CS2 1 +#define RTE_GSPI_MASTER_CS2_PORT HP +#define RTE_GSPI_MASTER_CS2_PIN 15 +#define RTE_GSPI_MASTER_CS2_MUX 4 +#define RTE_GSPI_MASTER_CS2_PAD 8 +#elif (RTE_GSPI_MASTER_CS2_PORT_ID == 1) +#define RTE_GSPI_MASTER_CS2 1 +#define RTE_GSPI_MASTER_CS2_PORT HP +#define RTE_GSPI_MASTER_CS2_PIN 30 +#define RTE_GSPI_MASTER_CS2_MUX 4 +#define RTE_GSPI_MASTER_CS2_PAD 0 //NO PAD +#elif (RTE_GSPI_MASTER_CS2_PORT_ID == 2) +#define RTE_GSPI_MASTER_CS2 1 +#define RTE_GSPI_MASTER_CS2_PORT HP +#define RTE_GSPI_MASTER_CS2_PIN 51 +#define RTE_GSPI_MASTER_CS2_MUX 4 +#define RTE_GSPI_MASTER_CS2_PAD 15 +#elif (RTE_GSPI_MASTER_CS2_PORT_ID == 3) +#define RTE_GSPI_MASTER_CS2 1 +#define RTE_GSPI_MASTER_CS2_PORT HP +#define RTE_GSPI_MASTER_CS2_PIN 55 +#define RTE_GSPI_MASTER_CS2_MUX 4 +#define RTE_GSPI_MASTER_CS2_PAD 19 +#else +#error "Invalid GSPI0 RTE_GSPI_MASTER_CS2_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_GSPI_MASTER_CS2 1 +#define RTE_GSPI_MASTER_CS2_PORT HP +#define RTE_GSPI_MASTER_CS2_PIN GSPI_MASTER_CS2__PIN +#define RTE_GSPI_MASTER_CS2_MUX 4 +#if (GSPI_MASTER_CS2_LOC == 12) +#define RTE_GSPI_MASTER_CS2_PAD 8 +#endif +#if (GSPI_MASTER_CS2_LOC == 13) +#define RTE_GSPI_MASTER_CS2_PAD 0 +#endif +#if (GSPI_MASTER_CS2_LOC == 14) +#define RTE_GSPI_MASTER_CS2_PAD 15 +#endif +#if (GSPI_MASTER_CS2_LOC == 15) +#define RTE_GSPI_MASTER_CS2_PAD 19 +#endif +//Pintool data +#endif + +// GSPI_MASTER_MOSI <0=>P0_12 <1=>P0_27 <2=>P0_48 <3=>P0_57 <4=>P0_6 +// MOSI of GSPI0 +#ifndef GSPI_MASTER_MOSI_LOC +#define RTE_GSPI_MASTER_MOSI_PORT_ID 1 + +#if (RTE_GSPI_MASTER_MOSI_PORT_ID == 0) +#define RTE_GSPI_MASTER_MOSI_PORT HP +#define RTE_GSPI_MASTER_MOSI_PIN 12 +#define RTE_GSPI_MASTER_MOSI_MUX 4 +#define RTE_GSPI_MASTER_MOSI_PAD 7 +#elif (RTE_GSPI_MASTER_MOSI_PORT_ID == 1) +#define RTE_GSPI_MASTER_MOSI_PORT HP +#define RTE_GSPI_MASTER_MOSI_PIN 27 +#define RTE_GSPI_MASTER_MOSI_MUX 4 +#define RTE_GSPI_MASTER_MOSI_PAD 0 //NO PAD +#elif (RTE_GSPI_MASTER_MOSI_PORT_ID == 2) +#define RTE_GSPI_MASTER_MOSI_PORT HP +#define RTE_GSPI_MASTER_MOSI_PIN 48 +#define RTE_GSPI_MASTER_MOSI_MUX 4 +#define RTE_GSPI_MASTER_MOSI_PAD 12 +#elif (RTE_GSPI_MASTER_MOSI_PORT_ID == 3) +#define RTE_GSPI_MASTER_MOSI_PORT HP +#define RTE_GSPI_MASTER_MOSI_PIN 57 +#define RTE_GSPI_MASTER_MOSI_MUX 4 +#define RTE_GSPI_MASTER_MOSI_PAD 21 +#elif (RTE_GSPI_MASTER_MOSI_PORT_ID == 4) +#define RTE_GSPI_MASTER_MOSI_PORT HP +#define RTE_GSPI_MASTER_MOSI_PIN 6 +#define RTE_GSPI_MASTER_MOSI_MUX 12 +#define RTE_GSPI_MASTER_MOSI_PAD 1 +#else +#error "Invalid GSPI0 RTE_GSPI_MASTER_MOSI_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_GSPI_MASTER_MOSI_PORT HP +#define RTE_GSPI_MASTER_MOSI_PIN GSPI_MASTER_MOSI__PIN +#if (GSPI_MASTER_MOSI_LOC == 16) +#define RTE_GSPI_MASTER_MOSI_MUX 4 +#define RTE_GSPI_MASTER_MOSI_PAD 7 +#endif +#if (GSPI_MASTER_MOSI_LOC == 17) +#define RTE_GSPI_MASTER_MOSI_MUX 4 +#define RTE_GSPI_MASTER_MOSI_PAD 0 +#endif +#if (GSPI_MASTER_MOSI_LOC == 18) +#define RTE_GSPI_MASTER_MOSI_MUX 4 +#define RTE_GSPI_MASTER_MOSI_PAD 12 +#endif +#if (GSPI_MASTER_MOSI_LOC == 19) +#define RTE_GSPI_MASTER_MOSI_MUX 4 +#define RTE_GSPI_MASTER_MOSI_PAD 21 +#endif +#if (GSPI_MASTER_MOSI_LOC == 20) +#define RTE_GSPI_MASTER_MOSI_MUX 12 +#define RTE_GSPI_MASTER_MOSI_PAD 1 +#endif +//Pintool data +#endif + +// GSPI_MASTER_MISO <0=>P0_11 <1=>P0_26 <2=>P0_47 <3=>P0_56 +// MISO of GSPI0 +#ifndef GSPI_MASTER_MISO_LOC +#define RTE_GSPI_MASTER_MISO_PORT_ID 1 + +#if (RTE_GSPI_MASTER_MISO_PORT_ID == 0) +#define RTE_GSPI_MASTER_MISO_PORT HP +#define RTE_GSPI_MASTER_MISO_PIN 11 +#define RTE_GSPI_MASTER_MISO_MUX 4 +#define RTE_GSPI_MASTER_MISO_PAD 6 +#elif (RTE_GSPI_MASTER_MISO_PORT_ID == 1) +#define RTE_GSPI_MASTER_MISO_PORT HP +#define RTE_GSPI_MASTER_MISO_PIN 26 +#define RTE_GSPI_MASTER_MISO_MUX 4 +#define RTE_GSPI_MASTER_MISO_PAD 0 //NO PAD +#elif (RTE_GSPI_MASTER_MISO_PORT_ID == 2) +#define RTE_GSPI_MASTER_MISO_PORT HP +#define RTE_GSPI_MASTER_MISO_PIN 47 +#define RTE_GSPI_MASTER_MISO_MUX 4 +#define RTE_GSPI_MASTER_MISO_PAD 11 +#elif (RTE_GSPI_MASTER_MISO_PORT_ID == 3) +#define RTE_GSPI_MASTER_MISO_PORT HP +#define RTE_GSPI_MASTER_MISO_PIN 56 +#define RTE_GSPI_MASTER_MISO_MUX 4 +#define RTE_GSPI_MASTER_MISO_PAD 20 +#else +#error "Invalid GSPI0 RTE_GSPI_MASTER_MISO_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_GSPI_MASTER_MISO_PORT HP +#define RTE_GSPI_MASTER_MISO_PIN GSPI_MASTER_MISO__PIN +#define RTE_GSPI_MASTER_MISO_MUX 4 +#if (GSPI_MASTER_MISO_LOC == 21) +#define RTE_GSPI_MASTER_MISO_PAD 6 +#endif +#if (GSPI_MASTER_MISO_LOC == 22) +#define RTE_GSPI_MASTER_MISO_PAD 0 +#endif +#if (GSPI_MASTER_MISO_LOC == 23) +#define RTE_GSPI_MASTER_MISO_PAD 11 +#endif +#if (GSPI_MASTER_MISO_LOC == 24) +#define RTE_GSPI_MASTER_MISO_PAD 20 +#endif +//Pintool data +#endif + +#if defined(HIGH_THROUGHPUT_EN) && (HIGH_THROUGHPUT_EN == ENABLE) +#define RTE_GSPI_MASTER_CHNL_UDMA_TX_EN 1 +#define RTE_GSPI_MASTER_CHNL_UDMA_TX_CH 11 + +#define RTE_GSPI_MASTER_CHNL_UDMA_RX_EN 1 +#define RTE_GSPI_MASTER_CHNL_UDMA_RX_CH 10 + +#define RTE_FIFO_AFULL_THRLD 3 +#define RTE_FIFO_AEMPTY_THRLD 7 + +#define TX_DMA_ARB_SIZE ARBSIZE_4 +#define RX_DMA_ARB_SIZE ARBSIZE_8 +#else +#define RTE_GSPI_MASTER_CHNL_UDMA_TX_EN 0 +#define RTE_GSPI_MASTER_CHNL_UDMA_TX_CH 11 + +#define RTE_GSPI_MASTER_CHNL_UDMA_RX_EN 0 +#define RTE_GSPI_MASTER_CHNL_UDMA_RX_CH 10 + +#define RTE_FIFO_AFULL_THRLD 0 +#define RTE_FIFO_AEMPTY_THRLD 0 + +#define TX_DMA_ARB_SIZE ARBSIZE_1 +#define RX_DMA_ARB_SIZE ARBSIZE_1 +#endif + +// (Generic SPI master)[Driver_GSPI_MASTER] + +// (State Configurable Timer) Interface +#define SCT_CLOCK_SOURCE CT_INTFPLLCLK +#define SCT_CLOCK_DIV_FACT 2 + +//SCT_IN_0 <0=>GPIO_25 <1=>GPIO_64 <2=>GPIO_68 + +#ifndef SCT_IN0_LOC +#define RTE_SCT_IN_0_PORT_ID 0 + +#if (RTE_SCT_IN_0_PORT_ID == 0) +#define RTE_SCT_IN_0_PORT HP +#define RTE_SCT_IN_0_PIN 25 +#define RTE_SCT_IN_0_MUX 9 +#define RTE_SCT_IN_0_PAD 0 //no pad +#else +#error "Invalid RTE_SCT_IN_0_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_SCT_IN_0_PORT HP +#if (SCT_IN0_LOC == 0) +#define RTE_SCT_IN_0_PIN SCT_IN0_PIN +#define RTE_SCT_IN_0_MUX 9 +#define RTE_SCT_IN_0_PAD 0 //no pad +#elif (SCT_IN0_LOC == 1) +#define RTE_SCT_IN_0_PIN (SCT_IN0_PIN + GPIO_MAX_PIN) +#define RTE_SCT_IN_0_MUX 7 +#define RTE_SCT_IN_0_PAD 22 +#elif (SCT_IN0_LOC == 2) +#define RTE_SCT_IN_0_PIN (SCT_IN0_PIN + GPIO_MAX_PIN) +#define RTE_SCT_IN_0_MUX 9 +#define RTE_SCT_IN_0_PAD 26 +#endif +//Pintool data +#endif + +//SCT_IN_1 <0=>GPIO_26 <1=>GPIO_65 <2=>GPIO_69 +#ifndef SCT_IN1_LOC +#define RTE_SCT_IN_1_PORT_ID 1 + +#if (RTE_SCT_IN_1_PORT_ID == 0) +#define RTE_SCT_IN_1_PORT HP +#define RTE_SCT_IN_1_PIN 26 +#define RTE_SCT_IN_1_MUX 9 +#define RTE_SCT_IN_1_PAD 0 //no pad +#elif (RTE_SCT_IN_1_PORT_ID == 1) +#define RTE_SCT_IN_1_PORT HP +#define RTE_SCT_IN_1_PIN 65 +#define RTE_SCT_IN_1_MUX 7 +#define RTE_SCT_IN_1_PAD 23 +#else +#error "Invalid RTE_SCT_IN_1_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_SCT_IN_1_PORT HP +#if (SCT_IN1_LOC == 3) +#define RTE_SCT_IN_1_PIN SCT_IN1_PIN +#define RTE_SCT_IN_1_MUX 9 +#define RTE_SCT_IN_1_PAD 0 //no pad +#endif +#if (SCT_IN1_LOC == 4) +#define RTE_SCT_IN_1_PIN (SCT_IN1_PIN + GPIO_MAX_PIN) +#define RTE_SCT_IN_1_MUX 7 +#define RTE_SCT_IN_1_PAD 23 +#endif +#if (SCT_IN1_LOC == 5) +#define RTE_SCT_IN_1_PIN (SCT_IN1_PIN + GPIO_MAX_PIN) +#define RTE_SCT_IN_1_MUX 9 +#define RTE_SCT_IN_1_PAD 27 +#endif +//Pintool data +#endif + +//SCT_IN_2 <0=>GPIO_27 <1=>GPIO_66 <2=>GPIO_70 +#ifndef SCT_IN2_LOC +#ifdef SLI_SI91X_MCU_CONFIG_RADIO_BOARD_BASE_VER +#define RTE_SCT_IN_2_PORT_ID 0 +#else +#define RTE_SCT_IN_2_PORT_ID 1 +#endif + +#if (RTE_SCT_IN_2_PORT_ID == 0) +#define RTE_SCT_IN_2_PORT HP +#define RTE_SCT_IN_2_PIN 27 +#define RTE_SCT_IN_2_MUX 9 +#define RTE_SCT_IN_2_PAD 0 //no pad +#elif (RTE_SCT_IN_2_PORT_ID == 1) +#define RTE_SCT_IN_2_PORT HP +#define RTE_SCT_IN_2_PIN 66 +#define RTE_SCT_IN_2_MUX 7 +#define RTE_SCT_IN_2_PAD 24 +#elif (RTE_SCT_IN_2_PORT_ID == 2) +#define RTE_SCT_IN_2_PORT HP +#define RTE_SCT_IN_2_PIN 70 +#define RTE_SCT_IN_2_MUX 9 +#define RTE_SCT_IN_2_PAD 28 +#else +#error "Invalid RTE_SCT_IN_0_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_SCT_IN_2_PORT HP +#if (SCT_IN2_LOC == 6) +#define RTE_SCT_IN_2_PIN SCT_IN2_PIN +#define RTE_SCT_IN_2_MUX 9 +#define RTE_SCT_IN_2_PAD 0 //no pad +#endif +#if (SCT_IN2_LOC == 7) +#define RTE_SCT_IN_2_PIN (SCT_IN2_PIN + GPIO_MAX_PIN) +#define RTE_SCT_IN_2_MUX 9 +#define RTE_SCT_IN_2_PAD 28 +#endif +//Pintool data +#endif + +//SCT_IN_3 <0=>GPIO_28 <1=>GPIO_67 <2=>GPIO_71 +#ifndef SCT_IN3_LOC +#ifdef SLI_SI91X_MCU_CONFIG_RADIO_BOARD_BASE_VER +#define RTE_SCT_IN_3_PORT_ID 0 +#else +#define RTE_SCT_IN_3_PORT_ID 1 +#endif + +#if (RTE_SCT_IN_3_PORT_ID == 0) +#define RTE_SCT_IN_3_PORT HP +#define RTE_SCT_IN_3_PIN 28 +#define RTE_SCT_IN_3_MUX 9 +#define RTE_SCT_IN_3_PAD 0 //no pad +#elif (RTE_SCT_IN_3_PORT_ID == 1) +#define RTE_SCT_IN_3_PORT HP +#define RTE_SCT_IN_3_PIN 67 +#define RTE_SCT_IN_3_MUX 7 +#define RTE_SCT_IN_3_PAD 25 +#elif (RTE_SCT_IN_3_PORT_ID == 2) +#define RTE_SCT_IN_3_PORT HP +#define RTE_SCT_IN_3_PIN 71 +#define RTE_SCT_IN_3_MUX 9 +#define RTE_SCT_IN_3_PAD 29 +#else +#error "Invalid RTE_SCT_IN_0_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_SCT_IN_3_PORT HP +#if (SCT_IN3_LOC == 8) +#define RTE_SCT_IN_3_PIN SCT_IN3_PIN +#define RTE_SCT_IN_3_MUX 9 +#define RTE_SCT_IN_3_PAD 0 //no pad +#endif +#if (SCT_IN3_LOC == 9) +#define RTE_SCT_IN_3_PIN (SCT_IN3_PIN + GPIO_MAX_PIN) +#define RTE_SCT_IN_3_MUX 9 +#define RTE_SCT_IN_3_PAD 29 +#endif +//Pintool data +#endif + +// SCT_OUT_0 <0=>GPIO_29 <1=>GPIO_68 +#ifndef SCT_OUT0_LOC +#define RTE_SCT_OUT_0_PORT_ID 0 +#if (RTE_SCT_OUT_0_PORT_ID == 0) +#define RTE_SCT_OUT_0_PORT HP +#define RTE_SCT_OUT_0_PIN 29 +#define RTE_SCT_OUT_0_MUX 9 +#define RTE_SCT_OUT_0_PAD 0 //no pad +#else +#error "Invalid RTE_SCT_OUT_0_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_SCT_OUT_0_PORT HP +#if (SCT_OUT0_LOC == 10) +#define RTE_SCT_OUT_0_PIN SCT_OUT0_PIN +#define RTE_SCT_OUT_0_MUX 9 +#define RTE_SCT_OUT_0_PAD 0 //no pad +#elif (SCT_OUT0_LOC == 11) +#define RTE_SCT_OUT_0_PIN (SCT_OUT0_PIN + GPIO_MAX_PIN) +#define RTE_SCT_OUT_0_MUX 7 +#define RTE_SCT_OUT_0_PAD 26 +#endif +//Pintool data +#endif + +// SCT_OUT_1 <0=>GPIO_30 <1=>GPIO_69 +#ifndef SCT_OUT1_LOC +#define RTE_SCT_OUT_1_PORT_ID 0 +#if (RTE_SCT_OUT_1_PORT_ID == 0) +#define RTE_SCT_OUT_1_PORT HP +#define RTE_SCT_OUT_1_PIN 30 +#define RTE_SCT_OUT_1_MUX 9 +#define RTE_SCT_OUT_1_PAD 0 //no pad +#else +#error "Invalid RTE_SCT_OUT_1_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_SCT_OUT_1_PORT HP +#if (SCT_OUT1_LOC == 12) +#define RTE_SCT_OUT_1_PIN SCT_OUT1_PIN +#define RTE_SCT_OUT_1_MUX 9 +#define RTE_SCT_OUT_1_PAD 0 //no pad +#elif (SCT_OUT1_LOC == 13) +#define RTE_SCT_OUT_1_PIN (SCT_OUT1_PIN + GPIO_MAX_PIN) +#define RTE_SCT_OUT_1_MUX 7 +#define RTE_SCT_OUT_1_PAD 27 +#endif +//Pintool data +#endif + +//Pintool data +#define RTE_SCT_OUT_2_PORT HP +#define RTE_SCT_OUT_2_PIN SCT_OUT2_PIN +#define RTE_SCT_OUT_2_MUX 7 +#define RTE_SCT_OUT_2_PAD 28 +//Pintool data + +//Pintool data +#define RTE_SCT_OUT_3_PORT HP +#define RTE_SCT_OUT_3_PIN SCT_OUT3_PIN +#define RTE_SCT_OUT_3_MUX 7 +#define RTE_SCT_OUT_3_PAD 29 +//Pintool data + +//Pintool data +#define RTE_SCT_OUT_4_PORT HP +#define RTE_SCT_OUT_4_PIN SCT_OUT4_PIN +#define RTE_SCT_OUT_4_MUX 7 +#define RTE_SCT_OUT_4_PAD 30 +//Pintool data + +//Pintool data +#define RTE_SCT_OUT_5_PORT HP +#define RTE_SCT_OUT_5_PIN SCT_OUT5_PIN +#define RTE_SCT_OUT_5_MUX 7 +#define RTE_SCT_OUT_5_PAD 31 +//Pintool data + +//Pintool data +#define RTE_SCT_OUT_6_PORT HP +#define RTE_SCT_OUT_6_PIN SCT_OUT6_PIN +#define RTE_SCT_OUT_6_MUX 7 +#define RTE_SCT_OUT_6_PAD 32 +//Pintool data + +//Pintool data +#define RTE_SCT_OUT_7_PORT HP +#define RTE_SCT_OUT_7_PIN SCT_OUT7_PIN +#define RTE_SCT_OUT_7_MUX 7 +#define RTE_SCT_OUT_7_PAD 33 +//Pintool data + +// SIO // +//<> Serial Input Output +//SIO_0 <0=>GPIO_6 <1=>GPIO_25 <2=>GPIO_64 <3=>GPIO_72 +#ifndef SIO_0_LOC +#define RTE_SIO_0_PORT_ID 0 + +#if (RTE_SIO_0_PORT_ID == 0) +#define RTE_SIO_0_PORT HP +#define RTE_SIO_0_PIN 6 +#define RTE_SIO_0_MUX 1 +#define RTE_SIO_0_PAD 1 +#elif (RTE_SIO_0_PORT_ID == 1) +#define RTE_SIO_0_PORT HP +#define RTE_SIO_0_PIN 25 +#define RTE_SIO_0_MUX 1 +#define RTE_SIO_0_PAD 0 //no pad +#elif (RTE_SIO_0_PORT_ID == 2) +#define RTE_SIO_0_PORT HP +#define RTE_SIO_0_PIN 72 +#define RTE_SIO_0_MUX 1 +#define RTE_SIO_0_PAD 30 +#else +#error "Invalid RTE_SIO_0_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_SIO_0_PORT SIO_SIO0_PORT +#define RTE_SIO_0_MUX 1 +#if (SIO_0_LOC == 0) +#define RTE_SIO_0_PIN SIO_SIO0_PIN +#define RTE_SIO_0_PAD 1 +#endif +#if (SIO_0_LOC == 1) +#define RTE_SIO_0_PIN SIO_SIO0_PIN +#define RTE_SIO_0_PAD 0 +#endif +#if (SIO_0_LOC == 2) +#define RTE_SIO_0_PIN (SIO_SIO0_PIN + GPIO_MAX_PIN) +#define RTE_SIO_0_PAD 22 +#endif +#if (SIO_0_LOC == 3) +#define RTE_SIO_0_PIN (SIO_SIO0_PIN + GPIO_MAX_PIN) +#define RTE_SIO_0_PAD 30 +#endif +//Pintool data +#endif + +//SIO_1 <0=>GPIO_7 <1=>GPIO_26 <2=>GPIO_65 <3=>GPIO_73 +#ifndef SIO_1_LOC +#ifdef SLI_SI91X_MCU_CONFIG_RADIO_BOARD_BASE_VER +#define RTE_SIO_1_PORT_ID 1 +#else +#define RTE_SIO_1_PORT_ID 0 +#endif + +#if (RTE_SIO_1_PORT_ID == 0) +#define RTE_SIO_1_PORT HP +#define RTE_SIO_1_PIN 7 +#define RTE_SIO_1_MUX 1 +#define RTE_SIO_1_PAD 2 +#elif (RTE_SIO_1_PORT_ID == 1) +#define RTE_SIO_1_PORT HP +#define RTE_SIO_1_PIN 26 +#define RTE_SIO_1_MUX 1 +#define RTE_SIO_1_PAD 0 // no pad +#elif (RTE_SIO_1_PORT_ID == 2) +#define RTE_SIO_1_PORT HP +#define RTE_SIO_1_PIN 65 +#define RTE_SIO_1_MUX 1 +#define RTE_SIO_1_PAD 23 +#elif (RTE_SIO_1_PORT_ID == 3) +#define RTE_SIO_1_PORT HP +#define RTE_SIO_1_PIN 73 +#define RTE_SIO_1_MUX 1 +#define RTE_SIO_1_PAD 31 +#else +#error "Invalid RTE_SIO_1_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_SIO_1_PORT SIO_SIO1_PORT +#define RTE_SIO_1_MUX 1 +#if (SIO_1_LOC == 4) +#define RTE_SIO_1_PIN SIO_SIO1_PIN +#define RTE_SIO_1_PAD 2 +#endif +#if (SIO_1_LOC == 5) +#define RTE_SIO_1_PIN SIO_SIO1_PIN +#define RTE_SIO_1_PAD 0 +#endif +#if (SIO_1_LOC == 6) +#define RTE_SIO_1_PIN (SIO_SIO1_PIN + GPIO_MAX_PIN) +#define RTE_SIO_1_PAD 23 +#endif +#if (SIO_1_LOC == 7) +#define RTE_SIO_1_PIN (SIO_SIO1_PIN + GPIO_MAX_PIN) +#define RTE_SIO_1_PAD 31 +#endif +//Pintool data +#endif + +// SIO_2 <0=>GPIO_8 <1=>GPIO_27 <2=>GPIO_66 <3=>GPIO_74 +#ifndef SIO_2_LOC +#define RTE_SIO_2_PORT_ID 1 + +#if (RTE_SIO_2_PORT_ID == 0) +#define RTE_SIO_2_PORT HP +#define RTE_SIO_2_PIN 8 +#define RTE_SIO_2_MUX 1 +#define RTE_SIO_2_PAD 3 +#elif (RTE_SIO_2_PORT_ID == 1) +#define RTE_SIO_2_PORT HP +#define RTE_SIO_2_PIN 27 +#define RTE_SIO_2_MUX 1 +#define RTE_SIO_2_PAD 0 //no pad +#elif (RTE_SIO_2_PORT_ID == 2) +#define RTE_SIO_2_PORT HP +#define RTE_SIO_2_PIN 66 +#define RTE_SIO_2_MUX 1 +#define RTE_SIO_2_PAD 24 +#elif (RTE_SIO_2_PORT_ID == 3) +#define RTE_SIO_2_PORT HP +#define RTE_SIO_2_PIN 74 +#define RTE_SIO_2_MUX 1 +#define RTE_SIO_2_PAD 32 +#else +#error "Invalid RTE_SIO_2_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_SIO_2_PORT SIO_SIO2_PORT +#define RTE_SIO_2_MUX 1 +#if (SIO_2_LOC == 8) +#define RTE_SIO_2_PIN SIO_SIO2_PIN +#define RTE_SIO_2_PAD 3 +#endif +#if (SIO_2_LOC == 9) +#define RTE_SIO_2_PIN SIO_SIO2_PIN +#define RTE_SIO_2_PAD 0 +#endif +#if (SIO_2_LOC == 10) +#define RTE_SIO_2_PIN (SIO_SIO2_PIN + GPIO_MAX_PIN) +#define RTE_SIO_2_PAD 32 +#endif +//Pintool data +#endif + +//SIO_3 <0=>GPIO_9 <1=>GPIO_28 <2=>GPIO_67 <3=>GPIO_75 +#ifndef SIO_3_LOC +#define RTE_SIO_3_PORT_ID 1 + +#if (RTE_SIO_3_PORT_ID == 0) +#define RTE_SIO_3_PORT HP +#define RTE_SIO_3_PIN 9 +#define RTE_SIO_3_MUX 1 +#define RTE_SIO_3_PAD 4 +#elif (RTE_SIO_3_PORT_ID == 1) +#define RTE_SIO_3_PORT HP +#define RTE_SIO_3_PIN 28 +#define RTE_SIO_3_MUX 1 +#define RTE_SIO_3_PAD 0 //no pad +#elif (RTE_SIO_3_PORT_ID == 2) +#define RTE_SIO_3_PORT HP +#define RTE_SIO_3_PIN 67 +#define RTE_SIO_3_MUX 1 +#define RTE_SIO_3_PAD 25 +#elif (RTE_SIO_3_PORT_ID == 3) +#define RTE_SIO_3_PORT HP +#define RTE_SIO_3_PIN 75 +#define RTE_SIO_3_MUX 1 +#define RTE_SIO_3_PAD 33 +#else +#error "Invalid RTE_SIO_3_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_SIO_3_PORT SIO_SIO3_PORT +#define RTE_SIO_3_MUX 1 +#if (SIO_3_LOC == 11) +#define RTE_SIO_3_PIN SIO_SIO3_PIN +#define RTE_SIO_3_PAD 4 +#endif +#if (SIO_3_LOC == 12) +#define RTE_SIO_3_PIN SIO_SIO3_PIN +#define RTE_SIO_3_PAD 0 +#endif +#if (SIO_3_LOC == 13) +#define RTE_SIO_3_PIN (SIO_SIO3_PIN + GPIO_MAX_PIN) +#define RTE_SIO_3_PAD 33 +#endif +//Pintool data +#endif + +//SIO_4 <0=>GPIO_10 <1=>GPIO_29 <2=>GPIO_68 +#ifndef SIO_4_LOC +#ifdef SLI_SI91X_MCU_CONFIG_RADIO_BOARD_BASE_VER +#define RTE_SIO_4_PORT_ID 1 +#else +#define RTE_SIO_4_PORT_ID 0 +#endif +#if (RTE_SIO_4_PORT_ID == 0) +#define RTE_SIO_4_PORT HP +#define RTE_SIO_4_PIN 10 +#define RTE_SIO_4_MUX 1 +#define RTE_SIO_4_PAD 5 +#elif (RTE_SIO_4_PORT_ID == 1) +#define RTE_SIO_4_PORT HP +#define RTE_SIO_4_PIN 29 +#define RTE_SIO_4_MUX 1 +#define RTE_SIO_4_PAD 0 //NO PAD +#else +#error "Invalid RTE_SIO_3_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_SIO_4_PORT SIO_SIO4_PORT +#define RTE_SIO_4_MUX 1 +#if (SIO_4_LOC == 14) +#define RTE_SIO_4_PAD 5 +#define RTE_SIO_4_PIN SIO_SIO4_PIN +#endif +#if (SIO_4_LOC == 15) +#define RTE_SIO_4_PAD 0 +#define RTE_SIO_4_PIN SIO_SIO4_PIN +#endif +#if (SIO_4_LOC == 16) +#define RTE_SIO_4_PAD 26 +#define RTE_SIO_4_PIN (SIO_SIO4_PIN + GPIO_MAX_PIN) +#endif +//Pintool data +#endif + +// SIO_5 <0=>GPIO_11 <1=>GPIO_30 <2=>GPIO_69 +#ifndef SIO_5_LOC +#define RTE_SIO_5_PORT_ID 0 +#if (RTE_SIO_5_PORT_ID == 0) +#define RTE_SIO_5_PORT HP +#define RTE_SIO_5_PIN 11 +#define RTE_SIO_5_MUX 1 +#define RTE_SIO_5_PAD 6 +#elif (RTE_SIO_5_PORT_ID == 1) +#define RTE_SIO_5_PORT HP +#define RTE_SIO_5_PIN 30 +#define RTE_SIO_5_MUX 1 +#define RTE_SIO_5_PAD 0 //no pad +#else +#error "Invalid RTE_SIO_5_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_SIO_5_PORT SIO_SIO5_PORT +#define RTE_SIO_5_MUX 1 +#if (SIO_5_LOC == 17) +#define RTE_SIO_5_PAD 6 +#define RTE_SIO_5_PIN SIO_SIO5_PIN +#endif +#if (SIO_5_LOC == 18) +#define RTE_SIO_5_PAD 0 +#define RTE_SIO_5_PIN SIO_SIO5_PIN +#endif +#if (SIO_5_LOC == 19) +#define RTE_SIO_5_PAD 0 +#define RTE_SIO_5_PIN (SIO_SIO5_PIN + GPIO_MAX_PIN) +#endif +//Pintool data +#endif + +// SIO_6 GPIO_70 +#ifndef SIO_6_LOC +#define RTE_SIO_6_PORT HP +#define RTE_SIO_6_PIN 70 +#else +#define RTE_SIO_6_PORT SIO_SIO6_PORT +#define RTE_SIO_6_PIN (SIO_SIO6_PIN + GPIO_MAX_PIN) +#endif +#define RTE_SIO_6_MUX 1 +#define RTE_SIO_6_PAD 28 + +// SIO_7 <0=>GPIO_15 <1=>GPIO_71 +#ifndef SIO_7_LOC +#ifdef SLI_SI91X_MCU_CONFIG_RADIO_BOARD_BASE_VER +#define RTE_SIO_7_PORT_ID 1 +#else +#define RTE_SIO_7_PORT_ID 0 +#endif + +#if (RTE_SIO_7_PORT_ID == 0) +#define RTE_SIO_7_PORT HP +#define RTE_SIO_7_PIN 15 +#define RTE_SIO_7_MUX 1 +#define RTE_SIO_7_PAD 8 +#elif (RTE_SIO_7_PORT_ID == 1) +#define RTE_SIO_7_PORT HP +#define RTE_SIO_7_PIN 71 +#define RTE_SIO_7_MUX 1 +#define RTE_SIO_7_PAD 29 +#else +#error "Invalid RTE_SIO_7_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_SIO_7_PORT SIO_SIO7_PORT +#define RTE_SIO_7_MUX 1 +#if (SIO_7_LOC == 21) +#define RTE_SIO_7_PIN SIO_SIO7_PIN +#define RTE_SIO_7_PAD 8 +#endif +#if (SIO_7_LOC == 22) +#define RTE_SIO_7_PIN (SIO_SIO7_PIN + GPIO_MAX_PIN) +#define RTE_SIO_7_PAD 29 +#endif +//Pintool data +#endif + +//<> Pulse Width Modulation +//PWM_1H <0=>GPIO_7 <1=>GPIO_64 <2=>GPIO_65 +#ifndef PWM_CH0_0H_LOC +#ifdef SLI_SI91X_MCU_CONFIG_RADIO_BOARD_BASE_VER +#define RTE_PWM_1H_PORT_ID 0 +#else +#define RTE_PWM_1H_PORT_ID 0 +#endif + +#if (RTE_PWM_1H_PORT_ID == 0) +#define RTE_PWM_1H_PORT HP +#define RTE_PWM_1H_PIN 7 +#define RTE_PWM_1H_MUX 10 +#define RTE_PWM_1H_PAD 2 +#elif (RTE_PWM_1H_PORT_ID == 1) +#define RTE_PWM_1H_PORT HP +#define RTE_PWM_1H_PIN 65 +#define RTE_PWM_1H_MUX 8 +#define RTE_PWM_1H_PAD 23 +#else +#error "Invalid RTE_PWM_1H_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_PWM_1H_PORT HP +#if (PWM_CH0_0H_LOC == 0) +#define RTE_PWM_1H_PIN PWM_CH0_0H_PIN +#define RTE_PWM_1H_MUX 10 +#define RTE_PWM_1H_PAD 2 +#endif +#if (PWM_CH0_0H_LOC == 1) +#define RTE_PWM_1H_PIN (PWM_CH0_0H_PIN + GPIO_MAX_PIN) +#define RTE_PWM_1H_MUX 8 +#define RTE_PWM_1H_PAD 23 +#endif +//Pintool data +#endif + +// PWM_1L <0=>GPIO_6 <1=>GPIO_64 <2=>GPIO_64 +#ifndef PWM_CH0_0L_LOC +#ifdef SLI_SI91X_MCU_CONFIG_RADIO_BOARD_BASE_VER +#define RTE_PWM_1L_PORT_ID 0 +#else +#define RTE_PWM_1L_PORT_ID 1 +#endif + +#if (RTE_PWM_1L_PORT_ID == 0) +#define RTE_PWM_1L_PORT HP +#define RTE_PWM_1L_PIN 6 +#define RTE_PWM_1L_MUX 10 +#define RTE_PWM_1L_PAD 1 +#else +#error "Invalid RTE_PWM_1L_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_PWM_1L_PORT HP +#if (PWM_CH0_0L_LOC == 2) +#define RTE_PWM_1L_PIN PWM_CH0_0L_PIN +#define RTE_PWM_1L_MUX 10 +#define RTE_PWM_1L_PAD 1 +#elif (PWM_CH0_0L_LOC == 3) +#define RTE_PWM_1L_PIN (PWM_CH0_0L_PIN + GPIO_MAX_PIN) +#define RTE_PWM_1L_MUX 8 +#define RTE_PWM_1L_PAD 22 +#endif +//Pintool data +#endif + +//PWM_2H <0=>GPIO_9 <1=>GPIO_67 <2=>GPIO_69 +#ifndef PWM_CH1_1H_LOC +#define RTE_PWM_2H_PORT_ID 0 +#if ((RTE_PWM_2H_PORT_ID == 2)) +#error "Invalid RTE_PWM_2H_PIN pin Configuration!" +#endif + +#if (RTE_PWM_2H_PORT_ID == 0) +#define RTE_PWM_2H_PORT HP +#define RTE_PWM_2H_PIN 9 +#define RTE_PWM_2H_MUX 10 +#define RTE_PWM_2H_PAD 4 +#elif (RTE_PWM_2H_PORT_ID == 1) +#define RTE_PWM_2H_PORT HP +#define RTE_PWM_2H_PIN 67 +#define RTE_PWM_2H_MUX 8 +#define RTE_PWM_2H_PAD 25 +#else +#error "Invalid RTE_PWM_2H_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_PWM_2H_PORT HP +#if (PWM_CH1_1H_LOC == 4) +#define RTE_PWM_2H_PIN PWM_CH1_1H_PIN +#define RTE_PWM_2H_MUX 10 +#define RTE_PWM_2H_PAD 4 +#endif +#if (PWM_CH1_1H_LOC == 5) +#define RTE_PWM_2H_PIN (PWM_CH1_1H_PIN + GPIO_MAX_PIN) +#define RTE_PWM_2H_MUX 12 +#define RTE_PWM_2H_PAD 27 +#endif +//Pintool data +#endif + +// PWM_2L <0=>GPIO_8 <1=>GPIO_66 <2=>GPIO_68 +#ifndef PWM_CH1_1L_LOC +#define RTE_PWM_2L_PORT_ID 0 +#if ((RTE_PWM_2L_PORT_ID == 2)) +#error "Invalid RTE_PWM_2L_PIN pin Configuration!" +#endif + +#if (RTE_PWM_2L_PORT_ID == 0) +#define RTE_PWM_2L_PORT HP +#define RTE_PWM_2L_PIN 8 +#define RTE_PWM_2L_MUX 10 +#define RTE_PWM_2L_PAD 3 +#elif (RTE_PWM_2L_PORT_ID == 1) +#define RTE_PWM_2L_PORT HP +#define RTE_PWM_2L_PIN 66 +#define RTE_PWM_2L_MUX 8 +#define RTE_PWM_2L_PAD 24 +#else +#error "Invalid RTE_PWM_2L_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_PWM_2L_PORT HP +#if (PWM_CH1_1L_LOC == 6) +#define RTE_PWM_2L_PIN PWM_CH1_1L_PIN +#define RTE_PWM_2L_MUX 10 +#define RTE_PWM_2L_PAD 3 +#endif +#if (PWM_CH1_1L_LOC == 7) +#define RTE_PWM_2L_PIN (PWM_CH1_1L_PIN + GPIO_MAX_PIN) +#define RTE_PWM_2L_MUX 8 +#define RTE_PWM_2L_PAD 24 +#endif +#if (PWM_CH1_1L_LOC == 8) +#define RTE_PWM_2L_PIN (PWM_CH1_1L_PIN + GPIO_MAX_PIN) +#define RTE_PWM_2L_MUX 12 +#define RTE_PWM_2L_PAD 26 +#endif +//Pintool data +#endif + +// PWM_3H <0=>GPIO_11 <1=>GPIO_69 +#ifndef PWM_CH2_2H_LOC +#define RTE_PWM_3H_PORT_ID 0 +#if (RTE_PWM_3H_PORT_ID == 0) +#define RTE_PWM_3H_PORT HP +#define RTE_PWM_3H_PIN 11 +#define RTE_PWM_3H_MUX 10 +#define RTE_PWM_3H_PAD 6 +#else +#error "Invalid RTE_PWM_3H_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_PWM_3H_PORT HP +#if (PWM_CH2_2H_LOC == 9) +#define RTE_PWM_3H_PIN PWM_CH2_2H_PIN +#define RTE_PWM_3H_MUX 10 +#define RTE_PWM_3H_PAD 6 +#elif (PWM_CH2_2H_LOC == 10) +#define RTE_PWM_3H_PIN (PWM_CH2_2H_PIN + GPIO_MAX_PIN) +#define RTE_PWM_3H_MUX 8 +#define RTE_PWM_3H_PAD 27 +#endif +//Pintool data +#endif + +// PWM_3L <0=>GPIO_10 <1=>GPIO_68 +#ifndef PWM_CH2_2L_LOC +#define RTE_PWM_3L_PORT_ID 0 + +#if (RTE_PWM_3L_PORT_ID == 0) +#define RTE_PWM_3L_PORT HP +#define RTE_PWM_3L_PIN 10 +#define RTE_PWM_3L_MUX 10 +#define RTE_PWM_3L_PAD 5 +#else +#error "Invalid RTE_PWM_3L_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_PWM_3L_PORT HP +#if (PWM_CH2_2L_LOC == 11) +#define RTE_PWM_3L_PIN PWM_CH2_2L_PIN +#define RTE_PWM_3L_MUX 10 +#define RTE_PWM_3L_PAD 5 +#elif (PWM_CH2_2L_LOC == 12) +#define RTE_PWM_3L_PIN (PWM_CH2_2L_PIN + GPIO_MAX_PIN) +#define RTE_PWM_3L_MUX 8 +#define RTE_PWM_3L_PAD 26 +#endif +//Pintool data +#endif + +// PWM_4H <0=>GPIO_15 <1=>GPIO_71 +#ifndef PWM_CH3_3H_LOC +#ifdef SLI_SI91X_MCU_CONFIG_RADIO_BOARD_BASE_VER +#define RTE_PWM_4H_PORT_ID 1 +#else +#define RTE_PWM_4H_PORT_ID 0 +#endif + +#if (RTE_PWM_4H_PORT_ID == 0) +#define RTE_PWM_4H_PORT HP +#define RTE_PWM_4H_PIN 15 +#define RTE_PWM_4H_MUX 10 +#define RTE_PWM_4H_PAD 8 +#elif (RTE_PWM_4H_PORT_ID == 1) +#define RTE_PWM_4H_PORT HP +#define RTE_PWM_4H_PIN 71 +#define RTE_PWM_4H_MUX 8 +#define RTE_PWM_4H_PAD 29 +#else +#error "Invalid RTE_PWM_4H_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_PWM_4H_PORT HP +#if (PWM_CH3_3H_LOC == 38) +#define RTE_PWM_4H_PIN PWM_CH3_3H_PIN +#define RTE_PWM_4H_MUX 10 +#define RTE_PWM_4H_PAD 8 +#elif (PWM_CH3_3H_LOC == 13) +#define RTE_PWM_4H_PIN (PWM_CH3_3H_PIN + GPIO_MAX_PIN) +#define RTE_PWM_4H_MUX 8 +#define RTE_PWM_4H_PAD 29 +#endif +//Pintool data +#endif + +// PWM_4H <0=>GPIO_12 <1=>GPIO_70 +#ifndef PWM_CH3_3L_LOC +#ifdef SLI_SI91X_MCU_CONFIG_RADIO_BOARD_BASE_VER +#define RTE_PWM_4L_PORT_ID 1 +#else +#define RTE_PWM_4L_PORT_ID 0 +#endif + +#if (RTE_PWM_4L_PORT_ID == 0) +#define RTE_PWM_4L_PORT HP +#define RTE_PWM_4L_PIN 12 +#define RTE_PWM_4L_MUX 10 +#define RTE_PWM_4L_PAD 7 +#elif (RTE_PWM_4L_PORT_ID == 1) +#define RTE_PWM_4L_PORT HP +#define RTE_PWM_4L_PIN 70 +#define RTE_PWM_4L_MUX 8 +#define RTE_PWM_4L_PAD 28 +#else +#error "Invalid RTE_PWM_4L_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_PWM_4L_PORT HP +#if (PWM_CH3_3L_LOC == 14) +#define RTE_PWM_4L_PIN PWM_CH3_3L_PIN +#define RTE_PWM_4L_MUX 10 +#define RTE_PWM_4L_PAD 7 +#endif +#if (PWM_CH3_3L_LOC == 15) +#define RTE_PWM_4L_PIN (PWM_CH3_3L_PIN + GPIO_MAX_PIN) +#define RTE_PWM_4L_MUX 8 +#define RTE_PWM_4L_PAD 28 +#endif +//Pintool data +#endif + +// PWM_FAULTA <0=>GPIO_25 <1=>GPIO_68 <1=>GPIO_73 +#ifndef PWM_FAULTA_LOC +#define RTE_PWM_FAULTA_PORT_ID 0 + +#if (RTE_PWM_FAULTA_PORT_ID == 0) +#define RTE_PWM_FAULTA_PORT HP +#define RTE_PWM_FAULTA_PIN 25 +#define RTE_PWM_FAULTA_MUX 10 +#define RTE_PWM_FAULTA_PAD 0 //no pad +#elif (RTE_PWM_FAULTA_PORT_ID == 2) +#define RTE_PWM_FAULTA_PORT HP +#define RTE_PWM_FAULTA_PIN 73 +#define RTE_PWM_FAULTA_MUX 8 +#define RTE_PWM_FAULTA_PAD 31 +#else +#error "Invalid RTE_PWM_FAULTA_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_PWM_FAULTA_PORT HP +#if (PWM_FAULTA_LOC == 16) +#define RTE_PWM_FAULTA_PIN PWM_FAULTA_PIN +#define RTE_PWM_FAULTA_MUX 10 +#define RTE_PWM_FAULTA_PAD 0 //no pad +#endif +#if (PWM_FAULTA_LOC == 17) +#define RTE_PWM_FAULTA_PIN (PWM_FAULTA_PIN + GPIO_MAX_PIN) +#define RTE_PWM_FAULTA_MUX 10 +#define RTE_PWM_FAULTA_PAD 26 +#endif +#if (PWM_FAULTA_LOC == 18) +#define RTE_PWM_FAULTA_PIN (PWM_FAULTA_PIN + GPIO_MAX_PIN) +#define RTE_PWM_FAULTA_MUX 8 +#define RTE_PWM_FAULTA_PAD 31 +#endif +//Pintool data +#endif + +// PWM_FAULTB <0=>GPIO_26 <1=>GPIO_69 <1=>GPIO_74 +#ifndef PWM_FAULTB_LOC +#define RTE_PWM_FAULTB_PORT_ID 0 + +#if (RTE_PWM_FAULTB_PORT_ID == 0) +#define RTE_PWM_FAULTB_PORT HP +#define RTE_PWM_FAULTB_PIN 26 +#define RTE_PWM_FAULTB_MUX 10 +#define RTE_PWM_FAULTB_PAD 0 //no pad +#elif (RTE_PWM_FAULTB_PORT_ID == 2) +#define RTE_PWM_FAULTB_PORT HP +#define RTE_PWM_FAULTB_PIN 74 +#define RTE_PWM_FAULTB_MUX 8 +#define RTE_PWM_FAULTB_PAD 32 +#else +#error "Invalid RTE_PWM_FAULTB_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_PWM_FAULTB_PORT HP +#if (PWM_FAULTB_LOC == 19) +#define RTE_PWM_FAULTB_PIN PWM_FAULTB_PIN +#define RTE_PWM_FAULTB_MUX 10 +#define RTE_PWM_FAULTB_PAD 0 //no pad +#endif +#if (PWM_FAULTB_LOC == 20) +#define RTE_PWM_FAULTB_PIN (PWM_FAULTB_PIN + GPIO_MAX_PIN) +#define RTE_PWM_FAULTB_MUX 10 +#define RTE_PWM_FAULTB_PAD 27 +#endif +#if (PWM_FAULTB_LOC == 21) +#define RTE_PWM_FAULTB_PIN (PWM_FAULTB_PIN + GPIO_MAX_PIN) +#define RTE_PWM_FAULTB_MUX 8 +#define RTE_PWM_FAULTB_PAD 32 +#endif +//Pintool data +#endif + +//PWM_SLP_EVENT_TRIG GPIO_72 +#ifndef PWM_EVTTRIG_LOC +#define RTE_PWM_SLP_EVENT_TRIG_PORT HP +#define RTE_PWM_SLP_EVENT_TRIG_PIN 72 +#else +//Pintool data +#define RTE_PWM_SLP_EVENT_TRIG_PORT HP +#define RTE_PWM_SLP_EVENT_TRIG_PIN (PWM_SLEEP_EVT_TRIG_PIN + GPIO_MAX_PIN) +//Pintool data +#endif +#define RTE_PWM_SLP_EVENT_TRIG_MUX 8 +#define RTE_PWM_SLP_EVENT_TRIG_PAD 30 + +//PWM_TMR_EXT_TRIG_1 <0=>GPIO_27 <1=>GPIO_51 <2=>GPIO_70 <3=>GPIO_75 +#ifndef PWM_EXTTRIG1_LOC +#define RTE_PWM_TMR_EXT_TRIG_1_PORT_ID 0 + +#if (RTE_PWM_TMR_EXT_TRIG_1_PORT_ID == 0) +#define RTE_PWM_TMR_EXT_TRIG_1_PORT HP +#define RTE_PWM_TMR_EXT_TRIG_1_PIN 27 +#define RTE_PWM_TMR_EXT_TRIG_1_MUX 10 +#define RTE_PWM_TMR_EXT_TRIG_1_PAD 0 //no pad +#elif (RTE_PWM_TMR_EXT_TRIG_1_PORT_ID == 1) +#define RTE_PWM_TMR_EXT_TRIG_1_PORT HP +#define RTE_PWM_TMR_EXT_TRIG_1_PIN 51 +#define RTE_PWM_TMR_EXT_TRIG_1_MUX 8 +#define RTE_PWM_TMR_EXT_TRIG_1_PAD 15 +#elif (RTE_PWM_TMR_EXT_TRIG_1_PORT_ID == 2) +#define RTE_PWM_TMR_EXT_TRIG_1_PORT HP +#define RTE_PWM_TMR_EXT_TRIG_1_PIN 70 +#define RTE_PWM_TMR_EXT_TRIG_1_MUX 10 +#define RTE_PWM_TMR_EXT_TRIG_1_PAD 28 +#elif (RTE_PWM_TMR_EXT_TRIG_1_PORT_ID == 3) +#define RTE_PWM_TMR_EXT_TRIG_1_PORT HP +#define RTE_PWM_TMR_EXT_TRIG_1_PIN 75 +#define RTE_PWM_TMR_EXT_TRIG_1_MUX 8 +#define RTE_PWM_TMR_EXT_TRIG_1_PAD 33 +#else +#error "Invalid RTE_PWM_TMR_EXT_TRIG_1_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_PWM_TMR_EXT_TRIG_1_PORT HP +#if (PWM_EXTTRIG1_LOC == 22) +#define RTE_PWM_TMR_EXT_TRIG_1_PIN PWM_TMR_EXT_TRIG_1_PIN +#define RTE_PWM_TMR_EXT_TRIG_1_MUX 10 +#define RTE_PWM_TMR_EXT_TRIG_1_PAD 0 //no pad +#endif +#if (PWM_EXTTRIG1_LOC == 23) +#define RTE_PWM_TMR_EXT_TRIG_1_PIN PWM_TMR_EXT_TRIG_1_PIN +#define RTE_PWM_TMR_EXT_TRIG_1_MUX 8 +#define RTE_PWM_TMR_EXT_TRIG_1_PAD 15 +#endif +#if (PWM_EXTTRIG1_LOC == 24) +#define RTE_PWM_TMR_EXT_TRIG_1_PIN (PWM_TMR_EXT_TRIG_1_PIN + GPIO_MAX_PIN) +#define RTE_PWM_TMR_EXT_TRIG_1_MUX 10 +#define RTE_PWM_TMR_EXT_TRIG_1_PAD 28 +#endif +#if (PWM_EXTTRIG1_LOC == 25) +#define RTE_PWM_TMR_EXT_TRIG_1_PIN (PWM_TMR_EXT_TRIG_1_PIN + GPIO_MAX_PIN) +#define RTE_PWM_TMR_EXT_TRIG_1_MUX 8 +#define RTE_PWM_TMR_EXT_TRIG_1_PAD 33 +#endif +//Pintool data +#endif + +//PWM_TMR_EXT_TRIG_2 <0=>GPIO_28 <1=>GPIO_54 <2=>GPIO_71 +#ifndef PWM_EXTTRIG2_LOC +#define RTE_PWM_TMR_EXT_TRIG_2_PORT_ID 0 + +#if (RTE_PWM_TMR_EXT_TRIG_2_PORT_ID == 0) +#define RTE_PWM_TMR_EXT_TRIG_2_PORT HP +#define RTE_PWM_TMR_EXT_TRIG_2_PIN 28 +#define RTE_PWM_TMR_EXT_TRIG_2_MUX 10 +#define RTE_PWM_TMR_EXT_TRIG_2_PAD 0 //no pad +#elif (RTE_PWM_TMR_EXT_TRIG_2_PORT_ID == 1) +#define RTE_PWM_TMR_EXT_TRIG_2_PORT HP +#define RTE_PWM_TMR_EXT_TRIG_2_PIN 54 +#define RTE_PWM_TMR_EXT_TRIG_2_MUX 8 +#define RTE_PWM_TMR_EXT_TRIG_2_PAD 18 +#elif (RTE_PWM_TMR_EXT_TRIG_2_PORT_ID == 2) +#define RTE_PWM_TMR_EXT_TRIG_2_PORT HP +#define RTE_PWM_TMR_EXT_TRIG_2_PIN 71 +#define RTE_PWM_TMR_EXT_TRIG_2_MUX 10 +#define RTE_PWM_TMR_EXT_TRIG_2_PAD 29 +#else +#error "Invalid RTE_PWM_TMR_EXT_TRIG_2_PIN Pin Configuration!" +#endif +#else +//Pintool data +#define RTE_PWM_TMR_EXT_TRIG_2_PORT HP +#if (PWM_EXTTRIG2_LOC == 26) +#define RTE_PWM_TMR_EXT_TRIG_2_PIN PWM_TMR_EXT_TRIG_2_PIN +#define RTE_PWM_TMR_EXT_TRIG_2_MUX 10 +#define RTE_PWM_TMR_EXT_TRIG_2_PAD 0 //no pad +#endif +#if (PWM_EXTTRIG2_LOC == 27) +#define RTE_PWM_TMR_EXT_TRIG_2_PIN PWM_TMR_EXT_TRIG_2_PIN +#define RTE_PWM_TMR_EXT_TRIG_2_MUX 8 +#define RTE_PWM_TMR_EXT_TRIG_2_PAD 18 +#endif +#if (PWM_EXTTRIG2_LOC == 28) //Combination not available in pin mux +#define RTE_PWM_TMR_EXT_TRIG_2_PIN (PWM_TMR_EXT_TRIG_2_PIN + GPIO_MAX_PIN) +#define RTE_PWM_TMR_EXT_TRIG_2_MUX 10 +#define RTE_PWM_TMR_EXT_TRIG_2_PAD 29 +#endif +#if (PWM_EXTTRIG2_LOC == 29) +#define RTE_PWM_TMR_EXT_TRIG_2_PIN (PWM_TMR_EXT_TRIG_2_PIN + GPIO_MAX_PIN) +#define RTE_PWM_TMR_EXT_TRIG_2_MUX 10 +#define RTE_PWM_TMR_EXT_TRIG_2_PAD 29 +#endif +//Pintool data +#endif + +//PWM_TMR_EXT_TRIG_3 +//Pintool data +#define RTE_PWM_TMR_EXT_TRIG_3_PORT HP +#if (PWM_EXTTRIG3_LOC == 30) +#define RTE_PWM_TMR_EXT_TRIG_3_PIN PWM_TMR_EXT_TRIG_3_PIN +#define RTE_PWM_TMR_EXT_TRIG_3_MUX 10 +#define RTE_PWM_TMR_EXT_TRIG_3_PAD 0 //no pad +#endif +#if (PWM_EXTTRIG3_LOC == 31) +#define RTE_PWM_TMR_EXT_TRIG_3_PIN PWM_TMR_EXT_TRIG_3_PIN +#define RTE_PWM_TMR_EXT_TRIG_3_MUX 8 +#define RTE_PWM_TMR_EXT_TRIG_3_PAD 19 +#endif +#if (PWM_EXTTRIG3_LOC == 32) +#define RTE_PWM_TMR_EXT_TRIG_3_PIN (PWM_TMR_EXT_TRIG_3_PIN + GPIO_MAX_PIN) +#define RTE_PWM_TMR_EXT_TRIG_3_MUX 10 +#define RTE_PWM_TMR_EXT_TRIG_3_PAD 30 +#endif +//Pintool data + +//PWM_TMR_EXT_TRIG_4 +//Pintool data +#define RTE_PWM_TMR_EXT_TRIG_4_PORT HP +#if (PWM_EXTTRIG4_LOC == 33) +#define RTE_PWM_TMR_EXT_TRIG_4_PIN PWM_TMR_EXT_TRIG_4_PIN +#define RTE_PWM_TMR_EXT_TRIG_4_MUX 10 +#define RTE_PWM_TMR_EXT_TRIG_4_PAD 0 //no pad +#endif +#if (PWM_EXTTRIG4_LOC == 34) +#define RTE_PWM_TMR_EXT_TRIG_4_PIN PWM_TMR_EXT_TRIG_4_PIN +#define RTE_PWM_TMR_EXT_TRIG_4_MUX 8 +#define RTE_PWM_TMR_EXT_TRIG_4_PAD 14 +#endif +#if (PWM_EXTTRIG4_LOC == 35) +#define RTE_PWM_TMR_EXT_TRIG_4_PIN (PWM_TMR_EXT_TRIG_4_PIN + GPIO_MAX_PIN) +#define RTE_PWM_TMR_EXT_TRIG_4_MUX 10 +#define RTE_PWM_TMR_EXT_TRIG_4_PAD 31 +#endif +//Pintool data + +//<> QEI (Quadrature Encode Interface) + +//QEI_DIR <0=>GPIO_28 <1=>GPIO_49 <2=>GPIO_57 <3=>GPIO_67 <4=>GPIO_71 <5=>GPIO_73 <6=>GPIO_11 <7=>GPIO_34 + +#define RTE_QEI_DIR_PORT_ID 4 + +#if (RTE_QEI_DIR_PORT_ID == 0) +#define RTE_QEI_DIR_PORT HP +#define RTE_QEI_DIR_PIN 28 +#define RTE_QEI_DIR_MUX 5 +#define RTE_QEI_DIR_PAD 0 //no pad +#elif (RTE_QEI_DIR_PORT_ID == 1) +#define RTE_QEI_DIR_PORT HP +#define RTE_QEI_DIR_PIN 49 +#define RTE_QEI_DIR_MUX 3 +#define RTE_QEI_DIR_PAD 13 +#elif (RTE_QEI_DIR_PORT_ID == 2) +#define RTE_QEI_DIR_PORT HP +#define RTE_QEI_DIR_PIN 57 +#define RTE_QEI_DIR_MUX 5 +#define RTE_QEI_DIR_PAD 21 +#elif (RTE_QEI_DIR_PORT_ID == 3) +#define RTE_QEI_DIR_PORT HP +#define RTE_QEI_DIR_PIN 67 +#define RTE_QEI_DIR_MUX 3 +#define RTE_QEI_DIR_PAD 25 +#elif (RTE_QEI_DIR_PORT_ID == 4) +#define RTE_QEI_DIR_PORT HP +#define RTE_QEI_DIR_PIN 71 +#define RTE_QEI_DIR_MUX 3 +#define RTE_QEI_DIR_PAD 29 +#elif (RTE_QEI_DIR_PORT_ID == 5) +#define RTE_QEI_DIR_PORT HP +#define RTE_QEI_DIR_PIN 73 +#define RTE_QEI_DIR_MUX 3 +#define RTE_QEI_DIR_PAD 31 +#else +#error "Invalid RTE_QEI_DIR_PIN Pin Configuration!" +#endif + +//QEI_IDX <0=>GPIO_25 <1=>GPIO_46 <2=>GPIO_52 <3=>GPIO_64 <4=>GPIO_68 <5=>GPIO_72 <6=>GPIO_8 <7=>GPIO_13 + +#define RTE_QEI_IDX_PORT_ID 3 + +#if (RTE_QEI_IDX_PORT_ID == 0) +#define RTE_QEI_IDX_PORT HP +#define RTE_QEI_IDX_PIN 25 +#define RTE_QEI_IDX_MUX 5 +#define RTE_QEI_IDX_PAD 0 //no pad +#elif (RTE_QEI_IDX_PORT_ID == 1) +#define RTE_QEI_IDX_PORT HP +#define RTE_QEI_IDX_PIN 46 +#define RTE_QEI_IDX_MUX 3 +#define RTE_QEI_IDX_PAD 10 +#elif (RTE_QEI_IDX_PORT_ID == 2) +#define RTE_QEI_IDX_PORT HP +#define RTE_QEI_IDX_PIN 52 +#define RTE_QEI_IDX_MUX 5 +#define RTE_QEI_IDX_PAD 16 +#elif (RTE_QEI_IDX_PORT_ID == 3) +#define RTE_QEI_IDX_PORT HP +#define RTE_QEI_IDX_PIN 72 +#define RTE_QEI_IDX_MUX 3 +#define RTE_QEI_IDX_PAD 30 +#else +#error "Invalid RTE_QEI_IDX_PIN Pin Configuration!" +#endif + +//QEI_PHA <0=>GPIO_26 <1=>GPIO_47 <2=>GPIO_53 <3=>GPIO_65 <4=>GPIO_69 <5=>GPIO_73 <6=>GPIO_9 <7=>GPIO_32 + +#ifdef SLI_SI91X_MCU_CONFIG_RADIO_BOARD_BASE_VER +#define RTE_QEI_PHA_PORT_ID 3 +#else +#define RTE_QEI_PHA_PORT_ID 5 +#endif + +#if (RTE_QEI_PHA_PORT_ID == 0) +#define RTE_QEI_PHA_PORT HP +#define RTE_QEI_PHA_PIN 26 +#define RTE_QEI_PHA_MUX 5 +#define RTE_QEI_PHA_PAD 0 //no pad +#elif (RTE_QEI_PHA_PORT_ID == 1) +#define RTE_QEI_PHA_PORT HP +#define RTE_QEI_PHA_PIN 47 +#define RTE_QEI_PHA_MUX 3 +#define RTE_QEI_PHA_PAD 11 +#elif (RTE_QEI_PHA_PORT_ID == 2) +#define RTE_QEI_PHA_PORT HP +#define RTE_QEI_PHA_PIN 53 +#define RTE_QEI_PHA_MUX 5 +#define RTE_QEI_PHA_PAD 17 +#elif (RTE_QEI_PHA_PORT_ID == 3) +#define RTE_QEI_PHA_PORT HP +#define RTE_QEI_PHA_PIN 65 +#define RTE_QEI_PHA_MUX 3 +#define RTE_QEI_PHA_PAD 23 +#elif (RTE_QEI_PHA_PORT_ID == 4) +#define RTE_QEI_PHA_PORT HP +#define RTE_QEI_PHA_PIN 73 +#define RTE_QEI_PHA_MUX 3 +#define RTE_QEI_PHA_PAD 31 +#else +#error "Invalid RTE_QEI_PHA_PIN Pin Configuration!" +#endif + +//QEI_PHB <0=>GPIO_27 <1=>GPIO_48 <1=>GPIO_56 <1=>GPIO_66 <1=>GPIO_70 <1=>GPIO_74 <7=>GPIO_33 + +#ifdef SLI_SI91X_MCU_CONFIG_RADIO_BOARD_BASE_VER +#define RTE_QEI_PHB_PORT_ID 5 +#else +#define RTE_QEI_PHB_PORT_ID 4 +#endif + +#if (RTE_QEI_PHB_PORT_ID == 0) +#define RTE_QEI_PHB_PORT HP +#define RTE_QEI_PHB_PIN 27 +#define RTE_QEI_PHB_MUX 5 +#define RTE_QEI_PHB_PAD 0 //no pad +#elif (RTE_QEI_PHB_PORT_ID == 1) +#define RTE_QEI_PHB_PORT HP +#define RTE_QEI_PHB_PIN 48 +#define RTE_QEI_PHB_MUX 3 +#define RTE_QEI_PHB_PAD 12 +#elif (RTE_QEI_PHB_PORT_ID == 2) +#define RTE_QEI_PHB_PORT HP +#define RTE_QEI_PHB_PIN 56 +#define RTE_QEI_PHB_MUX 5 +#define RTE_QEI_PHB_PAD 20 +#elif (RTE_QEI_PHB_PORT_ID == 3) +#define RTE_QEI_PHB_PORT HP +#define RTE_QEI_PHB_PIN 66 +#define RTE_QEI_PHB_MUX 3 +#define RTE_QEI_PHB_PAD 24 +#elif (RTE_QEI_PHB_PORT_ID == 4) +#define RTE_QEI_PHB_PORT HP +#define RTE_QEI_PHB_PIN 70 +#define RTE_QEI_PHB_MUX 3 +#define RTE_QEI_PHB_PAD 28 +#elif (RTE_QEI_PHB_PORT_ID == 5) +#define RTE_QEI_PHB_PORT HP +#define RTE_QEI_PHB_PIN 74 +#define RTE_QEI_PHB_MUX 3 +#define RTE_QEI_PHB_PAD 32 +#else +#error "Invalid RTE_QEI_PHB_PIN Pin Configuration!" +#endif + +#endif +//COMPARATOR START + +#ifndef COMP1_P0_LOC +#define RTE_COMP1_P0_PORT HP +#define RTE_COMP1_P0_PIN 0 +#else +#define RTE_COMP1_P0_PORT HP +#define RTE_COMP1_P0_PIN COMP1_P0_PIN +#endif +#define RTE_COMP1_P0_MUX 0 + +#ifndef COMP1_N0_LOC +#define RTE_COMP1_N0_PORT HP +#define RTE_COMP1_N0_PIN 1 +#else +#define RTE_COMP1_N0_PORT HP +#define RTE_COMP1_N0_PIN COMP1_N0_PIN +#endif +#define RTE_COMP1_N0_MUX 0 + +#ifndef COMP1_P1_LOC +#define RTE_COMP1_P1_PORT HP +#define RTE_COMP1_P1_PIN 5 +#else +#define RTE_COMP1_P1_PORT HP +#define RTE_COMP1_P1_PIN COMP1_P1_PIN +#endif +#define RTE_COMP1_P1_MUX 0 + +#ifndef COMP1_N1_LOC +#define RTE_COMP1_N1_PORT HP +#define RTE_COMP1_N1_PIN 4 +#else +#define RTE_COMP1_N1_PORT HP +#define RTE_COMP1_N1_PIN COMP1_N1_PIN +#endif +#define RTE_COMP1_N1_MUX 0 + +#ifndef COMP2_P0_LOC +#define RTE_COMP2_P0_PORT HP +#define RTE_COMP2_P0_PIN 2 +#else +#define RTE_COMP2_P0_PORT HP +#define RTE_COMP2_P0_PIN COMP2_P0_PIN +#endif +#define RTE_COMP2_P0_MUX 0 + +#ifndef COMP2_N0_LOC +#define RTE_COMP2_N0_PORT HP +#define RTE_COMP2_N0_PIN 3 +#else +#define RTE_COMP2_N0_PORT HP +#define RTE_COMP2_N0_PIN COMP2_N0_PIN +#endif +#define RTE_COMP2_N0_MUX 0 + +#ifndef COMP2_P1_LOC +#define RTE_COMP2_P1_PORT HP +#define RTE_COMP2_P1_PIN 27 +#else +#define RTE_COMP2_P1_PORT HP +#define RTE_COMP2_P1_PIN COMP2_P1_PIN +#endif +#define RTE_COMP2_P1_MUX 0 +#define RTE_COMP2_P1_PAD 0 + +#ifndef COMP2_N1_LOC +#define RTE_COMP2_N1_PORT HP +#define RTE_COMP2_N1_PIN 28 +#else +#define RTE_COMP2_N1_PORT HP +#define RTE_COMP2_N1_PIN COMP2_N1_PIN +#endif +#define RTE_COMP2_N1_MUX 0 + +//COMPARATOR END + +#define RTE_GPIO_6_PORT HP +#define RTE_GPIO_6_PAD 1 +#define RTE_GPIO_6_PIN 6 +#define RTE_GPIO_6_MODE 0 + +#define RTE_GPIO_7_PORT HP +#define RTE_GPIO_7_PAD 2 +#define RTE_GPIO_7_PIN 7 +#define RTE_GPIO_7_MODE 0 + +#define RTE_GPIO_8_PORT HP +#define RTE_GPIO_8_PAD 3 +#define RTE_GPIO_8_PIN 8 +#define RTE_GPIO_8_MODE 0 + +#define RTE_GPIO_9_PORT HP +#define RTE_GPIO_9_PAD 4 +#define RTE_GPIO_9_PIN 9 +#define RTE_GPIO_9_MODE 0 + +#define RTE_GPIO_10_PORT HP +#define RTE_GPIO_10_PAD 5 +#define RTE_GPIO_10_PIN 10 +#define RTE_GPIO_10_MODE 0 + +#define RTE_GPIO_11_PORT HP +#define RTE_GPIO_11_PAD 6 +#define RTE_GPIO_11_PIN 11 +#define RTE_GPIO_11_MODE 0 + +#define RTE_GPIO_12_PORT HP +#define RTE_GPIO_12_PAD 7 +#define RTE_GPIO_12_PIN 12 +#define RTE_GPIO_12_MODE 0 + +#define RTE_GPIO_15_PORT HP +#define RTE_GPIO_15_PAD 8 +#define RTE_GPIO_15_PIN 15 +#define RTE_GPIO_15_MODE 0 + +#define RTE_GPIO_25_PORT HP +#define RTE_GPIO_25_PIN 25 +#define RTE_GPIO_25_MODE 0 + +#define RTE_GPIO_26_PORT HP +#define RTE_GPIO_26_PIN 26 +#define RTE_GPIO_26_MODE 0 + +#define RTE_GPIO_27_PORT HP +#define RTE_GPIO_27_PIN 27 +#define RTE_GPIO_27_MODE 0 + +#define RTE_GPIO_28_PORT HP +#define RTE_GPIO_28_PIN 28 +#define RTE_GPIO_28_MODE 0 + +#define RTE_GPIO_29_PORT HP +#define RTE_GPIO_29_PIN 29 +#define RTE_GPIO_29_MODE 0 + +#define RTE_GPIO_30_PORT HP +#define RTE_GPIO_30_PIN 30 +#define RTE_GPIO_30_MODE 0 + +#define RTE_GPIO_31_PORT HP +#define RTE_GPIO_31_PAD 9 +#define RTE_GPIO_31_PIN 31 +#define RTE_GPIO_31_MODE 0 + +#define RTE_GPIO_32_PORT HP +#define RTE_GPIO_32_PAD 9 +#define RTE_GPIO_32_PIN 32 +#define RTE_GPIO_32_MODE 0 + +#define RTE_GPIO_33_PORT HP +#define RTE_GPIO_33_PAD 9 +#define RTE_GPIO_33_PIN 33 +#define RTE_GPIO_33_MODE 0 + +#define RTE_GPIO_34_PORT HP +#define RTE_GPIO_34_PAD 9 +#define RTE_GPIO_34_PIN 34 +#define RTE_GPIO_34_MODE 0 + +#define RTE_GPIO_46_PORT HP +#define RTE_GPIO_46_PAD 10 +#define RTE_GPIO_46_PIN 46 +#define RTE_GPIO_46_MODE 0 + +#define RTE_GPIO_47_PORT HP +#define RTE_GPIO_47_PAD 11 +#define RTE_GPIO_47_PIN 47 +#define RTE_GPIO_47_MODE 0 + +#define RTE_GPIO_48_PORT HP +#define RTE_GPIO_48_PAD 12 +#define RTE_GPIO_48_PIN 48 +#define RTE_GPIO_48_MODE 0 + +#define RTE_GPIO_49_PORT HP +#define RTE_GPIO_49_PAD 13 +#define RTE_GPIO_49_PIN 49 +#define RTE_GPIO_49_MODE 0 + +#define RTE_GPIO_50_PORT HP +#define RTE_GPIO_50_PAD 14 +#define RTE_GPIO_50_PIN 50 +#define RTE_GPIO_50_MODE 0 + +#define RTE_GPIO_51_PORT HP +#define RTE_GPIO_51_PAD 15 +#define RTE_GPIO_51_PIN 51 +#define RTE_GPIO_51_MODE 0 + +#define RTE_GPIO_52_PORT HP +#define RTE_GPIO_52_PAD 16 +#define RTE_GPIO_52_PIN 52 +#define RTE_GPIO_52_MODE 0 + +#define RTE_GPIO_53_PORT HP +#define RTE_GPIO_53_PAD 17 +#define RTE_GPIO_53_PIN 53 +#define RTE_GPIO_53_MODE 0 + +#define RTE_GPIO_54_PORT HP +#define RTE_GPIO_54_PAD 18 +#define RTE_GPIO_54_PIN 54 +#define RTE_GPIO_54_MODE 0 + +#define RTE_GPIO_55_PORT HP +#define RTE_GPIO_55_PAD 19 +#define RTE_GPIO_55_PIN 55 +#define RTE_GPIO_55_MODE 0 + +#define RTE_GPIO_56_PORT HP +#define RTE_GPIO_56_PAD 20 +#define RTE_GPIO_56_PIN 56 +#define RTE_GPIO_56_MODE 0 + +#define RTE_GPIO_57_PORT HP +#define RTE_GPIO_57_PAD 21 +#define RTE_GPIO_57_PIN 57 +#define RTE_GPIO_57_MODE 0 + +#ifdef SLI_SI91X_MCU_CONFIG_RADIO_BOARD_BASE_VER +#define RTE_ULP_GPIO_0_PORT_ID 1 +#else +#define RTE_ULP_GPIO_0_PORT_ID 0 +#endif + +#if (RTE_ULP_GPIO_0_PORT_ID == 0) +#define RTE_ULP_GPIO_0_PORT HP +#define RTE_ULP_GPIO_0_PAD 22 +#define RTE_ULP_GPIO_0_PIN 64 +#define RTE_ULP_GPIO_0_MODE 0 +#elif (RTE_ULP_GPIO_0_PORT_ID == 1) +#define RTE_ULP_GPIO_0_PORT ULP +#define RTE_ULP_GPIO_0_PIN 0 +#define RTE_ULP_GPIO_0_MODE 0 +#else +#error "Invalid RTE_ULP_GPIO_0_PIN Pin Configuration!" +#endif + +#ifdef SLI_SI91X_MCU_CONFIG_RADIO_BOARD_BASE_VER +#define RTE_ULP_GPIO_1_PORT_ID 1 +#else +#define RTE_ULP_GPIO_1_PORT_ID 0 +#endif + +#if (RTE_ULP_GPIO_1_PORT_ID == 0) +#define RTE_ULP_GPIO_1_PORT HP +#define RTE_ULP_GPIO_1_PAD 23 +#define RTE_ULP_GPIO_1_PIN 65 +#define RTE_ULP_GPIO_1_MODE 0 +#elif (RTE_ULP_GPIO_1_PORT_ID == 1) +#define RTE_ULP_GPIO_1_PORT ULP +#define RTE_ULP_GPIO_1_PIN 1 +#define RTE_ULP_GPIO_1_MODE 0 +#else +#error "Invalid RTE_ULP_GPIO_1_PIN Pin Configuration!" +#endif + +#ifdef SLI_SI91X_MCU_CONFIG_RADIO_BOARD_BASE_VER +#define RTE_ULP_GPIO_2_PORT_ID 1 +#else +#define RTE_ULP_GPIO_2_PORT_ID 0 +#endif + +#if (RTE_ULP_GPIO_2_PORT_ID == 0) +#define RTE_ULP_GPIO_2_PORT HP +#define RTE_ULP_GPIO_2_PAD 24 +#define RTE_ULP_GPIO_2_PIN 66 +#define RTE_ULP_GPIO_2_MODE 0 +#elif (RTE_ULP_GPIO_2_PORT_ID == 1) +#define RTE_ULP_GPIO_2_PORT ULP +#define RTE_ULP_GPIO_2_PIN 2 +#define RTE_ULP_GPIO_2_MODE 0 +#else +#error "Invalid RTE_ULP_GPIO_2_PIN Pin Configuration!" +#endif + +#ifdef SLI_SI91X_MCU_CONFIG_RADIO_BOARD_BASE_VER +#define RTE_ULP_GPIO_3_PORT_ID 1 +#else +#define RTE_ULP_GPIO_3_PORT_ID 0 +#endif + +#if (RTE_ULP_GPIO_3_PORT_ID == 0) +#define RTE_ULP_GPIO_3_PORT HP +#define RTE_ULP_GPIO_3_PAD 25 +#define RTE_ULP_GPIO_3_PIN 67 +#define RTE_ULP_GPIO_3_MODE 0 +#elif (RTE_ULP_GPIO_3_PORT_ID == 1) +#define RTE_ULP_GPIO_3_PORT ULP +#define RTE_ULP_GPIO_3_PIN 3 +#define RTE_ULP_GPIO_3_MODE 0 +#else +#error "Invalid RTE_ULP_GPIO_3_PIN Pin Configuration!" +#endif + +#ifdef SLI_SI91X_MCU_CONFIG_RADIO_BOARD_BASE_VER +#define RTE_ULP_GPIO_4_PORT_ID 1 +#else +#define RTE_ULP_GPIO_4_PORT_ID 0 +#endif + +#if (RTE_ULP_GPIO_4_PORT_ID == 0) +#define RTE_ULP_GPIO_4_PORT HP +#define RTE_ULP_GPIO_4_PAD 26 +#define RTE_ULP_GPIO_4_PIN 68 +#define RTE_ULP_GPIO_4_MODE 0 +#elif (RTE_ULP_GPIO_4_PORT_ID == 1) +#define RTE_ULP_GPIO_4_PORT ULP +#define RTE_ULP_GPIO_4_PIN 4 +#define RTE_ULP_GPIO_4_MODE 0 +#else +#error "Invalid RTE_ULP_GPIO_4_PIN Pin Configuration!" +#endif + +#ifdef SLI_SI91X_MCU_CONFIG_RADIO_BOARD_BASE_VER +#define RTE_ULP_GPIO_5_PORT_ID 1 +#else +#define RTE_ULP_GPIO_5_PORT_ID 0 +#endif + +#if (RTE_ULP_GPIO_5_PORT_ID == 0) +#define RTE_ULP_GPIO_5_PORT ULP +#define RTE_ULP_GPIO_5_PAD 27 +#define RTE_ULP_GPIO_5_PIN 69 +#define RTE_ULP_GPIO_5_MODE 0 +#elif (RTE_ULP_GPIO_5_PORT_ID == 1) +#define RTE_ULP_GPIO_5_PORT ULP +#define RTE_ULP_GPIO_5_PIN 5 +#define RTE_ULP_GPIO_5_MODE 0 +#else +#error "Invalid RTE_ULP_GPIO_5_PIN Pin Configuration!" +#endif + +#ifdef SLI_SI91X_MCU_CONFIG_RADIO_BOARD_BASE_VER +#define RTE_ULP_GPIO_6_PORT_ID 1 +#else +#define RTE_ULP_GPIO_6_PORT_ID 0 +#endif + +#if (RTE_ULP_GPIO_6_PORT_ID == 0) +#define RTE_ULP_GPIO_6_PORT ULP +#define RTE_ULP_GPIO_6_PAD 28 +#define RTE_ULP_GPIO_6_PIN 70 +#define RTE_ULP_GPIO_6_MODE 0 +#elif (RTE_ULP_GPIO_6_PORT_ID == 1) +#define RTE_ULP_GPIO_6_PORT ULP +#define RTE_ULP_GPIO_6_PIN 6 +#define RTE_ULP_GPIO_6_MODE 0 +#else +#error "Invalid RTE_ULP_GPIO_6_PIN Pin Configuration!" +#endif + +#ifdef SLI_SI91X_MCU_CONFIG_RADIO_BOARD_BASE_VER +#define RTE_ULP_GPIO_7_PORT_ID 1 +#else +#define RTE_ULP_GPIO_7_PORT_ID 0 +#endif + +#if (RTE_ULP_GPIO_7_PORT_ID == 0) +#define RTE_ULP_GPIO_7_PORT ULP +#define RTE_ULP_GPIO_7_PAD 29 +#define RTE_ULP_GPIO_7_PIN 71 +#define RTE_ULP_GPIO_7_MODE 0 +#elif (RTE_ULP_GPIO_7_PORT_ID == 1) +#define RTE_ULP_GPIO_7_PORT ULP +#define RTE_ULP_GPIO_7_PIN 7 +#define RTE_ULP_GPIO_7_MODE 0 +#else +#error "Invalid RTE_ULP_GPIO_7_PIN Pin Configuration!" +#endif + +#ifdef SLI_SI91X_MCU_CONFIG_RADIO_BOARD_BASE_VER +#define RTE_ULP_GPIO_8_PORT_ID 1 +#else +#define RTE_ULP_GPIO_8_PORT_ID 0 +#endif + +#if (RTE_ULP_GPIO_8_PORT_ID == 0) +#define RTE_ULP_GPIO_8_PORT ULP +#define RTE_ULP_GPIO_8_PAD 30 +#define RTE_ULP_GPIO_8_PIN 72 +#define RTE_ULP_GPIO_8_MODE 0 +#elif (RTE_ULP_GPIO_8_PORT_ID == 1) +#define RTE_ULP_GPIO_8_PORT ULP +#define RTE_ULP_GPIO_8_PIN 8 +#define RTE_ULP_GPIO_8_MODE 0 +#else +#error "Invalid RTE_ULP_GPIO_8_PIN Pin Configuration!" +#endif + +#ifdef SLI_SI91X_MCU_CONFIG_RADIO_BOARD_BASE_VER +#define RTE_ULP_GPIO_9_PORT_ID 1 +#else +#define RTE_ULP_GPIO_9_PORT_ID 0 +#endif + +#if (RTE_ULP_GPIO_9_PORT_ID == 0) +#define RTE_ULP_GPIO_9_PORT ULP +#define RTE_ULP_GPIO_9_PAD 31 +#define RTE_ULP_GPIO_9_PIN 73 +#define RTE_ULP_GPIO_9_MODE 0 +#elif (RTE_ULP_GPIO_9_PORT_ID == 1) +#define RTE_ULP_GPIO_9_PORT ULP +#define RTE_ULP_GPIO_9_PIN 9 +#define RTE_ULP_GPIO_9_MODE 0 +#else +#error "Invalid RTE_ULP_GPIO_9_PIN Pin Configuration!" +#endif + +#ifdef SLI_SI91X_MCU_CONFIG_RADIO_BOARD_BASE_VER +#define RTE_ULP_GPIO_10_PORT_ID 1 +#else +#define RTE_ULP_GPIO_10_PORT_ID 0 +#endif + +#if (RTE_ULP_GPIO_10_PORT_ID == 0) +#define RTE_ULP_GPIO_10_PORT ULP +#define RTE_ULP_GPIO_10_PAD 32 +#define RTE_ULP_GPIO_10_PIN 74 +#define RTE_ULP_GPIO_10_MODE 0 +#elif (RTE_ULP_GPIO_10_PORT_ID == 1) +#define RTE_ULP_GPIO_10_PORT ULP +#define RTE_ULP_GPIO_10_PIN 10 +#define RTE_ULP_GPIO_10_MODE 0 +#else +#error "Invalid RTE_ULP_GPIO_10_PIN Pin Configuration!" +#endif + +#ifdef SLI_SI91X_MCU_CONFIG_RADIO_BOARD_BASE_VER +#define RTE_ULP_GPIO_11_PORT_ID 1 +#else +#define RTE_ULP_GPIO_11_PORT_ID 0 +#endif + +#if (RTE_ULP_GPIO_11_PORT_ID == 0) +#define RTE_ULP_GPIO_11_PORT ULP +#define RTE_ULP_GPIO_11_PAD 33 +#define RTE_ULP_GPIO_11_PIN 75 +#define RTE_ULP_GPIO_11_MODE 0 +#elif (RTE_ULP_GPIO_11_PORT_ID == 1) +#define RTE_ULP_GPIO_11_PORT ULP +#define RTE_ULP_GPIO_11_PIN 11 +#define RTE_ULP_GPIO_11_MODE 0 +#else +#error "Invalid RTE_ULP_GPIO_11_PIN Pin Configuration!" +#endif + +// RTE_UULP_GPIO_x_PORT refers to port for UULP GPIO pin x +#define RTE_UULP_GPIO_0_PORT UULP_VBAT +#define RTE_UULP_GPIO_0_PIN 0 +#define RTE_UULP_GPIO_0_MODE 0 + +#define RTE_UULP_GPIO_1_PORT UULP_VBAT +#define RTE_UULP_GPIO_1_PIN 1 +#define RTE_UULP_GPIO_1_MODE 0 + +#define RTE_UULP_GPIO_2_PORT UULP_VBAT +#define RTE_UULP_GPIO_2_PIN 2 +#define RTE_UULP_GPIO_2_MODE 0 + +#define RTE_UULP_GPIO_3_PORT UULP_VBAT +#define RTE_UULP_GPIO_3_PIN 3 +#define RTE_UULP_GPIO_3_MODE 0 + +#define RTE_UULP_GPIO_4_PORT UULP_VBAT +#define RTE_UULP_GPIO_4_PIN 4 +#define RTE_UULP_GPIO_4_MODE 0 + +#define RTE_UULP_GPIO_5_PIN 5 +#define RTE_UULP_GPIO_5_MODE 0 + +// UULP GPIO as enable pin for sensors +#define SENSOR_ENABLE_GPIO_MAPPED_TO_UULP +#define SENSOR_ENABLE_GPIO_PIN RTE_UULP_GPIO_1_PIN + +// Memlcd GPIOs +#define RTE_MEMLCD_CS_PIN 10 // Memlcd SPI CS pin +#define RTE_MEMLCD_CS_PORT HP // Memlcd SPI CS port + +#define RTE_MEMLCD_EXTCOMIN_PIN 3 // Memlcd external communication pin +#define RTE_MEMLCD_EXTCOMIN_PORT HP // Memlcd external communication port + +#define RTE_MEMLCD_ENABLE_DISPLAY_PIN 0 // Memlcd display enable pin +#define RTE_MEMLCD_ENABLE_DISPLAY_PORT HP // Memlcd display enable port + +// GPIO as enable pin for Mic +#define RTE_MIC_ENABLE_PORT RTE_UULP_GPIO_0_PORT +#define RTE_MIC_ENABLE_PIN RTE_UULP_GPIO_0_PIN + +// UART0_RS485_RE Pin <0=>P0_28 <1=>P0_50 <2=>P0_66 <3=>P0_70 <4=>P0_74 +#ifndef USART0_RE_LOC + +#define RTE_UART0_RS485_RE_PORT_ID 0 +#if (RTE_UART0_RS485_RE_PORT_ID == 0) +#define RTE_UART0_RS485_RE_PIN 28 +#define RTE_UART0_RS485_RE_PORT 0 +#define RTE_UART0_RS485_RE_MUX 13 +#define RTE_UART0_RS485_RE_PAD 0 +#elif (RTE_UART0_RS485_RE_PORT_ID == 1) +#define RTE_UART0_RS485_RE_PIN 50 +#define RTE_UART0_RS485_RE_PORT 0 +#define RTE_UART0_RS485_RE_MUX 2 +#define RTE_UART0_RS485_RE_PAD 14 +#elif (RTE_UART0_RS485_RE_PORT_ID == 2) +#define RTE_UART0_RS485_RE_PIN 70 +#define RTE_UART0_RS485_RE_PORT 0 +#define RTE_UART0_RS485_RE_MUX 6 +#define RTE_UART0_RS485_RE_PAD 28 +#elif (RTE_UART0_RS485_RE_PORT_ID == 3) +#define RTE_UART0_RS485_RE_PIN 74 +#define RTE_UART0_RS485_RE_PORT 0 +#define RTE_UART0_RS485_RE_MUX 6 +#define RTE_UART0_RS485_RE_PAD 32 +#else +#error "Invalid UART0_RS485_RE_PIN" +#endif +#else +//Pintool data +#define RTE_UART0_RS485_RE_PORT HP +#if (USART0_RE_LOC == 38) +#define RTE_UART0_RS485_RE_PIN USART0_RS485_RE_PIN +#define RTE_UART0_RS485_RE_MUX 13 +#define RTE_UART0_RS485_RE_PAD 0 +#endif +#if (USART0_RE_LOC == 39) +#define RTE_UART0_RS485_RE_PIN (USART0_RS485_RE_PIN) +#define RTE_UART0_RS485_RE_MUX 2 +#define RTE_UART0_RS485_RE_PAD 14 +#endif +#if (USART0_RE_LOC == 40) +#define RTE_UART0_RS485_RE_PIN (USART0_RS485_RE_PIN + GPIO_MAX_PIN) +#define RTE_UART0_RS485_RE_MUX 6 +#define RTE_UART0_RS485_RE_PAD 28 +#endif +#if (USART0_RE_LOC == 41) +#define RTE_UART0_RS485_RE_PIN (USART0_RS485_RE_PIN + GPIO_MAX_PIN) +#define RTE_UART0_RS485_RE_MUX 6 +#define RTE_UART0_RS485_RE_PAD 32 +#endif +//Pintool data +#endif + +// UART0_RS485_DE Pin <0=>P0_29 <1=>P0_51 <2=>P0_67 <3=>P0_71 <4=>P0_75 +#ifndef USART0_DE_LOC + +#define RTE_UART0_RS485_DE_PORT_ID 1 +#if (RTE_UART0_RS485_DE_PORT_ID == 0) +#define RTE_UART0_RS485_DE_PIN 29 +#define RTE_UART0_RS485_DE_PORT 0 +#define RTE_UART0_RS485_DE_MUX 13 +#define RTE_UART0_RS485_DE_PAD 0 +#elif (RTE_UART0_RS485_DE_PORT_ID == 1) +#define RTE_UART0_RS485_DE_PIN 51 +#define RTE_UART0_RS485_DE_PORT 0 +#define RTE_UART0_RS485_DE_MUX 2 +#define RTE_UART0_RS485_DE_PAD 15 +#elif (RTE_UART0_RS485_DE_PORT_ID == 2) +#define RTE_UART0_RS485_DE_PIN 71 +#define RTE_UART0_RS485_DE_PORT 0 +#define RTE_UART0_RS485_DE_MUX 6 +#define RTE_UART0_RS485_DE_PAD 29 +#elif (RTE_UART0_RS485_DE_PORT_ID == 3) +#define RTE_UART0_RS485_DE_PIN 75 +#define RTE_UART0_RS485_DE_PORT 0 +#define RTE_UART0_RS485_DE_MUX 6 +#define RTE_UART0_RS485_DE_PAD 33 +#else +#error "Invalid UART0_RS485_DE_PIN" +#endif +#else +//Pintool data +#define RTE_UART0_RS485_DE_PORT HP +#if (USART0_DE_LOC == 42) +#define RTE_UART0_RS485_DE_PIN USART0_RS485_DE_PIN +#define RTE_UART0_RS485_DE_MUX 13 +#define RTE_UART0_RS485_DE_PAD 0 +#endif +#if (USART0_DE_LOC == 43) +#define RTE_UART0_RS485_DE_PIN (USART0_RS485_DE_PIN) +#define RTE_UART0_RS485_DE_MUX 2 +#define RTE_UART0_RS485_DE_PAD 15 +#endif +#if (USART0_DE_LOC == 44) +#define RTE_UART0_RS485_DE_PIN (USART0_RS485_DE_PIN + GPIO_MAX_PIN) +#define RTE_UART0_RS485_DE_MUX 6 +#define RTE_UART0_RS485_DE_PAD 29 +#endif +#if (USART0_DE_LOC == 45) +#define RTE_UART0_RS485_DE_PIN (USART0_RS485_DE_PIN + GPIO_MAX_PIN) +#define RTE_UART0_RS485_DE_MUX 6 +#define RTE_UART0_RS485_DE_PAD 33 +#endif +//Pintool data +#endif + +// UART0_RS485_EN Pin <0=>P0_27 <1=>P0_49 <2=>P0_69 <3=>P0_73 +#ifndef USART0_EN_LOC + +#define RTE_UART0_RS485_EN_PORT_ID 0 +#if (RTE_UART0_RS485_EN_PORT_ID == 0) +#define RTE_UART0_RS485_EN_PIN 27 +#define RTE_UART0_RS485_EN_PORT 0 +#define RTE_UART0_RS485_EN_MUX 13 +#define RTE_UART0_RS485_EN_PAD 0 +#elif (RTE_UART0_RS485_EN_PORT_ID == 1) +#define RTE_UART0_RS485_EN_PIN 49 +#define RTE_UART0_RS485_EN_PORT 0 +#define RTE_UART0_RS485_EN_MUX 2 +#define RTE_UART0_RS485_EN_PAD 13 +#elif (RTE_UART0_RS485_EN_PORT_ID == 2) +#define RTE_UART0_RS485_EN_PIN 69 +#define RTE_UART0_RS485_EN_PORT 0 +#define RTE_UART0_RS485_EN_MUX 6 +#define RTE_UART0_RS485_EN_PAD 27 +#elif (RTE_UART0_RS485_EN_PORT_ID == 3) +#define RTE_UART0_RS485_EN_PIN 73 +#define RTE_UART0_RS485_EN_PORT 0 +#define RTE_UART0_RS485_EN_MUX 6 +#define RTE_UART0_RS485_EN_PAD 31 +#else +#error "Invalid UART0_RS485_EN_PIN" +#endif +#else +//Pintool data +#define RTE_UART0_RS485_EN_PORT HP +#if (USART0_EN_LOC == 46) +#define RTE_UART0_RS485_EN_PIN USART0_RS485_EN_PIN +#define RTE_UART0_RS485_EN_MUX 13 +#define RTE_UART0_RS485_EN_PAD 0 +#endif +#if (USART0_EN_LOC == 47) +#define RTE_UART0_RS485_EN_PIN (USART0_RS485_EN_PIN) +#define RTE_UART0_RS485_EN_MUX 2 +#define RTE_UART0_RS485_EN_PAD 13 +#endif +#if (USART0_EN_LOC == 48) +#define RTE_UART0_RS485_EN_PIN (USART0_RS485_EN_PIN + GPIO_MAX_PIN) +#define RTE_UART0_RS485_EN_MUX 6 +#define RTE_UART0_RS485_EN_PAD 27 +#endif +#if (USART0_EN_LOC == 49) +#define RTE_UART0_RS485_EN_PIN (USART0_RS485_EN_PIN + GPIO_MAX_PIN) +#define RTE_UART0_RS485_EN_MUX 6 +#define RTE_UART0_RS485_EN_PAD 31 +#endif +//Pintool data +#endif + +// UART1_RS485_RE Pin <0=>P0_8 <1=>P0_65 <2=>P0_74 +#ifndef UART1_RE_LOC + +#define RTE_UART1_RS485_RE_PORT_ID 0 +#if (RTE_UART1_RS485_RE_PORT_ID == 0) +#define RTE_UART1_RS485_RE_PIN 8 +#define RTE_UART1_RS485_RE_PORT 0 +#define RTE_UART1_RS485_RE_MUX 6 +#define RTE_UART1_RS485_RE_PAD 3 +#elif (RTE_UART1_RS485_RE_PORT_ID == 1) +#define RTE_UART1_RS485_RE_PIN 65 +#define RTE_UART1_RS485_RE_PORT 0 +#define RTE_UART1_RS485_RE_MUX 6 +#define RTE_UART1_RS485_RE_PAD 23 +#elif (RTE_UART1_RS485_RE_PORT_ID == 2) +#define RTE_UART1_RS485_RE_PIN 74 +#define RTE_UART1_RS485_RE_PORT 0 +#define RTE_UART1_RS485_RE_MUX 6 +#define RTE_UART1_RS485_RE_PAD 32 +#else +#error "Invalid UART1_RS485_RE_PIN" +#endif +#else +//Pintool data +#define RTE_UART1_RS485_RE_PORT HP +#if (UART1_RE_LOC == 26) +#define RTE_UART1_RS485_RE_PIN UART1_RS485_RE_PIN +#define RTE_UART1_RS485_RE_MUX 6 +#define RTE_UART1_RS485_RE_PAD 3 +#endif +#if (UART1_RE_LOC == 27) +#define RTE_UART1_RS485_RE_PIN (UART1_RS485_RE_PIN + GPIO_MAX_PIN) +#define RTE_UART1_RS485_RE_MUX 6 +#define RTE_UART1_RS485_RE_PAD 23 +#endif +#if (UART1_RE_LOC == 28) +#define RTE_UART1_RS485_RE_PIN (UART1_RS485_RE_PIN + GPIO_MAX_PIN) +#define RTE_UART1_RS485_RE_MUX 6 +#define RTE_UART1_RS485_RE_PAD 32 +#endif +//Pintool data +#endif + +// UART1_RS485_DE Pin <0=>P0_9 <1=>P0_75 +#ifndef UART1_DE_LOC + +#define RTE_UART1_RS485_DE_PORT_ID 0 +#if (RTE_UART1_RS485_DE_PORT_ID == 0) +#define RTE_UART1_RS485_DE_PIN 9 +#define RTE_UART1_RS485_DE_PORT 0 +#define RTE_UART1_RS485_DE_MUX 6 +#define RTE_UART1_RS485_DE_PAD 4 +#elif (RTE_UART1_RS485_DE_PORT_ID == 1) +#define RTE_UART1_RS485_DE_PIN 75 +#define RTE_UART1_RS485_DE_PORT 0 +#define RTE_UART1_RS485_DE_MUX 6 +#define RTE_UART1_RS485_DE_PAD 33 +#else +#error "Invalid UART1_RS485_DE_PIN" +#endif +#else +//Pintool data +#define RTE_UART1_RS485_DE_PORT HP +#if (UART1_DE_LOC == 29) +#define RTE_UART1_RS485_DE_PIN UART1_RS485_DE_PIN +#define RTE_UART1_RS485_DE_MUX 6 +#define RTE_UART1_RS485_DE_PAD 4 +#endif +#if (UART1_DE_LOC == 30) +#define RTE_UART1_RS485_DE_PIN (UART1_RS485_DE_PIN + GPIO_MAX_PIN) +#define RTE_UART1_RS485_DE_MUX 6 +#define RTE_UART1_RS485_DE_PAD 33 +#endif +//Pintool data +#endif + +// UART1_RS485_EN Pin <0=>P0_12 <1=>P0_64 +#ifndef UART1_EN_LOC + +#define RTE_UART1_RS485_EN_PORT_ID 0 +#if (RTE_UART1_RS485_EN_PORT_ID == 0) +#define RTE_UART1_RS485_EN_PIN 12 +#define RTE_UART1_RS485_EN_PORT 0 +#define RTE_UART1_RS485_EN_MUX 6 +#define RTE_UART1_RS485_EN_PAD 7 +#elif (RTE_UART1_RS485_EN_PORT_ID == 1) +#define RTE_UART1_RS485_EN_PIN 64 +#define RTE_UART1_RS485_EN_PORT 0 +#define RTE_UART1_RS485_EN_MUX 6 +#define RTE_UART1_RS485_EN_PAD 22 +#else +#error "Invalid UART1_RS485_EN_PIN" +#endif +#else +//Pintool data +#define RTE_UART1_RS485_EN_PORT HP +#if (UART1_EN_LOC == 31) +#define RTE_UART1_RS485_EN_PIN UART1_RS485_EN_PIN +#define RTE_UART1_RS485_EN_MUX 6 +#define RTE_UART1_RS485_EN_PAD 7 +#endif +#if (UART1_EN_LOC == 32) +#define RTE_UART1_RS485_EN_PIN (UART1_RS485_EN_PIN + GPIO_MAX_PIN) +#define RTE_UART1_RS485_EN_MUX 6 +#define RTE_UART1_RS485_EN_PAD 22 +#endif +//Pintool data +#endif diff --git a/projects/bluetooth/AI Based smart predictive farming/config/pin_config.h b/projects/bluetooth/AI Based smart predictive farming/config/pin_config.h new file mode 100644 index 0000000..d835a10 --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/config/pin_config.h @@ -0,0 +1,198 @@ +#ifndef PIN_CONFIG_H +#define PIN_CONFIG_H + +// $[USART0] +// [USART0]$ + +// $[UART1] +// [UART1]$ + +// $[ULP_UART] +// [ULP_UART]$ + +// $[I2C0] +// [I2C0]$ + +// $[I2C1] +// [I2C1]$ + +// $[ULP_I2C] +// ULP_I2C SCL on ULP_GPIO_7/GPIO_71 +#ifndef ULP_I2C_SCL_PORT +#define ULP_I2C_SCL_PORT ULP +#endif +#ifndef ULP_I2C_SCL_PIN +#define ULP_I2C_SCL_PIN 7 +#endif +#ifndef ULP_I2C_SCL_LOC +#define ULP_I2C_SCL_LOC 2 +#endif + +// ULP_I2C SDA on ULP_GPIO_6/GPIO_70 +#ifndef ULP_I2C_SDA_PORT +#define ULP_I2C_SDA_PORT ULP +#endif +#ifndef ULP_I2C_SDA_PIN +#define ULP_I2C_SDA_PIN 6 +#endif +#ifndef ULP_I2C_SDA_LOC +#define ULP_I2C_SDA_LOC 6 +#endif + +// [ULP_I2C]$ + +// $[SSI_MASTER] +// [SSI_MASTER]$ + +// $[SSI_SLAVE] +// [SSI_SLAVE]$ + +// $[ULP_SSI] +// [ULP_SSI]$ + +// $[GSPI_MASTER] +// [GSPI_MASTER]$ + +// $[I2S0] +// [I2S0]$ + +// $[ULP_I2S] +// [ULP_I2S]$ + +// $[SCT] +// [SCT]$ + +// $[SIO] +// [SIO]$ + +// $[PWM] +// [PWM]$ + +// $[PWM_CH0] +// [PWM_CH0]$ + +// $[PWM_CH1] +// [PWM_CH1]$ + +// $[PWM_CH2] +// [PWM_CH2]$ + +// $[PWM_CH3] +// [PWM_CH3]$ + +// $[ADC_CH1] +// [ADC_CH1]$ + +// $[ADC_CH2] +// [ADC_CH2]$ + +// $[ADC_CH3] +// [ADC_CH3]$ + +// $[ADC_CH4] +// [ADC_CH4]$ + +// $[ADC_CH5] +// [ADC_CH5]$ + +// $[ADC_CH6] +// [ADC_CH6]$ + +// $[ADC_CH7] +// [ADC_CH7]$ + +// $[ADC_CH8] +// [ADC_CH8]$ + +// $[ADC_CH9] +// [ADC_CH9]$ + +// $[ADC_CH10] +// [ADC_CH10]$ + +// $[ADC_CH11] +// [ADC_CH11]$ + +// $[ADC_CH12] +// [ADC_CH12]$ + +// $[ADC_CH13] +// [ADC_CH13]$ + +// $[ADC_CH14] +// [ADC_CH14]$ + +// $[ADC_CH15] +// [ADC_CH15]$ + +// $[ADC_CH16] +// [ADC_CH16]$ + +// $[ADC_CH17] +// [ADC_CH17]$ + +// $[ADC_CH18] +// [ADC_CH18]$ + +// $[ADC_CH19] +// [ADC_CH19]$ + +// $[COMP1] +// [COMP1]$ + +// $[COMP2] +// [COMP2]$ + +// $[DAC0] +// [DAC0]$ + +// $[DAC1] +// [DAC1]$ + +// $[SYSRTC] +// [SYSRTC]$ + +// $[UULP_VBAT_GPIO] +// [UULP_VBAT_GPIO]$ + +// $[GPIO] +// [GPIO]$ + +// $[QEI] +// [QEI]$ + +// $[HSPI_SECONDARY] +// [HSPI_SECONDARY]$ + +// $[CUSTOM_PIN_NAME] +#ifndef _PORT +#define _PORT HP +#endif +#ifndef _PIN +#define _PIN 6 +#endif + +// [CUSTOM_PIN_NAME]$ + +#endif // PIN_CONFIG_H +// $[SDC_CH1] +// [SDC_CH1]$ + +// $[SDC_CH2] +// [SDC_CH2]$ + +// $[SDC_CH3] +// [SDC_CH3]$ + +// $[SDC_CH4] +// [SDC_CH4]$ + +// $[OPAMP1] +// [OPAMP1]$ + +// $[OPAMP2] +// [OPAMP2]$ + +// $[OPAMP3] +// [OPAMP3]$ + diff --git a/projects/bluetooth/AI Based smart predictive farming/config/sl_board_configuration.h b/projects/bluetooth/AI Based smart predictive farming/config/sl_board_configuration.h new file mode 100644 index 0000000..635fe5f --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/config/sl_board_configuration.h @@ -0,0 +1,23 @@ +/******************************************************************************* +* @file sl_board_configuration.h +* @brief +******************************************************************************* +* # License +* Copyright 2023 Silicon Laboratories Inc. www.silabs.com +******************************************************************************* +* +* The licensor of this software is Silicon Laboratories Inc. Your use of this +* software is governed by the terms of Silicon Labs Master Software License +* Agreement (MSLA) available at +* www.silabs.com/about-us/legal/master-software-license-agreement. This +* software is distributed to you in Source Code format and is governed by the +* sections of the MSLA applicable to Source Code. +* +******************************************************************************/ + +#pragma once + +#include + +#define DEFAULT_UART NULL +#define DEFAULT_UART_PIN_CONFIG NULL diff --git a/projects/bluetooth/AI Based smart predictive farming/config/sl_board_control.h b/projects/bluetooth/AI Based smart predictive farming/config/sl_board_control.h new file mode 100644 index 0000000..8b85d75 --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/config/sl_board_control.h @@ -0,0 +1,22 @@ +/******************************************************************************* +* @file sl_board_control.h +* @brief +******************************************************************************* +* # License +* Copyright 2023 Silicon Laboratories Inc. www.silabs.com +******************************************************************************* +* +* The licensor of this software is Silicon Laboratories Inc. Your use of this +* software is governed by the terms of Silicon Labs Master Software License +* Agreement (MSLA) available at +* www.silabs.com/about-us/legal/master-software-license-agreement. This +* software is distributed to you in Source Code format and is governed by the +* sections of the MSLA applicable to Source Code. +* +******************************************************************************/ + +#pragma once + +#include "sl_status.h" + +sl_status_t sl_board_enable_vcom(void); diff --git a/projects/bluetooth/AI Based smart predictive farming/config/sl_core_config.h b/projects/bluetooth/AI Based smart predictive farming/config/sl_core_config.h new file mode 100644 index 0000000..27b173d --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/config/sl_core_config.h @@ -0,0 +1,44 @@ +/***************************************************************************//** + * @file + * @brief sl_core Configuration + ******************************************************************************* + * # License + * Copyright 2023 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_CORE_CONFIG_H +#define SL_CORE_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// Core Abstraction Configuration + +// Enables measurement of interrupt masking time for debugging purposes. +// Default: 0 +#define SL_CORE_DEBUG_INTERRUPTS_MASKED_TIMING 0 +// + +// <<< end of configuration section >>> +#endif // SL_CORE_CONFIG_H diff --git a/projects/bluetooth/AI Based smart predictive farming/config/sl_si91x_dma_config.h b/projects/bluetooth/AI Based smart predictive farming/config/sl_si91x_dma_config.h new file mode 100644 index 0000000..109df25 --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/config/sl_si91x_dma_config.h @@ -0,0 +1,52 @@ +/***************************************************************************/ /** + * @file + * @brief SL USART Config. + ******************************************************************************* + * # License + * Copyright 2023 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_SI91X_DMA_CONFIG_H +#define SL_SI91X_DMA_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> +#ifdef __cplusplus +extern "C" { +#endif + +// DMA instance 0 channel count <1-32> +// Default: 32 +#define SL_DMA0_CHANNEL_COUNT 32 + +// ULP DMA instance channel count <1-12> +// Default: 12 +#define SL_ULP_DMA_CHANNEL_COUNT 12 + +// <<< end of configuration section >>> + +#ifdef __cplusplus +} +#endif +#endif //SL_SI91X_DMA_CONFIG_H diff --git a/projects/bluetooth/AI Based smart predictive farming/config/sl_si91x_i2c_init_i2c2_config.h b/projects/bluetooth/AI Based smart predictive farming/config/sl_si91x_i2c_init_i2c2_config.h new file mode 100644 index 0000000..bd19d5e --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/config/sl_si91x_i2c_init_i2c2_config.h @@ -0,0 +1,115 @@ +/***************************************************************************//** + * @file sl_si91x_i2c_i2c2_config.h + * @brief I2c driver instance configuration file. + ******************************************************************************* + * # License + * Copyright 2024 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_SI91X_I2C_I2C2_CONFIG_H +#define SL_SI91X_I2C_I2C2_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> +#ifdef __cplusplus +extern "C" +{ +#endif + +#include "sl_si91x_i2c.h" +/******************************************************************************/ +/******************************* I2C Configuration **************************/ +// I2C2 (ULP_I2C) Configuration +// Mode +// Leader mode +// Follower mode +// Selection of the I2C Mode. +#define SL_I2C_I2C2_MODE SL_I2C_LEADER_MODE + +// Operating Mode +// Standard mode +// Fast mode +// Fast plus mode +// High speed mode +// Selection of the I2C Mode. +#define SL_I2C_I2C2_OPERATING_MODE SL_I2C_STANDARD_MODE + +// DMA +// Default: 0 +#define SL_I2C_I2C2_INIT_DMA 0 + +// End I2C2 Configuration +/******************************************************************************/ +// <<< end of configuration section >>> +// Previously, SL_I2C_I2C2_TRANSFER_TYPE was updated directly through UC. Now, it is updated indirectly through SL_I2C_I2C2_INIT_DMA. +#define SL_I2C_I2C2_TRANSFER_TYPE SL_I2C_I2C2_INIT_DMA + +// <<< sl:start pin_tool >>> +// SL_ULP_I2C +// $[ULP_I2C_SL_ULP_I2C] +#ifndef SL_ULP_I2C_PERIPHERAL +#define SL_ULP_I2C_PERIPHERAL ULP_I2C +#endif + +// ULP_I2C SCL on ULP_GPIO_7/GPIO_71 +#ifndef SL_ULP_I2C_SCL_PORT +#define SL_ULP_I2C_SCL_PORT ULP +#endif +#ifndef SL_ULP_I2C_SCL_PIN +#define SL_ULP_I2C_SCL_PIN 7 +#endif +#ifndef SL_ULP_I2C_SCL_LOC +#define SL_ULP_I2C_SCL_LOC 2 +#endif + +// ULP_I2C SDA on ULP_GPIO_6/GPIO_70 +#ifndef SL_ULP_I2C_SDA_PORT +#define SL_ULP_I2C_SDA_PORT ULP +#endif +#ifndef SL_ULP_I2C_SDA_PIN +#define SL_ULP_I2C_SDA_PIN 6 +#endif +#ifndef SL_ULP_I2C_SDA_LOC +#define SL_ULP_I2C_SDA_LOC 6 +#endif +// [ULP_I2C_SL_ULP_I2C]$ +// <<< sl:end pin_tool >>> + +#define SL_I2C_I2C2_SCL_PORT SL_ULP_I2C_SCL_PORT +#define SL_I2C_I2C2_SCL_PIN SL_ULP_I2C_SCL_PIN +#define SL_I2C_I2C2_SCL_MUX SL_SI91X_I2C2_SCL_MUX +#define SL_I2C_I2C2_SCL_PAD SL_SI91X_I2C2_SCL_PAD +#define SL_I2C_I2C2_SCL_REN SL_SI91X_I2C2_SCL_REN + +#define SL_I2C_I2C2_SDA_PORT SL_ULP_I2C_SDA_PORT +#define SL_I2C_I2C2_SDA_PIN SL_ULP_I2C_SDA_PIN +#define SL_I2C_I2C2_SDA_MUX SL_SI91X_I2C2_SDA_MUX +#define SL_I2C_I2C2_SDA_PAD SL_SI91X_I2C2_SDA_PAD +#define SL_I2C_I2C2_SDA_REN SL_SI91X_I2C2_SDA_REN + +#ifdef __cplusplus +} +#endif + +#endif // SL_SI91X_I2C_I2C2_CONFIG_H diff --git a/projects/bluetooth/AI Based smart predictive farming/config/sl_si91x_si70xx_config.h b/projects/bluetooth/AI Based smart predictive farming/config/sl_si91x_si70xx_config.h new file mode 100644 index 0000000..cbb8c0f --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/config/sl_si91x_si70xx_config.h @@ -0,0 +1,72 @@ +/***************************************************************************/ /** + * @file sl_si91x_si70xx_config.h + * @brief SI70XX Driver User Config + ******************************************************************************* + * # License + * Copyright 2024 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_SI91X_SI70XX_CONFIG_H +#define SL_SI91X_SI70XX_CONFIG_H + +#ifdef __cplusplus +extern "C" { +#endif + +// <<< Use Configuration Wizard in Context Menu >>> + +#define SI7006_ADDR 0x40 //I2C device address for Si7006 +#define SI7013_ADDR 0x41 //I2C device address for Si7013 +#define SI7020_ADDR 0X40 //I2C device address for Si7020 +#define SI7021_ADDR 0x40 //I2C device address for Si7021 + +// Si70xx Slave Address +// Si70xx Slave +// SI7006 SLAVE ADDRESS (0x40) +// SI7013 SLAVE ADDRESS (0x41) +// SI7020 SLAVE ADDRESS (0X40) +// SI7021 SLAVE ADDRESS (0x40) +#define SL_SI70XX_CONFIG_SLAVE_ADDR SI7021_ADDR +// + +// I2C Instance for Si70xx Sensor +// I2C Instance (make sure to install selected I2C instance) +// I2C0 +// I2C1 +// I2C2 (ULP_I2C) +#ifdef SLI_SI915 +#define SL_SI70XX_CONFIG_I2C_INSTANCE SL_I2C0 +#else +#define SL_SI70XX_CONFIG_I2C_INSTANCE SL_ULP_I2C +#endif +// + +// <<< end of configuration section >>> + +#ifdef __cplusplus +} +#endif + +#endif // SL_SI91X_SI70XX_CONFIG_H diff --git a/projects/bluetooth/AI Based smart predictive farming/config/sl_si91x_stack_size_config.h b/projects/bluetooth/AI Based smart predictive farming/config/sl_si91x_stack_size_config.h new file mode 100644 index 0000000..c369cf7 --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/config/sl_si91x_stack_size_config.h @@ -0,0 +1,35 @@ +/******************************************************************************* +* @file sl_si91x_stack_size_config.h +* @brief +******************************************************************************* +* # License +* Copyright 2023 Silicon Laboratories Inc. www.silabs.com +******************************************************************************* +* +* The licensor of this software is Silicon Laboratories Inc. Your use of this +* software is governed by the terms of Silicon Labs Master Software License +* Agreement (MSLA) available at +* www.silabs.com/about-us/legal/master-software-license-agreement. This +* software is distributed to you in Source Code format and is governed by the +* sections of the MSLA applicable to Source Code. +* +******************************************************************************/ + +#ifndef __SL_SI91X_STACK_SIZE_CONFIG_H_ +#define __SL_SI91X_STACK_SIZE_CONFIG_H_ + +// <<< Use Configuration Wizard in Context Menu >>> +// Memory configuration + +// Stack size for the application. +// Default: 12288 +// The stack size configured here will be used by the stack that the +// application uses when coming out of a reset. +#ifndef SL_STACK_SIZE +#define SL_STACK_SIZE 12288 +#endif + +// +// <<< end of configuration section >>> + +#endif // __SL_SI91X_STACK_SIZE_CONFIG_H_ diff --git a/projects/bluetooth/AI Based smart predictive farming/config/sl_sleeptimer_config.h b/projects/bluetooth/AI Based smart predictive farming/config/sl_sleeptimer_config.h new file mode 100644 index 0000000..8344ef5 --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/config/sl_sleeptimer_config.h @@ -0,0 +1,82 @@ +/***************************************************************************//** + * @file + * @brief Sleep Timer configuration file. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +#ifndef SL_SLEEPTIMER_CONFIG_H +#define SL_SLEEPTIMER_CONFIG_H + +#define SL_SLEEPTIMER_PERIPHERAL_DEFAULT 0 +#define SL_SLEEPTIMER_PERIPHERAL_RTCC 1 +#define SL_SLEEPTIMER_PERIPHERAL_PRORTC 2 +#define SL_SLEEPTIMER_PERIPHERAL_RTC 3 +#define SL_SLEEPTIMER_PERIPHERAL_SYSRTC 4 +#define SL_SLEEPTIMER_PERIPHERAL_BURTC 5 +#define SL_SLEEPTIMER_PERIPHERAL_WTIMER 6 +#define SL_SLEEPTIMER_PERIPHERAL_TIMER 7 + +// Timer Peripheral Used by Sleeptimer +// Default (auto select) +// RTCC +// Radio internal RTC (PRORTC) +// RTC +// SYSRTC +// Back-Up RTC (BURTC) +// WTIMER +// TIMER +// Selection of the Timer Peripheral Used by the Sleeptimer +#define SL_SLEEPTIMER_PERIPHERAL SL_SLEEPTIMER_PERIPHERAL_DEFAULT + +// TIMER/WTIMER Instance Used by Sleeptimer (not applicable for other peripherals) +// Make sure TIMER instance size is 32bits. Check datasheet for 32bits TIMERs. +// Default: 0 +#define SL_SLEEPTIMER_TIMER_INSTANCE 0 + +// Enable wallclock functionality +// Enable or disable wallclock functionalities (get_time, get_date, etc). +// Default: 0 +#define SL_SLEEPTIMER_WALLCLOCK_CONFIG 0 + +// Timer frequency divider (not applicable for WTIMER/TIMER) +// WTIMER/TIMER peripherals are always prescaled to 1024. +// Default: 1 +#define SL_SLEEPTIMER_FREQ_DIVIDER 1 + +// If Radio internal RTC (PRORTC) HAL is used, determines if it owns the IRQ handler. Enable, if no wireless stack is used. +// Default: 0 +#define SL_SLEEPTIMER_PRORTC_HAL_OWNS_IRQ_HANDLER 0 + +// Enable DEBUGRUN functionality on hardware RTC. +// Default: 0 +#define SL_SLEEPTIMER_DEBUGRUN 0 + +#endif /* SLEEPTIMER_CONFIG_H */ + +// <<< end of configuration section >>> diff --git a/projects/bluetooth/AI Based smart predictive farming/main.c b/projects/bluetooth/AI Based smart predictive farming/main.c new file mode 100644 index 0000000..72c8be4 --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/main.c @@ -0,0 +1,71 @@ +/***************************************************************************//** + * @file main.c + * @brief main() function. + ******************************************************************************* + * # License + * Copyright 2025 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ +#include "sl_component_catalog.h" +#include "sl_main_init.h" +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) +#include "sl_power_manager.h" +#endif +#if defined(SL_CATALOG_KERNEL_PRESENT) +#include "sl_main_kernel.h" +#else // SL_CATALOG_KERNEL_PRESENT +#include "sl_main_process_action.h" +#endif // SL_CATALOG_KERNEL_PRESENT + +int main(void) +{ + // Initialize Silicon Labs device, system, service(s) and protocol stack(s). + // Note that if the kernel is present, the start task will be started and software + // component initialization will take place there. + sl_main_init(); + +#if defined(SL_CATALOG_KERNEL_PRESENT) + // Start the kernel. The start task will be executed (Highest priority) to complete + // the Simplicity SDK components initialization and the user app_init() hook function will be called. + sl_main_kernel_start(); +#else // SL_CATALOG_KERNEL_PRESENT + + // User provided code. + app_init(); + + while (1) { + // Silicon Labs components process action routine + // must be called from the super loop. + sl_main_process_action(); + + // User provided code. Application process. + app_process_action(); + +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) + // Let the CPU go to sleep if the system allows it. + sl_power_manager_sleep(); +#endif + } +#endif // SL_CATALOG_KERNEL_PRESENT +} diff --git a/projects/bluetooth/AI Based smart predictive farming/readme.md b/projects/bluetooth/AI Based smart predictive farming/readme.md new file mode 100644 index 0000000..6a3db67 --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/readme.md @@ -0,0 +1,99 @@ +# SL SI70XX + +## Table of Contents + +- [Purpose/Scope](#purposescope) +- [About Example Code](#about-example-code) +- [Prerequisites/Setup Requirements](#prerequisitessetup-requirements) + - [Hardware Requirements](#hardware-requirements) + - [Software Requirements](#software-requirements) + - [Setup Diagram](#setup-diagram) +- [Getting Started](#getting-started) +- [Application Build Environment](#application-build-environment) + - [Pin Configuration](#pin-configuration) +- [Pin Configuration](#pin-configuration) +- [Test the Application](#test-the-application) + +## Purpose/Scope + +This application demonstrate the si70xx RHT sensor, which measures the relative humidity and temperature via I2C interface for every 2 seconds. + +## About Example Code + +This example demonstrates the measurement of relative humidity and temperature for every 2 seconds. Also shows how to use different APIs present via I2C interface. + +## Prerequisites/Setup Requirements + +### Hardware Requirements + +- Windows PC +- Standalone + - BRD4002A Wireless pro kit mainboard [SI-MB4002A] + - Radio Boards + - BRD4338A [SiWx917-RB4338A] + - BRD4342A [SiWx917-RB4342A] + - BRD4343A [SiWx917-RB4343A] +- Kits + - SiWx917 Development Kit [ BRD2605A ] + +### Software Requirements + +- Simplicity Studio +- Serial console setup + - For serial console setup instructions, refer [here](https://docs.silabs.com/wiseconnect/latest/wiseconnect-developers-guide-developing-for-silabs-hosts/#console-input-and-output). + +### Setup Diagram + +> ![Figure: Introduction](resources/readme/setupdiagram.png) + +## Getting Started + +Refer to the instructions [here](https://docs.silabs.com/wiseconnect/latest/wiseconnect-getting-started/) to: + +- [Install Simplicity Studio](https://docs.silabs.com/wiseconnect/latest/wiseconnect-developers-guide-developing-for-silabs-hosts/#install-simplicity-studio) +- [Install WiSeConnect 3 extension](https://docs.silabs.com/wiseconnect/latest/wiseconnect-developers-guide-developing-for-silabs-hosts/#install-the-wi-se-connect-3-extension) +- [Connect your device to the computer](https://docs.silabs.com/wiseconnect/latest/wiseconnect-developers-guide-developing-for-silabs-hosts/#connect-si-wx91x-to-computer) +- [Upgrade your connectivity firmware](https://docs.silabs.com/wiseconnect/latest/wiseconnect-developers-guide-developing-for-silabs-hosts/#update-si-wx91x-connectivity-firmware) +- [Create a Studio project](https://docs.silabs.com/wiseconnect/latest/wiseconnect-developers-guide-developing-for-silabs-hosts/#create-a-project) + +For details on the project folder structure, see the [WiSeConnect Examples](https://docs.silabs.com/wiseconnect/latest/wiseconnect-examples/#example-folder-structure) page. + +## Application Build Environment + +- Configure the following macros in the `si70xx_example.c` file and update/modify following macros, if required. + +- `I2C instance`: Select I2C instance for communication through UC from the Si70xx Humidity and Temperature Sensor slcp component. + By default I2C2 is selected. + + ![Figure: Si70xx UC](resources/uc_screen/si70xx_uc_screen.png) + +### Pin Configuration + +Tested on WPK Base board - 4002A and Radio board - BRD4338A. + +| Description | 917 GPIO | 915 GPIO | Breakout pin | +| -------------| -----------| -----------| ----------| +| I2C_SDA | ULP_GPIO_6 | GPIO_6 | EXP_16 | +| I2C_SCL | ULP_GPIO_7 | GPIO_7 | EXP_15 | + +>**Note:** Make sure the pin configurations are in the `RTE_Device_xxx.h` file: +> +> - SiWx917: RTE_Device_917.h (path: /$project/config/RTE_Device_917.h) +> - SiWx915: RTE_Device_915.h (path: /$project/config/RTE_Device_915.h) + +## Test the Application + +Refer to the instructions [here](https://docs.silabs.com/wiseconnect/latest/wiseconnect-getting-started/) to: + +1. Compile and run the application. +2. When the application runs, it measures relative humidity and temperature for every 2 seconds. +3. Connect an oscilloscope to the Evaluation Kit board's ULP_GPIO_6(EXP16) / GPIO_6(EXP16) and ULP_GPIO_7(EXP15) / GPIO_7(EXP15) and observe the temperature and humidity data on I2C line. +4. After successful program execution, the prints in the serial console looks as shown below. + + ![Figure: Introduction](resources/readme/output1.png) + + ![Figure: Introduction](resources/readme/output2.png) + +> **Note:** +> +> - Interrupt handlers are implemented in the driver layer, and user callbacks are provided for custom code. If you want to write your own interrupt handler instead of using the default one, make the driver interrupt handler a weak handler. Then, copy the necessary code from the driver handler to your custom interrupt handler. diff --git a/projects/bluetooth/AI Based smart predictive farming/resources/readme/output1.png b/projects/bluetooth/AI Based smart predictive farming/resources/readme/output1.png new file mode 100644 index 0000000000000000000000000000000000000000..3fc7f3c534363e9d5e338fac36ee4a7278501a29 GIT binary patch literal 32924 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
    !6LazdnZXmtkIUkv8I74r+6@*!L*|h?p;2LBRZy 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 KnN0M}$NvvFFlFZe literal 0 HcmV?d00001 diff --git a/projects/bluetooth/AI Based smart predictive farming/resources/readme/output2.png b/projects/bluetooth/AI Based smart predictive farming/resources/readme/output2.png new file mode 100644 index 0000000000000000000000000000000000000000..c374f8946e8585c01de3863e13e99a454142089c GIT binary patch literal 72677 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ℑ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%0A{qnV~y0H8>NcMF!Sf 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 V%(&Wa`=4HPPsjL9#q9@A{|7OL5Oe?l literal 0 HcmV?d00001 diff --git a/projects/bluetooth/AI Based smart predictive farming/si70xx_example.c b/projects/bluetooth/AI Based smart predictive farming/si70xx_example.c new file mode 100644 index 0000000..19dbf62 --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/si70xx_example.c @@ -0,0 +1,311 @@ +/***************************************************************************/ /** + * @file si70xx_example.c + * @brief si70xx example APIs + ******************************************************************************* + * # License + * Copyright 2024 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ +#include "rsi_debug.h" +#include "sl_si91x_si70xx.h" +#include "si70xx_example.h" +#include "sl_sleeptimer.h" +#include "sl_si91x_driver_gpio.h" + +/******************************************************************************* + *************************** Defines / Macros ******************************** + ******************************************************************************/ + +#define TX_THRESHOLD 0 // tx threshold value +#define RX_THRESHOLD 0 // rx threshold value +#define I2C SI70XX_I2C_INSTANCE // I2C instance +#define USER_REG_1 0xBA // writing data into user register +#define DELAY_PERIODIC_MS1 2000 //sleeptimer1 periodic timeout in ms +#define MODE_0 0 // Initializing GPIO MODE_0 value +#define OUTPUT_VALUE 1 // GPIO output value + +/******************************************************************************* + ****************************** Data Types *********************************** + ******************************************************************************/ +/******************************************************************************* + *************************** LOCAL VARIABLES ******************************* + ******************************************************************************/ +typedef sl_i2c_config_t sl_i2c_configuration_t; +sl_sleeptimer_timer_handle_t timer1; //sleeptimer1 handle +boolean_t delay_timeout = false; //Indicates sleeptimer1 timeout +/******************************************************************************* + ********************** Local Function prototypes *************************** + ******************************************************************************/ +static void i2c_leader_callback(sl_i2c_instance_t i2c_instance, uint32_t status); +//Sleeptimer timeout callbacks +static void on_timeout_timer1(sl_sleeptimer_timer_handle_t *handle, void *data); +void delay(uint32_t idelay); +/******************************************************************************* + ************************** GLOBAL FUNCTIONS ******************************* + ******************************************************************************/ +/******************************************************************************* + * RHT example initialization function + ******************************************************************************/ +void si70xx_example_init(void) +{ + sl_status_t status; + uint8_t firm_rev; + sl_i2c_configuration_t i2c_config; + uint32_t humidity; + int32_t temperature; + uint8_t value; + i2c_config.mode = SL_I2C_LEADER_MODE; + i2c_config.transfer_type = SL_I2C_USING_NON_DMA; + i2c_config.operating_mode = SL_I2C_STANDARD_MODE; + i2c_config.i2c_callback = i2c_leader_callback; + + do { +#if defined(SENSOR_ENABLE_GPIO_MAPPED_TO_UULP) + if (sl_si91x_gpio_driver_get_uulp_npss_pin(SENSOR_ENABLE_GPIO_PIN) != 1) { + // Enable GPIO ULP_CLK + status = sl_si91x_gpio_driver_enable_clock((sl_si91x_gpio_select_clock_t)ULPCLK_GPIO); + if (status != SL_STATUS_OK) { + DEBUGOUT("sl_si91x_gpio_driver_enable_clock, Error code: %lu", status); + break; + } + DEBUGOUT("GPIO driver clock enable is successful \n"); + // Set NPSS GPIO pin MUX + status = sl_si91x_gpio_driver_set_uulp_npss_pin_mux(SENSOR_ENABLE_GPIO_PIN, NPSS_GPIO_PIN_MUX_MODE0); + if (status != SL_STATUS_OK) { + DEBUGOUT("sl_si91x_gpio_driver_set_uulp_npss_pin_mux, Error code: %lu", status); + break; + } + DEBUGOUT("GPIO driver uulp pin mux selection is successful \n"); + // Set NPSS GPIO pin direction + status = + sl_si91x_gpio_driver_set_uulp_npss_direction(SENSOR_ENABLE_GPIO_PIN, (sl_si91x_gpio_direction_t)GPIO_OUTPUT); + if (status != SL_STATUS_OK) { + DEBUGOUT("sl_si91x_gpio_driver_set_uulp_npss_direction, Error code: %lu", status); + break; + } + DEBUGOUT("GPIO driver uulp pin direction selection is successful \n"); + // Set UULP GPIO pin + status = sl_si91x_gpio_driver_set_uulp_npss_pin_value(SENSOR_ENABLE_GPIO_PIN, SET); + if (status != SL_STATUS_OK) { + DEBUGOUT("sl_si91x_gpio_driver_set_uulp_npss_pin_value, Error code: %lu", status); + break; + } + DEBUGOUT("GPIO driver set uulp pin value is successful \n"); + } +#else + sl_gpio_t sensor_enable_port_pin = { SENSOR_ENABLE_GPIO_PORT, SENSOR_ENABLE_GPIO_PIN }; + uint8_t pin_value; + + status = sl_gpio_driver_get_pin(&sensor_enable_port_pin, &pin_value); + if (status != SL_STATUS_OK) { + DEBUGOUT("sl_gpio_driver_get_pin, Error code: %lu", status); + break; + } + if (pin_value != 1) { + // Enable GPIO CLK +#ifdef SENSOR_ENABLE_GPIO_MAPPED_TO_ULP + status = sl_si91x_gpio_driver_enable_clock((sl_si91x_gpio_select_clock_t)ULPCLK_GPIO); +#else + status = sl_si91x_gpio_driver_enable_clock((sl_si91x_gpio_select_clock_t)M4CLK_GPIO); +#endif + if (status != SL_STATUS_OK) { + DEBUGOUT("sl_si91x_gpio_driver_enable_clock, Error code: %lu", status); + break; + } + DEBUGOUT("GPIO driver clock enable is successful \n"); + + // Set the pin mode for GPIO pins. + status = sl_gpio_driver_set_pin_mode(&sensor_enable_port_pin, MODE_0, OUTPUT_VALUE); + if (status != SL_STATUS_OK) { + DEBUGOUT("sl_gpio_driver_set_pin_mode, Error code: %lu", status); + break; + } + DEBUGOUT("GPIO driver pin mode select is successful \n"); + // Select the direction of GPIO pin whether Input/ Output + status = sl_si91x_gpio_driver_set_pin_direction(SENSOR_ENABLE_GPIO_PORT, + SENSOR_ENABLE_GPIO_PIN, + (sl_si91x_gpio_direction_t)GPIO_OUTPUT); + if (status != SL_STATUS_OK) { + DEBUGOUT("sl_si91x_gpio_driver_set_pin_direction, Error code: %lu", status); + break; + } + // Set GPIO pin + status = sl_gpio_driver_set_pin(&sensor_enable_port_pin); // Set ULP GPIO pin + if (status != SL_STATUS_OK) { + DEBUGOUT("sl_gpio_driver_set_pin, Error code: %lu", status); + break; + } + DEBUGOUT("GPIO driver set pin value is successful \n"); + } +#endif + + /* Wait for sensor to become ready */ + delay(80); + + //Start 2000 ms periodic timer + sl_sleeptimer_start_periodic_timer_ms(&timer1, + DELAY_PERIODIC_MS1, + on_timeout_timer1, + NULL, + 0, + SL_SLEEPTIMER_NO_HIGH_PRECISION_HF_CLOCKS_REQUIRED_FLAG); + // Initialize I2C bus + status = sl_i2c_driver_init(I2C, &i2c_config); + if (status != SL_I2C_SUCCESS) { + DEBUGOUT("sl_i2c_driver_init : Invalid Parameters, Error Code: 0x%ld \n", status); + break; + } else { + DEBUGOUT("Successfully initialized and configured i2c leader\n"); + } + status = sl_i2c_driver_configure_fifo_threshold(I2C, TX_THRESHOLD, RX_THRESHOLD); + if (status != SL_I2C_SUCCESS) { + DEBUGOUT("sl_i2c_driver_configure_fifo_threshold : Invalid Parameters, Error Code: 0x%ld \n", status); + break; + } else { + DEBUGOUT("Successfully configured i2c TX & RX FIFO thresholds\n"); + } + // reset the sensor + status = sl_si91x_si70xx_reset(I2C, SI70XX_SLAVE_ADDR); + if (status != SL_STATUS_OK) { + DEBUGOUT("Sensor reset un-successful, Error Code: 0x%ld \n", status); + break; + } else { + DEBUGOUT("Successfully reset sensor\n"); + } + // Initializes sensor and reads electronic ID 1st byte + status = sl_si91x_si70xx_init(I2C, SI70XX_SLAVE_ADDR, SL_EID_FIRST_BYTE); + if (status != SL_STATUS_OK) { + DEBUGOUT("Sensor initialization un-successful, Error Code: 0x%ld \n", status); + break; + } else { + DEBUGOUT("Successfully initialized sensor\n"); + } + // Initializes sensor and reads electronic ID 2nd byte + status = sl_si91x_si70xx_init(I2C, SI70XX_SLAVE_ADDR, SL_EID_SECOND_BYTE); + if (status != SL_STATUS_OK) { + DEBUGOUT("Sensor initialization un-successful, Error Code: 0x%ld \n", status); + break; + } else { + DEBUGOUT("Successfully reset sensor\n"); + } + // Get sensor internal firmware version of sensor + status = sl_si91x_si70xx_get_firmware_revision(I2C, SI70XX_SLAVE_ADDR, &firm_rev); + if (status != SL_STATUS_OK) { + DEBUGOUT("Sensor firmware version un-successful, Error Code: 0x%ld \n", status); + break; + } else { + DEBUGOUT("Successfully firmware version of sensor is read\n"); + } + DEBUGOUT("firmware version:%x\n", firm_rev); + // write register data into sensor + status = sl_si91x_si70xx_write_control_register(I2C, SI70XX_SLAVE_ADDR, SL_RH_T_USER_REG, USER_REG_1); + if (status != SL_STATUS_OK) { + DEBUGOUT("Sensor user register 1 write data failed, Error Code: 0x%ld \n", status); + break; + } else { + DEBUGOUT("Sensor user register 1 write data is successful\n"); + } + // Reads register data from sensor + status = sl_si91x_si70xx_read_control_register(I2C, SI70XX_SLAVE_ADDR, SL_RH_T_USER_REG, &value); + if (status != SL_STATUS_OK) { + DEBUGOUT("Sensor user register 1 read failed, Error Code: 0x%ld \n", status); + break; + } else { + DEBUGOUT("Sensor user register 1 read is successful\n"); + } + DEBUGOUT("user register data:%x\n", value); + // Reads temperature from humidity from sensor + status = sl_si91x_si70xx_read_temp_from_rh(I2C, SI70XX_SLAVE_ADDR, &humidity, &temperature); + if (status != SL_STATUS_OK) { + DEBUGOUT("Sensor temperature read failed, Error Code: 0x%ld \n", status); + break; + } else { + DEBUGOUT("Sensor temperature read is successful\n"); + } + DEBUGOUT("sensor humidity :%ld\n", humidity); + DEBUGOUT("sensor temperature :%ld\n", temperature); + // measure humidity data from sensor + status = sl_si91x_si70xx_measure_humidity(I2C, SI70XX_SLAVE_ADDR, &humidity); + if (status != SL_STATUS_OK) { + DEBUGOUT("Sensor humidity read failed, Error Code: 0x%ld \n", status); + break; + } else { + DEBUGOUT("Sensor humidity read is successful\n"); + } + DEBUGOUT("sensor humidity :%ld\n", humidity); + // measure temperature data from sensor + status = sl_si91x_si70xx_measure_temperature(I2C, SI70XX_SLAVE_ADDR, &temperature); + if (status != SL_STATUS_OK) { + DEBUGOUT("Sensor temperature read failed, Error Code: 0x%ld \n", status); + break; + } else { + DEBUGOUT("Sensor temperature read is successful\n"); + } + DEBUGOUT("sensor temperature :%ld\n", temperature); + } while (false); +} + +/******************************************************************************* + * Function will run continuously in while loop and reads relative humidity and + * temperature from sensor + ******************************************************************************/ +void si70xx_example_process_action(void) +{ + sl_status_t status; + uint32_t humidity = 0; + int32_t temperature = 0; + if (delay_timeout == true) { + delay_timeout = false; + // Reads humidity(hold master mode) measurement from sensor + status = sl_si91x_si70xx_measure_rh_and_temp(I2C, SI70XX_SLAVE_ADDR, &humidity, &temperature); + if (status != SL_STATUS_OK) { + DEBUGOUT("Sensor temperature read failed, Error Code: 0x%ld \n", status); + } else { + DEBUGOUT("Sensor temperature read is successful\n"); + } + DEBUGOUT("sensor humidity :%ld\n", humidity); + DEBUGOUT("sensor temperature :%ld\n", temperature); + } +} + +/******************************************************************************* + * Callback Function + ******************************************************************************/ +void i2c_leader_callback(sl_i2c_instance_t i2c_instance, uint32_t status) +{ + (void)i2c_instance; + switch (status) { + case SL_I2C_DATA_TRANSFER_COMPLETE: + break; + default: + break; + } +} + +/***************************************************************************/ /** + * Sleeptimer timeout callback. + ******************************************************************************/ +static void on_timeout_timer1(sl_sleeptimer_timer_handle_t *handle, void *data) +{ + (void)&handle; + (void)&data; + delay_timeout = true; +} +/******************************************************************************* +* Function to provide 1 ms Delay +*******************************************************************************/ +void delay(uint32_t idelay) +{ + for (uint32_t x = 0; x < 4600 * idelay; x++) //1.002ms delay + { + __NOP(); + } +} diff --git a/projects/bluetooth/AI Based smart predictive farming/si70xx_example.h b/projects/bluetooth/AI Based smart predictive farming/si70xx_example.h new file mode 100644 index 0000000..738a777 --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/si70xx_example.h @@ -0,0 +1,41 @@ +/***************************************************************************/ /** + * @file si70xx_example.h + * @brief si70xx example + ******************************************************************************* + * # License + * Copyright 2023 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ +#ifndef SI70XX_EXAMPLE_H_ +#define SI70XX_EXAMPLE_H_ + +/******************************************************************************* + ******************************** ENUMS ************************************ + ******************************************************************************/ + +// ----------------------------------------------------------------------------- +// Prototypes +/***************************************************************************/ /** + * RHT example initialization function. + * @param none + * @return none + ******************************************************************************/ +void si70xx_example_init(void); + +/***************************************************************************/ /** + * Function will run continuously in while loop and reads relative humidity and + * temperature from sensor + * @param none + * @return none + ******************************************************************************/ +void si70xx_example_process_action(void); + +#endif /* SI70XX_EXAMPLE_H_ */ diff --git a/projects/bluetooth/AI Based smart predictive farming/sl_si91x_si70xx_2.pintool b/projects/bluetooth/AI Based smart predictive farming/sl_si91x_si70xx_2.pintool new file mode 100644 index 0000000..5a1e0ec --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/sl_si91x_si70xx_2.pintool @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/projects/bluetooth/AI Based smart predictive farming/sl_si91x_si70xx_2.slcp b/projects/bluetooth/AI Based smart predictive farming/sl_si91x_si70xx_2.slcp new file mode 100644 index 0000000..592a293 --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/sl_si91x_si70xx_2.slcp @@ -0,0 +1,45 @@ +# Silicon Labs Project Configuration Tools: slcp, v0, Component selection file. +project_name: sl_si91x_si70xx_2 +label: sl_si91x_si70xx_2 +description: | + This application demonstrates how to configures and use si70xx sensor. +category: example|peripheral +package: platform +quality: production +readme: +- {path: readme.md} +- {path: readme.md} +source: +- {path: app.c} +- {path: app.h} +- {path: si70xx_example.c} +- {path: si70xx_example.h} +sdk: {id: simplicity_sdk, version: 2025.6.1} +toolchain_settings: +- {value: -Wall -Werror, option: gcc_compiler_option} +component: +- {from: wiseconnect3_sdk, id: SIWG917M111MGTBA} +- {from: wiseconnect3_sdk, id: brd2605a} +- instance: [i2c2] + from: wiseconnect3_sdk + id: i2c_instance +- {from: wiseconnect3_sdk, id: si91x_memory_default_config} +- {from: wiseconnect3_sdk, id: sl_dma} +- {from: wiseconnect3_sdk, id: sl_i2c} +- {from: wiseconnect3_sdk, id: sl_si70xx} +- {from: wiseconnect3_sdk, id: syscalls} +- {id: sl_main} +- {id: sleeptimer} +other_file: +- {path: resources/readme/setupdiagram.png} +- {path: resources/readme/output1.png} +- {path: resources/readme/output2.png} +- {path: resources/uc_screen/si70xx_uc_screen.png} +ui_hints: + highlight: + - {path: readme.md, focus: true} +sdk_extension: +- {id: wiseconnect3_sdk, version: 3.5.1} +post_build: +- {path: sl_si91x_si70xx_2.slpb} + diff --git a/projects/bluetooth/AI Based smart predictive farming/sl_si91x_si70xx_2.slpb b/projects/bluetooth/AI Based smart predictive farming/sl_si91x_si70xx_2.slpb new file mode 100644 index 0000000..f7132a3 --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/sl_si91x_si70xx_2.slpb @@ -0,0 +1,21 @@ +--- +parameters: +- name: "build_dir" +constants: +- name: "project_name" + value: "sl_si91x_si70xx_2" +steps: +- task: "create_rps" + output: "{{build_dir}}/{{project_name}}.rps" + input: "{{build_dir}}/{{project_name}}.out" + map: "{{build_dir}}/{{project_name}}.map" + app-version: "1" +- task: "convert" + output: "{{build_dir}}/{{project_name}}.hex" + input: "{{build_dir}}/{{project_name}}.rps" +- task: "convert" + output: "{{build_dir}}/{{project_name}}.s37" + input: "{{build_dir}}/{{project_name}}.rps" +- task: "convert" + output: "{{build_dir}}/{{project_name}}_isp.bin" + input: "{{build_dir}}/{{project_name}}.rps" diff --git a/projects/bluetooth/AI Based smart predictive farming/sl_si91x_si70xx_2.slps b/projects/bluetooth/AI Based smart predictive farming/sl_si91x_si70xx_2.slps new file mode 100644 index 0000000..7aef63b --- /dev/null +++ b/projects/bluetooth/AI Based smart predictive farming/sl_si91x_si70xx_2.slps @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file