summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAmir Hammad <amir.hammad@hotmail.com>2016-09-09 18:37:22 +0200
committerAmir Hammad <amir.hammad@hotmail.com>2016-09-11 13:30:13 +0200
commit3d68ea280790351d0320fc4e712c51b820a5522a (patch)
tree5b5120d966e8d260d717773d4ea939e6295e5226 /include
parented70a1efa3335b6bf64c8c6a6f5be4dc25bdd9b7 (diff)
downloadsecure-hid-3d68ea280790351d0320fc4e712c51b820a5522a.tar.gz
secure-hid-3d68ea280790351d0320fc4e712c51b820a5522a.tar.bz2
secure-hid-3d68ea280790351d0320fc4e712c51b820a5522a.zip
make hid_mouse driver generic HID driver
+ keyboard support + SET_REPORT commands - usually leds on keyboards (WIP) - missing parsing of HID report descriptor Signed-off-by: Amir Hammad <amir.hammad@hotmail.com>
Diffstat (limited to 'include')
-rw-r--r--include/usbh_config.h8
-rw-r--r--include/usbh_driver_hid.h85
-rw-r--r--include/usbh_driver_hid_mouse.h53
3 files changed, 89 insertions, 57 deletions
diff --git a/include/usbh_config.h b/include/usbh_config.h
index 4fa38cb..8146ffb 100644
--- a/include/usbh_config.h
+++ b/include/usbh_config.h
@@ -38,10 +38,10 @@
// Set this wisely
#define BUFFER_ONE_BYTES (2048)
-// MOUSE
-#define USBH_HID_MOUSE_MAX_DEVICES (2)
-
-#define USBH_HID_MOUSE_BUFFER (32)
+// HID class devices
+#define USBH_HID_MAX_DEVICES (2)
+#define USBH_HID_BUFFER (256)
+#define USBH_HID_REPORT_BUFFER (4)
// MIDI
// Maximal number of midi devices connected to whatever hub
diff --git a/include/usbh_driver_hid.h b/include/usbh_driver_hid.h
new file mode 100644
index 0000000..8155d82
--- /dev/null
+++ b/include/usbh_driver_hid.h
@@ -0,0 +1,85 @@
+/*
+ * This file is part of the libusbhost library
+ * hosted at http://github.com/libusbhost/libusbhost
+ *
+ * Copyright (C) 2016 Amir Hammad <amir.hammad@hotmail.com>
+ *
+ *
+ * libusbhost 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 3 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/>.
+ *
+ */
+
+#ifndef USBH_DRIVER_HID_
+#define USBH_DRIVER_HID_
+
+#include "usbh_core.h"
+
+#include <stdint.h>
+
+BEGIN_DECLS
+
+struct _hid_mouse_config {
+ /**
+ * @brief this is called when some data is read when polling the device
+ * @param device_id handle of HID device
+ * @param data pointer to the data
+ * @param length count of bytes in the data
+ *
+ * TODO: make better interface that provides data contained in the report descriptor
+ *
+ */
+ void (*hid_in_message_handler)(uint8_t device_id, const uint8_t *data, uint32_t length);
+};
+typedef struct _hid_mouse_config hid_config_t;
+
+/**
+ * @brief hid_mouse_driver_init initialization routine - this will initialize internal structures of this device driver
+ * @param config
+ * @see hid_mouse_config_t
+ */
+void hid_driver_init(const hid_config_t *config);
+
+/**
+ * @brief hid_set_report
+ * @param device_id handle of HID device
+ * @returns true on success, false otherwise
+ */
+bool hid_set_report(uint8_t device_id, uint8_t val);
+
+enum HID_TYPE {
+ HID_TYPE_NONE,
+ HID_TYPE_MOUSE,
+ HID_TYPE_KEYBOARD,
+};
+
+/**
+ * @brief hid_get_type
+ * @param device_id handle of HID device
+ * @return type of attached HID
+ * @see enum HID_TYPE
+ */
+enum HID_TYPE hid_get_type(uint8_t device_id);
+
+/**
+ * @brief hid_is_connected
+ * @param device_id handle of HID device
+ * @return true if the device with device_id is connected
+ */
+bool hid_is_connected(uint8_t device_id);
+
+extern const usbh_dev_driver_t usbh_hid_driver;
+
+END_DECLS
+
+#endif
diff --git a/include/usbh_driver_hid_mouse.h b/include/usbh_driver_hid_mouse.h
deleted file mode 100644
index 4a9f0d3..0000000
--- a/include/usbh_driver_hid_mouse.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * This file is part of the libusbhost library
- * hosted at http://github.com/libusbhost/libusbhost
- *
- * Copyright (C) 2015 Amir Hammad <amir.hammad@hotmail.com>
- *
- *
- * libusbhost 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 3 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/>.
- *
- */
-
-#ifndef USBH_DRIVER_HID_MOUSE_
-#define USBH_DRIVER_HID_MOUSE_
-
-#include "usbh_core.h"
-
-#include <stdint.h>
-
-BEGIN_DECLS
-
-struct _hid_mouse_config {
- /**
- * @brief this is called when some data is read when polling the device
- * @param device_id
- * @param data pointer to the data (only 4 bytes are valid!)
- */
- void (*mouse_in_message_handler)(uint8_t device_id, const uint8_t *data);
-};
-typedef struct _hid_mouse_config hid_mouse_config_t;
-
-/**
- * @brief hid_mouse_driver_init initialization routine - this will initialize internal structures of this device driver
- * @param config
- * @see hid_mouse_config_t
- */
-void hid_mouse_driver_init(const hid_mouse_config_t *config);
-
-extern const usbh_dev_driver_t usbh_hid_mouse_driver;
-
-END_DECLS
-
-#endif