/*
 *
 *    Copyright (c) 2020 Project CHIP Authors
 *    Copyright (c) 2020 Texas Instruments Incorporated
 *    All rights reserved.
 *
 *    Licensed under the Apache License, Version 2.0 (the "License");
 *    you may not use this file except in compliance with the License.
 *    You may obtain a copy of the License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0
 *
 *    Unless required by applicable law or agreed to in writing, software
 *    distributed under the License is distributed on an "AS IS" BASIS,
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *    See the License for the specific language governing permissions and
 *    limitations under the License.
 */

/**
 * These arguments were used when this file was generated. They will be automatically applied on subsequent loads
 * via the GUI or CLI. Run CLI with '--help' for additional information on how to override these arguments.
 * @cliArgs --board "/ti/boards/CC26X2R1_LAUNCHXL" --product "simplelink_cc13x2_26x2_sdk@4.40.05.02_eng"
 * @versions {"tool":"1.9.0+2015","templates":null}
 */

/**
 * Import the modules used in this configuration.
 */
const ble         = scripting.addModule("/ti/ble5stack/ble");
const CCFG        = scripting.addModule("/ti/devices/CCFG");
const rfdesign    = scripting.addModule("/ti/devices/radioconfig/rfdesign");
const dmm         = scripting.addModule("/ti/dmm/dmm");
const AESCCM      = scripting.addModule("/ti/drivers/AESCCM");
const AESCCM1     = AESCCM.addInstance();
const AESCCM2     = AESCCM.addInstance();
const AESCTRDRBG  = scripting.addModule("/ti/drivers/AESCTRDRBG");
const AESCTRDRBG1 = AESCTRDRBG.addInstance();
const AESECB      = scripting.addModule("/ti/drivers/AESECB");
const AESECB1     = AESECB.addInstance();
const AESECB2     = AESECB.addInstance();
const ECDH        = scripting.addModule("/ti/drivers/ECDH");
const ECDH1       = ECDH.addInstance();
const ECDH2       = ECDH.addInstance();
const NVS         = scripting.addModule("/ti/drivers/NVS");
const NVS1        = NVS.addInstance();
const NVS2        = NVS.addInstance();
const RF          = scripting.addModule("/ti/drivers/RF");
const RTOS        = scripting.addModule("/ti/drivers/RTOS");
const SHA2        = scripting.addModule("/ti/drivers/SHA2");
const SHA21       = SHA2.addInstance();
const TRNG        = scripting.addModule("/ti/drivers/TRNG");
const TRNG1       = TRNG.addInstance();
const TRNG2       = TRNG.addInstance();
const TRNG3       = TRNG.addInstance();
const UART        = scripting.addModule("/ti/drivers/UART");
const UART1       = UART.addInstance();
const UART2       = UART.addInstance();
const Button      = scripting.addModule("/ti/drivers/apps/Button");
const Button1     = Button.addInstance();
const Button2     = Button.addInstance();
const LED         = scripting.addModule("/ti/drivers/apps/LED");
const LED1        = LED.addInstance();
const LED2        = LED.addInstance();
const thread      = scripting.addModule("/ti/thread/thread");

/**
 * Write custom configuration values to the imported modules.
 */
ble.maxConnNum                               = 1;
ble.numOfAdvSets                             = 1;
ble.lockProject                              = true;
ble.maxPDUSize                               = 255;
ble.radioConfig.codeExportConfig.$name       = "ti_devices_radioconfig_code_export_param1";
ble.connUpdateParamsPeripheral.$name         = "ti_ble5stack_general_ble_conn_update_params0";
ble.connUpdateParamsPeripheral.reqMinConnInt = 30;
ble.connUpdateParamsPeripheral.reqMaxConnInt = 50;
ble.advSet1.$name                            = "ti_ble5stack_broadcaster_advertisement_set0";
ble.advSet1.advParam1.$name                  = "ti_ble5stack_broadcaster_advertisement_params0";
ble.advSet1.advData1.$name                   = "ti_ble5stack_broadcaster_advertisement_data0";
ble.advSet1.scanRes1.$name                   = "ti_ble5stack_broadcaster_advertisement_data1";

CCFG.enableBootloader         = true;
CCFG.enableBootloaderBackdoor = true;
CCFG.dioBootloaderBackdoor    = 13;
CCFG.levelBootloaderBackdoor  = "Active low";
CCFG.srcClkLF                 = "Derived from HF XOSC";
CCFG.ccfgTemplate.$name       = "ti_devices_CCFGTemplate0";

dmm.project                                        = "ti_thread_thermostat_remote_display";
dmm.stackRoles                                     = ["blePeripheral","threadFTD"];
dmm.lockStackRoles                                 = true;
dmm.numApplicationStates                           = 10;
dmm.applicationState0                              = "ANY";
dmm.applicationState1                              = "DMMPOLICY_BLE_IDLE";
dmm.applicationState2                              = "DMMPOLICY_BLE_ADV";
dmm.applicationState3                              = "DMMPOLICY_BLE_CONNECTING";
dmm.applicationState4                              = "DMMPOLICY_BLE_HIGH_BANDWIDTH";
dmm.applicationState5                              = "DMMPOLICY_BLE_CONNECTED";
dmm.applicationState6                              = "DMMPOLICY_BLE_OAD";
dmm.applicationState7                              = "DMMPOLICY_THREAD_IDLE";
dmm.applicationState8                              = "DMMPOLICY_THREAD_LINK_EST";
dmm.applicationState9                              = "DMMPOLICY_THREAD_DATA";
dmm.policyArray.create(4);
dmm.policyArray[0].$name                           = "ti_dmm_policy_dmm_policy0";
dmm.policyArray[0].blePeripheral.$name             = "ti_dmm_policy_stack_dmm_stack_ble0";
dmm.policyArray[0].blePeripheral.applicationStates = ["applicationState6"];
dmm.policyArray[0].threadFTD.$name                 = "ti_dmm_policy_stack_dmm_stack_thread0";
dmm.policyArray[0].threadFTD.pause                 = "DMMPOLICY_PAUSED";
dmm.policyArray[1].$name                           = "ti_dmm_policy_dmm_policy1";
dmm.policyArray[1].blePeripheral.$name             = "ti_dmm_policy_stack_dmm_stack_ble1";
dmm.policyArray[1].blePeripheral.applicationStates = ["applicationState3","applicationState4"];
dmm.policyArray[1].blePeripheral.weight            = 25;
dmm.policyArray[1].blePeripheral.appliedActivity   = ["DMMPOLICY_APPLIED_ACTIVITY_BLE_CONNECTION"];
dmm.policyArray[1].threadFTD.$name                 = "ti_dmm_policy_stack_dmm_stack_thread1";
dmm.policyArray[2].$name                           = "ti_dmm_policy_dmm_policy2";
dmm.policyArray[2].blePeripheral.$name             = "ti_dmm_policy_stack_dmm_stack_ble2";
dmm.policyArray[2].threadFTD.$name                 = "ti_dmm_policy_stack_dmm_stack_thread2";
dmm.policyArray[2].threadFTD.weight                = 30;
dmm.policyArray[2].threadFTD.applicationStates     = ["applicationState8"];
dmm.policyArray[2].threadFTD.appliedActivity       = ["DMMPOLICY_APPLIED_ACTIVITY_ALL"];
dmm.policyArray[3].$name                           = "ti_dmm_policy_dmm_policy3";
dmm.policyArray[3].blePeripheral.$name             = "ti_dmm_policy_stack_dmm_stack_ble3";
dmm.policyArray[3].threadFTD.$name                 = "ti_dmm_policy_stack_dmm_stack_thread3";
dmm.policyArray[3].threadFTD.weight                = 1;

AESCCM1.$name = "CONFIG_AESCCM0";

AESCCM2.$name = "CONFIG_AESCCM_1";

AESCTRDRBG1.$name              = "CONFIG_AESCTRDRBG_0";
AESCTRDRBG1.aesctrObject.$name = "CONFIG_AESCTR_0";

AESECB1.$name = "CONFIG_AESECB0";

AESECB2.$name = "CONFIG_AESECB_1";

ECDH1.$name = "CONFIG_ECDH0";

ECDH2.$name = "CONFIG_ECDH_1";

NVS1.$name                    = "CONFIG_NVSINTERNAL";
NVS1.internalFlash.$name      = "ti_drivers_nvs_NVSCC26XX0";
NVS1.internalFlash.regionBase = 0xAA000;
NVS1.internalFlash.regionSize = 0x4000;

NVS2.$name                                 = "CONFIG_NVSEXTERNAL";
NVS2.nvsType                               = "External"; // NVS Region Type
NVS2.$hardware                             = system.deviceData.board.components.MX25R8035F;

RTOS.name = "FreeRTOS";

SHA21.$name = "CONFIG_SHA2_0";

TRNG1.$name = "CONFIG_TRNG_0";

TRNG2.$name = "CONFIG_TRNG_1";

TRNG3.$name = "CONFIG_TRNG_APP";

UART1.$name               = "CONFIG_UART_DEBUG";
UART1.uart.$assign        = "UART1";
UART1.uart.txPin.$assign  = "boosterpack.4";
UART1.uart.rxPin.$assign  = "boosterpack.3";
UART1.txPinInstance.$name = "CONFIG_PIN_4";
UART1.rxPinInstance.$name = "CONFIG_PIN_5";

UART2.$name               = "CONFIG_DISPLAY_UART";
UART2.txPinInstance.$name = "CONFIG_PIN_6";
UART2.rxPinInstance.$name = "CONFIG_PIN_7";

/* Left Button */
Button1.$name                       = "CONFIG_BTN_LEFT";
Button1.$hardware                   = system.deviceData.board.components["BTN-1"];
Button1.gpioPin.$name               = "CONFIG_GPIO_BTN1";
Button1.gpioPin.pull                = "Pull Up";
Button1.gpioPin.interruptTrigger    = "Falling Edge";

/* Left Button */
Button2.$name                       = "CONFIG_BTN_RIGHT";
Button2.$hardware                   = system.deviceData.board.components["BTN-2"];
Button2.gpioPin.$name               = "CONFIG_GPIO_BTN2";
Button2.gpioPin.pull                = "Pull Up";
Button2.gpioPin.interruptTrigger    = "Falling Edge";

/* Red LED */
LED1.$name                      = "CONFIG_LED_RED";
LED1.$hardware                  = system.deviceData.board.components.LED_RED;
LED1.gpioPin.$name              = "CONFIG_GPIO_RLED";
LED1.gpioPin.mode               = "Output";
LED1.gpioPin.callbackFunction   = "";

/* Green LED */
LED2.$name                      = "CONFIG_LED_GREEN";
LED2.$hardware                  = system.deviceData.board.components.LED_GREEN;
LED2.gpioPin.$name              = "CONFIG_GPIO_GLED";
LED2.gpioPin.mode               = "Output";
LED2.gpioPin.callbackFunction   = "";

thread.deviceTypeReadOnly                    = true;
thread.pm.$name                              = "ti_thread_pm_thread_pm0";
thread.rf.$name                              = "ti_thread_rf_thread_rf0";
thread.rf.radioConfig.$name                  = "ti_devices_radioconfig_settings_ieee_15_40";
thread.rf.radioConfig.codeExportConfig.$name = "ti_devices_radioconfig_code_export_param0";
thread.network.$name                         = "ti_thread_network_thread_network0";
thread.security.$name                        = "ti_thread_security_thread_security0";

/**
 * Pinmux solution for unlocked pins/peripherals. This ensures that minor changes to the automatic solver in a future
 * version of the tool will not impact the pinmux you originally saw.  These lines can be completely deleted in order to
 * re-solve from scratch.
 */
UART2.uart.$suggestSolution       = "UART0";
UART2.uart.txPin.$suggestSolution = "boosterpack.30";
UART2.uart.rxPin.$suggestSolution = "boosterpack.29";
