5a298e5011b51d4a2b67d816782cb1b25f4c7ad5
[auerswald-callnotifier.git] / src / callnotifier / EDSS1 / Parser.php
1 <?php
2 namespace callnotifier;
3
4 class EDSS1_Parser
5 {
6     const PARAM = 0;
7     const PARAMLENGTH = 1;
8     const PARAMVAL = 2;
9
10     public function parse($bytes)
11     {
12         $m = new EDSS1_Message();
13         $m->type = ord($bytes{7});
14
15         $curpos = 7;
16         $complete = false;
17         do {
18             //parameter type
19             $curbit = $bytes{++$curpos};
20             if ($curbit == "\xFF" && $bytes{$curpos + 1} == "\n") {
21                 $complete = true;
22                 break;
23             }
24             $param = new EDSS1_Parameter();
25             $m->parameters[] = $param;
26             $param->type     = ord($curbit);
27
28             //parameter length
29             $curbit = $bytes{++$curpos};
30             $param->length = ord($curbit);
31
32             //parameter data
33             $param->data = substr($bytes, $curpos + 1, $param->length);
34             $curpos += $param->length;
35         } while ($curpos < strlen($bytes) - 1);
36
37         return $m;
38     }
39 }
40
41 ?>