2025-08-15 09:32:33 +01:00
|
|
|
export type SightingType = {
|
2025-08-13 14:23:48 +01:00
|
|
|
ref: number;
|
|
|
|
|
SaFID: string;
|
|
|
|
|
overviewUrl: string;
|
|
|
|
|
plateUrlInfrared: string;
|
|
|
|
|
plateUrlColour: string;
|
|
|
|
|
vrm: string;
|
|
|
|
|
vrmSecondary: string;
|
|
|
|
|
countryCode: string;
|
|
|
|
|
timeStamp: string;
|
|
|
|
|
detailsUrl: string;
|
2025-09-16 14:20:38 +01:00
|
|
|
overviewPlateRect?: [number, number, number, number];
|
|
|
|
|
plateTrack?: [number, number, number, number][];
|
2025-08-13 14:23:48 +01:00
|
|
|
make: string;
|
|
|
|
|
model: string;
|
|
|
|
|
color: string;
|
|
|
|
|
category: string;
|
|
|
|
|
charHeight: string;
|
|
|
|
|
seenCount: string;
|
|
|
|
|
timeStampMillis: number;
|
|
|
|
|
motion: string;
|
|
|
|
|
debug: string;
|
|
|
|
|
srcCam: number;
|
|
|
|
|
locationName: string;
|
|
|
|
|
laneID: string;
|
|
|
|
|
plateSize: string;
|
|
|
|
|
overviewSize: string;
|
|
|
|
|
radarSpeed: string;
|
|
|
|
|
trackSpeed: string;
|
2025-09-16 11:07:35 +01:00
|
|
|
metadata?: Metadata;
|
2025-08-13 14:23:48 +01:00
|
|
|
};
|
2025-08-15 09:32:33 +01:00
|
|
|
|
2025-10-08 15:46:54 +01:00
|
|
|
export type ReducedSightingType = {
|
|
|
|
|
vrm: string;
|
|
|
|
|
metadata?: Metadata;
|
|
|
|
|
};
|
|
|
|
|
|
2025-08-15 09:32:33 +01:00
|
|
|
export type CameraSettingValues = {
|
|
|
|
|
friendlyName: string;
|
|
|
|
|
cameraAddress: string;
|
|
|
|
|
userName: string;
|
|
|
|
|
password: string;
|
2025-09-16 11:07:35 +01:00
|
|
|
id: number | string;
|
2025-08-15 09:32:33 +01:00
|
|
|
};
|
|
|
|
|
|
2025-10-17 10:17:01 +01:00
|
|
|
export type CameraSettingErrorValues = Partial<Record<keyof CameraSettingValues, string>>;
|
2025-08-18 12:53:30 +01:00
|
|
|
|
|
|
|
|
export type BearerTypeFieldType = {
|
|
|
|
|
format: string;
|
|
|
|
|
enabled: boolean;
|
|
|
|
|
verbose: boolean;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export type InitialValuesForm = {
|
|
|
|
|
backOfficeURL: string;
|
|
|
|
|
username: string;
|
|
|
|
|
password: string;
|
|
|
|
|
connectTimeoutSeconds: number;
|
|
|
|
|
readTimeoutSeconds: number;
|
|
|
|
|
};
|
2025-08-18 16:04:03 +01:00
|
|
|
|
2025-10-07 14:00:58 +01:00
|
|
|
export type InitialValuesFormErrors = {
|
|
|
|
|
backOfficeURL?: string;
|
|
|
|
|
username?: string;
|
|
|
|
|
password?: string;
|
|
|
|
|
connectTimeoutSeconds?: string;
|
|
|
|
|
readTimeoutSeconds?: string;
|
|
|
|
|
};
|
|
|
|
|
|
2025-08-18 16:04:03 +01:00
|
|
|
export type NPEDFieldType = {
|
2025-08-29 10:07:59 +01:00
|
|
|
frontId: string;
|
2025-09-17 11:39:26 +01:00
|
|
|
username: string | undefined;
|
|
|
|
|
password: string | undefined;
|
|
|
|
|
clientId: string | undefined;
|
2025-08-29 10:07:59 +01:00
|
|
|
rearId: string;
|
2025-08-18 16:04:03 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export type HotlistUploadType = {
|
2025-09-17 11:39:26 +01:00
|
|
|
file: File | null;
|
2025-08-18 16:04:03 +01:00
|
|
|
};
|
2025-08-20 08:27:05 +01:00
|
|
|
|
2025-09-09 15:57:35 +01:00
|
|
|
export type VersionFieldType = {
|
|
|
|
|
version: string;
|
|
|
|
|
revision: string;
|
|
|
|
|
buildtime: string;
|
|
|
|
|
MAC: string;
|
|
|
|
|
timeStamp: number;
|
|
|
|
|
UUID: string;
|
|
|
|
|
"Serial No.": string;
|
|
|
|
|
"Model No.": string;
|
|
|
|
|
};
|
|
|
|
|
|
2025-08-29 14:55:37 +01:00
|
|
|
export type Metadata = {
|
|
|
|
|
npedJSON: NpedJSON;
|
|
|
|
|
"hotlist-matches": HotlistMatches;
|
2025-09-19 10:09:14 +01:00
|
|
|
hotlistMatches: HotlistMatches;
|
2025-08-29 14:55:37 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export type HotlistMatches = {
|
|
|
|
|
Hotlist0: boolean;
|
|
|
|
|
Hotlist1: boolean;
|
|
|
|
|
Hotlist2: boolean;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export type NpedJSON = {
|
|
|
|
|
status_code: number;
|
|
|
|
|
reason_phrase: string;
|
2025-09-22 09:26:45 +01:00
|
|
|
"NPED CATEGORY": "A" | "B" | "C" | "D";
|
2025-10-08 15:46:54 +01:00
|
|
|
"MOT STATUS": boolean;
|
|
|
|
|
"TAX STATUS": boolean;
|
|
|
|
|
vrm: string;
|
|
|
|
|
"INSURANCE STATUS": string;
|
2025-08-20 08:27:05 +01:00
|
|
|
};
|
2025-08-29 10:07:59 +01:00
|
|
|
|
|
|
|
|
export type NPEDUser = {
|
2025-09-17 11:39:26 +01:00
|
|
|
propUsername?: Prop;
|
|
|
|
|
propClientID?: Prop;
|
|
|
|
|
propPassword?: Prop;
|
2025-08-29 10:07:59 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export type NPEDErrorValues = {
|
|
|
|
|
username?: string | undefined;
|
|
|
|
|
password?: string | undefined;
|
|
|
|
|
clientId?: string | undefined;
|
|
|
|
|
};
|
2025-08-29 14:55:37 +01:00
|
|
|
|
|
|
|
|
export type NPEDCameraConfig = {
|
|
|
|
|
id: string;
|
|
|
|
|
configHash: string;
|
|
|
|
|
propEnabled: Prop;
|
|
|
|
|
propUsername: Prop;
|
|
|
|
|
propPassword: Prop;
|
|
|
|
|
propClientID: Prop;
|
|
|
|
|
propConnectTimeoutSeconds: Prop;
|
|
|
|
|
propReadTimeoutSeconds: Prop;
|
|
|
|
|
propNPEDAuthTokenURL: Prop;
|
|
|
|
|
propNPEDLookupURL: Prop;
|
|
|
|
|
propVerbose: Prop;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export interface Prop {
|
|
|
|
|
value: string;
|
|
|
|
|
datatype: string;
|
|
|
|
|
}
|
2025-09-12 13:28:14 +01:00
|
|
|
|
|
|
|
|
export type SystemValues = {
|
|
|
|
|
deviceName: string;
|
|
|
|
|
sntpServer: string;
|
|
|
|
|
sntpInterval: number;
|
|
|
|
|
timeZone: string;
|
|
|
|
|
softwareUpdate?: File | null;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export type SystemValuesErrors = {
|
|
|
|
|
deviceName?: string | undefined;
|
|
|
|
|
sntpServer?: string | undefined;
|
|
|
|
|
sntpInterval?: string | undefined;
|
|
|
|
|
timeZone?: string | undefined;
|
|
|
|
|
softwareUpdate?: File | null;
|
|
|
|
|
};
|
2025-09-16 11:07:35 +01:00
|
|
|
|
|
|
|
|
export type AlertState = {
|
|
|
|
|
alertList: SightingType[];
|
|
|
|
|
allAlerts: SightingType[];
|
|
|
|
|
};
|
|
|
|
|
|
2025-09-16 14:20:38 +01:00
|
|
|
export type AlertPayload =
|
|
|
|
|
| {
|
|
|
|
|
payload: SightingType;
|
|
|
|
|
type: "ADD";
|
|
|
|
|
}
|
|
|
|
|
| {
|
|
|
|
|
payload: string;
|
|
|
|
|
type: "SEARCH";
|
2025-09-23 16:02:14 +01:00
|
|
|
}
|
|
|
|
|
| {
|
|
|
|
|
type: "REMOVE";
|
|
|
|
|
payload: SightingType;
|
2025-09-24 12:28:14 +01:00
|
|
|
}
|
|
|
|
|
| {
|
|
|
|
|
type: "DELETE";
|
|
|
|
|
payload: [];
|
2025-09-16 14:20:38 +01:00
|
|
|
};
|
2025-09-16 11:07:35 +01:00
|
|
|
|
|
|
|
|
export type ActionType = {
|
|
|
|
|
payload: SightingType | string;
|
|
|
|
|
type: string;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export type CameraConfig = {
|
|
|
|
|
id: string;
|
|
|
|
|
configHash: string;
|
|
|
|
|
propURI: {
|
|
|
|
|
value: string;
|
|
|
|
|
datatype: "java.lang.String";
|
|
|
|
|
};
|
|
|
|
|
propMonochrome: {
|
|
|
|
|
value: string; // "true" or "false" as string
|
|
|
|
|
datatype: "boolean";
|
|
|
|
|
};
|
|
|
|
|
propControlProtocol: {
|
|
|
|
|
value: "NONE" | "VISCA_KTNC" | "VISCA_WONWOO" | "DUMMY";
|
|
|
|
|
datatype: "mav.cameracontrol.CameraController$CameraControlProtocol";
|
|
|
|
|
accepted: "[NONE, VISCA_KTNC, VISCA_WONWOO, DUMMY]";
|
|
|
|
|
};
|
|
|
|
|
propAllowControlProtocolInference: {
|
|
|
|
|
value: string;
|
|
|
|
|
datatype: "boolean";
|
|
|
|
|
};
|
|
|
|
|
propCameraControlDeviceURI: {
|
|
|
|
|
value: string;
|
|
|
|
|
datatype: "java.lang.String";
|
|
|
|
|
};
|
|
|
|
|
propCameraControllerBaudRate: {
|
|
|
|
|
value: string; // "115200" as string
|
|
|
|
|
datatype: "int";
|
|
|
|
|
};
|
|
|
|
|
propLEDControllerType: {
|
|
|
|
|
value: "None" | "Serial" | "I2C";
|
|
|
|
|
datatype: "mav.flexi.modules.originators.video.LEDController$InterfaceType";
|
|
|
|
|
accepted: "[None, Serial, I2C]";
|
|
|
|
|
};
|
|
|
|
|
propLEDDriverControlURI: {
|
|
|
|
|
value: string;
|
|
|
|
|
datatype: "java.lang.String";
|
|
|
|
|
};
|
|
|
|
|
propSourceIdentifier: {
|
|
|
|
|
value: string;
|
|
|
|
|
datatype: "java.lang.String";
|
|
|
|
|
};
|
|
|
|
|
propI2CLEDDriverSafeHex: {
|
|
|
|
|
value: string;
|
|
|
|
|
datatype: "java.lang.String";
|
|
|
|
|
};
|
|
|
|
|
propI2CLEDDriverLowHex: {
|
|
|
|
|
value: string;
|
|
|
|
|
datatype: "java.lang.String";
|
|
|
|
|
};
|
|
|
|
|
propI2CLEDDriverMidHex: {
|
|
|
|
|
value: string;
|
|
|
|
|
datatype: "java.lang.String";
|
|
|
|
|
};
|
|
|
|
|
propI2CLEDDriverHighHex: {
|
|
|
|
|
value: string;
|
|
|
|
|
datatype: "java.lang.String";
|
|
|
|
|
};
|
|
|
|
|
propRecordCameraControllerLogs: {
|
|
|
|
|
value: string;
|
|
|
|
|
datatype: "boolean";
|
|
|
|
|
};
|
|
|
|
|
propVideoFeedWatchdogEnabled: {
|
|
|
|
|
value: string;
|
|
|
|
|
datatype: "boolean";
|
|
|
|
|
};
|
|
|
|
|
};
|
2025-09-24 12:28:14 +01:00
|
|
|
|
|
|
|
|
export type CameraBlackBoardOptions = {
|
|
|
|
|
operation?: string;
|
|
|
|
|
path?: string;
|
|
|
|
|
value?: object | string | number | (string | number)[];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export type CameraBlackboardResponse = {
|
|
|
|
|
data: object;
|
|
|
|
|
};
|
2025-09-29 15:21:22 +01:00
|
|
|
|
|
|
|
|
export type ZoomLevel = {
|
|
|
|
|
left: number;
|
|
|
|
|
top: number;
|
|
|
|
|
x: number;
|
|
|
|
|
y: number;
|
|
|
|
|
px: number;
|
|
|
|
|
py: number;
|
|
|
|
|
level?: number;
|
|
|
|
|
};
|
2025-09-30 13:25:11 +01:00
|
|
|
|
|
|
|
|
export type SoundValue = string;
|
|
|
|
|
|
|
|
|
|
export type Hotlist = {
|
|
|
|
|
name: string;
|
|
|
|
|
sound: SoundValue;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export type FormValues = {
|
|
|
|
|
sightingSound: SoundValue;
|
|
|
|
|
NPEDsound: SoundValue;
|
|
|
|
|
hotlists: Hotlist[];
|
2025-10-20 11:32:45 +01:00
|
|
|
hotlistSound: SoundValue;
|
2025-10-21 12:52:14 +01:00
|
|
|
soundOptions?: SoundUploadValue[];
|
2025-09-30 13:25:11 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export type SoundUploadValue = {
|
2025-10-01 15:21:07 +01:00
|
|
|
name: string;
|
2025-10-20 11:32:45 +01:00
|
|
|
soundFileName?: string;
|
|
|
|
|
soundFile?: File | null;
|
2025-10-20 16:17:37 +01:00
|
|
|
soundUrl?: string;
|
2025-09-30 13:25:11 +01:00
|
|
|
};
|
2025-09-30 14:51:37 +01:00
|
|
|
|
|
|
|
|
export type SoundState = {
|
|
|
|
|
sightingSound: SoundValue;
|
|
|
|
|
NPEDsound: SoundValue;
|
|
|
|
|
hotlists: Hotlist[];
|
2025-10-20 11:32:45 +01:00
|
|
|
hotlistSound: SoundValue;
|
2025-10-01 15:21:07 +01:00
|
|
|
soundOptions?: SoundUploadValue[];
|
2025-10-17 16:12:02 +01:00
|
|
|
sightingVolume: number;
|
|
|
|
|
NPEDsoundVolume: number;
|
|
|
|
|
hotlistSoundVolume: number;
|
2025-10-28 08:50:55 +00:00
|
|
|
uploadedSound?: Blob | null;
|
2025-09-30 14:51:37 +01:00
|
|
|
};
|
|
|
|
|
|
2025-10-01 15:21:07 +01:00
|
|
|
type UpdateAction = {
|
|
|
|
|
type: "UPDATE";
|
|
|
|
|
payload: {
|
|
|
|
|
sightingSound: SoundValue;
|
|
|
|
|
NPEDsound: SoundValue;
|
|
|
|
|
hotlists: Hotlist[];
|
2025-10-20 09:11:05 +01:00
|
|
|
sightingVolume: number;
|
|
|
|
|
NPEDsoundVolume: number;
|
2025-10-20 11:32:45 +01:00
|
|
|
hotlistSoundVolume: number;
|
|
|
|
|
hotlistSound: SoundValue;
|
2025-10-21 12:52:14 +01:00
|
|
|
soundOptions?: SoundUploadValue[];
|
2025-10-01 15:21:07 +01:00
|
|
|
};
|
2025-09-30 14:51:37 +01:00
|
|
|
};
|
2025-10-01 15:21:07 +01:00
|
|
|
|
|
|
|
|
type AddAction = {
|
|
|
|
|
type: "ADD";
|
|
|
|
|
payload: SoundUploadValue;
|
|
|
|
|
};
|
|
|
|
|
|
2025-10-17 16:12:02 +01:00
|
|
|
type VolumeAction = {
|
|
|
|
|
type: "SIGHTINGVOLUME" | "NPEDVOLUME" | "HOTLISTVOLUME";
|
|
|
|
|
payload: number;
|
|
|
|
|
};
|
|
|
|
|
|
2025-10-28 08:50:55 +00:00
|
|
|
type UploadedState = {
|
|
|
|
|
type: "UPLOADEDSOUND";
|
|
|
|
|
payload: Blob | undefined;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export type SoundAction = UpdateAction | AddAction | VolumeAction | UploadedState;
|
2025-10-02 22:53:38 +01:00
|
|
|
export type WifiSettingValues = {
|
|
|
|
|
ssid: string;
|
|
|
|
|
password: string;
|
|
|
|
|
encryption: string;
|
|
|
|
|
};
|
2025-10-03 10:19:49 +01:00
|
|
|
export type ModemConfigPayload = {
|
|
|
|
|
property: string;
|
|
|
|
|
value: string;
|
|
|
|
|
};
|
|
|
|
|
export type WifiConfigPayload = {
|
|
|
|
|
property: string;
|
|
|
|
|
value: string;
|
|
|
|
|
};
|
2025-10-02 22:53:38 +01:00
|
|
|
|
|
|
|
|
export type WifiConfig = {
|
|
|
|
|
id: string;
|
2025-10-03 10:19:49 +01:00
|
|
|
fields: WifiConfigPayload[];
|
2025-10-02 22:53:38 +01:00
|
|
|
};
|
2025-10-03 10:19:49 +01:00
|
|
|
|
|
|
|
|
export type ModemConfig = {
|
|
|
|
|
id: string;
|
|
|
|
|
fields: ModemConfigPayload[];
|
|
|
|
|
};
|
|
|
|
|
|
2025-10-01 10:59:10 +01:00
|
|
|
export type ZoomInOptions = {
|
|
|
|
|
camera: string;
|
|
|
|
|
multiplier: number;
|
|
|
|
|
};
|
2025-10-02 16:07:05 +01:00
|
|
|
|
|
|
|
|
export type zoomConfig = {
|
|
|
|
|
camera: string;
|
|
|
|
|
};
|
2025-10-03 10:19:49 +01:00
|
|
|
|
|
|
|
|
export type ModemSettingsType = {
|
|
|
|
|
apn: string;
|
|
|
|
|
username: string;
|
|
|
|
|
password: string;
|
|
|
|
|
authenticationType: string;
|
|
|
|
|
};
|
2025-10-24 10:49:04 +01:00
|
|
|
|
|
|
|
|
export type HitKind = "NPED" | "HOTLIST";
|
|
|
|
|
|
|
|
|
|
export type QueuedHit = {
|
|
|
|
|
id: number | string;
|
|
|
|
|
sighting: SightingType;
|
|
|
|
|
kind: HitKind;
|
|
|
|
|
};
|
2025-10-27 08:28:44 +00:00
|
|
|
|
|
|
|
|
export type DedupedSightings = ReducedSightingType[];
|
|
|
|
|
|
|
|
|
|
export type NPEDSTATE = {
|
|
|
|
|
sessionStarted: boolean;
|
|
|
|
|
sessionList: ReducedSightingType[];
|
|
|
|
|
sessionPaused: boolean;
|
|
|
|
|
savedSightings: DedupedSightings;
|
2025-10-27 09:35:59 +00:00
|
|
|
npedUser: NPEDUser;
|
2025-10-27 08:28:44 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export type NPEDACTION = {
|
|
|
|
|
type: string;
|
|
|
|
|
payload: any;
|
|
|
|
|
};
|