diff options
author | Alexander Wenzel <Alexander.AW.Wenzel@bmw.de> | 2011-09-29 15:24:54 +0200 |
---|---|---|
committer | Alexander Wenzel <Alexander.AW.Wenzel@bmw.de> | 2011-09-29 15:24:54 +0200 |
commit | c37ecb5031eebc36bfba8be0d741ec858e8898f7 (patch) | |
tree | f5ab98bf34fb9e70522386a8625d54425a6fb5d2 /src/lib/dlt_filetransfer.c | |
parent | 8fd55260f1d572939f185e014aef34a53b50de8b (diff) | |
download | DLT-daemon-c37ecb5031eebc36bfba8be0d741ec858e8898f7.tar.gz |
Fixed filetransfer to use shm status for flow control.
Added new function to dlt user library.
Diffstat (limited to 'src/lib/dlt_filetransfer.c')
-rw-r--r-- | src/lib/dlt_filetransfer.c | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/src/lib/dlt_filetransfer.c b/src/lib/dlt_filetransfer.c index a78c418..935573d 100644 --- a/src/lib/dlt_filetransfer.c +++ b/src/lib/dlt_filetransfer.c @@ -95,14 +95,24 @@ int isFile (const char* file) */ void doTimeout(int timeout) { - if(timeout>MIN_TIMEOUT) - { - usleep(timeout * 1000); - } - else + int total_size, used_size; + + dlt_user_check_buffer(&total_size, &used_size); + + /* sleep only if more than 50% of buffer used */ + if((total_size - used_size) < (total_size/2)) { - usleep(MIN_TIMEOUT * 1000); - } + printf("Wait %d of %d already used\n",used_size,total_size); + + if(timeout>MIN_TIMEOUT) + { + usleep(timeout * 1000); + } + else + { + usleep(MIN_TIMEOUT * 1000); + } + } } //!Deletes the given file @@ -298,8 +308,8 @@ int dlt_user_log_file_header(DltContext *fileContext,const char *filename){ */ int dlt_user_log_file_data(DltContext *fileContext,const char *filename, int packageToTransfer, int timeout){ FILE *file; - int i,pkgNumber; - long positionIndicator,readBytes; + int pkgNumber; + long readBytes; if(isFile(filename)) { |