mirror of
https://github.com/ErnyTech/Open-USB-Extreme
synced 2025-01-30 17:27:32 +01:00
toD: oue_version
This commit is contained in:
parent
2fde7880a1
commit
cf6a1172ae
@ -13,6 +13,28 @@ struct usb_extreme_base {
|
|||||||
uint8_t[10] empty2;
|
uint8_t[10] empty2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct usb_extreme_v0 {
|
||||||
|
char[USBEXTREME_NAME_LENGTH] name;
|
||||||
|
char[USBEXTREME_ID_LENGTH] id;
|
||||||
|
uint8_t n_parts;
|
||||||
|
uint8_t type;
|
||||||
|
uint8_t[4] empty;
|
||||||
|
uint8_t magic;
|
||||||
|
uint8_t[USBEXTREME_NAME_EXT_LENGTH] empty2;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct usb_extreme_v1 {
|
||||||
|
char[USBEXTREME_NAME_LENGTH] name;
|
||||||
|
char[USBEXTREME_ID_LENGTH] id;
|
||||||
|
uint8_t n_parts;
|
||||||
|
uint8_t type;
|
||||||
|
uint16_t size;
|
||||||
|
uint8_t video_mode;
|
||||||
|
uint8_t usb_extreme_version;
|
||||||
|
uint8_t magic;
|
||||||
|
char[USBEXTREME_NAME_EXT_LENGTH] name_ext;
|
||||||
|
}
|
||||||
|
|
||||||
enum UsbExtremeVersion {
|
enum UsbExtremeVersion {
|
||||||
V0 = 0x00,
|
V0 = 0x00,
|
||||||
V1
|
V1
|
||||||
@ -70,3 +92,30 @@ extern(C) int oue_point_headers(const(usb_extreme_base)** headers, const(void)*
|
|||||||
*headers = cast(const(usb_extreme_base)*) raw_headers;
|
*headers = cast(const(usb_extreme_base)*) raw_headers;
|
||||||
return headers_nlen;
|
return headers_nlen;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern(C) int oue_version(UsbExtremeVersion* oueVersion, const(void) *headers, size_t headerslen) {
|
||||||
|
auto headers_oeu = cast(usb_extreme_v1*) headers;
|
||||||
|
auto headers_nlen = headerslen / USBEXTREME_HEADER_SIZE;
|
||||||
|
auto first_version = UsbExtremeVersion.V0;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if(!is_oue(headers, headerslen)) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(i = 0; i < headers_nlen; i++) {
|
||||||
|
auto header = headers_oeu[i];
|
||||||
|
|
||||||
|
if (i == 0) {
|
||||||
|
first_version = get_version(header.usb_extreme_version);
|
||||||
|
} else {
|
||||||
|
if (first_version != get_version(header.usb_extreme_version)) {
|
||||||
|
*oueVersion = UsbExtremeVersion.V0;
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
*oueVersion = first_version;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
@ -1,33 +1,6 @@
|
|||||||
#include <usbextreme.h>
|
#include <usbextreme.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
int oue_version(usb_extreme_versions *version, const void *headers, size_t headerslen) {
|
|
||||||
const usb_extreme_v1 *headers_oeu = headers;
|
|
||||||
int headers_nlen = (int) (headerslen / USBEXTREME_HEADER_SIZE);
|
|
||||||
usb_extreme_versions first_version = USB_EXTREME_V0;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
if(!is_oue(headers, headerslen)) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
for(i = 0; i < headers_nlen; i++) {
|
|
||||||
const usb_extreme_v1 header = headers_oeu[i];
|
|
||||||
|
|
||||||
if (i == 0) {
|
|
||||||
first_version = get_version(header.usb_extreme_version);
|
|
||||||
} else {
|
|
||||||
if (first_version != get_version(header.usb_extreme_version)) {
|
|
||||||
*version = USB_EXTREME_V0;
|
|
||||||
return -2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
*version = first_version;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int oue_read_headers(usb_extreme_headers *headers, void *raw_headers, const size_t headerslen) {
|
int oue_read_headers(usb_extreme_headers *headers, void *raw_headers, const size_t headerslen) {
|
||||||
usb_extreme_base *headers_ptr;
|
usb_extreme_base *headers_ptr;
|
||||||
usb_extreme_versions version;
|
usb_extreme_versions version;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user