aboutsummaryrefslogtreecommitdiff
path: root/src/callnotifier/MessageHandler.php
diff options
context:
space:
mode:
authorChristian Weiske <cweiske@cweiske.de>2012-07-16 22:58:34 +0200
committerChristian Weiske <cweiske@cweiske.de>2012-07-16 22:58:34 +0200
commit0073743d7518e5899f0cd075a1c7755a9d603bbd (patch)
treec48e95609e678627529b1ca4ee5b43c7a3a43ab4 /src/callnotifier/MessageHandler.php
parentf66acab69b4981bbb21bccd2754cb1e870f3d360 (diff)
downloadauerswald-callnotifier-0073743d7518e5899f0cd075a1c7755a9d603bbd.tar.gz
auerswald-callnotifier-0073743d7518e5899f0cd075a1c7755a9d603bbd.zip
first try on E-DSS-1 ISDN d-channel parsing
Diffstat (limited to 'src/callnotifier/MessageHandler.php')
-rw-r--r--src/callnotifier/MessageHandler.php44
1 files changed, 42 insertions, 2 deletions
diff --git a/src/callnotifier/MessageHandler.php b/src/callnotifier/MessageHandler.php
index 89d07e7..6181e3a 100644
--- a/src/callnotifier/MessageHandler.php
+++ b/src/callnotifier/MessageHandler.php
@@ -14,7 +14,8 @@ class MessageHandler
*/
protected $logger = array(
'msgData' => array(),
- 'incomingCall' => array()
+ 'incomingCall' => array(),
+ 'edss1msg' => array(),
);
@@ -73,7 +74,7 @@ class MessageHandler
);
if ($type != 'Info') {
- //we only want info messages
+ $this->parseEDSS1($details);
return;
}
//Vegw/Ets-Cref:[0xffef]/[0x64] - VEGW_SETUP from upper layer to internal destination: CGPN[**22]->CDPN[41],
@@ -84,6 +85,45 @@ class MessageHandler
}
}
+ /**
+ * Example string: "T02: 00 A3 06 0A 08 01 01 5A FF 0A"
+ *
+ * @param string $details Detail string of a debug message
+ *
+ */
+ protected function parseEDSS1($details)
+ {
+ if ($details{0} != 'T' && $details{0} != 'N') {
+ //we only want byte data
+ return;
+ }
+ if (substr($details, 16, 4) != ' 08 ') {
+ //only E-DSS-1, no other packets
+ return;
+ }
+
+ $bytestring = substr($details, 5);
+ $bytes = '';
+ foreach (explode(' ', $bytestring) as $strbyte) {
+ $bytes .= chr(hexdec($strbyte));
+ }
+
+ $msgtype = $bytes{7};
+ static $interestingTyps = array(
+ EDSS1_Message::SETUP,
+ EDSS1_Message::CONNECT,
+ EDSS1_Message::INFORMATION
+ );
+ if (!in_array($msgtype, $interestingTyps)) {
+ //return;
+ }
+
+ $mp = new EDSS1_Parser();
+ $msg = $mp->parse($bytes);
+
+ $this->log('edss1msg', array('msg' => $msg));
+ }
+
protected function log($type, $arData)
{
if (!isset($this->logger[$type])) {