UNPKG

nixfilter-uartrfid

Version:

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

52 lines (42 loc) 1.4 kB
`#!/usr/bin/env node 'use strict'` # Require the "nixfilter" module nixfilter = require('nixfilter') # Import/Require the local "utils" module utils = require('./utils') # Define the filter and register it on the module nixfilter.filter module, description: 'Parse and output the data sent by certain EM4100-125kHz-RFID-Readers connected via UART 9600 8N1 (e.g. RDM630, RDM6300)' input_reader: nixfilter.reader.byte() add_arguments: (argument_parser) -> argument_parser.addArgument ['--format', '-f'], choices: Object.keys(utils.formats) defaultValue: '08H>10D' help: 'The output format (default: "08H>10D")' return setup: -> @state = 'read_start' on_input: (input_byte) -> switch @state when 'read_start' if (input_byte is 0x02) @data_string = '' @state = 'read_data' when 'read_data' input_character = String.fromCharCode(input_byte) if (input_character in '0123456789ABCDEF') @data_string += input_character if (@data_string.length is 12) @state = 'read_stop' else @state = 'read_start' when 'read_stop' if (input_byte is 0x03) checksum = 0 for index in [0...5] checksum ^= utils.get_data_byte_at(@data_string, index) if (checksum is utils.get_data_byte_at(@data_string, 5)) data = utils.parse_data(@data_string) @output(data[@args.format]) @state = 'read_start' return