/* target.config                                                  */
/*                                                                */
/* Configuration file to specify target parameters such as: the   */
/* kind of platform/board, and login credentials.                 */
/*                                                                */
/* NOTE: all commented parameters are optional and report their   */
/*       default value.                                           */

{
    /* Platform */
    /* - linux   : accessed via SSH connection                    */
    /* - android : accessed via ADB connection                    */
    /* - host    : run on the local host                          */
    "platform" : "linux",

    /* Board */
    /* Currently supported boards are:                            */
    /*  juno  : target is a JUNO board                            */
    /*  tc2   : target is a TC2 board                             */
    /* Leave commented if your board is not listed above          */
    "board" : "juno",

    /* Target IP or MAC address */
    "host" : "192.168.0.20",

    /* Target Android device ID */
    //"device" : "00b1346f0878ccb1",

    /* Login username (has to be sudo enabled) */
    "username" : "root",

    /* Login credentials */
    /* You can specify either a password or keyfile */
    "password" : "",
    // "keyfile"   : "/complete/path/of/your/keyfile",

    /* RT-App Calibration */
    /* Keep commented to do calibration at first run on a target. */
    /* Then, replace the values with the ones reported for your   */
    /* specific target in the console logging messages            */
    // "rtapp-calib" :  {
    //     "0": 354, "1": 138, "2": 138, "3": 363, "4": 355, "5": 357
    // },

    /* FTFP Image server */
    /* This is the folder from where the target gets kernel/DTB   */
    /* images at each boot.                                       */
    /* The path of images to be deployed are specified by the     */
    /* experiments configuration (e.g. tests/eas/rfc_eas.json)    */
    "tftp"  : {
        "folder"    : "/var/lib/tftpboot",
        "kernel"    : "kern.bin",
        "dtb"       : "dtb.bin"
    },

    /* Devlib modules to enable/disbale for all the experiments */
    "modules"         : [],
    "exclude_modules" : [],

    /* Binary tools to install by default for all experiments */
    /* Currently available tools:                             */
    /* - binaries under ./tools/<ARCH>/                       */
    /*   where <ARCH> is one of the supported target          */
    /*   architectures                                        */
    /* - shell scripts under './tools/scripts/                */
    "tools"    : [],

    /* Wait time before trying to access the target after reboot */
    // "ping_time" : "15",

    /* Maximum time to wait after rebooting the target */
    // "reboot_time" : "120",

    /* List of test environment features to enable */
    /*  no-kernel : do not deploy kernel/dtb images               */
    /*  no-reboot : do not force reboot the target at each        */
    /*              configuration change                          */
    /*  debug     : enable debugging messages                     */
    "__features__" : "no-kernel no-reboot"
}
