Commit Graph

2108 Commits

Author SHA1 Message Date
Yaroslav Chvanov
1b04bcffba sinowealth: visually separate config report data specific to long mice 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
e5093e1009 sinowealth: prefix some of our data type names 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
132fc21212 sinowealth: sanity check output of all raw data getters
Well, of almost all, config getter's output is not checked as it may
have seemingly incorrect data in some cases.

Potentially some mice may not support some commands but look like they
do. You can see this guard in action if you run
`sinowealth_print_long_lod_and_anglesnapping` after any other command
that sets 6 byte long buffer on non-long mice.
2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
3793e32ebd sinowealth: put a macro into an enum 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
4e931cb712 sinowealth: remove a now unused macro 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
e1682171ce sinowealth: improve comments
- Add comments to almost all functions.
- Add comments to some data types and macros.
- Add missing periods where it's needed.
2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
e1334214b8 sinowealth: make the sensor maximum DPI getter return 0 on error 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
fd0954dbdc sinowealth: remove new-lines between data types and their size checks 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
aa1ab47f59 sinowealth: make update_profile_from_config a void function
It only ever returned `0`.
2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
7585d73ff5 sinowealth: rename macros with config size to make more sense 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
81ca281f2c sinowealth: don't mark inactive profile as active 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
48d654827e sinowealth: cache current profile index in driver data 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
6c9306b199 sinowealth: store config report in an array 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
a9c0060029 sinowealth: add a macro for profile count 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
a289612d85 sinowealth: initialize all variables
While none of them were actually used before being initialized, I got
tired of constantly seeing `uninitialized variable` warnings in my
editor.
2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
f7b7007897 sinowealth: declare a variable right before it's initialization
It's not in the beginning of the function anyway, so why not make it a
bit more concise.
2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
16333068b7 sinowealth: use for_each instead of manually getting profiles 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
eace92870a sinowealth: set the command before writing config
This will help if the config report has a different command in it for
some reason. This has happened to me when I tried using the second
profile.
2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
c176825051 sinowealth: use uint8_t instead of char for report IDs
Also move one of them up, this may make the function a bit more readable
if we ever decide to support the second mouse profile.

Fixes a clang-tidy warning.
2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
ba3547457c sinowealth: split commit into raw data update and raw write helpers
This will get handy if we decide to add multiple profile support.
2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
3f936eff68 data: add another name to Glorious Model O - O- 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
c25864c18a data: add SinoWealth Generic Mouse (258a:0027) 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
cf64aac5f1 sinowealth: set the RGB effect to unsupported if LED type is not defined 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
0a39552a65 sinowealth: add default sensor type and LED type 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
03d2d71f82 sinowealth: don't enable LED support if LED type is not defined 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
1edb6df25b sinowealth: define set_active_profile method in the driver 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
9c7494c5c0 sinowealth: select first profile before getting any data from the mouse 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
7f29c0423f sinowealth: add active profile setter 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
07307b85d3 sinowealth: add commands IDs for the second profile 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
219218118d sinowealth: print LOD and angle snapping value 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
1e2489c9e7 sinowealth: add LOD and angle snapping value getter
LOD - lift-off distance.
2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
479c4352af sinowealth: print debounce time 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
763655516c sinowealth: add debounce time getter 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
944c4f0af5 sinowealth: print profile index 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
268ccab111 sinowealth: add profile index getter
Thank you so much, @araghon007!
2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
603b0ca1fc sinowealth: use RGB or RBG colors depending on device 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
4e50c506de sinowealth: format code 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
4351eb3d72 sinowealth: support different sensors 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
9f4a1ba405 sinowealth: print device model based on firmware version
sinowealth: detect Glorious Model O with old firmware
2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
451894b1b4 sinowealth: make the firmware version printing helper return it instead 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
c6051cb9ea sinowealth: handle new RGB effects 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
34fafbc0f8 sinowealth: use enum types in config report directly
Although I'm not sure this if this would work on every compiler, having
a bit of extra type safety is always nice.
It does work with GCC and Clang at the very least.
2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
75d075cc67 sinowealth: make some utility functions take unsigned integers
To avoid implicit conversions.
2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
2f330b6466 sinowealth: use a struct to store lighting mode 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
c7adc9b9f6 sinowealth: print config data size 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
16a7b6ed18 sinowealth: use NULL instead of 0 for pointers 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
7ff73c8515 sinowealth: rename a config entry to make more sense 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
f11e31d671 sinowealth: add some hidden lighting types
These are not available in Glorious software.
2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
f69457c280 sinowealth: add breathing_mode to config report 2022-02-01 07:20:28 +10:00
Yaroslav Chvanov
756fee1202 sinowealth: sort values in an enum 2022-02-01 07:20:28 +10:00