# -*- coding: utf-8 -*- ## # Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. # copyright # THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, # IN PART OR IN WHOLE, # WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. # # file utils.py # date 2019/11/21 # author Behrouz NematiPour # import time import struct ## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def waitForGUI(vDelay = 1): time.sleep(vDelay) ## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def toUXX(vValue, vByteCount, vDelimiter): x = '{0:0{1}X}'.format(vValue & (2**(4*vByteCount)-1), vByteCount, 'x') bytes = partition(x, 2) return vDelimiter.join(bytes) ## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def toI32(vValue, vDelimiter = ""): return toUXX(vValue, 8, vDelimiter) ## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def toI16(vValue, vDelimiter = ""): return toUXX(vValue, 4, vDelimiter) ## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def toI08(vValue, vDelimiter = ""): return toUXX(vValue, 2, vDelimiter) ## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def toF32(vValue): return '{:08X}'.format(struct.unpack('f', vValue))[0],'X') ## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def partition(vString, vPart, vRightDirection = True): if vRightDirection: list = [vString[i - vPart : i] for i in range(len(vString), 0, -vPart)] else: list = [vString[i : i + vPart] for i in range(0, len(vString), vPart)] return list ## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def padding(vString, vLen): lStr = len(vString) lPad = int(lStr / vLen) * vLen + ( vLen * (1 if lStr % vLen else 0) ) return vString.ljust(lPad, "0")