UNPKG

adsb-message-integrator

Version:

Integrates ADSB messages into a continually updating model of the current state of all recently detected ADSB transponders

63 lines (53 loc) 1.43 kB
'use strict'; const _ = require('lodash'), moment = require('moment'), stringHash = require('string-hash'); var required_params = [ 'hex_ident', 'generated_date', 'generated_time', 'logged_date', 'logged_time' ]; module.exports = function Message(messageData) { if (!_.isPlainObject(messageData)) return false; // check all required params present if (_(messageData).pick(required_params).keys().value().length < required_params.length) { return false; } let message = _.omit(_.clone(messageData), _.isNull); if (message.received) { message.receptionTime = moment(message.received) } else { message.receptionTime = message.receptionTime || moment( message.logged_date + ' ' + message.logged_time, "YYYY/MM/DD HH:mm:ss.SSS" ); } if (message.generated_date && message.generated_time) { message.transmissionTime = message.transmissionTime || moment( message.generated_date + ' ' + message.generated_time, "YYYY/MM/DD HH:mm:ss.SSS" ); } else { message.transmissionTime = message.receptionTime; } message.hash = stringHash( _(message) .pick([ 'transmission_type', 'hex_ident', 'aircraft_id', 'flight_id', 'callsign', 'altitude', 'ground_speed', 'track', 'lat', 'lon', 'vertical_rate', 'squawk', 'alert', 'emergency', 'spi', 'is_on_ground' ]) .omit(_.isUndefined) .values() .value() .join() ); return message; };