1
0
Fork 0
mirror of https://github.com/linux-usb-gadgets/libusbgx.git synced 2025-07-25 01:55:06 +03:00
Commit graph

230 commits

Author SHA1 Message Date
Federico Fuga
b5ad66eb1e Fix #39 Compilation fails on gcc v8 2020-01-30 17:28:41 +01:00
Ahmad Fatoum
283879d017 libusbgx: fix --without-libconfig build against glibc-2.28
Commit 45c14ef4d5 ("libusbgx: fix build with glibc-2.28 since
<sys/sysmacros.h> is no more included by <sys/types.h>")
fixed this issue for the (default) --with-libconfig configuration,
but building --without-libconfig still throws a linker error
because makedev was assumed to be an external symbol in
usbg_common.c.

Include <sys/sysmacros.h> there to address this.

Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2019-04-25 20:47:56 +02:00
ing. Federico Fuga
dccb4f19a6 libusbgx: Fix out of tree compilation
With the current 0.2.0 (999a6e5) the library can't be compiled
out ofthe tree:

libtool: compile:  gcc -DPACKAGE_NAME=\"libusbgx\" -DPACKAGE_TARNAME=\"libusbgx\" -DPACKAGE_VERSION=\"0.2.0\" "-DPACKAGE_STRING=\"libusbgx 0.2.0\"" -DPACKAGE_BUGREPORT=\"k.opasiak@samsung.com\" -DPACKAGE_URL=\"\" -DPACKAGE=\"libusbgx\" -DVERSION=\"0.2.0\" "-D_GNU_SOURCE=/**/" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -I. -I../../src -I../../include/ -g -O2 -MT function/libusbgx_la-midi.lo -MD -MP -MF function/.deps/libusbgx_la-midi.Tpo -c ../../src/function/midi.c  -fPIC -DPIC -o function/.libs/libusbgx_la-midi.o
In file included from ../../src/usbg_common.c:13:0:
../../include/usbg/usbg.h:33:26: fatal error: usbg_version.h: File o directory non esistente
compilation terminated.

It compiled correctly on 904b04c.

To fix this issue let's add usbg subdirectory to include path.

Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2018-08-22 12:59:05 +02:00
Krzysztof Opasiak
999a6e5ee9 libusbgx: Release libusbgx version 0.2.0
Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2018-03-02 22:06:33 +01:00
Krzysztof Opasiak
b1d0b906f8 libusbgx: Fix access when memory allocation failed
Don't access the memory when allocation failed.
Reported by SVACE.

Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2018-02-21 18:03:36 +01:00
John Keeping
5740ca8a5e libusbgx: Add support for UAC2 function
This is the USB Audio Class 2 function that creates an ALSA audio device
exposed as a USB gadget function.

Signed-off-by: John Keeping <john@metanate.com>
[Set import/export callbacks to correct values,
 adjust convention of set_attr(),
 fix union cast in c++]
Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com
2018-01-17 14:38:58 +00:00
Krzysztof Opasiak
1c3f1b4660 libusbgx: fix: Disallow creating function with empty instance name
USB function should have both type and instance name.
Mistakenly it was possible to create function with empty instance
name. This may lead to situations like FunctionFS device name
identified by "" or some misleading debug messages from TCM like:

tcm: Activating

Additionaly trying to execute usbg_init() after creating such
a function fails with -3 USBG_ERROR_INVALID_PARAM because it checks
if instance name is not empty.

To avoid this let's add a check in usbg_create_function() that
instance name should have at least one character.

Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2017-12-12 14:52:50 +01:00
Krzysztof Opasiak
1809b5ae60 libusbgx: fix: Correct typo in usbg_rm_file() funciton name
Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2017-12-12 14:06:36 +01:00
Krzysztof Opasiak
e4d9cbf6cc libusbgx: Make usbg_rm_config() aware of OS descriptors
Since we added support for OS descriptors we allowed user
to create a link in gadget's os_desc directory to choose
one of available configurations. This link prevents config
from being removed. This makes our rm funcitons stop working
with the recursive option. To fix this, let's make them
OS desc aware and remove this link before trying to remove
configuration if recurse option is set.

Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2017-12-12 14:06:36 +01:00
Stefan Agner
952f19c7ce libusbgx: Add support for OS Descriptor configuration bindings
OS Descriptors require an association to a single configuration. This
allows to use a specific configuration for hosts supporting  OS
Descriptors.

Signed-off-by: Stefan Agner <stefan.agner@toradex.com>
[Allow to also remove os desc binding]
Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2017-12-12 14:06:36 +01:00
Stefan Agner
db490f1ca5 libusbgx: Add config support for function OS Descriptors
This adds support for OS Descriptors available on function level,
called "Feature Descriptors".

Signed-off-by: Stefan Agner <stefan.agner@toradex.com>
[Use a little bit different convention]
Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2017-12-12 14:06:36 +01:00
Stefan Agner
0bc519f2f2 libusbgx: Add function level OS Descriptor support
This adds support for OS Descriptors available on function level,
called "Feature Descriptors".

Signed-off-by: Stefan Agner <stefan.agner@toradex.com>
[Fix mem leak in error path, allow multiple ifaces per funciton]
Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2017-12-12 14:06:36 +01:00
Stefan Agner
abf422bffc libusbgx: Add interface name for Feature Descriptors
This adds interface name required for "Feature Descriptors". If
specified, we can assume that a Feature Descriptor with the
interface name of the specified string is understood by the
kernel (e.g. interface.rndis).

Signed-off-by: Stefan Agner <stefan.agner@toradex.com>
[Allow multiple os_desc ifaces per funciton]
Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2017-12-12 14:06:36 +01:00
Stefan Agner
47526ac2a6 libusbgx: Add libconfig support for OS Descriptors
Add configuration support for OS Descriptors.

Signed-off-by: Stefan Agner <stefan.agner@toradex.com>
[Move import to the right place, don't strdup() during import]
Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2017-12-12 14:06:36 +01:00
Stefan Agner
996c322af1 libusbgx: Add OS Descriptors support
This adds OS Descriptors support on Gadget level. It allows to
enable OS Descriptors support as well as to define the OS String
proper.

Signed-off-by: Stefan Agner <stefan.agner@toradex.com>
[Remove unused variable]
Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2017-12-12 14:06:36 +01:00
Stefan Agner
ad44340734 libusbgx: Do not write null terminator when using usbg_write_string()
The helper usbg_write_string() adds one to the length of the provided
string. This leads to usbg_write_buf() writting also a null terminator
to the kernel which is not necessary/wrong. Provide usbg_write_buf
the real string length.

Signed-off-by: Stefan Agner <stefan.agner@toradex.com>
[Add missing () to function names in commit msg]
Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2017-12-11 22:40:26 +01:00
Krzysztof Opasiak
5837aedfcc libusbgx: fix: Check fclose() return code
According to man fclose:

"The fclose() function may also fail and set errno for any of the
 errors specified for the routines close(2), write(2) or fflush(3)."

So if libc decides to cache our write till closing fd we may
miss the error if we ignore value returned from fclose().

This fixes issue #12 (github).

Reported-by: Noralf Trønnes <noralf@tronnes.org>
Suggested-by: Noralf Trønnes <noralf@tronnes.org>
Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2017-11-20 12:52:55 +01:00
Krzysztof Opasiak
b8941d1cf5 libusbgx: fix: remove unused variable
Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2017-04-19 18:10:16 +02:00
Krzysztof Opasiak
5d0962ed41 libusbgx: Fix meaning of HAS_LIBCONFIG and HAS_GADGET_SCHEMES
We have two configure options related to libconfig:
1) --disable-gadget-schemes
2) --without-libconfig

Option #1 means that libusbgx itself should be compiled without gadget
schemes support. Option #2 means that everything what requires
libconfig should be turned off. So option #2 is wider than #1 as
libconfig us used also in our testing program.

To fix this meaning let's use HAS_GADGET_SCHEMES inside library source
code to determine if we should use libconfig or not and HAS_LIBCONFIG
inside our tests source code.

Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2017-03-03 17:48:44 +01:00
Krzysztof Opasiak
651177558b libusbgx: Fix compilation without libconfig
After refactorization we lost ability to build libusbgx
without libconfig. Let's restore this.

Basic concept is that the whole code related to libconfig usage
should be under #ifdef or compiled only if libconfig support
is enabled.

To prevent future problems of that kind, let's create a header
which is included when compiling without libconfig. Inside it we
like:
	struct s {
	       .import = usbg_get_config_node_int,
	       .export = usbg_set_config_node_int,
	};

are still valid, but all tries to call this functions directly end up
in compilation error. This helps us identify all pieces of code
which should be placed under suitable #ifdef.

Based on initial pull request "Compilation fixes. #4" by:
Bent Bisballe Nyeng (github: aasimon) <deva@aasimon.org>

Reported-by: Bent Bisballe Nyeng (github: aasimon) <deva@aasimon.org>
Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2017-03-03 17:48:44 +01:00
Krzysztof Opasiak
b656ce0845 libusbgx: Add support for HID function
HID function has been ported to ConfigFS interface quite long
time ago so let's add support for it also in libusbgx.

Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2017-03-03 14:02:27 +01:00
Krzysztof Opasiak
784e693fe5 libusbgx: common: Allow to export int attribute in hex format
Add a helper to export int attributes in hex format.
Now each function may decide which format should be used
(decimal or hex).

Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2017-03-03 14:02:27 +01:00
Krzysztof Opasiak
71f93716df libsubgx: common: Allow to export dev_t attribute using libconfig
Add a helper to export dev_t attributes to gadget schemes using
libconfig syntax.

Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2017-03-03 14:02:27 +01:00
Krzysztof Opasiak
7b0ef8b934 libusbgx: common: Add function for reading dev_t from ConfigFS
As some of kernel functions expose details about device node
which is assigned to this instance in form:
      <major>:<minor>
Let's add a convenient helper which will read those values
form file and convert them to dev_t.

Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2017-03-03 14:02:27 +01:00
Krzysztof Opasiak
6bdf0a3b93 libusbgx: common: Use fread() instead of fgets()
Reading binary data using fgets() may not be a good idea due
to \0 byte in the middle of data. Let's fix this by using fread()
instead of fgets().

Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2017-03-03 14:02:27 +01:00
Krzysztof Opasiak
b42b7b0c2f libusbgx: common: Use fwrite() instead of fputs()
Using fputs() for writing binary data is not a good idea as \0
byte can be in the middle of our data. Let's just use fwrite()
instead.

Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2017-03-03 14:02:27 +01:00
Krzysztof Opasiak
a996f168f7 libusbgx: Simplify strings handling in libconfig schemes
Make use of usbg_get_gadget_strs_langs() and
usbg_get_config_strs_langs() in libconfig schemes instead of
direct listing content of directory using scandir().

Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2017-03-03 14:02:27 +01:00
Krzysztof Opasiak
49879b8fc0 libusbgx: Add usbg_get_config_str_langs()
Add a function which allows to get the list of languages
in which config strings are currently available.

Thanks to this function now we may iterate through all strings
languages available in particular config and print their values.

Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2017-03-03 14:02:26 +01:00
Krzysztof Opasiak
4247abdab1 libusbgx: Add usbg_get_gadget_strs_langs()
Add a function which allows to get the list of languages
in which gadget strings are currently available.

Thanks to this function now we may iterate through all strings
languages available in particular gadget and print their values
for each language.

Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2017-03-03 14:02:26 +01:00
Krzysztof Opasiak
576d384c39 libusbgx: Get rid of static buffers from usbg_config_strs
Remove static buffers which limits strings length from
usbg_config_strs.

Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2017-03-03 14:02:10 +01:00
Krzysztof Opasiak
56355fb34d libusbgx: Add usbg_free_config_strs()
This is a first step to get rid of static buffers from usbg_config_strs.

This function should be called to release memory allocated for
configuration string.

Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2017-03-02 16:56:27 +01:00
Krzysztof Opasiak
78c45fa80f libusbgx: Get rid of static buffers from usbg_gadget_strs
Remove static buffers which limits strings length from usbg_gadget_strs.

Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2017-03-02 16:56:27 +01:00
Krzysztof Opasiak
751a88f764 libusbgx: common: Fix usbg_read_string_alloc() to read long strings correctly
Use usbg_read_string_limited() directly to avoid length limit
hidden in usbg_read_string().

Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2017-03-02 16:56:27 +01:00
Krzysztof Opasiak
e0e525fc58 libusbgx: Add usbg_free_gadget_strs()
This is a first step to get rid of static buffers in usbg_gadget_strs.

Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2017-03-02 16:54:37 +01:00
Krzysztof Opasiak
c02dbe391f libusbgx: Keep gadget strs in the same order as in device desc
Let's keep gadget strings in the same order as they appear
in USB device descriptor to avoid mistakes during structure
initialization.

Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2016-12-14 15:23:48 +01:00
Krzysztof Opasiak
67aaf8ea7e libusbgx: Use string name similar to USB spec
str_ser, str_prd and str_mnf are a little bit weird names
so let's replace them with names defined by USB spec.

Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2016-12-14 13:23:12 +01:00
Krzysztof Opasiak
3749ccec3d libusbgx: Remove typedefs for public structures
Let's remove typedefs from public structures to clearly
indicate users which structures can be accessed and which
should be used only as handles.

Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2016-12-14 13:03:26 +01:00
Krzysztof Opasiak
a23dee0c86 libusbgx: Use suitable prefix for usbg_function_type enum
Let's use USBG_ prefix for usbg_function_type enum values
to avoid users confusion.

Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2016-12-13 22:45:06 +01:00
Fabian Vogt
28e228d968 libusbgx: fix: Add missing include in usb_common.c
snprintf is used multiple times in usb_common.c,
but it did not include stdio.h before.

Signed-off-by: Fabian Vogt <fvogt@suse.com>
Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2016-12-06 13:54:21 +01:00
Krzysztof Opasiak
1ca3803639 Remove redundant assignments
Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2016-10-05 22:12:11 +02:00
Krzysztof Opasiak
7747d0c671 libusbgx: loopback: Fix loopback function name
Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2016-01-29 14:58:37 +01:00
Krzysztof Opasiak
7679dcb903 libusbgx: ms: fix: Use correct variable to check function result
Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2016-01-29 14:58:28 +01:00
Krzysztof Opasiak
ee08dd9d7c libusbgx: fix: Add missing includes
Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2016-01-29 14:58:24 +01:00
Krzysztof Opasiak
0718c2d446 libusbgx: Remove unused out label in usbg_set_function_attrs()
Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2016-01-29 14:58:20 +01:00
Krzysztof Opasiak
39dfabd1be libusbgx: Make usbg_cleanup_function() return void
Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2016-01-29 14:58:16 +01:00
Krzysztof Opasiak
610d6b25a8 libusbgx: net: Fix ether addr importing
Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2016-01-29 14:58:01 +01:00
Krzysztof Opasiak
c1c3f32696 libusbgx: Release libusbgx version 0.1.0
Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2015-12-23 00:49:03 +01:00
Krzysztof Opasiak
77449edfe0 libusbgx: Add suitable copyrights
Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2015-12-23 00:49:03 +01:00
Krzysztof Opasiak
3f422795db libusbgx: Use rmdir() instead of unlink() for directories
Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2015-12-23 00:49:03 +01:00
Krzysztof Opasiak
b7a6f9f7fa libusbgx: Replace *_cpy_*() functions with *_s() convention
Instead of having _cpy_ and _len function for getting
each string value let's use *_s() which behave like snprintf()
family.

Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2015-12-23 00:49:03 +01:00