public CmdFunc(Cmd cmd, CmdsThread thread, CmdOption opt, MProgressBar bar) { mOption = opt; mThread = thread; mCmd = cmd; mBar = bar; }
public void startCmdUpdateThread(CmdOption option, MProgressBar bar) { mProgress = bar; Thread update = new Thread(new ParameterizedThreadStart(updateSystem)); update.Start(option); }
private CmdOption parseToOption(String s) { string[] ar = s.Split(','); string sp = "->"; String type = getValue(ar[0], Enums.Key.TYPE, sp); String name = getValue(ar[1], Enums.Key.NAME, sp); String src = getValue(ar[2], Enums.Key.SRC, sp); String dst = getValue(ar[3], Enums.Key.DST, sp); String permission = getValue(ar[4], Enums.Key.PERMISSION, sp); String index = getValue(ar[5], Enums.Key.INDEX, sp); Console.WriteLine("name:" + name + "src:" + src); int id = int.Parse(index); bool exist = mTable.ContainsKey(name); CmdOption option; if (!exist) { option = new CmdOption(id); } else { option = (CmdOption)mTable[name]; } option.type = int.Parse(type); option.name = name; option.path[id - 1] = src; option.dst[id - 1] = dst; option.permission[id - 1] = permission; return(option); }
private void loadUi() { String bmp = Enums.PNG.APK; foreach (DictionaryEntry entry in mTable) { CmdOption option = (CmdOption)entry.Value; addControl(option); } }
public void startCmdUpdateThread(String[] path, String[] to, int length, String[] permission, MProgressBar bar) { mProgress = bar; CmdOption option = new CmdOption(length); option.path = path; option.permission = permission; option.dst = to; Thread update = new Thread(new ParameterizedThreadStart(updateSystem)); update.Start(option); }
/* * type:0/1/2 * name: * src: * dst: * permission: * index: */ private bool initLoadSource() { FileInfo info = new FileInfo(Enums.Path.COMPONET); if (info.Exists == false) { return(false); } FileStream stream = info.OpenRead(); StreamReader reader = new StreamReader(stream); String s; bool ret; s = reader.ReadLine(); while (s != null) { Console.WriteLine("read:" + s); ret = mParse.existString(s, "type->"); if (ret == false) { Console.WriteLine("invalid line info,read next"); s = reader.ReadLine(); continue; } ret = mParse.existString(s, "#"); if (ret == true) { //just comment s = reader.ReadLine(); continue; } CmdOption option = parseToOption(s); if (mTable.ContainsKey(option.name)) { mTable.Remove(option.name); } mTable.Add(option.name, option); s = reader.ReadLine(); } reader.Close(); stream.Close(); return(true); }
private void buttonExCamera_Click(object sender, EventArgs e) { bool adbState = mCmd.excuteCmdGetAdbState(); if (!adbState) { MessageBox.Show(Enums.Error.ADB, Enums.Title.ERROR); return; } CmdOption option = new CmdOption(1); option.path[0] = PATH_NET + Enums.AndroidPath.SYSTEM_LIB + Enums.UpdateFileName.CAMERA_SERVICE; option.dst[0] = Enums.AndroidPath.SYSTEM_LIB + Enums.UpdateFileName.CAMERA_SERVICE; option.permission[0] = Enums.LinuxPermission.NO_CHANGE; mThreadCmd.startCmdUpdateThread(option, mProgressBarUpdate); }
private void installApk(Object obj) { CmdOption option = new CmdOption(1); bool ret = false; option.state[0] = Enums.WorkState.RUNNING; option.path[0] = (String)obj; option.calcSize(); mProgress.showProgress(option); ret = mCmd.excuteCmdInstallThirdApp(option.path[0]); option.state[0] = ret == true ? (int)Enums.WorkState.SUCC : (int)Enums.WorkState.ERROR; mIntfResult.setResult(Enums.CmdType.APK, ret); Thread.Sleep(1000); mProgress.dismissProgress(0); }
private void buttonExBusybox_Click(object sender, EventArgs e) { bool adbState = mCmd.excuteCmdGetAdbState(); if (!adbState) { MessageBox.Show(Enums.Error.ADB, Enums.Title.ERROR); return; } CmdOption option = new CmdOption(1); option.path[0] = Enums.Path.PATH_SRC + Enums.ThirdAppFileName.BUSYBOX; option.dst[0] = Enums.AndroidPath.SYSTEM_BIN + Enums.ThirdAppFileName.BUSYBOX; option.permission[0] = Enums.LinuxPermission.RWX_RWX_RWX; mThreadCmd.startCmdUpdateThread(option, mProgressBarUpdate); }
private void addControl(CmdOption option) { ButtonEx button = new ButtonEx(); button.setText(option.name); CmdFunc func = new CmdFunc(mCmd, mCmdThread, option, mBar); button.setButtonClick(func); if (option.type == Enums.CmdType.APK) { button.setBitmap(Enums.PNG.APK); mLayoutApp.Controls.Add(button); } else if (option.type == Enums.CmdType.UPDATE) { mLayoutFrameware.Controls.Add(button); button.setBitmap(Enums.PNG.FRAMEWORK); } }
private void buttonExLancher_Click(object sender, EventArgs e) { bool adbState = mCmd.excuteCmdGetAdbState(); if (!adbState) { MessageBox.Show(Enums.Error.ADB, Enums.Title.ERROR); return; } CmdOption option = new CmdOption(2); option.path[0] = PATH_NET + Enums.AndroidPath.SYSTEM_PRIV_APP + Enums.UpdateFileName.LANCHER2_APK; option.dst[0] = Enums.AndroidPath.SYSTEM_PRIV_APP + Enums.UpdateFileName.LANCHER2_APK; option.permission[0] = Enums.LinuxPermission.NO_CHANGE; option.path[1] = PATH_NET + Enums.AndroidPath.SYSTEM_APP + Enums.UpdateFileName.LANCHER2_ODEX; option.dst[1] = Enums.AndroidPath.SYSTEM_APP + Enums.UpdateFileName.LANCHER2_ODEX; option.permission[1] = Enums.LinuxPermission.NO_CHANGE; mThreadCmd.startCmdUpdateThread(option, mProgressBarUpdate); }
private void updateSystem(Object obj) { CmdOption option = (CmdOption)obj; bool ret = true; option.calcSize(); if (mProgress != null) { mProgress.showProgress(option); } for (int i = 0; i < option.length; i++) { ret &= mCmd.excuteCmdUpdate(option.path[i], option.dst[i], option.permission[i]); option.state[i] = ret == true ? (int)Enums.WorkState.SUCC : (int)Enums.WorkState.ERROR; } mIntfResult.setResult(Enums.CmdType.UPDATE, ret); Thread.Sleep(1000); if (mProgress != null) { mProgress.dismissProgress(0); } }
public void addComponet(CmdOption option) { addComponet(option); }
//show progress private void showProgressThread(Object obj) { mProgressEx.runCycle(); CmdOption option = (CmdOption)obj; long size = 0; int percent = 0; int totalPercent = 0; long totalValue = 0; long value = 0; int state = Enums.WorkState.RUNNING; for (int i = 0; i < option.length; i++) { size = option.size[i]; value = 0; percent = 0; if (size <= 0) { continue; } state = Enums.WorkState.RUNNING; while (value < size || state == Enums.WorkState.RUNNING) { percent = (int)(((float)value / (float)(size)) * 100); percent = (percent > 100) ? 100 : percent; if (state == Enums.WorkState.SUCC) { value = size; percent = 100; break; } else if (state == Enums.WorkState.ERROR) { value = size; percent = 100; break; } else { percent = (percent >= 100) ? 99 : percent; if (percent < 99) { totalPercent = (int)(((float)totalValue / (float)option.sizeTotal) * 100); totalPercent = totalPercent >= 99 ? 99 : totalPercent; Console.WriteLine("toatlval:" + totalValue + " size:" + option.sizeTotal + " pecent:" + totalPercent); mSyn.Post(__showProgressTotal, totalPercent); value += STEP; totalValue += STEP; } else { value = size - 1; } } // Console.WriteLine("cur percent:" + percent + " size:" + size); mSyn.Post(__showProgressCur, percent); Thread.Sleep(100); state = option.state[i]; } mSyn.Post(__showProgressCur, 100); // Console.WriteLine("size:" + option.size[i] + " total:" + option.sizeTotal); } mSyn.Post(__showProgressTotal, 100); mProgressEx.stopCycle(); }
public void showProgress(CmdOption option) { mThreadShowProgress = new Thread(new ParameterizedThreadStart(showProgressThread)); mThreadShowProgress.Start(option); }
private CmdOption getPartitonOption(int index) { PATH_IMG = textBoxImgRoute.Text; CmdOption option = new CmdOption(1); option.index = index; switch (index) { case (Enums.PartitionIndex.ABOOT): option.state[0] = Enums.WorkState.RUNNING; option.path[0] = PATH_IMG + @"\" + Enums.PartitionFileName.ABOOT; option.calcSize(); break; case Enums.PartitionIndex.BOOT: option.state[0] = Enums.WorkState.RUNNING; option.path[0] = PATH_IMG + @"\" + Enums.PartitionFileName.BOOT; option.calcSize(); break; case Enums.PartitionIndex.SYSTEM: option.state[0] = Enums.WorkState.RUNNING; option.path[0] = PATH_IMG + @"\" + Enums.PartitionFileName.SYSTEM; option.calcSize(); break; case Enums.PartitionIndex.MODEM: option.state[0] = Enums.WorkState.RUNNING; option.path[0] = PATH_IMG + @"\" + Enums.PartitionFileName.MODEM; option.calcSize(); break; case (Enums.PartitionIndex.SPLASH): option.state[0] = Enums.WorkState.RUNNING; option.path[0] = PATH_IMG + @"\" + Enums.PartitionFileName.SPLASH; option.calcSize(); break; case (Enums.PartitionIndex.USERDATA): option.state[0] = Enums.WorkState.RUNNING; option.path[0] = PATH_IMG + @"\" + Enums.PartitionFileName.USERDATA; option.calcSize(); break; case (Enums.PartitionIndex.RECOVERY): option.state[0] = Enums.WorkState.RUNNING; option.path[0] = PATH_IMG + @"\" + Enums.PartitionFileName.RECOVERY; option.calcSize(); break; case (Enums.PartitionIndex.ALL): option = new CmdOption(7); option.index = Enums.PartitionIndex.ALL; option.path[0] = PATH_IMG + @"\" + Enums.PartitionFileName.ABOOT; option.path[1] = PATH_IMG + @"\" + Enums.PartitionFileName.BOOT; option.path[2] = PATH_IMG + @"\" + Enums.PartitionFileName.SYSTEM; option.path[3] = PATH_IMG + @"\" + Enums.PartitionFileName.MODEM; option.path[4] = PATH_IMG + @"\" + Enums.PartitionFileName.SPLASH; option.path[5] = PATH_IMG + @"\" + Enums.PartitionFileName.USERDATA; option.path[6] = PATH_IMG + @"\" + Enums.PartitionFileName.RECOVERY; option.state[0] = Enums.WorkState.RUNNING; option.state[1] = Enums.WorkState.RUNNING; option.state[2] = Enums.WorkState.RUNNING; option.state[3] = Enums.WorkState.RUNNING; option.state[4] = Enums.WorkState.RUNNING; option.state[5] = Enums.WorkState.RUNNING; option.state[6] = Enums.WorkState.RUNNING; option.calcSize(); break; } return(option); }
private void flashThread(Object obj) { CmdOption option = (CmdOption)obj; int index = option.index; bool ret = false; switch (index) { case (Enums.PartitionIndex.ABOOT): mProgress.showProgress(option); ret = mCmd.excuteCmdFlashAboot(option.path[0]); option.state[0] = ret == true ? (int)Enums.WorkState.SUCC : (int)Enums.WorkState.ERROR; break; case Enums.PartitionIndex.BOOT: mProgress.showProgress(option); ret = mCmd.excuteCmdFlashBoot(option.path[0]); option.state[0] = ret == true ? (int)Enums.WorkState.SUCC : (int)Enums.WorkState.ERROR; break; case Enums.PartitionIndex.SYSTEM: mProgress.showProgress(option); ret = mCmd.excuteCmdFlashSystem(option.path[0]); option.state[0] = ret == true ? (int)Enums.WorkState.SUCC : (int)Enums.WorkState.ERROR; break; case Enums.PartitionIndex.MODEM: mProgress.showProgress(option); ret = mCmd.excuteCmdFlashModem(option.path[0]); option.state[0] = ret == true ? (int)Enums.WorkState.SUCC : (int)Enums.WorkState.ERROR; break; case (Enums.PartitionIndex.SPLASH): mProgress.showProgress(option); ret = mCmd.excuteCmdFlashSplash(option.path[0]); option.state[0] = ret == true ? (int)Enums.WorkState.SUCC : (int)Enums.WorkState.ERROR; break; case (Enums.PartitionIndex.USERDATA): mProgress.showProgress(option); ret = mCmd.excuteCmdFlashUserdata(option.path[0]); option.state[0] = ret == true ? (int)Enums.WorkState.SUCC : (int)Enums.WorkState.ERROR; break; case (Enums.PartitionIndex.RECOVERY): mProgress.showProgress(option); ret = mCmd.excuteCmdFlashRecovery(option.path[0]); option.state[0] = ret == true ? (int)Enums.WorkState.SUCC : (int)Enums.WorkState.ERROR; break; case (Enums.PartitionIndex.ALL): ret = true; mProgress.showProgress(option); ret &= mCmd.excuteCmdFlashAboot(option.path[0]); option.state[0] = ret == true ? (int)Enums.WorkState.SUCC : (int)Enums.WorkState.ERROR; ret &= mCmd.excuteCmdFlashBoot(option.path[1]); option.state[1] = ret == true ? (int)Enums.WorkState.SUCC : (int)Enums.WorkState.ERROR; ret &= mCmd.excuteCmdFlashSystem(option.path[2]); option.state[2] = ret == true ? (int)Enums.WorkState.SUCC : (int)Enums.WorkState.ERROR; ret &= mCmd.excuteCmdFlashModem(option.path[3]); option.state[3] = ret == true ? (int)Enums.WorkState.SUCC : (int)Enums.WorkState.ERROR; ret &= mCmd.excuteCmdFlashSplash(option.path[4]); option.state[4] = ret == true ? (int)Enums.WorkState.SUCC : (int)Enums.WorkState.ERROR; ret &= mCmd.excuteCmdFlashUserdata(option.path[5]); option.state[5] = ret == true ? (int)Enums.WorkState.SUCC : (int)Enums.WorkState.ERROR; ret &= mCmd.excuteCmdFlashRecovery(option.path[6]); option.state[6] = ret == true ? (int)Enums.WorkState.SUCC : (int)Enums.WorkState.ERROR; break; } mIntfResult.setResult(Enums.CmdType.FASTBOOT, ret); Thread.Sleep(1000); mProgress.dismissProgress(0); }