(
    tasks: [
        (
            id: "src",
            type: "tasks::CaterpillarSource",
        ),
        (
            id: "ct-0",
            type: "tasks::CaterpillarTask",
        ),
        (
            id: "gpio-0",
            type: "cu_rp_gpio::RPGpio",
            config: {
                "pin": 4,
            },
        ),
        (
            id: "ct-1",
            type: "tasks::CaterpillarTask",
        ),
        (
            id: "gpio-1",
            type: "cu_rp_gpio::RPGpio",
            config: {
                "pin": 17,
            },
        ),
        (
            id: "ct-2",
            type: "tasks::CaterpillarTask",
        ),
        (
            id: "gpio-2",
            type: "cu_rp_gpio::RPGpio",
            config: {
                "pin": 27,
            },
        ),
        (
            id: "ct-3",
            type: "tasks::CaterpillarTask",
        ),
        (
            id: "gpio-3",
            type: "cu_rp_gpio::RPGpio",
            config: {
                "pin": 22,
            },
        ),
        (
            id: "ct-4",
            type: "tasks::CaterpillarTask",
        ),
        (
            id: "gpio-4",
            type: "cu_rp_gpio::RPGpio",
            config: {
                "pin": 5,
            },
        ),
        (
            id: "ct-5",
            type: "tasks::CaterpillarTask",
        ),
        (
            id: "gpio-5",
            type: "cu_rp_gpio::RPGpio",
            config: {
                "pin": 6,
            },
        ),
        (
            id: "ct-6",
            type: "tasks::CaterpillarTask",
        ),
        (
            id: "gpio-6",
            type: "cu_rp_gpio::RPGpio",
            config: {
                "pin": 19,
            },
        ),
        (
            id: "ct-7",
            type: "tasks::CaterpillarTask",
        ),
        (
            id: "gpio-7",
            type: "cu_rp_gpio::RPGpio",
            config: {
                "pin": 26,
            },
        ),
     ],
    cnx: [
        // Make a caterpillar by propagating messages from the source to the GPIOs
        (src: "src",  dst: "ct-0",   msg: "cu_rp_gpio::RPGpioPayload"),
        (src: "ct-0", dst: "ct-1",   msg: "cu_rp_gpio::RPGpioPayload"),
        (src: "ct-1", dst: "ct-2",   msg: "cu_rp_gpio::RPGpioPayload"),
        (src: "ct-2", dst: "ct-3",   msg: "cu_rp_gpio::RPGpioPayload"),
        (src: "ct-3", dst: "ct-4",   msg: "cu_rp_gpio::RPGpioPayload"),
        (src: "ct-4", dst: "ct-5",   msg: "cu_rp_gpio::RPGpioPayload"),
        (src: "ct-5", dst: "ct-6",   msg: "cu_rp_gpio::RPGpioPayload"),
        (src: "ct-6", dst: "ct-7",   msg: "cu_rp_gpio::RPGpioPayload"),

        (src: "ct-0", dst: "gpio-0", msg: "cu_rp_gpio::RPGpioPayload"),
        (src: "ct-1", dst: "gpio-1", msg: "cu_rp_gpio::RPGpioPayload"),
        (src: "ct-2", dst: "gpio-2", msg: "cu_rp_gpio::RPGpioPayload"),
        (src: "ct-3", dst: "gpio-3", msg: "cu_rp_gpio::RPGpioPayload"),
        (src: "ct-4", dst: "gpio-4", msg: "cu_rp_gpio::RPGpioPayload"),
        (src: "ct-5", dst: "gpio-5", msg: "cu_rp_gpio::RPGpioPayload"),
        (src: "ct-6", dst: "gpio-6", msg: "cu_rp_gpio::RPGpioPayload"),
        (src: "ct-7", dst: "gpio-7", msg: "cu_rp_gpio::RPGpioPayload"),
    ],
    monitor: (
                 type: "cu_consolemon::CuConsoleMon",
                 config: {"file": "copperconfig.ron"},
             )
)
