def handle_bag_number(self, bag_num): import version, callgate from glob import dis from pincodes import pa if version.is_factory_mode and bag_num: # check state first assert settings.get('tested', False) assert pa.is_blank() assert 8 <= len(bag_num) < 32 # do the change failed = callgate.set_bag_number(bag_num) assert not failed callgate.set_rdp_level(2 if not is_devmode else 0) pa.greenlight_firmware() dis.fullscreen(bytes(bag_num).decode()) self.call_after(callgate.show_logout, 1) # always report the existing/new value val = callgate.get_bag_number() or b'' return b'asci' + val
async def ship_wo_bag(*a): # Factory command: for dev and test units that have no bag number, and never will. ok = await ux_confirm('''Not recommended! DO NOT USE for units going to paying customers.''') if not ok: return import callgate from main import dis, pa, is_devmode failed = callgate.set_bag_number(b'NOT BAGGED') # 32 chars max if failed: await ux_dramatic_pause('FAILED', 30) else: # lock the bootrom firmware forever callgate.set_rdp_level(2 if not is_devmode else 0) # bag number affects green light status (as does RDP level) pa.greenlight_firmware() dis.fullscreen('No Bag. DONE') callgate.show_logout(1)