I now also ran into the SRSP delay issue.
In order to know how much the delay should be I decided to measure it:
while ((result == 0) && (pInstance->numOfReceivedSRSPbytes == 0)) #define SRSP_TIMEOUT_S 5 expirytime.tv_sec = curtime.tv_sec + SRSP_TIMEOUT_S; expirytime.tv_nsec = curtime.tv_usec * 1000; { result = pthread_cond_timedwait( &pInstance->clientSREQcond, &pInstance->clientSREQmutex, &expirytime ); } struct timeval pasttime; gettimeofday( &pasttime, NULL ); // [...] if ( rspMsg !=NULL) { if(pasttime.tv_usec>curtime.tv_usec) { pasttime.tv_usec-=curtime.tv_usec; pasttime.tv_sec-=curtime.tv_sec; } else { pasttime.tv_usec+=1000000L; pasttime.tv_usec-=curtime.tv_usec; pasttime.tv_sec+=1; pasttime.tv_sec-=curtime.tv_sec; } uiPrintfEx( trWARNING, "SRSP Delay %u.%06u\n", pasttime.tv_sec, pasttime.tv_usec); // [...]
I was surprised by the results:
[2020-11-26 23:18:55.081673] [NWK_MGR/MAIN] WARNING: SRSP Delay 0.000276 [2020-11-26 23:18:55.081673] [NWK_MGR/MAIN] WARNING: SRSP Delay 0.000276 [2020-11-26 23:18:57.082400] [NWK_MGR/MAIN] WARNING: SRSP Delay 2.000639 [2020-11-26 23:18:57.097178] [NWK_MGR/MAIN] WARNING: SRSP Delay 0.014666 [2020-11-26 23:19:20.103357] [NWK_MGR/MAIN] WARNING: SRSP Delay 0.000166 [2020-11-26 23:19:22.104502] [NWK_MGR/MAIN] WARNING: SRSP Delay 2.001054 [2020-11-26 23:19:22.117378] [NWK_MGR/MAIN] WARNING: SRSP Delay 0.012757 [2020-11-26 23:21:32.914494] [NWK_MGR/MAIN] WARNING: SRSP Delay 0.000143 [2020-11-26 23:21:34.915530] [NWK_MGR/MAIN] WARNING: SRSP Delay 2.000960 [2020-11-26 23:21:34.926728] [NWK_MGR/MAIN] WARNING: SRSP Delay 0.011098 [2020-11-26 23:21:41.843945] [NWK_MGR/MAIN] WARNING: SRSP Delay 0.000314 [2020-11-26 23:21:43.845172] [NWK_MGR/MAIN] WARNING: SRSP Delay 2.001163 [2020-11-26 23:21:43.861269] [NWK_MGR/MAIN] WARNING: SRSP Delay 0.015734 [2020-11-26 23:21:58.468563] [NWK_MGR/MAIN] WARNING: SRSP Delay 0.000271 [2020-11-26 23:22:00.470616] [NWK_MGR/MAIN] WARNING: SRSP Delay 2.001966 [2020-11-26 23:22:00.482656] [NWK_MGR/MAIN] WARNING: SRSP Delay 0.011940 [2020-11-26 23:22:16.429393] [NWK_MGR/MAIN] WARNING: SRSP Delay 0.000366 [2020-11-26 23:22:18.430701] [NWK_MGR/MAIN] WARNING: SRSP Delay 2.001199 [2020-11-26 23:22:18.444897] [NWK_MGR/MAIN] WARNING: SRSP Delay 0.014043 [2020-11-26 23:18:57.082400] [NWK_MGR/MAIN] WARNING: SRSP Delay 2.000639
They are all minimum 1 second and the pthread_cond_wait seems to expire quickly for small values, but on multiples of full seconds later on (the set limit is 5, and the delays observed for the SRSP is 2 seconds).
This can also be checked using the following SRSP transaction:
[2020-11-26 23:51:39.672192] [NWK_MGR/MAIN] MISC1 : NwkMgr sendSysNwkInfoReadReqAndSetTxPower: [2020-11-26 23:51:39.672196] [NWK_MGR/MAIN] INFO : preparing to send 2 bytes, subSys 0x11, cmdId 0x08 (SYS_NWK_INFO_READ_REQ), pData: [2020-11-26 23:51:39.672200] [NWK_MGR/MAIN] INFO : [MUTEX] Lock SRSP Transaction Mutex [2020-11-26 23:51:41.672746] [NWK_MGR/READ] INFO : [MUTEX] SRSP Cond signal set [2020-11-26 23:51:41.672750] [NWK_MGR/READ] INFO : Client Read: (len 53): [2020-11-26 23:51:41.672771] [NWK_MGR/MAIN] WARNING: SRSP Delay 2.000490
My setup for this observation is the following:
- NPI server running on embedded platform on AM335x;
- Other gateway servers running in Ubuntu 16.04 VM (VirtualBox), running on Win10.
I havent measured it yet in the pure embedded setup, but there may be some setting to optimise this delay .