From 8445c54f01777513912d4c6d36c28e92a0ff33a0 Mon Sep 17 00:00:00 2001
From: chenlh <2008get@163.com>
Date: 星期四, 18 九月 2025 14:40:53 +0800
Subject: [PATCH] 首轮测试代码提交

---
 src/tg/tg_scene.cpp              |   68 +++++++++++++
 src/tg/tg_scene.h                |   10 ++
 src/tob.cpp                      |   58 +++++++++++
 system/startup_ldf/app_startup.s |    4 
 src/tg/tg_config.h               |    4 
 system/startup_ldf/app_IVT.s     |    4 
 src/main.cpp                     |   23 ++++
 src/tg/tg_adapter.cpp            |   55 +++++++++++
 src/messageproc.h                |    4 
 system/startup_ldf/app.ldf       |    4 
 src/ModuleExport.cpp             |    4 
 src/ModuleExport.h               |    4 
 src/scene.cpp                    |    3 
 src/hw_adapter.h                 |    5 
 src/messageproc.cpp              |   39 +++++++
 system/startup_ldf/app_heaptab.c |    4 
 16 files changed, 292 insertions(+), 1 deletions(-)

diff --git a/src/ModuleExport.cpp b/src/ModuleExport.cpp
index 2114d46..4e85bc5 100644
--- a/src/ModuleExport.cpp
+++ b/src/ModuleExport.cpp
@@ -19,7 +19,11 @@
 	ModuleProcessLibInit();
 
 	if (modules.empty()) {
+<<<<<<< HEAD
 		modules.push_back(ModuleEntry("Input", ModuleType::PROC_INPUT, SignalSourceCreate, ufalse)); //SignalSource
+=======
+		modules.push_back(ModuleEntry("SignalSource", ModuleType::PROC_INPUT, SignalSourceCreate, ufalse));
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 //		modules.push_back(ModuleEntry("Input",ModuleType::PROC_INPUT, InputCreate, ufalse));
 		modules.push_back(ModuleEntry("Output",ModuleType::PROC_OUTPUT, OutputCreate, ufalse));
 
diff --git a/src/ModuleExport.h b/src/ModuleExport.h
index 1b3889a..b048814 100644
--- a/src/ModuleExport.h
+++ b/src/ModuleExport.h
@@ -35,7 +35,11 @@
 	PROC_SHELF, // 高低架
 	PROC_SELECTOR, //混音器
 	PROC_GATING_AUTOMIXER, //门限自动混音	20
+<<<<<<< HEAD
 	PROC_CONTINUNOUS_SPL, //连续型SPL(噪声增益补偿)
+=======
+	PROC_CONTINUNOUS_SPL, //连续型SPL
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 	PROC_GATING,  //噪声门
 	PROC_DUCKER, //闪避器
 	PROC_REVERB, //混响
diff --git a/src/hw_adapter.h b/src/hw_adapter.h
index d7c03f2..fac2118 100644
--- a/src/hw_adapter.h
+++ b/src/hw_adapter.h
@@ -47,8 +47,11 @@
 		this->dante_output_num = dante_output_num;
 		this->usb_input_num = 2;
 		this->usb_output_num = 2;
+<<<<<<< HEAD
 		this->ana_input_num = local_input_num - usb_input_num;
 		this->ana_output_num = local_output_num - usb_output_num;
+=======
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 	}
 	uvoid get_channel_num(s8* loc_rx_num,s8* loc_tx_num,s8* dante_rx_num,s8* dante_tx_num,s8* usb_rx_num,s8* usb_tx_num)
 	{
@@ -72,7 +75,7 @@
 	//dai,sport配置顺序就已经决定了物理buffer.
 	virtual uvoid config_board(struct DSPConfig * conf) =0;
 
-	//根据逻辑通道号获取物理通道号
+	//根据逻辑通道号获取物理通道号,从0开始.
 	//逻辑通道号就是输入输出模块通道(端口)索引; 物理通道号是sport配置的buffer.
 	virtual s32 get_physical_channel(s32 input , s32 logic_channel) = 0;
 };
diff --git a/src/main.cpp b/src/main.cpp
index 876ea9d..88a9a8e 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -76,9 +76,15 @@
 		tob->toProc();
 
 		UpdateOutput(iid, DMACount[iid]&0x1);
+<<<<<<< HEAD
 //		LP_transmit();
 		ModulesAsynSetInterval(proc_secs);
 		fir_acc_startup();
+=======
+		//LP_transmit();
+//		ModulesAsynSetInterval(proc_secs);
+//		fir_acc_startup();
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 		clock_stop = clock();
 		proc_secs = ((ufloat) (clock_stop - clock_start))/ CLOCKS_PER_SEC;
 	}
@@ -87,7 +93,11 @@
 		UpdateOutput(iid, DMACount[iid]&0x1);
 	}
 
+<<<<<<< HEAD
 	++DMACount[iid];
+=======
+	DMACount[iid]++;
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 }
 
 int main(int argc, char *argv[])
@@ -130,11 +140,16 @@
 	GPIO_SetOutPut(GPIOA, GPIO_Pin12, GPIO_HIGH);
 	GPIO_SetOutPut(GPIOB, GPIO_Pin5, GPIO_HIGH);
 
+<<<<<<< HEAD
 	//第一次启动上报特别是仿真的时候需要arm'重新发握手.
 	spiMsg->DspStatusPush(DSP_EMULATE_DEBUG, 0, 0);
 	spiMsg->ReportDspStatus(&msg);
 
 	printf("free sram %d, L2 %d\n", sram_free_space(SRAM_DDR, mem_any), sram_free_space(SRAM_L2, mem_any));
+=======
+//	u32 ddrspace = sram_free_space(SRAM_DDR, mem_any);
+//	printf("ddrspace:%d\n", ddrspace);
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 
 	while(1) {
 		asyn_proc_secs = ModulesAsynProcess();
@@ -173,7 +188,11 @@
 		if(++loop_cnt > 5e+6){
 			if (var.clock_ok && clock_check_count == DMACount[var.master_intr]) {
 				var.dsp_status = dsp_no_clock;
+<<<<<<< HEAD
 				spiMsg->DspStatusPush(DSP_RUNNING_STATUS, &var.dsp_status ,1);
+=======
+				spiMsg->DspStatusPush(DSP_CLOCK_STATUS, &var.dsp_status ,1);
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 				spiMsg->ReportDspStatus(&msg);
 				printf("clk0 ok\n");
 			}
@@ -187,8 +206,12 @@
 			spiMsg->DspStatusPush(DSP_CLOCK_STATUS, &var.dsp_status, 1);
 			request_topo_count = DMACount[var.master_intr] ;
 			var.clock_ok = utrue;
+<<<<<<< HEAD
 			spiMsg->ReportDspStatus(&msg);
 			printf("clk2 ok\n");
+=======
+//			printf("clk2 ok\n");
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 		}
 
 
diff --git a/src/messageproc.cpp b/src/messageproc.cpp
index ae301d5..f007cb3 100644
--- a/src/messageproc.cpp
+++ b/src/messageproc.cpp
@@ -47,7 +47,11 @@
 	int data_len;
 
 	ToB* tob = ToB::GetInstance();
+<<<<<<< HEAD
 	u16 LevelCnt = tob->GetLevels(Levels);	//918 levels
+=======
+	u16 LevelCnt = tob->GetLevels(Levels);	//864 levels
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 	u32 msgLen = LevelCnt * sizeof(*Levels);
 	int Packegs = (msgLen+MSG_DATA_LEN-1)/MSG_DATA_LEN;
 
@@ -98,7 +102,11 @@
 
 		data_num = (data_num - sizeof(struct ParamCtrl))/sizeof(s16);
 //		ptr->mid = var.pscene->get_module_id(ptr->mid, type, ptr->cmd) ;
+<<<<<<< HEAD
 //		printf("mID:%d pID:%d val[0]:%d val[1]:%d\n",ptr->mid, ptr->cmd, data[0], data[1]);
+=======
+
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 		tob->toCtrl(ptr->mid, ptr->cmd, data, data_num);
 	}
 
@@ -139,14 +147,23 @@
 				var.TopoStatus = PRESET_STA::PRESET_ERR;
 			}
 			else if(tob){
+<<<<<<< HEAD
 				int preset_size = sizeof(tag_parameters); // 45128 + sizeof(tag_fir) * MAX_OUTPUT_NUM;	 // size + FIR
 				u8* content = (u8*)sram_malloc(SRAM_DDR, mem_any, preset_size);
+=======
+				u8* content = (u8*)sram_malloc(SRAM_DDR, mem_any, 45128);//45*1024);
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 				s32 size ;
 
 				tob->toClear();
 
 				var.pscene->update_module();
 				size = var.pscene->convert_to_bin(content);
+<<<<<<< HEAD
+=======
+
+				tob->toClear();
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 				tob->toAnalysis(content, size);
 
 				sram_free(SRAM_DDR, content);
@@ -159,6 +176,22 @@
 
 	return 0;
 }
+
+/*void Message::param_init(ptag_device_config pDevCfg)
+{
+	pDevCfg->dual_dsp = 0;
+	pDevCfg->dsp_index = 0;
+	pDevCfg->local_rx_num = 16;
+	pDevCfg->local_tx_num = 16;
+	pDevCfg->dante_rx_num = 16;
+	pDevCfg->dante_tx_num = 16;
+	pDevCfg->external_clock = 1;
+	pDevCfg->scene_size = 1000;
+	pDevCfg->level_num = 10;
+	pDevCfg->modulelist = 9;
+	pDevCfg->hardware_type = 1;
+
+}*/
 
 s32 Message::HandshakeMessageProcess(MSG* pmsg)
 {
@@ -176,9 +209,15 @@
 		}
 
 //		param_init(device_config);
+<<<<<<< HEAD
 		hw_adapter_t* _adapter = new tg_hw_adapter_t(device_config->dual_dsp, device_config->dsp_index
 							,device_config->local_rx_num, device_config->local_tx_num
 							,device_config->dante_rx_num, device_config->dante_tx_num);
+=======
+		hw_adapter_t* _adapter = new tg_hw_adapter_t(device_config->dual_dsp,device_config->dsp_index
+							,device_config->local_rx_num,device_config->local_tx_num
+							,device_config->dante_rx_num,device_config->dante_tx_num);
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 		var.pscene = new(SRAM_DDR) tgScene(_adapter);
 
 		_adapter->config_board(&dspconfig);
diff --git a/src/messageproc.h b/src/messageproc.h
index 4eeb767..e9a733e 100644
--- a/src/messageproc.h
+++ b/src/messageproc.h
@@ -37,7 +37,11 @@
 	Message(u32 num)
 	{
 		txQueue = new Queue<MSG>(num);
+<<<<<<< HEAD
 		Levels = new s16[1000];
+=======
+		Levels = new s16[868];
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 	}
 	~Message()
 	{
diff --git a/src/scene.cpp b/src/scene.cpp
index e8618b9..603de68 100644
--- a/src/scene.cpp
+++ b/src/scene.cpp
@@ -139,7 +139,10 @@
 			for(j = 0 ; j< ninports ;j ++, phy_id++) {
 				phy_id->mIntType = 0;
 				phy_id->mPhyID = hw_adapter->get_physical_channel(1, rxBufID[j]-1);
+<<<<<<< HEAD
 //				printf("PhyID:%d\n", phy_id->mPhyID);
+=======
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 			}
 			size += ninports*sizeof(PhyPort);
 		}
diff --git a/src/tg/tg_adapter.cpp b/src/tg/tg_adapter.cpp
index d227e73..eb293ab 100644
--- a/src/tg/tg_adapter.cpp
+++ b/src/tg/tg_adapter.cpp
@@ -2,8 +2,10 @@
 #include "tg_config.h"
 #include "tg_adapter.h"
 
+//参数logic_channel逻辑通道从0开始.
 s32 tg_hw_adapter_t::get_physical_channel(s32 input , s32 logic_channel)
 {
+<<<<<<< HEAD
     if(input) {
         s32 input_num = ana_input_num + dante_input_num ;
         if(logic_channel < ana_input_num) {
@@ -36,6 +38,41 @@
         	return (logic_channel > output_num) ? 17 : 18;
         }
     }
+=======
+	//s32 phy_channel[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18,19};
+	if(input) {
+		s32 input_num = ana_input_num + dante_input_num ;
+//		s32 local_ch = ana_input_num + usb_input_num;	// C H G 18
+		if(logic_channel < ana_input_num) {
+			//analog
+			return logic_channel+1;
+		}
+		else if(logic_channel < input_num) {
+			//dante
+			return 19 + (logic_channel - ana_input_num);
+		}
+		else {
+			//usb
+			return 17 + (logic_channel - input_num);
+		}
+	}
+	else {	//output
+		s32 output_num = ana_output_num + dante_output_num ;
+//		s32 local_ch = ana_output_num + usb_output_num;	// C H G 18
+		//analog
+		if(logic_channel < ana_output_num) {
+			return logic_channel;
+		}
+		else if(logic_channel < output_num) {
+			//dante
+			return 19 + (logic_channel - ana_output_num);
+		}
+		else {
+			//usb
+			return 17 + (logic_channel - output_num);
+		}
+	}
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 }
 
 //物理buffer定义顺序是16通道模拟+2通道USB+32通道Dante.
@@ -109,8 +146,13 @@
 		conf->sports[i].clke = utrue;
 		conf->sports[i].enable = utrue;
 		conf->sports[i].enable_sec = ufalse;
+<<<<<<< HEAD
 		conf->sports[i].lfs = ufalse;	// The USB left and right channels can be swapped.
 		conf->sports[i].mfd = 0;
+=======
+		conf->sports[i].lfs = ufalse;
+		conf->sports[i].mfd = 1;
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 		conf->sports[i].opmode = 1 ; //i2s
 		conf->sports[i].rx = ufalse;
 		conf->sports[i].slots = 2;
@@ -121,6 +163,7 @@
 	conf->sports[4].rx = utrue;
 
 	//USB pcg.
+<<<<<<< HEAD
 	conf->pcgs[1].enable = utrue;
 	conf->pcgs[1].opmode = 0;
 	conf->pcgs[1].fs_div = mclk / conf->mSampleRate ;
@@ -131,6 +174,13 @@
 	AddRoute(SourceSignal::PCG_FSB_O, DestSignal::SPT2_BFS_I);
 	AddRoute(SourceSignal::PCG_CLKB_O, DestSignal::SPT2_ACLK_I);
 	AddRoute(SourceSignal::PCG_CLKB_O, DestSignal::SPT2_BCLK_I);
+=======
+//	conf->pcgs[1].enable = utrue;
+//	conf->pcgs[1].opmode = 0;
+//	conf->pcgs[1].fs_div = mclk / conf->mSampleRate ;
+//	conf->pcgs[1].sclk_div = mclk / (conf->mSampleRate * 2 * 32);
+//	AddRoute(SourceSignal::DAI0_PB02_O, DestSignal::PCG_EXTB_I);
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 
 //	AddRoute(SourceSignal::LOGIC_HIGH, DestSignal::DAI0_PBEN09_I);//fs
 //	AddRoute(SourceSignal::LOGIC_HIGH, DestSignal::DAI0_PBEN08_I);//sclk
@@ -189,8 +239,13 @@
 			conf->sports[i].mfd = 1;
 			conf->sports[i].opmode = 0 ; //tdm
 			conf->sports[i].rx = ufalse;
+<<<<<<< HEAD
 			conf->sports[i].slots = 8;
 			conf->sports[i].vld = 8;
+=======
+			conf->sports[i].slots = 16;
+			conf->sports[i].vld = 16;
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 			conf->sports[i].follow_intr_no = intr_sport_no(8);
 		}
 		conf->sports[8].interrupt = utrue;
diff --git a/src/tg/tg_config.h b/src/tg/tg_config.h
index de4d30a..7db0fb7 100644
--- a/src/tg/tg_config.h
+++ b/src/tg/tg_config.h
@@ -10,7 +10,11 @@
 #include "config.h"
 
 //项目定制化宏定义.
+<<<<<<< HEAD
 #define MAX_INPUT_NUM 34	// ana:16, dante:16, usb:2
+=======
+#define MAX_INPUT_NUM 34
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 #define MAX_OUTPUT_NUM 34
 
 #define FEEDBACK_FILTERS_NUM 16	//NHS滤波器组数目
diff --git a/src/tg/tg_scene.cpp b/src/tg/tg_scene.cpp
index a6021bb..802f32e 100644
--- a/src/tg/tg_scene.cpp
+++ b/src/tg/tg_scene.cpp
@@ -14,24 +14,45 @@
 tgScene::tgScene(hw_adapter_t* adapter):Scene(adapter)
 {
 	s8 inport_str[16],outport_str[16];
+<<<<<<< HEAD
 	s8 ana_input_num, ana_output_num, loc_input_num, loc_output_num, dante_input_num, dante_output_num ;
 	s8 usb_input_num, usb_output_num;
 	s16 input_num, output_num ;
 	s32 n, new_idx = 300; //ID of the USB channel starts from 300.
+=======
+	s8 ana_input_num, ana_output_num,dante_input_num,dante_output_num ;
+	s8 usb_input_num = 2, usb_output_num = 2;
+	s16 input_num, output_num ;
+	s32 n, new_idx = 300; //usb 新增模块ID从300开始(与arm/pc协商一致),使用new_idx递增.
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 
 	s16 dual_dsp = adapter->get_system_is_dual_dsp();
 	s16 dsp_index = adapter->get_dsp_index();
 
+<<<<<<< HEAD
 	adapter->get_channel_num(&loc_input_num, &loc_output_num, &dante_input_num, &dante_output_num, &usb_input_num, &usb_output_num);
 	ana_input_num = loc_input_num - usb_input_num;
 	ana_output_num = loc_output_num - usb_output_num;
 
 	//鐗╃悊杈撳叆鍏�6+16+2
+=======
+	adapter->get_channel_num(&ana_input_num, &ana_output_num, &dante_input_num, &dante_output_num);
+
+	//新增加的2x2 usb是带处理的和输入,输出平级
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 	input_num = ana_input_num + dante_input_num + usb_input_num; //2 USB
 	output_num = ana_output_num + dante_output_num + usb_output_num;
 
 	tgScene_param_default(&parameters);
 
+<<<<<<< HEAD
+=======
+
+	//只有physic_type 为PHY_INPUT和PHY_OUTPUT的 才会调用XX_adapter.cpp下的get_physical_channel函数.
+	//所以这2两个模块类型 port_str 对应的是逻辑通道应该覆盖到所有物理通道包括模拟、dante、usb.
+	//逻辑通道也就是PC软件看到的通道顺序(ana+dante+usbL+usbR+am+aec+ans).
+	//物理通道是DMA配置的顺序,get_physical_channel就是做逻辑通道到物理通道的映射.
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 	sprintf(inport_str, "1-%d", input_num);
 	__MADD(299,PROC_INPUT,inport_str,inport_str,0, 1 ,&parameters.input,  0, ModuleInterfaceType::PHY_INPUT);
 
@@ -96,7 +117,11 @@
 	//am
 	sprintf(inport_str, "1-%d", input_num);
 	sprintf(outport_str, "1-%d", input_num+1);
+<<<<<<< HEAD
 	__MADD(161,PROC_AUTOMIXER,inport_str, outport_str, 0, 0, &parameters.automixer, 0, ModuleInterfaceType::SOFT_MODULE);  //驴脡脤忙禄禄
+=======
+	__MADD(161,PROC_AUTOMIXER,inport_str, outport_str, 0, 0, &parameters.automixer, 0, ModuleInterfaceType::SOFT_MODULE);  //可替换
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 
 	//aec selector
 	sprintf(inport_str, "1-%d", input_num+ 1);
@@ -121,7 +146,11 @@
 	//mixer
 	sprintf(inport_str, "1-%d", input_num+ 3);
 	sprintf(outport_str, "%d-%d",input_num+4, input_num+output_num+4);
+<<<<<<< HEAD
 	__MADD(166,PROC_MIXER,inport_str,outport_str,1, 1 ,&parameters.mixer, 0, ModuleInterfaceType::SOFT_MODULE);    // .begin()+48
+=======
+	__MADD(166,PROC_MIXER,inport_str,outport_str,1, 1 ,&parameters.mixer, 0, ModuleInterfaceType::SOFT_MODULE);	// .begin()+48
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 
 	//crossover
 	for(s32 i =0 ;i < output_num ; i++) {
@@ -135,29 +164,56 @@
 
 	//eq
 	for(s32 i =0 ;i < output_num ; i++) {
+<<<<<<< HEAD
 		sprintf(outport_str, "%d|", i+1);
 		if(i < output_num - usb_output_num)
 			__MADD(199+i,PROC_EQ,outport_str, outport_str,1, 0, &parameters.out2[i], 8, ModuleInterfaceType::SOFT_MODULE);
 		else
 			__MADD(new_idx++,PROC_EQ,outport_str, outport_str,1, 0, &parameters.out2[i], 8, ModuleInterfaceType::SOFT_MODULE);
+=======
+		sprintf(inport_str, "%d|", i+input_num+4);
+		sprintf(outport_str, "%d|", i+1);
+		if(i < output_num - usb_output_num)
+			__MADD(199+i,PROC_EQ,inport_str, outport_str,1, 0, &parameters.out2[i], 8, ModuleInterfaceType::SOFT_MODULE);
+		else
+			__MADD(new_idx++,PROC_EQ,inport_str, outport_str,1, 0, &parameters.out2[i], 8, ModuleInterfaceType::SOFT_MODULE);
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 	}
 
 	//delay
 	for(s32 i =0 ;i < output_num ; i++) {
+<<<<<<< HEAD
 		sprintf(outport_str, "%d|", i+1);
 		if(i < output_num - usb_output_num)
 			__MADD(231+i,PROC_DELAY,outport_str, outport_str,1, 0, &parameters.out3[i], 1200, ModuleInterfaceType::SOFT_MODULE);
 		else
 			__MADD(new_idx++,PROC_DELAY,outport_str, outport_str,1, 0, &parameters.out3[i], 1200, ModuleInterfaceType::SOFT_MODULE);
+=======
+		sprintf(inport_str, "%d|", i+input_num+4);
+		sprintf(outport_str, "%d|", i+1);
+		if(i < output_num - usb_output_num)
+			__MADD(231+i,PROC_DELAY,inport_str, outport_str,1, 0, &parameters.out3[i], 1200, ModuleInterfaceType::SOFT_MODULE);
+		else
+			__MADD(new_idx++,PROC_DELAY,inport_str, outport_str,1, 0, &parameters.out3[i], 1200, ModuleInterfaceType::SOFT_MODULE);
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 	}
 
 	//limit
 	for(s32 i =0 ;i < output_num ; i++) {
+<<<<<<< HEAD
 		sprintf(outport_str, "%d|", i+1);
 		if(i < output_num - usb_output_num)
 			__MADD(263+i,PROC_LIMIT,outport_str, outport_str,1, 0, &parameters.out4[i],0, ModuleInterfaceType::SOFT_MODULE);
 		else
 			__MADD(new_idx++,PROC_LIMIT,outport_str, outport_str,1, 0, &parameters.out4[i],0, ModuleInterfaceType::SOFT_MODULE);
+=======
+		sprintf(inport_str, "%d|", i+input_num+4);
+		sprintf(outport_str, "%d|", i+1);
+		if(i < output_num - usb_output_num)
+			__MADD(263+i,PROC_LIMIT,inport_str, outport_str,1, 0, &parameters.out4[i],0, ModuleInterfaceType::SOFT_MODULE);
+		else
+			__MADD(new_idx,PROC_LIMIT,inport_str, outport_str,1, 0, &parameters.out4[i],0, ModuleInterfaceType::SOFT_MODULE);
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 	}
 
 	//output
@@ -436,11 +492,14 @@
 		break;
 
 		case PROC_FIR:
+<<<<<<< HEAD
 			ptag_fir pfir = (ptag_fir)param_ptr;
 			pfir->bypass = allbypass;
 			pfir->taps = 1024;
 			memset((void*)pfir->coeffs, 0, sizeof(pfir->coeffs));
 			pfir->coeffs[0] = 1;
+=======
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 		break;
 
 		default:
@@ -486,6 +545,7 @@
 s32 tgScene::set_parameters_content(uvoid* param, s32 size)
 {
 	tag_parameters* pp = (tag_parameters*)param;
+<<<<<<< HEAD
 	int L[24] = {0};
 	if(pp->magic != 0xbcba || size != sizeof(tag_parameters)) {
 		printf("preset param error!\n");
@@ -508,6 +568,10 @@
 		printf("tag_group:%d, %d\n", sizeof(tag_group), L[18]=sizeof(tag_group)+L[17]);*/
 
 		printf("Len parameters:%d, Len recv:%d\n", L[19]=sizeof(tag_parameters), size);
+=======
+	if(pp->magic != 0xbcba || size != sizeof(tag_parameters)) {
+		printf("preset param error!\n");
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 		return -1;
 	}
 	memcpy(&parameters, param, sizeof(tag_parameters));
@@ -575,7 +639,11 @@
 
 s32 tgScene::update_module()
 {
+<<<<<<< HEAD
 	s8 ana_input_num, ana_output_num,dante_input_num,dante_output_num, usb_input_num, usb_output_num ;
+=======
+	s8 ana_input_num, ana_output_num,dante_input_num,dante_output_num ;
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 	s16 input_num, output_num ;
 	s16 dual_dsp = hw_adapter->get_system_is_dual_dsp();
 	s16 dsp_index = hw_adapter->get_dsp_index();
diff --git a/src/tg/tg_scene.h b/src/tg/tg_scene.h
index de25cbe..61a7047 100644
--- a/src/tg/tg_scene.h
+++ b/src/tg/tg_scene.h
@@ -13,7 +13,11 @@
 #include "../protocol.h"
 #include "module_def.h"
 
+<<<<<<< HEAD
 #pragma pack (1)
+=======
+
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 typedef struct {
 	unsigned short magic;
 	unsigned short nmds;
@@ -24,7 +28,13 @@
 
 	tag_input input;	//1362
 
+<<<<<<< HEAD
 	tag_module  in1[MAX_INPUT_NUM];	//4352
+=======
+	tag_input input;//1282
+
+	tag_module  in1[MAX_INPUT_NUM];
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 	tag_module  in2[MAX_INPUT_NUM];
 	tag_module  in3[MAX_INPUT_NUM];
 	tag_module  in4[MAX_INPUT_NUM];
diff --git a/src/tob.cpp b/src/tob.cpp
index 8d34e61..6a5e14d 100644
--- a/src/tob.cpp
+++ b/src/tob.cpp
@@ -48,7 +48,11 @@
 ToB::~ToB()
 {
 	toClear();
+<<<<<<< HEAD
 //	tob = NULL;
+=======
+	tob = NULL;
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 	delete paramset;
 }
 
@@ -199,7 +203,11 @@
 
 	return 	ErrStatus::SUCCESS;
 }
+<<<<<<< HEAD
 #define DEBUG 0
+=======
+
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 #if 1//DEBUG
 	const s8* type_string[ModuleType::PROC_COUNT] = {
 			"none"
@@ -270,9 +278,14 @@
 
 		if (pmod->mDsp != dsp_index)  continue;
 
+<<<<<<< HEAD
 #if DEBUG
 		//if (PROC_FIR == pmod->mType)
 			printf("Module ID %d type %d %s rxnum %d txnum %d tag %d. \n",pmod->mID ,pmod->mType, type_string[pmod->mType], pmod->mRxNum,pmod->mTxNum,pmod->mTag);
+=======
+#ifdef DEBUG
+		printf("Module ID %d type %d %s rxnum %d txnum %d tag %d. \n",pmod->mID ,pmod->mType, type_string[pmod->mType], pmod->mRxNum,pmod->mTxNum,pmod->mTag);
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 #endif
 
 		IModule* m = CreateBaseModule(pmod->mType, pmod->mTag, mRxNum, mTxNum);
@@ -281,6 +294,14 @@
 			continue;
 		}
 
+<<<<<<< HEAD
+=======
+//		int ddr = sram_free_space(SRAM_DDR,mem_any);
+//		int ccm = sram_free_space(SRAM_L2,mem_any);
+//		int l1 = sram_free_space(SRAM_L1,mem_heap);
+//		printf("ddr %d ccm %d l1 %d.\n",ddr, ccm ,l1);
+
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 		m->SetModuleInfo(pmod->mID ,pmod->mType, pmod->mTag);
 		mList.push_back(m);
 
@@ -291,7 +312,11 @@
 
 //		printf("Module id:%d, Tx buffer id:", pmod->mID);
 		for (size_t i = 0; i < mTxNum && !bOutput; i++){
+<<<<<<< HEAD
 //			printf("bid %d, ", mTxbufID[i]);
+=======
+			printf("bid %d, ", mTxbufID[i]);
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 			if (mTxbufID[i] > 0) {
 				Frame* pcm = frames->GetFrame(mTxbufID[i]-1);
 				m->SetOutputChannelDataPtr(i, pcm);
@@ -301,7 +326,11 @@
 						nPhyInput[mPhyID[i].mIntType] = mPhyID[i].mPhyID;
 					m->SetInputChannelDataPtr(i, pcm);
 					SetRxChannelPtr(static_cast<IntDataType>(mPhyID[i].mIntType), mPhyID[i].mPhyID-1, pcm->Data());
+<<<<<<< HEAD
 //					printf("phy_id %d\n", mPhyID[i].mPhyID);
+=======
+					printf("phy_id %d\n", mPhyID[i].mPhyID);
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 				}
 			}
 			else {
@@ -310,7 +339,11 @@
 		}
 //		printf(";Rx buffer id:");
 		for (size_t i = 0; i < mRxNum && !bInput; i++) {
+<<<<<<< HEAD
 //			printf("mID %d,bid %d\n", pmod->mID, mRxbufID[i]);
+=======
+//			printf("bid %d", mRxbufID[i]);
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 			if (mRxbufID[i] > 0) {
 				Frame* pcm = frames->GetFrame(mRxbufID[i]-1 );
 				m->SetInputChannelDataPtr(i, pcm);
@@ -322,8 +355,12 @@
 					//pcm = frames->AllocFrame(); // It is not necessary to be compatible with the AXE1208 series here, because the TOP architecture is different.
 					m->SetOutputChannelDataPtr(i, pcm);
 					SetTxChannelPtr(static_cast<IntDataType>(mPhyID[i].mIntType), mPhyID[i].mPhyID-1, pcm->Data());
+<<<<<<< HEAD
 //					printf("mID %d,bid %d\n", pmod->mID, mPhyID[i].mPhyID-1);
 //					printf("phy_type %d, _id %d\n", mPhyID[i].mIntType, mPhyID[i].mPhyID);
+=======
+//					printf("phy_id %d", mPhyID[i].mPhyID);
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 				}
 			}
 			else {
@@ -333,6 +370,7 @@
 //		printf("\n");
 
 		m->Init();
+<<<<<<< HEAD
 
 		// 从 paramset 中获取对应的参数控制函数指针
 		ParamCtrl_fn paramEntry = paramset->GetParamEntry( m->GetModuleType());
@@ -341,6 +379,17 @@
 		}
 		// 调用参数控制函数
 		u32 result = paramEntry(m, (uvoid*)pmod->mParamaddr, len);
+=======
+//		paramset->GetParamEntry(m->GetModuleType())(m, (uvoid*)pmod->mParamaddr, len);
+		// 获取模块类型
+		u32 moduleType = m->GetModuleType();
+		// 从 paramset 中获取对应的参数控制函数指针
+		ParamCtrl_fn paramEntry = paramset->GetParamEntry(moduleType);
+		// 获取模块参数地址
+		void* paramAddr = (uvoid*)pmod->mParamaddr;
+		// 调用参数控制函数
+		u32 result = paramEntry(m, paramAddr, len);
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 
 	} while (size < nbytes);
 
@@ -399,7 +448,11 @@
 {
 	if(processed) {
 		for (auto iter = mList.begin(); iter < mList.end(); iter++) {
+<<<<<<< HEAD
 //			if(((*iter)->GetModuleType() >= 6) && ((*iter)->GetModuleType() <= 6)) {
+=======
+//			if(((*iter)->GetModuleType() >= 9) && ((*iter)->GetModuleType() <= 9)) {
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 //				printf("%d ", (*iter)->GetModuleID());
 				(*iter)->Proc();
 //			}
@@ -454,8 +507,13 @@
 
 	IModule* m = mList[mModuleIndex[mID]-1];
 	if( m != NULL) {
+<<<<<<< HEAD
 //		m->Ctrl(pID, val, num);
 		paramset->GetCtrlEntry(m->GetModuleType())(m, pID, (s16*)val, num);
+=======
+		//m->Ctrl(pID, val, num);
+		paramset->GetCtrlEntry(m->GetModuleType())(m, pID, (s16*)val);
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 	}
 //	printf("mID:%d pID:%d val[0]:%d val[1]:%d\n",mID, pID, val[0], val[1]);
 	return ErrStatus::SUCCESS;
diff --git a/system/startup_ldf/app.ldf b/system/startup_ldf/app.ldf
index 159dc57..3bd4c77 100644
--- a/system/startup_ldf/app.ldf
+++ b/system/startup_ldf/app.ldf
@@ -1,5 +1,9 @@
 /*
+<<<<<<< HEAD
 ** ADSP-21569 linker description file generated on Sep 05, 2025 at 15:48:19.
+=======
+** ADSP-21569 linker description file generated on Jul 24, 2025 at 14:17:30.
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 */
 /*
 ** Copyright (C) 2000-2023 Analog Devices Inc., All Rights Reserved.
diff --git a/system/startup_ldf/app_IVT.s b/system/startup_ldf/app_IVT.s
index 6f9bb92..4e514dc 100644
--- a/system/startup_ldf/app_IVT.s
+++ b/system/startup_ldf/app_IVT.s
@@ -1,5 +1,9 @@
 /*
+<<<<<<< HEAD
 ** ADSP-21569 app_IVT.s generated on Sep 05, 2025 at 15:48:19
+=======
+** ADSP-21569 app_IVT.s generated on Jul 24, 2025 at 14:17:29
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 */
 /*
 ** Copyright (C) 2000-2023 Analog Devices Inc., All Rights Reserved.
diff --git a/system/startup_ldf/app_heaptab.c b/system/startup_ldf/app_heaptab.c
index 57e0445..ca82829 100644
--- a/system/startup_ldf/app_heaptab.c
+++ b/system/startup_ldf/app_heaptab.c
@@ -1,5 +1,9 @@
 /*
+<<<<<<< HEAD
 ** ADSP-21569 user heap source file generated on Sep 05, 2025 at 15:48:19.
+=======
+** ADSP-21569 user heap source file generated on Jul 24, 2025 at 14:17:30.
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 */
 /*
 ** Copyright (C) 2000-2023 Analog Devices Inc., All Rights Reserved.
diff --git a/system/startup_ldf/app_startup.s b/system/startup_ldf/app_startup.s
index 7bdee73..f75894b 100644
--- a/system/startup_ldf/app_startup.s
+++ b/system/startup_ldf/app_startup.s
@@ -1,5 +1,9 @@
 /*
+<<<<<<< HEAD
 ** ADSP-21569 startup code generated on Sep 05, 2025 at 15:48:19.
+=======
+** ADSP-21569 startup code generated on Jul 24, 2025 at 14:17:29.
+>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
 */
 /*
 ** Copyright (C) 2000-2023 Analog Devices Inc., All Rights Reserved.

--
Gitblit v1.9.3