15.6.6 オプション変更通知サンプルのウォークスルー

これらの Jython コードスニペットは、Keil MCBSTM32E プラットフォームの Jython スクリプトおよび DSTREAMDebugAndTrace クラスのものです。

1.def optionValuesChanged(self):
2.'''Callback to update the configuration state after options are changed.
3.This will be called:
4.* after construction but before device connection
5.* during a debug session should the user change the DTSL options
6.'''
7.obase = "options"
8.if self.isConnected():
9.self.updateDynamicOptions(obase)
10.else:
11.self.setInitialOptions(obase)

行 1 で optionValuesChanged メソッドを宣言します。このメソッドが呼び出されて、オプションが変更されたことを DTSL コンポーネントに示します。行 7 で、トップレベルのオプション名のパス値を割り当てます。行 8 ~行 11 で、コンフィギュレーションが既に接続されているかどうかによって、2 つのメソッドのうちのいずれかが呼び出されます。

1.def setInitialOptions(self, obase):
2.'''Takes the configuration options and configures the
3.DTSL objects prior to target connection
4.Param: obase the option path string to top level options
5.'''
6.if self.traceDeviceIsDSTREAM(obase):
7.self.setDSTREAMTraceEnabled(True)
8.self.setDSTREAMOptions(obase+".traceBuffer")
9.obaseETM = obase+".ETM"
10.obaseITM = obase+".ITM"
11.self.setETMEnabled(self.getOptionValue(
12.obaseETM+".cortexM3coreTraceEnabled"))
13.self.reservedATBIDs = {}
14.self.setITMEnabled(self.getOptionValue(obaseITM+".itmTraceEnabled"))
15.obaseITMOwner = obaseITM+".itmTraceEnabled.itmowner"
16.if self.debuggerOwnsITM(obaseITMOwner):
17.self.setITMOwnedByDebugger(True);
18.self.setITMOptions(obaseITMOwner+".debugger")
19.else:
20.self.setITMOwnedByDebugger(False);
21.self.reservedATBIDs["ITM"] =
22.self.getOptionValue(obaseITMOwner+".target.targetITMATBID")
23.self.updateATBIDAssignments()
24.else:
25.self.setDSTREAMTraceEnabled(False)
26.self.setETMEnabled(False)
27.self.setITMEnabled(False)

このコードサンプルでは、以下に注意して下さい。

完全性を確保するために、以下にダイナミックオプションの更新方法を示します。

1.def updateDynamicOptions(self, obase):
2.'''Takes any changes to the dynamic options and
3.applies them.Note that some trace options may
4.not take effect until trace is (re)started
5.Param: obase the option path string to top level options
6.'''
7.if self.traceDeviceIsDSTREAM(obase):
8.obaseETM = obase+".ETM"
9.self.setETMEnabled(self.getOptionValue(
10.obaseETM+".cortexM3coreTraceEnabled"))
11.obaseITM = obase+".ITM"
12.if self.getOptionValue(obaseITM+".itmTraceEnabled"):
13.self.setITMEnabled(True)
14.obaseITMOwner = obaseITM+".itmTraceEnabled.itmowner"
15.if self.debuggerOwnsITM(obaseITMOwner):
16.self.setITMOptions(obaseITMOwner+".debugger")
17.else:
18.self.setITMEnabled(False)

ダイナミックオプションの変更には、ダイナミックのマークの付いたオプションのみを検証する必要があります。

注:

オプション値は対応する DTSL オブジェクトに渡されますが、オプションの変更がすぐに適用されない場合があります。多くの場合、変更内容は実行またはトレースが次回開始されたときにのみ適用されます。オプションの変更がすぐに適用されるかどうかは、DTSL オブジェクトの実装によって決まります。
非機密扱いPDF file icon PDF 版ARM DUI0446ZJ
Copyright © 2010–2016 ARM.All rights reserved.