summaryrefslogtreecommitdiffstats
path: root/dom/system/gonk/AutoMounter.h
diff options
context:
space:
mode:
Diffstat (limited to 'dom/system/gonk/AutoMounter.h')
-rw-r--r--dom/system/gonk/AutoMounter.h101
1 files changed, 101 insertions, 0 deletions
diff --git a/dom/system/gonk/AutoMounter.h b/dom/system/gonk/AutoMounter.h
new file mode 100644
index 000000000..ea98cadf1
--- /dev/null
+++ b/dom/system/gonk/AutoMounter.h
@@ -0,0 +1,101 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef mozilla_system_automounter_h__
+#define mozilla_system_automounter_h__
+
+#include <stdint.h>
+
+class nsCString;
+
+namespace mozilla {
+namespace system {
+
+// AutoMounter modes
+#define AUTOMOUNTER_DISABLE 0
+#define AUTOMOUNTER_ENABLE_UMS 1
+#define AUTOMOUNTER_DISABLE_WHEN_UNPLUGGED 2
+#define AUTOMOUNTER_ENABLE_MTP 3
+
+// Automounter statuses
+#define AUTOMOUNTER_STATUS_DISABLED 0
+#define AUTOMOUNTER_STATUS_ENABLED 1
+#define AUTOMOUNTER_STATUS_FILES_OPEN 2
+
+/**
+ * Initialize the automounter. This causes some of the phone's
+ * directories to show up on the host when the phone is plugged
+ * into the host via USB.
+ *
+ * When the AutoMounter starts, it will poll the current state
+ * of affairs (usb cable plugged in, automounter enabled, etc)
+ * and try to make the state of the volumes match.
+ */
+void
+InitAutoMounter();
+
+/**
+ * Sets the enabled state of the automounter.
+ *
+ * This will in turn cause the automounter to re-evaluate
+ * whether it should mount/unmount/share/unshare volumes.
+ */
+void
+SetAutoMounterMode(int32_t aMode);
+
+/**
+ * Reports the status of the automounter.
+ */
+int32_t
+GetAutoMounterStatus();
+
+/**
+ * Sets the sharing mode of an individual volume.
+ *
+ * If a volume is enabled for sharing, and the autmounter
+ * is in a state to share, then the volume will be shared
+ * with the PC.
+ */
+void
+SetAutoMounterSharingMode(const nsCString& aVolumeName, bool aAllowSharing);
+
+/**
+ * Formats the volume with specified volume name.
+ *
+ * If the volume is ready to format, automounter
+ * will unmount it, format it and then mount it again.
+ */
+void
+AutoMounterFormatVolume(const nsCString& aVolumeName);
+
+/**
+ * Mounts the volume with specified volume name.
+ *
+ * If the volume is already unmounted, automounter
+ * will mount it. Otherwise automounter will skip this.
+ */
+void
+AutoMounterMountVolume(const nsCString& aVolumeName);
+
+/**
+ * Unmounts the volume with specified volume name.
+ *
+ * If the volume is already mounted, automounter
+ * will unmount it. Otherwise automounter will skip this.
+ */
+void
+AutoMounterUnmountVolume(const nsCString& aVolumeName);
+
+/**
+ * Shuts down the automounter.
+ *
+ * This leaves the volumes in whatever state they're in.
+ */
+void
+ShutdownAutoMounter();
+
+} // system
+} // mozilla
+
+#endif // mozilla_system_automounter_h__