Пример #1
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))
Пример #2
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))
Пример #3
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))
Пример #4
0
def boot_quit():
    ret = True
    gw_report.clear()

    ret = func.cmd('quit')

    return gw_report.result(str(ret))
Пример #5
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))		
Пример #6
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))
Пример #7
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))
Пример #8
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))
Пример #9
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))
Пример #10
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))
Пример #11
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))
Пример #12
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))
Пример #13
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))
Пример #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 exec_case(casecmd):
    global dict_setting
    global global_sock
    global dict_tstcase_variable
    global global_Notify_Index
    param = []
    if len(casecmd[2]) > 0:
        param = casecmd[2].split(' ')
    cmdlist = [casecmd[1]]
    cmdlist = cmdlist + param
    #print('cmdlist is:',cmdlist)

    #global variable replacement
    for i in range(len(cmdlist) - 1):
        v = dict_tstcase_variable.get(cmdlist[i + 1])
        if (v is not None):
            cmdlist[i + 1] = v

    func, paramstr = case.case_parse(cmdlist)
    cmd = cmdlist[0]
    #print(cmd)
    try:
        exec('func' + paramstr)
    except:
        traceback.print_exc()
        print('Error: Unknow command: %s' % cmd)
        return False
    result = gw_report.result()
    # print("result = gw_report.result():")
    # print(type(result))
    # print(result)
    # print("here:")
    # print(casecmd)
    # print(result)
    if eval(result) == None or eval(result) == False:
        report(casecmd, result)
    elif isinstance(eval(result), list):
        if len(eval(result)) >= 3:
            for i in eval(result)[2]:
                # len(i) == 0 , htest.disconnect will return []
                # print(i)
                if len(i) <= 3:
                    pass
                elif i[0] != 0:
                    if len(i) == 9 and i[0] == 4 and i[1] == 0xFF and i[
                            3] == 0x06 and i[4] == 0x06 and i[8] != 0x16:
                        print("BLE disconnected")
                        raise Exception("BLE disconnected")
                    elif len(i) == 9 and i[0] == 4 and i[1] == 0xFF and i[
                            3] == 0x06 and i[4] == 0x06 and i[8] == 0x16:
                        global_Notify_Index = 0
                    # notify data
                    elif len(i) > 5 and i[3] == 0x1b and i[4] == 0x05:
                        recv_notify_idx = i[-1] + i[-2] * 256
                        if global_Notify_Index != recv_notify_idx:
                            # print("Notify Index Error")
                            # casecmd[-1]="Notify Index Error"
                            rets = [
                                "Notify Received Index", "", "Should be", ""
                            ]
                            rets[1] = recv_notify_idx
                            rets[3] = global_Notify_Index
                            # print(rets)
                            report(casecmd, str(rets))
                        global_Notify_Index = recv_notify_idx + 1
                    elif len(i) == 9 and i[3] == 0x14 and i[4] == 0x04 and i[
                            5] == 0:
                        rets = "PER Reset Success"
                        report(casecmd, str(rets))
                    elif len(i) == 17 and i[3] == 0x14 and i[4] == 0x04 and i[
                            5] == 0:
                        rets = [
                            "PER Read:", "NumPkts", "", "NumCrcErr", "",
                            "NumEvents", "", "NumMissedEvents", ""
                        ]
                        rets[2] = i[9] + i[10] << 8
                        rets[4] = i[11] + i[12] << 8
                        rets[6] = i[13] + i[14] << 8
                        rets[8] = i[15] + i[16] << 8
                        report(casecmd, str(rets))
                    elif i[0] == 4 and i[1] == 0xFF and i[3] == 0x7F and i[
                            4] == 0x06 and i[5] != 0:
                        print("BLE disconnected when write")
                        raise Exception("BLE disconnected when write")
                    elif i[0] != 0:
                        # disconnect
                        # ..
                        # ..
                        # SetPhy
                        # updateDataLength
                        if (len(i) == 9 and i[0] == 4 and i[1] == 0xFF and i[3] == 0x06 and i[4] == 0x06) or \
                         (i[0] == 4 and i[1] == 0x3E and i[3] == 0x0c and i[4] == 0) or \
                         (i[0] == 4 and i[1] == 0x0E and i[6] == 0x0c ) or \
                         (len(i) == 7 and i[0] == 4 and i[1] == 0x0F and i[3] == 0 and i[5] == 0x32 and i[6] == 0x20) or \
                         (len(i) == 9 and i[0] == 4 and i[1] == 0x0E and i[4] == 0x22 and i[
                           5] == 0x20 and i[6] == 0):
                            pass
                        else:
                            report(casecmd, str(i))
                elif i[0] == 0:
                    if len(i) == 9 and i[1] == 0xFF and i[-1] == 0xFF:
                        report(casecmd, str(i))
                        rets = [
                            "Uart Received seq missed serialized data", "", "",
                            ""
                        ]
                        report(casecmd, str(rets))
    return True
Пример #16
0
def ble_wait(ms = 1000):
	time.sleep(0.001*ms)
	return gw_report.result('True')	
Пример #17
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))
Пример #18
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))
Пример #19
0
def ble_print(num = 1):
	print('just print:',num)
	return gw_report.result(str(True))