* Information element: Calling party number
*/
class EDSS1_Parameter_6C extends EDSS1_Parameter
+ implements EDSS1_Parameter_INumber
{
public $title = 'Calling party number';
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);
}
}
* Information element: Called party number
*/
class EDSS1_Parameter_70 extends EDSS1_Parameter
+ implements EDSS1_Parameter_INumber
{
public $title = 'Called party number';
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);
}
--- /dev/null
+<?php
+namespace callnotifier;
+
+/**
+ * Parameter that has a number
+ */
+interface EDSS1_Parameter_INumber
+{
+}
+?>
\ No newline at end of file
--- /dev/null
+<?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',
+ );
+
+}
+
+?>
: ''
)
);
+ 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 . ': '