aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Weiske <cweiske@cweiske.de>2012-07-20 23:06:03 +0200
committerChristian Weiske <cweiske@cweiske.de>2012-07-20 23:06:03 +0200
commit9bdfbb8560e0e45fd2f04e10763a81c8b2638da0 (patch)
tree002920e00f8f755daf692cb75c41794b753b4dd7 /src
parent706f3104305337ecf582897bcc42499fa6623178 (diff)
downloadauerswald-callnotifier-9bdfbb8560e0e45fd2f04e10763a81c8b2638da0.tar.gz
auerswald-callnotifier-9bdfbb8560e0e45fd2f04e10763a81c8b2638da0.zip
parse number types and numbering plans
Diffstat (limited to 'src')
-rw-r--r--src/callnotifier/EDSS1/Parameter/6C.php4
-rw-r--r--src/callnotifier/EDSS1/Parameter/70.php3
-rw-r--r--src/callnotifier/EDSS1/Parameter/INumber.php10
-rw-r--r--src/callnotifier/EDSS1/Parameter/Names.php31
-rw-r--r--src/callnotifier/Logger/Echo.php7
5 files changed, 55 insertions, 0 deletions
diff --git a/src/callnotifier/EDSS1/Parameter/6C.php b/src/callnotifier/EDSS1/Parameter/6C.php
index 2acdebd..cba4560 100644
--- a/src/callnotifier/EDSS1/Parameter/6C.php
+++ b/src/callnotifier/EDSS1/Parameter/6C.php
@@ -5,6 +5,7 @@ namespace callnotifier;
* Information element: Calling party number
*/
class EDSS1_Parameter_6C extends EDSS1_Parameter
+ implements EDSS1_Parameter_INumber
{
public $title = 'Calling party number';
@@ -17,6 +18,9 @@ class EDSS1_Parameter_6C extends EDSS1_Parameter
public function setData($data)
{
parent::setData($data);
+ $this->numberType = (ord($data{0}) & 112) >> 4;
+ $this->numberingPlan = (ord($data{0}) & 15);
+ //data{1} is presentation/screening indicator
$this->number = substr($data, 2);
}
}
diff --git a/src/callnotifier/EDSS1/Parameter/70.php b/src/callnotifier/EDSS1/Parameter/70.php
index 0127d43..679e2eb 100644
--- a/src/callnotifier/EDSS1/Parameter/70.php
+++ b/src/callnotifier/EDSS1/Parameter/70.php
@@ -5,6 +5,7 @@ namespace callnotifier;
* Information element: Called party number
*/
class EDSS1_Parameter_70 extends EDSS1_Parameter
+ implements EDSS1_Parameter_INumber
{
public $title = 'Called party number';
@@ -15,6 +16,8 @@ class EDSS1_Parameter_70 extends EDSS1_Parameter
public function setData($data)
{
parent::setData($data);
+ $this->numberType = (ord($data{0}) & 112) >> 4;
+ $this->numberingPlan = (ord($data{0}) & 15);
$this->number = substr($data, 1);
}
diff --git a/src/callnotifier/EDSS1/Parameter/INumber.php b/src/callnotifier/EDSS1/Parameter/INumber.php
new file mode 100644
index 0000000..d53594e
--- /dev/null
+++ b/src/callnotifier/EDSS1/Parameter/INumber.php
@@ -0,0 +1,10 @@
+<?php
+namespace callnotifier;
+
+/**
+ * Parameter that has a number
+ */
+interface EDSS1_Parameter_INumber
+{
+}
+?> \ No newline at end of file
diff --git a/src/callnotifier/EDSS1/Parameter/Names.php b/src/callnotifier/EDSS1/Parameter/Names.php
new file mode 100644
index 0000000..cb6caef
--- /dev/null
+++ b/src/callnotifier/EDSS1/Parameter/Names.php
@@ -0,0 +1,31 @@
+<?php
+namespace callnotifier;
+
+/**
+ * Static parameters to resolve names of types
+ */
+class EDSS1_Parameter_Names extends EDSS1_Parameter
+{
+ static $numberTypes = array(
+ 0 => 'Unknown',
+ 1 => 'International number',
+ 2 => 'National number',
+ 3 => 'Network specific number',
+ 4 => 'Subscriber number',
+ 5 => 'Abbreviated number',
+ 6 => 'Reserved',
+ );
+
+ static $numberingPlans = array(
+ 0 => 'Unknown',
+ 1 => 'ISDN/Telephony',
+ 3 => 'Data',
+ 4 => 'Telex',
+ 8 => 'National standard',
+ 9 => 'Private',
+ 15 => 'Reserved',
+ );
+
+}
+
+?>
diff --git a/src/callnotifier/Logger/Echo.php b/src/callnotifier/Logger/Echo.php
index 688eaaf..c37e7b6 100644
--- a/src/callnotifier/Logger/Echo.php
+++ b/src/callnotifier/Logger/Echo.php
@@ -62,6 +62,13 @@ class Logger_Echo implements Logger
: ''
)
);
+ if ($param instanceof EDSS1_Parameter_INumber) {
+ echo sprintf(
+ " Number type: %s, plan: %s\n",
+ EDSS1_Parameter_Names::$numberTypes[$param->numberType],
+ EDSS1_Parameter_Names::$numberingPlans[$param->numberingPlan]
+ );
+ }
}
} else {
echo $this->blue . $type . $this->end . ': '