chenlh
2025-09-18 ab07ada908b82340e7acd899e85a9802cf8a9057
src/tg/tg_user_ctrl.cpp
@@ -4,12 +4,13 @@
 *  Created on: 2025年7月24日
 *      Author: 86189
 */
#include <stdio.h>
#include "IModule.h"
#include "module_def.h"
#include "tg_user_ctrl.h"
u32 tg_param_ctrl::Signalgen_Ctrl(IModule* m, u32 pID, s16* val_c)
u32 tg_param_ctrl::Signalgen_Ctrl(IModule* m, u32 pID, s16* val_c, u32 num)
{
   enum SGItemType{
      SG_MUTE = 0x1,
@@ -49,41 +50,37 @@
   return 0;
}
u32 tg_param_ctrl::Input_Ctrl(IModule* m, u32 pID, s16* val_c)
u32 tg_param_ctrl::Input_Ctrl(IModule* m, u32 pID, s16* val_c, u32 num)
{
   enum GainID {
   enum Input_ID{
      GAIN = 0x1,
      MUTE,
      SENSI,
      PHANTOM,
      PHASE = 9,
      STEP,//-500~+500
      TYPE,
      FREQ,
      LEVEL,
      NAME,
      PHASE,
      STEP,
      LINK,
      CHANNEL_LEVEL,
      INPUT_MIN,
      INPUT_MAX,
   };
   enum PitchID {
      PITCH_BYPASS = 0x1,//
      PITCH_SEMITONES,//
   };
   short val[4];
   int channel = val_c[0]&(MAX_INPUT_NUM-1);
   int channel = val_c[0];//&(MAX_INPUT_NUM-1);
   if(pID == INPUT_STEP) {
      val[0] = channel;  val[1] = RESSIGNBIT(val_c[1]);
      m->Ctrl(STEP, val, 2);
   }
   else {
      val[0] = channel;  val[1] = RESSIGNBIT(val_c[1]);
      m->Ctrl(pID, val, 2);
   }
   val[0] = channel;  val[1] = RESSIGNBIT(val_c[1]);
   m->Ctrl(pID, val, 2);
   return 0;
}
u32 tg_param_ctrl::Gain_Ctrl(IModule* m, u32 pID, s16* val_c)
u32 tg_param_ctrl::Gain_Ctrl(IModule* m, u32 pID, s16* val_c, u32 num)
{
   enum GainID {
      GAIN = 0x1,
@@ -96,7 +93,7 @@
   };
   short val[4];
   int channel = val_c[0]&(MAX_INPUT_NUM-1);
   int channel = val_c[0];//&(MAX_INPUT_NUM-1);
   if(pID == 0x20) {
      val[0] = channel;  val[1] = RESSIGNBIT(val_c[1]);
@@ -106,7 +103,7 @@
   return 0;
}
u32 tg_param_ctrl::Output_Ctrl(IModule* m, u32 pID, s16* val_c)
u32 tg_param_ctrl::Output_Ctrl(IModule* m, u32 pID, s16* val_c, u32 num)
{
   enum GainID {
      GAIN = 0x1,
@@ -119,7 +116,7 @@
   };
   short val[4];
   int channel = val_c[0]&(MAX_OUTPUT_NUM-1);
   int channel = val_c[0];//&(MAX_OUTPUT_NUM-1);
   short cmd[16] = {GAIN, MUTE, 0, PHASE, SENSI, STEP, 0, 0, 0, 0, 0, 0 ,0 ,0 ,0 ,0 };
   val[0] = channel;
@@ -130,7 +127,7 @@
   return 0;
}
u32 tg_param_ctrl::Mixer_Ctrl(IModule* m, u32 pID, s16* val_c)
u32 tg_param_ctrl::Mixer_Ctrl(IModule* m, u32 pID, s16* val_c, u32 num)
{
   short val[4];
@@ -152,7 +149,7 @@
   return 0;
}
u32 tg_param_ctrl::Crossover_Ctrl(IModule* m, u32 pID, s16* val_c)
u32 tg_param_ctrl::Crossover_Ctrl(IModule* m, u32 pID, s16* val_c, u32 num)
{
   enum CFilterID {
      _BYPASS = 0x1,
@@ -179,7 +176,7 @@
   return 0;
}
u32 tg_param_ctrl::Feedback_Ctrl(IModule* m, u32 pID, s16* val_c)
u32 tg_param_ctrl::Feedback_Ctrl(IModule* m, u32 pID, s16* val_c, u32 num)
{
//   enum NHSID{
//      FB_BYPASS = 0x1,
@@ -223,7 +220,7 @@
   return 0;
}
u32 tg_param_ctrl::Automixer_Ctrl(IModule* m, u32 pID, s16* val_c)
u32 tg_param_ctrl::Automixer_Ctrl(IModule* m, u32 pID, s16* val_c, u32 num)
{
   enum GainSharingAMID {
      AM_BYPASS =0x1,
@@ -247,7 +244,7 @@
   return 0;
}
u32 tg_param_ctrl::Aec_Ctrl(IModule* m, u32 pID, s16* val_c)
u32 tg_param_ctrl::Aec_Ctrl(IModule* m, u32 pID, s16* val_c, u32 num)
{
   enum AECID{
     BYPASS = 0X1,
@@ -265,18 +262,16 @@
     AGC_GAIN,
   };
   short val[4] = {0,0,0,0};
   short cmd[3] = {0, BYPASS, NLPLEVEL};
   short val[4];
   short cmd[12] = {0, BYPASS, NLPLEVEL, 0, 0,0};
   val[0] = RESSIGNBIT(val_c[0]);
   val[1] = RESSIGNBIT(val_c[1]);
   m->Ctrl(cmd[pID], val, 1);
   val[1] = RESSIGNBIT(val_c[0]);
   m->Ctrl(cmd[pID], val, 2);
   return 0;
}
u32 tg_param_ctrl::Sysctl_Ctrl(IModule* m, u32 pID, s16* val_c)
u32 tg_param_ctrl::Sysctl_Ctrl(IModule* m, u32 pID, s16* val_c, u32 num)
{
   enum SYSCTRLID{
      SYSCTL_MUTE = 0x1, //val[0]:0-unmute,1-mute
@@ -292,7 +287,7 @@
   return 0;
}
u32 tg_param_ctrl::Geq_Ctrl(IModule* m, u32 pID, s16* val_c)
u32 tg_param_ctrl::Geq_Ctrl(IModule* m, u32 pID, s16* val_c, u32 num)
{
   enum EQID{
     EQ_BYPASS_ALL = 0x1,
@@ -314,7 +309,7 @@
   return 0;
}
u32 tg_param_ctrl::Reverb_Ctrl(IModule* m, u32 pID, s16* val_c)
u32 tg_param_ctrl::Reverb_Ctrl(IModule* m, u32 pID, s16* val_c, u32 num)
{
   short val[4];
@@ -326,7 +321,7 @@
   return 0;
}
u32 tg_param_ctrl::Echo_Ctrl(IModule* m, u32 pID, s16* val_c)
u32 tg_param_ctrl::Echo_Ctrl(IModule* m, u32 pID, s16* val_c, u32 num)
{
   enum EchoID{
      ECHO_BYPASS = 1,
@@ -346,7 +341,7 @@
   return 0;
}
u32 tg_param_ctrl::General_Ctrl(IModule* m, u32 pID, s16* val_c)
u32 tg_param_ctrl::General_Ctrl(IModule* m, u32 pID, s16* val_c, u32 num)
{
   short val[4];
@@ -354,8 +349,38 @@
   val[1] = RESSIGNBIT(val_c[1]);
   m->Ctrl(pID, val, 2);
//   printf("pID:%d v[0]:%d v[1]:%d\n", pID, val[0], val[1]);
   return 0;
}
u32 tg_param_ctrl::Fir_Ctrl(IModule* m, u32 pID, s16* val_c, u32 num)
{
   enum FIRID {
      FIR_BYPASS = 0x1,  ////val[0]: 0-取消bypass, 1- 使能bypass
      FIR_NAME, //无用
      FIR_TAPS, //无用
      FIR_COEFFS, //val: 分包,最大长度1024 float. 无转换直接拷贝float.
   };
   s16 val[4];
   val[0] = RESSIGNBIT(val_c[0]);
   if(FIR_BYPASS == pID){
      m->Ctrl(pID, val, 1);   // val[0] is bypass or nobypass
   }
   else if (FIR_COEFFS == pID){
      m->Ctrl(pID, val_c, num);
   }
   return 0;
}