12 #include "HAL/Types.h"
32 virtual void ResetHandles();
33 static void ResetGlobalHandles();
39 constexpr int16_t InvalidHandleIndex = -1;
41 enum class HAL_HandleEnum {
62 static inline int16_t getHandleIndex(HAL_Handle handle) {
64 return static_cast<int16_t
>(handle & 0xffff);
66 static inline HAL_HandleEnum getHandleType(HAL_Handle handle) {
68 return static_cast<HAL_HandleEnum
>((handle >> 24) & 0xff);
70 static inline bool isHandleType(HAL_Handle handle, HAL_HandleEnum handleType) {
71 return handleType == getHandleType(handle);
73 static inline bool isHandleCorrectVersion(HAL_Handle handle, int16_t version) {
74 return (((handle & 0xFF0000) >> 16) & version) == version;
76 static inline int16_t getHandleTypedIndex(HAL_Handle handle,
77 HAL_HandleEnum enumType,
79 if (!isHandleType(handle, enumType))
return InvalidHandleIndex;
80 #if !defined(CONFIG_ATHENA)
81 if (!isHandleCorrectVersion(handle, version))
return InvalidHandleIndex;
83 return getHandleIndex(handle);
96 static inline int16_t getPortHandleChannel(HAL_PortHandle handle) {
97 if (!isHandleType(handle, HAL_HandleEnum::Port))
return InvalidHandleIndex;
98 return static_cast<uint8_t
>(handle & 0xff);
102 static inline int16_t getPortHandleModule(HAL_PortHandle handle) {
103 if (!isHandleType(handle, HAL_HandleEnum::Port))
return InvalidHandleIndex;
104 return static_cast<uint8_t
>((handle >> 8) & 0xff);
108 static inline int16_t getPortHandleSPIEnable(HAL_PortHandle handle) {
109 if (!isHandleType(handle, HAL_HandleEnum::Port))
return InvalidHandleIndex;
110 return static_cast<uint8_t
>((handle >> 16) & 0xff);
113 HAL_PortHandle createPortHandle(uint8_t channel, uint8_t module);
115 HAL_PortHandle createPortHandleForSPI(uint8_t channel);
117 HAL_Handle createHandle(int16_t index, HAL_HandleEnum handleType,
Definition: HandlesInternal.h:26