docs: def joinNetwork(self, eRoleId):
          """make device ready to join the Thread Network with a given role
  
          Args:
              eRoleId: a given device role id
  
          Returns:
              True: ready to set Thread Network parameter for joining desired Network
          """
          print '%s call joinNetwork' % self.port
          print eRoleId
  
          self.deviceRole = eRoleId
          mode = 15
          try:
              if ModuleHelper.LeaderDutChannelFound:
                  self.channel = ModuleHelper.Default_Channel
  
              # FIXME: when Harness call setNetworkDataRequirement()?
              # only sleep end device requires stable networkdata now
              if eRoleId == Thread_Device_Role.Leader:
                  print 'join as leader'
                  #rsdn
                  mode = 15
                  if self.AutoDUTEnable is False:
                      # set ROUTER_DOWNGRADE_THRESHOLD
                      self.__setRouterDowngradeThreshold(33)
              elif eRoleId == Thread_Device_Role.Router:
                  print 'join as router'
                  #rsdn
                  mode = 15
                  if self.AutoDUTEnable is False:
                      # set ROUTER_DOWNGRADE_THRESHOLD
                      self.__setRouterDowngradeThreshold(33)
              elif eRoleId == Thread_Device_Role.SED:
                  print 'join as sleepy end device'
                  #s
                  mode = 4
                  self.setPollingRate(self.sedPollingRate)
              elif eRoleId == Thread_Device_Role.EndDevice:
                  print 'join as end device'
                  #rsn
                  mode = 13
              elif eRoleId == Thread_Device_Role.REED:
                  print 'join as REED'
                  #rsdn
                  mode = 15
                  # set ROUTER_UPGRADE_THRESHOLD
                  self.__setRouterUpgradeThreshold(0)
              elif eRoleId == Thread_Device_Role.EndDevice_FED:
                  # always remain an ED, never request to be a router
                  print 'join as FED'
                  #rsdn
                  mode = 15
                  # set ROUTER_UPGRADE_THRESHOLD
                  self.__setRouterUpgradeThreshold(0)
              elif eRoleId == Thread_Device_Role.EndDevice_MED:
                  print 'join as MED'
                  #rsn
                  mode = 13
              else:
                  pass
  
              # set Thread device mode with a given role
              self.__setDeviceMode(mode)
              self.__setKeySwitchGuardTime(0)  #temporally
              time.sleep(0.1)
              # start OpenThreadWpan
              self.__startOpenThreadWpan()
              time.sleep(3)
              return True
          except Exception, e:
              ModuleHelper.WriteIntoDebugLogger('joinNetwork() Error: ' + str(e))