/*
 *
 *    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";
