diff --git a/DS4Windows/DS4Control/ControlSerivce.cs b/DS4Windows/DS4Control/ControlSerivce.cs
index 83efa65..461008e 100644
--- a/DS4Windows/DS4Control/ControlSerivce.cs
+++ b/DS4Windows/DS4Control/ControlSerivce.cs
@@ -441,17 +441,16 @@ namespace DS4Windows
//Called every time the new input report has arrived
protected virtual void On_Report(object sender, EventArgs e)
{
-
DS4Device device = (DS4Device)sender;
int ind = -1;
- for (int i = 0; i < DS4Controllers.Length; i++)
+ for (int i = 0, arlength = DS4Controllers.Length; ind == -1 && i < arlength; i++)
if (device == DS4Controllers[i])
ind = i;
if (ind != -1)
{
- if (FlushHIDQueue[ind])
+ if (getFlushHIDQueue(ind))
device.FlushHID();
if (!string.IsNullOrEmpty(device.error))
{
@@ -459,9 +458,10 @@ namespace DS4Windows
}
if (DateTime.UtcNow - device.firstActive > TimeSpan.FromSeconds(5))
{
- if (device.Latency >= FlashWhenLateAt && !lag[ind])
+ int flashWhenLateAt = getFlashWhenLateAt();
+ if (device.Latency >= flashWhenLateAt && !lag[ind])
LagFlashWarning(ind, true);
- else if (device.Latency < FlashWhenLateAt && lag[ind])
+ else if (device.Latency < flashWhenLateAt && lag[ind])
LagFlashWarning(ind, false);
}
device.getExposedState(ExposedState[ind], CurrentState[ind]);
@@ -508,7 +508,7 @@ namespace DS4Windows
// Output any synthetic events.
Mapping.Commit(ind);
// Pull settings updates.
- device.IdleTimeout = IdleDisconnectTimeout[ind];
+ device.IdleTimeout = getIdleDisconnectTimeout(ind);
}
}
@@ -751,22 +751,22 @@ namespace DS4Windows
public int[] oldscrollvalue = { 0, 0, 0, 0 };
protected virtual void CheckForHotkeys(int deviceID, DS4State cState, DS4State pState)
{
- if (!UseTPforControls[deviceID] && cState.Touch1 && pState.PS)
+ if (!getUseTPforControls(deviceID) && cState.Touch1 && pState.PS)
{
- if (TouchSensitivity[deviceID] > 0 && touchreleased[deviceID])
+ if (getTouchSensitivity(deviceID) > 0 && touchreleased[deviceID])
{
- oldtouchvalue[deviceID] = TouchSensitivity[deviceID];
- oldscrollvalue[deviceID] = ScrollSensitivity[deviceID];
- TouchSensitivity[deviceID] = 0;
- ScrollSensitivity[deviceID] = 0;
+ oldtouchvalue[deviceID] = getTouchSensitivity(deviceID);
+ oldscrollvalue[deviceID] = getScrollSensitivity(deviceID);
+ getTouchSensitivity()[deviceID] = 0;
+ getScrollSensitivity()[deviceID] = 0;
LogDebug(TouchSensitivity[deviceID] > 0 ? Properties.Resources.TouchpadMovementOn : Properties.Resources.TouchpadMovementOff);
Log.LogToTray(TouchSensitivity[deviceID] > 0 ? Properties.Resources.TouchpadMovementOn : Properties.Resources.TouchpadMovementOff);
touchreleased[deviceID] = false;
}
else if (touchreleased[deviceID])
{
- TouchSensitivity[deviceID] = oldtouchvalue[deviceID];
- ScrollSensitivity[deviceID] = oldscrollvalue[deviceID];
+ getTouchSensitivity()[deviceID] = oldtouchvalue[deviceID];
+ getScrollSensitivity()[deviceID] = oldscrollvalue[deviceID];
LogDebug(TouchSensitivity[deviceID] > 0 ? Properties.Resources.TouchpadMovementOn : Properties.Resources.TouchpadMovementOff);
Log.LogToTray(TouchSensitivity[deviceID] > 0 ? Properties.Resources.TouchpadMovementOn : Properties.Resources.TouchpadMovementOff);
touchreleased[deviceID] = false;
diff --git a/DS4Windows/DS4Control/ScpUtil.cs b/DS4Windows/DS4Control/ScpUtil.cs
index 90da7d1..c04ccb2 100644
--- a/DS4Windows/DS4Control/ScpUtil.cs
+++ b/DS4Windows/DS4Control/ScpUtil.cs
@@ -266,6 +266,10 @@ namespace DS4Windows
set { m_Config.flashWhenLateAt = value; }
get { return m_Config.flashWhenLateAt; }
}
+ public static int getFlashWhenLateAt()
+ {
+ return m_Config.flashWhenLateAt;
+ }
public static bool UseWhiteIcon
{
set { m_Config.useWhiteIcon = value; }
@@ -277,8 +281,24 @@ namespace DS4Windows
public static byte[] RumbleBoost => m_Config.rumble;
public static double[] Rainbow => m_Config.rainbow;
public static bool[] FlushHIDQueue => m_Config.flushHIDQueue;
- public static int[] IdleDisconnectTimeout => m_Config.idleDisconnectTimeout;
+ public static bool getFlushHIDQueue(int index)
+ {
+ return m_Config.flushHIDQueue[index];
+ }
+ public static int[] IdleDisconnectTimeout => m_Config.idleDisconnectTimeout;
+ public static int getIdleDisconnectTimeout(int index)
+ {
+ return m_Config.idleDisconnectTimeout[index];
+ }
public static byte[] TouchSensitivity => m_Config.touchSensitivity;
+ public static byte[] getTouchSensitivity()
+ {
+ return m_Config.touchSensitivity;
+ }
+ public static byte getTouchSensitivity(int index)
+ {
+ return m_Config.touchSensitivity[index];
+ }
public static byte[] FlashType => m_Config.flashType;
public static byte getFlashType(int index)
{
@@ -296,6 +316,10 @@ namespace DS4Windows
public static bool[] DinputOnly => m_Config.dinputOnly;
public static bool[] StartTouchpadOff => m_Config.startTouchpadOff;
public static bool[] UseTPforControls => m_Config.useTPforControls;
+ public static bool getUseTPforControls(int index)
+ {
+ return m_Config.useTPforControls[index];
+ }
public static bool[] UseSAforMouse => m_Config.useSAforMouse;
public static string[] SATriggers => m_Config.sATriggers;
public static int[] GyroSensitivity => m_Config.gyroSensitivity;
@@ -310,6 +334,15 @@ namespace DS4Windows
public static byte[] TapSensitivity => m_Config.tapSensitivity;
public static bool[] DoubleTap => m_Config.doubleTap;
public static int[] ScrollSensitivity => m_Config.scrollSensitivity;
+ public static int[] getScrollSensitivity()
+ {
+ return m_Config.scrollSensitivity;
+ }
+ public static int getScrollSensitivity(int index)
+ {
+ return m_Config.scrollSensitivity[index];
+ }
+
public static bool[] LowerRCOn => m_Config.lowerRCOn;
public static bool[] TouchpadJitterCompensation => m_Config.touchpadJitterCompensation;
diff --git a/DS4Windows/DS4Library/DS4Device.cs b/DS4Windows/DS4Library/DS4Device.cs
index be4a654..216ac3d 100644
--- a/DS4Windows/DS4Library/DS4Device.cs
+++ b/DS4Windows/DS4Library/DS4Device.cs
@@ -474,7 +474,7 @@ namespace DS4Windows
else
{
//HidDevice.ReadStatus res = hDevice.ReadFile(inputReport);
- HidDevice.ReadStatus res = hDevice.ReadAsyncWithFileStream(inputReport2, READ_STREAM_TIMEOUT);
+ HidDevice.ReadStatus res = hDevice.ReadAsyncWithFileStream(inputReport, READ_STREAM_TIMEOUT);
readTimeout.Enabled = false;
if (res != HidDevice.ReadStatus.Success)
{
@@ -487,7 +487,7 @@ namespace DS4Windows
}
else
{
- Array.Copy(inputReport2, 0, inputReport, 0, inputReport.Length);
+ //Array.Copy(inputReport2, 0, inputReport, 0, inputReport.Length);
}
}
if (ConnectionType == ConnectionType.BT && btInputReport[0] != 0x11)
@@ -759,8 +759,8 @@ namespace DS4Windows
public void getExposedState(DS4StateExposed expState, DS4State state)
{
cState.CopyTo(state);
- expState.Accel = accel;
- expState.Gyro = gyro;
+ expState.setAccel(accel);
+ expState.setGyro(gyro);
}
public void getCurrentState(DS4State state)
diff --git a/DS4Windows/DS4Library/DS4StateExposed.cs b/DS4Windows/DS4Library/DS4StateExposed.cs
index f69dedd..c7ec114 100644
--- a/DS4Windows/DS4Library/DS4StateExposed.cs
+++ b/DS4Windows/DS4Library/DS4StateExposed.cs
@@ -48,8 +48,17 @@ namespace DS4Windows
/// Holds raw DS4 input data from 14 to 19
public byte[] Accel { set { accel = value; } }
+ public void setAccel(byte[] value)
+ {
+ accel = value;
+ }
+
/// Holds raw DS4 input data from 20 to 25
public byte[] Gyro { set { gyro = value; } }
+ public void setGyro(byte[] value)
+ {
+ gyro = value;
+ }
/// Yaw leftward/counter-clockwise/turn to port or larboard side
/// Add double the previous result to this delta and divide by three.