#!/usr/bin/env python import sys ov9650_regs = { 0x00: "GAIN", 0x01: "BLUE", 0x02: "RED", 0x03: "VREF", 0x04: "COM1", 0x05: "BAVE", 0x06: "GEAVE", 0x08: "RAVE", 0x09: "COM2", 0x0A: "PID", 0x0B: "VER", 0x0C: "COM3", 0x0D: "COM4", 0x0E: "COM5", 0x0F: "COM6", 0x10: "AECH", 0x11: "CLKRC", 0x12: "COM7", 0x13: "COM8", 0x14: "COM9", 0x15: "COM10", 0x17: "HSTART", 0x18: "HSTOP", 0x19: "VSTRT", 0x1A: "VSTOP", 0x1B: "PSHFT", 0x1C: "MIDH", 0x1E: "MVFP", 0x1F: "LAEC", 0x20: "BOS", 0x21: "GBOS", 0x22: "GROS", 0x23: "ROS", 0x24: "AEW", 0x25: "AEB", 0x26: "VPT", 0x27: "BBIAS", 0x28: "GbBIAS", 0x29: "Gr_COM", 0x2A: "EXHCH", 0x2B: "EXHCL", 0x2C: "RBIAS", 0x2D: "ADVFL", 0x2E: "ADVFH", 0x2F: "YAVE", 0x30: "HSYST", 0x31: "HSYEN", 0x32: "HREF", 0x33: "CHLF", 0x34: "ARBLM", 0x37: "ADC", 0x38: "ACOM", 0x39: "OFON", 0x3A: "TSLB", 0x3B: "COM11", 0x3C: "COM12", 0x3D: "COM13", 0x3E: "COM14", 0x3F: "EDGE", 0x40: "COM15", 0x41: "COM16", 0x42: "COM17", 0x4F: "MTX1", 0x50: "MTX2", 0x51: "MTX3", 0x52: "MTX4", 0x53: "MTX5", 0x54: "MTX6", 0x55: "MTX7", 0x56: "MTX8", 0x57: "MTX9", 0x58: "MTXS", 0x62: "LCC1", 0x63: "LCC2", 0x64: "LCC3", 0x65: "LCC4", 0x66: "LCC5", 0x67: "MANU", 0x68: "MANV", 0x69: "HV", 0x6A: "MBD", 0x6B: "DBLV", 0x6C: "GSP(0)", 0x6D: "GSP(1)", 0x6E: "GSP(2)", 0x6F: "GSP(3)", 0x70: "GSP(4)", 0x71: "GSP(5)", 0x72: "GSP(6)", 0x73: "GSP(7)", 0x74: "GSP(8)", 0x75: "GSP(9)", 0x76: "GSP(10)", 0x77: "GSP(11)", 0x78: "GSP(12)", 0x79: "GSP(13)", 0x7A: "GSP(14)", 0x7B: "GSP(15)", 0x7C: "GST(0)", 0x7D: "GST(1)", 0x7E: "GST(2)", 0x7F: "GST(3)", 0x80: "GST(4)", 0x81: "GST(5)", 0x82: "GST(6)", 0x83: "GST(7)", 0x84: "GST(8)", 0x85: "GST(9)", 0x86: "GST(10)", 0x87: "GST(11)", 0x88: "GST(12)", 0x89: "GST(13)", 0x8A: "GST(14)", 0x8B: "GST(15)", 0x8C: "COM22", 0x8D: "COM23", 0x8E: "COM24", 0x8F: "DBLC1", 0x90: "DBLC_B", 0x91: "DBLC_R", 0x92: "DM_LNL", 0x93: "DM_LNH", 0x9D: "LCCFB", 0x9E: "LCCFR", 0x9F: "DBLC_Gb", 0xA0: "DBLC_Gr", 0xA1: "AECHM", 0xA4: "COM25", 0xA5: "COM26", 0xA6: "G_GAIN", 0xA7: "VGA_ST", 0xA8: "ACOM(0)", 0xA9: "ACOM(1)", 0xAA: "ACOM(2)" } def ov9650_name(reg): if reg in ov9650_regs.keys(): return ov9650_regs[reg] else: return "RSVD(%02x)" % reg def i2c_write(reg, value): print "write(%s, 0x%02x)" % (ov9650_name(reg), value) def i2c_read(reg, value): print "\tread(%s): 0x%02x" % (ov9650_name(reg), value) NONE = 0x00 WRITE = 0x60 READ = 0x61 reg = -1 if len(sys.argv) < 2: print "usage: beautify.py " sys.exit(1) f=open(sys.argv[1]) state = NONE for l in f.readlines(): if not l.endswith("ae301688\r\n"): continue # print l[:-1] l = l.split() store = "strb" in l[4] idbr = int(l[5][-2:],16) if state == NONE: if store and idbr == 0x60: state = WRITE elif store and idbr == 0x61: state = READ else: print "Unexpected store: %02x" % idbr sys.exit(1) elif state == WRITE: if reg < 0: reg = idbr else: if idbr == 0x61: state = READ else: i2c_write(reg, idbr) state = NONE reg = -1 elif state == READ: i2c_read(reg, idbr) reg = -1 state = NONE f.close()