get and send messages impl

This commit is contained in:
Ben Menking
2026-05-10 23:26:00 -04:00
parent 9eeb383ee4
commit 2201890975
5 changed files with 129 additions and 26 deletions
+30
View File
@@ -52,6 +52,14 @@ class CoreParser {
return self::parseCodeStatusResponse($payload);
case CoreProtocol::RESP_CODE_DEVICE_INFO:
return self::parseDeviceInfoResponse($payload);
case CoreProtocol::RESP_CODE_CHANNEL_INFO:
return self::parseChannelInfoResponse($payload);
case CoreProtocol::PUSH_CODE_MSG_WAITING:
return ['code'=>CoreProtocol::PUSH_CODE_MSG_WAITING];
case CoreProtocol::RESP_CODE_CONTACT_MSG_RECV_V3:
case CoreProtocol::RESP_CODE_CHANNEL_MSG_RECV_V3:
case CoreProtocol::RESP_CODE_CHANNEL_MSG_RECV:
return $payload;
default:
echo "Unparsed response: " . \Menking\Meshcore\Util\Debug::hexDump($payload) . "\n";
return $payload;
@@ -353,6 +361,17 @@ class CoreParser {
return $info;
}
public static function parseChannelInfoResponse(string $payload) {
$info = [
'code'=>ord($payload[0]),
'channel_idx'=>ord($payload[1]),
'channel_name'=>self::readCstring(substr($payload, 2, 32)),
'channel_secret'=>substr($payload, 34, 16)
];
return $info;
}
public static function parseMessage(string $payload) {
$data = [
'code'=>ord($payload[0]),
@@ -365,4 +384,15 @@ class CoreParser {
return $data;
}
public static function readCstring($str) {
$x = strpos($str, "\0");
if( $x === false ) {
return null;
}
else {
return trim(substr($str, 0, $x));
}
}
}