diff options
| author | Christian Weiske <cweiske@cweiske.de> | 2012-07-20 22:29:51 +0200 |
|---|---|---|
| committer | Christian Weiske <cweiske@cweiske.de> | 2012-07-20 22:29:51 +0200 |
| commit | 706f3104305337ecf582897bcc42499fa6623178 (patch) | |
| tree | c7099907ef8c1829fedb74182f228132361aa757 /src/callnotifier/EDSS1/Parser.php | |
| parent | 8cd74705cae43d0aff80de9c9eed57341cefb957 (diff) | |
| download | auerswald-callnotifier-706f3104305337ecf582897bcc42499fa6623178.tar.gz auerswald-callnotifier-706f3104305337ecf582897bcc42499fa6623178.zip | |
separation of parameter types. numbers are highlighted in red now
Diffstat (limited to 'src/callnotifier/EDSS1/Parser.php')
| -rw-r--r-- | src/callnotifier/EDSS1/Parser.php | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/src/callnotifier/EDSS1/Parser.php b/src/callnotifier/EDSS1/Parser.php index fb70749..0c9b86a 100644 --- a/src/callnotifier/EDSS1/Parser.php +++ b/src/callnotifier/EDSS1/Parser.php @@ -31,16 +31,17 @@ class EDSS1_Parser $complete = true; break; } - $param = new EDSS1_Parameter(); + + $paramType = ord($curbit); + $param = $this->getParameterByType($paramType); $m->parameters[] = $param; - $param->type = ord($curbit); //parameter length $curbit = $bytes{++$curpos}; $param->length = ord($curbit); //parameter data - $param->data = substr($bytes, $curpos + 1, $param->length); + $param->setData(substr($bytes, $curpos + 1, $param->length)); $curpos += $param->length; } while ($curpos < strlen($bytes) - 1); @@ -65,15 +66,19 @@ class EDSS1_Parser } /** - * Read a datablock preceded with a length byte, return integer data. - * - * @return array Array with new cursor position, integer data and data length + * @param integer $type Parameter type ID */ - public function readLengthDataInt($bytes, $curpos) + public function getParameterByType($type) { - $ld = $this->readLengthData($bytes, $curpos); - $ld[1] = ord($ld[1]); - return $ld; + $supported = array(0x28, 0x2C, 0x4C, 0x6C, 0x70); + if (!in_array($type, $supported)) { + return new EDSS1_Parameter($type); + } + + $typeHex = sprintf('%02X', $type); + $class = 'callnotifier\EDSS1_Parameter_' . $typeHex; + + return new $class($type); } } |
