Subversion Repositories freemyipod

Rev

Rev 974 | Blame | Compare with Previous | Last modification | View Log | RSS feed

#!/usr/bin/env python

import sys
import os
import time
import struct
import locale

from functools import wraps

import libemcore
import libemcoredata
from misc import Error, ArgumentError, ArgumentTypeError, Logger, getfuncdoc, gethwname, to_bool, to_int

class Interface(object):
    def __init__(self):
        self.logger = Logger()
        try:
            self.emcore = libemcore.Emcore(logger = self.logger)
        except libemcore.DeviceNotFoundError:
            self.logger.error("No emCORE device found!\n")
            exit(1)
    def lcdcmd(self, cmd):
        data = struct.pack("<I", cmd)
        self.emcore.write(0x38300004, data)        
    def lcddata(self, data):
        data = struct.pack("<I", data)
        self.emcore.write(0x38300040, data)        

if __name__ == "__main__":
    try:
        interface = Interface()
        interface.emcore.write(0x38300000, struct.pack("<I", 0x41000c20))
#        interface.emcore.write(0x38300000, struct.pack("<I", 0x41100db8))
        interface.emcore.i2cwrite(0, 0xe6, 0x30, struct.pack("B", 200))
        if len(sys.argv) > 1:
            interface.lcdcmd(int(sys.argv[1], 16))
            for i in range(2, len(sys.argv)):
                interface.lcddata(int(sys.argv[1], 16))
            exit(0)
#        '''
        print("Software Reset?")
        raw_input()
        interface.lcdcmd(0x01)
        print("Sleep Out?")
        raw_input()
        interface.lcdcmd(0x11)
        print("Display ON?")
        raw_input()
        interface.lcdcmd(0x29)
        print("Power Control 1?")
        raw_input()
        interface.lcdcmd(0xc0)
        print("Data: 00 (unknown)?")
        raw_input()
        interface.lcddata(0x00)
        print("Power Control 2?")
        raw_input()
        interface.lcdcmd(0xc1)
        print("Data: 03 (unknown)?")
        raw_input()
        interface.lcddata(0x03)
        print("Power Control 3?")
        raw_input()
        interface.lcdcmd(0xc2)
        print("Data: 34 (unknown)?")
        raw_input()
        interface.lcddata(0x34)
        print("Power Control 4?")
        raw_input()
        interface.lcdcmd(0xc3)
        print("Data: 72 (unknown)?")
        raw_input()
        interface.lcddata(0x72)
        print("Data: 03 (unknown)?")
        raw_input()
        interface.lcddata(0x03)
        print("Power Control 5?")
        raw_input()
        interface.lcdcmd(0xc4)
        print("Data: 73 (unknown)?")
        raw_input()
        interface.lcddata(0x73)
        print("Data: 03 (unknown)?")
        raw_input()
        interface.lcddata(0x03)
        print("VCOM Control 1?")
        raw_input()
        interface.lcdcmd(0xc5)
        print("Data: 3c (unknown)?")
        raw_input()
        interface.lcddata(0x3c)
        print("Data: 3c (unknown)?")
        raw_input()
        interface.lcddata(0x3c)
        print("Command: fe (unknown)?")
        raw_input()
        interface.lcdcmd(0xfe)
        print("Data: 00 (unknown)?")
        raw_input()
        interface.lcddata(0x00)
        print("Command: b1 (unknown)?")
        raw_input()
        interface.lcdcmd(0xb1)
        print("Data: 6a (unknown)?")
        raw_input()
        interface.lcddata(0x6a)
        print("Data: 15 (unknown)?")
        raw_input()
        interface.lcddata(0x15)
        print("Command: b2 (unknown)?")
        raw_input()
        interface.lcdcmd(0xb2)
        print("Data: 6a (unknown)?")
        raw_input()
        interface.lcddata(0x00)
        print("Data: 15 (unknown)?")
        raw_input()
        interface.lcddata(0x15)
        print("Command: b3 (unknown)?")
        raw_input()
        interface.lcdcmd(0xb3)
        print("Data: 6a (unknown)?")
        raw_input()
        interface.lcddata(0x00)
        print("Data: 15 (unknown)?")
        raw_input()
        interface.lcddata(0x15)
        print("Command: b4 (unknown)?")
        raw_input()
        interface.lcdcmd(0xb4)
        print("Data: 02 (unknown)?")
        raw_input()
        interface.lcddata(0x02)
        print("Command: b6 (unknown)?")
        raw_input()
        interface.lcdcmd(0xb6)
        print("Data: 12 (unknown)?")
        raw_input()
        interface.lcddata(0x12)
        print("Data: 02 (unknown)?")
        raw_input()
        interface.lcddata(0x02)
        print("Command: 35 (unknown)?")
        raw_input()
        interface.lcdcmd(0x35)
        print("Data: 00 (unknown)?")
        raw_input()
        interface.lcddata(0x00)
        print("Command: 26 (unknown)?")
        raw_input()
        interface.lcdcmd(0x26)
        print("Data: 10 (unknown)?")
        raw_input()
        interface.lcddata(0x10)
        print("Command: e0 (unknown)?")
        raw_input()
        interface.lcdcmd(0xe0)
        print("Data: 77 (unknown)?")
        raw_input()
        interface.lcddata(0x77)
        print("Data: 52 (unknown)?")
        raw_input()
        interface.lcddata(0x52)
        print("Data: 76 (unknown)?")
        raw_input()
        interface.lcddata(0x76)
        print("Data: 53 (unknown)?")
        raw_input()
        interface.lcddata(0x53)
        print("Data: 03 (unknown)?")
        raw_input()
        interface.lcddata(0x03)
        print("Data: 03 (unknown)?")
        raw_input()
        interface.lcddata(0x03)
        print("Data: 57 (unknown)?")
        raw_input()
        interface.lcddata(0x57)
        print("Data: 42 (unknown)?")
        raw_input()
        interface.lcddata(0x42)
        print("Data: 10 (unknown)?")
        raw_input()
        interface.lcddata(0x10)
        print("Data: 18 (unknown)?")
        raw_input()
        interface.lcddata(0x18)
        print("Data: 09 (unknown)?")
        raw_input()
        interface.lcddata(0x09)
        print("Command: e1 (unknown)?")
        raw_input()
        interface.lcdcmd(0xe1)
        print("Data: 0d (unknown)?")
        raw_input()
        interface.lcddata(0x0d)
        print("Data: 00 (unknown)?")
        raw_input()
        interface.lcddata(0x00)
        print("Data: 23 (unknown)?")
        raw_input()
        interface.lcddata(0x23)
        print("Data: 66 (unknown)?")
        raw_input()
        interface.lcddata(0x66)
        print("Data: 0f (unknown)?")
        raw_input()
        interface.lcddata(0x0f)
        print("Data: 15 (unknown)?")
        raw_input()
        interface.lcddata(0x15)
        print("Data: 4d (unknown)?")
        raw_input()
        interface.lcddata(0x4d)
        print("Data: 85 (unknown)?")
        raw_input()
        interface.lcddata(0x85)
        print("Data: 08 (unknown)?")
        raw_input()
        interface.lcddata(0x08)
        print("Data: 02 (unknown)?")
        raw_input()
        interface.lcddata(0x02)
        print("Data: 10 (unknown)?")
        raw_input()
        interface.lcddata(0x10)
        print("Command: e2 (unknown)?")
        raw_input()
        interface.lcdcmd(0xe2)
        print("Data: 39 (unknown)?")
        raw_input()
        interface.lcddata(0x39)
        print("Data: 60 (unknown)?")
        raw_input()
        interface.lcddata(0x60)
        print("Data: 77 (unknown)?")
        raw_input()
        interface.lcddata(0x77)
        print("Data: 05 (unknown)?")
        raw_input()
        interface.lcddata(0x05)
        print("Data: 03 (unknown)?")
        raw_input()
        interface.lcddata(0x03)
        print("Data: 07 (unknown)?")
        raw_input()
        interface.lcddata(0x07)
        print("Data: 96 (unknown)?")
        raw_input()
        interface.lcddata(0x96)
        print("Data: 64 (unknown)?")
        raw_input()
        interface.lcddata(0x64)
        print("Data: 0d (unknown)?")
        raw_input()
        interface.lcddata(0x0d)
        print("Data: 1a (unknown)?")
        raw_input()
        interface.lcddata(0x1a)
        print("Data: 0a (unknown)?")
        raw_input()
        interface.lcddata(0x0a)
        print("Command: e3 (unknown)?")
        raw_input()
        interface.lcdcmd(0xe3)
        print("Data: 3f (unknown)?")
        raw_input()
        interface.lcddata(0x3f)
        print("Data: 10 (unknown)?")
        raw_input()
        interface.lcddata(0x10)
        print("Data: 16 (unknown)?")
        raw_input()
        interface.lcddata(0x16)
        print("Data: 44 (unknown)?")
        raw_input()
        interface.lcddata(0x44)
        print("Data: 0e (unknown)?")
        raw_input()
        interface.lcddata(0x0e)
        print("Data: 04 (unknown)?")
        raw_input()
        interface.lcddata(0x04)
        print("Data: 6c (unknown)?")
        raw_input()
        interface.lcddata(0x6c)
        print("Data: 44 (unknown)?")
        raw_input()
        interface.lcddata(0x44)
        print("Data: 04 (unknown)?")
        raw_input()
        interface.lcddata(0x04)
        print("Data: 03 (unknown)?")
        raw_input()
        interface.lcddata(0x03)
        print("Data: 0b (unknown)?")
        raw_input()
        interface.lcddata(0x0b)
        print("Command: e4 (unknown)?")
        raw_input()
        interface.lcdcmd(0xe4)
        print("Data: 00 (unknown)?")
        raw_input()
        interface.lcddata(0x00)
        print("Data: 61 (unknown)?")
        raw_input()
        interface.lcddata(0x61)
        print("Data: 77 (unknown)?")
        raw_input()
        interface.lcddata(0x77)
        print("Data: 04 (unknown)?")
        raw_input()
        interface.lcddata(0x04)
        print("Data: 02 (unknown)?")
        raw_input()
        interface.lcddata(0x02)
        print("Data: 04 (unknown)?")
        raw_input()
        interface.lcddata(0x04)
        print("Data: 72 (unknown)?")
        raw_input()
        interface.lcddata(0x72)
        print("Data: 32 (unknown)?")
        raw_input()
        interface.lcddata(0x32)
        print("Data: 09 (unknown)?")
        raw_input()
        interface.lcddata(0x09)
        print("Data: 19 (unknown)?")
        raw_input()
        interface.lcddata(0x19)
        print("Data: 06 (unknown)?")
        raw_input()
        interface.lcddata(0x06)
        print("Command: e5 (unknown)?")
        raw_input()
        interface.lcdcmd(0xe5)
        print("Data: 4f (unknown)?")
        raw_input()
        interface.lcddata(0x4f)
        print("Data: 42 (unknown)?")
        raw_input()
        interface.lcddata(0x42)
        print("Data: 27 (unknown)?")
        raw_input()
        interface.lcddata(0x27)
        print("Data: 67 (unknown)?")
        raw_input()
        interface.lcddata(0x67)
        print("Data: 0f (unknown)?")
        raw_input()
        interface.lcddata(0x0f)
        print("Data: 03 (unknown)?")
        raw_input()
        interface.lcddata(0x03)
        print("Data: 26 (unknown)?")
        raw_input()
        interface.lcddata(0x26)
        print("Data: 33 (unknown)?")
        raw_input()
        interface.lcddata(0x33)
        print("Data: 01 (unknown)?")
        raw_input()
        interface.lcddata(0x01)
        print("Data: 03 (unknown)?")
        raw_input()
        interface.lcddata(0x03)
        print("Data: 09 (unknown)?")
        raw_input()
        interface.lcddata(0x09)
#        print("Command: 3a (unknown)?")
#        raw_input()
#        interface.lcdcmd(0x3a)
#        print("Data: 66 (unknown)?")
#        raw_input()
#        interface.lcddata(0x66)
        print("Command: 36 (unknown)?")
        raw_input()
        interface.lcdcmd(0x36)
        print("Data: 00 (unknown)?")
        raw_input()
        interface.lcddata(0x00)
        print("Sleep Out?")
        raw_input()
        interface.lcdcmd(0x11)
        print("Display ON?")
        raw_input()
        interface.lcdcmd(0x29)
#        '''
        print("Write pattern?")
        raw_input()
        interface.emcore.write(0x38300000, struct.pack("<I", 0x41100db8))
        interface.lcdcmd(0x2a)
        interface.lcddata(64)
        interface.lcddata(191)
        interface.lcdcmd(0x2b)
        interface.lcddata(8)
        interface.lcddata(0x237)
        interface.lcdcmd(0x2c)
#        interface.emcore.write(0x38300000, struct.pack("<I", 0x41000c20))
#        interface.lcdcmd(0x210)
#        interface.lcddata(64)
#        interface.lcdcmd(0x211)
#        interface.lcddata(191)
#        interface.lcdcmd(0x212)
#        interface.lcddata(8)
#        interface.lcdcmd(0x213)
#        interface.lcddata(239)
#        interface.lcdcmd(0x2c)
#        interface.lcdcmd(0x200)
#        interface.lcddata(64)
#        interface.lcdcmd(0x201)
#        interface.lcddata(8)
#        interface.lcdcmd(0x202)
        interface.emcore.write(0x38300000, struct.pack("<I", 0x41104eb8))
        for r in range(8):
            for y in range(32):
                for x in range(32):
                    interface.lcddata(1 << (r + 24))
                for x in range(32):
                    interface.lcddata(1 << (r + 16))
                for x in range(32):
                    interface.lcddata(1 << (r + 8))
                for x in range(32):
                    interface.lcddata(1 << r)
        for y in range(32):
            for x in range(32):
                interface.lcddata(0xff000000)
            for x in range(32):
                interface.lcddata(0xff0000)
            for x in range(32):
                interface.lcddata(0xff00)
            for x in range(32):
                interface.lcddata(0xff)
        interface.emcore.write(0x38300000, struct.pack("<I", 0x41100db8))
        interface.lcdcmd(0x2a)
        interface.lcddata(8)
        interface.lcddata(63)
        interface.lcdcmd(0x2b)
        interface.lcddata(8)
        interface.lcddata(0x237)
        interface.lcdcmd(0x2c)
#        interface.emcore.write(0x38300000, struct.pack("<I", 0x41000da8))
#        interface.lcdcmd(0x210)
#        interface.lcddata(8)
#        interface.lcdcmd(0x211)
#        interface.lcddata(63)
#        interface.lcdcmd(0x212)
#        interface.lcddata(8)
#        interface.lcdcmd(0x213)
#        interface.lcddata(239)
#        interface.lcdcmd(0x2c)
#        interface.lcdcmd(0x200)
#        interface.lcddata(8)
#        interface.lcdcmd(0x201)
#        interface.lcddata(8)
#        interface.lcdcmd(0x202)
        interface.emcore.write(0x38300000, struct.pack("<I", 0x41104eb8))
        for y in range(256):
            for k in range(8):
                interface.lcddata(y << 16)
            for k in range(8):
                interface.lcddata(y << 8)
            for k in range(8):
                interface.lcddata(y)
            for k in range(8):
                interface.lcddata((y << 8) | y)
            for k in range(8):
                interface.lcddata((y << 16) | y)
            for k in range(8):
                interface.lcddata((y << 16) | (y << 8))
            for k in range(8):
                interface.lcddata((y << 16) | (y << 8) | y)
    except KeyboardInterrupt:
        sys.exit()