| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- #!/usr/bin/env python3
- from flipper.app import App
- from flipper.storage import FlipperStorage
- from flipper.utils.cdc import resolve_port
- class Main(App):
- # this is basic use without sub-commands, simply to reboot flipper / power it off, not meant as a full CLI wrapper
- def init(self):
- self.parser.add_argument("-p", "--port", help="CDC Port", default="auto")
- self.subparsers = self.parser.add_subparsers(help="sub-command help")
- self.parser_power_off = self.subparsers.add_parser(
- "power_off", help="Power off command, won't return to CLI"
- )
- self.parser_power_off.set_defaults(func=self.power_off)
- self.parser_reboot = self.subparsers.add_parser(
- "reboot", help="Reboot command help"
- )
- self.parser_reboot.set_defaults(func=self.reboot)
- self.parser_reboot2dfu = self.subparsers.add_parser(
- "reboot2dfu", help="Reboot to DFU, won't return to CLI"
- )
- self.parser_reboot2dfu.set_defaults(func=self.reboot2dfu)
- def _get_flipper(self):
- if not (port := resolve_port(self.logger, self.args.port)):
- return None
- flipper = FlipperStorage(port)
- flipper.start()
- return flipper
- def power_off(self):
- if not (flipper := self._get_flipper()):
- return 1
- self.logger.debug("Powering off")
- flipper.send("power off" + "\r")
- flipper.stop()
- return 0
- def reboot(self):
- if not (flipper := self._get_flipper()):
- return 1
- self.logger.debug("Rebooting")
- flipper.send("power reboot" + "\r")
- flipper.stop()
- return 0
- def reboot2dfu(self):
- if not (flipper := self._get_flipper()):
- return 1
- self.logger.debug("Rebooting to DFU")
- flipper.send("power reboot2dfu" + "\r")
- flipper.stop()
- return 0
- if __name__ == "__main__":
- Main()()
|