Add Zmodem/BINKP/EMSI
This commit is contained in:
43
app/Classes/Protocol/BinkpMessage.php
Normal file
43
app/Classes/Protocol/BinkpMessage.php
Normal file
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Protocol;
|
||||
|
||||
final class BinkpMessage
|
||||
{
|
||||
public const BLK_HDR_SIZE = 2; /* header size */
|
||||
|
||||
private int $id;
|
||||
private string $body;
|
||||
|
||||
public function __construct(int $id,string $body)
|
||||
{
|
||||
$this->id = $id;
|
||||
$this->body = $body;
|
||||
}
|
||||
|
||||
public function __get($key)
|
||||
{
|
||||
switch ($key) {
|
||||
case 'len':
|
||||
return strlen($this->body)+1+self::BLK_HDR_SIZE;
|
||||
|
||||
case 'msg':
|
||||
$buf = self::mkheader((strlen($this->body)+1) | 0x8000);
|
||||
$buf .= chr($this->id);
|
||||
$buf .= $this->body;
|
||||
|
||||
return $buf;
|
||||
|
||||
default:
|
||||
throw new \Exception('Unknown key :'.$key);
|
||||
}
|
||||
}
|
||||
|
||||
public static function mkheader(int $l): string
|
||||
{
|
||||
$buf = chr(($l>>8)&0xff);
|
||||
$buf .= chr($l&0xff);
|
||||
|
||||
return $buf;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user