add missing sg device wrappers in layer 4 of the api and also more documentation

This commit is contained in:
Mamadou Babaei
2022-11-18 15:01:53 +01:00
parent f5050ac081
commit 6b076bb5fb
8 changed files with 159 additions and 13 deletions
@@ -426,12 +426,12 @@ int32 USGDevice::GetDeviceIndex() const
return SGCoreImpl_FSGDeviceImpl_GetDeviceIndex(&InstanceContainer);
}
void USGDevice::SetDeviceIndex(const int32 Index)
void USGDevice::SetDeviceIndex(const int32 NewIndex)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()};
SGCoreImpl_FSGDeviceImpl_SetDeviceIndex(&InstanceContainer, Index);
SGCoreImpl_FSGDeviceImpl_SetDeviceIndex(&InstanceContainer, NewIndex);
SyncUProperties();
}
+70 -2
View File
@@ -29,7 +29,9 @@
*
* @section DESCRIPTION
*
*
* Represents a Device built by the Sense Glove company that is compatible with
* our Communications Protocol. All such devices derive from this abstract
* class.
*/
@@ -49,14 +51,23 @@ class FSGHapticGloveImpl;
class FSGNovaGloveImpl;
class FSGSenseGloveImpl;
/**
*
*/
UCLASS(Abstract, BlueprintType)
class SENSEGLOVECORE_API USGDevice : public UObject
{
GENERATED_BODY()
public:
/**
* Parse a main and sub firmware version from its raw (v4.12) notation
*/
static void ParseFirmware(const FString& RawFirmware, int32& OutMainVersion, int32& OutSubVersion);
/**
*
*/
static FString ToString(ESGDeviceType DeviceType);
private:
@@ -71,6 +82,9 @@ private:
FImplDeleter PimplDeleter;
protected:
/**
* The basic constructor.
*/
USGDevice();
public:
@@ -200,39 +214,93 @@ protected:
virtual void SyncUProperties();
public:
/**
* Check which DeviceType this class belongs to.
*/
virtual ESGDeviceType GetDeviceType() const;
/**
* Retrieve this device's unique identifier.
*/
virtual FString GetDeviceId() const PURE_VIRTUAL(FSGDevice::GetDeviceId, return FString(););
/**
* Retrieve this device's hardware version.
*/
virtual FString GetHardwareVersion() const PURE_VIRTUAL(FSGDevice::GetHardwareVersion, return FString(););
/**
* Retrieve this device's main firmware version. v4.12 returns 4.
*/
virtual int32 GetFirmwareVersion() const PURE_VIRTUAL(FSGDevice::FirmwareVersion, return -1;);
/**
* Retrieve this device's sub firmware version. v4.12 returns 12.
*/
virtual int32 GetSubFirmwareVersion() const;
/**
*
*/
virtual FString GetFirmwareString() const;
/**
* Retrieve this Device's Serial/Bluetooth address.
*/
FString GetAddress() const;
/**
* Check if this device is currently connected to the system.
*/
bool IsConnected() const;
/**
* Retrieve the connection type of this Sense Glove.
*/
ESGConnectionType GetConnectionType() const;
/**
* Retrieve the device's Packets per Second Variable.
*/
int32 PacketsPerSecondReceived() const;
/**
* Retrieve the device's Packets per Second Variable.
*/
int32 PacketsPerSecondSent() const;
/**
* Retrieve the index of this device within SenseCom.
*/
int32 GetDeviceIndex() const;
void SetDeviceIndex(const int32 Index);
/**
* Change this device's index within the SenseCom. Warning: Can cause errors.
*/
void SetDeviceIndex(int32 NewIndex);
/**
* Returns true if this device is connected over a connection other than usb cable.
*/
virtual bool IsWireless() const;
/**
* Returns true if this device operates on a battery.
*/
virtual bool HasBattery() const;
/**
* Returns true if this device is currently charging.
*/
virtual bool IsCharging();
/**
* Returns the device's battery level, as a value between 0 (empty) and 1 (full).
*/
virtual bool GetBatteryLevel(float& OutLevel);
/**
* Get a string representation of this SGDevice, used for debugging.
*/
virtual FString ToString() const;
};
@@ -242,9 +242,9 @@ int32 FSGDeviceImpl::GetDeviceIndex() const
return ToSGDevicePtrChecked()->GetDeviceIndex();
}
void FSGDeviceImpl::SetDeviceIndex(const int32 Index)
void FSGDeviceImpl::SetDeviceIndex(const int32 NewIndex)
{
ToSGDevicePtrChecked()->SetDeviceIndex(Index);
ToSGDevicePtrChecked()->SetDeviceIndex(NewIndex);
}
bool FSGDeviceImpl::IsWireless() const
@@ -1089,9 +1089,9 @@ int32 SGCoreImpl_FSGDeviceImpl_GetDeviceIndex(
void SGCoreImpl_FSGDeviceImpl_SetDeviceIndex(
void* Instance,
const int32 Index)
const int32 NewIndex)
{
return StaticCast<FSGIC_TSharedPtr_FSGDeviceImpl*>(Instance)->Ptr->SetDeviceIndex(Index);
return StaticCast<FSGIC_TSharedPtr_FSGDeviceImpl*>(Instance)->Ptr->SetDeviceIndex(NewIndex);
}
bool SGCoreImpl_FSGDeviceImpl_IsWireless(
@@ -170,7 +170,7 @@ public:
int32 PacketsPerSecondSent() const;
int32 GetDeviceIndex() const;
void SetDeviceIndex(int32 Index);
void SetDeviceIndex(int32 NewIndex);
virtual bool IsWireless() const;
@@ -556,7 +556,7 @@ SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGDeviceImpl_GetDeviceIndex(
SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceImpl_SetDeviceIndex(
void* Instance,
int32 Index);
int32 NewIndex);
SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGDeviceImpl_IsWireless(
void* Instance);
@@ -102,6 +102,16 @@ int32 USGDeviceKismetLibrary::PacketsPerSecondSent(const USGDevice* SGDevice)
return SGDevice->PacketsPerSecondSent();
}
int32 USGDeviceKismetLibrary::GetDeviceIndex(const USGDevice* SGDevice)
{
return SGDevice->GetDeviceIndex();
}
void USGDeviceKismetLibrary::SetDeviceIndex(USGDevice* SGDevice, const int32 NewIndex)
{
SGDevice->SetDeviceIndex(NewIndex);
}
bool USGDeviceKismetLibrary::IsWireless(const USGDevice* SGDevice)
{
return SGDevice->IsWireless();
@@ -29,7 +29,9 @@
*
* @section DESCRIPTION
*
*
* Represents a Device built by the Sense Glove company that is compatible with
* our Communications Protocol. All such devices derive from this abstract
* class.
*/
@@ -48,57 +50,123 @@ class SENSEGLOVECOREKISMET_API USGDeviceKismetLibrary : public USGBlueprintFunct
GENERATED_BODY()
public:
/**
* Parse a main and sub firmware version from its raw (v4.12) notation
*/
UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SGDevice")
static void ParseFirmware(const FString& RawFirmware, int32& OutMainVersion, int32& OutSubVersion);
/**
*
*/
UFUNCTION(BlueprintCallable, DisplayName="To String", Category="SenseGlove | Core | SGDevice")
static FString ToString_DT(ESGDeviceType DeviceType);
/**
* Check which DeviceType this class belongs to.
*/
UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SGDevice")
static ESGDeviceType GetDeviceType(const USGDevice* SGDevice);
/**
* Retrieve this device's unique identifier.
*/
UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SGDevice")
static FString GetDeviceId(const USGDevice* SGDevice);
/**
* Retrieve this device's hardware version.
*/
UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SGDevice")
static FString GetHardwareVersion(const USGDevice* SGDevice);
/**
* Retrieve this device's main firmware version. v4.12 returns 4.
*/
UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SGDevice")
static int32 GetFirmwareVersion(const USGDevice* SGDevice);
/**
* Retrieve this device's sub firmware version. v4.12 returns 12.
*/
UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SGDevice")
static int32 GetSubFirmwareVersion(const USGDevice* SGDevice);
/**
*
*/
UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SGDevice")
static FString GetFirmwareString(const USGDevice* SGDevice);
/**
* Retrieve this Device's Serial/Bluetooth address.
*/
UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SGDevice")
static FString GetAddress(const USGDevice* SGDevice);
/**
* Check if this device is currently connected to the system.
*/
UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SGDevice")
static bool IsConnected(const USGDevice* SGDevice);
/**
* Retrieve the connection type of this Sense Glove.
*/
UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SGDevice")
static ESGConnectionType GetConnectionType(const USGDevice* SGDevice);
/**
* Retrieve the device's Packets per Second Variable.
*/
UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SGDevice")
static int32 PacketsPerSecondReceived(const USGDevice* SGDevice);
/**
* Retrieve the device's Packets per Second Variable.
*/
UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SGDevice")
static int32 PacketsPerSecondSent(const USGDevice* SGDevice);
/**
* Retrieve the index of this device within SenseCom.
*/
UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SGDevice")
static int32 GetDeviceIndex(const USGDevice* SGDevice);
/**
* Change this device's index within the SenseCom. Warning: Can cause errors.
*/
UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SGDevice")
static void SetDeviceIndex(UPARAM(ref) USGDevice* SGDevice, int32 NewIndex);
/**
* Returns true if this device is connected over a connection other than usb cable.
*/
UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SGDevice")
static bool IsWireless(const USGDevice* SGDevice);
/**
* Returns true if this device operates on a battery.
*/
UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SGDevice")
static bool HasBattery(const USGDevice* SGDevice);
/**
* Returns true if this device is currently charging.
*/
UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SGDevice")
static bool IsCharging(UPARAM(ref) USGDevice* SGDevice);
/**
* Returns the device's battery level, as a value between 0 (empty) and 1 (full).
*/
UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SGDevice")
static bool GetBatteryLevel(UPARAM(ref) USGDevice* SGDevice, float& OutLevel);
/**
* Get a string representation of this SGDevice, used for debugging.
*/
UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SGDevice")
static FString ToString(const USGDevice* SGDevice);
};