122 lines
3.9 KiB
EmacsLisp
122 lines
3.9 KiB
EmacsLisp
;;; android-host.el --- Module to use host binaries from an Android dev tree.
|
|
;;
|
|
;; Copyright (C) 2009 The Android Open Source Project
|
|
;;
|
|
;; Licensed under the Apache License, Version 2.0 (the "License");
|
|
;; you may not use this file except in compliance with the License.
|
|
;; You may obtain a copy of the License at
|
|
;;
|
|
;; http://www.apache.org/licenses/LICENSE-2.0
|
|
;;
|
|
;; Unless required by applicable law or agreed to in writing, software
|
|
;; distributed under the License is distributed on an "AS IS" BASIS,
|
|
;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
;; See the License for the specific language governing permissions and
|
|
;; limitations under the License.
|
|
|
|
;;; Commentary:
|
|
;;
|
|
;; This module defines interactive functions to send the most common
|
|
;; commands to a device.
|
|
;;
|
|
;; Currently only one device is supported.
|
|
;;
|
|
;; In your .emacs load this file (e.g (require 'android-host)) then
|
|
;; you can either create new shortcuts e.g:
|
|
;;
|
|
;; (global-set-key [f8] 'android-adb-sync)
|
|
;;
|
|
;; or rely on autocompletion M-x and-sync will expand to
|
|
;; M-x android-adb-sync
|
|
;;
|
|
;; By default the following key bindings are active:
|
|
;; C-x a a android-adb-root
|
|
;; C-x a r android-adb-remount
|
|
;; C-x a s android-adb-sync
|
|
;; C-x a b android-adb-shell-reboot-bootloader
|
|
;; C-x a f android-fastboot-flashall
|
|
;;
|
|
;; android-fastboot-flashall is still work in progress, check the
|
|
;; associated buffer (*Android Output*) for errors when you use it.
|
|
|
|
;;; Code:
|
|
|
|
(require 'android-common)
|
|
|
|
(defvar android-host-command-map (make-sparse-keymap))
|
|
|
|
(defun android-host-key-prefix-set (var val)
|
|
"Bind the keys shortcuts to the functions.i"
|
|
;; TODO: This should go in a minor mode keymap instead of
|
|
;; messing with the global one.
|
|
(define-key global-map (read-kbd-macro val) android-host-command-map)
|
|
(custom-set-default var val))
|
|
|
|
(let ((map android-host-command-map))
|
|
(define-key map (kbd "a") 'android-adb-root)
|
|
(define-key map (kbd "r") 'android-adb-remount)
|
|
(define-key map (kbd "s") 'android-adb-sync)
|
|
(define-key map (kbd "b") 'android-adb-shell-reboot-bootloader)
|
|
(define-key map (kbd "f") 'android-fastboot-flashall))
|
|
|
|
(defcustom android-host-key-prefix "C-x a"
|
|
"Prefix keystrokes for Android commands."
|
|
:group 'android
|
|
:type 'string
|
|
:set 'android-host-key-prefix-set)
|
|
|
|
(defun android-adb-remount ()
|
|
"Execute 'adb remount'."
|
|
(interactive)
|
|
(android-adb-command "remount"))
|
|
|
|
(defun android-adb-root ()
|
|
"Execute 'adb root'."
|
|
(interactive)
|
|
(android-adb-command "root"))
|
|
|
|
(defun android-adb-shell-reboot-bootloader ()
|
|
"Execute 'adb shell reboot bootloader'."
|
|
(interactive)
|
|
(android-adb-shell-command "reboot bootloader"))
|
|
|
|
(defun android-adb-sync ()
|
|
"Execute 'adb sync'."
|
|
(interactive)
|
|
;; Always force root and remount, this way sync always works even on
|
|
;; a device that has just rebooted or that runs a userdebug build.
|
|
(android-adb-root)
|
|
(android-adb-remount)
|
|
(android-adb-command "sync" 'p))
|
|
|
|
(defun android-fastboot-sentinel (process event)
|
|
"Called when the fastboot process is done."
|
|
;; TODO: Should barf if the last lines are not:
|
|
;; OKAY
|
|
;; rebooting...
|
|
(princ
|
|
(format "Process: %s had the event `%s'" process event)))
|
|
|
|
(defun android-fastboot-flashall (arg)
|
|
"Execute 'fastboot -p <product> flashall'.
|
|
|
|
With no ARG, don't wipe the user data.
|
|
With ARG, wipe the user data."
|
|
(interactive "P")
|
|
(when (get-buffer android-output-buffer-name)
|
|
(with-current-buffer android-output-buffer-name
|
|
(erase-buffer)))
|
|
(let ((proc
|
|
(if arg
|
|
(start-process-shell-command
|
|
"fastboot"
|
|
android-output-buffer-name
|
|
(concat (android-fastboot) " flashall -w"))
|
|
(start-process-shell-command
|
|
"fastboot" android-output-buffer-name
|
|
(concat (android-fastboot) " flashall")))))
|
|
(set-process-sentinel proc 'android-fastboot-sentinel)))
|
|
|
|
|
|
(provide 'android-host)
|
|
;;; android-host.el ends here
|