转换成RX模式时,有个mac_delay_ext要设置成472us,其中包括一个不可跳过的OLC_DYNAMIC延迟为404us,是用于失调校正环路的动态调整,与这个延迟相关的寄存器有OCL_CFG
2018-09-11 10:14
我正在移植一个旧的应用程序(2.06)。最近,我发现了一种模拟HTLA和HTTP网络服务器的MLLA库(HhttpPrimtPythiCixVar())的CurHTHTP.CalbPoS机制。服务器和两个调用HTTP网络服务器的TCPIpHIPHtpNETHelnCalutalCalpRouthPoGet和TCPPIpHhttpNETSnEngulalCalkRouthSet。在我的项目中,我使用HTTP网络服务器使用HTTPS连接。但是,TCPIPHHTPNETNEnnLognCalnCouthPosiGET始终返回零。下面看我的测试代码,我猜它是正确的,我可能错了。可能主要的问题是在调用用户函数之前总是将No.HtpHyDyvCARLACKEDHONPHTPCON & & CalbPoPs设置为零。它是错误的和谐还是我做错了什么? 以上来自于百度翻译 以下为原文 I am porting an old application in Harmony (2.06). Recently I discovered a legacy mechanism to emulate the curHTTP.callbackPos of MLA libraries (HTTPPrint_dynamic_var()) in Harmony for both HTTP and HTTP NET servers. I found that there are two calls TCPIP_HTTP_CurrentConnectionCallbackPosGet and TCPIP_HTTP_CurrentConnectionCallbackPosSet for the HTTP server and two calls TCPIP_HTTP_NET_ConnectionCallbackPosGet and TCPIP_HTTP_NET_ConnectionCallbackPosSet for the HTTP NET server. In my project, I am using HTTP NET server to use HTTPS connections. However, TCPIP_HTTP_NET_ConnectionCallbackPosGet always returns zero. See below my test code, I guess that it is correct, I may wrong. TCPIP_HTTP_DYN_PRINT_RES TCPIP_HTTP_Print_net(TCPIP_HTTP_NET_CONN_HANDLE connHandle, const TCPIP_HTTP_DYN_VAR_DCPT *vDcpt) {#define DATA_SIZE 1024// 1 kBytes TCPIP_HTTP_DYN_PRINT_RES rtn; HTTP_APP_CALLBACK_POS *pos; uint32_t len; if ((pos = (HTTP_APP_CALLBACK_POS *) TCPIP_HTTP_NET_ConnectionCallbackPosGet(connHandle)) == NULL) {pos = (HTTP_APP_CALLBACK_POS*) x_malloc(sizeof (HTTP_APP_CALLBACK_POS));pos->size = pos->sm = 0; } switch (pos->sm) {case 0:pos->data = x_malloc(sizeof (char*) * DATA_SIZE);len = SettingsToXML_GetNet(pos->data, sizeof (char*) * DATA_SIZE);TCPIP_HTTP_NET_DynamicWrite(vDcpt, pos->data, len, false);pos->sm++;rtn = TCPIP_HTTP_DYN_PRINT_RES_DONE; // This must be RES_DONE because I am using TCPIP_HTTP_NET_ConnectionCallbackPosSetbreak;case 1:// If here the buffer may be releasedx_free(pos->data);x_free(pos);pos = NULL;TCPIP_HTTP_NET_ConnectionCallbackPosSet(connHandle, NULL);rtn = TCPIP_HTTP_DYN_PRINT_RES_DONE;break; } TCPIP_HTTP_NET_ConnectionCallbackPosSet(connHandle, (uint32_t) pos); return rtn;} Probably the main problem is in _HTTP_DynVarCallback where pHttpCon->callbackPos is always set to zero before calling user functions.Is it a bug in Harmony or am I doing something wrong? static TCPIP_HTTP_CHUNK_RES _HTTP_DynVarCallback(TCPIP_HTTP_NET_CONN* pHttpCon, TCPIP_HTTP_CHUNK_DCPT* pChDcpt){ TCPIP_HTTP_DYN_PRINT_RES printRes; const TCPIP_HTTP_DYN_VAR_KEYWORD_ENTRY* pKEntry; TCPIP_HTTP_DYNVAR_CHUNK_DCPT* pDynChunkDcpt; TCPIP_HTTP_DYN_VAR_DCPT* pDynDcpt; pDynChunkDcpt = &pChDcpt->dynChDcpt; pDynDcpt = &pDynChunkDcpt->pDynAllocDcpt->dynDcpt; printRes = TCPIP_HTTP_DYN_PRINT_RES_DONE; pHttpCon->callbackPos = 0; if((pChDcpt->flags & TCPIP_HTTP_CHUNK_FLAG_DYNVAR_DEFAULT_PROCESS) == 0) { // call the user processingif(!_HTTP_DbgKillUserDynVar()){printRes = (*httpUserCback->dynamicPrint)(pHttpCon, pDynDcpt, httpUserCback);_HTTP_DynDbgCallback(pDynDcpt->dynName, printRes, pHttpCon->connIx);if(printRes == TCPIP_HTTP_DYN_PRINT_RES_DEFAULT){ pChDcpt->flags |= TCPIP_HTTP_CHUNK_FLAG_DYNVAR_DEFAULT_PROCESS;}else if(printRes == TCPIP_HTTP_DYN_PRINT_RES_AGAIN || printRes == TCPIP_HTTP_DYN_PRINT_RES_PROCESS_AGAIN){ if(++pDynChunkDcpt->dynRetries > httpDynVarRetries) {printRes = TCPIP_HTTP_DYN_PRINT_RES_DONE; _HTTP_Report_ConnectionEvent(pHttpCon, TCPIP_HTTP_NET_EVENT_DYNVAR_RETRIES_EXCEEDED, pDynDcpt->dynName); }}} } if((pChDcpt->flags & TCPIP_HTTP_CHUNK_FLAG_DYNVAR_DEFAULT_PROCESS) != 0) { // call the default implementation!if((pKEntry = pDynChunkDcpt->pKEntry) != 0){printRes = (*pKEntry->dynamicPrint)(pHttpCon, pDynDcpt, httpUserCback);_HTTP_DynDbgCallback(pDynDcpt->dynName, printRes, pHttpCon->connIx);} } if(pHttpCon->callbackPos != 0) { // user messing with the callbackPos; ignore the printResprintRes = TCPIP_HTTP_DYN_PRINT_RES_PROCESS_AGAIN; } pChDcpt->flags &= ~TCPIP_HTTP_CHUNK_FLAG_DYNVAR_AGAIN; if(printRes == TCPIP_HTTP_DYN_PRINT_RES_AGAIN || printRes == TCPIP_HTTP_DYN_PRINT_RES_PROCESS_AGAIN) {pChDcpt->flags |= TCPIP_HTTP_CHUNK_FLAG_DYNVAR_AGAIN; return printRes == TCPIP_HTTP_DYN_PRINT_RES_AGAIN ? TCPIP_HTTP_CHUNK_RES_WAIT : TCPIP_HTTP_CHUNK_RES_OK; } // don't need calling again return TCPIP_HTTP_CHUNK_RES_DONE;}
2018-08-31 15:32