diff options
| author | Christian Weiske <cweiske@cweiske.de> | 2012-07-20 23:06:03 +0200 |
|---|---|---|
| committer | Christian Weiske <cweiske@cweiske.de> | 2012-07-20 23:06:03 +0200 |
| commit | 9bdfbb8560e0e45fd2f04e10763a81c8b2638da0 (patch) | |
| tree | 002920e00f8f755daf692cb75c41794b753b4dd7 /src | |
| parent | 706f3104305337ecf582897bcc42499fa6623178 (diff) | |
| download | auerswald-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.php | 4 | ||||
| -rw-r--r-- | src/callnotifier/EDSS1/Parameter/70.php | 3 | ||||
| -rw-r--r-- | src/callnotifier/EDSS1/Parameter/INumber.php | 10 | ||||
| -rw-r--r-- | src/callnotifier/EDSS1/Parameter/Names.php | 31 | ||||
| -rw-r--r-- | src/callnotifier/Logger/Echo.php | 7 |
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 . ': ' |
