diff --git a/C/C5 and C6 Adidas/build/main b/C/C5 and C6 Adidas/build/main new file mode 100755 index 0000000..4a495f4 Binary files /dev/null and b/C/C5 and C6 Adidas/build/main differ diff --git a/C/C5 and C6 Adidas/product/channel_main.c b/C/C5 and C6 Adidas/product/channel_main.c index e67d7bf..d9eb0e6 100644 --- a/C/C5 and C6 Adidas/product/channel_main.c +++ b/C/C5 and C6 Adidas/product/channel_main.c @@ -1,46 +1,31 @@ #include "channel.h" #include -#include +#include int channel_main(int argc, char* argv[]) { - bool running = true; FILE *input_file = fopen(argv[2], "rb"); - if (input_file == NULL) { + if (!input_file) { fprintf(stderr, "Error opening input file: %s\n", argv[2]); return 1; } FILE *output_file = fopen(argv[3], "wb"); - if (output_file == NULL) { + if (!output_file) { fprintf(stderr, "Error opening output file: %s\n", argv[3]); fclose(input_file); return 1; } - while (running){ - // Read data - unsigned char buffer[1024]; - size_t bytes_read = fread(buffer, 1, sizeof(buffer), input_file); - - if (bytes_read == 0) { - if (feof(input_file)) { - running = false; // eof reached - } else { - fprintf(stderr, "Error reading from input file\n"); - fclose(input_file); - fclose(output_file); - return 1; - } + uint8_t buffer[1024], processed[1024]; + size_t bytes_read; + while ((bytes_read = fread(buffer, 1, sizeof(buffer), input_file)) > 0) { + for (size_t i = 0; i < bytes_read; i++) { + processed[i] = channel_change_one_random_bit(buffer[i]); } - - // Channel data - unsigned char processed_data[1024]; - size_t processed_size = process_channel(buffer, bytes_read, processed_data); - - // Write data - fwrite(processed_data, 1, processed_size, output_file); + fwrite(processed, 1, bytes_read, output_file); } fclose(input_file); fclose(output_file); + printf("Channel completed successfully.\n"); return 0; } diff --git a/C/C5 and C6 Adidas/product/decode_main.c b/C/C5 and C6 Adidas/product/decode_main.c index 063c53a..9f554b3 100644 --- a/C/C5 and C6 Adidas/product/decode_main.c +++ b/C/C5 and C6 Adidas/product/decode_main.c @@ -1,51 +1,45 @@ #include "decode.h" #include -#include +#include int decode_main(int argc, char* argv[]) { - bool decoding = true; FILE *input_file = fopen(argv[2], "rb"); - if (input_file == NULL) { + if (!input_file) { fprintf(stderr, "Error opening input file: %s\n", argv[2]); return 1; } FILE *output_file = fopen(argv[3], "wb"); - if (output_file == NULL) { + if (!output_file) { fprintf(stderr, "Error opening output file: %s\n", argv[3]); fclose(input_file); return 1; } - while (decoding) - { - // Read data - unsigned char data[1024]; - unsigned char buffer_High[sizeof(data)/2]; - unsigned char buffer_Low[sizeof(data)/2]; - size_t bytes_read = fread(&data, 1, sizeof(data), input_file); - for (size_t i = 0; i < bytes_read; i++) { - buffer_High[i] = data[i + (sizeof(data)/2)]; - buffer_Low[i] = data[i]; - } - - if (bytes_read == 0) { - if (feof(input_file)) { - decoding = false; // eof reached - } else { - fprintf(stderr, "Error reading from input file\n"); + uint8_t buffer[2048], decoded[1024]; + size_t bytes_read; + // // b_r + while ((bytes_read = fread(buffer, 1, sizeof(buffer), input_file)) > 0) { + if (bytes_read % 2 != 0) { //odd check + size_t extra = fread(buffer + bytes_read, 1, 1, input_file); + if (extra == 1) { // successfully read + bytes_read++; + } else { // error reading the extra byte fclose(input_file); fclose(output_file); return 1; } } - // Decode data - unsigned char decoded_data[sizeof(data)]; - decoded_data[sizeof(data)] = decode_combine_nibbles(*buffer_High, *buffer_Low); - - // Write data - fwrite(decoded_data, 1, bytes_read, output_file); + size_t decoded_size = bytes_read / 2; + for (size_t i = 0; i < decoded_size; i++) { + decoded[i] = decode_combine_nibbles(buffer[i], buffer[i + decoded_size]); + } + fwrite(decoded, 1, decoded_size, output_file); } + + fclose(input_file); + fclose(output_file); + printf("Decoding completed successfully.\n"); return 0; } diff --git a/C/C5 and C6 Adidas/product/encode_main.c b/C/C5 and C6 Adidas/product/encode_main.c index 38db00a..9205a24 100644 --- a/C/C5 and C6 Adidas/product/encode_main.c +++ b/C/C5 and C6 Adidas/product/encode_main.c @@ -1,46 +1,33 @@ #include "encode.h" -#include #include +#include int encode_main(int argc, char* argv[]) { - bool encoding = true; FILE *input_file = fopen(argv[2], "rb"); - if (input_file == NULL) { + if (!input_file) { fprintf(stderr, "Error opening input file: %s\n", argv[2]); return 1; } FILE *output_file = fopen(argv[3], "wb"); - if (output_file == NULL) { + if (!output_file) { fprintf(stderr, "Error opening output file: %s\n", argv[3]); fclose(input_file); return 1; } - while (encoding) - { - // Read data - unsigned char buffer[512]; - size_t bytes_read = fread(buffer, 1, sizeof(buffer), input_file); - if (bytes_read == 0) { - if (feof(input_file)) { - encoding = false; // eof reached - } else { - fprintf(stderr, "Error reading from input file\n"); - fclose(input_file); - fclose(output_file); - return 1; - } + uint8_t buffer[1024], high[1024], low[1024]; + size_t bytes_read; + while ((bytes_read = fread(buffer, 1, sizeof(buffer), input_file)) > 0) { + for (size_t i = 0; i < bytes_read; i++) { + encode_value(buffer[i], &high[i], &low[i]); } - - // Encode data - unsigned char encoded_data_high[sizeof(buffer)]; - unsigned char encoded_data_low[sizeof(buffer)]; - encode_value(buffer, encoded_data_high, encoded_data_low); - - // Write data - fwrite(encoded_data_high, 1, bytes_read, output_file); - fwrite(encoded_data_low, 1, bytes_read, output_file); + fwrite(high, 1, bytes_read, output_file); + fwrite(low, 1, bytes_read, output_file); } + + fclose(input_file); + fclose(output_file); + printf("Encoding completed successfully.\n"); return 0; }