/
usb_moded-dyn-config.h
105 lines (92 loc) · 4.99 KB
/
usb_moded-dyn-config.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
/*
Copyright (C) 2011 Nokia Corporation. All rights reserved.
author: Philippe De Swert <philippe.de-swert@nokia.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
*/
#ifndef USB_MODED_DYN_CONFIG_H_
#define USB_MODED_DYN_CONFIG_H_
#define MODE_DIR_PATH "/etc/usb-moded/dyn-modes"
#define DIAG_DIR_PATH "/etc/usb-moded/diag"
#define MODE_ENTRY "mode"
#define MODE_NAME_KEY "name"
#define MODE_MODULE_KEY "module"
#define MODE_NEEDS_APPSYNC_KEY "appsync"
#define MODE_NETWORK_KEY "network"
#define MODE_MASS_STORAGE "mass_storage"
#define MODE_NETWORK_INTERFACE_KEY "network_interface"
#define MODE_OPTIONS_ENTRY "options"
#define MODE_SYSFS_PATH "sysfs_path"
#define MODE_SYSFS_VALUE "sysfs_value"
#define MODE_SYSFS_RESET_VALUE "sysfs_reset_value"
#define MODE_SOFTCONNECT "softconnect"
#define MODE_SOFTCONNECT_DISCONNECT "softconnect_disconnect"
#define MODE_SOFTCONNECT_PATH "softconnect_path"
/* Instead of hard-coding values that never change or have only one option,
android engineers prefered to have sysfs entries... go figure... */
#define MODE_ANDROID_EXTRA_SYSFS_PATH "android_extra_sysfs_path"
#define MODE_ANDROID_EXTRA_SYSFS_VALUE "android_extra_sysfs_value"
/* in combined android gadgets we sometime need more than one extra sysfs path or value */
#define MODE_ANDROID_EXTRA_SYSFS_PATH2 "android_extra_sysfs_path2"
#define MODE_ANDROID_EXTRA_SYSFS_VALUE2 "android_extra_sysfs_value2"
#define MODE_ANDROID_EXTRA_SYSFS_PATH3 "android_extra_sysfs_path3"
#define MODE_ANDROID_EXTRA_SYSFS_VALUE3 "android_extra_sysfs_value3"
#define MODE_ANDROID_EXTRA_SYSFS_PATH4 "android_extra_sysfs_path4"
#define MODE_ANDROID_EXTRA_SYSFS_VALUE4 "android_extra_sysfs_value4"
/* For windows different modes/usb profiles need their own idProduct */
#define MODE_IDPRODUCT "idProduct"
#define MODE_IDVENDOROVERRIDE "idVendorOverride"
#define MODE_HAS_NAT "nat"
#define MODE_HAS_DHCP_SERVER "dhcp_server"
#ifdef CONNMAN
#define MODE_CONNMAN_TETHERING "connman_tethering"
#endif
/**
* Struct keeping all the data needed for the definition of a dynamic mode
*/
typedef struct mode_list_elem
{
/*@{ */
char *mode_name; /* mode name */
char *mode_module; /* needed module for given mode */
int appsync; /* requires appsync or not */
int network; /* bring up network or not */
int mass_storage; /* Use mass-storage functions */
char *network_interface; /* Which network interface to bring up if network needs to be enabled */
char *sysfs_path; /* path to set sysfs options */
char *sysfs_value; /* option name/value to write to sysfs */
char *sysfs_reset_value; /* value to reset the the sysfs to default */
char *softconnect; /* value to be written to softconnect interface */
char *softconnect_disconnect; /* value to set on the softconnect interface to disable after disconnect */
char *softconnect_path; /* path for the softconnect */
char *android_extra_sysfs_path; /* path for static value that never changes that needs to be set by sysfs :( */
char *android_extra_sysfs_value; /* static value that never changes that needs to be set by sysfs :( */
char *android_extra_sysfs_path2; /* path for static value that never changes that needs to be set by sysfs :( */
char *android_extra_sysfs_value2; /* static value that never changes that needs to be set by sysfs :( */
char *android_extra_sysfs_path3; /* path for static value that never changes that needs to be set by sysfs :( */
char *android_extra_sysfs_value3; /* static value that never changes that needs to be set by sysfs :( */
char *android_extra_sysfs_path4; /* path for static value that never changes that needs to be set by sysfs :( */
char *android_extra_sysfs_value4; /* static value that never changes that needs to be set by sysfs :( */
char *idProduct; /* product id to assign to a specific profile */
char *idVendorOverride; /* Temporary vendor override for special modes used by odms in testing/manufacturing */
int nat; /* If NAT should be set up in this mode or not */
int dhcp_server; /* if a DHCP server needs to be configured and started or not */
#ifdef CONNMAN
char* connman_tethering; /* connman's tethering technology path */
#endif
/*@} */
}mode_list_elem;
/* diag is used to select a secondary configuration location for diagnostic purposes */
GList *read_mode_list(int diag);
void list_item_free(mode_list_elem *list_item);
void free_mode_list(GList *modelist);
#endif /* USB_MODED_DYN_CONFIG_H_ */