winIDEA SDK
Loading...
Searching...
No Matches
advanced_local_launching.py
1# This script is licensed under BSD License, see file LICENSE.txt, or search for `License` in the SDK online help.
2#
3# (c) TASKING Germany GmbH, 2023
4
5import sys
6import time
7import isystem.connect as ic
8
9def main():
10 # Instantiate the main object for managing connections to winIDEA.
11 connectionMgr = ic.ConnectionMgr()
12
13
14 def connectAndDisconnect(port, connectionConfig):
15
16 if port < 0:
17 print('No winIDEA with the specified configuration found, port = :', port,
18 '\n :', connectionConfig.toString(), '\n')
19 else:
20 print('Found winIDEA on port: ', port)
21 connectionMgr.connect(ic.CConnectionConfig().host('').udpDiscoveryPort(port))
22 ideCtrl = ic.CIDEController(connectionMgr)
23 ideCtrl.maximize()
24 time.sleep(2)
25 ideCtrl.restore()
26 connectionMgr.disconnect_close(bSaveAll=False)
27
28
29 # Let's connect to winIDEA with known ID
30 connectionConfig = ic.CConnectionConfig()
31 connectionConfig.instanceId('myID')
32
33 # since most likely there is no winIDEA with the specified ID running,
34 # this call will raturn processID == 0
35 print("Looking for winIDEA with ID 'myID' ... ")
36 try:
37 connectionMgr.connect(connectionConfig.start_if_required())
38 port = connectionConfig.getUdpDiscoveryPort()
39 connectionMgr.disconnect_keep()
40 connectAndDisconnect(port, connectionConfig)
41 except Exception as ex:
42 print(f' winIDEA not found: {ex}')
43
44 # Now we'll start new instance with the given workspace and ID:
45 print('Start new instance of winIDEA')
46 connectionConfig.instanceId('myID').workspace('../../../targetProjects/SampleSTM32.xjrf')
47 connectionMgr.connect(connectionConfig.start_always())
48 port = connectionConfig.getUdpDiscoveryPort()
49 connectionMgr.disconnect_close(bSaveAll=False)
50 connectAndDisconnect(port, connectionConfig)
51
52 # Most often we want to start a new instance of winIDEA only
53 # if the workspace is not already opened:
54 print('Start new instance of winIDEA started only if it is not running.')
55 connectionConfig.instanceId('myID').workspace('../../../targetProjects/SampleSTM32.xjrf')
56 connectionConfig.start_if_required()
57 connectionMgr.connect(connectionConfig)
58 port = connectionConfig.getUdpDiscoveryPort()
59 connectionMgr.disconnect_close(bSaveAll=False)
60 connectAndDisconnect(port, connectionConfig)
61
62
63 # Let's start invisible winIDEA - you can control it only via isystem.connect
64 print('Start hidden winIDEA.')
65 invisibleConnectionConfig = ic.CConnectionConfig()
66 invisibleConnectionConfig.visibility(ic.IConnect.lfShowHidden).workspace(r'../../../targetProjects/SampleSTM32.xjrf')
67 invisibleConnectionConfig.start_always()
68 connectionMgr.connect(invisibleConnectionConfig)
69 print(f'Connected: {connectionMgr.isAttached()}')
70
71 debugCtrl = ic.CDebugFacade(connectionMgr)
72 print('downloading to invisible winIDEA')
73 debugCtrl.download()
74 print('Downloading finished')
75 debugCtrl.reset()
76 debugCtrl.run()
77 time.sleep(1)
78 debugCtrl.stop()
79 debugCtrl.waitUntilStopped(3000)
80 print('main_loop_counter = ', debugCtrl.evaluate(ic.IConnectDebug.fMonitor, 'main_loop_counter').getResult())
81
82 # shut down the invisible winIDEA
83 connectionMgr.disconnect_close(bSaveAll=False)
84 print('Invisible winIDEA has been shut down')
85
86if __name__ == "__main__":
87 main()