This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MMWAVE-STUDIO: Controlling Mmwave studio from Matlab returns the same error code regardless of the script executing successfully or not

Part Number: MMWAVE-STUDIO

Greetings. 

I'm using MATLAB to control mmwave studio with the example code given in the mmwave studio user guide. It gives a return of '30000' irrespective of the command succeeding or failing. In this snippet,

%Example Lua Command 
strFilename = 'C:\\ti\\mmwave_studio_03_00_00_14\\mmWaveStudio\\Scripts\\Cascade\\Cascade_Configuration_MIMO.lua';
Lua_String = sprintf('dofile("%s")',strFilename); 
ErrStatus =RtttNetClientAPI.RtttNetClient.SendCommand(Lua_String);

ErrStatus would always contain 30000 regardless of the Lua script executing successfully in mmWave studio or not. Using this logic in an automated system won't work as the system won't know if the LUA script failed or not.

Is there an API that can tell Matlab if the script execution in mmwave studio failed or not?

  • Hello Asher,

    Did you try the experiment this time with the board connected? Can you send a snippet of the output log as well?

    Regards,

    Ishita 

  • Hi Ishita, 

    Yes, I did the experiment with the board connected. I'm attaching 3 files below.  The success log is when the script is successful. Failure log is when I intentionally messed up a frame parameter. and Script failure is when I gave an incorrect path to the device FW package. 

    In all these cases, the ErrStatus has the value of 30000

    Failure log.txt
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    [17:11:19] RstdNet: Port 2777: Client 127.0.0.1:59359 - Connected
    [17:11:20] Running script from MATLAB
    [17:11:20] Setting up Studio for Cascade started..
    [17:11:20] [RadarAPI]: ar1.SelectCaptureDevice("TDA2XX")
    [17:11:20] [RadarAPI]: Status: Passed
    [17:11:20] [RadarAPI]: TDAStatusCallback Event Registered
    [17:11:20] [RadarAPI]: registerTDAStatusCallback Status: Passed
    [17:11:20] [RadarAPI]: ar1.ConnectTDA("192.168.33.180", 5001, 15)
    [17:11:20] [RadarAPI]: Device 32 : CAPTURE_RESPONSE_ACK Async event recieved() with status 0
    [17:11:20] [RadarAPI]: Device 32 : CAPTURE_RESPONSE_ACK Async event recieved() with status 0
    [17:11:20] [RadarAPI]: Device 32 : CAPTURE_RESPONSE_VERSION_INFO Async event recieved() with status 0. TDA Version : REL_VISION_SDK_03_07_01_00 Aug 5 2019 15:04:45[17:11:21] [RadarAPI]: Device 32 : CAPTURE_RESPONSE_ACK Async event recieved() with status 0
    [17:11:22] [RadarAPI]: Device 1 : CAPTURE_RESPONSE_ACK Async event recieved() with status 0
    [17:11:22] [RadarAPI]: ConnectTDACaptureCard Status: Passed
    [17:11:22] TDA Capture Card Status : CONNECTED!
    [17:11:22] ConnectTDA Successful
    [17:11:22] [RadarAPI]: ar1.selectCascadeMode(1)
    [17:11:22] [RadarAPI]: Status: Passed
    [17:11:22] selectCascadeMode Successful
    [17:11:22] Setting up Studio for Cascade ended..
    [17:11:22] [RadarAPI]: Device 1 : CAPTURE_RESPONSE_ACK Async event recieved() with status 0
    [17:11:23] [RadarAPI]: Device 1 : CAPTURE_RESPONSE_ACK Async event recieved() with status 0
    [17:11:23] [RadarAPI]: ar1.FullReset(1)
    [17:11:23] [RadarAPI]: Status: Passed
    [17:11:23] [RadarAPI]: ar1.SOPControl_mult(1,4)
    [17:11:23] [RadarAPI]: Status: Passed
    [17:11:23] Master : SOP Reset Successful
    [17:11:23] [DeviceId-0] MSS CPU Fault error status Async event recieved(0x3, 0x0,0xFFFFE580, 0x0,0x0, 0x0,0x0, 0xFFFF,0xFF, 0xFF,0xFF, 0xFF)
    [17:11:23] [DeviceId-0] MSS power up done async event received!
    [17:11:23] [RadarAPI]: ar1.PowerOn_mult(1, 0, 1000, 0,0)
    [17:11:23] [RadarAPI]: Status: Passed
    [17:11:23] Master : SPI Connection Successful
    [17:11:23] [RadarAPI]: ar1.DownloadBssFwOvSPI_mult(1, C:\\ti\\mmwave_dfp_02_02_00_03\\firmware\\xwr22xx_metaImage.bin)
    [17:12:25] Master : FW Download Successful
    [17:12:26] [RadarAPI]: ar1.SelectChipVersion("AR1243")
    [17:12:26] [RadarAPI]: Status: Passed
    [17:12:26] [RadarAPI]: ar1.SelectChipVersion("AR1243")
    [17:12:26] [RadarAPI]: Status: Passed
    [17:12:26] [RadarAPI]: ar1.deviceVariantSelection("XWR2243")
    [17:12:26] [RadarAPI]: Status: Passed
    [17:12:26] [RadarAPI]: ar1.frequencyBandSelection("77G")
    [17:12:26] [RadarAPI]: ar1.SelectChipVersion("XWR2243")
    [17:12:26] [RadarAPI]: Status: Passed
    [17:12:26] Device Status : XWR2243/ASIL-B/SOP:4/ES:1.0
    [17:12:26] [DeviceId-0] MSS power up done async event received!
    [17:12:26] [RadarAPI]: Device Restarted, Power On Async Event received
    [17:12:26] [RadarAPI]: ar1.RfEnable_mult(1)
    [17:12:26] [DeviceId-0] BSS power up done async event received!
    [17:12:26] [RadarAPI]: Status: Passed
    [17:12:27] Master : RF Power Up Successful
    [17:12:27] [RadarAPI]: ar1.ChanNAdcConfig_mult(1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 0, 1)
    [17:12:28] [RadarAPI]: Status: Passed
    [17:12:28] Master : Channel & ADC Configuration Successful
    [17:12:28] [RadarAPI]: Device 2 : CAPTURE_RESPONSE_ACK Async event recieved() with status 0
    [17:12:28] [RadarAPI]: Device 2 : CAPTURE_RESPONSE_ACK Async event recieved() with status 0
    [17:12:28] [RadarAPI]: ar1.FullReset(2)
    [17:12:28] [RadarAPI]: Status: Passed
    [17:12:28] [RadarAPI]: ar1.SOPControl_mult(2,4)
    [17:12:28] [RadarAPI]: Status: Passed
    [17:12:28] Device 2 : SOP Reset Successful
    [17:12:28] [DeviceId-1] MSS CPU Fault error status Async event recieved(0x3, 0x0,0xFFFFE580, 0x0,0x0, 0x0,0x0, 0xFFFF,0xFF, 0xFF,0xFF, 0xFF)
    [17:12:29] [DeviceId-1] MSS power up done async event received!
    [17:12:29] [RadarAPI]: ar1.AddDevice(2)
    [17:12:29] [RadarAPI]: Status: Passed
    [17:12:29] Device 2 : SPI Connection Successful
    [17:12:29] [RadarAPI]: Device 4 : CAPTURE_RESPONSE_ACK Async event recieved() with status 0
    [17:12:29] [RadarAPI]: Device 4 : CAPTURE_RESPONSE_ACK Async event recieved() with status 0
    [17:12:29] [RadarAPI]: ar1.FullReset(4)
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Script Failure log.txt
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    [17:24:58] Running script from MATLAB
    [17:24:58] Setting up Studio for Cascade started..
    [17:24:58] [RadarAPI]: Connection to the TDA is already established!
    [17:24:58] ConnectTDA Successful
    [17:24:58] selectCascadeMode Successful
    [17:24:58] Setting up Studio for Cascade ended..
    [17:24:58] [RadarAPI]: ar1.PowerOff_mult()
    [17:24:58] [RadarAPI]: Status: Passed
    [17:24:58] [RadarAPI]: Device 1 : CAPTURE_RESPONSE_ACK Async event recieved() with status 0
    [17:24:58] [RadarAPI]: Device 1 : CAPTURE_RESPONSE_ACK Async event recieved() with status 0
    [17:24:59] [RadarAPI]: ar1.FullReset(1)
    [17:24:59] [RadarAPI]: Status: Passed
    [17:24:59] [RadarAPI]: ar1.SOPControl_mult(1,4)
    [17:24:59] [RadarAPI]: Status: Passed
    [17:24:59] Master : SOP Reset Successful
    [17:24:59] [DeviceId-0] MSS CPU Fault error status Async event recieved(0x3, 0x0,0xFFFFE580, 0x0,0x0, 0x0,0x0, 0xFFFF,0xFF, 0xFF,0xFF, 0xFF)
    [17:24:59] [DeviceId-0] MSS power up done async event received!
    [17:24:59] [RadarAPI]: ar1.PowerOn_mult(1, 0, 1000, 0,0)
    [17:24:59] [RadarAPI]: Status: Passed
    [17:24:59] Master : SPI Connection Successful
    [17:24:59] [RadarAPI]: Error: Could not find file 'C:\ti\mmwave_dfp_02_02_00_09\firmware\xwr22xx_metaImage.bin'
    [17:24:59] Master : FW Download Failed
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Success log.txt
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    [17:11:19] RstdNet: Port 2777: Client 127.0.0.1:59359 - Connected
    [17:11:20] Running script from MATLAB
    [17:11:20] Setting up Studio for Cascade started..
    [17:11:20] [RadarAPI]: ar1.SelectCaptureDevice("TDA2XX")
    [17:11:20] [RadarAPI]: Status: Passed
    [17:11:20] [RadarAPI]: TDAStatusCallback Event Registered
    [17:11:20] [RadarAPI]: registerTDAStatusCallback Status: Passed
    [17:11:20] [RadarAPI]: ar1.ConnectTDA("192.168.33.180", 5001, 15)
    [17:11:20] [RadarAPI]: Device 32 : CAPTURE_RESPONSE_ACK Async event recieved() with status 0
    [17:11:20] [RadarAPI]: Device 32 : CAPTURE_RESPONSE_ACK Async event recieved() with status 0
    [17:11:20] [RadarAPI]: Device 32 : CAPTURE_RESPONSE_VERSION_INFO Async event recieved() with status 0. TDA Version : REL_VISION_SDK_03_07_01_00 Aug 5 2019 15:04:45[17:11:21] [RadarAPI]: Device 32 : CAPTURE_RESPONSE_ACK Async event recieved() with status 0
    [17:11:22] [RadarAPI]: Device 1 : CAPTURE_RESPONSE_ACK Async event recieved() with status 0
    [17:11:22] [RadarAPI]: ConnectTDACaptureCard Status: Passed
    [17:11:22] TDA Capture Card Status : CONNECTED!
    [17:11:22] ConnectTDA Successful
    [17:11:22] [RadarAPI]: ar1.selectCascadeMode(1)
    [17:11:22] [RadarAPI]: Status: Passed
    [17:11:22] selectCascadeMode Successful
    [17:11:22] Setting up Studio for Cascade ended..
    [17:11:22] [RadarAPI]: Device 1 : CAPTURE_RESPONSE_ACK Async event recieved() with status 0
    [17:11:23] [RadarAPI]: Device 1 : CAPTURE_RESPONSE_ACK Async event recieved() with status 0
    [17:11:23] [RadarAPI]: ar1.FullReset(1)
    [17:11:23] [RadarAPI]: Status: Passed
    [17:11:23] [RadarAPI]: ar1.SOPControl_mult(1,4)
    [17:11:23] [RadarAPI]: Status: Passed
    [17:11:23] Master : SOP Reset Successful
    [17:11:23] [DeviceId-0] MSS CPU Fault error status Async event recieved(0x3, 0x0,0xFFFFE580, 0x0,0x0, 0x0,0x0, 0xFFFF,0xFF, 0xFF,0xFF, 0xFF)
    [17:11:23] [DeviceId-0] MSS power up done async event received!
    [17:11:23] [RadarAPI]: ar1.PowerOn_mult(1, 0, 1000, 0,0)
    [17:11:23] [RadarAPI]: Status: Passed
    [17:11:23] Master : SPI Connection Successful
    [17:11:23] [RadarAPI]: ar1.DownloadBssFwOvSPI_mult(1, C:\\ti\\mmwave_dfp_02_02_00_03\\firmware\\xwr22xx_metaImage.bin)
    [17:12:25] Master : FW Download Successful
    [17:12:26] [RadarAPI]: ar1.SelectChipVersion("AR1243")
    [17:12:26] [RadarAPI]: Status: Passed
    [17:12:26] [RadarAPI]: ar1.SelectChipVersion("AR1243")
    [17:12:26] [RadarAPI]: Status: Passed
    [17:12:26] [RadarAPI]: ar1.deviceVariantSelection("XWR2243")
    [17:12:26] [RadarAPI]: Status: Passed
    [17:12:26] [RadarAPI]: ar1.frequencyBandSelection("77G")
    [17:12:26] [RadarAPI]: ar1.SelectChipVersion("XWR2243")
    [17:12:26] [RadarAPI]: Status: Passed
    [17:12:26] Device Status : XWR2243/ASIL-B/SOP:4/ES:1.0
    [17:12:26] [DeviceId-0] MSS power up done async event received!
    [17:12:26] [RadarAPI]: Device Restarted, Power On Async Event received
    [17:12:26] [RadarAPI]: ar1.RfEnable_mult(1)
    [17:12:26] [DeviceId-0] BSS power up done async event received!
    [17:12:26] [RadarAPI]: Status: Passed
    [17:12:27] Master : RF Power Up Successful
    [17:12:27] [RadarAPI]: ar1.ChanNAdcConfig_mult(1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 0, 1)
    [17:12:28] [RadarAPI]: Status: Passed
    [17:12:28] Master : Channel & ADC Configuration Successful
    [17:12:28] [RadarAPI]: Device 2 : CAPTURE_RESPONSE_ACK Async event recieved() with status 0
    [17:12:28] [RadarAPI]: Device 2 : CAPTURE_RESPONSE_ACK Async event recieved() with status 0
    [17:12:28] [RadarAPI]: ar1.FullReset(2)
    [17:12:28] [RadarAPI]: Status: Passed
    [17:12:28] [RadarAPI]: ar1.SOPControl_mult(2,4)
    [17:12:28] [RadarAPI]: Status: Passed
    [17:12:28] Device 2 : SOP Reset Successful
    [17:12:28] [DeviceId-1] MSS CPU Fault error status Async event recieved(0x3, 0x0,0xFFFFE580, 0x0,0x0, 0x0,0x0, 0xFFFF,0xFF, 0xFF,0xFF, 0xFF)
    [17:12:29] [DeviceId-1] MSS power up done async event received!
    [17:12:29] [RadarAPI]: ar1.AddDevice(2)
    [17:12:29] [RadarAPI]: Status: Passed
    [17:12:29] Device 2 : SPI Connection Successful
    [17:12:29] [RadarAPI]: Device 4 : CAPTURE_RESPONSE_ACK Async event recieved() with status 0
    [17:12:29] [RadarAPI]: Device 4 : CAPTURE_RESPONSE_ACK Async event recieved() with status 0
    [17:12:29] [RadarAPI]: ar1.FullReset(4)
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

  • Hello Asher,

    I tried to understand your failure and success log scripts, but both of them seem correct to me. If 'm not wrong, the device was able to configure chirps and frames successfully in case of both.

    Maybe I'm still not able to understand the part where you're getting this error.  

    Regards,

    Ishita

  • Hi Ishita, in the success log, the device was configured according to the cascade_configure_mimo.Lua

    In the failure log, I changed the frame periodicity(inter-frame interval) to a really low number(line 86), and when I ran it, I got a pop-up on mmwave studio saying the number is too low and the required frame periodicity is x and you've set the periodicity as y. Also, Matlab only resumed only after I pressed Ok on the pop-up.

    In the script failure log, I put in an incorrect path to the device FW (line 32) so that it's not able to find anything at the location specified. 

    In all the 3 cases, the return code I received on Matlab was 30000. I'm attaching the LUA script that I used to do this experiment( it comes with mmwave studio installation)

    I could not post the lua file here, so I'm pasting it in code format. 

    --[[
    Sequence being followed
    
    A. CONFIGURATION
    1. Connecting to TDA
    1. Configuring Master from SOP till Channel Config
    2. Configuring Slave (i) sequentially from SOP till SPI Connect. i = 1, 2, 3
    3. Configuring Slaves together from F/W download till Channel Config
    4. Configuring all devices together from LDO Bypass till Frame Config
    
    NOTE:
    Update the following in the script accordingly before running
    1. metaImage F/W path on line 32
    2. TDA Host Board IP Address on line 39
    --]]
        
    ----------------------------------------User Constants--------------------------------------------
           
    dev_list          =    {1, 2, 4, 8}       -- Device map
    RadarDevice       =    {1, 1, 1, 1}       -- {dev1, dev2, dev3, dev4}, 1: Enable, 0: Disable
    cascade_mode_list =    {1, 2, 2, 2}       -- 0: Single chip, 1: Master, 2: Slave
    
    -- F/W Download Path
    
    -- Uncomment the next line if you wish to pop-up a dialog box to select the firmware image file
    -- Otherwise, hardcode the path to the firmware metaimage below
    -- By default, the firmware filename is: xwr22xx_metaImage.bin
    
    -- metaImagePath  =   RSTD.BrowseForFile(RSTD.GetSettingsPath(), "bin", "Browse to .bin file")
    -- For 2243 ES1.1 devices
    -- metaImagePath            =   "C:\\ti\\mmwave_dfp_02_02_02_01\\firmware\\xwr22xx_metaImage.bin"
    -- For 2243 ES1.0 devices
     metaImagePath            =   "C:\\ti\\mmwave_dfp_02_01_05_03\\firmware\\xwr22xx_metaImage.bin"
    
    -- IP Address for the TDA2 Host Board
    -- Change this accordingly for your setup
    
    TDA_IPAddress     =   "192.168.33.180"
    
    -- Device map of all the devices to be enabled by TDA
    -- 1 - master ; 2- slave1 ; 4 - slave2 ; 8 - slave3
    
    deviceMapOverall  =   RadarDevice[1] + (RadarDevice[2]*2) + (RadarDevice[3]*4) + (RadarDevice[4]*8)
    deviceMapSlaves   =   (RadarDevice[2]*2) + (RadarDevice[3]*4) + (RadarDevice[4]*8)
    
    -- Enable/Disable Test Source
    -- This is useful during bringup
    
    test_source_enable  =   0      -- 0: Disable, 1: Enable
        
    ------------------------------------------- Sensor Configuration ------------------------------------------------
    --[[
    The sensor configuration consists of 3 sections:
    1) Profile Configuration (common to all 4 AWR devices)
    2) Chirp Configuration (unique for each AWR device - mainly because TXs to use are 
                            different for each chirp)
    3) Frame Configuration (common to all 4 AWR devices, except for the trigger mode for the master)
    Change the values below as needed. --]]
    
    -- Profile configuration
    local profile_indx              =   0
    local start_freq                =   77     -- GHz
    local slope                     =   15     -- MHz/us
    local idle_time                 =   4      -- us
    local adc_start_time            =   5      -- us
    local adc_samples               =   256    -- Number of samples per chirp
    local sample_freq               =   15000   -- ksps
    local ramp_end_time             =   23     -- us
    local rx_gain                   =   48     -- dB
    local tx0OutPowerBackoffCode    =   0
    local tx1OutPowerBackoffCode    =   0
    local tx2OutPowerBackoffCode    =   0
    local tx0PhaseShifter           =   0
    local tx1PhaseShifter           =   0
    local tx2PhaseShifter           =   0
    local txStartTimeUSec           =   0
    local hpfCornerFreq1            =   0      -- 0: 175KHz, 1: 235KHz, 2: 350KHz, 3: 700KHz
    local hpfCornerFreq2            =   0      -- 0: 350KHz, 1: 700KHz, 2: 1.4MHz, 3: 2.8MHz
    
    -- Frame configuration    
    local start_chirp_tx            =   0
    local end_chirp_tx              =   11
    local nchirp_loops              =   128     -- Number of chirps per frame
    local nframes_master            =   50     -- Number of Frames for Master
    local nframes_slave             =   50     -- Number of Frames for Slaves
    local Inter_Frame_Interval      =   100    -- ms
    local trigger_delay             =   0      -- us
    local trig_list                 =   {1,2,2,2} -- 1: Software trigger, 2: Hardware trigger    
    
    --[[
    Function to configure the chirps specific to a device
    12 chirps are configured below, individually for each AWR device
    
    |-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|
    |       | Dev 1 | Dev 1 | Dev 1 | Dev 2 | Dev 2 | Dev 2 | Dev 3 | Dev 3 | Dev 3 | Dev 4 | Dev 4 | Dev 4 |
    | Chirp |  TX0  |  TX1  |  TX2  |  TX 0 |  TX1  |  TX2  |  TX0  |  TX1  |  TX2  |  TX0  |  TX1  |  TX2  |
    |-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|
    |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     1 |
    |     1 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     1 |     0 |
    |     2 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     1 |     0 |     0 |
    |     3 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     1 |     0 |     0 |     0 |
    |     4 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     1 |     0 |     0 |     0 |     0 |
    |     5 |     0 |     0 |     0 |     0 |     0 |     0 |     1 |     0 |     0 |     0 |     0 |     0 |
    |     6 |     0 |     0 |     0 |     0 |     0 |     1 |     0 |     0 |     0 |     0 |     0 |     0 |
    |     7 |     0 |     0 |     0 |     0 |     1 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |
    |     8 |     0 |     0 |     0 |     1 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |
    |     9 |     0 |     0 |     1 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |
    |    10 |     0 |     1 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |
    |    11 |     1 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |     0 |
    |-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|
    --]] 
    -- Note: The syntax for this API is:
    -- ar1.ChirpConfig_mult(RadarDeviceId, chirpStartIdx, chirpEndIdx, profileId, startFreqVar, 
    --                      freqSlopeVar, idleTimeVar, adcStartTimeVar, tx0Enable, tx1Enable, tx2Enable)
    
    function Configure_Chirps(i) 
        
        if (i == 1) then
                
                -- Chirp 0
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 0 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 0 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 1
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 1, 1, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 1 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 1 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 2
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 2, 2, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 2 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 2 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 3
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 3, 3, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 3 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 3 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 4
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 4, 4, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 4 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 4 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 5
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 5, 5, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 5 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 5 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 6
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 6, 6, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 6 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 6 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 7
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 7, 7, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 7 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 7 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 8
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 8, 8, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 8 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 8 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 9
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 9, 9, 0, 0, 0, 0, 0, 0, 0, 1)) then
                    WriteToLog("Device "..i.." : Chirp 9 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 9 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 10
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 10, 10, 0, 0, 0, 0, 0, 0, 1, 0)) then
                    WriteToLog("Device "..i.." : Chirp 10 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 10 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 11
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 11, 11, 0, 0, 0, 0, 0, 1, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 11 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 11 Configuration failed\n", "red")
                    return -4
                end
            
        elseif (i == 2) then
        
                -- Chirp 0
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 0 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 0 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 1
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 1, 1, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 1 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 1 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 2
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 2, 2, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 2 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 2 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 3
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 3, 3, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 3 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 3 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 4
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 4, 4, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 4 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 4 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 5
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 5, 5, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 5 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 5 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 6
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 6, 6, 0, 0, 0, 0, 0, 0, 0, 1)) then
                    WriteToLog("Device "..i.." : Chirp 6 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 6 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 7
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 7, 7, 0, 0, 0, 0, 0, 0, 1, 0)) then
                    WriteToLog("Device "..i.." : Chirp 7 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 7 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 8
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 8, 8, 0, 0, 0, 0, 0, 1, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 8 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 8 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 9
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 9, 9, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 9 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 9 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 10
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 10, 10, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 10 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 10 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 11
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 11, 11, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 11 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 11 Configuration failed\n", "red")
                    return -4
                end
                
        elseif (i == 3) then
        
                -- Chirp 0
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 0 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 0 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 1
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 1, 1, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 1 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 1 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 2
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 2, 2, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 2 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 2 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 3
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 3, 3, 0, 0, 0, 0, 0, 0, 0, 1)) then
                    WriteToLog("Device "..i.." : Chirp 3 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 3 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 4
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 4, 4, 0, 0, 0, 0, 0, 0, 1, 0)) then
                    WriteToLog("Device "..i.." : Chirp 4 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 4 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 5
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 5, 5, 0, 0, 0, 0, 0, 1, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 5 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 5 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 6
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 6, 6, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 6 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 6 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 7
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 7, 7, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 7 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 7 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 8
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 8, 8, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 8 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 8 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 9
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 9, 9, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 9 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 9 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 10
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 10, 10, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 10 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 10 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 11
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 11, 11, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 11 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 11 Configuration failed\n", "red")
                    return -4
                end
                
        elseif (i == 4) then
        
                -- Chirp 0
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 0, 0, 0, 0, 0, 0, 0, 0, 0, 1)) then
                    WriteToLog("Device "..i.." : Chirp 0 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 0 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 1
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 1, 1, 0, 0, 0, 0, 0, 0, 1, 0)) then
                    WriteToLog("Device "..i.." : Chirp 1 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 1 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 2
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 2, 2, 0, 0, 0, 0, 0, 1, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 2 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 2 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 3
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 3, 3, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 3 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 3 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 4
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 4, 4, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 4 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 4 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 5
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 5, 5, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 5 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 5 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 6
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 6, 6, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 6 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 6 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 7
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 7, 7, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 7 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 7 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 8
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 8, 8, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 8 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 8 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 9
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 9, 9, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 9 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 9 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 10
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 10, 10, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 10 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 10 Configuration failed\n", "red")
                    return -4
                end
                
                -- Chirp 11
                if (0 == ar1.ChirpConfig_mult(dev_list[i], 11, 11, 0, 0, 0, 0, 0, 0, 0, 0)) then
                    WriteToLog("Device "..i.." : Chirp 11 Configuration successful\n", "green")
                else
                    WriteToLog("Device "..i.." : Chirp 11 Configuration failed\n", "red")
                    return -4
                end
            
        end
    
    end
     
    ------------------------------ API Configuration ------------------------------------------------
        
    -- 1. Connection to TDA. 2. Selecting Cascade/Single Chip.  3. Selecting 2-chip/4-chip
    
    WriteToLog("Setting up Studio for Cascade started..\n", "blue")
    
    if(0 == ar1.ConnectTDA(TDA_IPAddress, 5001, deviceMapOverall)) then
        WriteToLog("ConnectTDA Successful\n", "green")
    else
        WriteToLog("ConnectTDA Failed\n", "red")
        return -1
    end
    
    if(0 == ar1.selectCascadeMode(1)) then
        WriteToLog("selectCascadeMode Successful\n", "green")
    else
        WriteToLog("selectCascadeMode Failed\n", "red")
        return -1
    end
    
    WriteToLog("Setting up Studio for Cascade ended..\n", "blue")
             
    --Master Initialization
    
    -- SOP Mode Configuration
    if (0 == ar1.SOPControl_mult(1, 4)) then
        WriteToLog("Master : SOP Reset Successful\n", "green")
    else
        WriteToLog("Master : SOP Reset Failed\n", "red")
        return -1
    end
    
    -- SPI Connect
    if (0 == ar1.PowerOn_mult(1, 0, 1000, 0, 0)) then
        WriteToLog("Master : SPI Connection Successful\n", "green")
    else
        WriteToLog("Master : SPI Connection Failed\n", "red")
        return -1
    end
    
    -- Firmware Download. (SOP 4 - MetaImage)
    if (0 == ar1.DownloadBssFwOvSPI_mult(1, metaImagePath)) then
        WriteToLog("Master : FW Download Successful\n", "green")
    else
        WriteToLog("Master : FW Download Failed\n", "red")
        return -1
    end
    
    -- RF Power Up
    if (0 == ar1.RfEnable_mult(1)) then
        WriteToLog("Master : RF Power Up Successful\n", "green")
    else
        WriteToLog("Master : RF Power Up Failed\n", "red")
        return -1
    end            
             
    -- Channel & ADC Configuration
    if (0 == ar1.ChanNAdcConfig_mult(1,1,1,1,1,1,1,1,2,1,0,1)) then
        WriteToLog("Master : Channel & ADC Configuration Successful\n", "green")
    else
        WriteToLog("Master : Channel & ADC Configuration Failed\n", "red")
        return -2
    end
        
    -- Slaves Initialization
       
    for i=2,table.getn(RadarDevice) do 
        local status    =    0                
        if ((RadarDevice[1]==1) and (RadarDevice[i]==1)) then
          
            -- SOP Mode Configuration
            if (0 == ar1.SOPControl_mult(dev_list[i], 4)) then
                WriteToLog("Device "..i.." : SOP Reset Successful\n", "green")
            else
                WriteToLog("Device "..i.." : SOP Reset Failed\n", "red")
                return -1
            end
                    
            -- SPI Connect    
            if (0 == ar1.AddDevice(dev_list[i])) then
                WriteToLog("Device "..i.." : SPI Connection Successful\n", "green")
            else
                WriteToLog("Device "..i.." : SPI Connection Failed\n", "red")
                return -1
            end
               
        end
    end  
        
    -- Firmware Download. (SOP 4 - MetaImage)
    if (0 == ar1.DownloadBssFwOvSPI_mult(deviceMapSlaves, metaImagePath)) then
        WriteToLog("Slaves : FW Download Successful\n", "green")
    else
        WriteToLog("Slaves : FW Download Failed\n", "red")
        return -1
    end
             
    -- RF Power Up
    if (0 == ar1.RfEnable_mult(deviceMapSlaves)) then
        WriteToLog("Slaves : RF Power Up Successful\n", "green")
    else
        WriteToLog("Slaves : RF Power Up Failed\n", "red")
        return -1
    end    
    
    -- Channel & ADC Configuration
    if (0 == ar1.ChanNAdcConfig_mult(deviceMapSlaves,1,1,1,1,1,1,1,2,1,0,2)) then
        WriteToLog("Slaves : Channel & ADC Configuration Successful\n", "green")
    else
        WriteToLog("Slaves : Channel & ADC Configuration Failed\n", "red")
        return -2
    end
                
    -- All devices together        
              
    -- Including this depends on the type of board being used.
    -- LDO configuration
    if (0 == ar1.RfLdoBypassConfig_mult(deviceMapOverall, 3)) then
        WriteToLog("LDO Bypass Successful\n", "green")
    else
        WriteToLog("LDO Bypass failed\n", "red")
        return -2
    end
    
    -- Low Power Mode Configuration
    if (0 == ar1.LPModConfig_mult(deviceMapOverall,0, 0)) then
        WriteToLog("Low Power Mode Configuration Successful\n", "green")
    else
        WriteToLog("Low Power Mode Configuration failed\n", "red")
        return -2
    end
    
    -- Miscellaneous Control Configuration
    if (0 == ar1.SetMiscConfig_mult(deviceMapOverall, 1, 0, 0, 0)) then
        WriteToLog("Misc Control Configuration Successful\n", "green")
    else
        WriteToLog("Misc Control Configuration failed\n", "red")
        return -2
    end
    
    -- Edit this API to enable/disable the boot time calibration. Enabled by default.
    -- RF Init Calibration Configuration
    if (0 == ar1.RfInitCalibConfig_mult(deviceMapOverall, 1, 1, 1, 1, 1, 1, 1, 65537)) then
        WriteToLog("RF Init Calibration Successful\n", "green")
    else
        WriteToLog("RF Init Calibration failed\n", "red")
        return -2
    end
             
    -- RF Init
    if (0 == ar1.RfInit_mult(deviceMapOverall)) then
        WriteToLog("RF Init Successful\n", "green")
    else
        WriteToLog("RF Init failed\n", "red")
        return -2
    end
    
    ---------------------------Data Configuration----------------------------------
            
    -- Data path Configuration
    if (0 == ar1.DataPathConfig_mult(deviceMapOverall, 0, 1, 0)) then
        WriteToLog("Data Path Configuration Successful\n", "green")
    else
        WriteToLog("Data Path Configuration failed\n", "red")
        return -3
    end
    
    -- Clock Configuration
    if (0 == ar1.LvdsClkConfig_mult(deviceMapOverall, 1, 1)) then
        WriteToLog("Clock Configuration Successful\n", "green")
    else
        WriteToLog("Clock Configuration failed\n", "red")
        return -3
    end
    
    -- CSI2 Configuration
    if (0 == ar1.CSI2LaneConfig_mult(deviceMapOverall, 1, 0, 2, 0, 4, 0, 5, 0, 3, 0, 0)) then
        WriteToLog("CSI2 Configuration Successful\n", "green")
    else
        WriteToLog("CSI2 Configuration failed\n", "red")
        return -3
    end
    
    ----------------------------Test Source Configuration------------------------------
    -- This is useful for initial bringup.
    -- Each device is configured with a test object at a different location.
        
    if(test_source_enable == 1) then
        
        if(RadarDevice[1] == 1) then
            -- Object at 5 m with x = 4m and y = 3m
            if (0 == ar1.SetTestSource_mult(1, 4, 3, 0, 0, 0, 0, -327, 0, -327, 327, 327, 327, -2.5, 327, 327, 0, 
                     0, 0, 0, -327, 0, -327, 327, 327, 327, -95, 0, 0, 0.5, 0, 1, 0, 1.5, 0, 0, 0, 0, 0, 0, 0, 0)) then
                WriteToLog("Device 1 : Test Source Configuration Successful\n", "green")
            else
                WriteToLog("Device 1 : Test Source Configuration failed\n", "red")
                return -3
            end
        end
        
        if(RadarDevice[2] == 1) then        
            -- Object at 5 m with x = 3m and y = 4m
            if (0 == ar1.SetTestSource_mult(2, 3, 4, 0, 0, 0, 0, -327, 0, -327, 327, 327, 327, -2.5, 327, 327, 0, 
                     0, 0, 0, -327, 0, -327, 327, 327, 327, -95, 0, 0, 0.5, 0, 1, 0, 1.5, 0, 0, 0, 0, 0, 0, 0, 0)) then
                WriteToLog("Device 2 : Test Source Configuration Successful\n", "green")
            else
                WriteToLog("Device 2 : Test Source Configuration failed\n", "red")
                return -3
            end
        end
        
        if(RadarDevice[3] == 1) then         
            -- Object at 13 m with x = 12m and y = 5m
            if (0 == ar1.SetTestSource_mult(4, 12, 5, 0, 0, 0, 0, -327, 0, -327, 327, 327, 327, -2.5, 327, 327, 0, 
                     0, 0, 0, -327, 0, -327, 327, 327, 327, -95, 0, 0, 0.5, 0, 1, 0, 1.5, 0, 0, 0, 0, 0, 0, 0, 0)) then
                WriteToLog("Device 3 : Test Source Configuration Successful\n", "green")
            else
                WriteToLog("Device 3 : Test Source Configuration failed\n", "red")
                return -3
            end
        end
        
        if(RadarDevice[4] == 1) then        
            -- Object at 13 m with x = 5m and y = 12m
            if (0 == ar1.SetTestSource_mult(8, 5, 12, 0, 0, 0, 0, -327, 0, -327, 327, 327, 327, -2.5, 327, 327, 0, 
                     0, 0, 0, -327, 0, -327, 327, 327, 327, -95, 0, 0, 0.5, 0, 1, 0, 1.5, 0, 0, 0, 0, 0, 0, 0, 0)) then
                WriteToLog("Device 4 : Test Source Configuration Successful\n", "green")
            else
                WriteToLog("Device 4 : Test Source Configuration failed\n", "red")
                return -3
            end
        end
           
    end           
    
    ---------------------------Sensor Configuration-------------------------
    
    -- Profile Configuration
    if (0 == ar1.ProfileConfig_mult(deviceMapOverall, 0, start_freq, idle_time, adc_start_time, ramp_end_time, 
                                    0, 0, 0, 0, 0, 0, slope, 0, adc_samples, sample_freq, 0, 0, rx_gain)) then
        WriteToLog("Profile Configuration successful\n", "green")
    else
        WriteToLog("Profile Configuration failed\n", "red")
        return -4
    end
    
    -- Chirp Configuration 
    for i=1,table.getn(RadarDevice) do    
        if ((RadarDevice[1]==1) and (RadarDevice[i]==1)) then
            Configure_Chirps(i)                
        end
    end
    
    -- Enabling/ Disabling Test Source
    if(test_source_enable == 1) then
        ar1.EnableTestSource_mult(deviceMapOverall, 1)
        WriteToLog("Enabling Test Source Configuration successful\n", "green")
    end
    
    -- Frame Configuration
    -- Master
    if (0 == ar1.FrameConfig_mult(1,start_chirp_tx,end_chirp_tx,nframes_master, nchirp_loops, 
                                  Inter_Frame_Interval, 0, 1)) then
        WriteToLog("Master : Frame Configuration successful\n", "green")
    else
        WriteToLog("Master : Frame Configuration failed\n", "red")
    end
    -- Slaves 
    if (0 == ar1.FrameConfig_mult(deviceMapSlaves,start_chirp_tx,end_chirp_tx,nframes_slave, nchirp_loops, 
                                  Inter_Frame_Interval, 0, 2)) then
        WriteToLog("Slaves : Frame Configuration successful\n", "green")
    else
        WriteToLog("Slaves : Frame Configuration failed\n", "red")
    end

  • Hello Asher,

    I understand your concern now. I've contacted the author of these scripts for some insights on this. Let me get back to you as soon as I hear back. But either way, I will keep you posted (Will try to get back with an answer by Thursday).

    Thankyou for your patience.

    Regards,

    Ishita

  • Thanks a lot for helping me out, Ishita. I'll wait for a response from your end. 

  • Hello Asher,

    I'm afraid I won't be able to help much here. Although we do use MATLAB for is its easiness in algorithm development, but we provide limited support on this.

    In other words, we do not recommend to use this method for production level of test.

    Regards,

    Ishita

  • Thank you for the response, Ishita. Is there a way that you guys would recommend? 

    My only concern so far is that MATLAB won't know if the script execution in mmwave failed to execute or not. The solution doesn't have to be production-grade. 

  • Hello Asher,

    We also sometimes run into errors, but our team has not spent much time in understanding the reliability of controlling studio from Matlab. You'll have to debug this step by step on your own. It looks like some small error only, but I won't be able to help you much on that Front.

    We do receive a lot of queries for some python controllability as well, maybe you could look for some similar threads on our forum and get some idea.

    Sincere Apologies.

    Regards,

    Ishita

  • I understand. Thank you for the response.