Пример #1
0
def boot_uartrun(path, faddr, xmmode1k=False):
    ret = False
    rsp = None
    gw_report.clear()

    data = func.hexfile_analyze(path)
    if (len(data) != 1):
        return gw_report.result(str(False))

    #print(data)
    itm = data[0]
    #uartrun [hex(addr), hex(size), checksum]
    ret, rsp = func.cmd(
        'uartrun',
        [hex(itm[0]), hex(len(itm[1])),
         crc16(0, itm[1])])
    #print(ret)
    if (ret == False):
        return gw_report.result(str(ret))
    #print(itm[1])
    if (xmmode1k):
        ret = func.xmdm_send_1k(itm[1])
    else:
        ret = func.xmdm_send(itm[1])
    print(ret)

    return gw_report.result(str(ret))
Пример #2
0
def boot_prog_hexf(hexf_path, xmmode1k=False):
    ret = True
    rsp = None
    gw_report.clear()

    data = func.hexfile_analyze(hexf_path)
    #print(hex(data[0][0]), hex(len(data[0][1])))
    #print(hex(data[1][0]), hex(len(data[1][1])))
    #return
    #print(data)
    for itm in data:
        #progr [addr, size]
        ret, rsp = func.cmd('progr', [hex(itm[0]), hex(len(itm[1]))])
        #print(ret)
        if (ret == False):
            break
        #print(itm[1])
        if (xmmode1k):
            ret = func.xmdm_send_1k(itm[1])
        else:
            ret = func.xmdm_send(itm[1])
        print(ret)
        if (ret == False):
            break

    return gw_report.result(str(ret))
Пример #3
0
def boot_quit():
    ret = True
    gw_report.clear()

    ret = func.cmd('quit')

    return gw_report.result(str(ret))
Пример #4
0
def boot_prog_bin(path, faddr, xmmode1k=False):
    ret = False
    rsp = None
    gw_report.clear()
    try:
        size = os.path.getsize(path)
        fp = open(path, 'rb')
        data = list(fp.read(size))
    except:
        traceback.print_exc()
        return gw_report.result(str(False))

    #progr [hex(addr), hex(size), checksum]
    ret, rsp = func.cmd('progr', [hex(faddr), hex(size), crc16(0, data)])
    #print(ret)
    if (ret == False):
        return gw_report.result(str(ret))
    #print(itm[1])
    if (xmmode1k):
        ret = func.xmdm_send_1k(data)
    else:
        ret = func.xmdm_send(data)
    print(ret)

    return gw_report.result(str(ret))
Пример #5
0
def boot_write(faddr, value):
    ret = False
    rsp = None
    gw_report.clear()

    ret, rsp = func.cmd('write', [hex(faddr), hex(value)], 5)
    #print(ret)

    return gw_report.result(str(ret))
Пример #6
0
def boot_er64k(faddr):
    ret = False
    rsp = None
    gw_report.clear()

    ret, rsp = func.cmd('er64k', [hex(faddr)], 5)
    #print(ret)

    return gw_report.result(str(ret))
Пример #7
0
def boot_etssf():
    ret = False
    rsp = None
    gw_report.clear()

    ret, rsp = func.cmd('etssf', None, 5)
    #print(ret)

    return gw_report.result(str(ret))
Пример #8
0
def boot_rdreg(reg):
    ret = False
    rsp = None
    gw_report.clear()

    ret, rsp = func.cmd('rdreg', [hex(reg)])
    #print(ret)

    return gw_report.result(str(ret))
Пример #9
0
def boot_wrreg(reg, value):
    ret = False
    rsp = None
    gw_report.clear()

    ret, rsp = func.cmd('wrreg', [hex(reg), hex(value)])
    #print(ret)

    return gw_report.result(str(ret))
Пример #10
0
def boot_connect(port, cmd='URC48M'):
    ret = True
    gw_report.clear()
    print('connecting')
    ret = func.dwc(port, cmd)
    if (ret is not None):
        func.baudrate(ret[0], ret[1])
    else:
        func.baudrate('', 0)
    return gw_report.result(str(ret))
Пример #11
0
def boot_cmd(c, para=None):
    ret = True
    rsp = None
    gw_report.clear()
    if (para is not None):
        if (type(para) is not list):
            para = [para]
    ret, rsp = func.cmd(c, para)
    print(ret)
    return gw_report.result(str(ret))
Пример #12
0
def boot_util_xmdm(path):
    ret = True
    rsp = None
    gw_report.clear()
    size = os.path.getsize(path)
    fp = open(path, 'rb')
    data = fp.read(size)
    ret = func.xmdm_send_1k(data)
    fp.close()
    print(ret)

    return gw_report.result(str(ret))
Пример #13
0
def ble_hook(event_name):
	global cancelPairing
	gw_report.clear()

	hook = session_ble.hook_create(event_name)

	ss = session_ble.ble_ss()
	if(ss.connect() == False):
		return gw_report.result('False')
	ss.qclr()
	print('start send packet')
	ss.send_cmd(hook)

	print('wait response...')
	ret = ss.wait_rsp(0)
	print(ret)
	return gw_report.result(str(ret))		
Пример #14
0
def ble_cmd(api, param = None, rsp_cnt = 0):
	global cancelPairing
	gw_report.clear()
	cmd = session_ble.cmd_create(api)
	if(param is not None):
		cmd = session_ble.cmd_param(cmd, param)
	print(cmd)

	ss = session_ble.ble_ss()
	if(ss.connect() == False):
		return gw_report.result('False')
	ss.qclr()
	print('start send packet')
	ss.send_cmd(cmd)
	
	print('wait response...')
	ret = ss.wait_rsp(0)
	print(ret)

	for i in range(rsp_cnt):
		ret = ss.wait_rsp(0)
		print(ret)
	return gw_report.result(str(ret))		
Пример #15
0
def boot_baudrate(port=None, value=None):
    ret = True
    gw_report.clear()
    ret = func.baudrate(port, value)
    print(ret)
    return gw_report.result(str(ret))
Пример #16
0
def boot_util_hexf(primary,
                   alternate=None,
                   alt_active=False,
                   alt_addr=0x100000):
    ret = True
    gw_report.clear()

    ih = IH()
    bs_word = [0xffffffff] * (int(8192 / 4))

    #primary
    #[[raddr,data]..]
    prim_data = func.hexfile_analyze(primary)

    bs_word[0] = len(prim_data)  #IMAG_NUM
    bs_word[2] = FLASH_BASE  #IMAG_ENTRY_ADDR
    if (alt_active == False):
        bs_word[3] = 0x0000_000E  #IMAG_BOOT_FLG = active
    else:
        bs_word[
            3] = 0x0000_000C  #IMAG_BOOT_FLG = old firmware, alternate if no active firmware valid

    #base = 0x4000
    faddr = FLASH_BASE + 0x4000
    for i in range(len(prim_data)):
        size = len(prim_data[i][1])
        bs_word[int(0x100 / 4) + 4 * i] = faddr  #IMAG_ADDR flash addr
        bs_word[int(0x104 / 4) + 4 * i] = size  #IMAG_SIZE
        bs_word[int(0x108 / 4) + 4 * i] = prim_data[i][0]  #IMAG_RUN
        bs_word[int(0x10c / 4) + 4 * i] = crc16(0, prim_data[i][1])  #IMAG_CSUM
        ih.puts(faddr, bytes(prim_data[i][1]))
        faddr += (size + 3) & 0xfffffffc  # word aligned

    #alternate
    #[[raddr,data]..]
    if (alternate is not None):
        alt_data = func.hexfile_analyze(alternate)
        bs_word[0x100] = len(alt_data)  #IMAG_NUM
        bs_word[0x102] = FLASH_BASE  #IMAG_ENTRY_ADDR
        if (alt_active == True):
            bs_word[0x103] = 0x0000_000E  #IMAG_BOOT_FLG = active
        else:
            bs_word[
                0x103] = 0x0000_000C  #IMAG_BOOT_FLG = old firmware, alternate if no active firmware valid

        #base = 0x100000
        faddr = FLASH_BASE + 0x100000
        for i in range(len(alt_data)):
            size = len(alt_data[i][1])
            bs_word[int(0x500 / 4) + 4 * i] = faddr  #IMAG_ADDR flash addr
            bs_word[int(0x504 / 4) + 4 * i] = size  #IMAG_SIZE
            bs_word[int(0x508 / 4) + 4 * i] = alt_data[i][0]  #IMAG_RUN
            bs_word[int(0x50c / 4) + 4 * i] = crc16(0,
                                                    alt_data[i][1])  #IMAG_CSUM
            ih.puts(faddr, bytes(alt_data[i][1]))
            faddr += (size + 3) & 0xfffffffc  # word aligned

    bs_byte = [0xff] * 8192
    for i in range(0, 4096, 4):
        tmp = bs_word[int(i / 4)]
        bs_byte[i] = tmp & 0xff
        bs_byte[i + 1] = (tmp >> 8) & 0xff
        bs_byte[i + 2] = (tmp >> 16) & 0xff
        bs_byte[i + 3] = (tmp >> 24) & 0xff
    ih.puts(FLASH_BASE + 0x2000, bytes(bs_byte))

    ih.write_hex_file(primary + '.hexf')

    return gw_report.result(str(ret))