This patch adds two new source files that will deal will code related to progress callbacks and display. I have decided to keep this separate, as there will be many smaller routines involved, which otherwise would bloat fel.c unnecessarily.
For starters, let's also move the gettime() function there. Signed-off-by: Bernhard Nortmann <[email protected]> --- Makefile | 2 +- fel.c | 10 +--------- progress.c | 40 ++++++++++++++++++++++++++++++++++++++++ progress.h | 34 ++++++++++++++++++++++++++++++++++ 4 files changed, 76 insertions(+), 10 deletions(-) create mode 100644 progress.c create mode 100644 progress.h diff --git a/Makefile b/Makefile index 53d6a0d..7fb0931 100644 --- a/Makefile +++ b/Makefile @@ -83,7 +83,7 @@ LIBUSB = libusb-1.0 LIBUSB_CFLAGS = `pkg-config --cflags $(LIBUSB)` LIBUSB_LIBS = `pkg-config --libs $(LIBUSB)` -sunxi-fel: fel.c fel-to-spl-thunk.h +sunxi-fel: fel.c fel-to-spl-thunk.h progress.c progress.h $(CC) $(CFLAGS) $(LIBUSB_CFLAGS) $(LDFLAGS) -o $@ $(filter %.c,$^) $(LIBS) $(LIBUSB_LIBS) sunxi-nand-part: nand-part-main.c nand-part.c nand-part-a10.h nand-part-a20.h diff --git a/fel.c b/fel.c index 3e4852f..aca8162 100644 --- a/fel.c +++ b/fel.c @@ -32,9 +32,9 @@ #include <stdarg.h> #include <errno.h> #include <unistd.h> -#include <sys/time.h> #include "endian_compat.h" +#include "progress.h" struct aw_usb_request { char signature[8]; @@ -1186,14 +1186,6 @@ static int aw_fel_get_endpoint(libusb_device_handle *usb) return 0; } -/* Less reliable than clock_gettime, but does not require linking with -lrt */ -static double gettime(void) -{ - struct timeval tv; - gettimeofday(&tv, NULL); - return tv.tv_sec + (double)tv.tv_usec / 1000000.; -} - int main(int argc, char **argv) { int rc; diff --git a/progress.c b/progress.c new file mode 100644 index 0000000..9c2a7d4 --- /dev/null +++ b/progress.c @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2015 Bernhard Nortmann <[email protected]> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +#include "progress.h" + +#include <stdio.h> +#include <sys/time.h> +#include <unistd.h> + +#include "common.h" + +/* Less reliable than clock_gettime, but does not require linking with -lrt */ +inline double gettime(void) +{ + struct timeval tv; + gettimeofday(&tv, NULL); + return tv.tv_sec + (double)tv.tv_usec / 1000000.; +} + +/* Update progress status, passing information to the callback function. */ +void progress_update(size_t UNUSED(bytes_done)) +{ + /* + * This is a non-functional placeholder! + * It will be replaced in a later patch. + */ +} diff --git a/progress.h b/progress.h new file mode 100644 index 0000000..360988e --- /dev/null +++ b/progress.h @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2015 Bernhard Nortmann <[email protected]> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +#ifndef _SUNXI_TOOLS_PROGRESS_H +#define _SUNXI_TOOLS_PROGRESS_H + +#include <stdbool.h> +#include <stddef.h> + +/* function pointer type for a progress callback / notification */ +typedef void (*progress_cb_t)(size_t total, size_t done); + +/* conversion helper macros */ +#define kilo(value) ((double)value / 1000.) /* SI prefix "k" */ +#define kibi(value) ((double)value / 1024.) /* binary prefix "Ki", "K" */ + +double gettime(void); + +void progress_update(size_t bytes_done); + +#endif /* _SUNXI_TOOLS_PROGRESS_H */ -- 2.4.6 -- You received this message because you are subscribed to the Google Groups "linux-sunxi" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
