feat(sdvxio-kfca): Use new config api

Summary:

Test Plan:
This commit is contained in:
icex2
2024-08-17 12:51:00 +02:00
parent 8a68e563e0
commit d98311762b
7 changed files with 55 additions and 155 deletions

View File

@@ -681,6 +681,7 @@ $(zipdir)/sdvx-hwio-x86.zip: \
build/bin/indep-32/vigem-sdvxio.exe \
dist/sdvx/eamio-icca.xml \
dist/sdvx/sdvxio-bio2.xml \
dist/sdvx/sdvxio-kfca.xml \
| $(zipdir)/
$(V)echo ... $@
$(V)zip -j $@ $^
@@ -693,6 +694,7 @@ $(zipdir)/sdvx-hwio-x64.zip: \
build/bin/indep-64/vigem-sdvxio.exe \
dist/sdvx/eamio-icca.xml \
dist/sdvx/sdvxio-bio2.xml \
dist/sdvx/sdvxio-kfca.xml \
| $(zipdir)/
$(V)echo ... $@
$(V)zip -j $@ $^

8
dist/sdvx/sdvxio-kfca.xml vendored Normal file
View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="Shift-JIS"?>
<sdvxio-kfca>
<port __type="str">COM4</port>
<baud __type="s32">115200</baud>
<main_override __type="s32">-1</main_override>
<headphone_override __type="s32">-1</headphone_override>
<subwoofer_override __type="s32">-1</subwoofer_override>
</sdvxio-kfca>

View File

@@ -2,13 +2,13 @@ dlls += sdvxio-kfca
libs_sdvxio-kfca := \
aciodrv \
cconfig \
util \
iface \
module \
iface-acio \
iface-core \
util \
security \
src_sdvxio-kfca := \
sdvxio.c \

View File

@@ -1,118 +1,14 @@
#include "cconfig/cconfig-util.h"
#include "iface-core/log.h"
#include "core/config-ext.h"
#include "sdvxio-kfca/config-kfca.h"
#define SDVXIO_KFCA_CONFIG_KFCA_PORT_KEY "kfca.port"
#define SDVXIO_KFCA_CONFIG_KFCA_BAUD_KEY "kfca.baud"
#define SDVXIO_KFCA_CONFIG_MAIN_AMP_VOLUME_KEY "kfca.main_override"
#define SDVXIO_KFCA_CONFIG_HEADPHONE_AMP_VOLUME_KEY "kfca.headphone_override"
#define SDVXIO_KFCA_CONFIG_SUBWOOFER_AMP_VOLUME_KEY "kfca.subwoofer_override"
#define SDVXIO_KFCA_CONFIG_KFCA_DEFAULT_PORT_VALUE "COM3"
#define SDVXIO_KFCA_CONFIG_KFCA_DEFAULT_BAUD_VALUE 57600
#define SDVXIO_KFCA_CONFIG_DEFAULT_MAIN_AMP_VOLUME_VALUE -1
#define SDVXIO_KFCA_CONFIG_DEFAULT_HEADPHONE_AMP_VOLUME_VALUE -1
#define SDVXIO_KFCA_CONFIG_DEFAULT_SUBWOOFER_AMP_VOLUME_VALUE -1
void sdvxio_kfca_config_kfca_init(struct cconfig *config)
{
cconfig_util_set_str(
config,
SDVXIO_KFCA_CONFIG_KFCA_PORT_KEY,
SDVXIO_KFCA_CONFIG_KFCA_DEFAULT_PORT_VALUE,
"KFCA ACIO serial port");
cconfig_util_set_int(
config,
SDVXIO_KFCA_CONFIG_KFCA_BAUD_KEY,
SDVXIO_KFCA_CONFIG_KFCA_DEFAULT_BAUD_VALUE,
"KFCA ACIO bus baudrate (real devices expect 57600)");
cconfig_util_set_int(
config,
SDVXIO_KFCA_CONFIG_MAIN_AMP_VOLUME_KEY,
SDVXIO_KFCA_CONFIG_DEFAULT_MAIN_AMP_VOLUME_VALUE,
"SDVXIO digital amp main volume (0-96) 0 is high, 96 is low. -1 is no "
"override.");
cconfig_util_set_int(
config,
SDVXIO_KFCA_CONFIG_HEADPHONE_AMP_VOLUME_KEY,
SDVXIO_KFCA_CONFIG_DEFAULT_HEADPHONE_AMP_VOLUME_VALUE,
"SDVXIO digital amp headphone volume (0-96) 0 is high, 96 is low. -1 "
"is no override.");
cconfig_util_set_int(
config,
SDVXIO_KFCA_CONFIG_SUBWOOFER_AMP_VOLUME_KEY,
SDVXIO_KFCA_CONFIG_DEFAULT_SUBWOOFER_AMP_VOLUME_VALUE,
"SDVXIO digital amp subwoofer volume (0-96) 0 is high, 96 is low. -1 "
"is no override.");
}
void sdvxio_kfca_config_kfca_get(
struct sdvxio_kfca_config_kfca *config_kfca, struct cconfig *config)
const bt_core_config_t *config,
sdvxio_kfca_config_kfca_t *config_out)
{
if (!cconfig_util_get_str(
config,
SDVXIO_KFCA_CONFIG_KFCA_PORT_KEY,
config_kfca->port,
sizeof(config_kfca->port) - 1,
SDVXIO_KFCA_CONFIG_KFCA_DEFAULT_PORT_VALUE)) {
log_warning(
"Invalid value for key '%s' specified, fallback "
"to default '%s'",
SDVXIO_KFCA_CONFIG_KFCA_PORT_KEY,
SDVXIO_KFCA_CONFIG_KFCA_DEFAULT_PORT_VALUE);
}
if (!cconfig_util_get_int(
config,
SDVXIO_KFCA_CONFIG_KFCA_BAUD_KEY,
&config_kfca->baud,
SDVXIO_KFCA_CONFIG_KFCA_DEFAULT_BAUD_VALUE)) {
log_warning(
"Invalid value for key '%s' specified, fallback "
"to default '%d'",
SDVXIO_KFCA_CONFIG_KFCA_BAUD_KEY,
SDVXIO_KFCA_CONFIG_KFCA_DEFAULT_BAUD_VALUE);
}
if (!cconfig_util_get_int(
config,
SDVXIO_KFCA_CONFIG_MAIN_AMP_VOLUME_KEY,
&config_kfca->override_main_volume,
SDVXIO_KFCA_CONFIG_DEFAULT_MAIN_AMP_VOLUME_VALUE)) {
log_warning(
"Invalid value for key '%s' specified, fallback "
"to default '%d'",
SDVXIO_KFCA_CONFIG_MAIN_AMP_VOLUME_KEY,
SDVXIO_KFCA_CONFIG_DEFAULT_MAIN_AMP_VOLUME_VALUE);
}
if (!cconfig_util_get_int(
config,
SDVXIO_KFCA_CONFIG_HEADPHONE_AMP_VOLUME_KEY,
&config_kfca->override_headphone_volume,
SDVXIO_KFCA_CONFIG_DEFAULT_HEADPHONE_AMP_VOLUME_VALUE)) {
log_warning(
"Invalid value for key '%s' specified, fallback "
"to default '%d'",
SDVXIO_KFCA_CONFIG_HEADPHONE_AMP_VOLUME_KEY,
SDVXIO_KFCA_CONFIG_DEFAULT_HEADPHONE_AMP_VOLUME_VALUE);
}
if (!cconfig_util_get_int(
config,
SDVXIO_KFCA_CONFIG_SUBWOOFER_AMP_VOLUME_KEY,
&config_kfca->override_sub_volume,
SDVXIO_KFCA_CONFIG_DEFAULT_SUBWOOFER_AMP_VOLUME_VALUE)) {
log_warning(
"Invalid value for key '%s' specified, fallback "
"to default '%d'",
SDVXIO_KFCA_CONFIG_SUBWOOFER_AMP_VOLUME_KEY,
SDVXIO_KFCA_CONFIG_DEFAULT_SUBWOOFER_AMP_VOLUME_VALUE);
}
}
bt_core_config_str_get(config, "kfca/port", config_out->port, sizeof(config_out->port));
bt_core_config_s32_get(config, "kfca/baud", &config_out->baud);
bt_core_config_s32_get(config, "kfca/main_override", &config_out->override_main_volume);
bt_core_config_s32_get(config, "kfca/headphone_override", &config_out->override_headphone_volume);
bt_core_config_s32_get(config, "kfca/subwoofer_override", &config_out->override_sub_volume);
}

View File

@@ -1,21 +1,20 @@
#ifndef SDVXIO_KFCA_CONFIG_KFCA_H
#define SDVXIO_KFCA_CONFIG_KFCA_H
#include <windows.h>
#include <stdint.h>
#include "cconfig/cconfig.h"
#include "api/core/config.h"
struct sdvxio_kfca_config_kfca {
typedef struct sdvxio_kfca_config_kfca {
char port[64];
int32_t baud;
int32_t override_main_volume;
int32_t override_headphone_volume;
int32_t override_sub_volume;
};
void sdvxio_kfca_config_kfca_init(struct cconfig *config);
} sdvxio_kfca_config_kfca_t;
void sdvxio_kfca_config_kfca_get(
struct sdvxio_kfca_config_kfca *config_kfca, struct cconfig *config);
const bt_core_config_t *config,
sdvxio_kfca_config_kfca_t *config_out);
#endif

View File

@@ -2,7 +2,9 @@ LIBRARY sdvxio
EXPORTS
; Bemanitools 6 API
bt_module_core_config_api_set
bt_module_core_log_api_set
bt_module_configure_do
bt_module_io_sdvx_api_get
; Direct API

View File

@@ -8,15 +8,17 @@
#include "acio/acio.h"
#include "api/core/config.h"
#include "api/core/log.h"
#include "cconfig/cconfig-main.h"
#include "iface-core/config.h"
#include "iface-acio/mgr.h"
#include "iface-core/log.h"
#include "main/module/acio-mgr-ext.h"
#include "sdk/module/core/config.h"
#include "sdk/module/configure.h"
#include "sdk/module/core/log.h"
#include "sdk/module/io/sdvx.h"
@@ -24,6 +26,8 @@
#include "sdvxio-kfca/config-kfca.h"
static sdvxio_kfca_config_kfca_t _sdvxio_kfca_config;
static uint16_t sdvx_io_gpio[2];
static uint8_t sdvx_io_gpio_sys;
static uint16_t sdvx_io_analog[2];
@@ -50,36 +54,13 @@ static void _bt_io_jb_module_acio_mgr_init(module_acio_mgr_t **module)
bool bt_io_sdvx_init()
{
struct cconfig *config;
struct sdvxio_kfca_config_kfca config_kfca;
config = cconfig_init();
sdvxio_kfca_config_kfca_init(config);
if (!cconfig_main_config_init(
config,
"--kfca-config",
"sdvxio-kfca.conf",
"--help",
"-h",
"sdvxio-kfca",
CCONFIG_CMD_USAGE_OUT_STDOUT)) {
cconfig_finit(config);
exit(EXIT_FAILURE);
}
sdvxio_kfca_config_kfca_get(&config_kfca, config);
cconfig_finit(config);
_bt_io_jb_module_acio_mgr_init(&acio_mgr_module);
acio_manager_ctx =
bt_acio_mgr_port_init(config_kfca.port, config_kfca.baud);
bt_acio_mgr_port_init(_sdvxio_kfca_config.port, _sdvxio_kfca_config.baud);
if (acio_manager_ctx == NULL) {
log_info("Opening acio device on [%s] failed", config_kfca.port);
log_info("Opening acio device on [%s] failed", _sdvxio_kfca_config.port);
return 0;
}
@@ -116,14 +97,14 @@ bool bt_io_sdvx_init()
uint8_t headphone = 0;
uint8_t subwoofer = 0;
if (config_kfca.override_main_volume >= 0) {
primary = config_kfca.override_main_volume;
if (_sdvxio_kfca_config.override_main_volume >= 0) {
primary = _sdvxio_kfca_config.override_main_volume;
}
if (config_kfca.override_headphone_volume >= 0) {
headphone = config_kfca.override_headphone_volume;
if (_sdvxio_kfca_config.override_headphone_volume >= 0) {
headphone = _sdvxio_kfca_config.override_headphone_volume;
}
if (config_kfca.override_sub_volume >= 0) {
subwoofer = config_kfca.override_sub_volume;
if (_sdvxio_kfca_config.override_sub_volume >= 0) {
subwoofer = _sdvxio_kfca_config.override_sub_volume;
}
bool init_result = aciodrv_kfca_amp(
@@ -264,11 +245,23 @@ bool bt_io_sdvx_amp_volume_set(
return true;
}
void bt_module_core_config_api_set(const bt_core_config_api_t *api)
{
bt_core_config_api_set(api);
}
void bt_module_core_log_api_set(const bt_core_log_api_t *api)
{
bt_core_log_api_set(api);
}
bool bt_module_configure_do(const bt_core_config_t *config)
{
sdvxio_kfca_config_kfca_get(config, &_sdvxio_kfca_config);
return true;
}
void bt_module_io_sdvx_api_get(bt_io_sdvx_api_t *api)
{
api->version = 1;