summaryrefslogtreecommitdiff
path: root/utils/hwstub/lib/hwstub.h
diff options
context:
space:
mode:
Diffstat (limited to 'utils/hwstub/lib/hwstub.h')
-rw-r--r--utils/hwstub/lib/hwstub.h70
1 files changed, 70 insertions, 0 deletions
diff --git a/utils/hwstub/lib/hwstub.h b/utils/hwstub/lib/hwstub.h
new file mode 100644
index 0000000000..ed058dfa3b
--- /dev/null
+++ b/utils/hwstub/lib/hwstub.h
@@ -0,0 +1,70 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2012 by Amaury Pouly
11 *
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
16 *
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
19 *
20 ****************************************************************************/
21#ifndef __HWSTUB__
22#define __HWSTUB__
23
24#include <libusb.h>
25#include "hwstub_protocol.h"
26
27#ifdef __cplusplus
28extern "C" {
29#endif
30
31/**
32 *
33 * Low-Level interface
34 *
35 */
36
37struct hwstub_device_t
38{
39 libusb_device_handle *handle;
40 int intf;
41 int bulk_in;
42 int bulk_out;
43 int int_in;
44};
45
46/* Requires then ->handle field only. Returns 0 on success */
47int hwstub_probe(struct hwstub_device_t *dev);
48/* Returns 0 on success */
49int hwstub_release(struct hwstub_device_t *dev);
50
51/* Returns number of bytes filled */
52int hwstub_get_info(struct hwstub_device_t *dev, uint16_t idx, void *info, size_t sz);
53/* Returns number of bytes filled */
54int hwstub_get_log(struct hwstub_device_t *dev, void *buf, size_t sz);
55/* Returns number of bytes written/read or <0 on error */
56int hwstub_rw_mem(struct hwstub_device_t *dev, int read, uint32_t addr, void *buf, size_t sz);
57/* Returns <0 on error */
58int hwstub_call(struct hwstub_device_t *dev, uint32_t addr);
59int hwstub_jump(struct hwstub_device_t *dev, uint32_t addr);
60/* Returns <0 on error. The size must be a multiple of 16. */
61int hwstub_aes_otp(struct hwstub_device_t *dev, void *buf, size_t sz, uint16_t param);
62
63const char *hwstub_get_product_string(struct usb_resp_info_stmp_t *stmp);
64const char *hwstub_get_rev_string(struct usb_resp_info_stmp_t *stmp);
65
66#ifdef __cplusplus
67} // extern "C"
68#endif
69
70#endif /* __HWSTUB__ */ \ No newline at end of file