add counter 0..2 for short pulses, high frequency, #2758

This commit is contained in:
MichaelDvP
2025-11-26 18:14:58 +01:00
parent 9edcf47073
commit 2bcd548747
7 changed files with 120 additions and 40 deletions

View File

@@ -586,6 +586,7 @@ const Sensors = () => {
creating={creating}
selectedItem={selectedAnalogSensor}
analogGPIOList={sensorData.available_gpios}
disabledTypeList={sensorData.exclude_types}
validator={analogSensorItemValidation(sensorData.as, selectedAnalogSensor)}
/>
)}

View File

@@ -35,6 +35,7 @@ interface DashboardSensorsAnalogDialogProps {
creating: boolean;
selectedItem: AnalogSensor;
analogGPIOList: number[];
disabledTypeList: number[];
validator: Schema;
}
@@ -45,6 +46,7 @@ const SensorsAnalogDialog = ({
creating,
selectedItem,
analogGPIOList,
disabledTypeList,
validator
}: DashboardSensorsAnalogDialogProps) => {
const { LL } = useI18nContext();
@@ -66,7 +68,16 @@ const SensorsAnalogDialog = ({
// Memoize helper functions to check sensor type conditions
const isCounterOrRate = useMemo(
() => editItem.t >= AnalogType.COUNTER && editItem.t <= AnalogType.RATE,
() =>
editItem.t === AnalogType.COUNTER ||
editItem.t === AnalogType.RATE ||
(editItem.t >= AnalogType.CNT_0 && editItem.t <= AnalogType.CNT_2),
[editItem.t]
);
const isCounter = useMemo(
() =>
editItem.t === AnalogType.COUNTER ||
(editItem.t >= AnalogType.CNT_0 && editItem.t <= AnalogType.CNT_2),
[editItem.t]
);
const isFreqType = useMemo(
@@ -80,13 +91,13 @@ const SensorsAnalogDialog = ({
editItem.t === AnalogType.PWM_2,
[editItem.t]
);
const isDigitalOutGPIO = useMemo(
const isDACOutGPIO = useMemo(
() =>
editItem.t === AnalogType.DIGITAL_OUT &&
(editItem.g === 25 || editItem.g === 26),
[editItem.t, editItem.g]
);
const isDigitalOutNonGPIO = useMemo(
const isDigitalOutGPIO = useMemo(
() =>
editItem.t === AnalogType.DIGITAL_OUT &&
editItem.g !== 25 &&
@@ -98,7 +109,11 @@ const SensorsAnalogDialog = ({
const analogTypeMenuItems = useMemo(
() =>
AnalogTypeNames.map((val, i) => (
<MenuItem key={val} value={i + 1}>
<MenuItem
key={val}
value={i + 1}
disabled={disabledTypeList.includes(i + 1)}
>
{val}
</MenuItem>
)),
@@ -264,7 +279,7 @@ const SensorsAnalogDialog = ({
/>
</Grid>
)}
{editItem.t === AnalogType.COUNTER && (
{isCounter && (
<Grid>
<ValidatedTextField
name="o"
@@ -309,7 +324,7 @@ const SensorsAnalogDialog = ({
/>
</Grid>
)}
{isDigitalOutGPIO && (
{isDACOutGPIO && (
<Grid>
<ValidatedTextField
name="o"
@@ -325,7 +340,7 @@ const SensorsAnalogDialog = ({
/>
</Grid>
)}
{isDigitalOutNonGPIO && (
{isDigitalOutGPIO && (
<>
<Grid>
<ValidatedTextField

View File

@@ -112,6 +112,7 @@ export interface SensorData {
as: AnalogSensor[];
analog_enabled: boolean;
available_gpios: number[];
exclude_types: number[];
platform: string;
}
@@ -245,7 +246,10 @@ export enum AnalogType {
PULSE = 12,
FREQ_0 = 13,
FREQ_1 = 14,
FREQ_2 = 15
FREQ_2 = 15,
CNT_0 = 16,
CNT_1 = 17,
CNT_2 = 18
}
export const AnalogTypeNames = [
@@ -263,7 +267,10 @@ export const AnalogTypeNames = [
'Pulse', // 12
'Freq 0', // 13
'Freq 1', // 14
'Freq 2' // 15
'Freq 2', // 15
'Counter 0', // 16
'Counter 1', // 17
'Counter2' // 18
] as const;
export const BOARD_PROFILES = {