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