mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-20 00:51:42 +00:00
68 lines
1.5 KiB
C
68 lines
1.5 KiB
C
/*----------------------------------------------------------------------------*/
|
|
/* Copyright (c) 2017 FIRST. All Rights Reserved. */
|
|
/* Open Source Software - may be modified and shared by FRC teams. The code */
|
|
/* must be accompanied by the FIRST BSD license file in the root directory of */
|
|
/* the project. */
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
#pragma once
|
|
|
|
#include "HAL/Types.h"
|
|
|
|
/** HAL data types. */
|
|
enum HAL_Type {
|
|
HAL_UNASSIGNED = 0,
|
|
HAL_BOOLEAN = 0x01,
|
|
HAL_DOUBLE = 0x02,
|
|
HAL_ENUM = 0x16,
|
|
HAL_INT = 0x32,
|
|
HAL_LONG = 0x64,
|
|
};
|
|
|
|
/** HAL Entry Value. Note this is a typed union. */
|
|
struct HAL_Value {
|
|
union {
|
|
HAL_Bool v_boolean;
|
|
int32_t v_enum;
|
|
int32_t v_int;
|
|
int64_t v_long;
|
|
double v_double;
|
|
} data;
|
|
enum HAL_Type type;
|
|
};
|
|
|
|
inline HAL_Value MakeBoolean(HAL_Bool v) {
|
|
HAL_Value value;
|
|
value.type = HAL_BOOLEAN;
|
|
value.data.v_boolean = v;
|
|
return value;
|
|
}
|
|
|
|
inline HAL_Value MakeEnum(int v) {
|
|
HAL_Value value;
|
|
value.type = HAL_ENUM;
|
|
value.data.v_enum = v;
|
|
return value;
|
|
}
|
|
|
|
inline HAL_Value MakeInt(int v) {
|
|
HAL_Value value;
|
|
value.type = HAL_INT;
|
|
value.data.v_int = v;
|
|
return value;
|
|
}
|
|
|
|
inline HAL_Value MakeLong(int64_t v) {
|
|
HAL_Value value;
|
|
value.type = HAL_LONG;
|
|
value.data.v_long = v;
|
|
return value;
|
|
}
|
|
|
|
inline HAL_Value MakeDouble(double v) {
|
|
HAL_Value value;
|
|
value.type = HAL_DOUBLE;
|
|
value.data.v_double = v;
|
|
return value;
|
|
}
|