added GPS

This commit is contained in:
2023-03-28 00:56:49 +02:00
parent 7fe52b1a8a
commit 4f8db600dc
3 changed files with 252 additions and 1 deletions

View File

@@ -1,5 +1,6 @@
package kernel.net;
import kernel.gps.GPS;
import haxe.ds.ReadOnlyArray;
import kernel.net.Package.NetworkID;
import kernel.peripherals.Peripherals.Peripheral;
@@ -9,7 +10,6 @@ import cc.OS;
using tink.CoreApi;
using Lambda;
using lib.Extender.LambdaExtender;
/**
Class responsible for everything network related.
@@ -82,6 +82,13 @@ class Net {
case RouteDiscover(_) | RouteDiscoverResponse(_) | RouteDiscoverUpdate(_):
// Delegate to Routing
Routing.instance.handleRoutePackage(pack,interf);
case GPSRequest | GPSResponse(_):
if (dist == null) {
Log.silly("Got a GPS package but no distance was provided");
return;
}
// Delegate to GPS
GPS.instance.handlePackage(pack,dist,interf);
}
}else{
// New message received but its not ment for us. Forward if possible.
@@ -260,4 +267,21 @@ class Net {
return arr;
}
@:allow(kernel.gps.GPS)
private function brodcastGPSRequest() {
var pack: Package = {
fromID: networkID,
toID: Net.BRODCAST_PORT,
ttl: 0, // Prevent forwarding
msgID: generateMessageID(),
type: GPSRequest,
data: null,
};
for (modem in Peripheral.instance.getModems()) {
if (!modem.isWireless()) continue;
modem.send(Net.BRODCAST_PORT, Net.instance.networkID, pack);
}
}
}