From ab07ada908b82340e7acd899e85a9802cf8a9057 Mon Sep 17 00:00:00 2001
From: chenlh <2008get@163.com>
Date: 星期四, 18 九月 2025 14:09:22 +0800
Subject: [PATCH] 首轮测试版代码常规上传
---
src/messageproc.cpp | 94 ++++++++++++++++++++++++++++++++++++----------
1 files changed, 73 insertions(+), 21 deletions(-)
diff --git a/src/messageproc.cpp b/src/messageproc.cpp
index 38f0bd3..ae301d5 100644
--- a/src/messageproc.cpp
+++ b/src/messageproc.cpp
@@ -1,7 +1,7 @@
/*
* messageproc.c
*
- * Created on: 2021年11月1日
+ * Created on: 2021骞�1鏈�鏃� * Author: graydon
*/
#include <string.h>
@@ -10,7 +10,7 @@
#include "messageproc.h"
#include "../drv/spi.h"
#include "../drv/gpio.h"
-#include "../drv/memory.h"
+
#include "F2F.h"
#include "ModuleProAPI.h"
#include "tg/tg_adapter.h"
@@ -34,9 +34,44 @@
uvoid Message::ReportDspStatus(MSG* pmsg)
{
- s32 size = dsp_status_q.get_device_status_ptr(pmsg->data,MSG_DATA_LEN);
+ s32 size = dsp_status_q.get_device_status_ptr(pmsg->data, MSG_DATA_LEN);
if(size > 0) {
pmsg->Enc(MsgType::MSG_DSP_STATUS_REPORT, 0, size);
+ txQueue->Push(*pmsg);
+ }
+}
+
+uvoid Message::ReportLevel(MSG* pmsg)
+{
+ int i;
+ int data_len;
+
+ ToB* tob = ToB::GetInstance();
+ u16 LevelCnt = tob->GetLevels(Levels); //918 levels
+ u32 msgLen = LevelCnt * sizeof(*Levels);
+ int Packegs = (msgLen+MSG_DATA_LEN-1)/MSG_DATA_LEN;
+
+ pmsg->magic = 0x5aa5;
+// pmsg->dataLen = LevelCnt;
+ pmsg->totalPkts = Packegs;
+// pmsg->pktNo = 1;
+ pmsg->msgType = MSG_GET_LEVEL;
+ pmsg->msgID = LevelCnt;
+
+ // Split packeg
+ for(i=0; i<Packegs; i++){
+ if(i == Packegs-1){
+ data_len = msgLen - i * MSG_DATA_LEN;
+ }
+ else{
+ data_len = MSG_DATA_LEN;
+ }
+
+ memcpy(pmsg->data, Levels + i * MSG_DATA_LEN / sizeof(*Levels), data_len);
+ pmsg->dataLen = data_len;
+ pmsg->pktNo = i;
+
+ pmsg->Enc(MsgType::MSG_GET_LEVEL, 0, data_len);
txQueue->Push(*pmsg);
}
}
@@ -56,19 +91,20 @@
if(tob != NULL && pmsg->pktNo == pmsg->totalPkts - 1) {
VarState& var = VarState::GetInstance();
- u32 type = tob->GetModuleType(ptr->mid);
+// u32 type = tob->GetModuleType(ptr->mid);
s32 data_num = (pmsg->totalPkts-1)*MSG_DATA_LEN+pmsg->dataLen;
s16* data = (s16*)(ptr + 1);
data_num = (data_num - sizeof(struct ParamCtrl))/sizeof(s16);
-
- ptr->mid = var.pscene->get_module_id(ptr->mid, type, ptr->cmd) ;
+// ptr->mid = var.pscene->get_module_id(ptr->mid, type, ptr->cmd) ;
+// printf("mID:%d pID:%d val[0]:%d val[1]:%d\n",ptr->mid, ptr->cmd, data[0], data[1]);
tob->toCtrl(ptr->mid, ptr->cmd, data, data_num);
}
return 0;
}
+
s32 Message::PresetProcess(MSG* pmsg)
{
@@ -79,12 +115,15 @@
sram_free(SRAM_DDR, bin);
bin = NULL;
}
+
if(pmsg->pktNo == 0 && bin == NULL) {
- bin = (u8*)sram_malloc(SRAM_DDR, mem_any ,pmsg->totalPkts*MSG_DATA_LEN);
+ bin = (u8*)sram_malloc(SRAM_DDR, mem_any, pmsg->totalPkts*MSG_DATA_LEN);
}
if(bin == NULL) return -1;
+// printf("No:%d len %d\n", pmsg->pktNo,pmsg->dataLen);
var.TopoLoading = utrue;
memcpy(bin+pmsg->pktNo*MSG_DATA_LEN, pmsg->data , pmsg->dataLen);
+
if(pmsg->pktNo == pmsg->totalPkts -1) {
u32 size = (pmsg->totalPkts -1)*MSG_DATA_LEN+pmsg->dataLen;
@@ -100,21 +139,22 @@
var.TopoStatus = PRESET_STA::PRESET_ERR;
}
else if(tob){
- s8* content = (s8*)sram_malloc(SRAM_DDR, mem_any ,16*1024);
+ 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);
s32 size ;
+
+ tob->toClear();
var.pscene->update_module();
size = var.pscene->convert_to_bin(content);
-
- tob->toClear();
- tob->toAnalysis(bin, size);
+ tob->toAnalysis(content, size);
sram_free(SRAM_DDR, content);
var.TopoStatus = PRESET_STA::PRESET_DONE;
}
}
sram_free(SRAM_DDR, bin); bin = NULL;
- var.TopoLoading =0 ;
+ var.TopoLoading = ufalse ;
}
return 0;
@@ -122,24 +162,27 @@
s32 Message::HandshakeMessageProcess(MSG* pmsg)
{
+// s8 usb_rx_ch=2, usb_tx_ch=2;
VarState& var = VarState::GetInstance();
ptag_device_config device_config = (ptag_device_config)pmsg->data;
struct DSPConfig dspconfig ;
if(var.HandShakeSuccesful == ufalse) {
- //可以根据ptag_device_config.hardware_type动态适配型号.
+ //鍙互鏍规嵁ptag_device_config.hardware_type鍔ㄦ�閫傞厤鍨嬪彿.
if(var.pscene){
delete var.pscene;
var.pscene = NULL;
}
- 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);
- var.pscene = new tgScene(_adapter);
+// param_init(device_config);
+ 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);
+ var.pscene = new(SRAM_DDR) tgScene(_adapter);
_adapter->config_board(&dspconfig);
+ new(SRAM_DDR) ToB(device_config->dual_dsp, device_config->dsp_index);
SAMPLE_NUM = dspconfig.mSampleNum;
var.master_intr = dspconfig.mIntrNo;
@@ -147,9 +190,9 @@
ModuleLeveldBUSetting(dspconfig.mConvertUnit);
//Config(conf);
- RouteConfig(dspconfig.routes,dspconfig.mRouteNum);
+ RouteConfig(dspconfig.routes, dspconfig.mRouteNum);
SRCsConfig(0 , &dspconfig.srcs[0]);
- SRCsConfig(1 , &dspconfig.srcs[4]);
+ SRCsConfig(1 , &dspconfig.srcs[1]);
PCGsConfig(dspconfig.pcgs);
SportsConfig(dspconfig.sports);
//LinportConfig(dspconfig.linkport);
@@ -158,7 +201,7 @@
}
Send(MsgType::MSG_ACK_REQ, 0 , 0);
-
+ printf("HandShake OK\n");
return 0;
}
@@ -175,6 +218,7 @@
ParamCtrl(pmsg);
break;
case MsgType::MSG_GET_LEVEL:
+ ReportLevel(pmsg);
break;
case MsgType::MSG_PARAM_CONFIG:
case MsgType::MSG_PARAM_COMPLETED:
@@ -195,6 +239,14 @@
uvoid Message::Proc()
{
u32 status = 0;
+// static bool bSetOk = 0;
+
+// MSG* p = (MSG*)SPI_Rx_BUFFER;
+// if (0 == bSetOk) {
+// HandshakeMessageProcess(p); //virtual communication
+// PresetProcess(p);
+// bSetOk = 1;
+// }
if(SPIRxDone) {
RxMessageHandler((MSG*)SPI_Rx_BUFFER);
@@ -207,6 +259,6 @@
GPIO_SetOutPut(GPIOA, GPIO_Pin12, GPIO_HIGH);
}
SPI2_SetTransMode(SPIStatus::SPI_TRX);
- GPIO_SetOutPut(GPIOA, GPIO_Pin13, GPIO_HIGH);
+ GPIO_SetOutPut(GPIOB, GPIO_Pin5, GPIO_HIGH);
}
}
--
Gitblit v1.9.3