From 7534dda3b69026df6dc40b3d907b825a0078617b Mon Sep 17 00:00:00 2001
From: chenlh <2008get@163.com>
Date: 星期四, 21 八月 2025 20:14:01 +0800
Subject: [PATCH] Signed-off-by: chenlh <2008get@163.com>

---
 src/tob.cpp |   60 +++++++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 41 insertions(+), 19 deletions(-)

diff --git a/src/tob.cpp b/src/tob.cpp
index 3260cad..e0eecab 100644
--- a/src/tob.cpp
+++ b/src/tob.cpp
@@ -6,6 +6,7 @@
  */
 #include <stdlib.h>
 #include <stdio.h>
+#include <heapnew>
 #include "tob.h"
 #include "crc.h"
 #include "config.h"
@@ -40,7 +41,7 @@
 	processed = ufalse;
 	mModuleNum =0;
 	mModuleIndex.resize(0);
-	paramset = new tg_param_ctrl_t();
+	paramset = new(SRAM_DDR) tg_param_ctrl_t();
 }
 
 ToB::~ToB()
@@ -141,7 +142,7 @@
 		mList.push_back(m);
 
 		if(pmod->mID >= mModuleIndex.size()) {
-			mModuleIndex.resize(pmod->mID + 1,0);
+			mModuleIndex.resize(pmod->mID + 1, 0);
 		}
 		mModuleIndex[pmod->mID] = ++mModuleNum  ;
 
@@ -197,7 +198,7 @@
 	u32 size = sizeof(FlowChartHead);
 	u16 nPhyInput[IntDataType::COUNT] = { 0,0,0 }, nPhyOutput[IntDataType::COUNT] = { 0,0,0 };
 	s32 len =0;
-	frames = new Frames(head->dsp_buffer_num[dsp_index]);
+	frames = new Frames(head->dsp_buffer_num[dsp_index]); // C H G
 
 	do {
 		const Module* pmod = (Module*)(bin+ size);  size += sizeof(Module);
@@ -224,22 +225,25 @@
 		if (pmod->mDsp != dsp_index)  continue;
 
 #ifdef DEBUG
-		dbg_printf("Module ID %d type %d rxnum %d txnum %d. \n",pmod->mID ,pmod->mType, pmod->mRxNum,pmod->mTxNum);
+		printf("Module ID %d type %d rxnum %d txnum %d tag %d. \n",pmod->mID ,pmod->mType, pmod->mRxNum,pmod->mTxNum,pmod->mTag);
 #endif
 		IModule* m = CreateBaseModule(pmod->mType,pmod->mTag, mRxNum,mTxNum);
 		if(!m) {
 			dbg_printf("Module ID Create fail.\n", pmod->mID);
 			continue;
 		}
+
 		m->SetModuleInfo(pmod->mID ,pmod->mType,pmod->mTag);
 		mList.push_back(m);
 
 		if(pmod->mID >= mModuleIndex.size()) {
-			mModuleIndex.resize(pmod->mID + 1,0);
+			mModuleIndex.resize(pmod->mID + 1, 0);
 		}
 		mModuleIndex[pmod->mID] = ++mModuleNum  ;
 
+//		printf("Module id:%d, Tx buffer id:", pmod->mID);
 		for (size_t i = 0; i < mTxNum && !bOutput; i++){
+//			printf("bid %d", mTxbufID[i]);
 			if (mTxbufID[i] > 0) {
 				Frame* pcm = frames->GetFrame(mTxbufID[i]-1 );
 				m->SetOutputChannelDataPtr(i, pcm);
@@ -249,13 +253,16 @@
 						nPhyInput[mPhyID[i].mIntType] = mPhyID[i].mPhyID;
 					m->SetInputChannelDataPtr(i, pcm);
 					SetRxChannelPtr(static_cast<IntDataType>(mPhyID[i].mIntType), mPhyID[i].mPhyID-1, pcm->Data());
+//					printf("phy_id %d", mPhyID[i].mPhyID);
 				}
 			}
 			else {
 				m->SetOutputChannelDataPtr(i, 0);
 			}
 		}
+//		printf(";Rx buffer id:");
 		for (size_t i = 0; i < mRxNum && !bInput; i++) {
+//			printf("bid %d", mRxbufID[i]);
 			if (mRxbufID[i] > 0) {
 				Frame* pcm = frames->GetFrame(mRxbufID[i]-1 );
 				m->SetInputChannelDataPtr(i, pcm);
@@ -267,15 +274,17 @@
 					pcm = frames->AllocFrame();
 					m->SetOutputChannelDataPtr(i, pcm);
 					SetTxChannelPtr(static_cast<IntDataType>(mPhyID[i].mIntType), mPhyID[i].mPhyID-1, pcm->Data());
+//					printf("phy_id %d", mPhyID[i].mPhyID);
 				}
 			}
 			else {
 				m->SetInputChannelDataPtr(i, 0);
 			}
 		}
+//		printf("\n");
 
 		m->Init();
-		paramset->GetParamEntry(m->GetModuleType())(m, (uvoid*)pmod->mParamaddr, len);
+		//paramset->GetParamEntry(m->GetModuleType())(m, (uvoid*)pmod->mParamaddr, len);
 	} while (size < nbytes);
 
 	if (size != nbytes) {
@@ -286,6 +295,12 @@
 		SetNumOfChannels(static_cast<IntDataType>(i) , nPhyInput[i], nPhyOutput[i]);
 	}
 
+	/*for (auto pt = mList.begin(); pt < mList.end(); pt++) {
+		IModule *p =  *pt._Myptr;
+		static int i = 0;
+		printf("%d, id %d, type %d\n",i++, p->GetModuleID(), p->GetModuleType());
+	}*/
+
 	return 	ErrStatus::SUCCESS;
 }
 ErrStatus ToB::toAnalysis(const u8* bin, u32 nbytes)
@@ -293,14 +308,14 @@
 	FlowChartHead* head = (FlowChartHead*)bin;
 	ErrStatus ret = ErrStatus::ERR_METHOD;
 	//check crc
-	u32 tmp_crc ,crc = head->crcLsb|(head->crcMsb<<16);
-	head->crcLsb = head->crcMsb = 0;
+	s32 tmp_crc;
+	s32 crc = head->crc;
+	head->crc = 0;
 	tmp_crc = CRC::crc32(bin, nbytes);
 	if (tmp_crc != crc) {
-		//dbg_printf("flowchar crc check fail.\n");
+		printf("flowchar crc check fail.\n");
 		return ErrStatus::ERR_PARAM;
 	}
-
 	processed = ufalse;
 
 	if(head->version == 0) {
@@ -309,16 +324,22 @@
 	else if(head->version == 1) {
 		ret = CreateModuleV1(bin, nbytes);
 	}
-
+	processed = utrue;
 	return ret;
 }
 ErrStatus ToB::toProc()
 {
 	if(processed) {
-		for (auto iter = mList.begin();
-			iter != mList.end() ;iter++) {
-			(*iter)->Proc();
+		for (auto iter = mList.begin(); iter < mList.end(); iter++) {
+//			if ((*iter)->GetModuleID() == 166)
+//				continue;
+
+			if((*iter)->GetModuleType() <= 5) {
+				printf("%d ", (*iter)->GetModuleID());
+				(*iter)->Proc();
+			}
 		}
+//		printf("\n");
 	}
 	else {
 		MuteOutput();
@@ -346,7 +367,7 @@
 
 	IModule* m = mList[mModuleIndex[mID]-1];
 	if( m != NULL) {
-		///m->Ctrl(pID, val, num);
+		//m->Ctrl(pID, val, num);
 		paramset->GetCtrlEntry(m->GetModuleType())(m, pID, (s16*)val);
 	}
 
@@ -358,11 +379,11 @@
 	FlowChartHead* head = (FlowChartHead*)bin;
 
 	//check crc
-	u32 tmp_crc ,crc = head->crcLsb|(head->crcMsb<<16);
-	head->crcLsb = head->crcMsb = 0;
+	u32 tmp_crc ,crc = head->crc;
+	head->crc =0;
 	tmp_crc = CRC::crc32(bin, nbytes);
 	if (tmp_crc != crc) {
-		//dbg_printf("flowchar crc check fail.\n");
+		dbg_printf("flowchar crc check fail.\n");
 		return ErrStatus::ERR_PARAM;
 	}
 
@@ -378,13 +399,14 @@
 	}
 
 	if(size != nbytes) {
-		//dbg_printf("check preset has some error!\n");
+		dbg_printf("check preset has some error!\n");
 	}
 
 	processed = utrue;
 	return ErrStatus::SUCCESS;
 }
 
+
 u32 ToB::GetLevels(s16* buffer)
 {
 	u32 n =0,size =0;

--
Gitblit v1.9.3