home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Thomson (Residential)
/
TGSTPv7203.iso
/
mac
/
HIW
/
xml
/
mod_upgrade_backupconfig.xml
< prev
next >
Wrap
Extensible Markup Language
|
2008-02-11
|
12KB
|
252 lines
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE fsm SYSTEM "fsm.dtd">
<!--
Backs up config files, templates, software keys and language packs.
Input properties:
- backupLanguagePacks [disable|backup|*highest|exact]: backup .lng files:
- disable: don't backup
- backup, highest, exact: backup to a temporary directory
- backupTemplates [0|1]: backup .tpl files
- backupConfiguration [0|1]: backup .ini files
- backupSoftKeys [0|1]: backup .swk files
Output properties:
- languageList: list of language ISO codes
- languagePackList: list of language packs on the device
- configNameList: list of names of the config files that were backed up
- configList: list of backed up config files
- softKeyList: list of backed up software keys
- backupFailed: if 1 or more files could not be backed up, the value
will be higher than 0.
Application properties:
- device: The device to operate on.
- expertMode [0|1]: If 1, config files will be backed up to disk.
Exit events:
- finished
-->
<fsm>
<property key="backupLanguagePacks" required="yes"/>
<property key="backupTemplates" required="yes"/>
<property key="backupConfiguration" required="yes"/>
<property key="backupSoftKeys" required="yes"/>
<states>
<!-- check TP <? 1.2 -->
<state type="compare" name="checkTpVersion">
<property key="input2" value="1.2"/>
<property key="type" value="number"/>
<property key="comparisonType" value="smaller"/>
</state>
<state type="switch" name="checkBackupLangPacks">
<property key="outputs" value="disable;backup;highest;exact"/>
</state>
<!-- get languagelist, configlist and software keys for TP >= 1.2 -->
<state type="actionGetLanguageList" name="getLanguageList" weight="2"/>
<state type="actionGetConfigList" name="getConfigList" weight="2"/>
<state type="upgradeDevice_getSoftKeys" name="getSoftKeys" weight="10"/>
<state type="compare" name="checkGetSoftKeys">
<property key="type" value="number"/>
<property key="comparisonType" value="smallerorequal"/>
<property key="input1" value="1"/>
</state>
<state type="compare" name="filterTpl">
<property key="type" value="number"/>
<property key="comparisonType" value="equal"/>
<property key="input1" value="0"/>
</state>
<state type="compare" name="filterIni">
<property key="type" value="number"/>
<property key="comparisonType" value="equal"/>
<property key="input1" value="0"/>
</state>
<!-- iterator fsm for getting config files -->
<state type="fsm" name="getConfigFiles" weight="20">
<property key="fileList" required="yes"/>
<states>
<!-- iteration state -->
<state type="listIterator" name="fileIterator"/>
<!-- get one config file -->
<state type="actionGetFile" name="getFile" weight="10"/>
</states>
<events>
<event name="finished"/>
</events>
<transitions>
<!-- iterate -->
<transition startstate="fileIterator">
<propertymap target="fsm.iterateCount" function="count($fsm.fileList)"/>
<propertymap target="list" function="$fsm.fileList"/>
<propertymap target="currentItem" function=""/>
<propertymap target="fsm.configList" function="objectlist()"/>
<propertymap target="fsm.backupFailed" function="0"/><!-- reset failed flag -->
<propertymap target="fsm.configNameList" function="$fsm.fileList"/><!-- copy list -->
</transition>
<!-- next file, download -->
<transition fromstate="fileIterator" tostate="getFile" event="nextItem">
<propertymap target="fsm.currentFile" function="$currentItem"/>
<propertymap target="fileName" function="$currentItem"/>
<propertymap target="device" function="$app.device"/>
<propertymap target="backup" function="$app.expertMode"/>
</transition>
<!-- next iteration -->
<transition fromstate="getFile" tostate="fileIterator" event="finished">
<propertymap target="list" function="$fsm.fileList"/>
<propertymap target="currentItem" function="$fsm.currentFile"/>
<propertymap target="fsm.configList" function="setproperty($fsm.configList, $fsm.currentFile, $content)"/>
</transition>
<transition fromstate="getFile" tostate="fileIterator" event="failed">
<propertymap target="list" function="$fsm.fileList"/>
<propertymap target="currentItem" function="$fsm.currentFile"/>
<propertymap target="fsm.backupFailed" function="add($fsm.backupFailed, 1)"/><!-- set failed flag -->
<propertymap target="fsm.configNameList" function="remove($fsm.configNameList, concat('^', $fsm.currentFile, '$'))"/><!-- remove from list -->
</transition>
<transition fromstate="getFile" tostate="fileIterator" event="fileNotFound">
<propertymap target="list" function="$fsm.fileList"/>
<propertymap target="currentItem" function="$fsm.currentFile"/>
<propertymap target="fsm.configNameList" function="remove($fsm.configNameList, concat('^', $fsm.currentFile, '$'))"/><!-- remove from list -->
</transition>
<!-- no more files, finish -->
<transition fromstate="fileIterator" toexit="finished" event="lastItem"/>
</transitions>
</state> <!-- getConfigFiles -->
<!-- iterator fsm for getting language packs -->
<state type="fsm" name="backupLanguagePacks" weight="40">
<property key="fileList" required="yes"/>
<states>
<state type="listIterator" name="fileIterator"/>
<state type="actionGetFile" name="getFile" weight="10"/>
<state type="writeFile" name="saveFile" weight="1"/>
</states>
<events>
<event name="finished"/>
</events>
<transitions>
<transition startstate="fileIterator">
<propertymap target="fsm.iterateCount" function="count($fsm.fileList)"/>
<propertymap target="list" function="$fsm.fileList"/>
<propertymap target="currentItem" function=""/>
</transition>
<transition fromstate="fileIterator" tostate="getFile" event="nextItem">
<propertymap target="fsm.currentFile" function="$currentItem"/>
<propertymap target="fileName" function="$currentItem"/>
<propertymap target="device" function="$app.device"/>
<propertymap target="bin" function="1"/>
</transition>
<transition fromstate="getFile" tostate="saveFile" event="finished">
<propertymap target="content" function="$content"/>
<propertymap target="path" function="concat('%TEMP%/', $fsm.currentFile)"/>
</transition>
<transition fromstate="saveFile" tostate="fileIterator" event="finished|failed">
<propertymap target="list" function="$fsm.fileList"/>
<propertymap target="currentItem" function="$fsm.currentFile"/>
</transition>
<transition fromstate="getFile" tostate="fileIterator" event="failed|fileNotFound">
<propertymap target="list" function="$fsm.fileList"/>
<propertymap target="currentItem" function="$fsm.currentFile"/>
</transition>
<transition fromstate="fileIterator" toexit="finished" event="lastItem"/>
</transitions>
</state> <!-- backupLanguagePacks -->
</states>
<events>
<event name="finished"/>
</events>
<transitions>
<transition startstate="checkTpVersion">
<propertymap target="input1" function="property($app.device,'tpVersionNumber')"/>
<propertymap target="fsm.backupFailed" function="0"/><!-- reset failed flag -->
</transition>
<!-- TPversion < 1.2, add isp.def and user.ini to configlist and download the files -->
<transition fromstate="checkTpVersion" tostate="filterIni" event="true">
<propertymap target="fsm.configNameList" function="makelist('isp.def','user.ini')"/>
<propertymap target="input2" function="$fsm.backupConfiguration"/>
</transition>
<!-- TPversion >= 1.2 -->
<!-- get software keys -->
<transition fromstate="checkTpVersion" tostate="checkGetSoftKeys" event="false">
<propertymap target="fsm.configNameList" function="makelist('isp.def')"/>
<propertymap target="input2" function="$fsm.backupSoftKeys"/>
</transition>
<transition fromstate="checkGetSoftKeys" tostate="getSoftKeys" event="true">
<propertymap target="device" function="$app.device"/>
</transition>
<!-- get language list and backup language packs -->
<transition fromstate="checkGetSoftKeys" tostate="getLanguageList" event="false">
<propertymap target="device" function="$app.device"/>
</transition>
<transition fromstate="getSoftKeys" tostate="getLanguageList" event="finished">
<!-- output --><propertymap target="fsm.softKeyList" function="$softKeyList"/>
<propertymap target="device" function="$app.device"/>
</transition>
<transition fromstate="getSoftKeys" tostate="getLanguageList" event="failed">
<!-- output --><propertymap target="fsm.softKeyList" function="objectlist()"/>
<propertymap target="device" function="$app.device"/>
<propertymap target="fsm.backupFailed" function="1"/><!-- set failed flag -->
</transition>
<transition fromstate="getLanguageList" tostate="checkBackupLangPacks" event="finished">
<!-- output --><propertymap target="fsm.languageList" function="$languageList"/>
<!-- output --><propertymap target="fsm.languagePackList" function="$languagePackList"/>
<propertymap target="input" function="$fsm.backupLanguagePacks"/>
</transition>
<transition fromstate="checkBackupLangPacks" tostate="backupLanguagePacks" event="exact|backup|highest|default">
<propertymap target="fileList" function="$fsm.languagePackList"/>
</transition>
<!-- get config list -->
<transition fromstate="checkBackupLangPacks" tostate="getConfigList" event="disable">
<propertymap target="device" function="$app.device"/>
</transition>
<transition fromstate="backupLanguagePacks" tostate="getConfigList" event="finished">
<propertymap target="device" function="$app.device"/>
</transition>
<transition fromstate="getLanguageList" tostate="getConfigList" event="failed">
<propertymap target="device" function="$app.device"/>
</transition>
<!-- filter list-->
<transition fromstate="getConfigList" tostate="filterTpl" event="finished">
<!-- output --><propertymap target="fsm.configNameList" function="merge($fsm.configNameList,$configNameList)"/>
<propertymap target="input2" function="$fsm.backupTemplates"/>
</transition>
<transition fromstate="filterTpl" tostate="filterIni" event="true">
<!--propertymap target="fsm.configNameList" function="grep($fsm.configNameList,'.+\.(?!tpl$)')"/--><!-- filter *.tpl out -->
<propertymap target="fsm.configNameList" function="remove($fsm.configNameList, '\.tpl$')"/>
<propertymap target="input2" function="$fsm.backupConfiguration"/>
</transition>
<transition fromstate="filterTpl" tostate="filterIni" event="false">
<propertymap target="input2" function="$fsm.backupConfiguration"/>
</transition>
<!-- get all files that are in the configNameList -->
<transition fromstate="getConfigList" tostate="getConfigFiles" event="failed">
<propertymap target="fileList" function="$fsm.configNameList"/>
<propertymap target="fsm.backupFailed" function="1"/><!-- set failed flag -->
</transition>
<transition fromstate="filterIni" tostate="getConfigFiles" event="true">
<!--propertymap target="fsm.configNameList" function="grep($fsm.configNameList,'.+\.(?!ini$)')"/--><!-- filter *.ini out -->
<propertymap target="fsm.configNameList" function="remove($fsm.configNameList, '\.ini$')"/>
<propertymap target="fileList" function="$fsm.configNameList"/>
</transition>
<transition fromstate="filterIni" tostate="getConfigFiles" event="false">
<propertymap target="fileList" function="$fsm.configNameList"/>
</transition>
<!-- done -->
<transition fromstate="getConfigFiles" toexit="finished" event="finished">
<!-- output --><propertymap target="fsm.configNameList" function="$configNameList"/>
<!-- output --><propertymap target="fsm.configList" function="$configList"/>
<propertymap target="input2" function="$fsm.backupSoftKeys"/>
<propertymap target="fsm.configNameList" function="$configNameList"/>
<propertymap target="fsm.backupFailed" function="add($fsm.backupFailed, $backupFailed)"/>
</transition>
</transitions>
</fsm>