示例#1
0
    def onWork(self):
        ret, output = runcmd('adb shell rm "%s"' % Setting.DEVICE_CIT_RESULT_PATH)
        if ret != 0:
            Log.w('CIT RESULT not exists\n%s' % output)

        # TODO: push other files, so
        cmds = []
        cmds.append('adb remount')
        cmds.append('adb push data/audio.primary.imx6.so /system/lib/hw/')
        cmds.append('adb push data/libinputflinger.so /system/lib/')
        cmds.append('adb push data/gralloc.imx6.so /system/lib/hw/')
        success_snipptes = ['remount succeeded', 'KB/s',]
        for cmd in cmds:
            ret, output = runcmd(cmd)
            Log.d(cmd)
            output = output.strip()
            if ret != 0:
                self.err = output
                return self.FAILED
            # match success outputs
            matchsnippet = False
            for snippet in success_snipptes:
                if snippet in output:
                    matchsnippet = True
                    break
            if matchsnippet: continue

            if output:
                self.err = output
                return self.FAILED

        return super(UpdateCITWork, self).onWork()
示例#2
0
 def jsonloads(self, content):
     Log.d('response --> %s' % content)
     try: return jloads(content)
     except:
         from factcore.works.workflow import BaseWork
         return {'ret': BaseWork.FAILED, 'desc': 'Program exception %s' % \
                 traceback.format_exc()}
示例#3
0
 def checkStep(self, sn, step):
     url = Setting.BASE_CHECKSTEP_URL % {'sn': sn, 'step': Setting.getStepInt(step)}
     Log.d(url)
     try:
         resp = requests.get(url)
     except:
         from factcore.works.workflow import BaseWork
         return {'ret': BaseWork.FAILED, 'desc': u'不能连接服务器'}
     return self.jsonloads(resp.text)
示例#4
0
 def onContinue(self, pass_or_failed):
     param = self.ui.entry.get().strip()
     sn = self.getSn()
     Log.d(u'%s -> %s' % (self.getName(), repr(sn)))
     if sn != param:
         return BaseWork.FAILED
     else:
         return BaseWork.SUCCESS
     self.ctx.setSn(sn)
     return BaseWork.onContinue(self, self.result)
示例#5
0
 def uploadResult(self, sn, step, result, descobj={}):
     url = Setting.BASE_STEP_URL % {'sn': sn, 'step': Setting.getStepInt(step),
                                    'result': result}
     Log.d(url)
     data = jdumps(descobj, ensure_ascii=False).encode('utf8')
     try:
         resp = requests.post(url, params={}, data=data)
     except:
         from factcore.works.workflow import BaseWork
         return {'ret': BaseWork.FAILED, 'desc': u'不能连接服务器'}
     return self.jsonloads(resp.text)
示例#6
0
    def reInitWorks(self):
        # debug check flags
        Log.d('reInitWorks')
        self.curwork = None
        for work in self.works:
            work.debugCheckFinishedFlags()

        self.win.cleanMainFrame()
        self.works = []
        for cls in self.workclss:
            work = cls(self)
            self.works.append(work)
            work.onInit()
            work.ui.onInitUI(self.win.getMainFrame())
        self.workiter = self.iterWork()
        self.win.showStartButton()
示例#7
0
    def onWork(self):
        cmds = []
        cmds.append('adb remount')
        cmds.append('adb push data/cfg80211.ko /system/lib/modules/')
        cmds.append('adb push data/bcmdhd.ko /system/lib/modules/')
        cmds.append('adb push data/nvram.txt /etc/')
        cmds.append('adb push data/fw_bcmdhd.bin /etc/')
        cmds.append('adb push data/wl.dat /data/')
        cmds.append('adb shell "busybox chmod +x /data/wl.dat"')
        cmds.append('adb shell "insmod /system/lib/modules/cfg80211.ko"')
        cmds.append('adb shell "insmod /system/lib/modules/bcmdhd.ko nvram_path=/etc/nvram.txt firmware_path=/etc/fw_bcmdhd.bin"')

        cmds.append('adb shell "busybox ifconfig wlan0 up"')
        cmds.append('adb shell "/data/wl.dat scan"')
        success_snipptes = ['remount succeeded', 'KB/s',
                            '(File exists)']
        for cmd in cmds:
            ret, output = runcmd(cmd)
            Log.d(cmd)
            output = output.strip()
            if ret != 0:
                self.err = output
                return self.FAILED
            # match success outputs
            matchsnippet = False
            for snippet in success_snipptes:
                if snippet in output:
                    matchsnippet = True
                    break
            if matchsnippet: continue

            if output:
                self.err = output
                return self.FAILED

        # wait scan results perpared
        cmd = 'adb shell "/data/wl.dat" scanresults'
        expectstr = '/data/wl.dat: Not Ready'
        while True:
            sleep(1)
            ret, output = runcmd(cmd)
            if expectstr not in output: break

        return BaseWork.onWork(self)
示例#8
0
 def _start(self):
     Log.i('start do...')
     # check previous status, if failed, break return
     if self.curwork and self.curwork.result == BaseWork.FAILED:
         self._endCurrentWork()
         self.win.showRestartButton()
         return
     if self.workiter is None:
         self.workiter = self.iterWork()
     while True:
         work = self.workiter.next()
         if work == None:
             self.reset()
             break
         Log.d('%s->%s' % (work, BaseWork.ResultToName(work.result)))
         if work.result == BaseWork.PAUSE:
             break
         elif work.result == BaseWork.FAILED:
             self._endCurrentWork()
             self.win.showRestartButton()
             break
示例#9
0
 def onWork(self):
     ''' Invoke: 工作函数主体, 返回 PAUSE 时等待用户输入entry或者等待点击按钮'''
     if self.ui_hasentry: return BaseWork.PAUSE
     ret, output = runcmd(self.cmd)
     if ret != 0:
         Log.e('[%s]runcmd failed -> %s' % (self.getName(), self.cmd))
         self.err = output
         return BaseWork.FAILED
     m = compile(self.expect).search(output)
     if m:
         Log.d('(SUCCESS)[%s] %s -> match %s' % (self.getName(), self.expect, m.groups()))
         return BaseWork.SUCCESS
     else:
         Log.raw('Output:\n%s' % output)
         Log.e('(FAILED)[%s] %s -> not match' % (self.getName(), self.expect))
         self.err = output
         return BaseWork.FAILED
示例#10
0
 def onDebugWork(self):
     if self.ui_hasentry: return BaseWork.PAUSE
     if Setting.DEBUG_SUCCESS:
         output = self.debugSuccessOutput()
     else:
         output = self.debugFailedOutput()
     m = compile(self.expect).search(output)
     if m:
         Log.i('(SUCCESS)DebugWork!!![%s] "%s" -> match %s' % (self.getName(), self.expect, m.groups()))
         return BaseWork.SUCCESS
     else:
         Log.raw('Output:\n%s' % output)
         Log.e('(FAILED)DebugWork!!![%s] "%s" -> not match' % (self.getName(), self.expect))
         self.err = output
         return BaseWork.FAILED