From eb4393376d52834a1e36e287b0b7c91863eb7bea Mon Sep 17 00:00:00 2001 From: worron Date: Fri, 30 Dec 2016 00:21:41 +0300 Subject: [PATCH] Data range check for binary output --- output/raw.c | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/output/raw.c b/output/raw.c index b3b9d1e..7f5d329 100644 --- a/output/raw.c +++ b/output/raw.c @@ -10,19 +10,31 @@ int print_raw_out(int bars, int fp, int is_bin, int bit_format, int ascii_range, if (bit_format == 16 ){//16bit: for (i = 0; i < bars; i++) { - uint16_t f16 = ((float)f[i] / 10000) * 65535; + uint16_t f16; + if (f[i] > 10000) { + f16 = 65535; + } + else { + f16 = ((float)f[i] / 10000) * 65535; + } write(fp, &f16,sizeof(uint16_t)); } } else {//8bit: for (i = 0; i < bars; i++) { - uint8_t f8 = ((float)f[i] / 10000) * 255; + uint8_t f8; + if (f[i] > 10000) { + f8 = 255; + } + else { + f8 = ((float)f[i] / 10000) * 255; + } write(fp, &f8,sizeof(uint8_t)); } } - } else {//ascii: + } else {//ascii: for (i = 0; i < bars; i++) { int f_ranged = ((float)f[i] / 10000) * ascii_range; @@ -30,7 +42,7 @@ int print_raw_out(int bars, int fp, int is_bin, int bit_format, int ascii_range, //finding size of number-string in byte int size; - if (f_ranged != 0) size = floor (log10 (abs (f_ranged))) + 1; + if (f_ranged != 0) size = floor (log10 (abs (f_ranged))) + 1; else size = 1; char barheight[size]; @@ -42,7 +54,7 @@ int print_raw_out(int bars, int fp, int is_bin, int bit_format, int ascii_range, write(fp, &frame_delim, sizeof(frame_delim)); - } + } return 0; -} +}