jooby-codec
    Preparing search index...

    Namespace uplink

    Process messages received from devices.

    import * as message from 'jooby-codec/mtx3/message/uplink';
    import * as frame from 'jooby-codec/mtx1/utils/frame.js';
    import getBytesFromHex from 'jooby-codec/utils/getBytesFromHex.js';

    const aesKey = [...Array(16).keys()];

    // a message with one getDeviceId command
    const messageBytes = getBytesFromHex('0d13cf5fa5a836724fc97a0735f817d49651');
    // the same message as a frame
    const frameBytes = getBytesFromHex('7e51fffffffe0d7d33cf5fa5a836724fc97a0735f817d4965178de7e');

    const parsedMessage = message.fromBytes(messageBytes, {aesKey});

    console.log('parsed message:', parsedMessage);
    // output:
    {
    messageId: 10,
    accessLevel: 0,
    commands: [
    {
    id: 5,
    name: 'getDeviceId',
    headerSize: 2,
    bytes: [Array],
    parameters: [Object]
    }
    ],
    bytes: [
    10, 16, 16, 5, 8, 0,
    26, 121, 23, 20, 27, 29,
    106, 0, 68
    ],
    lrc: { received: 68, calculated: 68 }
    }

    const parsedFrame = frame.fromBytes(frameBytes);

    console.log('parsed frame:', parsedFrame);
    // output:
    {
    bytes: [
    126, 81, 255, 255, 255, 254, 11,
    16, 16, 5, 8, 0, 26, 121,
    23, 20, 27, 29, 106, 0, 68,
    151, 22, 126
    ],
    payload: [
    11, 16, 16, 5, 8, 0,
    26, 121, 23, 20, 27, 29,
    106, 0, 68
    ],
    crc: { calculated: 5783, received: 5783 },
    header: {
    type: 81,
    typeName: 'DATA_RESPONSE',
    destination: 65535,
    source: 65534
    }
    }

    // parsed successfully
    if ( 'bytes' in parsedFrame ) {
    const parsedMessage2 = message.fromBytes(parsedFrame.payload, {aesKey});

    if ( JSON.stringify(parsedMessage) === JSON.stringify(parsedMessage2) ) {
    console.log('correct message');
    } else {
    throw new Error('parsedMessage and parsedMessage2 should be identical!');
    }
    }

    Variables

    fromBytes
    fromBytesMap
    nameMap
    toBytes
    toBytesMap