From 0d663cd6729160c610e3c6374f71097f8bb2af8b Mon Sep 17 00:00:00 2001 From: a1xd <68629610+a1xd@users.noreply.github.com> Date: Mon, 28 Sep 2020 10:02:04 -0400 Subject: disallow negative weight with non-additive types --- wrapper/wrapper.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'wrapper/wrapper.cpp') diff --git a/wrapper/wrapper.cpp b/wrapper/wrapper.cpp index 72ebdc7..3d77fc1 100644 --- a/wrapper/wrapper.cpp +++ b/wrapper/wrapper.cpp @@ -137,9 +137,12 @@ error_list_t^ get_accel_errors(AccelMode mode, AccelArgs^ args) if (args->acceleration > 1 && is_mode(am::natural, am::naturalgain)) error_list->Add("acceleration can not be greater than 1"); - else if (args->acceleration < 0) - error_list->Add("acceleration can not be negative, use a negative weight to compensate"); - + else if (args->acceleration < 0) { + bool additive = m < am::power; + if (additive) error_list->Add("acceleration can not be negative, use a negative weight to compensate"); + else error_list->Add("acceleration can not be negative"); + } + if (args->scale <= 0) error_list->Add("scale must be positive"); -- cgit v1.2.3 From e10e5a26d3d3576174285414ea805e5177742821 Mon Sep 17 00:00:00 2001 From: a1xd <68629610+a1xd@users.noreply.github.com> Date: Tue, 29 Sep 2020 07:26:05 -0400 Subject: add wrapper optimization --- wrapper/wrapper.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'wrapper/wrapper.cpp') diff --git a/wrapper/wrapper.cpp b/wrapper/wrapper.cpp index 3d77fc1..ebc4a2e 100644 --- a/wrapper/wrapper.cpp +++ b/wrapper/wrapper.cpp @@ -82,13 +82,12 @@ void as_native(DriverSettings^ managed_args, NativeSettingsFunc fn) if (Marshal::SizeOf(managed_args) != sizeof(settings)) throw gcnew InvalidOperationException("setting sizes differ"); #endif - IntPtr unmanagedHandle = Marshal::AllocHGlobal(sizeof(settings)); - Marshal::StructureToPtr(managed_args, unmanagedHandle, false); - fn(*reinterpret_cast(unmanagedHandle.ToPointer())); + settings args; + Marshal::StructureToPtr(managed_args, (IntPtr)&args, false); + fn(args); if constexpr (!std::is_invocable_v) { - Marshal::PtrToStructure(unmanagedHandle, managed_args); + Marshal::PtrToStructure((IntPtr)&args, managed_args); } - Marshal::FreeHGlobal(unmanagedHandle); } DriverSettings^ get_default() -- cgit v1.2.3 From 9bb5616061d823fa3632b0d99ba177ac2de74ade Mon Sep 17 00:00:00 2001 From: a1xd <68629610+a1xd@users.noreply.github.com> Date: Tue, 29 Sep 2020 07:43:50 -0400 Subject: set invisible args to default values before write --- wrapper/wrapper.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'wrapper/wrapper.cpp') diff --git a/wrapper/wrapper.cpp b/wrapper/wrapper.cpp index ebc4a2e..c5834d9 100644 --- a/wrapper/wrapper.cpp +++ b/wrapper/wrapper.cpp @@ -174,6 +174,7 @@ public: public ref struct DriverInterop { literal double WriteDelayMs = WRITE_DELAY; + static initonly AccelArgs^ DefaultArgs = get_default()->args.x; static DriverSettings^ GetActiveSettings() { -- cgit v1.2.3 From 7287427f1a4690e2b420a5dec3187d4b9e1cb69f Mon Sep 17 00:00:00 2001 From: a1xd <68629610+a1xd@users.noreply.github.com> Date: Tue, 29 Sep 2020 15:41:46 -0400 Subject: change scale cap key --- wrapper/wrapper.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'wrapper/wrapper.cpp') diff --git a/wrapper/wrapper.cpp b/wrapper/wrapper.cpp index c5834d9..c665bed 100644 --- a/wrapper/wrapper.cpp +++ b/wrapper/wrapper.cpp @@ -30,6 +30,7 @@ public value struct AccelArgs double exponent; double midpoint; double weight; + [JsonProperty("legacyCap")] double scaleCap; double gainCap; }; -- cgit v1.2.3