[ECOS] CDL/TCL issue building macro names in loops
Richard Rauch
rrauch@itrgmbh.de
Thu Mar 28 16:32:00 GMT 2013
Hi all,
is there an expert for CDL/TCL language?
I have problems with creating macro name dynamically with TCL language.
I have to implement an ADC driver. I want to create the list of channels.
Because the large number of channels (10 internal channel with ACT value,
MIN value and MAX value and 15 external channels) I want to create the
channel list more convenient.
The following code (some excerpt of my CDL script) works already good, but
it is not matching my requirements completely:
#---------------------------------------------------------------------------
----------------------------------------
set SensorList { temp vccint vccaux vpvn vrefp vrefn vccbram vccpint vccpaux
vcc0ddr } foreach Sensor $SensorList {
cdl_component CYGNUM_DEVS_ADC_ARM_XC7Z_ONCHIP_$Sensor {
parent CYGNUM_DEVS_ADC_ARM_XC7Z_ONCHIP_SENSORS
display "on-chip $Sensor"
flavor none
description "XADC on-chip $Sensor sensor
measurement"
cdl_option
CYGDAT_DEVS_ADC_ARM_XC7Z_CHANNEL_NAME_ONCHIP_ACT_$Sensor {
display "Device name"
flavor data
default_value [format
{"\"/dev/xadc_act_%s\""} $Sensor ]
description "
This option controls the
name that an eCos application
should use to access this
device via cyg_io_lookup(),
open(), or similar calls."
}
.
.
.
#---------------------------------------------------------------------------
-----------------------------------------
The $Sensor symbol is replaced in the code for each loop correctly.
But it works only, when $Sensor is separated by blanks or if it is at end of
string.
It is NOT working, when I place it inside the MACRO Name: e.g.
CYGDAT_DEVS_ADC_ARM_XC7Z_CHANNEL_ONCHIP_$Sensor _ACT_NAME I have tried
different syntax approaches...e..g "$$", $ at beginning and end of symbol,
put into "[...]", but no success! Is this possible anyhow? And what is the
correct syntax?
Further I want to use string functions "string toupper" and "string
tolower". In Macro Names I want to convert to upper, in device name I want
to convert to lower (which would match the naming conventions).
But this is not working too. I tried e.g [string tolower ($Sensor)] or [expr
string tolower($Sensor)] and a lot of other variants. But I always get
syntax errors.
Any ideas, what is wrong?
Thanks
Richard
ITR GmbH
web: http://www.itrgmbh.com
email: info@itrgmbh.com
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss
More information about the Ecos-discuss
mailing list