1.3.0 • Published 2 years ago

@ssv-embedded/ssb-decoder v1.3.0

Weekly downloads
-
License
MIT
Repository
-
Last release
2 years ago

@ssv-embedded/ssb-decoder

This module decodes the sensor payload.

API

Create instance

  • Use default decoder
    const {createDecoder} = require('@ssv-embedded/ssb-decoder');
    const decoder = createDecoder();
    or
    const {createDecoder, defaultDecodeItem} = require('@ssv-embedded/ssb-decoder');
    const decoder = createDecoder({decodeItem: defaultDecodeItem});
  • Use own decoder, example:

    const {createDecoder, defaultDecodeItem} = require('@ssv-embedded/ssb-decoder');
    function myDecoder (type, data) {
      // decode my stuff
      if (type === 0x80 && data.length === 4)
        return {'mag-x': data.readFloatLE()};
      if (type === 0x81 && data.length === 4)
        return {'mag-y': data.readFloatLE()};
      if (type === 0x82 && data.length === 4)
        return {'mag-z': data.readFloatLE()};
    
      // decode default staff
      return defaultDecodeItem(type, data);
    }
    const decoder = createDecoder({decodeItem: myDecoder});

Parameter of createDecoder() is optional and can provide a object with initial settings:

  • decodeItem: Item decoder callback function with two parameters, required.
    • Input parameter:
      • type: item type to be decoded as Number
      • data: item data to be decoded as Buffer
    • Output should be an Object with one key and value, e.g. {'temp':22.3}

Check payload

const decoded = decoder.decode(payload);

payload: SSV/SSB payload from type Buffer

Return: Object with decoded items as raw data and user decoded data from decodeItem callback. Example output:

{
  raw: {
    '80': <Buffer 66 66 66 be>,
    '81': <Buffer 47 c1 bd>,
    '82': <Buffer 66 66 66 be>
  },
  data: {
    'mag-x': -0.22499999403953552,
    'mag-z': -0.22499999403953552,
  }
}