winIDEA SDK
Loading...
Searching...
No Matches
advanced_local_launching.py
# This script is licensed under BSD License, see file LICENSE.txt, or search for `License` in the SDK online help.
#
# (c) TASKING Germany GmbH, 2023
import sys
import time
import isystem.connect as ic
def main():
# Instantiate the main object for managing connections to winIDEA.
connectionMgr = ic.ConnectionMgr()
def connectAndDisconnect(port, connectionConfig):
if port < 0:
print('No winIDEA with the specified configuration found, port = :', port,
'\n :', connectionConfig.toString(), '\n')
else:
print('Found winIDEA on port: ', port)
connectionMgr.connect(ic.CConnectionConfig().host('').udpDiscoveryPort(port))
ideCtrl = ic.CIDEController(connectionMgr)
ideCtrl.maximize()
time.sleep(2)
ideCtrl.restore()
connectionMgr.disconnect_close(bSaveAll=False)
# Let's connect to winIDEA with known ID
connectionConfig = ic.CConnectionConfig()
connectionConfig.instanceId('myID')
# since most likely there is no winIDEA with the specified ID running,
# this call will raturn processID == 0
print("Looking for winIDEA with ID 'myID' ... ")
try:
connectionMgr.connect(connectionConfig.start_if_required())
port = connectionConfig.getUdpDiscoveryPort()
connectionMgr.disconnect_keep()
connectAndDisconnect(port, connectionConfig)
except Exception as ex:
print(f' winIDEA not found: {ex}')
# Now we'll start new instance with the given workspace and ID:
print('Start new instance of winIDEA')
connectionConfig.instanceId('myID').workspace('../../../targetProjects/SampleSTM32.xjrf')
connectionMgr.connect(connectionConfig.start_always())
port = connectionConfig.getUdpDiscoveryPort()
connectionMgr.disconnect_close(bSaveAll=False)
connectAndDisconnect(port, connectionConfig)
# Most often we want to start a new instance of winIDEA only
# if the workspace is not already opened:
print('Start new instance of winIDEA started only if it is not running.')
connectionConfig.instanceId('myID').workspace('../../../targetProjects/SampleSTM32.xjrf')
connectionConfig.start_if_required()
connectionMgr.connect(connectionConfig)
port = connectionConfig.getUdpDiscoveryPort()
connectionMgr.disconnect_close(bSaveAll=False)
connectAndDisconnect(port, connectionConfig)
# Let's start invisible winIDEA - you can control it only via isystem.connect
print('Start hidden winIDEA.')
invisibleConnectionConfig = ic.CConnectionConfig()
invisibleConnectionConfig.visibility(ic.IConnect.lfShowHidden).workspace(r'../../../targetProjects/SampleSTM32.xjrf')
invisibleConnectionConfig.start_always()
connectionMgr.connect(invisibleConnectionConfig)
print(f'Connected: {connectionMgr.isAttached()}')
debugCtrl = ic.CDebugFacade(connectionMgr)
print('downloading to invisible winIDEA')
debugCtrl.download()
print('Downloading finished')
debugCtrl.reset()
debugCtrl.run()
time.sleep(1)
debugCtrl.stop()
debugCtrl.waitUntilStopped(3000)
print('main_loop_counter = ', debugCtrl.evaluate(ic.IConnectDebug.fMonitor, 'main_loop_counter').getResult())
# shut down the invisible winIDEA
connectionMgr.disconnect_close(bSaveAll=False)
print('Invisible winIDEA has been shut down')
if __name__ == "__main__":
main()