From 35040958719d428fbe9d5f1630575dca66ae3d4c Mon Sep 17 00:00:00 2001 From: Devaev Maxim Date: Wed, 19 Feb 2020 08:56:39 +0300 Subject: [PATCH] refactoring --- src/device.c | 10 +++++----- src/device.h | 13 +++++++++---- src/options.c | 16 ++++------------ 3 files changed, 18 insertions(+), 21 deletions(-) diff --git a/src/device.c b/src/device.c index 364f1eb..4765f01 100644 --- a/src/device.c +++ b/src/device.c @@ -626,20 +626,20 @@ static void _device_apply_controls(struct device_t *dev) { } # define CONTROL_MANUAL_CID(_cid, _field) { \ - if (dev->ctl._field.value_set) { \ + if (dev->ctl._field.mode == CTL_MODE_VALUE) { \ SET_CID_VALUE(_cid, _field, dev->ctl._field.value, false); \ - } else if (dev->ctl._field.default_set) { \ + } else if (dev->ctl._field.mode == CTL_MODE_DEFAULT) { \ SET_CID_DEFAULT(_cid, _field, false); \ } \ } # define CONTROL_AUTO_CID(_cid_auto, _cid_manual, _field) { \ - if (dev->ctl._field.value_set) { \ + if (dev->ctl._field.mode == CTL_MODE_VALUE) { \ SET_CID_VALUE(_cid_auto, _field##_auto, 0, true); \ SET_CID_VALUE(_cid_manual, _field, dev->ctl._field.value, false); \ - } else if (dev->ctl._field.auto_set) { \ + } else if (dev->ctl._field.mode == CTL_MODE_AUTO) { \ SET_CID_VALUE(_cid_auto, _field##_auto, 1, false); \ - } else if (dev->ctl._field.default_set) { \ + } else if (dev->ctl._field.mode == CTL_MODE_DEFAULT) { \ SET_CID_VALUE(_cid_auto, _field##_auto, 0, true); /* Reset inactive flag */ \ SET_CID_DEFAULT(_cid_manual, _field, false); \ SET_CID_DEFAULT(_cid_auto, _field##_auto, false); \ diff --git a/src/device.h b/src/device.h index 0b04ccc..55240b5 100644 --- a/src/device.h +++ b/src/device.h @@ -64,11 +64,16 @@ struct device_runtime_t { bool capturing; }; +enum control_mode_t { + CTL_MODE_NONE = 0, + CTL_MODE_VALUE, + CTL_MODE_AUTO, + CTL_MODE_DEFAULT, +}; + struct control_t { - int value; - bool value_set; - bool auto_set; - bool default_set; + enum control_mode_t mode; + int value; }; struct controls_t { diff --git a/src/options.c b/src/options.c index 844f591..e22a6bd 100644 --- a/src/options.c +++ b/src/options.c @@ -271,18 +271,14 @@ int options_parse(struct options_t *options, struct device_t *dev, struct encode } # define OPT_CTL_DEFAULT_NOBREAK(_dest) { \ - dev->ctl._dest.value_set = false; \ - dev->ctl._dest.auto_set = false; \ - dev->ctl._dest.default_set = true; \ + dev->ctl._dest.mode = CTL_MODE_DEFAULT; \ } # define OPT_CTL_MANUAL(_dest) { \ if (!strcasecmp(optarg, "default")) { \ OPT_CTL_DEFAULT_NOBREAK(_dest); \ } else { \ - dev->ctl._dest.value_set = true; \ - dev->ctl._dest.auto_set = false; \ - dev->ctl._dest.default_set = false; \ + dev->ctl._dest.mode = CTL_MODE_VALUE; \ OPT_NUMBER("--"#_dest, dev->ctl._dest.value, INT_MIN, INT_MAX, 0); \ } \ break; \ @@ -292,13 +288,9 @@ int options_parse(struct options_t *options, struct device_t *dev, struct encode if (!strcasecmp(optarg, "default")) { \ OPT_CTL_DEFAULT_NOBREAK(_dest); \ } else if (!strcasecmp(optarg, "auto")) { \ - dev->ctl._dest.value_set = false; \ - dev->ctl._dest.auto_set = true; \ - dev->ctl._dest.default_set = false; \ + dev->ctl._dest.mode = CTL_MODE_AUTO; \ } else { \ - dev->ctl._dest.value_set = true; \ - dev->ctl._dest.auto_set = false; \ - dev->ctl._dest.default_set = false; \ + dev->ctl._dest.mode = CTL_MODE_VALUE; \ OPT_NUMBER("--"#_dest, dev->ctl._dest.value, INT_MIN, INT_MAX, 0); \ } \ break; \