winIDEA SDK
fnet_can.py
1# This script is licensed under BSD License, see file LICENSE.txt.
2#
3# (c) TASKING Germany GmbH, 2023
4
5"""
6This example shows basic FNet CAN controller initialization and usage.
7
8(c) iSYSTEM Labs, 2022
9"""
10import isystem.connect as ic
11
12winidea_id = ''
13
14
15try:
16 # connect to last winIDEA
17 connMgr = ic.ConnectionMgr()
18 connMgr.connect(ic.CConnectionConfig().instanceId(winidea_id))
19
20 # initialize FNet CAN Controller
21 SessionCtrl = ic.CSessionCtrl(connMgr)
22 FNetCtrl = ic.CFNetCtrl(connMgr)
23 CANCtrl = FNetCtrl.CAN('CAN2LIN2.CAN1')
24
25
26
27 optCANCfg = CANCtrl.cfg()
28 SessionCtrl.begin_reset()
29
30 optCANCfg.set_mode(ic.ECAN_CAN_FD_ISO)
31 optCANCfg.set_allow_injection(False)
32 optCANCfg.set_arbitration (nBaudrate_kbps = 1000, nBitSamplingPoint = 70)
33 optCANCfg.set_FD_data_phase(nBaudrate_kbps = 1000, nBitSamplingPoint = 70)
34
35 # configure the network (not implemented)
36 # optNetworkCfg = optCANCfg.opt_network()
37 # optNetworkCfg.set_name('Airbag')
38 # optNetworkCfg.add_description_file('Airbag.dbc')
39
40
41
42 SessionCtrl.end() #end first for cfg to take effect
43 SessionCtrl.begin_prepare()
44
45
46
47 # use FNetTrigger 5 in the example
48 FTrig = 5
49
50 optCANOp = CANCtrl.op()
51 # qualifier - starts on FTrig, not enabled from start
52 CANCtrl.op_qualifier_enable(FTrig)
53 CANCtrl.op_qualifier_enable_on_start(False)
54
55 # don't record all received messages
56 optCANOp.set_record_all_received(False)
57 # configure error in one call
58 optCANOp.set_error(bRecord = False, nFTrig = FTrig)
59 # configure comparator in one call
60 optCANOp.set_comparator(nComparator = 0, bRecord = False, nFTrig = FTrig, eLength = ic.ECAN_Standard, nID = 11, nMask = 0xff, eType = ic.ECAN_Data)
61
62 # configure comparator 1 individually (JU) delay impl to later time
63# optComparator = optCANOp.opt_comparator(1)
64# optComparator.set_record(True) # record when matching
65# optComparator.set_FTrig(FTrig) # generate this trigger
66# optComparator.set_length(ic.ECAN_Standard)
67# optComparator.set_ID(12)
68# optComparator.set_mask(0xff)
69# optComparator.set_type(ic.ECAN_Both)
70
71 # record all injected messages
72 optCANOp.set_record_all_injected(True)
73
74 # configure action 0 in one call
75 optCANOp.set_action(nAction = 0, nFTrig = FTrig, eLength = ic.ECAN_Standard, nID = 11, bFD = True, bBRS = False, bESI = False, bRequest = False, rstrData = '01020304')
76 # configure action 1 individually (JU) delay impl to later time
77# optAction = optCANOp.opt_action(1)
78# optAction.set_FTrig(FTrig)
79# optAction.set_length(ic.ECAN_Standard)
80# optAction.set_ID(13)
81# optAction.set_FD(True)
82# optAction.set_BRS(False)
83# optAction.set_ESI(False)
84# optAction.set_request(False)
85# optAction.set_data('01020304')
86
87 # apply new operation settings and restart operation
88 FNetCtrl.op_apply()
89
90
91 CANCtrl.ctrl_inject(eLength = ic.ECAN_Standard, nID = 11, bFD = True, bBRS = False, bESI = False, bRequest = False, rstrData = '01020304')
92
93except Exception as ex:
94 print(ex)