| | |
| | | |
| | | |
| | | |
| | | //#define DEBUG |
| | | #ifdef DEBUG |
| | | #define dbg_printf printf |
| | | #else |
| | | #define dbg_printf |
| | | #endif |
| | | |
| | | |
| | | //static ToB* tob = NULL; |
| | | |
| | |
| | | |
| | | if (pmod->mDsp != dsp_index) continue; |
| | | |
| | | #ifdef DEBUG |
| | | #if DEBUG |
| | | dbg_printf("Module ID %d type %d rxnum %d txnum %d. \n",pmod->mID ,pmod->mType, pmod->mRxNum,pmod->mTxNum); |
| | | #endif |
| | | // if(pmod->mID == 394) { |
| | | // int ddr = sram_free_space(SRAM_DDR); |
| | | // int ccm = sram_free_space(SRAM_CCM); |
| | | // int l1 = sram_free_space(SRAM_L1); |
| | | // printf("ddr %d ccm %d l1 %d.\n",ddr, ccm ,l1); |
| | | // dbg_printf("ddr %d ccm %d l1 %d.\n",ddr, ccm ,l1); |
| | | // } |
| | | IModule* m = CreateBaseModule(pmod->mType,pmod->mTag, pmod->mRxNum,pmod->mTxNum); |
| | | if(!m) { |
| | |
| | | |
| | | return ErrStatus::SUCCESS; |
| | | } |
| | | #define DEBUG 0 |
| | | #if DEBUG |
| | | |
| | | #ifdef DEBUG |
| | | const s8* type_string[ModuleType::PROC_COUNT] = { |
| | | "none" |
| | | ,"input" |
| | |
| | | |
| | | if (pmod->mDsp != dsp_index) continue; |
| | | |
| | | #if DEBUG |
| | | // if (1+320 == pmod->mID) |
| | | // if (PROC_FEEDBACK == 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 |
| | | // if (300 == pmod->mID) |
| | | if (PROC_FEEDBACK == pmod->mType) |
| | | dbg_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); |
| | | #endif |
| | | |
| | | IModule* m = CreateBaseModule(pmod->mType, pmod->mTag, mRxNum, mTxNum); |
| | |
| | | } |
| | | mModuleIndex[pmod->mID] = ++mModuleNum; |
| | | |
| | | // printf("Module id:%d, Tx buffer id:", pmod->mID); |
| | | // dbg_printf("Module id:%d, Tx buffer id:", pmod->mID); |
| | | for (size_t i = 0; i < mTxNum && !bOutput; i++){ |
| | | // printf("bid %d, ", mTxbufID[i]); |
| | | // dbg_printf("bid %d, ", mTxbufID[i]); |
| | | if (mTxbufID[i] > 0) { |
| | | Frame* pcm = frames->GetFrame(mTxbufID[i]-1); |
| | | m->SetOutputChannelDataPtr(i, pcm); |
| | |
| | | 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\n", mPhyID[i].mPhyID); |
| | | // dbg_printf("phy_id %d\n", mPhyID[i].mPhyID); |
| | | } |
| | | } |
| | | else { |
| | | m->SetOutputChannelDataPtr(i, 0); |
| | | } |
| | | } |
| | | // printf(";Rx buffer id:"); |
| | | // dbg_printf(";Rx buffer id:"); |
| | | for (size_t i = 0; i < mRxNum && !bInput; i++) { |
| | | // printf("mID %d,bid %d\n", pmod->mID, mRxbufID[i]); |
| | | if (mRxbufID[i] > 0) { |
| | |
| | | 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()); |
| | | // 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); |
| | | // dbg_printf("mID %d,bid %d\n", pmod->mID, mPhyID[i].mPhyID-1); |
| | | // dbg_printf("phy_type %d, _id %d\n", mPhyID[i].mIntType, mPhyID[i].mPhyID); |
| | | } |
| | | } |
| | | else { |
| | | m->SetInputChannelDataPtr(i, 0); |
| | | } |
| | | } |
| | | // printf("\n"); |
| | | // dbg_printf("\n"); |
| | | |
| | | m->Init(); |
| | | |
| | | // 从 paramset 中获取对应的参数控制函数指针 |
| | | ParamCtrl_fn paramEntry = paramset->GetParamEntry( m->GetModuleType()); |
| | | if(paramEntry == NULL) { |
| | | printf("paramEntry is NULL!\n"); |
| | | dbg_printf("paramEntry is NULL!\n"); |
| | | } |
| | | // 调用参数控制函数 |
| | | u32 result = paramEntry(m, (uvoid*)pmod->mParamaddr, len); |
| | |
| | | // 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("mListAdd:0x%x, ddr %d ccm %d l1 %d.\n", &mList, ddr, ccm ,l1); |
| | | // dbg_printf("mListAdd:0x%x, ddr %d ccm %d l1 %d.\n", &mList, ddr, ccm ,l1); |
| | | |
| | | //for (auto pl : mList) { |
| | | // delete pl; |
| | | // int l2mem = sram_free_space(SRAM_L2, mem_any); |
| | | // printf("L2mem %d\n", l2mem); |
| | | // dbg_printf("L2mem %d\n", l2mem); |
| | | //} |
| | | |
| | | if (size != nbytes) { |
| | |
| | | /*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()); |
| | | dbg_printf("%d, id %d, type %d\n",i++, p->GetModuleID(), p->GetModuleType()); |
| | | }*/ |
| | | |
| | | return ErrStatus::SUCCESS; |
| | |
| | | head->crc = 0; |
| | | tmp_crc = CRC::crc32(bin, nbytes); |
| | | if (tmp_crc != crc) { |
| | | printf("flowchar crc check fail.\n"); |
| | | dbg_printf("flowchar crc check fail.\n"); |
| | | return ErrStatus::ERR_PARAM; |
| | | } |
| | | processed = ufalse; |
| | |
| | | ErrStatus ToB::toProc() |
| | | { |
| | | if(processed) { |
| | | for (auto iter = mList.begin(); iter < mList.end(); iter++) { |
| | | // if(((*iter)->GetModuleType() >= PROC_FEEDBACK) && ((*iter)->GetModuleType() <= PROC_FEEDBACK)) { |
| | | for (auto iter : mList) {// = mList.begin(); iter < mList.end(); iter++) { |
| | | // if(((*iter)->GetModuleType() >= PROC_COMPRESS) && ((*iter)->GetModuleType() <= PROC_COMPRESS)) { |
| | | // printf("%d ", (*iter)->GetModuleID()); |
| | | (*iter)->Proc(); |
| | | // int ii = 2; |
| | | // } |
| | | iter->Proc(); |
| | | } |
| | | // printf("\n"); |
| | | // dbg_printf("\n"); |
| | | } |
| | | else { |
| | | MuteOutput(); |
| | |
| | | /*ErrStatus ToB::toCtrl(u32 mID, u32 pID, const s16* val, u32 num) |
| | | { |
| | | if(mID >= mModuleIndex.size() || mModuleIndex[mID] == 0) { |
| | | printf("ToB::toCtrl mID Error!\n"); |
| | | dbg_printf("ToB::toCtrl mID Error!\n"); |
| | | return ErrStatus::ERR_PARAM; |
| | | } |
| | | |
| | | IModule* m = mList[mModuleIndex[mID]-1]; |
| | | if(!m) { |
| | | printf("ToB::toCtrl m Error!\n"); |
| | | dbg_printf("ToB::toCtrl m Error!\n"); |
| | | return ErrStatus::ERR_PARAM; |
| | | } |
| | | |
| | | auto entries = paramset->GetEntries(m->GetModuleType()); |
| | | if(!entries.second) { |
| | | printf("ToB::toCtrl entries Error!\n"); |
| | | dbg_printf("ToB::toCtrl entries Error!\n"); |
| | | return ErrStatus::ERR_METHOD; |
| | | } |
| | | |
| | |
| | | // m->Ctrl(pID, val, num); |
| | | paramset->GetCtrlEntry(m->GetModuleType())(m, pID, (s16*)val, num); |
| | | } |
| | | // printf("mID:%d pID:%d val[0]:%d val[1]:%d\n",mID, pID, val[0], val[1]); |
| | | // dbg_printf("mID:%d pID:%d val[0]:%d val[1]:%d\n",mID, pID, val[0], val[1]); |
| | | return ErrStatus::SUCCESS; |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | |
| | | u32 ToB::GetLevels(s16* buffer) |
| | | u32 ToB::GetLevels(s16* buffer, u32 level_max_len) |
| | | { |
| | | u32 n =0,size =0; |
| | | |
| | | u32 n=0, size =0; |
| | | u32 remain_len; |
| | | if( !processed ) { |
| | | return 0; |
| | | } |
| | | for (std::vector<IModule*>::iterator iter = mList.begin(); |
| | | iter != mList.end() ; iter++) { |
| | | size = (*iter)->GetLevel(buffer + n ); |
| | | // printf("proc %s level num:%d\n",type_string[(*iter)->GetModuleType()],size); |
| | | for (std::vector<IModule*>::iterator iter = mList.begin(); iter != mList.end(); iter++) { |
| | | remain_len = level_max_len - n; |
| | | size = (*iter)->GetLevel(buffer + n, remain_len); |
| | | // dbg_printf("proc:%s level num:%d remain:%d\n", type_string[(*iter)->GetModuleType()], size, remain_len); |
| | | n += size; |
| | | } |
| | | |