mirror of
https://github.com/bkerler/edl.git
synced 2024-11-24 16:37:51 -05:00
fix setactiveslot
This commit is contained in:
parent
bd36481568
commit
69d9a7e772
2 changed files with 18 additions and 13 deletions
|
@ -1303,19 +1303,24 @@ class firehose(metaclass=LogBase):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def cmd_setactiveslot(self, slot: str):
|
def cmd_setactiveslot(self, slot: str):
|
||||||
def cmd_patch_multiple(lun, start_sector_patch, byte_offset_patch, headeroffset, pdata, header):
|
def cmd_patch_multiple(lun, start_sector_patch, byte_offset_patch, headeroffset, pdata, header):
|
||||||
offset = 0
|
offset = 0
|
||||||
header_size = len(header)
|
header_size = len(header)
|
||||||
pdata_size = len(pdata)
|
size_each_patch = 4
|
||||||
write_size = pdata_size # with assumption pdata_size > header_size
|
write_size = len(pdata)
|
||||||
patch_subset_size = 4
|
for i in range(0, write_size, size_each_patch):
|
||||||
for i in range(0, write_size, patch_subset_size):
|
pdata_subset = int(unpack("<I", pdata[offset:offset+size_each_patch])[0])
|
||||||
pdata_subset = int(unpack("<I", pdata[offset:offset+patch_subset_size])[0])
|
self.cmd_patch( lun, start_sector_patch, \
|
||||||
self.cmd_patch(lun, start_sector_patch, byte_offset_patch, pdata_subset, patch_subset_size, True)
|
byte_offset_patch + offset, \
|
||||||
|
pdata_subset, \
|
||||||
|
size_each_patch, True)
|
||||||
if i < header_size:
|
if i < header_size:
|
||||||
header_subset = int(unpack("<I", header[offset:offset+patch_subset_size])[0])
|
header_subset = int(unpack("<I", header[offset:offset+size_each_patch])[0])
|
||||||
self.cmd_patch(lun, headeroffset, 0, header_subset, patch_subset_size, True)
|
self.cmd_patch(lun, headeroffset, \
|
||||||
offset += patch_subset_size
|
offset, \
|
||||||
|
header_subset, \
|
||||||
|
size_each_patch, True)
|
||||||
|
offset += size_each_patch
|
||||||
return True
|
return True
|
||||||
|
|
||||||
if slot.lower() not in ["a", "b"]:
|
if slot.lower() not in ["a", "b"]:
|
||||||
|
|
|
@ -224,7 +224,7 @@ class gpt(metaclass=LogBase):
|
||||||
self.name = sh.string(72)
|
self.name = sh.string(72)
|
||||||
|
|
||||||
def create(self):
|
def create(self):
|
||||||
val = pack("16s16sQQQ72s", self.type, self.unique, self.first_lba, self.last_lba, self.flags, self.name)
|
val = pack("<16s16sQQQ72s", self.type, self.unique, self.first_lba, self.last_lba, self.flags, self.name)
|
||||||
return val
|
return val
|
||||||
|
|
||||||
class efi_type(Enum):
|
class efi_type(Enum):
|
||||||
|
@ -498,7 +498,7 @@ class gpt(metaclass=LogBase):
|
||||||
if active:
|
if active:
|
||||||
flags |= AB_PARTITION_ATTR_SLOT_ACTIVE << (AB_FLAG_OFFSET*8)
|
flags |= AB_PARTITION_ATTR_SLOT_ACTIVE << (AB_FLAG_OFFSET*8)
|
||||||
else:
|
else:
|
||||||
flags |= AB_PARTITION_ATTR_UNBOOTABLE << (AB_FLAG_OFFSET*8)
|
flags &= AB_PARTITION_ATTR_UNBOOTABLE << (AB_FLAG_OFFSET*8)
|
||||||
partentry.flags = flags
|
partentry.flags = flags
|
||||||
pdata = partentry.create()
|
pdata = partentry.create()
|
||||||
return pdata, partition.entryoffset
|
return pdata, partition.entryoffset
|
||||||
|
|
Loading…
Reference in a new issue