From: Christian Weiske Date: Fri, 20 Jul 2012 21:06:03 +0000 (+0200) Subject: parse number types and numbering plans X-Git-Tag: v1.0.0~80 X-Git-Url: https://git.cweiske.de/auerswald-callnotifier.git/commitdiff_plain/9bdfbb8560e0e45fd2f04e10763a81c8b2638da0 parse number types and numbering plans --- 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 @@ + \ 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 @@ + '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 . ': '