Commit b71a40fa authored by Carmelo Magnafico's avatar Carmelo Magnafico
Browse files

MDOR_concat routine added to help concatenation

parent 8f653c6a
Loading
Loading
Loading
Loading

MDOR_concat.py

0 → 100644
+146 −0
Original line number Diff line number Diff line
#/usr/bin/env python

#########################################################
#   Credits                                             #
#   Author: Carmelo Magnafico - BepiColombo ISA Team    #
#   Association: IASP/INAF                              #
#                                                       #
#   Ver: 0.1                                            #
#########################################################


#usage
#python MDOR_concat.py <sequenceNum> <filespec> <inputs>
#
# <sequenceNum> is unique MDOR sequenceNum es. 0000
# <filespec> is the filename specification to be added 'MDOR_'+'BPSA_'+'T000_'+specification+'_'+sequenceNum+'.bc'
# <inputs> MDORinputs is the list of inputs. It supports wildcards!


from __future__ import division
import sys
import xml.etree.ElementTree as ET
import os
import glob
import binascii
import math
from datetime import datetime
from datetime import timedelta
import copy 
import memoryMap as memap #ISA memory mapping
import string
import numpy as np


#set some errors
class wrongdatapacklength(Exception):
    pass
class wrongAddress(Exception):
    pass
class wrongMemoryType(Exception):
    pass


#Settings
datasplit = 224 #maximum length in byte for a single data sent in one command
dataword = 16 #bit of a word
output_folder = 'output/'
INT_BITS = 16


# Function to left
# rotate n by d bits
def leftRotate(n, d):
    # In n<<d, last d bits are 0.
    # To put first 3 bits of n at
    # last, do bitwise or of n<<d
    # with n >>(INT_BITS - d)
    return ( (n << d)|(n >> (INT_BITS - d))) & ((1 << INT_BITS) - 1)
 

def checksum(data):

    chsum = 0xF900
    for i in range(int(len(data)/4)):
        chsum = leftRotate(chsum , 1) ^ int(data[i*4:(i+1)*4],INT_BITS)

    return hex(chsum);


thisdir = os.path.dirname(os.path.realpath(__file__))
sequenceNum = sys.argv[1]       #here to check in a folder or DB the first, empty, sequence number 
specification = sys.argv[2]  

output = list()


#iterate over the inputs
for i in range(3,len(sys.argv)):


    datafiles = os.path.join(thisdir,sys.argv[i])

    output = output + glob.glob(datafiles)


#get unique in files
files = []
for file in output:
    if file not in files:
        files.append(file)



deltaSeconds = 10
actionTime = datetime(1900,1,1) + timedelta(seconds=deltaSeconds)
now = datetime.now()
genTime = datetime.strftime(now,'%Y-%jT%H:%M:%S.%f')[:-3]+"Z"



if len(files) > 0:
    #get the template from first 
    tree = ET.parse(files[0])
    templateXML = tree.getroot()


    #Updating fields
    print('updating genTime')
    templateXML.find('.//genTime').text = genTime #find recursivelly ".//word"


    occurrenceList = templateXML.find('.//occurrenceList')
    commandNum = int(occurrenceList.find('.//command').find('.//uniqueID').text[-9:])
    occurrenceList.set('creationTime', genTime)
    for c in occurrenceList.findall('.//command'):
        occurrenceList.remove(c)
else:
    print('No MDOR found')
    exit()



    

for file in files:
    print('reading MDOR: %s' % file)
    #get the template from first 
    tree1 = ET.parse(file)
    XML = tree1.getroot()


    for command in XML.find('.//occurrenceList').iter('command'):
        uniqueID_value = 'BPSA'+sequenceNum+'ISA'+("%09.i" % commandNum)
        command.find('uniqueID').text = uniqueID_value
        #append a new command to occurrenceList
        occurrenceList.append(command)
        commandNum += 1

        
occurrenceList.set('count',  "%i"%len(occurrenceList.findall('.//command')))


#<type>_<source>_<plancycle>_<optional text>_<counter>.<EXT>
outputfile = output_folder+'MDOR_'+'BPSA_'+'T000_'+specification+'_'+sequenceNum+'.bc'
tree.write(outputfile)
print(outputfile+' correclty wrote')
+51 −0
Original line number Diff line number Diff line
<planningData>
    <commandRequests>
        <header formatVersion="1" type="MDOR">
            <genTime>2023-192T17:10:49.587Z</genTime>
        </header>
        <occurrenceList count="2" creationTime="2023-192T17:10:49.587Z" author="ISA team">
            <command name="ZSA00609">
                <passID />
                <uniqueID>BPSA0000ISA060900001</uniqueID>
                <insertOrDeleteFlag>Insert</insertOrDeleteFlag>
                <source>BPSA</source>
                <destination>R</destination>
                <releaseTime>
                    <actionTime>00:00:10</actionTime>
                </releaseTime>
                <parameterList count="3">
                    <parameter name="PSA06060" position="1">
                        <value representation="Engineering">EEPROM</value>
                    </parameter>
                    <parameter name="PSA06065" position="2">
                        <value representation="Raw" radix="Hexadecimal">01010000</value>
                    </parameter>
                    <parameter name="PSA06068" position="3">
                        <value representation="Raw" radix="Decimal">16384</value>
                    </parameter>
                </parameterList>
            </command>
        <command name="ZSA00609">
                <passID />
                <uniqueID>BPSA0000ISA060900002</uniqueID>
                <insertOrDeleteFlag>Insert</insertOrDeleteFlag>
                <source>BPSA</source>
                <destination>R</destination>
                <releaseTime>
                    <actionTime>00:00:10</actionTime>
                </releaseTime>
                <parameterList count="3">
                    <parameter name="PSA06060" position="1">
                        <value representation="Engineering">EEPROM</value>
                    </parameter>
                    <parameter name="PSA06065" position="2">
                        <value representation="Raw" radix="Hexadecimal">01018000</value>
                    </parameter>
                    <parameter name="PSA06068" position="3">
                        <value representation="Raw" radix="Decimal">16384</value>
                    </parameter>
                </parameterList>
            </command>
        </occurrenceList>
    </commandRequests>
</planningData>
 No newline at end of file
+387 −0
Original line number Diff line number Diff line
<planningData>
    <commandRequests>
        <header formatVersion="1" type="MDOR">
            <genTime>2023-192T16:23:43.496Z</genTime>
        </header>
        <occurrenceList count="18" creationTime="2023-192T16:23:43.496Z" author="ISA team">
            <command name="ZSA00605">
                <passID />
                <uniqueID>BPSA0000ISA060600001</uniqueID>
                <insertOrDeleteFlag>Insert</insertOrDeleteFlag>
                <source>BPSA</source>
                <destination>R</destination>
                <releaseTime>
                    <actionTime>00:00:10</actionTime>
                </releaseTime>
                <parameterList count="3">
                    <parameter name="PSA06060" position="1">
                        <value representation="Engineering">EEPROM</value>
                    </parameter>
                    <parameter name="PSA06065" position="2">
                        <value representation="Raw" radix="Hexadecimal">01010000</value>
                    </parameter>
                    <parameter name="PSA06067" position="3">
                        <value representation="Raw" radix="Decimal">2040</value>
                    </parameter>
                </parameterList>
            </command>
        <command name="ZSA00605">
                <passID />
                <uniqueID>BPSA0000ISA060600002</uniqueID>
                <insertOrDeleteFlag>Insert</insertOrDeleteFlag>
                <source>BPSA</source>
                <destination>R</destination>
                <releaseTime>
                    <actionTime>00:00:10</actionTime>
                </releaseTime>
                <parameterList count="3">
                    <parameter name="PSA06060" position="1">
                        <value representation="Engineering">EEPROM</value>
                    </parameter>
                    <parameter name="PSA06065" position="2">
                        <value representation="Raw" radix="Hexadecimal">01010FF0</value>
                    </parameter>
                    <parameter name="PSA06067" position="3">
                        <value representation="Raw" radix="Decimal">2040</value>
                    </parameter>
                </parameterList>
            </command>
        <command name="ZSA00605">
                <passID />
                <uniqueID>BPSA0000ISA060600003</uniqueID>
                <insertOrDeleteFlag>Insert</insertOrDeleteFlag>
                <source>BPSA</source>
                <destination>R</destination>
                <releaseTime>
                    <actionTime>00:00:10</actionTime>
                </releaseTime>
                <parameterList count="3">
                    <parameter name="PSA06060" position="1">
                        <value representation="Engineering">EEPROM</value>
                    </parameter>
                    <parameter name="PSA06065" position="2">
                        <value representation="Raw" radix="Hexadecimal">01011FE0</value>
                    </parameter>
                    <parameter name="PSA06067" position="3">
                        <value representation="Raw" radix="Decimal">2040</value>
                    </parameter>
                </parameterList>
            </command>
        <command name="ZSA00605">
                <passID />
                <uniqueID>BPSA0000ISA060600004</uniqueID>
                <insertOrDeleteFlag>Insert</insertOrDeleteFlag>
                <source>BPSA</source>
                <destination>R</destination>
                <releaseTime>
                    <actionTime>00:00:10</actionTime>
                </releaseTime>
                <parameterList count="3">
                    <parameter name="PSA06060" position="1">
                        <value representation="Engineering">EEPROM</value>
                    </parameter>
                    <parameter name="PSA06065" position="2">
                        <value representation="Raw" radix="Hexadecimal">01012FD0</value>
                    </parameter>
                    <parameter name="PSA06067" position="3">
                        <value representation="Raw" radix="Decimal">2040</value>
                    </parameter>
                </parameterList>
            </command>
        <command name="ZSA00605">
                <passID />
                <uniqueID>BPSA0000ISA060600005</uniqueID>
                <insertOrDeleteFlag>Insert</insertOrDeleteFlag>
                <source>BPSA</source>
                <destination>R</destination>
                <releaseTime>
                    <actionTime>00:00:10</actionTime>
                </releaseTime>
                <parameterList count="3">
                    <parameter name="PSA06060" position="1">
                        <value representation="Engineering">EEPROM</value>
                    </parameter>
                    <parameter name="PSA06065" position="2">
                        <value representation="Raw" radix="Hexadecimal">01013FC0</value>
                    </parameter>
                    <parameter name="PSA06067" position="3">
                        <value representation="Raw" radix="Decimal">2040</value>
                    </parameter>
                </parameterList>
            </command>
        <command name="ZSA00605">
                <passID />
                <uniqueID>BPSA0000ISA060600006</uniqueID>
                <insertOrDeleteFlag>Insert</insertOrDeleteFlag>
                <source>BPSA</source>
                <destination>R</destination>
                <releaseTime>
                    <actionTime>00:00:10</actionTime>
                </releaseTime>
                <parameterList count="3">
                    <parameter name="PSA06060" position="1">
                        <value representation="Engineering">EEPROM</value>
                    </parameter>
                    <parameter name="PSA06065" position="2">
                        <value representation="Raw" radix="Hexadecimal">01014FB0</value>
                    </parameter>
                    <parameter name="PSA06067" position="3">
                        <value representation="Raw" radix="Decimal">2040</value>
                    </parameter>
                </parameterList>
            </command>
        <command name="ZSA00605">
                <passID />
                <uniqueID>BPSA0000ISA060600007</uniqueID>
                <insertOrDeleteFlag>Insert</insertOrDeleteFlag>
                <source>BPSA</source>
                <destination>R</destination>
                <releaseTime>
                    <actionTime>00:00:10</actionTime>
                </releaseTime>
                <parameterList count="3">
                    <parameter name="PSA06060" position="1">
                        <value representation="Engineering">EEPROM</value>
                    </parameter>
                    <parameter name="PSA06065" position="2">
                        <value representation="Raw" radix="Hexadecimal">01015FA0</value>
                    </parameter>
                    <parameter name="PSA06067" position="3">
                        <value representation="Raw" radix="Decimal">2040</value>
                    </parameter>
                </parameterList>
            </command>
        <command name="ZSA00605">
                <passID />
                <uniqueID>BPSA0000ISA060600008</uniqueID>
                <insertOrDeleteFlag>Insert</insertOrDeleteFlag>
                <source>BPSA</source>
                <destination>R</destination>
                <releaseTime>
                    <actionTime>00:00:10</actionTime>
                </releaseTime>
                <parameterList count="3">
                    <parameter name="PSA06060" position="1">
                        <value representation="Engineering">EEPROM</value>
                    </parameter>
                    <parameter name="PSA06065" position="2">
                        <value representation="Raw" radix="Hexadecimal">01016F90</value>
                    </parameter>
                    <parameter name="PSA06067" position="3">
                        <value representation="Raw" radix="Decimal">2040</value>
                    </parameter>
                </parameterList>
            </command>
        <command name="ZSA00605">
                <passID />
                <uniqueID>BPSA0000ISA060600009</uniqueID>
                <insertOrDeleteFlag>Insert</insertOrDeleteFlag>
                <source>BPSA</source>
                <destination>R</destination>
                <releaseTime>
                    <actionTime>00:00:10</actionTime>
                </releaseTime>
                <parameterList count="3">
                    <parameter name="PSA06060" position="1">
                        <value representation="Engineering">EEPROM</value>
                    </parameter>
                    <parameter name="PSA06065" position="2">
                        <value representation="Raw" radix="Hexadecimal">01017F80</value>
                    </parameter>
                    <parameter name="PSA06067" position="3">
                        <value representation="Raw" radix="Decimal">64</value>
                    </parameter>
                </parameterList>
            </command>
        <command name="ZSA00605">
                <passID />
                <uniqueID>BPSA0000ISA060600010</uniqueID>
                <insertOrDeleteFlag>Insert</insertOrDeleteFlag>
                <source>BPSA</source>
                <destination>R</destination>
                <releaseTime>
                    <actionTime>00:00:10</actionTime>
                </releaseTime>
                <parameterList count="3">
                    <parameter name="PSA06060" position="1">
                        <value representation="Engineering">EEPROM</value>
                    </parameter>
                    <parameter name="PSA06065" position="2">
                        <value representation="Raw" radix="Hexadecimal">01018000</value>
                    </parameter>
                    <parameter name="PSA06067" position="3">
                        <value representation="Raw" radix="Decimal">2040</value>
                    </parameter>
                </parameterList>
            </command>
        <command name="ZSA00605">
                <passID />
                <uniqueID>BPSA0000ISA060600011</uniqueID>
                <insertOrDeleteFlag>Insert</insertOrDeleteFlag>
                <source>BPSA</source>
                <destination>R</destination>
                <releaseTime>
                    <actionTime>00:00:10</actionTime>
                </releaseTime>
                <parameterList count="3">
                    <parameter name="PSA06060" position="1">
                        <value representation="Engineering">EEPROM</value>
                    </parameter>
                    <parameter name="PSA06065" position="2">
                        <value representation="Raw" radix="Hexadecimal">01018FF0</value>
                    </parameter>
                    <parameter name="PSA06067" position="3">
                        <value representation="Raw" radix="Decimal">2040</value>
                    </parameter>
                </parameterList>
            </command>
        <command name="ZSA00605">
                <passID />
                <uniqueID>BPSA0000ISA060600012</uniqueID>
                <insertOrDeleteFlag>Insert</insertOrDeleteFlag>
                <source>BPSA</source>
                <destination>R</destination>
                <releaseTime>
                    <actionTime>00:00:10</actionTime>
                </releaseTime>
                <parameterList count="3">
                    <parameter name="PSA06060" position="1">
                        <value representation="Engineering">EEPROM</value>
                    </parameter>
                    <parameter name="PSA06065" position="2">
                        <value representation="Raw" radix="Hexadecimal">01019FE0</value>
                    </parameter>
                    <parameter name="PSA06067" position="3">
                        <value representation="Raw" radix="Decimal">2040</value>
                    </parameter>
                </parameterList>
            </command>
        <command name="ZSA00605">
                <passID />
                <uniqueID>BPSA0000ISA060600013</uniqueID>
                <insertOrDeleteFlag>Insert</insertOrDeleteFlag>
                <source>BPSA</source>
                <destination>R</destination>
                <releaseTime>
                    <actionTime>00:00:10</actionTime>
                </releaseTime>
                <parameterList count="3">
                    <parameter name="PSA06060" position="1">
                        <value representation="Engineering">EEPROM</value>
                    </parameter>
                    <parameter name="PSA06065" position="2">
                        <value representation="Raw" radix="Hexadecimal">0101AFD0</value>
                    </parameter>
                    <parameter name="PSA06067" position="3">
                        <value representation="Raw" radix="Decimal">2040</value>
                    </parameter>
                </parameterList>
            </command>
        <command name="ZSA00605">
                <passID />
                <uniqueID>BPSA0000ISA060600014</uniqueID>
                <insertOrDeleteFlag>Insert</insertOrDeleteFlag>
                <source>BPSA</source>
                <destination>R</destination>
                <releaseTime>
                    <actionTime>00:00:10</actionTime>
                </releaseTime>
                <parameterList count="3">
                    <parameter name="PSA06060" position="1">
                        <value representation="Engineering">EEPROM</value>
                    </parameter>
                    <parameter name="PSA06065" position="2">
                        <value representation="Raw" radix="Hexadecimal">0101BFC0</value>
                    </parameter>
                    <parameter name="PSA06067" position="3">
                        <value representation="Raw" radix="Decimal">2040</value>
                    </parameter>
                </parameterList>
            </command>
        <command name="ZSA00605">
                <passID />
                <uniqueID>BPSA0000ISA060600015</uniqueID>
                <insertOrDeleteFlag>Insert</insertOrDeleteFlag>
                <source>BPSA</source>
                <destination>R</destination>
                <releaseTime>
                    <actionTime>00:00:10</actionTime>
                </releaseTime>
                <parameterList count="3">
                    <parameter name="PSA06060" position="1">
                        <value representation="Engineering">EEPROM</value>
                    </parameter>
                    <parameter name="PSA06065" position="2">
                        <value representation="Raw" radix="Hexadecimal">0101CFB0</value>
                    </parameter>
                    <parameter name="PSA06067" position="3">
                        <value representation="Raw" radix="Decimal">2040</value>
                    </parameter>
                </parameterList>
            </command>
        <command name="ZSA00605">
                <passID />
                <uniqueID>BPSA0000ISA060600016</uniqueID>
                <insertOrDeleteFlag>Insert</insertOrDeleteFlag>
                <source>BPSA</source>
                <destination>R</destination>
                <releaseTime>
                    <actionTime>00:00:10</actionTime>
                </releaseTime>
                <parameterList count="3">
                    <parameter name="PSA06060" position="1">
                        <value representation="Engineering">EEPROM</value>
                    </parameter>
                    <parameter name="PSA06065" position="2">
                        <value representation="Raw" radix="Hexadecimal">0101DFA0</value>
                    </parameter>
                    <parameter name="PSA06067" position="3">
                        <value representation="Raw" radix="Decimal">2040</value>
                    </parameter>
                </parameterList>
            </command>
        <command name="ZSA00605">
                <passID />
                <uniqueID>BPSA0000ISA060600017</uniqueID>
                <insertOrDeleteFlag>Insert</insertOrDeleteFlag>
                <source>BPSA</source>
                <destination>R</destination>
                <releaseTime>
                    <actionTime>00:00:10</actionTime>
                </releaseTime>
                <parameterList count="3">
                    <parameter name="PSA06060" position="1">
                        <value representation="Engineering">EEPROM</value>
                    </parameter>
                    <parameter name="PSA06065" position="2">
                        <value representation="Raw" radix="Hexadecimal">0101EF90</value>
                    </parameter>
                    <parameter name="PSA06067" position="3">
                        <value representation="Raw" radix="Decimal">2040</value>
                    </parameter>
                </parameterList>
            </command>
        <command name="ZSA00605">
                <passID />
                <uniqueID>BPSA0000ISA060600018</uniqueID>
                <insertOrDeleteFlag>Insert</insertOrDeleteFlag>
                <source>BPSA</source>
                <destination>R</destination>
                <releaseTime>
                    <actionTime>00:00:10</actionTime>
                </releaseTime>
                <parameterList count="3">
                    <parameter name="PSA06060" position="1">
                        <value representation="Engineering">EEPROM</value>
                    </parameter>
                    <parameter name="PSA06065" position="2">
                        <value representation="Raw" radix="Hexadecimal">0101FF80</value>
                    </parameter>
                    <parameter name="PSA06067" position="3">
                        <value representation="Raw" radix="Decimal">64</value>
                    </parameter>
                </parameterList>
            </command>
        </occurrenceList>
    </commandRequests>
</planningData>
 No newline at end of file