SkyPortal-plugin/Source/SkyPortal/Public/SkyPortalSubsystem.h

51 lines
1 KiB
C++

#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;
};