[Spice-devel] [PATCH v4 3/7] UsbDk: Add UsbDk wrapper
Christophe Fergeau
cfergeau at redhat.com
Thu Jun 18 08:29:15 PDT 2015
Hey,
On Thu, Jun 18, 2015 at 03:46:16PM +0300, Kirill Moizik wrote:
> From: Kirill Moizik <kirillm at daynix.com>
>
> Introduce UsbDk API definitions and binding code.
>
> Signed-off-by: Kirill Moizik <kirillm at daynix.com>
> ---
> src/Makefile.am | 2 +
> src/usbdk_api.c | 173 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> src/usbdk_api.h | 34 +++++++++++
> 3 files changed, 209 insertions(+)
> create mode 100644 src/usbdk_api.c
> create mode 100644 src/usbdk_api.h
>
> diff --git a/src/Makefile.am b/src/Makefile.am
> index 25e2255..655357a 100644
> --- a/src/Makefile.am
> +++ b/src/Makefile.am
> @@ -367,6 +367,8 @@ WIN_USB_FILES= \
> win-usb-clerk.h \
> win-usb-driver-install.h \
> win-usb-driver-install.c \
> + usbdk_api.h \
> + usbdk_api.c \
> $(NULL)
>
> if OS_WIN32
> diff --git a/src/usbdk_api.c b/src/usbdk_api.c
> new file mode 100644
> index 0000000..23a0534
> --- /dev/null
> +++ b/src/usbdk_api.c
[...]
> +uint64_t usbdk_usbredir_field_to_usbdk(int value){
This should be static
> + if (value >= 0)
> + return (int)value;
and the (int) cast is unneeded. This looks good otherwise, I can do the
changes locally before pushing.
Christophe
> + else if (value == -1)
> + return USB_DK_HIDE_RULE_MATCH_ALL;
> +
> + /* value is < -1 */
> + g_return_val_if_reached(USB_DK_HIDE_RULE_MATCH_ALL);
> +}
> +
> +void usbdk_api_set_hide_rules(usbdk_api_wrapper *usbdk_api, HANDLE hider_handle, gchar *redirect_on_connect)
> +{
> + struct usbredirfilter_rule *rules;
> + int r, count;
> +
> + r = usbredirfilter_string_to_rules(redirect_on_connect, ",", "|", &rules, &count);
> + if (r) {
> + g_warning("auto-connect rules parsing failed with error %d", r);
> + return;
> + }
> +
> + for (int i = 0; i < count; i++) {
> + USB_DK_HIDE_RULE rule;
> + rule.Hide = usbdk_usbredir_field_to_usbdk(rules[i].allow);
> + rule.Class = usbdk_usbredir_field_to_usbdk(rules[i].device_class);
> + rule.VID = usbdk_usbredir_field_to_usbdk(rules[i].vendor_id);
> + rule.PID = usbdk_usbredir_field_to_usbdk(rules[i].product_id);
> + rule.BCD = usbdk_usbredir_field_to_usbdk(rules[i].device_version_bcd);
> + if (usbdk_add_hide_rule(usbdk_api, hider_handle, &rule)) {
> + SPICE_DEBUG("UsbDk set hide rule API failed");
> + }
> + }
> +
> + free(rules);
> +}
> +
> +HANDLE usbdk_create_hider_handle(usbdk_api_wrapper *usbdk_api){
> + return usbdk_api->CreateHandle();
> +}
> +
> +BOOL usbdk_add_hide_rule(usbdk_api_wrapper *usbdk_api, HANDLE hider_handle, PUSB_DK_HIDE_RULE rule) {
> + return usbdk_api->AddRule(hider_handle, rule);
> +}
> +
> +BOOL usbdk_clear_hide_rules(usbdk_api_wrapper *usbdk_api, HANDLE hider_handle) {
> + return usbdk_api->ClearRules(hider_handle);
> +}
> +
> +void usbdk_close_hider_handle(usbdk_api_wrapper *usbdk_api, HANDLE hider_handle) {
> + return usbdk_api->CloseHiderHandle(hider_handle);
> +}
> diff --git a/src/usbdk_api.h b/src/usbdk_api.h
> new file mode 100644
> index 0000000..bc6098d
> --- /dev/null
> +++ b/src/usbdk_api.h
> @@ -0,0 +1,34 @@
> +/* -*- Mode: C; c-basic-offset: 4; indent-tabs-mode: nil -*- */
> +/*
> + Copyright (C) 2014-2015 Red Hat, Inc.
> +
> + This library is free software; you can redistribute it and/or
> + modify it under the terms of the GNU Lesser General Public
> + License as published by the Free Software Foundation; either
> + version 2.1 of the License, or (at your option) any later version.
> +
> + This library 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
> + Lesser General Public License for more details.
> +
> + You should have received a copy of the GNU Lesser General Public
> + License along with this library; if not, see <http://www.gnu.org/licenses/>.
> +
> + Authors:
> + Dmitry Fleytman <dmitry at daynix.com>
> + Kirill Moizik <kirill at daynix.com>
> +*/
> +#ifndef USBDK_HEADER
> +#define USBDK_HEADER
> +
> +typedef struct tag_usbdk_api_wrapper usbdk_api_wrapper;
> +
> +BOOL usbdk_is_driver_installed(void);
> +HANDLE usbdk_create_hider_handle(usbdk_api_wrapper *usbdk_api);
> +BOOL usbdk_clear_hide_rules(usbdk_api_wrapper *usbdk_api, HANDLE hider_handle);
> +void usbdk_close_hider_handle(usbdk_api_wrapper *usbdk_api, HANDLE hider_handle);
> +int usbdk_api_load(usbdk_api_wrapper **usbdk_api);
> +void usbdk_api_unload(usbdk_api_wrapper *usbdk_api);
> +void usbdk_api_set_hide_rules(usbdk_api_wrapper *usbdk_api, HANDLE hider_handle, gchar *redirect_on_connect);
> +#endif
> --
> 2.1.0
>
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/spice-devel/attachments/20150618/c5eb9592/attachment.sig>
More information about the Spice-devel
mailing list