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
JavaScript
;
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;
}