UNPKG

nixfilter-uartrfid

Version:

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

44 lines (37 loc) 2.08 kB
'use strict' get_data_byte_at = (data_string, index) -> parseInt(data_string.slice((index * 2), ((index * 2) + 2)), 0x10) get_decimal = (data_string, start_index, stop_index, number_of_digits) -> ('0'.repeat(number_of_digits) + parseInt(data_string.slice(start_index, stop_index), 0x10)).slice(-number_of_digits) # The various output formats formats = '8H': (data_string) -> data_string.slice(2, 10) '10H>13D': (data_string) -> get_decimal(data_string, 0, 10, 13) '10H>14D': (data_string) -> get_decimal(data_string, 0, 10, 14) '10H>10D': (data_string) -> get_decimal(data_string, 0, 10, 10) '08H>10D': (data_string) -> get_decimal(data_string, 2, 10, 10) '08H>10D(int)': (data_string) -> parseInt(get_decimal(data_string, 2, 10, 10)) '08H>55D': (data_string) -> "#{get_decimal(data_string, 2, 6, 5)},#{get_decimal(data_string, 6, 10, 5)}" '06H>08D': (data_string) -> get_decimal(data_string, 4, 10, 8) '2.4H>3.5D(A)': (data_string) -> "#{get_decimal(data_string, 0, 2, 3)},#{get_decimal(data_string, 6, 10, 5)}" '2.4H>3.5D(B)': (data_string) -> "#{get_decimal(data_string, 2, 4, 3)},#{get_decimal(data_string, 6, 10, 5)}" '2.4H>3.5D(C)': (data_string) -> "#{get_decimal(data_string, 4, 6, 3)},#{get_decimal(data_string, 6, 10, 5)}" '10H': (data_string) -> data_string.slice(0, 10) '2-8H': (data_string) -> "#{data_string.slice(0, 2)}-#{data_string.slice(2, 10)}" 'Revision': (data_string) -> get_decimal(data_string, 0, 1, 2) 'Vendor': (data_string) -> 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 = (object, map_function) -> mapped_object = {} for key of object mapped_object[key] = map_function(object[key], key) mapped_object # Parse a valid data string, returning an object with all available formats parse_data = (data_string) -> map_object formats, (format_function) -> format_function(data_string) # What this module exports module.exports = formats: formats get_data_byte_at: get_data_byte_at parse_data: parse_data