Example #1
0
 static function fromBinString($binString)
 {
     $pdu = new self();
     $buf = unpack('C*', $binString);
     $i = 1;
     $pdu->version = $buf[$i] >> 6;
     $pdu->type = $buf[$i] >> 4 & 0x3;
     $tkl = $buf[$i] & 15;
     $i++;
     $pdu->code = sprintf('%01d', $buf[$i] >> 5);
     $pdu->code .= '.' . sprintf('%02d', $buf[$i] & 0x7);
     $i += 2;
     $pdu->messageId = $buf[$i - 1] << 8 | $buf[$i];
     if ($tkl > 0) {
         for ($i = $i; $i <= $tkl; $i++) {
             $pdu->token .= unpack('C', $buf[$i]);
         }
     }
     $i += $tkl + 1;
     if (isset($buf[$i])) {
         $prev = 0;
         while ($i <= count($buf) && $buf[$i] != 0xff) {
             $prev = $pdu->parseOption($buf, $i, $prev);
         }
         if ($i <= count($buf) && $buf[$i] == 0xff) {
             $pdu->readPayload($buf, $i + 1);
         }
     } else {
         // empty
     }
     return $pdu;
 }