1421370d48dfb2d58696b23392bc356adf16cff72jessica# Copyright (C) 2012 The Android Open Source Project 2421370d48dfb2d58696b23392bc356adf16cff72jessica# 3421370d48dfb2d58696b23392bc356adf16cff72jessica# Licensed under the Apache License, Version 2.0 (the "License"); 4421370d48dfb2d58696b23392bc356adf16cff72jessica# you may not use this file except in compliance with the License. 5421370d48dfb2d58696b23392bc356adf16cff72jessica# You may obtain a copy of the License at 6421370d48dfb2d58696b23392bc356adf16cff72jessica# 7421370d48dfb2d58696b23392bc356adf16cff72jessica# http://www.apache.org/licenses/LICENSE-2.0 8421370d48dfb2d58696b23392bc356adf16cff72jessica# 9421370d48dfb2d58696b23392bc356adf16cff72jessica# Unless required by applicable law or agreed to in writing, software 10421370d48dfb2d58696b23392bc356adf16cff72jessica# distributed under the License is distributed on an "AS IS" BASIS, 11421370d48dfb2d58696b23392bc356adf16cff72jessica# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12421370d48dfb2d58696b23392bc356adf16cff72jessica# See the License for the specific language governing permissions and 13421370d48dfb2d58696b23392bc356adf16cff72jessica# limitations under the License. 14421370d48dfb2d58696b23392bc356adf16cff72jessica 15421370d48dfb2d58696b23392bc356adf16cff72jessica"""Emit extra commands needed for Group during OTA installation 16421370d48dfb2d58696b23392bc356adf16cff72jessica(installing the bootloader).""" 17421370d48dfb2d58696b23392bc356adf16cff72jessica 18421370d48dfb2d58696b23392bc356adf16cff72jessicaimport common 19421370d48dfb2d58696b23392bc356adf16cff72jessica 20421370d48dfb2d58696b23392bc356adf16cff72jessicadef FullOTA_InstallEnd(info): 21421370d48dfb2d58696b23392bc356adf16cff72jessica try: 22421370d48dfb2d58696b23392bc356adf16cff72jessica bootloader_bin = info.input_zip.read("RADIO/bootloader.raw") 23421370d48dfb2d58696b23392bc356adf16cff72jessica except KeyError: 24421370d48dfb2d58696b23392bc356adf16cff72jessica print "no bootloader.raw in target_files; skipping install" 25421370d48dfb2d58696b23392bc356adf16cff72jessica else: 26421370d48dfb2d58696b23392bc356adf16cff72jessica WriteBootloader(info, bootloader_bin) 27421370d48dfb2d58696b23392bc356adf16cff72jessica 28421370d48dfb2d58696b23392bc356adf16cff72jessica try: 295a1ed8026cc425eed2b1ea4022b59a6ac39f4632jessica radio_img = info.input_zip.read("RADIO/radio.raw") 30421370d48dfb2d58696b23392bc356adf16cff72jessica except KeyError: 315a1ed8026cc425eed2b1ea4022b59a6ac39f4632jessica print "no radio.raw in target_files; skipping install" 32421370d48dfb2d58696b23392bc356adf16cff72jessica else: 33421370d48dfb2d58696b23392bc356adf16cff72jessica WriteRadio(info, radio_img) 34421370d48dfb2d58696b23392bc356adf16cff72jessica 352f96dbf9011d63b7109e95dc1dbe71faea853f1fJP Abgralldef IncrementalOTA_InstallBegin(info): 362f96dbf9011d63b7109e95dc1dbe71faea853f1fJP Abgrall info.script.Unmount("/system") 372f96dbf9011d63b7109e95dc1dbe71faea853f1fJP Abgrall info.script.TunePartition("/system", "-O", "^has_journal") 382f96dbf9011d63b7109e95dc1dbe71faea853f1fJP Abgrall info.script.Mount("/system") 39421370d48dfb2d58696b23392bc356adf16cff72jessica 40421370d48dfb2d58696b23392bc356adf16cff72jessicadef IncrementalOTA_InstallEnd(info): 41421370d48dfb2d58696b23392bc356adf16cff72jessica try: 42421370d48dfb2d58696b23392bc356adf16cff72jessica target_bootloader_bin = info.target_zip.read("RADIO/bootloader.raw") 43421370d48dfb2d58696b23392bc356adf16cff72jessica try: 44421370d48dfb2d58696b23392bc356adf16cff72jessica source_bootloader_bin = info.source_zip.read("RADIO/bootloader.raw") 45421370d48dfb2d58696b23392bc356adf16cff72jessica except KeyError: 46421370d48dfb2d58696b23392bc356adf16cff72jessica source_bootloader_bin = None 47421370d48dfb2d58696b23392bc356adf16cff72jessica 48421370d48dfb2d58696b23392bc356adf16cff72jessica if source_bootloader_bin == target_bootloader_bin: 49421370d48dfb2d58696b23392bc356adf16cff72jessica print "bootloader unchanged; skipping" 50421370d48dfb2d58696b23392bc356adf16cff72jessica else: 51421370d48dfb2d58696b23392bc356adf16cff72jessica WriteBootloader(info, target_bootloader_bin) 52421370d48dfb2d58696b23392bc356adf16cff72jessica except KeyError: 53421370d48dfb2d58696b23392bc356adf16cff72jessica print "no bootloader.raw in target target_files; skipping install" 54421370d48dfb2d58696b23392bc356adf16cff72jessica 55421370d48dfb2d58696b23392bc356adf16cff72jessica try: 565a1ed8026cc425eed2b1ea4022b59a6ac39f4632jessica target_radio_img = info.target_zip.read("RADIO/radio.raw") 57421370d48dfb2d58696b23392bc356adf16cff72jessica try: 585a1ed8026cc425eed2b1ea4022b59a6ac39f4632jessica source_radio_img = info.source_zip.read("RADIO/radio.raw") 59421370d48dfb2d58696b23392bc356adf16cff72jessica except KeyError: 60421370d48dfb2d58696b23392bc356adf16cff72jessica source_radio_img = None 61421370d48dfb2d58696b23392bc356adf16cff72jessica 62421370d48dfb2d58696b23392bc356adf16cff72jessica if source_radio_img == target_radio_img: 63421370d48dfb2d58696b23392bc356adf16cff72jessica print "radio image unchanged; skipping" 64421370d48dfb2d58696b23392bc356adf16cff72jessica else: 65421370d48dfb2d58696b23392bc356adf16cff72jessica WriteRadio(info, target_radio_img) 66421370d48dfb2d58696b23392bc356adf16cff72jessica except KeyError: 675a1ed8026cc425eed2b1ea4022b59a6ac39f4632jessica print "no radio.raw in target_files; skipping install" 68421370d48dfb2d58696b23392bc356adf16cff72jessica 69421370d48dfb2d58696b23392bc356adf16cff72jessica 70421370d48dfb2d58696b23392bc356adf16cff72jessicadef WriteBootloader(info, bootloader_bin): 71421370d48dfb2d58696b23392bc356adf16cff72jessica common.ZipWriteStr(info.output_zip, "bootloader.raw", bootloader_bin) 72421370d48dfb2d58696b23392bc356adf16cff72jessica fstab = info.info_dict["fstab"] 73421370d48dfb2d58696b23392bc356adf16cff72jessica 74421370d48dfb2d58696b23392bc356adf16cff72jessica info.script.Print("Writing bootloader...") 75421370d48dfb2d58696b23392bc356adf16cff72jessica 76421370d48dfb2d58696b23392bc356adf16cff72jessica info.script.AppendExtra('''package_extract_file("bootloader.raw", "%s");''' % 77421370d48dfb2d58696b23392bc356adf16cff72jessica (fstab["/staging"].device,)) 78421370d48dfb2d58696b23392bc356adf16cff72jessica 79421370d48dfb2d58696b23392bc356adf16cff72jessicadef WriteRadio(info, radio_img): 805a1ed8026cc425eed2b1ea4022b59a6ac39f4632jessica common.ZipWriteStr(info.output_zip, "radio.raw", radio_img) 81421370d48dfb2d58696b23392bc356adf16cff72jessica fstab = info.info_dict["fstab"] 82421370d48dfb2d58696b23392bc356adf16cff72jessica 83421370d48dfb2d58696b23392bc356adf16cff72jessica info.script.Print("Writing radio...") 845a1ed8026cc425eed2b1ea4022b59a6ac39f4632jessica 855a1ed8026cc425eed2b1ea4022b59a6ac39f4632jessica info.script.AppendExtra("""assert(package_extract_file("radio.raw", "%s"), 865a1ed8026cc425eed2b1ea4022b59a6ac39f4632jessica mount("ext4", "EMMC", "%s", "/radio"), 875a1ed8026cc425eed2b1ea4022b59a6ac39f4632jessica bach.update_modem("/radio/SAM_6260_ALL.fls"), 885a1ed8026cc425eed2b1ea4022b59a6ac39f4632jessica unmount("/radio"));""" % 895a1ed8026cc425eed2b1ea4022b59a6ac39f4632jessica (fstab["/radio"].device, fstab["/radio"].device)) 90