12 #include "hal/Types.h"
35 virtual void ResetHandles();
36 static void ResetGlobalHandles();
42 constexpr int16_t InvalidHandleIndex = -1;
47 enum class HAL_HandleEnum {
76 static inline int16_t getHandleIndex(HAL_Handle handle) {
78 return static_cast<int16_t
>(handle & 0xffff);
87 static inline HAL_HandleEnum getHandleType(HAL_Handle handle) {
89 return static_cast<HAL_HandleEnum
>((handle >> 24) & 0xff);
99 static inline bool isHandleType(HAL_Handle handle, HAL_HandleEnum handleType) {
100 return handleType == getHandleType(handle);
112 static inline bool isHandleCorrectVersion(HAL_Handle handle, int16_t version) {
113 return (((handle & 0xFF0000) >> 16) & version) == version;
127 static inline int16_t getHandleTypedIndex(HAL_Handle handle,
128 HAL_HandleEnum enumType,
130 if (!isHandleType(handle, enumType))
return InvalidHandleIndex;
131 #if !defined(__FRC_ROBORIO__)
132 if (!isHandleCorrectVersion(handle, version))
return InvalidHandleIndex;
134 return getHandleIndex(handle);
153 static inline int16_t getPortHandleChannel(HAL_PortHandle handle) {
154 if (!isHandleType(handle, HAL_HandleEnum::Port))
return InvalidHandleIndex;
155 return static_cast<uint8_t
>(handle & 0xff);
165 static inline int16_t getPortHandleModule(HAL_PortHandle handle) {
166 if (!isHandleType(handle, HAL_HandleEnum::Port))
return InvalidHandleIndex;
167 return static_cast<uint8_t
>((handle >> 8) & 0xff);
177 static inline int16_t getPortHandleSPIEnable(HAL_PortHandle handle) {
178 if (!isHandleType(handle, HAL_HandleEnum::Port))
return InvalidHandleIndex;
179 return static_cast<uint8_t
>((handle >> 16) & 0xff);
189 HAL_PortHandle createPortHandle(uint8_t channel, uint8_t module);
197 HAL_PortHandle createPortHandleForSPI(uint8_t channel);
209 HAL_Handle createHandle(int16_t index, HAL_HandleEnum handleType,
Base for all HAL Handles.
Definition: HandlesInternal.h:29
Definition: NotifyListenerVector.h:18