UNPKG

cc-znp

Version:

The interface for a host to communicate with TI CC253X Zigbee Network Processor(ZNP) over a serial port.

85 lines (84 loc) 2.61 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const enum_1 = require("./enum"); const zpiMeta = require("./defs/zpi_meta.json"); const zmtDefs = require("./defs/zmt_defs.json"); exports.CmdType = new enum_1.Enum(zmtDefs.CmdType); exports.Subsys = new enum_1.Enum(zmtDefs.Subsys); exports.ParamType = new enum_1.Enum(zmtDefs.ParamType); exports.SYS = new enum_1.Enum(zmtDefs.SYS); exports.MAC = new enum_1.Enum(zmtDefs.MAC); exports.AF = new enum_1.Enum(zmtDefs.AF); exports.ZDO = new enum_1.Enum(zmtDefs.ZDO); exports.SAPI = new enum_1.Enum(zmtDefs.SAPI); exports.UTIL = new enum_1.Enum(zmtDefs.UTIL); exports.DBG = new enum_1.Enum(zmtDefs.DBG); exports.APP = new enum_1.Enum(zmtDefs.APP); exports.DEBUG = new enum_1.Enum(zmtDefs.DEBUG); function get(subsys, cmd) { const meta = zpiMeta[subsys]; return meta ? meta[cmd] : undefined; // return: { // type, // cmdId, // params: // { // req: [ { name: type }, ... ], // rsp: [ { name: type }, ... ] // } // } } exports.get = get; function getType(subsys, cmd) { let meta = get(subsys, cmd); if (meta) { meta = exports.CmdType.get(meta.type); } // return: "POLL", "SREQ", "AREQ", "SRSP" return meta ? meta.key : undefined; } exports.getType = getType; function getParams(subsys, cmdName) { const meta = get(subsys, cmdName); return meta ? meta.params : meta; } exports.getParams = getParams; function getReqParams(subsys, cmd) { const meta = getParams(subsys, cmd); // [ { name: type }, .... ] const params = meta ? meta.req : meta; if (params) { return cloneParamsWithNewFormat(params); } } exports.getReqParams = getReqParams; function getRspParams(subsys, cmd) { const meta = getParams(subsys, cmd); // [ { name: type }, .... ] const params = meta ? meta.rsp : meta; if (params) { return cloneParamsWithNewFormat(params); } } exports.getRspParams = getRspParams; function cloneParamsWithNewFormat(params) { let output = params.map(item => { const name = Object.keys(item)[0]; return { name, type: item[name], }; }); output = _paramTypeToString(output); return output; } exports.cloneParamsWithNewFormat = cloneParamsWithNewFormat; function _paramTypeToString(params) { params.forEach((item, idx) => { // enum | undefined const type = exports.ParamType.get(item.type); // item.type is a string item.type = type ? type.key : item.type; }); return params; }