UNPKG

nixfilter-uartrfid

Version:

Filters for decoding the data sent by certain RFID readers connected via UART

86 lines (78 loc) 2.72 kB
'use strict'; var formats, get_data_byte_at, get_decimal, map_object, parse_data; get_data_byte_at = function(data_string, index) { return parseInt(data_string.slice(index * 2, (index * 2) + 2), 0x10); }; get_decimal = function(data_string, start_index, stop_index, number_of_digits) { return ('0'.repeat(number_of_digits) + parseInt(data_string.slice(start_index, stop_index), 0x10)).slice(-number_of_digits); }; // The various output formats formats = { '8H': function(data_string) { return data_string.slice(2, 10); }, '10H>13D': function(data_string) { return get_decimal(data_string, 0, 10, 13); }, '10H>14D': function(data_string) { return get_decimal(data_string, 0, 10, 14); }, '10H>10D': function(data_string) { return get_decimal(data_string, 0, 10, 10); }, '08H>10D': function(data_string) { return get_decimal(data_string, 2, 10, 10); }, '08H>10D(int)': function(data_string) { return parseInt(get_decimal(data_string, 2, 10, 10)); }, '08H>55D': function(data_string) { return `${get_decimal(data_string, 2, 6, 5)},${get_decimal(data_string, 6, 10, 5)}`; }, '06H>08D': function(data_string) { return get_decimal(data_string, 4, 10, 8); }, '2.4H>3.5D(A)': function(data_string) { return `${get_decimal(data_string, 0, 2, 3)},${get_decimal(data_string, 6, 10, 5)}`; }, '2.4H>3.5D(B)': function(data_string) { return `${get_decimal(data_string, 2, 4, 3)},${get_decimal(data_string, 6, 10, 5)}`; }, '2.4H>3.5D(C)': function(data_string) { return `${get_decimal(data_string, 4, 6, 3)},${get_decimal(data_string, 6, 10, 5)}`; }, '10H': function(data_string) { return data_string.slice(0, 10); }, '2-8H': function(data_string) { return `${data_string.slice(0, 2)}-${data_string.slice(2, 10)}`; }, 'Revision': function(data_string) { return get_decimal(data_string, 0, 1, 2); }, 'Vendor': function(data_string) { return get_decimal(data_string, 1, 2, 2); } }; // Map the object <object> according to map function <map_function> that will be called with (<value_to_map>, <key>) arguments map_object = function(object, map_function) { var key, mapped_object; mapped_object = {}; for (key in object) { mapped_object[key] = map_function(object[key], key); } return mapped_object; }; // Parse a valid data string, returning an object with all available formats parse_data = function(data_string) { return map_object(formats, function(format_function) { return format_function(data_string); }); }; // What this module exports module.exports = { formats: formats, get_data_byte_at: get_data_byte_at, parse_data: parse_data }; //# sourceMappingURL=utils.js.map