Skip to content
Merged
Show file tree
Hide file tree
Changes from 19 commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
5b21e1d
add connExists()
crschardt Nov 10, 2024
9d233e9
add link-local and update dhcp conn each time its activated
crschardt Nov 10, 2024
73cc002
this works
crschardt Nov 11, 2024
0bcce11
Revert "add connExists()"
crschardt Nov 11, 2024
7a90692
remove out-of-place comment
crschardt Nov 11, 2024
0bf9d27
wpiformat
crschardt Nov 11, 2024
61bb886
Merge remote-tracking branch 'upstream/master' into enable-link-local…
crschardt Nov 11, 2024
729af7a
Merge branch 'master' into enable-link-local-with-dhcp
crschardt Nov 14, 2024
ae11b50
Merge branch 'master' into enable-link-local-with-dhcp
crschardt Dec 13, 2024
31668bf
Merge branch 'enable-link-local-with-dhcp' of https://github.com/crsc…
crschardt Dec 13, 2024
6f1d234
Merge branch 'main' into refined-network-management
crschardt Jan 1, 2025
e817bbb
refactor and improve interface monitoring
crschardt Jan 1, 2025
1e919a3
This class isn't used and shadows Java's NetworkInterface class
crschardt Jan 1, 2025
ab8aabe
Methods to find the IP address
crschardt Jan 1, 2025
e9479cb
also monitor the active connection
crschardt Jan 1, 2025
ae82062
don't log every time we check network
crschardt Jan 1, 2025
11cc601
show current IP address on settings page
crschardt Jan 2, 2025
53333d9
Merge remote-tracking branch 'upstream' into refined-network-management
crschardt Jan 2, 2025
96d4887
linting
crschardt Jan 2, 2025
0a9f8e1
set networkinIsDisabled when can't manage so it shows correctly in fr…
crschardt Jan 2, 2025
0e277cb
handle null or blank interface name
crschardt Jan 2, 2025
370fa95
Don't show IP address if not managing
crschardt Jan 2, 2025
a466fb1
spotless
crschardt Jan 2, 2025
c23fb21
overload executeBashCommand
crschardt Jan 2, 2025
fd3b1f2
correct javadoc comments
crschardt Jan 2, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,7 @@ const setSelectedVideoFormat = (format: VideoFormat) => {
<td>{{ value.verticalFOV !== undefined ? value.verticalFOV.toFixed(2) + "°" : "-" }}</td>
<td>{{ value.diagonalFOV !== undefined ? value.diagonalFOV.toFixed(2) + "°" : "-" }}</td>
<v-tooltip bottom>
<template v-slot:activator="{ on, attrs }">
<template #activator="{ on, attrs }">
<td v-bind="attrs" v-on="on" @click="setSelectedVideoFormat(value)">
<v-icon small class="mr-2">mdi-information</v-icon>
</td>
Expand Down
4 changes: 4 additions & 0 deletions photon-client/src/components/settings/MetricsCard.vue
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ const generalMetrics = computed<MetricItem[]>(() => [
header: "Platform",
value: useSettingsStore().general.hardwarePlatform || "Unknown"
},
{
header: "IP Address",
value: useSettingsStore().metrics.ipAddress || "Unknown"
},
{
header: "GPU Acceleration",
value: useSettingsStore().general.gpuAcceleration || "Unknown"
Expand Down
6 changes: 4 additions & 2 deletions photon-client/src/stores/settings/GeneralSettingsStore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,8 @@ export const useSettingsStore = defineStore("settings", {
cpuThr: undefined,
cpuUptime: undefined,
diskUtilPct: undefined,
npuUsage: undefined
npuUsage: undefined,
ipAddress: undefined
},
currentFieldLayout: {
field: {
Expand Down Expand Up @@ -95,7 +96,8 @@ export const useSettingsStore = defineStore("settings", {
cpuThr: data.cpuThr || undefined,
cpuUptime: data.cpuUptime || undefined,
diskUtilPct: data.diskUtilPct || undefined,
npuUsage: data.npuUsage || undefined
npuUsage: data.npuUsage || undefined,
ipAddress: data.ipAddress || undefined
};
},
updateGeneralSettingsFromWebsocket(data: WebsocketSettingsUpdate) {
Expand Down
1 change: 1 addition & 0 deletions photon-client/src/types/SettingTypes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ export interface MetricData {
cpuUptime?: string;
diskUtilPct?: string;
npuUsage?: string;
ipAddress?: string;
}

export enum NetworkConnectionType {
Expand Down
32 changes: 16 additions & 16 deletions photon-client/src/views/CameraMatchingView.vue
Original file line number Diff line number Diff line change
Expand Up @@ -167,11 +167,11 @@ const setCameraView = (camera: PVCameraInfo | null, showCurrent: boolean = false
<v-row>
<!-- Active modules -->
<v-col
v-for="(module, index) in activeVisionModules"
:key="`enabled-${module.uniqueName}`"
cols="12"
sm="6"
lg="4"
v-for="(module, index) in activeVisionModules"
:key="`enabled-${module.uniqueName}`"
>
<v-card dark color="primary">
<v-card-title>{{ module.nickname }}</v-card-title>
Expand Down Expand Up @@ -223,8 +223,8 @@ const setCameraView = (camera: PVCameraInfo | null, showCurrent: boolean = false
</tbody>
</v-simple-table>
<photon-camera-stream
class="mt-3"
id="output-camera-stream"
class="mt-3"
:camera-settings="module"
stream-type="Processed"
style="width: 100%; height: auto"
Expand All @@ -233,26 +233,26 @@ const setCameraView = (camera: PVCameraInfo | null, showCurrent: boolean = false
<v-card-text class="pt-0">
<v-row>
<v-col cols="12" md="4" class="pr-md-0 pb-0 pb-md-3">
<v-btn color="secondary" @click="setCameraView(module.matchedCameraInfo, true)" style="width: 100%">
<v-btn color="secondary" style="width: 100%" @click="setCameraView(module.matchedCameraInfo, true)">
<span>Details</span>
</v-btn>
</v-col>
<v-col cols="6" md="5" class="pr-0">
<v-btn
class="black--text"
@click="deactivateCamera(module.uniqueName)"
color="accent"
style="width: 100%"
@click="deactivateCamera(module.uniqueName)"
>
Deactivate
</v-btn>
</v-col>
<v-col cols="6" md="3">
<v-btn
class="black--text pa-0"
@click="deleteThisCamera(module.uniqueName)"
color="red"
style="width: 100%"
@click="deleteThisCamera(module.uniqueName)"
>
<v-icon>mdi-trash-can-outline</v-icon>
</v-btn>
Expand All @@ -263,7 +263,7 @@ const setCameraView = (camera: PVCameraInfo | null, showCurrent: boolean = false
</v-col>

<!-- Disabled modules -->
<v-col cols="12" sm="6" lg="4" v-for="module in disabledVisionModules" :key="`disabled-${module.uniqueName}`">
<v-col v-for="module in disabledVisionModules" :key="`disabled-${module.uniqueName}`" cols="12" sm="6" lg="4">
<v-card dark color="primary">
<v-card-title>{{ module.nickname }}</v-card-title>
<v-card-subtitle>Status: <span class="inactive-status">Deactivated</span></v-card-subtitle>
Expand Down Expand Up @@ -299,26 +299,26 @@ const setCameraView = (camera: PVCameraInfo | null, showCurrent: boolean = false
<v-card-text class="pt-0">
<v-row>
<v-col cols="12" md="4" class="pr-md-0 pb-0 pb-md-3">
<v-btn color="secondary" @click="setCameraView(module.matchedCameraInfo)" style="width: 100%">
<v-btn color="secondary" style="width: 100%" @click="setCameraView(module.matchedCameraInfo)">
<span>Details</span>
</v-btn>
</v-col>
<v-col cols="6" md="5" class="pr-0">
<v-btn
class="black--text"
@click="activateModule(module.uniqueName)"
color="accent"
style="width: 100%"
@click="activateModule(module.uniqueName)"
>
Activate
</v-btn>
</v-col>
<v-col cols="6" md="3">
<v-btn
class="black--text pa-0"
@click="deleteThisCamera(module.uniqueName)"
color="red"
style="width: 100%"
@click="deleteThisCamera(module.uniqueName)"
>
<v-icon>mdi-trash-can-outline</v-icon>
</v-btn>
Expand All @@ -329,7 +329,7 @@ const setCameraView = (camera: PVCameraInfo | null, showCurrent: boolean = false
</v-col>

<!-- Unassigned cameras -->
<v-col cols="12" sm="6" lg="4" v-for="(camera, index) in unmatchedCameras" :key="index">
<v-col v-for="(camera, index) in unmatchedCameras" :key="index" cols="12" sm="6" lg="4">
<v-card dark color="primary">
<v-card-title>
<span v-if="camera.PVUsbCameraInfo">USB Camera:</span>
Expand All @@ -345,12 +345,12 @@ const setCameraView = (camera: PVCameraInfo | null, showCurrent: boolean = false
<v-card-text class="pt-0">
<v-row>
<v-col cols="6" class="pr-0">
<v-btn color="secondary" @click="setCameraView(camera)" style="width: 100%">
<v-btn color="secondary" style="width: 100%" @click="setCameraView(camera)">
<span>Details</span>
</v-btn>
</v-col>
<v-col cols="6">
<v-btn class="black--text" @click="activateCamera(camera)" color="accent" style="width: 100%">
<v-btn class="black--text" color="accent" style="width: 100%" @click="activateCamera(camera)">
Activate
</v-btn>
</v-col>
Expand All @@ -377,7 +377,7 @@ const setCameraView = (camera: PVCameraInfo | null, showCurrent: boolean = false

<!-- Camera details modal -->
<v-dialog v-model="viewingDetails">
<v-card dark flat color="primary" v-if="viewingCamera !== null">
<v-card v-if="viewingCamera !== null" dark flat color="primary">
<v-card-title class="d-flex justify-space-between">
<span>{{ cameraInfoFor(viewingCamera)?.name ?? cameraInfoFor(viewingCamera)?.baseName }}</span>
<v-btn text @click="setCameraView(null)">
Expand All @@ -398,10 +398,10 @@ const setCameraView = (camera: PVCameraInfo | null, showCurrent: boolean = false
</v-banner>
<div v-if="showCurrentView">
<h3>Saved camera</h3>
<PvCameraInfoCard :camera="viewingCamera" :showTitle="false" />
<PvCameraInfoCard :camera="viewingCamera" :show-title="false" />
<br />
<h3>Current camera</h3>
<PvCameraInfoCard :camera="getMatchedDevice(viewingCamera)" :showTitle="false" />
<PvCameraInfoCard :camera="getMatchedDevice(viewingCamera)" :show-title="false" />
</div>
<div v-else>
<PvCameraInfoCard :camera="viewingCamera" />
Expand Down
4 changes: 2 additions & 2 deletions photon-client/src/views/DashboardView.vue
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,8 @@ const arducamWarningShown = computed<boolean>(() => {
<template>
<v-container class="pa-3" fluid>
<v-banner
v-model="arducamWarningShown"
v-if="arducamWarningShown"
v-model="arducamWarningShown"
rounded
color="red"
dark
Expand All @@ -86,7 +86,7 @@ const arducamWarningShown = computed<boolean>(() => {
<PipelineConfigCard />

<!-- TODO - not sure this belongs here -->
<v-dialog :persistent="false" v-model="warningShown" v-if="warningShown" max-width="800" dark>
<v-dialog v-if="warningShown" v-model="warningShown" :persistent="false" max-width="800" dark>
<v-card dark flat color="primary">
<v-card-title>Setup some cameras to get started!</v-card-title>
<v-card-text>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.HashMap;
import org.photonvision.common.configuration.ConfigManager;
import org.photonvision.common.configuration.HardwareConfig;
import org.photonvision.common.dataflow.DataChangeService;
import org.photonvision.common.dataflow.events.OutgoingUIEvent;
Expand All @@ -31,6 +32,7 @@
import org.photonvision.common.hardware.metrics.cmds.RK3588Cmds;
import org.photonvision.common.logging.LogGroup;
import org.photonvision.common.logging.Logger;
import org.photonvision.common.networking.NetworkUtils;
import org.photonvision.common.util.ShellExec;

public class MetricsManager {
Expand Down Expand Up @@ -119,6 +121,14 @@ public String getUsedRam() {
return safeExecute(cmds.ramUsageCommand);
}

public String getIpAddress() {
String dev = ConfigManager.getInstance().getConfig().getNetworkConfig().networkManagerIface;
logger.info("Requesting IP addresses for " + dev);
String addr = NetworkUtils.getIPAddresses(dev);
logger.info("Got value " + addr);
return addr;
}

public void publishMetrics() {
logger.debug("Publishing Metrics...");
final var metrics = new HashMap<String, String>();
Expand All @@ -133,6 +143,7 @@ public void publishMetrics() {
metrics.put("gpuMemUtil", this.getMallocedMemory());
metrics.put("diskUtilPct", this.getUsedDiskPct());
metrics.put("npuUsage", this.getNpuUsage());
metrics.put("ipAddress", this.getIpAddress());

DataChangeService.getInstance().publishEvent(OutgoingUIEvent.wrappedOf("metrics", metrics));
}
Expand Down

This file was deleted.

Loading