code: def __startOpenThread(self):
          
          print 'call startOpenThread'
          try:
              if self.hasActiveDatasetToCommit:
                  if self.__sendCommand('dataset commit active')[0] != 'Done':
                      raise Exception('failed to commit active dataset')
                  else:
                      self.hasActiveDatasetToCommit = False
  
              # restore whitelist/blacklist address filter mode if rejoin after reset
              if self.isPowerDown:
                  if self._addressfilterMode == 'whitelist':
                      if self.__setAddressfilterMode('whitelist'):
                          for addr in self._addressfilterSet:
                              self.addAllowMAC(addr)
                  elif self._addressfilterMode == 'blacklist':
                      if self.__setAddressfilterMode('blacklist'):
                          for addr in self._addressfilterSet:
                              self.addBlockedMAC(addr)
  
              if self.deviceRole in [Thread_Device_Role.Leader, Thread_Device_Role.Router, Thread_Device_Role.REED]:
                  self.__setRouterSelectionJitter(1)
  
              if self.__sendCommand('ifconfig up')[0] == 'Done':
                  if self.__sendCommand('thread start')[0] == 'Done':
                      self.isPowerDown = False
                      return True
              else:
                  return False
          except Exception, e:
              ModuleHelper.WriteIntoDebugLogger("startOpenThread() Error: " + str(e))
docs: start OpenThread stack
  
          Returns:
              True: successful to start OpenThread stack and thread interface up
              False: fail to start OpenThread stack