From 35ec276979e62a16ca385a2a0118ddb6fa3eccaa Mon Sep 17 00:00:00 2001 From: onyx-and-iris Date: Thu, 27 Jun 2024 02:51:27 +0100 Subject: [PATCH] add login timeout print the API version to info string --- src/vmr.c | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/src/vmr.c b/src/vmr.c index 9aa8d3a..8640211 100644 --- a/src/vmr.c +++ b/src/vmr.c @@ -1,17 +1,19 @@ #include #include +#include #include "vmr.h" #include "log.h" long login(T_VBVMR_INTERFACE *iVMR, int kind) { int rep; + long v; rep = iVMR->VBVMR_Login(); Sleep(20); if (rep == 1) { - rep = run_voicemeeter(iVMR, kind); + run_voicemeeter(iVMR, kind); switch (kind) { case BASIC: @@ -28,11 +30,27 @@ long login(T_VBVMR_INTERFACE *iVMR, int kind) break; } - Sleep(1200); + time_t endwait; + int timeout = 2; + + endwait = time(NULL) + timeout; + while (time(NULL) < endwait) + { + if ((rep = version(iVMR, &v)) == 0) + break; + Sleep(20); + } } if (rep == 0) { - log_info("Successfully logged into the Voicemeeter API"); + version(iVMR, &v); + long v1 = (v & 0xFF000000) >> 24, + v2 = (v & 0x00FF0000) >> 16, + v3 = (v & 0x0000FF00) >> 8, + v4 = (v & 0x000000FF); + char version_s[128]; + sprintf(version_s, "%i.%i.%i.%i", (int)v1, (int)v2, (int)v3, (int)v4); + log_info("Successfully logged into the Voicemeeter API v%s", version_s); clear_dirty(iVMR); } return rep; @@ -62,29 +80,31 @@ long type(T_VBVMR_INTERFACE *iVMR, long *type) long version(T_VBVMR_INTERFACE *iVMR, long *version) { - return iVMR->VBVMR_GetVoicemeeterType(version); + log_trace("VBVMR_GetVoicemeeterType( *v)"); + return iVMR->VBVMR_GetVoicemeeterVersion(version); } bool is_pdirty(T_VBVMR_INTERFACE *iVMR) { + log_trace("VBVMR_IsParametersDirty()"); return iVMR->VBVMR_IsParametersDirty() == 1; } long get_parameter_float(T_VBVMR_INTERFACE *iVMR, char *param, float *f) { - log_trace("VBVMR_GetParameterFloat(%s, %f)", param, f); + log_trace("VBVMR_GetParameterFloat(%s, *f)", param, f); return iVMR->VBVMR_GetParameterFloat(param, f); } long get_parameter_string(T_VBVMR_INTERFACE *iVMR, char *param, char *s) { - log_trace("VBVMR_GetParameterStringA(%s, %s)", param, s); + log_trace("VBVMR_GetParameterStringA(%s, *s)", param, s); return iVMR->VBVMR_GetParameterStringA(param, s); } long set_parameter_float(T_VBVMR_INTERFACE *iVMR, char *param, float val) { - log_trace("VBVMR_SetParameterFloat(%s, %f)", param, val); + log_trace("VBVMR_SetParameterFloat(%s, %.2f)", param, val); return iVMR->VBVMR_SetParameterFloat(param, val); }