#pragma once #include "CoreMinimal.h" #include "Subsystems/EngineSubsystem.h" #include "hidapi.h" #include "SkyPortalSubsystem.generated.h" /* Macro Definitions */ #define TIMEOUT 30000 DECLARE_LOG_CATEGORY_EXTERN(LogHIDApi, Log, All); /* Subsystem */ UCLASS() class SKYPORTAL_API USkyPortalSubsystem : public UEngineSubsystem { GENERATED_BODY() public: // Override initialization and deinitialization methods virtual void Initialize(FSubsystemCollectionBase& Collection) override; virtual void Deinitialize() override; // Connect to Portal, return false if portal is not found UFUNCTION(BlueprintCallable, CallInEditor) bool ConnectPortal(); FString HidError; private: //Portal ref used in the subsystem hid_device* PortalDevice; unsigned char* PortalRawData; FString RawData(); void ReadPortal(); protected: //Constants const int VendorIds[4] = { 0x12ba, 0x54c, 0x1430, 0x1430 }; const int ProductIds[4] = { 0x150, 0x967, 0x1f17 }; /////Defaults values, should not be used const int VendorId = 5168; const int ProductId = 336; };