diff --git a/pyren/scen_ecri_codevin.py b/pyren/scen_ecri_codevin.py index 46469c3..30f3eba 100755 --- a/pyren/scen_ecri_codevin.py +++ b/pyren/scen_ecri_codevin.py @@ -18,6 +18,7 @@ import time import mod_globals import mod_utils import mod_ecu +import mod_db_manager from mod_utils import pyren_encode from mod_utils import clearScreen from mod_utils import hex_VIN_plus_CRC @@ -59,7 +60,7 @@ def run( elm, ecu, command, data ): # # Data file parsing # - DOMTree = xml.dom.minidom.parse(data) + DOMTree = xml.dom.minidom.parse(mod_db_manager.get_file_from_clip(data)) ScmRoom = DOMTree.documentElement ScmParams = ScmRoom.getElementsByTagName("ScmParam") diff --git a/pyren/scen_ecri_counter2.py b/pyren/scen_ecri_counter2.py index 38b927e..c8ff6fa 100644 --- a/pyren/scen_ecri_counter2.py +++ b/pyren/scen_ecri_counter2.py @@ -1,4 +1,14 @@ #!/usr/bin/env python +''' +Scenarium usage example + +Name of this script should be exactly the same as in scenaruim URL but with '.py' extension + +URL - scm:scen_ecri_calinj1#scen_ecri_calinj1_xxxxx.xml + +'run' procedure will be executed by pyren script + +''' import os import sys @@ -9,108 +19,125 @@ import mod_globals import mod_utils import mod_ecu import mod_db_manager -from mod_utils import clearScreen -from mod_utils import pyren_encode -from mod_utils import KBHit import mod_ecu_mnemonic +from mod_utils import pyren_encode +from mod_utils import clearScreen import xml.dom.minidom def run( elm, ecu, command, data ): - - clearScreen() - header = '['+command.codeMR+'] '+command.label + ''' + MAIN function of scenarium - ScmSet = {} - ScmParam = {} - - def get_message( msg ): - if msg in ScmParam.keys(): - value = ScmParam[msg] - else: - value = msg - if value.isdigit() and value in mod_globals.language_dict.keys(): - value = pyren_encode( mod_globals.language_dict[value] ) - return value - - def get_message_by_id( id ): - if id.isdigit() and id in mod_globals.language_dict.keys(): - value = pyren_encode( mod_globals.language_dict[id] ) - return value - - - DOMTree = xml.dom.minidom.parse(mod_db_manager.get_file_from_clip(data)) - ScmRoom = DOMTree.documentElement + Parameters: + elm - refernce to adapter class + ecu - reference to ecu class + command - refernce to the command this scenarium belongs to + data - name of xml file with parameters from scenarium URL + ''' - ScmParams = ScmRoom.getElementsByTagName("ScmParam") - - for Param in ScmParams: - name = pyren_encode( Param.getAttribute("name") ) - value = pyren_encode( Param.getAttribute("value") ) - - ScmParam[name] = value + clearScreen() + header = '['+command.codeMR+'] '+command.label - ScmSets = ScmRoom.getElementsByTagName("ScmSet") + ScmSet = {} + ScmParam = {} + + def get_message( msg, encode = 1 ): + if msg in ScmParam.keys(): + value = ScmParam[msg] + else: + value = msg + if value.isdigit() and value in mod_globals.language_dict.keys(): + if encode: + value = pyren_encode(mod_globals.language_dict[value]) + else: + value = mod_globals.language_dict[value] + return value + + def get_message_by_id( id, encode = 1 ): + if id.isdigit() and id in mod_globals.language_dict.keys(): + if encode: + value = pyren_encode(mod_globals.language_dict[id]) + else: + value = mod_globals.language_dict[id] + return value + + # + # Data file parsing + # + DOMTree = xml.dom.minidom.parse(mod_db_manager.get_file_from_clip(data)) + ScmRoom = DOMTree.documentElement + + ScmParams = ScmRoom.getElementsByTagName("ScmParam") - for Set in ScmSets: - setname = pyren_encode(Set.getAttribute("name")) - ScmParams = Set.getElementsByTagName("ScmParam") - - for Param in ScmParams: - name = pyren_encode( Param.getAttribute("name") ) - value = pyren_encode( Param.getAttribute("value") ) - - ScmSet[setname]= value - ScmParam[name] = value + for Param in ScmParams: + name = pyren_encode( Param.getAttribute("name") ) + value = pyren_encode( Param.getAttribute("value") ) + + ScmParam[name] = value - kb = KBHit() + ScmSets = ScmRoom.getElementsByTagName("ScmSet") + + for Set in ScmSets: + if len(Set.attributes) != 1: + setname = pyren_encode(mod_globals.language_dict[Set.getAttribute("name")]) + ScmParams = Set.getElementsByTagName("ScmParam") + + for Param in ScmParams: + name = pyren_encode( Param.getAttribute("name") ) + value = pyren_encode( Param.getAttribute("value") ) + + ScmSet[setname]= value + ScmParam[name] = value + + confirm = get_message_by_id('19800') + title = get_message('Title') + messageInfo = get_message('Message1') + succesMessage = get_message('CommandFinished') + failMessage = get_message('CommandImpossible') - confirm = get_message_by_id('19800') - title = get_message("Title") - messageInfo = get_message("Message1") - succesMessage = get_message("CommandFinished") - failMessage = get_message("CommandImpossible") + mnemonics = ecu.get_ref_id(ScmParam['default']).mnemolist - mnemonics = ecu.get_ref_id(ScmParam["default"]).mnemolist + if mnemonics[0][-2:] > mnemonics[1][-2:]: + mnemo1 = mnemonics[1] + mnemo2 = mnemonics[0] + else: + mnemo1 = mnemonics[0] + mnemo2 = mnemonics[1] + + byteFrom = int(mnemo1[-2:]) + byteTo = int(re.findall('\d+',mnemo2)[1]) + byteCount = byteTo - byteFrom - 1 + resetBytes = byteCount * '00' - if mnemonics[0][-2:] > mnemonics[1][-2:]: - mnemo1 = mnemonics[1] - mnemo2 = mnemonics[0] - else: - mnemo1 = mnemonics[0] - mnemo2 = mnemonics[1] - - byteFrom = int(mnemo1[-2:]) - byteTo = int(re.findall("\d+", mnemo2)[1]) - byteCount = byteTo - byteFrom - 1 - resetBytes = byteCount * "00" + mnemo1Data = mod_ecu_mnemonic.get_mnemonic(ecu.Mnemonics[mnemo1], ecu.Services, elm, 1) + mnemo2Data = mod_ecu_mnemonic.get_mnemonic(ecu.Mnemonics[mnemo2], ecu.Services, elm, 1) - mnemo1Data = mod_ecu_mnemonic.get_mnemonic(ecu.Mnemonics[mnemo1], ecu.Services, elm, 1) - mnemo2Data = mod_ecu_mnemonic.get_mnemonic(ecu.Mnemonics[mnemo2], ecu.Services, elm, 1) + paramsToSend = mnemo1Data + resetBytes + mnemo2Data - paramsToSend = mnemo1Data + resetBytes + mnemo2Data - - print title - print '*'*80 - print messageInfo - print '*'*80 - print - ch = raw_input(confirm + ' : ') - while (ch.upper()!='YES') and (ch.upper()!='NO'): - ch = raw_input(confirm + ' : ') - if ch.upper()!='YES': - return - - clearScreen() + clearScreen() - print - response = ecu.run_cmd(ScmParam['Cmde1'], paramsToSend) - print + print title + print '*'*80 + print messageInfo + print '*'*80 + print + ch = raw_input(confirm + ' : ') + while (ch.upper()!='YES') and (ch.upper()!='NO'): + ch = raw_input(confirm + ' : ') + if ch.upper()!='YES': + return - if "NR" in response: - print failMessage - else: - print succesMessage - - print - ch = raw_input('Press ENTER to exit') - return + clearScreen() + + print + response = ecu.run_cmd(ScmParam['Cmde1'], paramsToSend) + print + + if 'NR' in response: + print failMessage + else: + print succesMessage + + print + ch = raw_input("Press ENTER to exit") + return \ No newline at end of file diff --git a/pyren/scen_ecri_fap5.py b/pyren/scen_ecri_fap5.py index f8e65a1..3030184 100755 --- a/pyren/scen_ecri_fap5.py +++ b/pyren/scen_ecri_fap5.py @@ -18,6 +18,7 @@ import time import mod_globals import mod_utils import mod_ecu +import mod_db_manager from mod_utils import pyren_encode from mod_utils import clearScreen from mod_utils import KBHit @@ -65,7 +66,7 @@ def run( elm, ecu, command, data ): # Data file parsing # - DOMTree = xml.dom.minidom.parse(data) + DOMTree = xml.dom.minidom.parse(mod_db_manager.get_file_from_clip(data)) ScmRoom = DOMTree.documentElement ScmParams = ScmRoom.getElementsByTagName("ScmParam") diff --git a/pyren/scen_ecri_initpente.py b/pyren/scen_ecri_initpente.py index 5bbc472..69cdcca 100644 --- a/pyren/scen_ecri_initpente.py +++ b/pyren/scen_ecri_initpente.py @@ -8,6 +8,7 @@ import string import mod_globals import mod_utils import mod_ecu +import mod_db_manager from mod_utils import clearScreen from mod_utils import pyren_encode from mod_utils import KBHit @@ -36,7 +37,7 @@ def run( elm, ecu, command, data ): return value - DOMTree = xml.dom.minidom.parse(data) + DOMTree = xml.dom.minidom.parse(mod_db_manager.get_file_from_clip(data)) ScmRoom = DOMTree.documentElement ScmParams = ScmRoom.getElementsByTagName("ScmParam") diff --git a/pyren/scen_lect_sondeO21.py b/pyren/scen_lect_sondeO21.py index 63fbed1..59d40e4 100755 --- a/pyren/scen_lect_sondeO21.py +++ b/pyren/scen_lect_sondeO21.py @@ -18,6 +18,7 @@ import time import mod_globals import mod_utils import mod_ecu +import mod_db_manager from mod_utils import pyren_encode from mod_utils import clearScreen from mod_utils import KBHit @@ -67,7 +68,7 @@ def run( elm, ecu, command, data ): # # Data file parsing # - DOMTree = xml.dom.minidom.parse(data) + DOMTree = xml.dom.minidom.parse(mod_db_manager.get_file_from_clip(data)) ScmRoom = DOMTree.documentElement # read parameters