From 62c6c2398a44b891af0863cbb5dafb23a07e7791 Mon Sep 17 00:00:00 2001
From: Adhidarma Hadiwinoto <me@adhisimon.org>
Date: Tue, 3 Sep 2019 21:44:41 +0700
Subject: [PATCH] Alternative pdu parser

---
 lib/serialport-parsers.js | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/lib/serialport-parsers.js b/lib/serialport-parsers.js
index afe23f5..e9e13b0 100644
--- a/lib/serialport-parsers.js
+++ b/lib/serialport-parsers.js
@@ -2,7 +2,8 @@ const PARSER_READLINE_DELIMITER = '\r\n';
 const PARSER_WAIT_FOR_OK_OR_ERROR_REGEX = /\r\n(?:OK|ERROR)\r\n/;
 
 const moment = require('moment');
-const pdu = require('node-pdu');
+const nodePdu = require('node-pdu');
+const pdu = require('pdu');
 const ParserReadline = require('@serialport/parser-readline');
 const ParserRegex = require('@serialport/parser-regex');
 
@@ -26,7 +27,7 @@ function parsePdu(data) {
     if (!data) return null;
 
     try {
-        const result = pdu.parse(data.toString().trim() || '');
+        const result = nodePdu.parse(data.toString().trim() || '');
         return result;
     } catch (e) {
         return null;
@@ -109,6 +110,17 @@ parserReadline.on('data', (data) => {
 
     if (!data) return;
 
+    let pduParsed2;
+    try {
+        pduParsed2 = pdu.parse(data);
+    } catch (e) {
+        //
+    }
+
+    if (pduParsed2) {
+        logger.verbose('Alternative PDU Parser', pduParsed2);
+    }
+
     const pduParsed = parsePdu(data);
     if (pduParsed) {
         logger.verbose('PDU parsed', { type: (typeof pduParsed.getType === 'function') && pduParsed.getType() });
-- 
1.9.0