
aebe4c0 Arduino Ant now works. d3cb4c1 Merge commit 'fbeed8e80922152c3404fbd5d2b243ae95792ec1' into V2 fbeed8e Used Client override for processing messages 394dc22 Merge commit '355dd5c1c519cf07cfb6b9f9200f7f7311e68f20' into V2 355dd5c Fixed ThingMsg format becb194 Merge commit 'f35d60369daf41a4fcd987ef8b31bd384b9536ba' into V2 9b53eee Merge commit 'a48ae12fc2f6d4a99119c128e78bf4b103e607c3' into V2 f35d603 Further improvements a48ae12 ControlCore mostly works (but I don't see a model on the site server yet) d8fc41f First step for ControlCore support git-subtree-dir: Runtime/HumanoidControl/Scripts/Networking/Roboid/ControlCore git-subtree-split: aebe4c0f8e805259a5aea4a4cb6b72343d73257a
64 lines
2.6 KiB
C#
64 lines
2.6 KiB
C#
using System.IO;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Passer.Control {
|
|
|
|
public static class SiteServer {
|
|
public static async Task ReceiveData(Stream dataStream, Client client) {
|
|
while (true) {
|
|
byte packetSize = (byte)dataStream.ReadByte();
|
|
if (packetSize != 0xFF)
|
|
await ReceiveData(dataStream, client, packetSize);
|
|
// else timeout
|
|
}
|
|
}
|
|
|
|
public static async Task ReceiveData(Stream dataStream, Client client, byte packetSize) {
|
|
byte msgId = (byte)dataStream.ReadByte();
|
|
if (msgId == 0xFF) {
|
|
// Timeout
|
|
return;
|
|
}
|
|
|
|
bool result = false;
|
|
switch (msgId) {
|
|
case ClientMsg.Id: // 0xA0 / 160
|
|
result = await ClientMsg.Receive(dataStream, client, packetSize);
|
|
break;
|
|
case NetworkIdMsg.Id: // 0xA1 / 161
|
|
result = await NetworkIdMsg.Receive(dataStream, client, packetSize);
|
|
break;
|
|
case InvestigateMsg.Id: // 0x81
|
|
result = await InvestigateMsg.Receive(dataStream, client, packetSize);
|
|
break;
|
|
case ThingMsg.Id: // 0x80 / 128
|
|
result = await ThingMsg.Receive(dataStream, client, packetSize);
|
|
break;
|
|
case NameMsg.Id: // 0x91 / 145
|
|
result = await NameMsg.Receive(dataStream, client, packetSize);
|
|
break;
|
|
case ModelUrlMsg.Id: // 0x90 / 144
|
|
result = await ModelUrlMsg.Receive(dataStream, client, packetSize);
|
|
break;
|
|
case PoseMsg.Id: // 0x10 / 16
|
|
result = await PoseMsg.Receive(dataStream, client, packetSize);
|
|
break;
|
|
case CustomMsg.Id: // 0xB1 / 177
|
|
result = await CustomMsg.Receive(dataStream, client, packetSize);
|
|
break;
|
|
case TextMsg.Id: // 0xB0 / 176
|
|
result = await TextMsg.Receive(dataStream, client, packetSize);
|
|
break;
|
|
case DestroyMsg.Id: // 0x20 / 32
|
|
result = await DestroyMsg.Receive(dataStream, client, packetSize);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
if (result == false) {
|
|
packetSize = msgId; // skip 1 byte, msgId is possibly a packet size byte
|
|
await ReceiveData(dataStream, client, packetSize);
|
|
}
|
|
}
|
|
}
|
|
} |