Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
pre-eliminary android gadget support
Signed-off-by: Philippe De Swert <philippedeswert@gmail.com>
  • Loading branch information
philippedeswert committed Dec 12, 2012
1 parent 2b3cfcb commit 376002c
Show file tree
Hide file tree
Showing 5 changed files with 157 additions and 2 deletions.
9 changes: 8 additions & 1 deletion configure.ac
@@ -1,4 +1,4 @@
AC_INIT([usb_moded], [0.54])
AC_INIT([usb_moded], [0.55])
AM_INIT_AUTOMAKE([-Wall -Werror foreign])

AM_CONFIG_HEADER([config.h])
Expand Down Expand Up @@ -110,6 +110,13 @@ AC_ARG_ENABLE([upstart], AS_HELP_STRING([--enable-upstart], [Enable upstart inte
esac],[upstart=false])
AM_CONDITIONAL([UPSTART], [test x$upstart = xtrue])

AC_ARG_ENABLE([android], AS_HELP_STRING([--enable-android], [Enable Android "module" interface @<:@default=false@:>@]),
[case "${enableval}" in
yes) android=true ; CFLAGS="-DANDROID $CFLAGS" ;;
no) android=false ;;
*) AC_MSG_ERROR([bad value ${enableval} for --enable-android]) ;;
esac],[android=false])
AM_CONDITIONAL([ANDROID], [test x$android = xtrue])

#TODO: Figure out how to check for this depending on the gconf flag
# gconf-2.0 >= 2.16.0
Expand Down
8 changes: 8 additions & 0 deletions debian/changelog
@@ -1,3 +1,11 @@
usb-moded (0.55) unstable; urgency=low

* Add android gadget driver support
* Make udev default
* Add rescue mode

-- Philippe De Swert <philippedeswert@jollamobile.com> Wed, 12 Dec 2012 22:57:42 +0200

usb-moded (0.54) unstable; urgency=low

* Instead of spawning shells with system() use libkmod
Expand Down
9 changes: 8 additions & 1 deletion src/Makefile.am
Expand Up @@ -18,7 +18,6 @@ usb_moded_SOURCES = \
usb_moded-dbus-private.h \
usb_moded-hw-ab.h \
usb_moded-config-private.h \
usb_moded-modules.c \
usb_moded-modules.h \
usb_moded-log.h \
usb_moded-log.c \
Expand All @@ -29,6 +28,14 @@ usb_moded_SOURCES = \
usb_moded-modesetting.c \
usb_moded-modesetting.h

if !ANDROID
usb_moded_SOURCES += \
usb_moded-modules.c
else
usb_moded_SOURCES += \
usb_moded-modules-android.c
endif

if GCONF
usb_moded_SOURCES += \
usb_moded-gconf.c \
Expand Down
123 changes: 123 additions & 0 deletions src/usb_moded-modules-android.c
@@ -0,0 +1,123 @@
/**
@file usb_moded-modules-android.c
Copyright (C) 2012 Jolla. All rights reserved.
@author: Philippe De Swert <philippe.deswert@jollamobile.com>
This program is free software; you can redistribute it and/or
modify it under the terms of the Lesser GNU General Public License
version 2 as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the Lesser GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA
*/

#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <stdio.h>

#include <glib.h>

#include <libkmod.h>

#include "usb_moded.h"
#include "usb_moded-modules.h"
#include "usb_moded-log.h"
#include "usb_moded-config.h"
#include "usb_moded-dbus.h"
#include "usb_moded-dbus-private.h"
#include "usb_moded-config.h"
#include "usb_moded-modesetting.h"

/* kmod context - initialized at start in usb_moded_init */
struct kmod_ctx *ctx;

/** load module
*
* @param module Name of the module to load
* @return 0 on success, non-zero on failure
*
*/
int usb_moded_load_module(const char *module)
{
int ret = 0;

write_to_file("/sys/class/android_usb/android0/functions", module);
write_to_file("/sys/class/android_usb/android0/enable", "0");
if( ret == 0)
log_info("Module setting to %s successfully\n", module);
return(ret);
}

/** unload module
*
* @param module Name of the module to unload
* @return 0 on success, non-zero on failure
*
*/
int usb_moded_unload_module(const char *module)
{
write_to_file("/sys/class/android_usb/android0/enable", "0");
return(0);
}

/** Check which state a module is in
*
* @return 1 if loaded, 0 when not loaded
*/
inline static int module_state_check(const char *module)
{
return(0);
}

/** find which module is loaded
*
* @return The name of the loaded module, or NULL if no modules are loaded.
*/
inline const char * usb_moded_find_module(void)
{
return(0);
}

/** clean up for modules when usb gets disconnected
*
* @param module The name of the module to unload
* @return 0 on success, non-zero on failure
*
*/
inline int usb_moded_module_cleanup(const char *module)
{
return(0);
}

/** try to unload modules to support switching
*
*
* @param force force unloading with a nasty clean-up on TRUE, or just try unloading when FALSE
* @return 0 on success, 1 on failure, 2 if hard clean-up failed
*/
inline int usb_moded_module_switch_prepare (int force)
{
return 0;
}

/** check for loaded modules and clean-up if they are not for the chosen mode
*
* @param module_name module name to check for
*
*/
inline void check_module_state(const char *module_name)
{
return;
}


10 changes: 10 additions & 0 deletions src/usb_moded-modules.h
Expand Up @@ -18,6 +18,7 @@
02110-1301 USA
*/

#ifndef ANDROID
/* module name definitions */
#define MODULE_NETWORK "g_nokia"
#ifdef NOKIA
Expand All @@ -33,6 +34,15 @@
#define MODULE_WINDOWS_NET "g_ether"
#define MODULE_DEVELOPER "g_ether"
#define MODULE_MTP "g_ffs"
#else
#define MODULE_MASS_STORAGE "mass_storage"
#define MODULE_FILE_STORAGE "mass_storage"
#define MODULE_WINDOWS_NET "rndis"
#define MODULE_DEVELOPER "rndis"
#define MODULE_MTP "mtp"
#define MODULE_NONE "none"
#define MODULE_CHARGING "mass_storage"
#endif

/* load module */
int usb_moded_load_module(const char *module);
Expand Down

0 comments on commit 376002c

Please sign in to comment.