"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const zdo_1 = require("../../../zspec/zdo");
const constants_1 = require("../unpi/constants");
const parameterType_1 = __importDefault(require("./parameterType"));
const Definition = {
    [constants_1.Subsystem.SYS]: [
        {
            name: "resetReq",
            ID: 0,
            type: constants_1.Type.AREQ,
            request: [{ name: "type", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "ping",
            ID: 1,
            type: constants_1.Type.SREQ,
            request: [],
            response: [{ name: "capabilities", parameterType: parameterType_1.default.UINT16 }],
        },
        {
            name: "version",
            ID: 2,
            type: constants_1.Type.SREQ,
            request: [],
            response: [
                { name: "transportrev", parameterType: parameterType_1.default.UINT8 },
                { name: "product", parameterType: parameterType_1.default.UINT8 },
                { name: "majorrel", parameterType: parameterType_1.default.UINT8 },
                { name: "minorrel", parameterType: parameterType_1.default.UINT8 },
                { name: "maintrel", parameterType: parameterType_1.default.UINT8 },
                { name: "revision", parameterType: parameterType_1.default.UINT32 },
            ],
        },
        {
            name: "setExtAddr",
            ID: 3,
            type: constants_1.Type.SREQ,
            request: [{ name: "extaddress", parameterType: parameterType_1.default.IEEEADDR }],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "getExtAddr",
            ID: 4,
            type: constants_1.Type.SREQ,
            request: [],
            response: [{ name: "extaddress", parameterType: parameterType_1.default.IEEEADDR }],
        },
        {
            name: "ramRead",
            ID: 5,
            type: constants_1.Type.SREQ,
            request: [
                { name: "address", parameterType: parameterType_1.default.UINT16 },
                { name: "len", parameterType: parameterType_1.default.UINT8 },
            ],
            response: [
                { name: "status", parameterType: parameterType_1.default.UINT8 },
                { name: "len", parameterType: parameterType_1.default.UINT8 },
                { name: "value", parameterType: parameterType_1.default.BUFFER },
            ],
        },
        {
            name: "ramWrite",
            ID: 6,
            type: constants_1.Type.SREQ,
            request: [
                { name: "address", parameterType: parameterType_1.default.UINT16 },
                { name: "len", parameterType: parameterType_1.default.UINT8 },
                { name: "value", parameterType: parameterType_1.default.BUFFER },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "osalNvItemInit",
            ID: 7,
            type: constants_1.Type.SREQ,
            request: [
                { name: "id", parameterType: parameterType_1.default.UINT16 },
                { name: "len", parameterType: parameterType_1.default.UINT16 },
                { name: "initlen", parameterType: parameterType_1.default.UINT8 },
                { name: "initvalue", parameterType: parameterType_1.default.BUFFER },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "osalNvRead",
            ID: 8,
            type: constants_1.Type.SREQ,
            request: [
                { name: "id", parameterType: parameterType_1.default.UINT16 },
                { name: "offset", parameterType: parameterType_1.default.UINT8 },
            ],
            response: [
                { name: "status", parameterType: parameterType_1.default.UINT8 },
                { name: "len", parameterType: parameterType_1.default.UINT8 },
                { name: "value", parameterType: parameterType_1.default.BUFFER },
            ],
        },
        {
            name: "osalNvWrite",
            ID: 9,
            type: constants_1.Type.SREQ,
            request: [
                { name: "id", parameterType: parameterType_1.default.UINT16 },
                { name: "offset", parameterType: parameterType_1.default.UINT8 },
                { name: "len", parameterType: parameterType_1.default.UINT8 },
                { name: "value", parameterType: parameterType_1.default.BUFFER },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "osalStartTimer",
            ID: 10,
            type: constants_1.Type.SREQ,
            request: [
                { name: "id", parameterType: parameterType_1.default.UINT8 },
                { name: "timeout", parameterType: parameterType_1.default.UINT16 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "osalStopTimer",
            ID: 11,
            type: constants_1.Type.SREQ,
            request: [{ name: "id", parameterType: parameterType_1.default.UINT8 }],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "random",
            ID: 12,
            type: constants_1.Type.SREQ,
            request: [],
            response: [{ name: "value", parameterType: parameterType_1.default.UINT16 }],
        },
        {
            name: "adcRead",
            ID: 13,
            type: constants_1.Type.SREQ,
            request: [
                { name: "channel", parameterType: parameterType_1.default.UINT8 },
                { name: "resolution", parameterType: parameterType_1.default.UINT8 },
            ],
            response: [{ name: "value", parameterType: parameterType_1.default.UINT16 }],
        },
        {
            name: "gpio",
            ID: 14,
            type: constants_1.Type.SREQ,
            request: [
                { name: "operation", parameterType: parameterType_1.default.UINT8 },
                { name: "value", parameterType: parameterType_1.default.UINT8 },
            ],
            response: [{ name: "value", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "stackTune",
            ID: 15,
            type: constants_1.Type.SREQ,
            request: [
                { name: "operation", parameterType: parameterType_1.default.UINT8 },
                { name: "value", parameterType: parameterType_1.default.INT8 },
            ],
            response: [{ name: "value", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "setTime",
            ID: 16,
            type: constants_1.Type.SREQ,
            request: [
                { name: "utc", parameterType: parameterType_1.default.UINT32 },
                { name: "hour", parameterType: parameterType_1.default.UINT8 },
                { name: "minute", parameterType: parameterType_1.default.UINT8 },
                { name: "second", parameterType: parameterType_1.default.UINT8 },
                { name: "month", parameterType: parameterType_1.default.UINT8 },
                { name: "day", parameterType: parameterType_1.default.UINT8 },
                { name: "year", parameterType: parameterType_1.default.UINT16 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "getTime",
            ID: 17,
            type: constants_1.Type.SREQ,
            request: [],
            response: [
                { name: "utc", parameterType: parameterType_1.default.UINT32 },
                { name: "hour", parameterType: parameterType_1.default.UINT8 },
                { name: "minute", parameterType: parameterType_1.default.UINT8 },
                { name: "second", parameterType: parameterType_1.default.UINT8 },
                { name: "month", parameterType: parameterType_1.default.UINT8 },
                { name: "day", parameterType: parameterType_1.default.UINT8 },
                { name: "year", parameterType: parameterType_1.default.UINT16 },
            ],
        },
        {
            name: "osalNvDelete",
            ID: 18,
            type: constants_1.Type.SREQ,
            request: [
                { name: "id", parameterType: parameterType_1.default.UINT16 },
                { name: "len", parameterType: parameterType_1.default.UINT16 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "osalNvLength",
            ID: 19,
            type: constants_1.Type.SREQ,
            request: [{ name: "id", parameterType: parameterType_1.default.UINT16 }],
            response: [{ name: "length", parameterType: parameterType_1.default.UINT16 }],
        },
        {
            name: "setTxPower",
            ID: 20,
            type: constants_1.Type.SREQ,
            request: [{ name: "level", parameterType: parameterType_1.default.UINT8 }],
            response: [{ name: "txpower", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "jammerParameters",
            ID: 21,
            type: constants_1.Type.SREQ,
            request: [
                { name: "jmrcntievents", parameterType: parameterType_1.default.UINT16 },
                { name: "jmrhinoiselvl", parameterType: parameterType_1.default.UINT8 },
                { name: "jmrdetectperiod", parameterType: parameterType_1.default.UINT32 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "snifferParameters",
            ID: 22,
            type: constants_1.Type.SREQ,
            request: [{ name: "param", parameterType: parameterType_1.default.UINT8 }],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "zdiagsInitStats",
            ID: 23,
            type: constants_1.Type.SREQ,
            request: [],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "zdiagsClearStats",
            ID: 24,
            type: constants_1.Type.SREQ,
            request: [{ name: "clearnv", parameterType: parameterType_1.default.UINT8 }],
            response: [{ name: "sysclock", parameterType: parameterType_1.default.UINT32 }],
        },
        {
            name: "zdiagsGetStats",
            ID: 25,
            type: constants_1.Type.SREQ,
            request: [{ name: "attributeid", parameterType: parameterType_1.default.UINT16 }],
            response: [{ name: "attributevalue", parameterType: parameterType_1.default.UINT32 }],
        },
        {
            name: "zdiagsRestoreStatsNv",
            ID: 26,
            type: constants_1.Type.SREQ,
            request: [],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "zdiagsSaveStatsToNv",
            ID: 27,
            type: constants_1.Type.SREQ,
            request: [],
            response: [{ name: "sysclock", parameterType: parameterType_1.default.UINT32 }],
        },
        {
            name: "osalNvReadExt",
            ID: 28,
            type: constants_1.Type.SREQ,
            request: [
                { name: "id", parameterType: parameterType_1.default.UINT16 },
                { name: "offset", parameterType: parameterType_1.default.UINT16 },
            ],
            response: [
                { name: "status", parameterType: parameterType_1.default.UINT8 },
                { name: "len", parameterType: parameterType_1.default.UINT8 },
                { name: "value", parameterType: parameterType_1.default.BUFFER },
            ],
        },
        {
            name: "osalNvWriteExt",
            ID: 29,
            type: constants_1.Type.SREQ,
            request: [
                { name: "id", parameterType: parameterType_1.default.UINT16 },
                { name: "offset", parameterType: parameterType_1.default.UINT16 },
                { name: "len", parameterType: parameterType_1.default.UINT16 },
                { name: "value", parameterType: parameterType_1.default.BUFFER },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "nvCreate",
            ID: 48,
            type: constants_1.Type.SREQ,
            request: [
                { name: "sysid", parameterType: parameterType_1.default.UINT8 },
                { name: "itemid", parameterType: parameterType_1.default.UINT16 },
                { name: "subid", parameterType: parameterType_1.default.UINT16 },
                { name: "len", parameterType: parameterType_1.default.UINT32 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "nvDelete",
            ID: 49,
            type: constants_1.Type.SREQ,
            request: [
                { name: "sysid", parameterType: parameterType_1.default.UINT8 },
                { name: "itemid", parameterType: parameterType_1.default.UINT16 },
                { name: "subid", parameterType: parameterType_1.default.UINT16 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "nvLength",
            ID: 50,
            type: constants_1.Type.SREQ,
            request: [
                { name: "sysid", parameterType: parameterType_1.default.UINT8 },
                { name: "itemid", parameterType: parameterType_1.default.UINT16 },
                { name: "subid", parameterType: parameterType_1.default.UINT16 },
            ],
            response: [{ name: "len", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "nvRead",
            ID: 51,
            type: constants_1.Type.SREQ,
            request: [
                { name: "sysid", parameterType: parameterType_1.default.UINT8 },
                { name: "itemid", parameterType: parameterType_1.default.UINT16 },
                { name: "subid", parameterType: parameterType_1.default.UINT16 },
                { name: "offset", parameterType: parameterType_1.default.UINT16 },
                { name: "len", parameterType: parameterType_1.default.UINT8 },
            ],
            response: [
                { name: "status", parameterType: parameterType_1.default.UINT8 },
                { name: "len", parameterType: parameterType_1.default.UINT8 },
                { name: "value", parameterType: parameterType_1.default.BUFFER },
            ],
        },
        {
            name: "nvWrite",
            ID: 52,
            type: constants_1.Type.SREQ,
            request: [
                { name: "sysid", parameterType: parameterType_1.default.UINT8 },
                { name: "itemid", parameterType: parameterType_1.default.UINT16 },
                { name: "subid", parameterType: parameterType_1.default.UINT16 },
                { name: "offset", parameterType: parameterType_1.default.UINT16 },
                { name: "len", parameterType: parameterType_1.default.UINT8 },
                { name: "value", parameterType: parameterType_1.default.BUFFER },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "nvUpdate",
            ID: 53,
            type: constants_1.Type.SREQ,
            request: [
                { name: "sysid", parameterType: parameterType_1.default.UINT8 },
                { name: "itemid", parameterType: parameterType_1.default.UINT16 },
                { name: "subid", parameterType: parameterType_1.default.UINT16 },
                { name: "len", parameterType: parameterType_1.default.UINT8 },
                { name: "value", parameterType: parameterType_1.default.BUFFER },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "nvCompact",
            ID: 54,
            type: constants_1.Type.SREQ,
            request: [{ name: "threshold", parameterType: parameterType_1.default.UINT16 }],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "resetInd",
            ID: 128,
            type: constants_1.Type.AREQ,
            request: [
                { name: "reason", parameterType: parameterType_1.default.UINT8 },
                { name: "transportrev", parameterType: parameterType_1.default.UINT8 },
                { name: "productid", parameterType: parameterType_1.default.UINT8 },
                { name: "majorrel", parameterType: parameterType_1.default.UINT8 },
                { name: "minorrel", parameterType: parameterType_1.default.UINT8 },
                { name: "hwrev", parameterType: parameterType_1.default.UINT8 },
            ],
        },
        {
            name: "osalTimerExpired",
            ID: 129,
            type: constants_1.Type.AREQ,
            request: [{ name: "id", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "jammerInd",
            ID: 130,
            type: constants_1.Type.AREQ,
            request: [{ name: "jammerind", parameterType: parameterType_1.default.UINT8 }],
        },
    ],
    [constants_1.Subsystem.MAC]: [
        {
            name: "resetReq",
            ID: 1,
            type: constants_1.Type.SREQ,
            request: [{ name: "setdefault", parameterType: parameterType_1.default.UINT8 }],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "init",
            ID: 2,
            type: constants_1.Type.SREQ,
            request: [],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "startReq",
            ID: 3,
            type: constants_1.Type.SREQ,
            request: [
                { name: "starttime", parameterType: parameterType_1.default.UINT32 },
                { name: "panid", parameterType: parameterType_1.default.UINT16 },
                { name: "logicalchannel", parameterType: parameterType_1.default.UINT8 },
                { name: "channelpage", parameterType: parameterType_1.default.UINT8 },
                { name: "beaconorder", parameterType: parameterType_1.default.UINT8 },
                { name: "superframeorder", parameterType: parameterType_1.default.UINT8 },
                { name: "pancoordinator", parameterType: parameterType_1.default.UINT8 },
                { name: "batterylifeext", parameterType: parameterType_1.default.UINT8 },
                { name: "coordrealignment", parameterType: parameterType_1.default.UINT8 },
                { name: "realignkeysource", parameterType: parameterType_1.default.BUFFER },
                { name: "realignsecuritylevel", parameterType: parameterType_1.default.UINT8 },
                { name: "realignkeyidmode", parameterType: parameterType_1.default.UINT8 },
                { name: "realignkeyindex", parameterType: parameterType_1.default.UINT8 },
                { name: "beaconkeysource", parameterType: parameterType_1.default.BUFFER },
                { name: "beaconsecuritylevel", parameterType: parameterType_1.default.UINT8 },
                { name: "beaconkeyidmode", parameterType: parameterType_1.default.UINT8 },
                { name: "beaconkeyindex", parameterType: parameterType_1.default.UINT8 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "syncReq",
            ID: 4,
            type: constants_1.Type.SREQ,
            request: [
                { name: "logicalchannel", parameterType: parameterType_1.default.UINT8 },
                { name: "channelpage", parameterType: parameterType_1.default.UINT8 },
                { name: "trackbeacon", parameterType: parameterType_1.default.UINT8 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "dataReq",
            ID: 5,
            type: constants_1.Type.SREQ,
            request: [
                { name: "destaddressmode", parameterType: parameterType_1.default.UINT8 },
                { name: "destaddress", parameterType: parameterType_1.default.IEEEADDR },
                { name: "destpanid", parameterType: parameterType_1.default.UINT16 },
                { name: "srcaddressmode", parameterType: parameterType_1.default.UINT8 },
                { name: "handle", parameterType: parameterType_1.default.UINT8 },
                { name: "txoption", parameterType: parameterType_1.default.UINT8 },
                { name: "logicalchannel", parameterType: parameterType_1.default.UINT8 },
                { name: "power", parameterType: parameterType_1.default.UINT8 },
                { name: "keysource", parameterType: parameterType_1.default.BUFFER },
                { name: "securitylevel", parameterType: parameterType_1.default.UINT8 },
                { name: "keyidmode", parameterType: parameterType_1.default.UINT8 },
                { name: "keyindex", parameterType: parameterType_1.default.UINT8 },
                { name: "msdulength", parameterType: parameterType_1.default.UINT8 },
                { name: "msdu", parameterType: parameterType_1.default.BUFFER },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "associateReq",
            ID: 6,
            type: constants_1.Type.SREQ,
            request: [
                { name: "logicalchannel", parameterType: parameterType_1.default.UINT8 },
                { name: "channelpage", parameterType: parameterType_1.default.UINT8 },
                { name: "coordaddressmode", parameterType: parameterType_1.default.UINT8 },
                { name: "coordaddress", parameterType: parameterType_1.default.IEEEADDR },
                { name: "coordpanid", parameterType: parameterType_1.default.UINT16 },
                { name: "capabilityinformation", parameterType: parameterType_1.default.UINT8 },
                { name: "keysource", parameterType: parameterType_1.default.BUFFER },
                { name: "securitylevel", parameterType: parameterType_1.default.UINT8 },
                { name: "keyidmode", parameterType: parameterType_1.default.UINT8 },
                { name: "keyindex", parameterType: parameterType_1.default.UINT8 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "disassociateReq",
            ID: 7,
            type: constants_1.Type.SREQ,
            request: [
                { name: "deviceaddressmode", parameterType: parameterType_1.default.UINT8 },
                { name: "deviceaddress", parameterType: parameterType_1.default.IEEEADDR },
                { name: "devicepanid", parameterType: parameterType_1.default.UINT16 },
                { name: "disassociatereason", parameterType: parameterType_1.default.UINT8 },
                { name: "txindirect", parameterType: parameterType_1.default.UINT8 },
                { name: "keysource", parameterType: parameterType_1.default.BUFFER },
                { name: "securitylevel", parameterType: parameterType_1.default.UINT8 },
                { name: "keyidmode", parameterType: parameterType_1.default.UINT8 },
                { name: "keyindex", parameterType: parameterType_1.default.UINT8 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "getReq",
            ID: 8,
            type: constants_1.Type.SREQ,
            request: [{ name: "attribute", parameterType: parameterType_1.default.UINT8 }],
            response: [
                { name: "status", parameterType: parameterType_1.default.UINT8 },
                { name: "data", parameterType: parameterType_1.default.BUFFER16 },
            ],
        },
        {
            name: "setReq",
            ID: 9,
            type: constants_1.Type.SREQ,
            request: [
                { name: "attribute", parameterType: parameterType_1.default.UINT8 },
                { name: "attributevalue", parameterType: parameterType_1.default.BUFFER },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "scanReq",
            ID: 12,
            type: constants_1.Type.SREQ,
            request: [
                { name: "scanchannels", parameterType: parameterType_1.default.UINT32 },
                { name: "scantype", parameterType: parameterType_1.default.UINT8 },
                { name: "scanduration", parameterType: parameterType_1.default.UINT8 },
                { name: "channelpage", parameterType: parameterType_1.default.UINT8 },
                { name: "maxresults", parameterType: parameterType_1.default.UINT8 },
                { name: "keysource", parameterType: parameterType_1.default.BUFFER },
                { name: "securitylevel", parameterType: parameterType_1.default.UINT8 },
                { name: "keyidmode", parameterType: parameterType_1.default.UINT8 },
                { name: "keyindex", parameterType: parameterType_1.default.UINT8 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "pollReq",
            ID: 13,
            type: constants_1.Type.SREQ,
            request: [
                { name: "coordaddressmode", parameterType: parameterType_1.default.UINT8 },
                { name: "coordaddress", parameterType: parameterType_1.default.IEEEADDR },
                { name: "coordpanid", parameterType: parameterType_1.default.UINT16 },
                { name: "keysource", parameterType: parameterType_1.default.BUFFER },
                { name: "securitylevel", parameterType: parameterType_1.default.UINT8 },
                { name: "keyidmode", parameterType: parameterType_1.default.UINT8 },
                { name: "keyindex", parameterType: parameterType_1.default.UINT8 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "purgeReq",
            ID: 14,
            type: constants_1.Type.SREQ,
            request: [{ name: "msduhandle", parameterType: parameterType_1.default.UINT8 }],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "setRxGainReq",
            ID: 15,
            type: constants_1.Type.SREQ,
            request: [{ name: "mode", parameterType: parameterType_1.default.UINT8 }],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "securityGetReq",
            ID: 48,
            type: constants_1.Type.SREQ,
            request: [
                { name: "attribute", parameterType: parameterType_1.default.UINT8 },
                { name: "index1", parameterType: parameterType_1.default.UINT8 },
                { name: "index2", parameterType: parameterType_1.default.UINT8 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "securitySetReq",
            ID: 49,
            type: constants_1.Type.SREQ,
            request: [
                { name: "attribute", parameterType: parameterType_1.default.UINT8 },
                { name: "attributevalue", parameterType: parameterType_1.default.BUFFER },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "associateRsp",
            ID: 80,
            type: constants_1.Type.SREQ,
            request: [
                { name: "extaddr", parameterType: parameterType_1.default.IEEEADDR },
                { name: "assocshortaddress", parameterType: parameterType_1.default.UINT16 },
                { name: "assocstatus", parameterType: parameterType_1.default.UINT8 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "orphanRsp",
            ID: 81,
            type: constants_1.Type.SREQ,
            request: [
                { name: "extaddr", parameterType: parameterType_1.default.IEEEADDR },
                { name: "assocshortaddress", parameterType: parameterType_1.default.UINT16 },
                { name: "associatedmember", parameterType: parameterType_1.default.UINT8 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "syncLossInd",
            ID: 128,
            type: constants_1.Type.AREQ,
            request: [
                { name: "status", parameterType: parameterType_1.default.UINT8 },
                { name: "panid", parameterType: parameterType_1.default.UINT16 },
                { name: "logicalchannel", parameterType: parameterType_1.default.UINT8 },
                { name: "channelpage", parameterType: parameterType_1.default.UINT8 },
                { name: "keysource", parameterType: parameterType_1.default.BUFFER8 },
                { name: "securitylevel", parameterType: parameterType_1.default.UINT8 },
                { name: "keyidmode", parameterType: parameterType_1.default.UINT8 },
                { name: "keyindex", parameterType: parameterType_1.default.UINT8 },
            ],
        },
        {
            name: "associateInd",
            ID: 129,
            type: constants_1.Type.AREQ,
            request: [
                { name: "deviceextendedaddress", parameterType: parameterType_1.default.IEEEADDR },
                { name: "capabilities", parameterType: parameterType_1.default.UINT8 },
                { name: "keysource", parameterType: parameterType_1.default.BUFFER8 },
                { name: "securitylevel", parameterType: parameterType_1.default.UINT8 },
                { name: "keyidmode", parameterType: parameterType_1.default.UINT8 },
                { name: "keyindex", parameterType: parameterType_1.default.UINT8 },
            ],
        },
        {
            name: "associateCnf",
            ID: 130,
            type: constants_1.Type.AREQ,
            request: [
                { name: "status", parameterType: parameterType_1.default.UINT8 },
                { name: "deviceshortaddress", parameterType: parameterType_1.default.UINT16 },
                { name: "keysource", parameterType: parameterType_1.default.BUFFER8 },
                { name: "securitylevel", parameterType: parameterType_1.default.UINT8 },
                { name: "keyidmode", parameterType: parameterType_1.default.UINT8 },
                { name: "keyindex", parameterType: parameterType_1.default.UINT8 },
            ],
        },
        {
            name: "beaconNotifyInd",
            ID: 131,
            type: constants_1.Type.AREQ,
            request: [
                { name: "bsn", parameterType: parameterType_1.default.UINT8 },
                { name: "timestamp", parameterType: parameterType_1.default.UINT32 },
                { name: "coordinatoraddressmode", parameterType: parameterType_1.default.UINT8 },
                { name: "coordinatorextendedaddress", parameterType: parameterType_1.default.IEEEADDR },
                { name: "panid", parameterType: parameterType_1.default.UINT16 },
                { name: "superframespec", parameterType: parameterType_1.default.UINT16 },
                { name: "logicalchannel", parameterType: parameterType_1.default.UINT8 },
                { name: "gtspermit", parameterType: parameterType_1.default.UINT8 },
                { name: "linkquality", parameterType: parameterType_1.default.UINT8 },
                { name: "securityfailure", parameterType: parameterType_1.default.UINT8 },
                { name: "keysource", parameterType: parameterType_1.default.BUFFER8 },
                { name: "securitylevel", parameterType: parameterType_1.default.UINT8 },
                { name: "keyidmode", parameterType: parameterType_1.default.UINT8 },
                { name: "keyindex", parameterType: parameterType_1.default.UINT8 },
                { name: "pendingaddrspec", parameterType: parameterType_1.default.UINT8 },
                { name: "addresslist", parameterType: parameterType_1.default.BUFFER32 },
                { name: "sdulength", parameterType: parameterType_1.default.UINT8 },
                { name: "nsdu", parameterType: parameterType_1.default.BUFFER },
            ],
        },
        {
            name: "dataCnf",
            ID: 132,
            type: constants_1.Type.AREQ,
            request: [
                { name: "status", parameterType: parameterType_1.default.UINT8 },
                { name: "handle", parameterType: parameterType_1.default.UINT8 },
                { name: "timestamp", parameterType: parameterType_1.default.UINT32 },
                { name: "timestamp2", parameterType: parameterType_1.default.UINT16 },
            ],
        },
        {
            name: "dataInd",
            ID: 133,
            type: constants_1.Type.AREQ,
            request: [
                { name: "srcaddrmode", parameterType: parameterType_1.default.UINT8 },
                { name: "srcaddr", parameterType: parameterType_1.default.IEEEADDR },
                { name: "dstaddrmode", parameterType: parameterType_1.default.UINT8 },
                { name: "dstaddr", parameterType: parameterType_1.default.IEEEADDR },
                { name: "timestamp", parameterType: parameterType_1.default.UINT32 },
                { name: "timestamp2", parameterType: parameterType_1.default.UINT16 },
                { name: "srcpanid", parameterType: parameterType_1.default.UINT16 },
                { name: "dstpanid", parameterType: parameterType_1.default.UINT16 },
                { name: "linkquality", parameterType: parameterType_1.default.UINT8 },
                { name: "correlation", parameterType: parameterType_1.default.UINT8 },
                { name: "rssi", parameterType: parameterType_1.default.UINT8 },
                { name: "dsn", parameterType: parameterType_1.default.UINT8 },
                { name: "keysource", parameterType: parameterType_1.default.BUFFER8 },
                { name: "securitylevel", parameterType: parameterType_1.default.UINT8 },
                { name: "keyidmode", parameterType: parameterType_1.default.UINT8 },
                { name: "keyindex", parameterType: parameterType_1.default.UINT8 },
                { name: "length", parameterType: parameterType_1.default.UINT8 },
                { name: "data", parameterType: parameterType_1.default.BUFFER },
            ],
        },
        {
            name: "disassociateInd",
            ID: 134,
            type: constants_1.Type.AREQ,
            request: [
                { name: "extendedaddress", parameterType: parameterType_1.default.IEEEADDR },
                { name: "disassociatereason", parameterType: parameterType_1.default.UINT8 },
                { name: "keysource", parameterType: parameterType_1.default.BUFFER8 },
                { name: "securitylevel", parameterType: parameterType_1.default.UINT8 },
                { name: "keyidmode", parameterType: parameterType_1.default.UINT8 },
                { name: "keyindex", parameterType: parameterType_1.default.UINT8 },
            ],
        },
        {
            name: "disassociateCnf",
            ID: 135,
            type: constants_1.Type.AREQ,
            request: [
                { name: "status", parameterType: parameterType_1.default.UINT8 },
                { name: "deviceaddrmode", parameterType: parameterType_1.default.UINT8 },
                { name: "deviceaddr", parameterType: parameterType_1.default.IEEEADDR },
                { name: "devicepanid", parameterType: parameterType_1.default.UINT16 },
            ],
        },
        {
            name: "orphanInd",
            ID: 138,
            type: constants_1.Type.AREQ,
            request: [
                { name: "extendedaddr", parameterType: parameterType_1.default.IEEEADDR },
                { name: "keysource", parameterType: parameterType_1.default.BUFFER8 },
                { name: "securitylevel", parameterType: parameterType_1.default.UINT8 },
                { name: "keyidmode", parameterType: parameterType_1.default.UINT8 },
                { name: "keyindex", parameterType: parameterType_1.default.UINT8 },
            ],
        },
        {
            name: "pollCnf",
            ID: 139,
            type: constants_1.Type.AREQ,
            request: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "scanCnf",
            ID: 140,
            type: constants_1.Type.AREQ,
            request: [
                { name: "status", parameterType: parameterType_1.default.UINT8 },
                { name: "ed", parameterType: parameterType_1.default.UINT8 },
                { name: "scantype", parameterType: parameterType_1.default.UINT8 },
                { name: "channelpage", parameterType: parameterType_1.default.UINT8 },
                { name: "unscannedchannellist", parameterType: parameterType_1.default.UINT32 },
                { name: "resultlistcount", parameterType: parameterType_1.default.UINT8 },
                { name: "resultlistmaxlength", parameterType: parameterType_1.default.UINT8 },
                { name: "resultlist", parameterType: parameterType_1.default.BUFFER },
            ],
        },
        {
            name: "commStatusInd",
            ID: 141,
            type: constants_1.Type.AREQ,
            request: [
                { name: "status", parameterType: parameterType_1.default.UINT8 },
                { name: "srcaddrmode", parameterType: parameterType_1.default.UINT8 },
                { name: "srcaddr", parameterType: parameterType_1.default.IEEEADDR },
                { name: "dstaddrmode", parameterType: parameterType_1.default.UINT8 },
                { name: "dstaddr", parameterType: parameterType_1.default.IEEEADDR },
                { name: "devicepanid", parameterType: parameterType_1.default.UINT16 },
                { name: "reason", parameterType: parameterType_1.default.UINT8 },
                { name: "keysource", parameterType: parameterType_1.default.BUFFER8 },
                { name: "securitylevel", parameterType: parameterType_1.default.UINT8 },
                { name: "keyidmode", parameterType: parameterType_1.default.UINT8 },
                { name: "keyindex", parameterType: parameterType_1.default.UINT8 },
            ],
        },
        {
            name: "startCnf",
            ID: 142,
            type: constants_1.Type.AREQ,
            request: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "rxEnableCnf",
            ID: 143,
            type: constants_1.Type.AREQ,
            request: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "purgeCnf",
            ID: 144,
            type: constants_1.Type.AREQ,
            request: [
                { name: "status", parameterType: parameterType_1.default.UINT8 },
                { name: "handle", parameterType: parameterType_1.default.UINT8 },
            ],
        },
    ],
    [constants_1.Subsystem.AF]: [
        {
            name: "register",
            ID: 0,
            type: constants_1.Type.SREQ,
            request: [
                { name: "endpoint", parameterType: parameterType_1.default.UINT8 },
                { name: "appprofid", parameterType: parameterType_1.default.UINT16 },
                { name: "appdeviceid", parameterType: parameterType_1.default.UINT16 },
                { name: "appdevver", parameterType: parameterType_1.default.UINT8 },
                { name: "latencyreq", parameterType: parameterType_1.default.UINT8 },
                { name: "appnuminclusters", parameterType: parameterType_1.default.UINT8 },
                { name: "appinclusterlist", parameterType: parameterType_1.default.LIST_UINT16 },
                { name: "appnumoutclusters", parameterType: parameterType_1.default.UINT8 },
                { name: "appoutclusterlist", parameterType: parameterType_1.default.LIST_UINT16 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "dataRequest",
            ID: 1,
            type: constants_1.Type.SREQ,
            request: [
                { name: "dstaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "destendpoint", parameterType: parameterType_1.default.UINT8 },
                { name: "srcendpoint", parameterType: parameterType_1.default.UINT8 },
                { name: "clusterid", parameterType: parameterType_1.default.UINT16 },
                { name: "transid", parameterType: parameterType_1.default.UINT8 },
                { name: "options", parameterType: parameterType_1.default.UINT8 },
                { name: "radius", parameterType: parameterType_1.default.UINT8 },
                { name: "len", parameterType: parameterType_1.default.UINT8 },
                { name: "data", parameterType: parameterType_1.default.BUFFER },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "dataRequestExt",
            ID: 2,
            type: constants_1.Type.SREQ,
            request: [
                { name: "dstaddrmode", parameterType: parameterType_1.default.UINT8 },
                { name: "dstaddr", parameterType: parameterType_1.default.IEEEADDR },
                { name: "destendpoint", parameterType: parameterType_1.default.UINT8 },
                { name: "dstpanid", parameterType: parameterType_1.default.UINT16 },
                { name: "srcendpoint", parameterType: parameterType_1.default.UINT8 },
                { name: "clusterid", parameterType: parameterType_1.default.UINT16 },
                { name: "transid", parameterType: parameterType_1.default.UINT8 },
                { name: "options", parameterType: parameterType_1.default.UINT8 },
                { name: "radius", parameterType: parameterType_1.default.UINT8 },
                { name: "len", parameterType: parameterType_1.default.UINT16 },
                { name: "data", parameterType: parameterType_1.default.BUFFER },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "dataRequestSrcRtg",
            ID: 3,
            type: constants_1.Type.SREQ,
            request: [
                { name: "dstaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "destendpoint", parameterType: parameterType_1.default.UINT8 },
                { name: "srcendpoint", parameterType: parameterType_1.default.UINT8 },
                { name: "clusterid", parameterType: parameterType_1.default.UINT16 },
                { name: "transid", parameterType: parameterType_1.default.UINT8 },
                { name: "options", parameterType: parameterType_1.default.UINT8 },
                { name: "radius", parameterType: parameterType_1.default.UINT8 },
                { name: "relaycount", parameterType: parameterType_1.default.UINT8 },
                { name: "relaylist", parameterType: parameterType_1.default.LIST_UINT16 },
                { name: "len", parameterType: parameterType_1.default.UINT8 },
                { name: "data", parameterType: parameterType_1.default.BUFFER },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "delete",
            ID: 4,
            type: constants_1.Type.SREQ,
            request: [{ name: "endpoint", parameterType: parameterType_1.default.UINT8 }],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "interPanCtl",
            ID: 16,
            type: constants_1.Type.SREQ,
            request: [
                { name: "cmd", parameterType: parameterType_1.default.UINT8 },
                { name: "data", parameterType: parameterType_1.default.BUFFER },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "dataStore",
            ID: 17,
            type: constants_1.Type.SREQ,
            request: [
                { name: "index", parameterType: parameterType_1.default.UINT16 },
                { name: "length", parameterType: parameterType_1.default.UINT8 },
                { name: "data", parameterType: parameterType_1.default.BUFFER },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "dataRetrieve",
            ID: 18,
            type: constants_1.Type.SREQ,
            request: [
                { name: "timestamp", parameterType: parameterType_1.default.UINT32 },
                { name: "index", parameterType: parameterType_1.default.UINT16 },
                { name: "length", parameterType: parameterType_1.default.UINT8 },
            ],
            response: [
                { name: "status", parameterType: parameterType_1.default.UINT8 },
                { name: "length", parameterType: parameterType_1.default.UINT8 },
                { name: "data", parameterType: parameterType_1.default.BUFFER },
            ],
        },
        {
            name: "apsfConfigSet",
            ID: 19,
            type: constants_1.Type.SREQ,
            request: [
                { name: "endpoint", parameterType: parameterType_1.default.UINT8 },
                { name: "framedelay", parameterType: parameterType_1.default.UINT8 },
                { name: "windowsize", parameterType: parameterType_1.default.UINT8 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "apsfConfigGet",
            ID: 20,
            type: constants_1.Type.SREQ,
            request: [{ name: "endpoint", parameterType: parameterType_1.default.UINT8 }],
            response: [
                { name: "framedelay", parameterType: parameterType_1.default.UINT8 },
                { name: "windowsize", parameterType: parameterType_1.default.UINT8 },
                { name: "nomean", parameterType: parameterType_1.default.UINT8 },
            ],
        },
        {
            name: "dataConfirm",
            ID: 128,
            type: constants_1.Type.AREQ,
            request: [
                { name: "status", parameterType: parameterType_1.default.UINT8 },
                { name: "endpoint", parameterType: parameterType_1.default.UINT8 },
                { name: "transid", parameterType: parameterType_1.default.UINT8 },
            ],
        },
        {
            name: "incomingMsg",
            ID: 129,
            type: constants_1.Type.AREQ,
            request: [
                { name: "groupid", parameterType: parameterType_1.default.UINT16 },
                { name: "clusterid", parameterType: parameterType_1.default.UINT16 },
                { name: "srcaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "srcendpoint", parameterType: parameterType_1.default.UINT8 },
                { name: "dstendpoint", parameterType: parameterType_1.default.UINT8 },
                { name: "wasbroadcast", parameterType: parameterType_1.default.UINT8 },
                { name: "linkquality", parameterType: parameterType_1.default.UINT8 },
                { name: "securityuse", parameterType: parameterType_1.default.UINT8 },
                { name: "timestamp", parameterType: parameterType_1.default.UINT32 },
                { name: "transseqnumber", parameterType: parameterType_1.default.UINT8 },
                { name: "len", parameterType: parameterType_1.default.UINT8 },
                { name: "data", parameterType: parameterType_1.default.BUFFER },
            ],
        },
        {
            name: "incomingMsgExt",
            ID: 130,
            type: constants_1.Type.AREQ,
            request: [
                { name: "groupid", parameterType: parameterType_1.default.UINT16 },
                { name: "clusterid", parameterType: parameterType_1.default.UINT16 },
                { name: "srcaddrmode", parameterType: parameterType_1.default.UINT8 },
                { name: "srcaddr", parameterType: parameterType_1.default.IEEEADDR },
                { name: "srcendpoint", parameterType: parameterType_1.default.UINT8 },
                { name: "srcpanid", parameterType: parameterType_1.default.UINT16 },
                { name: "dstendpoint", parameterType: parameterType_1.default.UINT8 },
                { name: "wasbroadcast", parameterType: parameterType_1.default.UINT8 },
                { name: "linkquality", parameterType: parameterType_1.default.UINT8 },
                { name: "securityuse", parameterType: parameterType_1.default.UINT8 },
                { name: "timestamp", parameterType: parameterType_1.default.UINT32 },
                { name: "transseqnumber", parameterType: parameterType_1.default.UINT8 },
                { name: "len", parameterType: parameterType_1.default.UINT16 },
                { name: "data", parameterType: parameterType_1.default.BUFFER },
            ],
        },
        {
            name: "reflectError",
            ID: 131,
            type: constants_1.Type.AREQ,
            request: [
                { name: "status", parameterType: parameterType_1.default.UINT8 },
                { name: "endpoint", parameterType: parameterType_1.default.UINT8 },
                { name: "transid", parameterType: parameterType_1.default.UINT8 },
                { name: "dstaddrmode", parameterType: parameterType_1.default.UINT8 },
                { name: "dstaddr", parameterType: parameterType_1.default.UINT16 },
            ],
        },
    ],
    [constants_1.Subsystem.ZDO]: [
        {
            name: "nwkAddrReq",
            ID: 0,
            type: constants_1.Type.SREQ,
            zdoClusterId: zdo_1.ClusterId.NETWORK_ADDRESS_REQUEST,
            // request: [
            //     {name: 'ieeeaddr', parameterType: ParameterType.IEEEADDR},
            //     {name: 'reqtype', parameterType: ParameterType.UINT8},
            //     {name: 'startindex', parameterType: ParameterType.UINT8},
            // ],
            // response: [{name: 'status', parameterType: ParameterType.UINT8}],
        },
        {
            name: "ieeeAddrReq",
            ID: 1,
            type: constants_1.Type.SREQ,
            zdoClusterId: zdo_1.ClusterId.IEEE_ADDRESS_REQUEST,
            // request: [
            //     {name: 'shortaddr', parameterType: ParameterType.UINT16},
            //     {name: 'reqtype', parameterType: ParameterType.UINT8},
            //     {name: 'startindex', parameterType: ParameterType.UINT8},
            // ],
            // response: [{name: 'status', parameterType: ParameterType.UINT8}],
        },
        {
            name: "nodeDescReq",
            ID: 2,
            type: constants_1.Type.SREQ,
            zdoClusterId: zdo_1.ClusterId.NODE_DESCRIPTOR_REQUEST,
            // request: [
            //     {name: 'dstaddr', parameterType: ParameterType.UINT16},
            //     {name: 'nwkaddrofinterest', parameterType: ParameterType.UINT16},
            // ],
            // response: [{name: 'status', parameterType: ParameterType.UINT8}],
        },
        {
            name: "powerDescReq",
            ID: 3,
            type: constants_1.Type.SREQ,
            zdoClusterId: zdo_1.ClusterId.POWER_DESCRIPTOR_REQUEST,
            // request: [
            //     {name: 'dstaddr', parameterType: ParameterType.UINT16},
            //     {name: 'nwkaddrofinterest', parameterType: ParameterType.UINT16},
            // ],
            // response: [{name: 'status', parameterType: ParameterType.UINT8}],
        },
        {
            name: "simpleDescReq",
            ID: 4,
            type: constants_1.Type.SREQ,
            zdoClusterId: zdo_1.ClusterId.SIMPLE_DESCRIPTOR_REQUEST,
            // request: [
            //     {name: 'dstaddr', parameterType: ParameterType.UINT16},
            //     {name: 'nwkaddrofinterest', parameterType: ParameterType.UINT16},
            //     {name: 'endpoint', parameterType: ParameterType.UINT8},
            // ],
            // response: [{name: 'status', parameterType: ParameterType.UINT8}],
        },
        {
            name: "activeEpReq",
            ID: 5,
            type: constants_1.Type.SREQ,
            zdoClusterId: zdo_1.ClusterId.ACTIVE_ENDPOINTS_REQUEST,
            // request: [
            //     {name: 'dstaddr', parameterType: ParameterType.UINT16},
            //     {name: 'nwkaddrofinterest', parameterType: ParameterType.UINT16},
            // ],
            // response: [{name: 'status', parameterType: ParameterType.UINT8}],
        },
        {
            name: "matchDescReq",
            ID: 6,
            type: constants_1.Type.SREQ,
            zdoClusterId: zdo_1.ClusterId.MATCH_DESCRIPTORS_REQUEST,
            // request: [
            //     {name: 'dstaddr', parameterType: ParameterType.UINT16},
            //     {name: 'nwkaddrofinterest', parameterType: ParameterType.UINT16},
            //     {name: 'profileid', parameterType: ParameterType.UINT16},
            //     {name: 'numinclusters', parameterType: ParameterType.UINT8},
            //     {name: 'inclusterlist', parameterType: ParameterType.LIST_UINT16},
            //     {name: 'numoutclusters', parameterType: ParameterType.UINT8},
            //     {name: 'outclusterlist', parameterType: ParameterType.LIST_UINT16},
            // ],
            // response: [{name: 'status', parameterType: ParameterType.UINT8}],
        },
        {
            name: "complexDescReq",
            ID: 7,
            type: constants_1.Type.SREQ,
            request: [
                { name: "dstaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "nwkaddrofinterest", parameterType: parameterType_1.default.UINT16 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "userDescReq",
            ID: 8,
            type: constants_1.Type.SREQ,
            request: [
                { name: "dstaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "nwkaddrofinterest", parameterType: parameterType_1.default.UINT16 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "endDeviceAnnce",
            ID: 10,
            type: constants_1.Type.SREQ,
            request: [
                { name: "nwkaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "ieeeaddr", parameterType: parameterType_1.default.IEEEADDR },
                { name: "capability", parameterType: parameterType_1.default.UINT8 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "userDescSet",
            ID: 11,
            type: constants_1.Type.SREQ,
            request: [
                { name: "dstaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "nwkaddrofinterest", parameterType: parameterType_1.default.UINT16 },
                { name: "descriptor_len", parameterType: parameterType_1.default.UINT8 },
                { name: "userdescriptor", parameterType: parameterType_1.default.BUFFER },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "serverDiscReq",
            ID: 12,
            type: constants_1.Type.SREQ,
            zdoClusterId: zdo_1.ClusterId.SYSTEM_SERVER_DISCOVERY_REQUEST,
            // request: [{name: 'servermask', parameterType: ParameterType.UINT16}],
            // response: [{name: 'status', parameterType: ParameterType.UINT8}],
        },
        {
            name: "endDeviceBindReq",
            ID: 32,
            type: constants_1.Type.SREQ,
            request: [
                { name: "dstaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "localcoord", parameterType: parameterType_1.default.UINT16 },
                { name: "localieee", parameterType: parameterType_1.default.IEEEADDR },
                { name: "endpoint", parameterType: parameterType_1.default.UINT8 },
                { name: "profileid", parameterType: parameterType_1.default.UINT16 },
                { name: "numinclusters", parameterType: parameterType_1.default.UINT8 },
                { name: "inclusterlist", parameterType: parameterType_1.default.LIST_UINT16 },
                { name: "numoutclusters", parameterType: parameterType_1.default.UINT8 },
                { name: "outclusterlist", parameterType: parameterType_1.default.LIST_UINT16 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "bindReq",
            ID: 33,
            type: constants_1.Type.SREQ,
            zdoClusterId: zdo_1.ClusterId.BIND_REQUEST,
            // request: [
            //     {name: 'dstaddr', parameterType: ParameterType.UINT16},
            //     {name: 'srcaddr', parameterType: ParameterType.IEEEADDR},
            //     {name: 'srcendpoint', parameterType: ParameterType.UINT8},
            //     {name: 'clusterid', parameterType: ParameterType.UINT16},
            //     {name: 'dstaddrmode', parameterType: ParameterType.UINT8},
            //     {name: 'dstaddress', parameterType: ParameterType.IEEEADDR},
            //     {name: 'dstendpoint', parameterType: ParameterType.UINT8},
            // ],
            // response: [{name: 'status', parameterType: ParameterType.UINT8}],
        },
        {
            name: "unbindReq",
            ID: 34,
            type: constants_1.Type.SREQ,
            zdoClusterId: zdo_1.ClusterId.UNBIND_REQUEST,
            // request: [
            //     {name: 'dstaddr', parameterType: ParameterType.UINT16},
            //     {name: 'srcaddr', parameterType: ParameterType.IEEEADDR},
            //     {name: 'srcendpoint', parameterType: ParameterType.UINT8},
            //     {name: 'clusterid', parameterType: ParameterType.UINT16},
            //     {name: 'dstaddrmode', parameterType: ParameterType.UINT8},
            //     {name: 'dstaddress', parameterType: ParameterType.IEEEADDR},
            //     {name: 'dstendpoint', parameterType: ParameterType.UINT8},
            // ],
            // response: [{name: 'status', parameterType: ParameterType.UINT8}],
        },
        {
            name: "setLinkKey",
            ID: 35,
            type: constants_1.Type.SREQ,
            request: [
                { name: "shortaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "ieeeaddr", parameterType: parameterType_1.default.IEEEADDR },
                { name: "linkkey", parameterType: parameterType_1.default.BUFFER },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "removeLinkKey",
            ID: 36,
            type: constants_1.Type.SREQ,
            request: [{ name: "ieeeaddr", parameterType: parameterType_1.default.IEEEADDR }],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "getLinkKey",
            ID: 37,
            type: constants_1.Type.SREQ,
            request: [{ name: "ieeeaddr", parameterType: parameterType_1.default.IEEEADDR }],
            response: [
                { name: "status", parameterType: parameterType_1.default.UINT8 },
                { name: "ieeeaddr", parameterType: parameterType_1.default.IEEEADDR },
                { name: "linkkeydata", parameterType: parameterType_1.default.BUFFER16 },
            ],
        },
        {
            name: "nwkDiscoveryReq",
            ID: 38,
            type: constants_1.Type.SREQ,
            request: [
                { name: "scanchannels", parameterType: parameterType_1.default.UINT32 },
                { name: "scanduration", parameterType: parameterType_1.default.UINT8 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "joinReq",
            ID: 39,
            type: constants_1.Type.SREQ,
            request: [
                { name: "logicalchannel", parameterType: parameterType_1.default.UINT8 },
                { name: "panid", parameterType: parameterType_1.default.UINT16 },
                { name: "extendedpanid", parameterType: parameterType_1.default.IEEEADDR },
                { name: "chosenparent", parameterType: parameterType_1.default.UINT16 },
                { name: "parentdepth", parameterType: parameterType_1.default.UINT8 },
                { name: "stackprofile", parameterType: parameterType_1.default.UINT8 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "mgmtNwkDiscReq",
            ID: 48,
            type: constants_1.Type.SREQ,
            request: [
                { name: "dstaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "scanchannels", parameterType: parameterType_1.default.UINT32 },
                { name: "scanduration", parameterType: parameterType_1.default.UINT8 },
                { name: "startindex", parameterType: parameterType_1.default.UINT8 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "mgmtLqiReq",
            ID: 49,
            type: constants_1.Type.SREQ,
            zdoClusterId: zdo_1.ClusterId.LQI_TABLE_REQUEST,
            // request: [
            //     {name: 'dstaddr', parameterType: ParameterType.UINT16},
            //     {name: 'startindex', parameterType: ParameterType.UINT8},
            // ],
            // response: [{name: 'status', parameterType: ParameterType.UINT8}],
        },
        {
            name: "mgmtRtgReq",
            ID: 50,
            type: constants_1.Type.SREQ,
            zdoClusterId: zdo_1.ClusterId.ROUTING_TABLE_REQUEST,
            // request: [
            //     {name: 'dstaddr', parameterType: ParameterType.UINT16},
            //     {name: 'startindex', parameterType: ParameterType.UINT8},
            // ],
            // response: [{name: 'status', parameterType: ParameterType.UINT8}],
        },
        {
            name: "mgmtBindReq",
            ID: 51,
            type: constants_1.Type.SREQ,
            zdoClusterId: zdo_1.ClusterId.BINDING_TABLE_REQUEST,
            // request: [
            //     {name: 'dstaddr', parameterType: ParameterType.UINT16},
            //     {name: 'startindex', parameterType: ParameterType.UINT8},
            // ],
            // response: [{name: 'status', parameterType: ParameterType.UINT8}],
        },
        {
            name: "mgmtLeaveReq",
            ID: 52,
            type: constants_1.Type.SREQ,
            zdoClusterId: zdo_1.ClusterId.LEAVE_REQUEST,
            // request: [
            //     {name: 'dstaddr', parameterType: ParameterType.UINT16},
            //     {name: 'deviceaddress', parameterType: ParameterType.IEEEADDR},
            //     {name: 'removechildrenRejoin', parameterType: ParameterType.UINT8},
            // ],
            // response: [{name: 'status', parameterType: ParameterType.UINT8}],
        },
        {
            name: "mgmtDirectJoinReq",
            ID: 53,
            type: constants_1.Type.SREQ,
            request: [
                { name: "dstaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "deviceaddr", parameterType: parameterType_1.default.IEEEADDR },
                { name: "capinfo", parameterType: parameterType_1.default.UINT8 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "mgmtPermitJoinReq",
            ID: 54,
            type: constants_1.Type.SREQ,
            zdoClusterId: zdo_1.ClusterId.PERMIT_JOINING_REQUEST,
            // request: [
            //     {name: 'addrmode', parameterType: ParameterType.UINT8},
            //     {name: 'dstaddr', parameterType: ParameterType.UINT16},
            //     {name: 'duration', parameterType: ParameterType.UINT8},
            //     {name: 'tcsignificance', parameterType: ParameterType.UINT8},
            // ],
            // response: [{name: 'status', parameterType: ParameterType.UINT8}],
        },
        {
            name: "mgmtNwkUpdateReq",
            ID: 55, // the spec says 0x38, but TI used 0x37 see https://github.com/Koenkk/zigbee-herdsman/issues/1237
            type: constants_1.Type.SREQ,
            zdoClusterId: zdo_1.ClusterId.NWK_UPDATE_REQUEST,
            // request: [
            //     {name: 'dstaddr', parameterType: ParameterType.UINT16},
            //     {name: 'dstaddrmode', parameterType: ParameterType.UINT8},
            //     {name: 'channelmask', parameterType: ParameterType.UINT32},
            //     {name: 'scanduration', parameterType: ParameterType.UINT8},
            //     // TODO: below two have various combinations of present/not present depending on scanduration
            //     {name: 'scancount', parameterType: ParameterType.UINT8},
            //     {name: 'nwkmanageraddr', parameterType: ParameterType.UINT16},
            // ],
            // response: [{name: 'status', parameterType: ParameterType.UINT8}],
        },
        {
            name: "msgCbRegister",
            ID: 62,
            type: constants_1.Type.SREQ,
            request: [{ name: "clusterid", parameterType: parameterType_1.default.UINT16 }],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "msgCbRemove",
            ID: 63,
            type: constants_1.Type.SREQ,
            request: [{ name: "clusterid", parameterType: parameterType_1.default.UINT16 }],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "startupFromApp",
            ID: 64,
            type: constants_1.Type.SREQ,
            request: [{ name: "startdelay", parameterType: parameterType_1.default.UINT16 }],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "autoFindDestination",
            ID: 65,
            type: constants_1.Type.AREQ,
            request: [{ name: "endpoint", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "nwkAddrRsp",
            ID: 128,
            type: constants_1.Type.AREQ,
            zdoClusterId: zdo_1.ClusterId.NETWORK_ADDRESS_RESPONSE,
            // request: [
            // {name: 'status', parameterType: ParameterType.UINT8},
            // Parse the ieeeaddr as it is needed for ZNP waitFor (see zStackAdapter.requestNetworkAddress())
            // {name: 'ieeeaddr', parameterType: ParameterType.IEEEADDR},
            // {name: 'nwkaddr', parameterType: ParameterType.UINT16},
            // {name: 'startindex', parameterType: ParameterType.UINT8},
            // {name: 'numassocdev', parameterType: ParameterType.UINT8},
            // {name: 'assocdevlist', parameterType: ParameterType.LIST_ASSOC_DEV},
            // ],
        },
        {
            name: "ieeeAddrRsp",
            ID: 129,
            type: constants_1.Type.AREQ,
            zdoClusterId: zdo_1.ClusterId.IEEE_ADDRESS_RESPONSE,
            // request: [
            // {name: 'status', parameterType: ParameterType.UINT8},
            // {name: 'ieeeaddr', parameterType: ParameterType.IEEEADDR},
            // {name: 'nwkaddr', parameterType: ParameterType.UINT16},
            // {name: 'startindex', parameterType: ParameterType.UINT8},
            // {name: 'numassocdev', parameterType: ParameterType.UINT8},
            // {name: 'assocdevlist', parameterType: ParameterType.LIST_ASSOC_DEV},
            // ],
        },
        {
            name: "nodeDescRsp",
            ID: 130,
            type: constants_1.Type.AREQ,
            zdoClusterId: zdo_1.ClusterId.NODE_DESCRIPTOR_RESPONSE,
            // request: [
            // {name: 'srcaddr', parameterType: ParameterType.UINT16},
            // {name: 'status', parameterType: ParameterType.UINT8},
            // {name: 'nwkaddr', parameterType: ParameterType.UINT16},
            // {name: 'logicaltype_cmplxdescavai_userdescavai', parameterType: ParameterType.UINT8},
            // {name: 'apsflags_freqband', parameterType: ParameterType.UINT8},
            // {name: 'maccapflags', parameterType: ParameterType.UINT8},
            // {name: 'manufacturercode', parameterType: ParameterType.UINT16},
            // {name: 'maxbuffersize', parameterType: ParameterType.UINT8},
            // {name: 'maxintransfersize', parameterType: ParameterType.UINT16},
            // {name: 'servermask', parameterType: ParameterType.UINT16},
            // {name: 'maxouttransfersize', parameterType: ParameterType.UINT16},
            // {name: 'descriptorcap', parameterType: ParameterType.UINT8},
            // ],
        },
        {
            name: "powerDescRsp",
            ID: 131,
            type: constants_1.Type.AREQ,
            zdoClusterId: zdo_1.ClusterId.POWER_DESCRIPTOR_RESPONSE,
            // request: [
            // {name: 'srcaddr', parameterType: ParameterType.UINT16},
            // {name: 'status', parameterType: ParameterType.UINT8},
            // {name: 'nwkaddr', parameterType: ParameterType.UINT16},
            // {name: 'currentpowermode_avaipowersrc', parameterType: ParameterType.UINT8},
            // {name: 'currentpowersrc_currentpowersrclevel', parameterType: ParameterType.UINT8},
            // ],
        },
        {
            name: "simpleDescRsp",
            ID: 132,
            type: constants_1.Type.AREQ,
            zdoClusterId: zdo_1.ClusterId.SIMPLE_DESCRIPTOR_RESPONSE,
            // request: [
            // {name: 'srcaddr', parameterType: ParameterType.UINT16},
            // {name: 'status', parameterType: ParameterType.UINT8},
            // {name: 'nwkaddr', parameterType: ParameterType.UINT16},
            // {name: 'len', parameterType: ParameterType.UINT8},
            // {name: 'endpoint', parameterType: ParameterType.UINT8},
            // {name: 'profileid', parameterType: ParameterType.UINT16},
            // {name: 'deviceid', parameterType: ParameterType.UINT16},
            // {name: 'deviceversion', parameterType: ParameterType.UINT8},
            // {name: 'numinclusters', parameterType: ParameterType.UINT8},
            // {name: 'inclusterlist', parameterType: ParameterType.LIST_UINT16},
            // {name: 'numoutclusters', parameterType: ParameterType.UINT8},
            // {name: 'outclusterlist', parameterType: ParameterType.LIST_UINT16},
            // ],
        },
        {
            name: "activeEpRsp",
            ID: 133,
            type: constants_1.Type.AREQ,
            zdoClusterId: zdo_1.ClusterId.ACTIVE_ENDPOINTS_RESPONSE,
            // request: [
            // {name: 'srcaddr', parameterType: ParameterType.UINT16},
            // {name: 'status', parameterType: ParameterType.UINT8},
            // {name: 'nwkaddr', parameterType: ParameterType.UINT16},
            // {name: 'activeepcount', parameterType: ParameterType.UINT8},
            // {name: 'activeeplist', parameterType: ParameterType.LIST_UINT8},
            // ],
        },
        {
            name: "matchDescRsp",
            ID: 134,
            type: constants_1.Type.AREQ,
            zdoClusterId: zdo_1.ClusterId.MATCH_DESCRIPTORS_RESPONSE,
            // request: [
            // {name: 'srcaddr', parameterType: ParameterType.UINT16},
            // {name: 'status', parameterType: ParameterType.UINT8},
            // {name: 'nwkaddr', parameterType: ParameterType.UINT16},
            // {name: 'matchlength', parameterType: ParameterType.UINT8},
            // {name: 'matchlist', parameterType: ParameterType.BUFFER},
            // ],
        },
        {
            name: "complexDescRsp",
            ID: 135,
            type: constants_1.Type.AREQ,
            request: [
                { name: "srcaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "status", parameterType: parameterType_1.default.UINT8 },
                { name: "nwkaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "complexlength", parameterType: parameterType_1.default.UINT8 },
                { name: "complexdesclist", parameterType: parameterType_1.default.BUFFER },
            ],
        },
        {
            name: "userDescRsp",
            ID: 136,
            type: constants_1.Type.AREQ,
            request: [
                { name: "srcaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "status", parameterType: parameterType_1.default.UINT8 },
                { name: "nwkaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "userlength", parameterType: parameterType_1.default.UINT8 },
                { name: "userdescriptor", parameterType: parameterType_1.default.BUFFER },
            ],
        },
        {
            name: "userDescConf",
            ID: 137,
            type: constants_1.Type.AREQ,
            request: [
                { name: "srcaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "status", parameterType: parameterType_1.default.UINT8 },
                { name: "nwkaddr", parameterType: parameterType_1.default.UINT16 },
            ],
        },
        {
            name: "serverDiscRsp",
            ID: 138,
            type: constants_1.Type.AREQ,
            zdoClusterId: zdo_1.ClusterId.SYSTEM_SERVER_DISCOVERY_RESPONSE,
            // request: [
            // {name: 'srcaddr', parameterType: ParameterType.UINT16},
            // {name: 'status', parameterType: ParameterType.UINT8},
            // {name: 'servermask', parameterType: ParameterType.UINT16},
            // ],
        },
        {
            // https://github.com/Koenkk/zigbee2mqtt/issues/3363
            name: "unknown",
            ID: 159,
            type: constants_1.Type.AREQ,
            request: [],
        },
        {
            name: "endDeviceBindRsp",
            ID: 160,
            type: constants_1.Type.AREQ,
            request: [
                { name: "srcaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "status", parameterType: parameterType_1.default.UINT8 },
            ],
        },
        {
            name: "bindRsp",
            ID: 161,
            type: constants_1.Type.AREQ,
            zdoClusterId: zdo_1.ClusterId.BIND_RESPONSE,
            // request: [
            // {name: 'srcaddr', parameterType: ParameterType.UINT16},
            // {name: 'status', parameterType: ParameterType.UINT8},
            // ],
        },
        {
            name: "unbindRsp",
            ID: 162,
            type: constants_1.Type.AREQ,
            zdoClusterId: zdo_1.ClusterId.UNBIND_RESPONSE,
            // request: [
            // {name: 'srcaddr', parameterType: ParameterType.UINT16},
            // {name: 'status', parameterType: ParameterType.UINT8},
            // ],
        },
        {
            name: "mgmtNwkDiscRsp",
            ID: 176,
            type: constants_1.Type.AREQ,
            request: [
                { name: "srcaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "status", parameterType: parameterType_1.default.UINT8 },
                { name: "networkcount", parameterType: parameterType_1.default.UINT8 },
                { name: "startindex", parameterType: parameterType_1.default.UINT8 },
                { name: "networklistcount", parameterType: parameterType_1.default.UINT8 },
                { name: "networklist", parameterType: parameterType_1.default.LIST_NETWORK },
            ],
        },
        {
            name: "mgmtLqiRsp",
            ID: 177,
            type: constants_1.Type.AREQ,
            zdoClusterId: zdo_1.ClusterId.LQI_TABLE_RESPONSE,
            // request: [
            // {name: 'srcaddr', parameterType: ParameterType.UINT16},
            // {name: 'status', parameterType: ParameterType.UINT8},
            // {name: 'neighbortableentries', parameterType: ParameterType.UINT8},
            // {name: 'startindex', parameterType: ParameterType.UINT8},
            // {name: 'neighborlqilistcount', parameterType: ParameterType.UINT8},
            // {name: 'neighborlqilist', parameterType: ParameterType.LIST_NEIGHBOR_LQI},
            // ],
        },
        {
            name: "mgmtRtgRsp",
            ID: 178,
            type: constants_1.Type.AREQ,
            zdoClusterId: zdo_1.ClusterId.ROUTING_TABLE_RESPONSE,
            // request: [
            // {name: 'srcaddr', parameterType: ParameterType.UINT16},
            // {name: 'status', parameterType: ParameterType.UINT8},
            // {name: 'routingtableentries', parameterType: ParameterType.UINT8},
            // {name: 'startindex', parameterType: ParameterType.UINT8},
            // {name: 'routingtablelistcount', parameterType: ParameterType.UINT8},
            // {name: 'routingtablelist', parameterType: ParameterType.LIST_ROUTING_TABLE},
            // ],
        },
        {
            name: "mgmtBindRsp",
            ID: 179,
            type: constants_1.Type.AREQ,
            zdoClusterId: zdo_1.ClusterId.BINDING_TABLE_RESPONSE,
            // request: [
            // {name: 'srcaddr', parameterType: ParameterType.UINT16},
            // {name: 'status', parameterType: ParameterType.UINT8},
            // {name: 'bindingtableentries', parameterType: ParameterType.UINT8},
            // {name: 'startindex', parameterType: ParameterType.UINT8},
            // {name: 'bindingtablelistcount', parameterType: ParameterType.UINT8},
            // {name: 'bindingtablelist', parameterType: ParameterType.LIST_BIND_TABLE},
            // ],
        },
        {
            name: "mgmtLeaveRsp",
            ID: 180,
            type: constants_1.Type.AREQ,
            zdoClusterId: zdo_1.ClusterId.LEAVE_RESPONSE,
            // request: [
            // {name: 'srcaddr', parameterType: ParameterType.UINT16},
            // {name: 'status', parameterType: ParameterType.UINT8},
            // ],
        },
        {
            name: "mgmtDirectJoinRsp",
            ID: 181,
            type: constants_1.Type.AREQ,
            request: [
                { name: "srcaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "status", parameterType: parameterType_1.default.UINT8 },
            ],
        },
        {
            name: "mgmtPermitJoinRsp",
            ID: 182,
            type: constants_1.Type.AREQ,
            zdoClusterId: zdo_1.ClusterId.PERMIT_JOINING_RESPONSE,
            // request: [
            // {name: 'srcaddr', parameterType: ParameterType.UINT16},
            // {name: 'status', parameterType: ParameterType.UINT8},
            // ],
        },
        {
            name: "mgmtNwkUpdateNotify",
            ID: 184,
            type: constants_1.Type.AREQ,
            zdoClusterId: zdo_1.ClusterId.NWK_UPDATE_RESPONSE,
            // request: [
            // {name: 'srcaddr', parameterType: ParameterType.UINT16},
            // {name: 'status', parameterType: ParameterType.UINT8},
            // {name: 'scannedchannels', parameterType: ParameterType.UINT32},
            // {name: 'totaltrans', parameterType: ParameterType.UINT16},
            // {name: 'transfails', parameterType: ParameterType.UINT16},
            // {name: 'energylength', parameterType: ParameterType.UINT8},
            // {name: 'energyvalues', parameterType: ParameterType.LIST_UINT8},
            // ],
        },
        {
            name: "stateChangeInd",
            ID: 192,
            type: constants_1.Type.AREQ,
            request: [{ name: "state", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "endDeviceAnnceInd",
            ID: 193,
            type: constants_1.Type.AREQ,
            zdoClusterId: zdo_1.ClusterId.END_DEVICE_ANNOUNCE,
            // request: [
            // {name: 'srcaddr', parameterType: ParameterType.UINT16},
            // {name: 'nwkaddr', parameterType: ParameterType.UINT16},
            // {name: 'ieeeaddr', parameterType: ParameterType.IEEEADDR},
            // {name: 'capabilities', parameterType: ParameterType.UINT8},
            // ],
        },
        {
            name: "matchDescRspSent",
            ID: 194,
            type: constants_1.Type.AREQ,
            request: [
                { name: "nwkaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "numinclusters", parameterType: parameterType_1.default.UINT8 },
                { name: "inclusterlist", parameterType: parameterType_1.default.LIST_UINT16 },
                { name: "numoutclusters", parameterType: parameterType_1.default.UINT8 },
                { name: "outclusterlist", parameterType: parameterType_1.default.LIST_UINT16 },
            ],
        },
        {
            name: "statusErrorRsp",
            ID: 195,
            type: constants_1.Type.AREQ,
            request: [
                { name: "srcaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "status", parameterType: parameterType_1.default.UINT8 },
            ],
        },
        {
            name: "srcRtgInd",
            ID: 196,
            type: constants_1.Type.AREQ,
            request: [
                { name: "dstaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "relaycount", parameterType: parameterType_1.default.UINT8 },
                { name: "relaylist", parameterType: parameterType_1.default.LIST_UINT16 },
            ],
        },
        {
            name: "beacon_notify_ind",
            ID: 197,
            type: constants_1.Type.AREQ,
            request: [
                { name: "beaconcount", parameterType: parameterType_1.default.UINT8 },
                { name: "beaconlist", parameterType: parameterType_1.default.BUFFER }, // FIXME
            ],
        },
        {
            name: "joinCnf",
            ID: 198,
            type: constants_1.Type.AREQ,
            request: [
                { name: "status", parameterType: parameterType_1.default.UINT8 },
                { name: "deviceaddress", parameterType: parameterType_1.default.UINT16 },
                { name: "parentaddress", parameterType: parameterType_1.default.UINT16 },
            ],
        },
        {
            name: "nwkDiscoveryCnf",
            ID: 199,
            type: constants_1.Type.AREQ,
            request: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "concentratorIndCb",
            ID: 200,
            type: constants_1.Type.AREQ,
            request: [
                { name: "srcaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "extaddr", parameterType: parameterType_1.default.IEEEADDR },
                { name: "pktCost", parameterType: parameterType_1.default.UINT8 },
            ],
        },
        {
            name: "leaveInd",
            ID: 201,
            type: constants_1.Type.AREQ,
            request: [
                { name: "srcaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "extaddr", parameterType: parameterType_1.default.IEEEADDR },
                { name: "request", parameterType: parameterType_1.default.UINT8 },
                { name: "removechildren", parameterType: parameterType_1.default.UINT8 },
                { name: "rejoin", parameterType: parameterType_1.default.UINT8 },
            ],
        },
        {
            name: "setRejoinParametersReq",
            ID: 204,
            type: constants_1.Type.SREQ,
            request: [
                { name: "backoffduration", parameterType: parameterType_1.default.UINT32 },
                { name: "scanduration", parameterType: parameterType_1.default.UINT32 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "msgCbIncoming",
            ID: 255,
            type: constants_1.Type.AREQ,
            request: [
                { name: "srcaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "wasbroadcast", parameterType: parameterType_1.default.UINT8 },
                { name: "clusterid", parameterType: parameterType_1.default.UINT16 },
                { name: "securityuse", parameterType: parameterType_1.default.UINT8 },
                { name: "seqnum", parameterType: parameterType_1.default.UINT8 },
                { name: "macdstaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "msgdata", parameterType: parameterType_1.default.BUFFER }, // FIXME
            ],
        },
        {
            name: "endDeviceTimeoutReq",
            ID: 13,
            type: constants_1.Type.SREQ,
            request: [
                { name: "parentaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "reqrimeout", parameterType: parameterType_1.default.UINT16 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "sendData",
            ID: 40,
            type: constants_1.Type.SREQ,
            request: [
                { name: "shortaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "transseq", parameterType: parameterType_1.default.UINT8 },
                { name: "cmd", parameterType: parameterType_1.default.UINT16 },
                { name: "len", parameterType: parameterType_1.default.UINT8 },
                { name: "buf", parameterType: parameterType_1.default.BUFFER },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "nwkAddrOfInterestReq",
            ID: 41,
            type: constants_1.Type.SREQ,
            request: [
                { name: "shortaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "nwkaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "cmd", parameterType: parameterType_1.default.UINT8 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "secAddLinkKey",
            ID: 66,
            type: constants_1.Type.SREQ,
            request: [
                { name: "shortaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "extaddr", parameterType: parameterType_1.default.IEEEADDR },
                { name: "linkkey", parameterType: parameterType_1.default.BUFFER },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "secEntryLookupExt",
            ID: 67,
            type: constants_1.Type.SREQ,
            request: [{ name: "extaddr", parameterType: parameterType_1.default.IEEEADDR }],
            response: [
                { name: "status", parameterType: parameterType_1.default.UINT8 },
                { name: "ami", parameterType: parameterType_1.default.UINT16 },
                { name: "keynvid", parameterType: parameterType_1.default.UINT16 },
                { name: "authenticateoption", parameterType: parameterType_1.default.UINT8 },
            ],
        },
        {
            name: "secDeviceRemove",
            ID: 68,
            type: constants_1.Type.SREQ,
            request: [{ name: "extaddr", parameterType: parameterType_1.default.IEEEADDR }],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "extRouteDisc",
            ID: 69,
            type: constants_1.Type.SREQ,
            request: [
                { name: "dstAddr", parameterType: parameterType_1.default.UINT16 },
                { name: "options", parameterType: parameterType_1.default.UINT8 },
                { name: "radius", parameterType: parameterType_1.default.UINT8 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "extRouteCheck",
            ID: 70,
            type: constants_1.Type.SREQ,
            request: [
                { name: "dstaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "rtstatus", parameterType: parameterType_1.default.UINT8 },
                { name: "options", parameterType: parameterType_1.default.UINT8 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "extRemoveGroup",
            ID: 71,
            type: constants_1.Type.SREQ,
            request: [
                { name: "endpoint", parameterType: parameterType_1.default.UINT8 },
                { name: "groupid", parameterType: parameterType_1.default.UINT16 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "extRemoveAllGroup",
            ID: 72,
            type: constants_1.Type.SREQ,
            request: [{ name: "endpoint", parameterType: parameterType_1.default.UINT8 }],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "extFindAllGroupsEndpoint",
            ID: 73,
            type: constants_1.Type.SREQ,
            request: [{ name: "endpoint", parameterType: parameterType_1.default.UINT8 }],
            response: [
                { name: "groups", parameterType: parameterType_1.default.UINT8 },
                { name: "grouplist", parameterType: parameterType_1.default.LIST_UINT16 },
            ],
        },
        {
            name: "extFindGroup",
            ID: 74,
            type: constants_1.Type.SREQ,
            request: [
                { name: "endpoint", parameterType: parameterType_1.default.UINT8 },
                { name: "groupid", parameterType: parameterType_1.default.UINT16 },
            ],
            response: [
                { name: "status", parameterType: parameterType_1.default.UINT8 },
                { name: "groupid", parameterType: parameterType_1.default.UINT16 },
                { name: "namelen", parameterType: parameterType_1.default.UINT8 },
                { name: "groupname", parameterType: parameterType_1.default.BUFFER },
            ],
        },
        {
            name: "extAddGroup",
            ID: 75,
            type: constants_1.Type.SREQ,
            request: [
                { name: "endpoint", parameterType: parameterType_1.default.UINT8 },
                { name: "groupid", parameterType: parameterType_1.default.UINT16 },
                { name: "namelen", parameterType: parameterType_1.default.UINT8 },
                { name: "groupname", parameterType: parameterType_1.default.BUFFER },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "extCountAllGroups",
            ID: 76,
            type: constants_1.Type.SREQ,
            request: [],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "extRxIdle",
            ID: 77,
            type: constants_1.Type.SREQ,
            request: [
                { name: "setflag", parameterType: parameterType_1.default.UINT8 },
                { name: "setvalue", parameterType: parameterType_1.default.UINT8 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "extUpdateNwkKey",
            ID: 78,
            type: constants_1.Type.SREQ,
            request: [
                { name: "dstaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "keyseqnum", parameterType: parameterType_1.default.UINT8 },
                { name: "key", parameterType: parameterType_1.default.BUFFER },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "extSwitchNwkKey",
            ID: 79,
            type: constants_1.Type.SREQ,
            request: [
                { name: "dstaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "keyseqnum", parameterType: parameterType_1.default.UINT8 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "extNwkInfo",
            ID: 80,
            type: constants_1.Type.SREQ,
            request: [],
            response: [
                { name: "shortaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "devstate", parameterType: parameterType_1.default.UINT8 },
                { name: "panid", parameterType: parameterType_1.default.UINT16 },
                { name: "parentaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "extendedpanid", parameterType: parameterType_1.default.IEEEADDR },
                { name: "parentextaddr", parameterType: parameterType_1.default.IEEEADDR },
                { name: "channel", parameterType: parameterType_1.default.UINT8 },
            ],
        },
        {
            name: "extSecApsRemoveReq",
            ID: 81,
            type: constants_1.Type.SREQ,
            request: [
                { name: "parentaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "nwkaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "extaddr", parameterType: parameterType_1.default.IEEEADDR },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "forceConcentratorChange",
            ID: 82,
            type: constants_1.Type.SREQ,
            request: [],
            response: [],
        },
        {
            name: "extSetParams",
            ID: 83,
            type: constants_1.Type.SREQ,
            request: [{ name: "usemulticast", parameterType: parameterType_1.default.UINT8 }],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "tcDeviceInd",
            ID: 202,
            type: constants_1.Type.AREQ,
            request: [
                { name: "nwkaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "extaddr", parameterType: parameterType_1.default.IEEEADDR },
                { name: "parentaddr", parameterType: parameterType_1.default.UINT16 },
            ],
        },
        {
            name: "permitJoinInd",
            ID: 203,
            type: constants_1.Type.AREQ,
            request: [{ name: "duration", parameterType: parameterType_1.default.UINT8 }],
        },
    ],
    [constants_1.Subsystem.SAPI]: [
        {
            name: "systemReset",
            ID: 9,
            type: constants_1.Type.AREQ,
            request: [],
        },
        {
            name: "startRequest",
            ID: 0,
            type: constants_1.Type.SREQ,
            request: [],
            response: [],
        },
        {
            name: "bindDevice",
            ID: 1,
            type: constants_1.Type.SREQ,
            request: [
                { name: "action", parameterType: parameterType_1.default.UINT8 },
                { name: "commandid", parameterType: parameterType_1.default.UINT16 },
                { name: "destination", parameterType: parameterType_1.default.IEEEADDR },
            ],
            response: [],
        },
        {
            name: "allowBind",
            ID: 2,
            type: constants_1.Type.SREQ,
            request: [{ name: "timeout", parameterType: parameterType_1.default.UINT8 }],
            response: [],
        },
        {
            name: "sendDataRequest",
            ID: 3,
            type: constants_1.Type.SREQ,
            request: [
                { name: "destination", parameterType: parameterType_1.default.UINT16 },
                { name: "commandid", parameterType: parameterType_1.default.UINT16 },
                { name: "handle", parameterType: parameterType_1.default.UINT8 },
                { name: "txoptions", parameterType: parameterType_1.default.UINT8 },
                { name: "radius", parameterType: parameterType_1.default.UINT8 },
                { name: "payloadlen", parameterType: parameterType_1.default.UINT8 },
                { name: "payloadvalue", parameterType: parameterType_1.default.BUFFER },
            ],
            response: [],
        },
        {
            name: "readConfiguration",
            ID: 4,
            type: constants_1.Type.SREQ,
            request: [{ name: "configid", parameterType: parameterType_1.default.UINT8 }],
            response: [
                { name: "status", parameterType: parameterType_1.default.UINT8 },
                { name: "configid", parameterType: parameterType_1.default.UINT8 },
                { name: "len", parameterType: parameterType_1.default.UINT8 },
                { name: "value", parameterType: parameterType_1.default.BUFFER },
            ],
        },
        {
            name: "writeConfiguration",
            ID: 5,
            type: constants_1.Type.SREQ,
            request: [
                { name: "configid", parameterType: parameterType_1.default.UINT8 },
                { name: "len", parameterType: parameterType_1.default.UINT8 },
                { name: "value", parameterType: parameterType_1.default.BUFFER },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "getDeviceInfo",
            ID: 6,
            type: constants_1.Type.SREQ,
            request: [{ name: "param", parameterType: parameterType_1.default.UINT8 }],
            response: [
                { name: "param", parameterType: parameterType_1.default.UINT8 },
                { name: "value", parameterType: parameterType_1.default.BUFFER8 },
            ],
        },
        {
            name: "findDeviceRequest",
            ID: 7,
            type: constants_1.Type.SREQ,
            request: [{ name: "searchKey", parameterType: parameterType_1.default.IEEEADDR }],
            response: [],
        },
        {
            name: "permitJoiningRequest",
            ID: 8,
            type: constants_1.Type.SREQ,
            request: [
                { name: "destination", parameterType: parameterType_1.default.UINT16 },
                { name: "timeout", parameterType: parameterType_1.default.UINT8 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "startConfirm",
            ID: 128,
            type: constants_1.Type.AREQ,
            request: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "bindConfirm",
            ID: 129,
            type: constants_1.Type.AREQ,
            request: [
                { name: "commandid", parameterType: parameterType_1.default.UINT16 },
                { name: "status", parameterType: parameterType_1.default.UINT8 },
            ],
        },
        {
            name: "allowBindConfirm",
            ID: 130,
            type: constants_1.Type.AREQ,
            request: [{ name: "source", parameterType: parameterType_1.default.UINT16 }],
        },
        {
            name: "sendDataConfirm",
            ID: 131,
            type: constants_1.Type.AREQ,
            request: [
                { name: "handle", parameterType: parameterType_1.default.UINT8 },
                { name: "status", parameterType: parameterType_1.default.UINT8 },
            ],
        },
        {
            name: "findDeviceConfirm",
            ID: 133,
            type: constants_1.Type.AREQ,
            request: [
                { name: "searchtype", parameterType: parameterType_1.default.UINT8 },
                { name: "searchkey", parameterType: parameterType_1.default.UINT16 },
                { name: "result", parameterType: parameterType_1.default.IEEEADDR },
            ],
        },
        {
            name: "receiveDataIndication",
            ID: 135,
            type: constants_1.Type.AREQ,
            request: [
                { name: "source", parameterType: parameterType_1.default.UINT16 },
                { name: "command", parameterType: parameterType_1.default.UINT16 },
                { name: "len", parameterType: parameterType_1.default.UINT16 },
                { name: "data", parameterType: parameterType_1.default.BUFFER },
            ],
        },
    ],
    [constants_1.Subsystem.UTIL]: [
        {
            name: "getDeviceInfo",
            ID: 0,
            type: constants_1.Type.SREQ,
            request: [],
            response: [
                { name: "status", parameterType: parameterType_1.default.UINT8 },
                { name: "ieeeaddr", parameterType: parameterType_1.default.IEEEADDR },
                { name: "shortaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "devicetype", parameterType: parameterType_1.default.UINT8 },
                { name: "devicestate", parameterType: parameterType_1.default.UINT8 },
                { name: "numassocdevices", parameterType: parameterType_1.default.UINT8 },
                { name: "assocdeviceslist", parameterType: parameterType_1.default.LIST_UINT16 },
            ],
        },
        {
            name: "getNvInfo",
            ID: 1,
            type: constants_1.Type.SREQ,
            request: [],
            response: [
                { name: "status", parameterType: parameterType_1.default.UINT8 },
                { name: "ieeeaddr", parameterType: parameterType_1.default.IEEEADDR },
                { name: "scanchannels", parameterType: parameterType_1.default.UINT32 },
                { name: "panid", parameterType: parameterType_1.default.UINT16 },
                { name: "securitylevel", parameterType: parameterType_1.default.UINT8 },
                { name: "preconfigkey", parameterType: parameterType_1.default.BUFFER16 },
            ],
        },
        {
            name: "setPanid",
            ID: 2,
            type: constants_1.Type.SREQ,
            request: [{ name: "panid", parameterType: parameterType_1.default.UINT16 }],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "setChannels",
            ID: 3,
            type: constants_1.Type.SREQ,
            request: [{ name: "channels", parameterType: parameterType_1.default.UINT32 }],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "setSeclevel",
            ID: 4,
            type: constants_1.Type.SREQ,
            request: [{ name: "securitylevel", parameterType: parameterType_1.default.UINT8 }],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "setPrecfgkey",
            ID: 5,
            type: constants_1.Type.SREQ,
            request: [{ name: "preconfigkey", parameterType: parameterType_1.default.BUFFER }],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "callbackSubCmd",
            ID: 6,
            type: constants_1.Type.SREQ,
            request: [
                { name: "subsystemid", parameterType: parameterType_1.default.UINT16 },
                { name: "action", parameterType: parameterType_1.default.UINT8 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "keyEvent",
            ID: 7,
            type: constants_1.Type.SREQ,
            request: [
                { name: "keys", parameterType: parameterType_1.default.UINT8 },
                { name: "shift", parameterType: parameterType_1.default.UINT8 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "timeAlive",
            ID: 9,
            type: constants_1.Type.SREQ,
            request: [],
            response: [{ name: "seconds", parameterType: parameterType_1.default.UINT32 }],
        },
        {
            name: "ledControl",
            ID: 10,
            type: constants_1.Type.SREQ,
            request: [
                { name: "ledid", parameterType: parameterType_1.default.UINT8 },
                { name: "mode", parameterType: parameterType_1.default.UINT8 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "testLoopback",
            ID: 16,
            type: constants_1.Type.SREQ,
            request: [{ name: "data", parameterType: parameterType_1.default.BUFFER }],
            response: [{ name: "data", parameterType: parameterType_1.default.BUFFER }],
        },
        {
            name: "dataReq",
            ID: 17,
            type: constants_1.Type.SREQ,
            request: [{ name: "securityuse", parameterType: parameterType_1.default.UINT8 }],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "srcMatchEnable",
            ID: 32,
            type: constants_1.Type.SREQ,
            request: [],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "srcMatchAddEntry",
            ID: 33,
            type: constants_1.Type.SREQ,
            request: [
                { name: "addressmode", parameterType: parameterType_1.default.UINT8 },
                { name: "address", parameterType: parameterType_1.default.IEEEADDR },
                { name: "panid", parameterType: parameterType_1.default.UINT16 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "srcMatchDelEntry",
            ID: 34,
            type: constants_1.Type.SREQ,
            request: [
                { name: "addressmode", parameterType: parameterType_1.default.UINT8 },
                { name: "address", parameterType: parameterType_1.default.IEEEADDR },
                { name: "panid", parameterType: parameterType_1.default.UINT16 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "srcMatchCheckSrcAddr",
            ID: 35,
            type: constants_1.Type.SREQ,
            request: [
                { name: "addressmode", parameterType: parameterType_1.default.UINT8 },
                { name: "address", parameterType: parameterType_1.default.IEEEADDR },
                { name: "panid", parameterType: parameterType_1.default.UINT16 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "srcMatchAckAllPending",
            ID: 36,
            type: constants_1.Type.SREQ,
            request: [{ name: "option", parameterType: parameterType_1.default.UINT8 }],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "srcMatchCheckAllPending",
            ID: 37,
            type: constants_1.Type.SREQ,
            request: [],
            response: [
                { name: "status", parameterType: parameterType_1.default.UINT8 },
                { name: "value", parameterType: parameterType_1.default.UINT8 },
            ],
        },
        {
            name: "addrmgrExtAddrLookup",
            ID: 64,
            type: constants_1.Type.SREQ,
            request: [{ name: "extaddr", parameterType: parameterType_1.default.IEEEADDR }],
            response: [{ name: "nwkaddr", parameterType: parameterType_1.default.UINT16 }],
        },
        {
            name: "addrmgrNwkAddrLookup",
            ID: 65,
            type: constants_1.Type.SREQ,
            request: [{ name: "nwkaddr", parameterType: parameterType_1.default.UINT16 }],
            response: [{ name: "extaddr", parameterType: parameterType_1.default.IEEEADDR }],
        },
        {
            name: "apsmeLinkKeyDataGet",
            ID: 68,
            type: constants_1.Type.SREQ,
            request: [{ name: "extaddr", parameterType: parameterType_1.default.IEEEADDR }],
            response: [
                { name: "status", parameterType: parameterType_1.default.UINT8 },
                { name: "seckey", parameterType: parameterType_1.default.BUFFER16 },
                { name: "txfrmcntr", parameterType: parameterType_1.default.UINT32 },
                { name: "rxfrmcntr", parameterType: parameterType_1.default.UINT32 },
            ],
        },
        {
            name: "apsmeLinkKeyNvIdGet",
            ID: 69,
            type: constants_1.Type.SREQ,
            request: [{ name: "extaddr", parameterType: parameterType_1.default.IEEEADDR }],
            response: [
                { name: "status", parameterType: parameterType_1.default.UINT8 },
                { name: "linkkeynvid", parameterType: parameterType_1.default.UINT16 },
            ],
        },
        {
            name: "assocCount",
            ID: 72,
            type: constants_1.Type.SREQ,
            request: [
                { name: "startrelation", parameterType: parameterType_1.default.UINT8 },
                { name: "endrelation", parameterType: parameterType_1.default.UINT8 },
            ],
            response: [{ name: "count", parameterType: parameterType_1.default.UINT16 }],
        },
        {
            name: "assocFindDevice",
            ID: 73,
            type: constants_1.Type.SREQ,
            request: [{ name: "number", parameterType: parameterType_1.default.UINT8 }],
            response: [{ name: "device", parameterType: parameterType_1.default.BUFFER18 }],
        },
        {
            name: "assocGetWithAddress",
            ID: 74,
            type: constants_1.Type.SREQ,
            request: [
                { name: "extaddr", parameterType: parameterType_1.default.IEEEADDR },
                { name: "nwkaddr", parameterType: parameterType_1.default.UINT16 },
            ],
            response: [
                { name: "nwkaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "addridx", parameterType: parameterType_1.default.UINT16 },
                { name: "noderelation", parameterType: parameterType_1.default.UINT8 },
                // NOTE: this commmand returns more.
            ],
        },
        {
            name: "apsmeRequestKeyCmd",
            ID: 75,
            type: constants_1.Type.SREQ,
            request: [{ name: "partneraddr", parameterType: parameterType_1.default.IEEEADDR }],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            // Custom command
            name: "assocRemove",
            ID: 99,
            type: constants_1.Type.SREQ,
            request: [{ name: "ieeeadr", parameterType: parameterType_1.default.IEEEADDR }],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            // Custom command
            name: "assocAdd",
            ID: 100,
            type: constants_1.Type.SREQ,
            request: [
                { name: "ieeeadr", parameterType: parameterType_1.default.IEEEADDR },
                { name: "nwkaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "noderelation", parameterType: parameterType_1.default.UINT8 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "zclKeyEstInitEst",
            ID: 128,
            type: constants_1.Type.SREQ,
            request: [
                { name: "taskid", parameterType: parameterType_1.default.UINT8 },
                { name: "seqnum", parameterType: parameterType_1.default.UINT8 },
                { name: "endpoint", parameterType: parameterType_1.default.UINT8 },
                { name: "addrmode", parameterType: parameterType_1.default.UINT8 },
                { name: "extaddr", parameterType: parameterType_1.default.IEEEADDR },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "zclKeyEstSign",
            ID: 129,
            type: constants_1.Type.SREQ,
            request: [
                { name: "inputlen", parameterType: parameterType_1.default.UINT8 },
                { name: "input", parameterType: parameterType_1.default.BUFFER },
            ],
            response: [
                { name: "status", parameterType: parameterType_1.default.UINT8 },
                { name: "key", parameterType: parameterType_1.default.BUFFER42 },
            ],
        },
        {
            name: "syncReq",
            ID: 224,
            type: constants_1.Type.AREQ,
            request: [],
        },
        {
            name: "zclKeyEstablishInd",
            ID: 225,
            type: constants_1.Type.AREQ,
            request: [
                { name: "taskid", parameterType: parameterType_1.default.UINT8 },
                { name: "event", parameterType: parameterType_1.default.UINT8 },
                { name: "status", parameterType: parameterType_1.default.UINT8 },
                { name: "waittime", parameterType: parameterType_1.default.UINT8 },
                { name: "suite", parameterType: parameterType_1.default.UINT16 },
            ],
        },
        {
            name: "gpioSetDirection",
            ID: 20,
            type: constants_1.Type.SREQ,
            request: [
                { name: "port", parameterType: parameterType_1.default.UINT8 },
                { name: "bit", parameterType: parameterType_1.default.UINT8 },
                { name: "direction", parameterType: parameterType_1.default.UINT8 },
            ],
            response: [
                { name: "oldp0dir", parameterType: parameterType_1.default.UINT8 },
                { name: "oldp1dir", parameterType: parameterType_1.default.UINT8 },
                { name: "oldp2dir", parameterType: parameterType_1.default.UINT8 },
                { name: "p0dir", parameterType: parameterType_1.default.UINT8 },
                { name: "p1dir", parameterType: parameterType_1.default.UINT8 },
                { name: "p2dir", parameterType: parameterType_1.default.UINT8 },
            ],
        },
        {
            name: "gpioRead",
            ID: 21,
            type: constants_1.Type.SREQ,
            request: [],
            response: [
                { name: "p0", parameterType: parameterType_1.default.UINT8 },
                { name: "p1", parameterType: parameterType_1.default.UINT8 },
                { name: "p2", parameterType: parameterType_1.default.UINT8 },
                { name: "p0dir", parameterType: parameterType_1.default.UINT8 },
                { name: "p1dir", parameterType: parameterType_1.default.UINT8 },
                { name: "p2dir", parameterType: parameterType_1.default.UINT8 },
            ],
        },
        {
            name: "gpioWrite",
            ID: 22,
            type: constants_1.Type.SREQ,
            request: [
                { name: "port", parameterType: parameterType_1.default.UINT8 },
                { name: "bit", parameterType: parameterType_1.default.UINT8 },
                { name: "value", parameterType: parameterType_1.default.UINT8 },
            ],
            response: [
                { name: "oldp0", parameterType: parameterType_1.default.UINT8 },
                { name: "oldp1", parameterType: parameterType_1.default.UINT8 },
                { name: "oldp2", parameterType: parameterType_1.default.UINT8 },
                { name: "p0", parameterType: parameterType_1.default.UINT8 },
                { name: "p1", parameterType: parameterType_1.default.UINT8 },
                { name: "p2", parameterType: parameterType_1.default.UINT8 },
                { name: "p0dir", parameterType: parameterType_1.default.UINT8 },
                { name: "p1dir", parameterType: parameterType_1.default.UINT8 },
                { name: "p2dir", parameterType: parameterType_1.default.UINT8 },
            ],
        },
        {
            name: "srngGen",
            ID: 76,
            type: constants_1.Type.SREQ,
            request: [],
            response: [{ name: "outrng", parameterType: parameterType_1.default.BUFFER100 }],
        },
        {
            name: "bindAddEntry",
            ID: 77,
            type: constants_1.Type.SREQ,
            request: [
                { name: "addrmode", parameterType: parameterType_1.default.UINT8 },
                { name: "dstaddr", parameterType: parameterType_1.default.IEEEADDR },
                { name: "dstendpoint", parameterType: parameterType_1.default.UINT8 },
                { name: "numclusterids", parameterType: parameterType_1.default.UINT8 },
                { name: "clusterids", parameterType: parameterType_1.default.LIST_UINT16 },
            ],
            response: [
                { name: "srcep", parameterType: parameterType_1.default.UINT8 },
                { name: "dstgroupmode", parameterType: parameterType_1.default.UINT8 },
                { name: "dstidx", parameterType: parameterType_1.default.UINT16 },
                { name: "dstep", parameterType: parameterType_1.default.UINT8 },
                { name: "numclusterids", parameterType: parameterType_1.default.UINT8 },
                { name: "clusterids", parameterType: parameterType_1.default.BUFFER8 },
            ],
        },
    ],
    [constants_1.Subsystem.DEBUG]: [
        {
            name: "setThreshold",
            ID: 0,
            type: constants_1.Type.SREQ,
            request: [
                { name: "componentid", parameterType: parameterType_1.default.UINT8 },
                { name: "threshold", parameterType: parameterType_1.default.UINT8 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "msg",
            ID: 128,
            type: constants_1.Type.AREQ,
            request: [
                { name: "length", parameterType: parameterType_1.default.UINT8 },
                { name: "string", parameterType: parameterType_1.default.BUFFER },
            ],
        },
    ],
    [constants_1.Subsystem.APP]: [
        {
            name: "msg",
            ID: 0,
            type: constants_1.Type.SREQ,
            request: [
                { name: "appendpoint", parameterType: parameterType_1.default.UINT8 },
                { name: "destaddress", parameterType: parameterType_1.default.UINT16 },
                { name: "destendpoint", parameterType: parameterType_1.default.UINT8 },
                { name: "clusterid", parameterType: parameterType_1.default.UINT16 },
                { name: "msglen", parameterType: parameterType_1.default.UINT8 },
                { name: "message", parameterType: parameterType_1.default.BUFFER },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "userTest",
            ID: 1,
            type: constants_1.Type.SREQ,
            request: [
                { name: "srcep", parameterType: parameterType_1.default.UINT8 },
                { name: "commandid", parameterType: parameterType_1.default.UINT16 },
                { name: "param1", parameterType: parameterType_1.default.UINT16 },
                { name: "param2", parameterType: parameterType_1.default.UINT16 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "zllTlInd",
            ID: 129,
            type: constants_1.Type.AREQ,
            request: [
                { name: "nwkaddr", parameterType: parameterType_1.default.UINT16 },
                { name: "endpoint", parameterType: parameterType_1.default.UINT8 },
                { name: "profileid", parameterType: parameterType_1.default.UINT16 },
                { name: "deviceid", parameterType: parameterType_1.default.UINT16 },
                { name: "version", parameterType: parameterType_1.default.UINT8 },
            ],
        },
    ],
    [constants_1.Subsystem.APP_CNF]: [
        {
            name: "bdbAddInstallCode",
            ID: 4,
            type: constants_1.Type.SREQ,
            request: [
                { name: "installCodeFormat", parameterType: parameterType_1.default.UINT8 },
                { name: "ieeeaddr", parameterType: parameterType_1.default.IEEEADDR },
                { name: "installCode", parameterType: parameterType_1.default.BUFFER },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "bdbStartCommissioning",
            ID: 5,
            type: constants_1.Type.SREQ,
            request: [{ name: "mode", parameterType: parameterType_1.default.UINT8 }],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "bdbSetChannel",
            ID: 8,
            type: constants_1.Type.SREQ,
            request: [
                { name: "isPrimary", parameterType: parameterType_1.default.UINT8 },
                { name: "channel", parameterType: parameterType_1.default.UINT32 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "bdbSetTcRequireKeyExchange",
            ID: 9,
            type: constants_1.Type.SREQ,
            request: [{ name: "value", parameterType: parameterType_1.default.UINT8 }],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "bdbComissioningNotifcation",
            ID: 128,
            type: constants_1.Type.AREQ,
            request: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
        {
            name: "setNwkFrameCounter",
            ID: 255,
            type: constants_1.Type.SREQ,
            request: [{ name: "value", parameterType: parameterType_1.default.UINT32 }],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
    ],
    [constants_1.Subsystem.GREENPOWER]: [
        {
            name: "secReq",
            ID: 3,
            type: constants_1.Type.SREQ,
            request: [
                { name: "applicationID", parameterType: parameterType_1.default.UINT8 },
                { name: "srcID", parameterType: parameterType_1.default.UINT32 },
                { name: "gdpIeeeAddr", parameterType: parameterType_1.default.IEEEADDR },
                { name: "endpoint", parameterType: parameterType_1.default.UINT8 },
                { name: "gpdfSecurityLevel", parameterType: parameterType_1.default.UINT8 },
                { name: "gpdfSecurityFrameCounter", parameterType: parameterType_1.default.UINT8 },
                { name: "dgpStubHandle", parameterType: parameterType_1.default.UINT8 },
            ],
            response: [{ name: "status", parameterType: parameterType_1.default.UINT8 }],
        },
    ],
    [constants_1.Subsystem.RESERVED]: [],
    [constants_1.Subsystem.NWK]: [],
};
exports.default = Definition;
//# sourceMappingURL=definition.js.map