Added CodeStatus models
This commit is contained in:
+67
-52
@@ -15,6 +15,9 @@ use Menking\Meshcore\Model\ErrorResponse;
|
|||||||
use Menking\Meshcore\Model\LoginResponse;
|
use Menking\Meshcore\Model\LoginResponse;
|
||||||
use Menking\Meshcore\Model\LogReceiveResponse;
|
use Menking\Meshcore\Model\LogReceiveResponse;
|
||||||
use Menking\Meshcore\Model\BatteryStorageResponse;
|
use Menking\Meshcore\Model\BatteryStorageResponse;
|
||||||
|
use Menking\Meshcore\Model\CodeStatusTypeCoreResponse;
|
||||||
|
use Menking\Meshcore\Model\CodeStatusTypePacketResponse;
|
||||||
|
use Menking\Meshcore\Model\CodeStatusTypeRadioResponse;
|
||||||
use Menking\Meshcore\Model\ContactResponse;
|
use Menking\Meshcore\Model\ContactResponse;
|
||||||
use Menking\Meshcore\Model\ContactsFullResponse;
|
use Menking\Meshcore\Model\ContactsFullResponse;
|
||||||
use Menking\Meshcore\Model\MessageResponse;
|
use Menking\Meshcore\Model\MessageResponse;
|
||||||
@@ -376,57 +379,74 @@ class CoreParser {
|
|||||||
return $m;
|
return $m;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function parseCodeStatusResponse(string $payload) {
|
/**
|
||||||
$info = [
|
*
|
||||||
'code'=>ord($payload[0]),
|
* @param string $payload
|
||||||
'type'=>ord($payload[1]),
|
* @return CodeStatusTypeCoreResponse|CodeStatusTypeRadioResponse|CodeStatusTypePacketResponse
|
||||||
];
|
*/
|
||||||
|
public static function parseCodeStatusResponse(string $payload): CodeStatusTypeCoreResponse|CodeStatusTypeRadioResponse|CodeStatusTypePacketResponse {
|
||||||
|
$m = null;
|
||||||
|
|
||||||
switch($info['type']) {
|
switch(ord($payload[1])) {
|
||||||
case CoreProtocol::STATS_TYPE_CORE:
|
case CoreProtocol::STATS_TYPE_CORE:
|
||||||
$info['battery_mv'] = unpack('v', substr($payload, 2, 2))[1];
|
$m = new CodeStatusTypeCoreResponse();
|
||||||
$info['uptime_secs'] = unpack('V', substr($payload, 4, 4))[1];
|
$m->code = ord($payload[0]);
|
||||||
$info['err_flags'] = unpack('v', substr($payload, 8, 2))[1];
|
$m->battery_mv = unpack('v', substr($payload, 2, 2))[1];
|
||||||
$info['queue_len'] = ord($payload[10]);
|
$m->uptime_secs = unpack('V', substr($payload, 4, 4))[1];
|
||||||
|
$m->err_flags = unpack('v', substr($payload, 8, 2))[1];
|
||||||
|
$m->queue_len = ord($payload[10]);
|
||||||
break;
|
break;
|
||||||
case CoreProtocol::STATS_TYPE_RADIO:
|
case CoreProtocol::STATS_TYPE_RADIO:
|
||||||
$info['noise_floor'] = unpack('v', substr($payload, 2, 2))[1];
|
$m = new CodeStatusTypeRadioResponse();
|
||||||
$info['last_rssi'] = (ord($payload[4]) >= 128) ? (ord($payload[4]) - 256): ord($payload[4]);
|
$m->code = ord($payload[0]);
|
||||||
$info['last_snr'] = ord($payload[5]);
|
$m->noise_floor = unpack('v', substr($payload, 2, 2))[1];
|
||||||
$info['tx_air_secs'] = unpack('V', substr($payload, 6, 4))[1];
|
$m->last_rssi = (ord($payload[4]) >= 128) ? (ord($payload[4]) - 256): ord($payload[4]);
|
||||||
$info['rx_air_secs'] = unpack('V', substr($payload, 10, 4))[1];
|
$m->last_snr = ord($payload[5]);;
|
||||||
|
$m->tx_air_secs = unpack('V', substr($payload, 6, 4))[1];
|
||||||
|
$m->rx_air_secs = unpack('V', substr($payload, 10, 4))[1];
|
||||||
break;
|
break;
|
||||||
case CoreProtocol::STATS_TYPE_PACKETS:
|
case CoreProtocol::STATS_TYPE_PACKETS:
|
||||||
$info['recv'] = unpack('V', substr($payload, 2, 4))[1];
|
$m = new CodeStatusTypePacketResponse();
|
||||||
$info['sent'] = unpack('V', substr($payload, 6, 4))[1];
|
$m->code = ord($payload[0]);
|
||||||
$info['n_sent_flood'] = unpack('V', substr($payload, 10, 4))[1];
|
$m->recv = unpack('V', substr($payload, 2, 4))[1];
|
||||||
$info['n_sent_direct'] = unpack('V', substr($payload, 14, 4))[1];
|
$m->sent = unpack('V', substr($payload, 6, 4))[1];
|
||||||
$info['n_recv_flood'] = unpack('V', substr($payload, 18, 4))[1];
|
$m->n_sent_flood = unpack('V', substr($payload, 10, 4))[1];
|
||||||
$info['n_recv_direct'] = unpack('V', substr($payload, 22, 4))[1];
|
$m->n_sent_direct = unpack('V', substr($payload, 14, 4))[1];
|
||||||
$info['n_rec_errors'] = unpack('V', substr($payload, 26, 4))[1];
|
$m->n_recv_flood = unpack('V', substr($payload, 18, 4))[1];
|
||||||
|
$m->n_recv_direct = unpack('V', substr($payload, 22, 4))[1];
|
||||||
|
$m->n_recv_errors = unpack('V', substr($payload, 26, 4))[1];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $info;
|
return $m;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function parseDeviceInfoResponse(string $payload) {
|
/**
|
||||||
$info = [
|
*
|
||||||
'code'=>ord($payload[0]),
|
* @param string $payload
|
||||||
'fw_ver_code'=>ord($payload[1]),
|
* @return DeviceInfoResponse
|
||||||
'max_contacts'=>ord($payload[2]) * 2,
|
*/
|
||||||
'max_group_channels'=>ord($payload[3]),
|
public static function parseDeviceInfoResponse(string $payload): DeviceInfoResponse {
|
||||||
'ble_pin'=>unpack('V', substr($payload, 4, 4))[1],
|
$m = new DeviceInfoResponse();
|
||||||
'fw_build_date'=>trim(substr($payload, 8, 12)),
|
$m->code = ord($payload[0]);
|
||||||
'manufacturer_name'=>trim(substr($payload, 20, 40)),
|
$m->firmware_version = ord($payload[1]);
|
||||||
'fw_version'=>trim(substr($payload, 60, 20)),
|
$m->max_contacts_raw = ord($payload[2]) * 2;
|
||||||
'client_repeat'=>ord($payload[80]),
|
$m->max_channels = ord($payload[3]);
|
||||||
'path_hash_mode'=>ord($payload[81])
|
$m->ble_pin = unpack('V', substr($payload, 4, 4))[1];
|
||||||
];
|
$m->firmware_build = trim(substr($payload, 8, 12));
|
||||||
|
$m->model = trim(substr($payload, 20, 40));
|
||||||
|
$m->version =trim(substr($payload, 60, 20));
|
||||||
|
$m->client_repeat_enabled = ord($payload[80]);
|
||||||
|
$m->path_hash_mode = ord($payload[81]);
|
||||||
|
|
||||||
return $info;
|
return $m;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param string $payload
|
||||||
|
* @return ChannelResponse
|
||||||
|
*/
|
||||||
public static function parseChannelInfoResponse(string $payload): ChannelResponse {
|
public static function parseChannelInfoResponse(string $payload): ChannelResponse {
|
||||||
$m = new ChannelResponse();
|
$m = new ChannelResponse();
|
||||||
|
|
||||||
@@ -438,21 +458,11 @@ class CoreParser {
|
|||||||
return $m;
|
return $m;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/**
|
||||||
public static function parseMessage(string $payload) {
|
*
|
||||||
$data = [
|
* @param mixed $str
|
||||||
'code'=>ord($payload[0]),
|
* @return null|string
|
||||||
'channel_idx'=>ord($payload[1]),
|
*/
|
||||||
'path_len'=>ord($payload[2]),
|
|
||||||
'type'=>ord($payload[3]),
|
|
||||||
'timestamp'=>date('r', unpack('V', substr($payload, 4, 4))[1]),
|
|
||||||
'message'=>substr($payload, 8, strlen($payload))
|
|
||||||
];
|
|
||||||
|
|
||||||
return $data;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
public static function readCstring($str) {
|
public static function readCstring($str) {
|
||||||
$x = strpos($str, "\0");
|
$x = strpos($str, "\0");
|
||||||
|
|
||||||
@@ -464,6 +474,11 @@ class CoreParser {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param string $pubkey
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
public static function formatPublicKey(string $pubkey): string {
|
public static function formatPublicKey(string $pubkey): string {
|
||||||
return bin2hex($pubkey);
|
return bin2hex($pubkey);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Menking\Meshcore\Model;
|
||||||
|
|
||||||
|
class CodeStatusTypeCoreResponse extends Response {
|
||||||
|
public int $code;
|
||||||
|
public int $battery_mv;
|
||||||
|
public int $uptime_secs;
|
||||||
|
public int $err_flags;
|
||||||
|
public int $queue_len;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Menking\Meshcore\Model;
|
||||||
|
|
||||||
|
class CodeStatusTypePacketResponse extends Response {
|
||||||
|
public int $code;
|
||||||
|
public int $recv;
|
||||||
|
public int $sent;
|
||||||
|
public int $n_sent_flood;
|
||||||
|
public int $n_sent_direct;
|
||||||
|
public int $n_recv_flood;
|
||||||
|
public int $n_recv_direct;
|
||||||
|
public int $n_recv_errors;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Menking\Meshcore\Model;
|
||||||
|
|
||||||
|
class CodeStatusTypeRadioResponse extends Response {
|
||||||
|
public int $code;
|
||||||
|
public int $noise_floor;
|
||||||
|
public int $last_rssi;
|
||||||
|
public int $last_snr;
|
||||||
|
public int $tx_air_secs;
|
||||||
|
public int $rx_air_secs;
|
||||||
|
}
|
||||||
|
|
||||||
Reference in New Issue
Block a user