From 2e49a3d2029d7fabcc902fad15b2d9d9abf48a62 Mon Sep 17 00:00:00 2001
From: Adhidarma Hadiwinoto <me@adhisimon.org>
Date: Tue, 3 Sep 2019 16:40:10 +0700
Subject: [PATCH] pduParsed

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

diff --git a/lib/serialport-parsers.js b/lib/serialport-parsers.js
index 4486df0..d8505c2 100644
--- a/lib/serialport-parsers.js
+++ b/lib/serialport-parsers.js
@@ -1,7 +1,7 @@
 const PARSER_READLINE_DELIMITER = '\r\n';
 const PARSER_WAIT_FOR_OK_OR_ERROR_REGEX = /\r\n(?:OK|ERROR)\r\n/;
 
-
+const pdu = require('node-pdu');
 const ParserReadline = require('@serialport/parser-readline');
 const ParserRegex = require('@serialport/parser-regex');
 
@@ -20,6 +20,17 @@ exports.getPort = function getPort() {
     return port;
 };
 
+function parsePdu(data) {
+    if (!data) return null;
+
+    try {
+        const result = pdu.parse(data.toString().trim() || '');
+        return result;
+    } catch (e) {
+        return null;
+    }
+}
+
 function onCSQ(data) {
     const val = data.toString().trim().match(/\+CSQ:\s*(.*)/);
     if (!val || !val[1]) return null;
@@ -71,7 +82,11 @@ parserReadline.on('data', (data) => {
     logger.verbose('INCOMING', { parser: 'parserReadLine', data: `${data.toString()}${PARSER_READLINE_DELIMITER}` });
 
     if (!data) return;
-    if (isResultCodeIs(data, 'CSQ')) {
+
+    const pduParsed = parsePdu(data);
+    if (pduParsed) {
+        logger.verbose('Got a PDU data', { pduParsed });
+    } else if (isResultCodeIs(data, 'CSQ')) {
         logger.verbose('Got a signal quality report', { data: data.toString() });
         onCSQ(data);
     } else if (isResultCodeIs(data, 'COPS:')) {
-- 
1.9.0