Skip to content

Commit 600bb45

Browse files
authored
Merge pull request #374 from HyperloopUPV-H8/develop
v2.3.2.11
2 parents 78c1951 + dba1e97 commit 600bb45

16 files changed

Lines changed: 111 additions & 40 deletions

File tree

common-front/lib/components/MessagesContainer/Messages/MessageView/Counter/Counter.module.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,6 @@
88
font-size: 0.7rem;
99
line-height: 90%;
1010

11-
color: white;
11+
color: #333333; // Dark text color for better contrast on light background
1212
background-color: var(--light-color);
1313
}

common-front/lib/components/MessagesContainer/Messages/MessageView/InfoMessageView/InfoMessageView.module.scss

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,5 @@
1515

1616
.payload {
1717
font-size: 0.7rem;
18+
color: #333333; // Dark text color for better contrast
1819
}

common-front/lib/components/MessagesContainer/Messages/MessageView/MessageView.module.scss

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
border-radius: 0.5rem;
3232
filter: (--shadow);
3333
font-size: 0.8rem;
34+
color: #333333; // Dark text color for better contrast
3435
}
3536

3637
.icon {

common-front/lib/components/MessagesContainer/Messages/MessageView/ProtectionMessageView/ProtectionView/ProtectionView.module.scss

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@
44
column-gap: 1rem;
55
font-size: 0.8rem;
66
row-gap: 0.5rem;
7+
color: #333333; // Dark text color for better contrast
78
}

control-station/src/components/EnumIndicator/EnumIndicator.tsx

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useGlobalTicker, useMeasurementsStore } from "common";
1+
import { useGlobalTicker, useMeasurementsStore, usePodDataStore } from "common";
22
import styles from "./EnumIndicator.module.scss";
33
import { memo, useContext, useState } from "react";
44
import { LostConnectionContext } from "services/connections";
@@ -13,15 +13,29 @@ export const EnumIndicator = memo(({ measurementId, icon }: Props) => {
1313
(state) => state.getEnumMeasurementInfo(measurementId).getUpdate,
1414
);
1515

16+
const podData = usePodDataStore((state) => state.podData);
1617
const lostConnection = useContext(LostConnectionContext);
1718

19+
const [hasReceivedData, setHasReceivedData] = useState(false);
1820
const [variant, setVariant] = useState(getValue());
19-
const state = lostConnection ? "DISCONNECTED" : variant;
2021

2122
useGlobalTicker(() => {
22-
setVariant(getValue());
23+
const boardName = measurementId.split('/')[0];
24+
25+
const board = podData.boards.find(b => b.name === boardName);
26+
const hasReceivedPackets = board?.packets.some(packet => packet.count > 0) || false;
27+
28+
const currentValue = getValue();
29+
setVariant(currentValue);
30+
31+
if (hasReceivedPackets && !hasReceivedData) {
32+
setHasReceivedData(true);
33+
}
2334
});
2435

36+
const showDisconnected = lostConnection || !hasReceivedData;
37+
const state = showDisconnected ? "DISCONNECTED" : variant;
38+
2539
return (
2640
<div
2741
className={styles.enum_indicator}
@@ -32,7 +46,7 @@ export const EnumIndicator = memo(({ measurementId, icon }: Props) => {
3246
>
3347
<img className={styles.icon} src={icon} />
3448

35-
<p className={styles.title}>{lostConnection ? "DISCONNECTED" : state.toUpperCase()}</p>
49+
<p className={styles.title}>{showDisconnected ? "DISCONNECTED" : state.toUpperCase()}</p>
3650

3751
<img className={styles.icon} src={icon} />
3852
</div>

control-station/src/components/EnumIndicator/VehicleState.tsx

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useGlobalTicker, useMeasurementsStore, VcuMeasurements } from 'common';
1+
import { useGlobalTicker, useMeasurementsStore, VcuMeasurements, usePodDataStore } from 'common';
22
import styles from './EnumIndicator.module.scss';
33
import { useContext, useState } from 'react';
44
import { LostConnectionContext } from 'services/connections';
@@ -12,19 +12,33 @@ export const VehicleState = () => {
1212
(state) => state.getEnumMeasurementInfo(VcuMeasurements.operationalState).getUpdate
1313
);
1414

15+
const podData = usePodDataStore((state) => state.podData);
1516
const lostConnection = useContext(LostConnectionContext);
1617

17-
const [generalState, setGeneralState] = useState(generalStateMeasurement);
18-
const [operationalState, setOperationalState] = useState(operationalStateMeasurement);
19-
const state = lostConnection
20-
? 'DISCONNECTED'
21-
: (generalState == 'OPERATIONAL') ? operationalState : generalState;
18+
const [hasReceivedData, setHasReceivedData] = useState(false);
19+
const [generalState, setGeneralState] = useState('FAULT');
20+
const [operationalState, setOperationalState] = useState('FAULT');
2221

2322
useGlobalTicker(() => {
24-
setGeneralState(generalStateMeasurement);
25-
setOperationalState(operationalStateMeasurement);
23+
const vcuBoard = podData.boards.find(board => board.name === 'VCU');
24+
const hasReceivedPackets = vcuBoard?.packets.some(packet => packet.count > 0) || false;
25+
26+
const currentGeneralState = generalStateMeasurement();
27+
const currentOperationalState = operationalStateMeasurement();
28+
setGeneralState(currentGeneralState);
29+
setOperationalState(currentOperationalState);
30+
31+
if (hasReceivedPackets && !hasReceivedData) {
32+
setHasReceivedData(true);
33+
}
2634
});
2735

36+
const showDisconnected = lostConnection || !hasReceivedData;
37+
38+
const state = showDisconnected
39+
? 'DISCONNECTED'
40+
: (generalState == 'OPERATIONAL') ? operationalState : generalState;
41+
2842
return (
2943
<div
3044
className={styles.enum_indicator}

control-station/src/components/ImdIndicator/ImdIndicator.tsx

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,43 @@
1-
import { HvscuMeasurements, useGlobalTicker, useMeasurementsStore } from 'common';
1+
import { HvscuMeasurements, useGlobalTicker, useMeasurementsStore, usePodDataStore, getPacket } from 'common';
22
import styles from './ImdIndicator.module.scss';
33
import thunderIcon from 'assets/svg/thunder-filled.svg'
44
import { memo, useContext, useState } from 'react';
55
import { LostConnectionContext } from 'services/connections';
66

7-
interface Props {
8-
measurementId: string;
9-
icon: string;
10-
}
11-
127
export const ImdIndicator = () => {
138
const getValue = useMeasurementsStore(
149
(state) => state.getBooleanMeasurementInfo(HvscuMeasurements.IsImdOk).getUpdate
1510
);
1611

12+
const podData = usePodDataStore((state) => state.podData);
1713
const lostConnection = useContext(LostConnectionContext);
1814

19-
const [IsImdOk, setVariant] = useState(getValue());
15+
const [hasReceivedData, setHasReceivedData] = useState(false);
16+
const [IsImdOk, setVariant] = useState(true);
2017

2118
useGlobalTicker(() => {
22-
setVariant(getValue());
19+
const hvscuBoard = podData.boards.find(board => board.name === 'HVSCU');
20+
const hasReceivedPackets = hvscuBoard?.packets.some(packet => packet.count > 0) || false;
21+
22+
const currentValue = getValue();
23+
setVariant(currentValue);
24+
25+
if (hasReceivedPackets && !hasReceivedData) {
26+
setHasReceivedData(true);
27+
}
2328
});
2429

30+
const showDisconnected = lostConnection || !hasReceivedData;
31+
2532
return (
2633
<div
2734
className={styles.state_indicator}
28-
style={{ backgroundColor: lostConnection ? '#cccccc' : IsImdOk ? '#ACF293' : '#EF9A87' }}
35+
style={{ backgroundColor: showDisconnected ? '#cccccc' : IsImdOk ? '#ACF293' : '#EF9A87' }}
2936
>
3037
<img className={styles.icon} src={thunderIcon} />
3138

3239
<p className={styles.title}>
33-
{lostConnection ? 'DISCONNECTED' : IsImdOk ? 'ISOLATED' : 'ISOLATION FAULT'}
40+
{showDisconnected ? 'DISCONNECTED' : IsImdOk ? 'ISOLATED' : 'ISOLATION FAULT'}
3441
</p>
3542

3643
<img className={styles.icon} src={thunderIcon} />

control-station/src/pages/VehiclePage/BoosterPage/BoosterPage.module.scss

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@
2525
height: 100%;
2626
}
2727

28+
.emergency_wrapper {
29+
justify-content: center;
30+
min-height: 0;
31+
height: 3rem;
32+
}
2833
.statusIndicators {
2934
display: grid;
3035
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));

control-station/src/pages/VehiclePage/BoosterPage/BoosterPage.tsx

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import {
1515
} from "common";
1616
import { OrdersContainer } from "components/OrdersContainer/OrdersContainer";
1717
import { Window } from "components/Window/Window";
18-
import { getHardcodedOrders } from "../BatteriesPage/FixedOrders";
18+
import { emergencyStopOrders, getHardcodedOrders } from "../BatteriesPage/FixedOrders";
1919
import { usePodDataUpdate } from "hooks/usePodDataUpdate";
2020
import { Connection, useConnections } from "common";
2121
import { LostConnectionContext } from "services/connections";
@@ -26,6 +26,7 @@ import thunder from "assets/svg/thunder-filled.svg";
2626
import thermometer from "assets/svg/thermometer-field.svg";
2727
import Contactors from "assets/svg/open-contactors-icon.svg";
2828
import teamLogo from "assets/svg/team_logo.svg";
29+
import { BigOrderButton } from "components/BigOrderButton";
2930

3031
interface ModuleData {
3132
id: number | string;
@@ -153,6 +154,15 @@ export function BoosterPage() {
153154
<Window title="Messages" className={styles.messages}>
154155
<MessagesContainer />
155156
</Window>
157+
<div className={styles.emergency_wrapper}>
158+
<BigOrderButton
159+
orders={emergencyStopOrders}
160+
label="⚠️ EMERGENCY STOP"
161+
shortcut=" "
162+
className={`${styles.emergency_button} ${styles.emergency_stop}`}
163+
brightness={3}
164+
/>
165+
</div>
156166
<Window title="Orders" className={styles.orders}>
157167
<div className={styles.order_column}>
158168
<OrdersContainer

control-station/src/pages/VehiclePage/MainPage/MainPage.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ export const MainPage = () => {
5050
<HVSCU />
5151
<LCU />
5252
</div>
53-
<Pneumatic/>
53+
{/* <Pneumatic/> */}
5454

5555
<Batteries/>
5656

0 commit comments

Comments
 (0)