Monitor for multipackets
This commit is contained in:
parent
5759412f70
commit
690426eb69
@ -305,37 +305,58 @@ namespace RoboidControl {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void ReceiveData(byte[] data, Participant sender) {
|
public void ReceiveData(byte[] data, Participant sender) {
|
||||||
byte msgId = data[0];
|
int dataIx = 0;
|
||||||
|
byte msgId = data[dataIx];
|
||||||
if (msgId == 0xFF) {
|
if (msgId == 0xFF) {
|
||||||
// Timeout
|
// Timeout
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (msgId) {
|
switch (msgId) {
|
||||||
case ParticipantMsg.Id: // 0xA0 / 160
|
case ParticipantMsg.Id: { // 0xA0 / 160
|
||||||
this.Process(sender, new ParticipantMsg(data));
|
ParticipantMsg msg = new(data);
|
||||||
|
this.Process(sender, msg);
|
||||||
|
dataIx += ParticipantMsg.length;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case NetworkIdMsg.Id: // 0xA1 / 161
|
case NetworkIdMsg.Id: {// 0xA1 / 161
|
||||||
this.Process(sender, new NetworkIdMsg(data));
|
NetworkIdMsg msg = new(data);
|
||||||
|
this.Process(sender, msg);
|
||||||
|
dataIx += NetworkIdMsg.length;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case InvestigateMsg.Id: // 0x81
|
case InvestigateMsg.Id: // 0x81
|
||||||
// result = await InvestigateMsg.Receive(dataStream, client, packetSize);
|
// result = await InvestigateMsg.Receive(dataStream, client, packetSize);
|
||||||
break;
|
break;
|
||||||
case ThingMsg.id: // 0x80 / 128
|
case ThingMsg.id: { // 0x80 / 128
|
||||||
this.Process(sender, new ThingMsg(data));
|
ThingMsg msg = new(data);
|
||||||
|
this.Process(sender, msg);
|
||||||
|
dataIx += ThingMsg.length;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case NameMsg.Id: // 0x91 / 145
|
case NameMsg.Id: { // 0x91 / 145
|
||||||
this.Process(sender, new NameMsg(data));
|
NameMsg msg = new(data);
|
||||||
|
this.Process(sender, msg);
|
||||||
|
dataIx += NameMsg.length + msg.nameLength;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case ModelUrlMsg.Id: // 0x90 / 144
|
case ModelUrlMsg.Id: { // 0x90 / 144
|
||||||
this.Process(sender, new ModelUrlMsg(data));
|
ModelUrlMsg msg = new(data);
|
||||||
|
this.Process(sender, msg);
|
||||||
|
dataIx += ModelUrlMsg.length + msg.urlLength;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case PoseMsg.Id: // 0x10 / 16
|
case PoseMsg.Id: { // 0x10 / 16
|
||||||
this.Process(sender, new PoseMsg(data));
|
PoseMsg msg = new(data);
|
||||||
// result = await PoseMsg.Receive(dataStream, client, packetSize);
|
this.Process(sender, msg);
|
||||||
|
dataIx += msg.length;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case BinaryMsg.Id: // 0xB1 / 177
|
case BinaryMsg.Id: { // 0xB1 / 177
|
||||||
this.Process(sender, new BinaryMsg(data));
|
BinaryMsg msg = new(data);
|
||||||
|
this.Process(sender, msg);
|
||||||
|
dataIx += BinaryMsg.length + msg.dataLength;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case TextMsg.Id: // 0xB0 / 176
|
case TextMsg.Id: // 0xB0 / 176
|
||||||
// result = await TextMsg.Receive(dataStream, client, packetSize);
|
// result = await TextMsg.Receive(dataStream, client, packetSize);
|
||||||
@ -347,6 +368,8 @@ namespace RoboidControl {
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (dataIx < data.Length)
|
||||||
|
Console.WriteLine($"####### Buffer not fully read, remaining {data.Length - dataIx}");
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void Process(Participant sender, ParticipantMsg msg) {
|
protected virtual void Process(Participant sender, ParticipantMsg msg) {
|
||||||
@ -401,7 +424,7 @@ namespace RoboidControl {
|
|||||||
|
|
||||||
protected virtual void Process(Participant sender, PoseMsg msg) {
|
protected virtual void Process(Participant sender, PoseMsg msg) {
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
// Console.WriteLine($"{this.name}: Process PoseMsg [{msg.networkId}/{msg.thingId}] {msg.poseType}");
|
Console.WriteLine($"{this.name}: Process PoseMsg [{msg.networkId}/{msg.thingId}] {msg.poseType}");
|
||||||
#endif
|
#endif
|
||||||
Participant owner = Participant.GetParticipant(msg.networkId);
|
Participant owner = Participant.GetParticipant(msg.networkId);
|
||||||
if (owner == null)
|
if (owner == null)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user