From 3bc67ee6f90eb8fa2939724961924f215ce2a453 Mon Sep 17 00:00:00 2001 From: Yakun Xu Date: Tue, 26 May 2020 07:03:27 +0800 Subject: [PATCH] [posix] get node id from command line argument (#5000) This simplify manually running posix virtual time mode when debugging. --- src/posix/platform/platform-posix.h | 4 +++- src/posix/platform/system.cpp | 2 +- src/posix/platform/virtual_time.cpp | 8 ++------ tests/scripts/thread-cert/node.py | 4 ---- 4 files changed, 6 insertions(+), 12 deletions(-) diff --git a/src/posix/platform/platform-posix.h b/src/posix/platform/platform-posix.h index 2f077d46f..5a0097c34 100644 --- a/src/posix/platform/platform-posix.h +++ b/src/posix/platform/platform-posix.h @@ -274,8 +274,10 @@ void platformNetifProcess(const fd_set *aReadFdSet, const fd_set *aWriteFdSet, c /** * This function initialize virtual time simulation. * + * @params[in] aNodeId Node id of this simulated device. + * */ -void virtualTimeInit(void); +void virtualTimeInit(uint16_t aNodeId); /** * This function deinitialize virtual time simulation. diff --git a/src/posix/platform/system.cpp b/src/posix/platform/system.cpp index d9ed6888d..43371028c 100644 --- a/src/posix/platform/system.cpp +++ b/src/posix/platform/system.cpp @@ -49,7 +49,7 @@ otInstance *otSysInit(otPlatformConfig *aPlatformConfig) otInstance *instance = NULL; #if OPENTHREAD_POSIX_VIRTUAL_TIME - virtualTimeInit(); + virtualTimeInit(static_cast(atoi(aPlatformConfig->mRadioConfig))); #endif platformAlarmInit(aPlatformConfig->mSpeedUpFactor); platformRadioInit(aPlatformConfig); diff --git a/src/posix/platform/virtual_time.cpp b/src/posix/platform/virtual_time.cpp index f369ef59c..1de9e7d8d 100644 --- a/src/posix/platform/virtual_time.cpp +++ b/src/posix/platform/virtual_time.cpp @@ -51,9 +51,8 @@ static const int kUsPerSecond = 1000000; ///< Number of microseconds per sec static uint64_t sNow = 0; ///< Time of simulation. static int sSockFd = -1; ///< Socket used to communicating with simulator. static uint16_t sPortOffset = 0; ///< Port offset for simulation. -static int sNodeId = 0; ///< Node id of this simulated device. -void virtualTimeInit(void) +void virtualTimeInit(uint16_t aNodeId) { struct sockaddr_in sockaddr; char * offset; @@ -81,10 +80,7 @@ void virtualTimeInit(void) sPortOffset *= kWellKnownNodeId; } - // node id is required for virtual time simulation - sNodeId = atoi(getenv("NODE_ID")); - - sockaddr.sin_port = htons(kBasePort + sPortOffset + sNodeId); + sockaddr.sin_port = htons(kBasePort + sPortOffset + aNodeId); sockaddr.sin_addr.s_addr = INADDR_ANY; sSockFd = SocketWithCloseExec(AF_INET, SOCK_DGRAM, IPPROTO_UDP, kSocketBlock); diff --git a/tests/scripts/thread-cert/node.py b/tests/scripts/thread-cert/node.py index c7c1fec3f..ee72b43e4 100755 --- a/tests/scripts/thread-cert/node.py +++ b/tests/scripts/thread-cert/node.py @@ -109,7 +109,6 @@ class Node: if 'RADIO_DEVICE' in os.environ: cmd += ' -v %s' % os.environ['RADIO_DEVICE'] - os.environ['NODE_ID'] = str(nodeid) # Load Thread 1.1 node when testing Thread 1.2 scenarios for interoperability elif self.version == '1.1': @@ -122,7 +121,6 @@ class Node: if 'RADIO_DEVICE_1_1' in os.environ: cmd += ' -v %s' % os.environ['RADIO_DEVICE_1_1'] - os.environ['NODE_ID'] = str(nodeid) cmd += ' %d' % nodeid print("%s" % cmd) @@ -149,7 +147,6 @@ class Node: if self.version == self.env_version: if 'RADIO_DEVICE' in os.environ: args = ' %s' % os.environ['RADIO_DEVICE'] - os.environ['NODE_ID'] = str(nodeid) else: args = '' @@ -188,7 +185,6 @@ class Node: elif self.version == '1.1': if 'RADIO_DEVICE_1_1' in os.environ: args = ' %s' % os.environ['RADIO_DEVICE_1_1'] - os.environ['NODE_ID'] = str(nodeid) else: args = ''