12 #include "HAL/Types.h"
26 constexpr int16_t InvalidHandleIndex = -1;
28 enum class HAL_HandleEnum {
49 static inline int16_t getHandleIndex(HAL_Handle handle) {
51 return static_cast<int16_t
>(handle & 0xffff);
53 static inline HAL_HandleEnum getHandleType(HAL_Handle handle) {
55 return static_cast<HAL_HandleEnum
>((handle >> 24) & 0xff);
57 static inline bool isHandleType(HAL_Handle handle, HAL_HandleEnum handleType) {
58 return handleType == getHandleType(handle);
60 static inline int16_t getHandleTypedIndex(HAL_Handle handle,
61 HAL_HandleEnum enumType) {
62 if (!isHandleType(handle, enumType))
return InvalidHandleIndex;
63 return getHandleIndex(handle);
76 static inline int16_t getPortHandleChannel(HAL_PortHandle handle) {
77 if (!isHandleType(handle, HAL_HandleEnum::Port))
return InvalidHandleIndex;
78 return static_cast<uint8_t
>(handle & 0xff);
82 static inline int16_t getPortHandleModule(HAL_PortHandle handle) {
83 if (!isHandleType(handle, HAL_HandleEnum::Port))
return InvalidHandleIndex;
84 return static_cast<uint8_t
>((handle >> 8) & 0xff);
88 static inline int16_t getPortHandleSPIEnable(HAL_PortHandle handle) {
89 if (!isHandleType(handle, HAL_HandleEnum::Port))
return InvalidHandleIndex;
90 return static_cast<uint8_t
>((handle >> 16) & 0xff);
93 HAL_PortHandle createPortHandle(uint8_t channel, uint8_t module);
95 HAL_PortHandle createPortHandleForSPI(uint8_t channel);
97 HAL_Handle createHandle(int16_t index, HAL_HandleEnum handleType);