implement the nova2 api updates and bump the senseglove libraries to v2.101.0-3e1693fb
This commit is contained in:
@@ -48,26 +48,6 @@ enum class ESGBackendType : uint8
|
||||
SharedMemory UMETA(DisplayName = "Shared Memory"),
|
||||
};
|
||||
|
||||
/* Startup Stage used to indicate where of not a glove must be recalibrated. */
|
||||
UENUM(BlueprintType)
|
||||
enum class ESGCalibrationStage : uint8
|
||||
{
|
||||
/* The default none value. */
|
||||
None UMETA(DisplayName = "None"),
|
||||
|
||||
/* We've only just started up. User needs to move their hands so we know if we're still in the same sensor range. */
|
||||
MoveFingers UMETA(DisplayName = "Move Fingers"),
|
||||
|
||||
/* After moving, we've determined that a calibration must happen for proper hand tracking to happen. */
|
||||
CalibrationNeeded UMETA(DisplayName = "Calibration Needed"),
|
||||
|
||||
/* After moving, we've determined that a calibration must happen for proper hand tracking to happen. */
|
||||
Calibrating UMETA(DisplayName = "Calibrating"),
|
||||
|
||||
/* We've determined that this needs no (more) calibration to function as intended. */
|
||||
Done UMETA(DisplayName = "Done"),
|
||||
};
|
||||
|
||||
/* Connection type of this device, as detected by the SGConnect library. */
|
||||
UENUM(BlueprintType)
|
||||
enum class ESGConnectionType : uint8
|
||||
@@ -88,28 +68,98 @@ enum class ESGConnectionType : uint8
|
||||
BluetoothAndroid UMETA(DisplayName = "Bluetooth Android"),
|
||||
};
|
||||
|
||||
/* Sense Glove C string Variables, enumerated for our convenience. */
|
||||
/**
|
||||
* Used to access specific positions from the CV output, which is an array of Vect3D positions.
|
||||
* @remarks Declared in CVHandOutput.cs because these enums are used to index the jointPositions array in that class.
|
||||
*/
|
||||
UENUM(BlueprintType)
|
||||
enum class ESGCVar : uint8
|
||||
enum class ESGCVHandPoints : uint8
|
||||
{
|
||||
/* The default none value. */
|
||||
None UMETA(DisplayName = "None"),
|
||||
|
||||
ID UMETA(DisplayName = "ID"),
|
||||
GloveVersion UMETA(DisplayName = "Glove Version"),
|
||||
FirmwareVersion UMETA(DisplayName = "Firmware Version"),
|
||||
LeftRight UMETA(DisplayName = "Left Right"),
|
||||
Functions UMETA(DisplayName = "Functions"),
|
||||
GlovePos UMETA(DisplayName = "Glove Pos"),
|
||||
/* The position of the Wrist as determined by the CV Model. */
|
||||
Wrist UMETA(DisplayName = "Wrist"),
|
||||
|
||||
/* All gloves have functionality up to this point. */
|
||||
GloveLengths UMETA(DisplayName = "Glove Lengths"),
|
||||
/* The position of the Thumb CMC Joint as determined by the CV Model. */
|
||||
ThumbCmc UMETA(DisplayName = "Thumb CMC"),
|
||||
|
||||
NumberOfSensors UMETA(DisplayName = "Number Of Sensors"),
|
||||
ImuCorrection UMETA(DisplayName = "IMU Correction"),
|
||||
/* The position of the Thumb MCP Joint as determined by the CV Model. */
|
||||
ThumbMcp UMETA(DisplayName = "Thumb MCP"),
|
||||
|
||||
/* Utility value used in iteration / checking lengths. */
|
||||
AllC UMETA(DisplayName = "All C"),
|
||||
/* The position of the Thumb IP Joint as determined by the CV Model. */
|
||||
ThumbIp UMETA(DisplayName = "Thumb IP"),
|
||||
|
||||
/* The position of the Thumb tip as determined by the CV Model. */
|
||||
ThumbTip UMETA(DisplayName = "Thumb Tip"),
|
||||
|
||||
/* The position of the Index MCP Joint as determined by the CV Model. */
|
||||
IndexMcp UMETA(DisplayName = "Indexx MCP"),
|
||||
|
||||
/* The position of the Index PIP Joint as determined by the CV Model. */
|
||||
IndexPip UMETA(DisplayName = "Index PIP"),
|
||||
|
||||
/* The position of the Index DIP Joint as determined by the CV Model. */
|
||||
IndexDip UMETA(DisplayName = "Index DIP"),
|
||||
|
||||
/* The position of the Index fingertip as determined by the CV Model. */
|
||||
IndexTip UMETA(DisplayName = "Index Tip"),
|
||||
|
||||
/* The position of the Middle MCP Joint as determined by the CV Model. */
|
||||
MiddleMcp UMETA(DisplayName = "Middle MCP"),
|
||||
|
||||
/* The position of the Middle PIP Joint as determined by the CV Model. */
|
||||
MiddlePip UMETA(DisplayName = "Middle PIP"),
|
||||
|
||||
/* The position of the Middle DIP Joint as determined by the CV Model. */
|
||||
MiddleDip UMETA(DisplayName = "Middle DIP"),
|
||||
|
||||
/* The position of the Middle fingertip as determined by the CV Model. */
|
||||
MiddleTip UMETA(DisplayName = "Middle Tip"),
|
||||
|
||||
/* The position of the Ring MCP Joint as determined by the CV Model. */
|
||||
RingMcp UMETA(DisplayName = "Ring MCP"),
|
||||
|
||||
/* The position of the Ring PIP Joint as determined by the CV Model. */
|
||||
RingPip UMETA(DisplayName = "Ring PIP"),
|
||||
|
||||
/* The position of the Ring DIP Joint as determined by the CV Model. */
|
||||
RingDip UMETA(DisplayName = "Ring DIP"),
|
||||
|
||||
/* The position of the Ring fingertip as determined by the CV Model. */
|
||||
RingTip UMETA(DisplayName = "Rint Tip"),
|
||||
|
||||
/* The position of the Pinky MCP Joint as determined by the CV Model. */
|
||||
PinkyMcp UMETA(DisplayName = "Pinky MCP"),
|
||||
|
||||
/* The position of the Pinky PIP Joint as determined by the CV Model. */
|
||||
PinkyPip UMETA(DisplayName = "Pinky PIP"),
|
||||
|
||||
/* The position of the Pinky DIP Joint as determined by the CV Model. */
|
||||
PinkyDip UMETA(DisplayName = "Pinky DIP"),
|
||||
|
||||
/* The position of the Pinky fingertip as determined by the CV Model. */
|
||||
PinkyTip UMETA(DisplayName = "Pinky Tip"),
|
||||
|
||||
/* Utility enumerator to check if an array contains enough values. */
|
||||
All UMETA(DisplayName = "All"),
|
||||
};
|
||||
|
||||
/* How much of the CV tracking is being used. Used by other APIs. */
|
||||
UENUM(BlueprintType)
|
||||
enum class ESGCVTrackingDepth : uint8
|
||||
{
|
||||
/* The default none value. */
|
||||
None UMETA(DisplayName = "None"),
|
||||
|
||||
/* No computer-vision is enabled. */
|
||||
Disabled UMETA(DisplayName = "Disabled"),
|
||||
|
||||
/* Use CV only for the wrist position/rotation. */
|
||||
WristOnly UMETA(DisplayName = "Wrist Only"),
|
||||
|
||||
/* Use CV for both the wrist location and Hand Position. */
|
||||
WristAndHandPose UMETA(DisplayName = "Wrist and Hand Pose"),
|
||||
};
|
||||
|
||||
/* Specific devices within the SGCore library. */
|
||||
@@ -123,13 +173,16 @@ enum class ESGDeviceType : uint8
|
||||
Unknown UMETA(DisplayName = "Unknown"),
|
||||
|
||||
/* A Device that is in development, with direct access to sensor data and commands. */
|
||||
BetaDevice UMETA(DisplayName = "BetaDevice"),
|
||||
BetaDevice UMETA(DisplayName = "Beta Device"),
|
||||
|
||||
/* An exoskeleton glove that provides force- and haptic feedback. */
|
||||
SenseGlove UMETA(DisplayName = "SenseGlove"),
|
||||
SenseGlove UMETA(DisplayName = "Sense Glove"),
|
||||
|
||||
/* A soft glove with basic tracking, as well as force- and Haptic Feedback. */
|
||||
Nova UMETA(DisplayName = "Nova"),
|
||||
|
||||
/* A soft glove with basic tracking, as well as force- and Haptic Feedback. */
|
||||
Nova2 UMETA(DisplayName = "Nova 2"),
|
||||
};
|
||||
|
||||
/* One of the fingers on the hand. */
|
||||
@@ -185,6 +238,78 @@ enum class ESGFingerSolver : uint8
|
||||
Interpolation UMETA(DisplayName = "Interpolation"),
|
||||
};
|
||||
|
||||
/* Different types of Haptic Channels - with different behaviours. */
|
||||
UENUM(BlueprintType)
|
||||
enum class ESGHapticChannelType : uint8
|
||||
{
|
||||
/* The default none value. */
|
||||
None UMETA(DisplayName = "None"),
|
||||
|
||||
/**
|
||||
* This type of haptic channel can be constantly overridden. SGConnect will only send a command if a change occurs.
|
||||
* Ideal for Force-Feedback.
|
||||
*/
|
||||
StreamingChannel UMETA(DisplayName = "Streaming Channel"),
|
||||
|
||||
/* These commands must be sent once, after their queue is cleared. */
|
||||
FireAndForgetChannel UMETA(DisplayName = "Fire and Forget Channel"),
|
||||
};
|
||||
|
||||
/* The Calibration State of this Glove. */
|
||||
UENUM(BlueprintType)
|
||||
enum class ESGHapticGloveCalibrationState : uint8
|
||||
{
|
||||
/* The default none value. */
|
||||
None UMETA(DisplayName = "None"),
|
||||
|
||||
/* No idea what the calibrationState of this glove is... */
|
||||
Unknown UMETA(DisplayName = "Unknown"),
|
||||
|
||||
/* One or more sensors still need to move... */
|
||||
MoveFingers UMETA(DisplayName = "Move Fingers"),
|
||||
|
||||
/* All sensors have moved. */
|
||||
AllSensorsMoved UMETA(DisplayName = "All Sensors Moved"),
|
||||
|
||||
/* Calibration is locked in. Done collecting Data. */
|
||||
CalibrationLocked UMETA(DisplayName = "Calibration Locked"),
|
||||
};
|
||||
|
||||
/* All of the locations supported by the SenseGlove API. */
|
||||
UENUM(BlueprintType)
|
||||
enum class ESGHapticLocation : uint8
|
||||
{
|
||||
/* The default none value. */
|
||||
None UMETA(DisplayName = "None"),
|
||||
|
||||
/* Unknown location. Calling haptic function(s) with this parameter will not play anything. */
|
||||
Unknown UMETA(DisplayName = "Unknown"),
|
||||
|
||||
/* <summary> Fingertip of the Thumb. */
|
||||
ThumbTip UMETA(DisplayName = "Thumb Tip"),
|
||||
|
||||
/* Fingertip of the Index Finger. */
|
||||
IndexTip UMETA(DisplayName = "Index Tip"),
|
||||
|
||||
/* Fingertip of the Middle Finger. */
|
||||
MiddleTip UMETA(DisplayName = "Middle Tip"),
|
||||
|
||||
/* Fingertip of the Ring Finger. */
|
||||
RingTip UMETA(DisplayName = "Ring Tip"),
|
||||
|
||||
/* Fingertip of the Pinky Finger. */
|
||||
PinkyTip UMETA(DisplayName = "Pinky Tip"),
|
||||
|
||||
/* Vibration on the hand palm, close to the index finger. */
|
||||
PalmIndexSide UMETA(DisplayName = "Palm Index Side"),
|
||||
|
||||
/* Vibration on the hand palm close to the pinky finger. */
|
||||
PalmPinkySide UMETA(DisplayName = "Palm Pinky Side"),
|
||||
|
||||
/* Play this Haptic Effect on the whole hand. For General Hand Feedback. */
|
||||
WholeHand UMETA(DisplayName = "Whole Hand"),
|
||||
};
|
||||
|
||||
/* Indices to access DeviceList data in Shared Memory. */
|
||||
UENUM(BlueprintType)
|
||||
enum class ESGListFormat : uint8
|
||||
@@ -202,6 +327,84 @@ enum class ESGListFormat : uint8
|
||||
All UMETA(DisplayName = "All"),
|
||||
};
|
||||
|
||||
/* State of the Nova's sensor Normalization. */
|
||||
UENUM(BlueprintType)
|
||||
enum class ESGNormalizationState : uint8
|
||||
{
|
||||
/* The default none value. */
|
||||
None UMETA(DisplayName = "None"),
|
||||
|
||||
/* Unable to retrieve the state out of our Sensor Data :( */
|
||||
Unknown UMETA(DisplayName = "Unknown"),
|
||||
|
||||
/* Developer has asked the glove to send raw data. */
|
||||
SendingRawData UMETA(DisplayName = "Sending Raw Data"),
|
||||
|
||||
/* The glove is currently normalizing, but the fingers haven't moved enough. */
|
||||
Normalizing_MoveFingers UMETA(DisplayName = "Normalizing: Move Fingers"),
|
||||
|
||||
/* Fires when all fingers have moved enough and you _could_ stop normalization
|
||||
/// collection. */
|
||||
Normalizing_AwaitConfirm UMETA(DisplayName = "Normalizing: Await Confirm"),
|
||||
|
||||
/* Normalization is completed. */
|
||||
NormalizationFinished UMETA(DisplayName = "Normalization Finished"),
|
||||
};
|
||||
|
||||
/* Used to access a sensor Movement of the Nova_SensorData class. */
|
||||
UENUM(BlueprintType)
|
||||
enum class ESGNovaSensorLocation : uint8
|
||||
{
|
||||
/* The default none value. */
|
||||
None UMETA(DisplayName = "None"),
|
||||
|
||||
/* Sideways motion; finger splay, moving the thumb away from the hand palm. */
|
||||
Abduction UMETA(DisplayName = "Abduction"),
|
||||
|
||||
/* Flexion of any sensor. */
|
||||
Flexion UMETA(DisplayName = "Flexion"),
|
||||
};
|
||||
|
||||
/* Used to access a sensor Movement of the Nova_SensorData class. */
|
||||
UENUM(BlueprintType)
|
||||
enum class ESGNova2SensorLocation : uint8
|
||||
{
|
||||
/* The default none value. */
|
||||
None UMETA(DisplayName = "None"),
|
||||
|
||||
/* Sideways motion; finger splay, moving the thumb away from the hand palm. */
|
||||
Abduction UMETA(DisplayName = "Abduction"),
|
||||
|
||||
/* Flexion of any sensor close to the thumb. */
|
||||
FlexionProximal UMETA(DisplayName = "Flexion Proximal"),
|
||||
|
||||
/* flexion of any sensor further from the hub. */
|
||||
FlexionDistal UMETA(DisplayName = "Flexion Distal"),
|
||||
};
|
||||
|
||||
/* Which vibration motors to send vibrations to. */
|
||||
UENUM(BlueprintType)
|
||||
enum class ESGNova2VibroMotor : uint8
|
||||
{
|
||||
/* The default none value. */
|
||||
None UMETA(DisplayName = "None"),
|
||||
|
||||
/* Not sure which motor this is meant for. */
|
||||
Unknown UMETA(DisplayName = "Unknown"),
|
||||
|
||||
/* LRA Vibration Motor that is located on the thumb fingertip. */
|
||||
ThumbFingertip UMETA(DisplayName = "Thumb Fingertip"),
|
||||
|
||||
/* LRA Vibration Motor that is located on the index fingertip. */
|
||||
IndexFingertip UMETA(DisplayName = "Index Fingertip"),
|
||||
|
||||
/* LRA Vibration Motor that is located on the hand palm, roughly at the Index MCP joint. */
|
||||
PalmIndexSide UMETA(DisplayName = "Palm Index Side"),
|
||||
|
||||
/* LRA Vibration Motor that is located on the hand palm, roughly at the Pinky MCP joint. */
|
||||
PalmPinkySide UMETA(DisplayName = "Palm Pinky Side"),
|
||||
};
|
||||
|
||||
/* Order of values as they come in from the Nova. */
|
||||
UENUM(BlueprintType)
|
||||
enum class ESGNovaCVar : uint8
|
||||
@@ -233,17 +436,24 @@ enum class ESGNovaData : uint8
|
||||
All UMETA(DisplayName = "All"),
|
||||
};
|
||||
|
||||
/* Enumerators for Nova Data position in the parseable string. */
|
||||
/* Which vibration motors to send vibrations to. */
|
||||
UENUM(BlueprintType)
|
||||
enum class ESGNovaSensorData : uint8
|
||||
enum class ESGNovaVibroMotor : uint8
|
||||
{
|
||||
/* The default none value. */
|
||||
None UMETA(DisplayName = "None"),
|
||||
|
||||
Sensors UMETA(DisplayName = "Sensors"),
|
||||
Imu UMETA(DisplayName = "IMU"),
|
||||
Battery UMETA(DisplayName = "Battery"),
|
||||
All UMETA(DisplayName = "All"),
|
||||
/* Not sure which motor to send this to. */
|
||||
Unknown UMETA(DisplayName = "Unknown"),
|
||||
|
||||
/* Vibration motor located at the back of the hand. A.k.a. "The Thumper". */
|
||||
BackOfHand UMETA(DisplayName = "Back of Hand"),
|
||||
|
||||
/* Vibration motor located at the tip of the thumb. */
|
||||
ThumbTip UMETA(DisplayName = "Thumb Tip"),
|
||||
|
||||
/* Vibration motor located at the tip of the index finger. */
|
||||
IndexFingertip UMETA(DisplayName = "Index Fingertip"),
|
||||
};
|
||||
|
||||
/* Tracking Hardware used for positional tracking. */
|
||||
@@ -279,9 +489,33 @@ enum class ESGSensorFormat : uint8
|
||||
Sensors UMETA(DisplayName = "Sensors"),
|
||||
};
|
||||
|
||||
/* Sense Glove C string Variables, enumerated for our convenience. */
|
||||
UENUM(BlueprintType)
|
||||
enum class ESGSenseGloveCVar : uint8
|
||||
{
|
||||
/* The default none value. */
|
||||
None UMETA(DisplayName = "None"),
|
||||
|
||||
ID UMETA(DisplayName = "ID"),
|
||||
GloveVersion UMETA(DisplayName = "Glove Version"),
|
||||
FirmwareVersion UMETA(DisplayName = "Firmware Version"),
|
||||
LeftRight UMETA(DisplayName = "Left Right"),
|
||||
Functions UMETA(DisplayName = "Functions"),
|
||||
GlovePos UMETA(DisplayName = "Glove Pos"),
|
||||
|
||||
/* All gloves have functionality up to this point. */
|
||||
GloveLengths UMETA(DisplayName = "Glove Lengths"),
|
||||
|
||||
NumberOfSensors UMETA(DisplayName = "Number Of Sensors"),
|
||||
ImuCorrection UMETA(DisplayName = "IMU Correction"),
|
||||
|
||||
/* Utility value used in iteration / checking lengths. */
|
||||
AllC UMETA(DisplayName = "All C"),
|
||||
};
|
||||
|
||||
/* Sense Glove sensor string Variables, enumerated for our convenience. */
|
||||
UENUM(BlueprintType)
|
||||
enum class ESGSVar : uint8
|
||||
enum class ESGSenseGloveSVar : uint8
|
||||
{
|
||||
/* The default none value. */
|
||||
None UMETA(DisplayName = "None"),
|
||||
@@ -303,40 +537,6 @@ enum class ESGSVar : uint8
|
||||
AllS UMETA(DisplayName = "All S"),
|
||||
};
|
||||
|
||||
/* Anatomical movements of the thumb joints. */
|
||||
UENUM(BlueprintType)
|
||||
enum class ESGThumbMovement : uint8
|
||||
{
|
||||
/* The default none value. */
|
||||
None UMETA(DisplayName = "None"),
|
||||
|
||||
/* Pronation/Supination of the first finger joint. */
|
||||
CmcTwist UMETA(DisplayName = "CMC Twist"),
|
||||
|
||||
/* Flexion of the first finger joint. */
|
||||
CmcFlexion UMETA(DisplayName = "CMC Flexion"),
|
||||
|
||||
/* Abduction of the first finger joint. */
|
||||
CmcAbduction UMETA(DisplayName = "CMC Abduction"),
|
||||
|
||||
/* Flexion of the second thumb joint. */
|
||||
McpFlexion UMETA(DisplayName = "MCP Flexion"),
|
||||
|
||||
/* Flexion of the third thumb joint. */
|
||||
IpFlexion UMETA(DisplayName = "IP Flexion"),
|
||||
};
|
||||
|
||||
/* How this Sense Glove converts sensor data into a HandPose. */
|
||||
UENUM(BlueprintType)
|
||||
enum class ESGThumbSolver : uint8
|
||||
{
|
||||
/* The default none value. */
|
||||
None UMETA(DisplayName = "None"),
|
||||
|
||||
/* Hand angles are interpolated based on the total flexion / abduction of the exoskeleton. */
|
||||
Interpolation UMETA(DisplayName = "Interpolation"),
|
||||
};
|
||||
|
||||
/* A command to activate the SenseGlove Thumper module, which is responsible for wrist feedback. */
|
||||
UENUM(BlueprintType)
|
||||
enum class ESGSenseGloveThumperCommand : uint8
|
||||
@@ -373,4 +573,90 @@ enum class ESGSenseGloveThumperCommand : uint8
|
||||
|
||||
/* A light vibration to cue the user that an object it picked up. 30% intensity. */
|
||||
ObjectGrasp30 UMETA(DisplayName = "Object Grasp 30"),
|
||||
};
|
||||
};
|
||||
|
||||
/* The way handPoses are smoothed in this class. */
|
||||
UENUM(BlueprintType)
|
||||
enum class ESGSmoothingMethod : uint8
|
||||
{
|
||||
/**
|
||||
* None. You'll always get the latest pose received. No performance increase, but might result in a "stop-motion"
|
||||
* effect on lower frame-rates.
|
||||
*/
|
||||
None UMETA(DisplayName = "None"),
|
||||
|
||||
/**
|
||||
* Pretend you're one sample behind, and interpolate along the exact paths. More accurate, but we will lag 1 frame
|
||||
* behind.
|
||||
*/
|
||||
InterpolateBehind UMETA(DisplayName = "Interpolated Behind"),
|
||||
|
||||
/**
|
||||
* Take the last two handPoses and estimate the current values based on extrapolation. Is perceived as "faster",
|
||||
* but is more likely to overshoot during sudden changes in direction.
|
||||
*/
|
||||
ExtrapolateAhead UMETA(DisplayName = "Extraplate Ahead"),
|
||||
};
|
||||
|
||||
/* Anatomical movements of the thumb joints. */
|
||||
UENUM(BlueprintType)
|
||||
enum class ESGThumbMovement : uint8
|
||||
{
|
||||
/* The default none value. */
|
||||
None UMETA(DisplayName = "None"),
|
||||
|
||||
/* Pronation/Supination of the first finger joint. */
|
||||
CmcTwist UMETA(DisplayName = "CMC Twist"),
|
||||
|
||||
/* Flexion of the first finger joint. */
|
||||
CmcFlexion UMETA(DisplayName = "CMC Flexion"),
|
||||
|
||||
/* Abduction of the first finger joint. */
|
||||
CmcAbduction UMETA(DisplayName = "CMC Abduction"),
|
||||
|
||||
/* Flexion of the second thumb joint. */
|
||||
McpFlexion UMETA(DisplayName = "MCP Flexion"),
|
||||
|
||||
/* Flexion of the third thumb joint. */
|
||||
IpFlexion UMETA(DisplayName = "IP Flexion"),
|
||||
};
|
||||
|
||||
/* How this Sense Glove converts sensor data into a HandPose. */
|
||||
UENUM(BlueprintType)
|
||||
enum class ESGThumbSolver : uint8
|
||||
{
|
||||
/* The default none value. */
|
||||
None UMETA(DisplayName = "None"),
|
||||
|
||||
/* Hand angles are interpolated based on the total flexion / abduction of the exoskeleton. */
|
||||
Interpolation UMETA(DisplayName = "Interpolation"),
|
||||
};
|
||||
|
||||
/* Waveform type for an advanced Buzz Command. */
|
||||
UENUM(BlueprintType)
|
||||
enum class ESGWaveformType : uint8
|
||||
{
|
||||
/* The default none value. */
|
||||
None UMETA(DisplayName = "None"),
|
||||
|
||||
/* We're not sure what type of Waveform to use. */
|
||||
Unknown UMETA(DisplayName = "Unknown"),
|
||||
|
||||
/* Smooth sine wave. */
|
||||
Sine UMETA(DisplayName = "Sine"),
|
||||
|
||||
/* Can shift duty Cycle. */
|
||||
Square UMETA(DisplayName = "Square"),
|
||||
|
||||
/* Inverse of SawDown. */
|
||||
SawUp UMETA(DisplayName = "Saw Up"),
|
||||
|
||||
/* Inverse of SawUp. */
|
||||
SawDown UMETA(DisplayName = "Saw Down"),
|
||||
|
||||
/* Triangle waveform. */
|
||||
Triangle UMETA(DisplayName = "Triangle"),
|
||||
|
||||
/* A random, noisy signal. */
|
||||
Noise UMETA(DisplayName = "Noise"),
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user