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


/* Modules */
var AESCCM      = scripting.addModule("/ti/drivers/AESCCM");
var AESECB      = scripting.addModule("/ti/drivers/AESECB");
var Button      = scripting.addModule("/ti/drivers/apps/Button");
var LED         = scripting.addModule("/ti/drivers/apps/LED");
var NVS         = scripting.addModule("/ti/drivers/NVS");
var RF          = scripting.addModule("/ti/drivers/RF");
var RFDesign    = scripting.addModule("ti/devices/radioconfig/rfdesign");
var RFCustom  = scripting.addModule("/ti/devices/radioconfig/custom");
var TRNG        = scripting.addModule("/ti/drivers/TRNG");
var SHA2        = scripting.addModule("/ti/drivers/SHA2");
var UART2       = scripting.addModule("/ti/drivers/UART2");
var ble         = scripting.addModule("/ti/ble5stack/ble");
var dmm         = scripting.addModule("/ti/dmm/dmm");
var AESCTRDRBG  = scripting.addModule("/ti/drivers/AESCTRDRBG");
var ECDH        = scripting.addModule("/ti/drivers/ECDH");

/* Instances */
var AESCCM1     = AESCCM.addInstance();
var AESECB1     = AESECB.addInstance();
var AESECB2     = AESECB.addInstance();
var Button1     = Button.addInstance();
var Button2     = Button.addInstance();
var NVS1        = NVS.addInstance();
var NVS2        = NVS.addInstance();
var SHA21       = SHA2.addInstance();
var LED1        = LED.addInstance();
var LED2        = LED.addInstance();
var TRNG1       = TRNG.addInstance();
var TRNG2       = TRNG.addInstance();
var TRNG3       = TRNG.addInstance();
var UART2      = UART2.addInstance();
var AESCTRDRBG1 = AESCTRDRBG.addInstance();
var ECDH1       = ECDH.addInstance();

AESCTRDRBG1.$name              = "CONFIG_AESCTRDRBG_0";

AESCCM1.$name = "CONFIG_AESCCM0";

AESECB1.$name = "CONFIG_AESECB0";
AESECB2.$name = "CONFIG_AESECB_1";

ECDH1.$name = "CONFIG_ECDH0";

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

/* ======== CCFG ======== */
var CCFG  = scripting.addModule("/ti/devices/CCFG");
const ccfgSettings = system.getScript("/ti/common/lprf_ccfg_settings.js").ccfgSettings;
for(var setting in ccfgSettings)
{
    CCFG[setting] = ccfgSettings[setting];
}

CCFG.enableCodeGeneration = true;


/* NVS */
NVS1.$name                      = "CONFIG_NVSINTERNAL";
NVS1.internalFlash.regionBase = 0xFB800;
NVS1.internalFlash.regionSize = 0x2800;


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

/* RF */
/* if an antenna component exists, assign it to the rf instance */
if (system.deviceData.board && system.deviceData.board.components.RF) {
    RF.$hardware = system.deviceData.board.components.RF;
}

const rfDesignSettings = system.getScript("/ti/common/lprf_rf_design_settings.js").rfDesignSettings;
for(var setting in rfDesignSettings)
{
    RFDesign[setting] = rfDesignSettings[setting];
}



/* Handling for RF frontend characterization */
if(RFDesign.rfDesign.match(/LP_CC2652PSIP/))
{
    RFCustom.ieee = ["ieee154p10"];
    var rfCodeExportConfig = RFCustom.radioConfigieee154p10.codeExportConfig
}
else
{
    RFCustom.ieee = ["ieee154"];
    var rfCodeExportConfig = RFCustom.radioConfigieee154.codeExportConfig
}

var cmdList = [
    "cmdIeeeTx",
    "cmdIeeeRx",
    "cmdIeeeCsma",
    "cmdIeeeEdScan",
    "cmdIeeeRxAck",
    "cmdTxTest"
];

rfCodeExportConfig.useConst     = true;
rfCodeExportConfig.useMulti     = true;
rfCodeExportConfig.symGenMethod = "Custom";

const deviceId = system.deviceData.deviceId;

// Add high PA options if present
if(deviceId.match(/CC(265[12]R|2674R|1352R1|1354R)/))
{
    cmdList.push("cmdRadioSetup");
    rfCodeExportConfig.cmdRadioSetup = "RF_cmdIeeeRadioSetup";
}
else if(deviceId.match(/CC(265[12]P|2674P|1352P)/))
{
    cmdList.push("cmdRadioSetupPa");
    rfCodeExportConfig.cmdRadioSetupPa = "RF_cmdIeeeRadioSetup";
    rfCodeExportConfig.paExport = "combined";
}
else if(deviceId.match(/CC(265[34]|1354)P/))
{
    cmdList.push("cmdRadioSetupPa");
    rfCodeExportConfig.cmdRadioSetupPa = "RF_cmdIeeeRadioSetup";
    // currently not characterized for high PA
}
else
{
    throw new Error("Could not match platform to any known platform types");
}

rfCodeExportConfig.cmdList_ieee_15_4 = cmdList;

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

/* Debug UART  */
UART2.$hardware     = system.deviceData.board.components.XDS110UART;
UART2.$name         = "CONFIG_UART2_DEBUG";

/* TRNG */
TRNG1.$name     = "CONFIG_TRNG_0";
TRNG2.$name     = "CONFIG_TRNG_THREAD";
TRNG3.$name     = "CONFIG_TRNG_APP";

/* BLE */
ble.addressMode                                           = "ADDRMODE_RP_WITH_PUBLIC_ID";
ble.maxConnNum                                            = 1;
ble.numOfAdvSets                                          = 1;
ble.lockProject                                           = true;
ble.oneLibSizeOpt                                         = 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.rfDesign                                 = "LP_EM_CC1354P10_6";

ble.thorPg = 2;
/* DMM */
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;
