toD: oue_read_headers

This commit is contained in:
Ernesto Castellotti 2019-08-21 15:26:05 +02:00
parent 5779d3e530
commit cee71e8c8d
2 changed files with 31 additions and 23 deletions

View File

@ -38,6 +38,14 @@ align(1) struct usb_extreme_v1 {
char[USBEXTREME_NAME_EXT_LENGTH] name_ext;
}
struct usb_extreme_headers{
const(void)* first_header;
const(usb_extreme_base)* headers;
int num_headers;
size_t headerslen;
UsbExtremeVersion oueVersion;
}
enum UsbExtremeVersion {
V0 = 0x00,
V1
@ -122,3 +130,26 @@ extern(C) int oue_version(UsbExtremeVersion* oueVersion, const(void) *headers, s
*oueVersion = first_version;
return 1;
}
extern(C) int oue_read_headers(usb_extreme_headers* headers, const(void)* raw_headers, size_t headerslen) {
const(usb_extreme_base)* headers_ptr;
UsbExtremeVersion oueVersion;
auto num_headers = cast(int) (headerslen / USBEXTREME_HEADER_SIZE);
usb_extreme_headers headers_temp = {null, null, 0, 0, UsbExtremeVersion.V0};
if (oue_point_headers(&headers_ptr, raw_headers, headerslen) <= 0) {
return -1;
}
if (oue_version(&oueVersion, raw_headers, headerslen) <= 0) {
return -1;
}
headers_temp.first_header = raw_headers;
headers_temp.headers = headers_ptr;
headers_temp.num_headers = num_headers;
headers_temp.headerslen = headerslen;
headers_temp.oueVersion = oueVersion;
*headers = headers_temp;
return 1;
}

View File

@ -1,29 +1,6 @@
#include <usbextreme.h>
#include <string.h>
int oue_read_headers(usb_extreme_headers *headers, void *raw_headers, const size_t headerslen) {
usb_extreme_base *headers_ptr;
usb_extreme_versions version;
int num_headers = (int) (headerslen / USBEXTREME_HEADER_SIZE);
usb_extreme_headers headers_temp = {NULL, NULL, 0, 0, 0};
if(oue_point_headers(&headers_ptr, raw_headers, headerslen) <= 0) {
return -1;
}
if(oue_version(&version, raw_headers, headerslen) <= 0) {
return -1;
}
headers_temp.first_header = raw_headers;
headers_temp.headers = headers_ptr;
headers_temp.num_headers = num_headers;
headers_temp.headerslen = headerslen;
headers_temp.version = version;
*headers = headers_temp;
return 1;
}
int oue_read(usb_extreme_filestat *filestat, const usb_extreme_headers headers, const int filestats_nlen) {
int offset = filestats_nlen;
usb_extreme_v1 *headers_full = (usb_extreme_v1*) headers.headers;