855 lines
29 KiB
C
Executable File
855 lines
29 KiB
C
Executable File
/**
|
|
*******************************************************************************
|
|
* @file display.c
|
|
* @brief Editeur De N'ours :
|
|
* @author Edouard DUPIN
|
|
* @date 05/02/2011
|
|
* @par Project
|
|
* Edn tool : hexViewer
|
|
*
|
|
* @par Copyright
|
|
* Copyright 2010 Edouard DUPIN, all right reserved
|
|
*
|
|
* This software is distributed in the hope that it will be useful, but WITHOUT
|
|
* ANY WARRANTY.
|
|
*
|
|
* Licence summary :
|
|
* You can modify and redistribute the sources code and binaries.
|
|
* You can send me the bug-fix
|
|
* You can not earn money with this Software (if the source extract from Edn
|
|
* represent less than 50% of original Sources)
|
|
* Term of the licence in in the file licence.txt.
|
|
*
|
|
*******************************************************************************
|
|
*/
|
|
#include "display.h"
|
|
|
|
extern FILE *filePointer[2];
|
|
extern char fileName[2][2096];
|
|
void showConfiguration(void)
|
|
{
|
|
showType_te myType = getType();
|
|
showTypeSize_te mySize = getTypeSize();
|
|
|
|
printf(GO_TOP);
|
|
printf(COLOR_BOLD_GREEN"----------------------------------------------------------------------------------------------------------------------------\n"COLOR_NORMAL);
|
|
printf(COLOR_GREEN);
|
|
printf("| hewViewer | ofset : %7d octets | ", (int)getOfsetFile());
|
|
printf(" Type (t) : ");
|
|
switch(myType)
|
|
{
|
|
case SHOW_TYPE_HEX:
|
|
printf("Hexadecimal ");
|
|
break;
|
|
case SHOW_TYPE_DECIMAL_SIGNED:
|
|
printf("Decimal Signed ");
|
|
break;
|
|
case SHOW_TYPE_DECIMAL_UNSIGNED:
|
|
printf("Decimal Unsigned");
|
|
break;
|
|
default :
|
|
printf("? ");
|
|
break;
|
|
}
|
|
printf(" | ");
|
|
printf(" Size (s) : ");
|
|
switch(mySize)
|
|
{
|
|
case SHOW_TYPE_SIZE_8:
|
|
printf(" 8 bits ");
|
|
break;
|
|
case SHOW_TYPE_SIZE_16:
|
|
printf(" 16 bits ");
|
|
break;
|
|
case SHOW_TYPE_SIZE_32:
|
|
printf(" 32 bits ");
|
|
break;
|
|
case SHOW_TYPE_SIZE_64:
|
|
printf(" 64 bits ");
|
|
break;
|
|
case SHOW_TYPE_SIZE_128:
|
|
printf("128 bits ");
|
|
break;
|
|
default :
|
|
printf(" ? bits ");
|
|
break;
|
|
}
|
|
printf(COLOR_NORMAL"\n");
|
|
printf(COLOR_BOLD_GREEN"----------------------------------------------------------------------------------------------------------------------------\n"COLOR_NORMAL);
|
|
|
|
printf(COLOR_BOLD_GREEN" \r ");
|
|
switch(myType)
|
|
{
|
|
case SHOW_TYPE_DECIMAL_SIGNED:
|
|
switch(mySize)
|
|
{
|
|
case SHOW_TYPE_SIZE_8:
|
|
printf(" | ");
|
|
|
|
break;
|
|
case SHOW_TYPE_SIZE_16:
|
|
printf(" | ");
|
|
break;
|
|
case SHOW_TYPE_SIZE_32:
|
|
printf(" | ");
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case SHOW_TYPE_DECIMAL_UNSIGNED:
|
|
switch(mySize)
|
|
{
|
|
case SHOW_TYPE_SIZE_8:
|
|
printf(" | ");
|
|
break;
|
|
case SHOW_TYPE_SIZE_16:
|
|
printf(" | ");
|
|
break;
|
|
case SHOW_TYPE_SIZE_32:
|
|
printf(" | ");
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case SHOW_TYPE_HEX:
|
|
default :
|
|
switch(mySize)
|
|
{
|
|
case SHOW_TYPE_SIZE_8:
|
|
printf(" | ");
|
|
break;
|
|
case SHOW_TYPE_SIZE_16:
|
|
printf(" | ");
|
|
break;
|
|
case SHOW_TYPE_SIZE_32:
|
|
printf(" | ");
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
printf("file : %s\r", fileName[1]);
|
|
printf(" | file : %s", fileName[0]);
|
|
printf(COLOR_NORMAL"\n");
|
|
printf(COLOR_BOLD_GREEN"----------------------------------------------------------------------------------------------------------------------------\n"COLOR_NORMAL);
|
|
}
|
|
|
|
|
|
|
|
void showFile(FILE *filePointer ,I32 CurentFilePosition)
|
|
{
|
|
/*
|
|
U16 data[NB_DATA_PER_LINE];
|
|
U32 i;
|
|
U32 j;
|
|
|
|
showConfiguration();
|
|
|
|
// Display the main show
|
|
printf(COLOR_BOLD_YELLOW"Ofset : |");
|
|
for (i = 0; i< NB_DATA_PER_LINE; i++)
|
|
{
|
|
printf(" +%x",(unsigned int)i);
|
|
}
|
|
printf(COLOR_NORMAL"\n");
|
|
// Display the main show
|
|
printf(COLOR_BOLD_YELLOW"------------");
|
|
for (i = 0; i< NB_DATA_PER_LINE; i++)
|
|
{
|
|
printf("------");
|
|
}
|
|
printf(COLOR_NORMAL"\n");
|
|
for (j=0; j < NB_MAX_LINE; j++)
|
|
{
|
|
|
|
if (fread(data, sizeof(I8), NB_DATA_PER_LINE, filePointer) != NB_DATA_PER_LINE)
|
|
{
|
|
printf("No More Data in the file");
|
|
j = NB_MAX_LINE;
|
|
}
|
|
else
|
|
{
|
|
U32 lineNumber = 0;
|
|
lineNumber = (j ) * NB_DATA_PER_LINE + CurentFilePosition;
|
|
printf(COLOR_BOLD_YELLOW"0x%08x | "COLOR_NORMAL, (unsigned int)lineNumber);
|
|
for (i = 0; i< NB_DATA_PER_LINE; i++)
|
|
{
|
|
//printf("%04x ", data[i]);
|
|
printf("%5d ", data[i]);
|
|
}
|
|
}
|
|
printf(COLOR_NORMAL"\n");
|
|
}
|
|
*/
|
|
}
|
|
|
|
void print_U32(U32 data)
|
|
{
|
|
|
|
}
|
|
|
|
|
|
void print_I32(I32 data)
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
void printNoElement(showType_te localType, showTypeSize_te localSize)
|
|
{
|
|
switch(localType)
|
|
{
|
|
case SHOW_TYPE_HEX:
|
|
switch(localSize)
|
|
{
|
|
case SHOW_TYPE_SIZE_8:
|
|
printf(" ");
|
|
break;
|
|
case SHOW_TYPE_SIZE_16:
|
|
printf(" ");
|
|
break;
|
|
case SHOW_TYPE_SIZE_32:
|
|
printf(" ");
|
|
break;
|
|
case SHOW_TYPE_SIZE_64:
|
|
//printf("%08x%08x"COLOR_NORMAL" ", (unsigned int)((U32)(data>>32)), (unsigned int)((U32)data));
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case SHOW_TYPE_DECIMAL_SIGNED:
|
|
switch(localSize)
|
|
{
|
|
case SHOW_TYPE_SIZE_8:
|
|
printf(" ");
|
|
break;
|
|
case SHOW_TYPE_SIZE_16:
|
|
printf(" ");
|
|
break;
|
|
case SHOW_TYPE_SIZE_32:
|
|
printf(" ");
|
|
break;
|
|
case SHOW_TYPE_SIZE_64:
|
|
//printf("%08x%08x"COLOR_NORMAL" ", (unsigned int)((U32)(data>>32)), (unsigned int)((U32)data));
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
break;
|
|
case SHOW_TYPE_DECIMAL_UNSIGNED:
|
|
switch(localSize)
|
|
{
|
|
case SHOW_TYPE_SIZE_8:
|
|
printf(" ");
|
|
break;
|
|
case SHOW_TYPE_SIZE_16:
|
|
printf(" ");
|
|
break;
|
|
case SHOW_TYPE_SIZE_32:
|
|
printf(" ");
|
|
break;
|
|
case SHOW_TYPE_SIZE_64:
|
|
//printf("%08x%08x"COLOR_NORMAL" ", (unsigned int)((U32)(data>>32)), (unsigned int)((U32)data));
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
}
|
|
|
|
void printElement(U64 data, showType_te localType, showTypeSize_te localSize, bool error)
|
|
{
|
|
if (true == error)
|
|
{
|
|
printf(COLOR_BOLD_RED);
|
|
}
|
|
switch(localType)
|
|
{
|
|
case SHOW_TYPE_HEX:
|
|
switch(localSize)
|
|
{
|
|
case SHOW_TYPE_SIZE_8:
|
|
printf("%02x"COLOR_NORMAL" ", (unsigned int)((U8)data));
|
|
break;
|
|
case SHOW_TYPE_SIZE_16:
|
|
printf("%04x"COLOR_NORMAL" ", (unsigned int)((U16)data));
|
|
break;
|
|
case SHOW_TYPE_SIZE_32:
|
|
printf("%08x"COLOR_NORMAL" ", (unsigned int)((U32)data));
|
|
break;
|
|
case SHOW_TYPE_SIZE_64:
|
|
//printf("%08x%08x"COLOR_NORMAL" ", (unsigned int)((U32)(data>>32)), (unsigned int)((U32)data));
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case SHOW_TYPE_DECIMAL_SIGNED:
|
|
switch(localSize)
|
|
{
|
|
case SHOW_TYPE_SIZE_8:
|
|
printf("%4d"COLOR_NORMAL"", ((I8)data));
|
|
break;
|
|
case SHOW_TYPE_SIZE_16:
|
|
printf("%6d"COLOR_NORMAL" ", ((I16)data));
|
|
break;
|
|
case SHOW_TYPE_SIZE_32:
|
|
printf("%9d"COLOR_NORMAL" ", (int)((I32)data));
|
|
break;
|
|
case SHOW_TYPE_SIZE_64:
|
|
//printf("%08x%08x"COLOR_NORMAL" ", (unsigned int)((U32)(data>>32)), (unsigned int)((U32)data));
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
break;
|
|
case SHOW_TYPE_DECIMAL_UNSIGNED:
|
|
switch(localSize)
|
|
{
|
|
case SHOW_TYPE_SIZE_8:
|
|
printf("%3d"COLOR_NORMAL" ", ((U8)data));
|
|
break;
|
|
case SHOW_TYPE_SIZE_16:
|
|
printf("%5d"COLOR_NORMAL" ", ((U16)data));
|
|
break;
|
|
case SHOW_TYPE_SIZE_32:
|
|
printf("%9d"COLOR_NORMAL" ", (unsigned int)((U32)data));
|
|
break;
|
|
case SHOW_TYPE_SIZE_64:
|
|
//printf("%08x%08x"COLOR_NORMAL" ", (unsigned int)((U32)(data>>32)), (unsigned int)((U32)data));
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
}
|
|
typedef union {
|
|
U8 data_8 [16];
|
|
U16 data_16 [8];
|
|
U32 data_32 [4];
|
|
U64 data_64 [2];
|
|
}inputData_tu;
|
|
|
|
void compareFile(FILE *filePointer1, FILE *filePointer2 ,I32 CurentFilePosition)
|
|
{
|
|
inputData_tu data1;
|
|
inputData_tu data2;
|
|
U32 i;
|
|
U32 j;
|
|
|
|
|
|
showConfiguration();
|
|
|
|
showTypeSize_te mySize = getTypeSize();
|
|
showType_te myType = getType();
|
|
|
|
// Display the main show
|
|
printf(COLOR_BOLD_YELLOW"Ofset : | | ");
|
|
switch(myType)
|
|
{
|
|
case SHOW_TYPE_DECIMAL_SIGNED:
|
|
for (i = 0 ; i<2 ; i++ )
|
|
{
|
|
switch(mySize)
|
|
{
|
|
case SHOW_TYPE_SIZE_8:
|
|
for (j=0; j<2 ; j++ ) {
|
|
printf(" +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F | ");
|
|
}
|
|
break;
|
|
case SHOW_TYPE_SIZE_16:
|
|
for (j=0; j<2 ; j++ ) {
|
|
printf(" +0 +2 +4 +6 +8 +A +C +E | ");
|
|
}
|
|
break;
|
|
case SHOW_TYPE_SIZE_32:
|
|
for (j=0; j<2 ; j++ ) {
|
|
printf(" +0 +4 +8 +C | ");
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
if (i == 0)
|
|
{
|
|
printf(COLOR_NORMAL"\n");
|
|
printf(COLOR_BOLD_MAGENTA" | ofset | ");
|
|
}
|
|
}
|
|
break;
|
|
case SHOW_TYPE_DECIMAL_UNSIGNED:
|
|
for (i = 0 ; i<2 ; i++ )
|
|
{
|
|
switch(mySize)
|
|
{
|
|
case SHOW_TYPE_SIZE_8:
|
|
for (j=0; j<2 ; j++ ) {
|
|
printf(" +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F | ");
|
|
}
|
|
break;
|
|
case SHOW_TYPE_SIZE_16:
|
|
for (j=0; j<2 ; j++ ) {
|
|
printf(" +0 +2 +4 +6 +8 +A +C +E | ");
|
|
}
|
|
break;
|
|
case SHOW_TYPE_SIZE_32:
|
|
for (j=0; j<2 ; j++ ) {
|
|
printf(" +0 +4 +8 +C | ");
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
if (i == 0)
|
|
{
|
|
printf(COLOR_NORMAL"\n");
|
|
printf(COLOR_BOLD_MAGENTA" | ofset | ");
|
|
}
|
|
}
|
|
break;
|
|
case SHOW_TYPE_HEX:
|
|
default :
|
|
for (i = 0 ; i<2 ; i++ )
|
|
{
|
|
switch(mySize)
|
|
{
|
|
case SHOW_TYPE_SIZE_8:
|
|
for (j=0; j<2 ; j++ ) {
|
|
printf("+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F | ");
|
|
}
|
|
break;
|
|
case SHOW_TYPE_SIZE_16:
|
|
for (j=0; j<2 ; j++ ) {
|
|
printf(" +0 +2 +4 +6 +8 +A +C +E | ");
|
|
}
|
|
break;
|
|
case SHOW_TYPE_SIZE_32:
|
|
for (j=0; j<2 ; j++ ) {
|
|
printf(" +0 +4 +8 +C | ");
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
if (i == 0)
|
|
{
|
|
printf(COLOR_NORMAL"\n");
|
|
printf(COLOR_BOLD_MAGENTA" | ofset | ");
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
printf(COLOR_NORMAL"\n");
|
|
|
|
|
|
// Display the main show
|
|
printf(COLOR_BOLD_YELLOW"------------");
|
|
for (i = 0; i< 16; i++)
|
|
{
|
|
printf("---");
|
|
}
|
|
printf("---");
|
|
for (i = 0; i< 16; i++)
|
|
{
|
|
printf("---");
|
|
}
|
|
printf(COLOR_NORMAL"\n");
|
|
for (j=0; j < NB_MAX_LINE; j++)
|
|
{
|
|
U32 readFile1 = 0;
|
|
U32 readFile2 = 0;
|
|
U32 lineNumber = 0;
|
|
U32 numberOfCycle;
|
|
// read data in files :
|
|
readFile1 = fread(data1.data_8, sizeof(U8), 16, filePointer1);
|
|
readFile2 = fread(data2.data_8, sizeof(U8), 16, filePointer2);
|
|
// display the line number
|
|
lineNumber = j * (NB_DATA_PER_LINE*4) + CurentFilePosition;
|
|
printf(COLOR_BOLD_YELLOW"0x%08x | "COLOR_NORMAL, (unsigned int)lineNumber);
|
|
switch(mySize)
|
|
{
|
|
case SHOW_TYPE_SIZE_8:
|
|
printf(COLOR_BOLD_MAGENTA"%5d | "COLOR_NORMAL, (int)(lineNumber));
|
|
break;
|
|
case SHOW_TYPE_SIZE_16:
|
|
printf(COLOR_BOLD_MAGENTA"%5d | "COLOR_NORMAL, (int)(lineNumber/2));
|
|
break;
|
|
case SHOW_TYPE_SIZE_32:
|
|
printf(COLOR_BOLD_MAGENTA"%5d | "COLOR_NORMAL, (int)(lineNumber/4));
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
if (readFile1 == 0)
|
|
{
|
|
switch(mySize)
|
|
{
|
|
case SHOW_TYPE_SIZE_8:
|
|
numberOfCycle = 16;
|
|
break;
|
|
case SHOW_TYPE_SIZE_16:
|
|
numberOfCycle = 8;
|
|
break;
|
|
case SHOW_TYPE_SIZE_32:
|
|
numberOfCycle = 4;
|
|
break;
|
|
case SHOW_TYPE_SIZE_64:
|
|
numberOfCycle = 2;
|
|
break;
|
|
default :
|
|
numberOfCycle = 0;
|
|
break;
|
|
}
|
|
//printf("no more data");
|
|
for (i = 0; i< numberOfCycle; i++)
|
|
{
|
|
printNoElement(myType, mySize);
|
|
}
|
|
}
|
|
else // TODO : mettre les octet qui reste a la fin si ce n'est pas complet
|
|
{
|
|
i = 0;
|
|
numberOfCycle = 16;
|
|
while (i< numberOfCycle)
|
|
{
|
|
switch(mySize)
|
|
{
|
|
case SHOW_TYPE_SIZE_8:
|
|
numberOfCycle = 16;
|
|
for (i = 0; i< numberOfCycle; i++)
|
|
{
|
|
if (readFile1 >= (i+1))
|
|
{
|
|
printElement((U64)data1.data_8[i], myType, mySize, (data1.data_8[i] != data2.data_8[i]));
|
|
}
|
|
else
|
|
{
|
|
printNoElement(myType, mySize);
|
|
}
|
|
}
|
|
break;
|
|
case SHOW_TYPE_SIZE_16:
|
|
numberOfCycle = 8;
|
|
for (i = 0; i< numberOfCycle; i++)
|
|
{
|
|
if ((readFile1/2) >= (i+1))
|
|
{
|
|
printElement((U64)data1.data_16[i], myType, mySize, (data1.data_16[i] != data2.data_16[i]));
|
|
}
|
|
else
|
|
{
|
|
printNoElement(myType, mySize);
|
|
}
|
|
}
|
|
break;
|
|
case SHOW_TYPE_SIZE_32:
|
|
numberOfCycle = 4;
|
|
for (i = 0; i< numberOfCycle; i++)
|
|
{
|
|
if ((readFile1/4) >= (i+1))
|
|
{
|
|
printElement((U64)data1.data_32[i], myType, mySize, (data1.data_32[i] != data2.data_32[i]));
|
|
}
|
|
else
|
|
{
|
|
printNoElement(myType, mySize);
|
|
}
|
|
}
|
|
break;
|
|
case SHOW_TYPE_SIZE_64:
|
|
numberOfCycle = 2;
|
|
for (i = 0; i< numberOfCycle; i++)
|
|
{
|
|
if ((readFile1/8) >= (i+1))
|
|
{
|
|
printElement((U64)data1.data_64[i], myType, mySize, (data1.data_8[i] != data2.data_64[i]));
|
|
}
|
|
else
|
|
{
|
|
printNoElement(myType, mySize);
|
|
}
|
|
}
|
|
break;
|
|
default :
|
|
numberOfCycle = 0;
|
|
break;
|
|
}
|
|
i++;
|
|
}
|
|
}
|
|
printf(" | ");
|
|
if (readFile2 == 0)
|
|
{
|
|
switch(mySize)
|
|
{
|
|
case SHOW_TYPE_SIZE_8:
|
|
numberOfCycle = 16;
|
|
break;
|
|
case SHOW_TYPE_SIZE_16:
|
|
numberOfCycle = 8;
|
|
break;
|
|
case SHOW_TYPE_SIZE_32:
|
|
numberOfCycle = 4;
|
|
break;
|
|
case SHOW_TYPE_SIZE_64:
|
|
numberOfCycle = 2;
|
|
break;
|
|
default :
|
|
numberOfCycle = 0;
|
|
break;
|
|
}
|
|
//printf("no more data");
|
|
for (i = 0; i< numberOfCycle; i++)
|
|
{
|
|
printNoElement(myType, mySize);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
i = 0;
|
|
numberOfCycle = 16;
|
|
while (i< numberOfCycle)
|
|
{
|
|
switch(mySize)
|
|
{
|
|
case SHOW_TYPE_SIZE_8:
|
|
numberOfCycle = 16;
|
|
for (i = 0; i< numberOfCycle; i++)
|
|
{
|
|
if (readFile2 >= (i+1))
|
|
{
|
|
printElement((U64)data2.data_8[i], myType, mySize, (data1.data_8[i] != data2.data_8[i]));
|
|
}
|
|
else
|
|
{
|
|
printNoElement(myType, mySize);
|
|
}
|
|
}
|
|
break;
|
|
case SHOW_TYPE_SIZE_16:
|
|
numberOfCycle = 8;
|
|
for (i = 0; i< numberOfCycle; i++)
|
|
{
|
|
if ((readFile2/2) >= (i+1))
|
|
{
|
|
printElement((U64)data2.data_16[i], myType, mySize, (data1.data_16[i] != data2.data_16[i]));
|
|
}
|
|
else
|
|
{
|
|
printNoElement(myType, mySize);
|
|
}
|
|
}
|
|
break;
|
|
case SHOW_TYPE_SIZE_32:
|
|
numberOfCycle = 4;
|
|
for (i = 0; i< numberOfCycle; i++)
|
|
{
|
|
if ((readFile2/4) >= (i+1))
|
|
{
|
|
printElement((U64)data2.data_32[i], myType, mySize, (data1.data_32[i] != data2.data_32[i]));
|
|
}
|
|
else
|
|
{
|
|
printNoElement(myType, mySize);
|
|
}
|
|
}
|
|
break;
|
|
case SHOW_TYPE_SIZE_64:
|
|
numberOfCycle = 2;
|
|
for (i = 0; i< numberOfCycle; i++)
|
|
{
|
|
if ((readFile2/8) >= (i+1))
|
|
{
|
|
printElement((U64)data2.data_64[i], myType, mySize, (data1.data_8[i] != data2.data_64[i]));
|
|
}
|
|
else
|
|
{
|
|
printNoElement(myType, mySize);
|
|
}
|
|
}
|
|
break;
|
|
default :
|
|
numberOfCycle = 0;
|
|
break;
|
|
}
|
|
i++;
|
|
}
|
|
}
|
|
printf(COLOR_NORMAL"\n");
|
|
|
|
/*
|
|
if ( fread(data1.data_8, sizeof(U8), 16, filePointer1) != 16
|
|
|| fread(data2.data_8, sizeof(U8), 16, filePointer2) != 16)
|
|
{
|
|
printf("No More Data in the file \n");
|
|
for (;j < NB_MAX_LINE; j++)
|
|
{
|
|
printf(" \n");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
U32 lineNumber = 0;
|
|
U32 numberOfCycle;
|
|
lineNumber = j * (NB_DATA_PER_LINE*4) + CurentFilePosition;
|
|
printf(COLOR_BOLD_YELLOW"0x%08x | "COLOR_NORMAL, (unsigned int)lineNumber);
|
|
switch(mySize)
|
|
{
|
|
case SHOW_TYPE_SIZE_8:
|
|
printf(COLOR_BOLD_MAGENTA"%5d | "COLOR_NORMAL, (int)(lineNumber));
|
|
break;
|
|
case SHOW_TYPE_SIZE_16:
|
|
printf(COLOR_BOLD_MAGENTA"%5d | "COLOR_NORMAL, (int)(lineNumber/2));
|
|
break;
|
|
case SHOW_TYPE_SIZE_32:
|
|
printf(COLOR_BOLD_MAGENTA"%5d | "COLOR_NORMAL, (int)(lineNumber/4));
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
i = 0;
|
|
numberOfCycle = 16;
|
|
while (i< numberOfCycle)
|
|
{
|
|
switch(mySize)
|
|
{
|
|
case SHOW_TYPE_SIZE_8:
|
|
numberOfCycle = 16;
|
|
for (i = 0; i< numberOfCycle; i++)
|
|
{
|
|
printElement((U64)data1.data_8[i], myType, mySize, (data1.data_8[i] != data2.data_8[i]));
|
|
}
|
|
break;
|
|
case SHOW_TYPE_SIZE_16:
|
|
numberOfCycle = 8;
|
|
for (i = 0; i< numberOfCycle; i++)
|
|
{
|
|
printElement((U64)data1.data_16[i], myType, mySize, (data1.data_16[i] != data2.data_16[i]));
|
|
}
|
|
break;
|
|
case SHOW_TYPE_SIZE_32:
|
|
numberOfCycle = 4;
|
|
for (i = 0; i< numberOfCycle; i++)
|
|
{
|
|
printElement((U64)data1.data_32[i], myType, mySize, (data1.data_32[i] != data2.data_32[i]));
|
|
}
|
|
break;
|
|
case SHOW_TYPE_SIZE_64:
|
|
numberOfCycle = 2;
|
|
for (i = 0; i< numberOfCycle; i++)
|
|
{
|
|
printElement((U64)data1.data_64[i], myType, mySize, (data1.data_8[i] != data2.data_64[i]));
|
|
}
|
|
break;
|
|
default :
|
|
numberOfCycle = 0;
|
|
break;
|
|
}
|
|
i++;
|
|
}
|
|
printf(" | ");
|
|
i = 0;
|
|
numberOfCycle = 16;
|
|
while (i< numberOfCycle)
|
|
{
|
|
switch(mySize)
|
|
{
|
|
case SHOW_TYPE_SIZE_8:
|
|
numberOfCycle = 16;
|
|
for (i = 0; i< numberOfCycle; i++)
|
|
{
|
|
printElement((U64)data2.data_8[i], myType, mySize, (data1.data_8[i] != data2.data_8[i]));
|
|
}
|
|
break;
|
|
case SHOW_TYPE_SIZE_16:
|
|
numberOfCycle = 8;
|
|
for (i = 0; i< numberOfCycle; i++)
|
|
{
|
|
printElement((U64)data2.data_16[i], myType, mySize, (data1.data_16[i] != data2.data_16[i]));
|
|
}
|
|
break;
|
|
case SHOW_TYPE_SIZE_32:
|
|
numberOfCycle = 4;
|
|
for (i = 0; i< numberOfCycle; i++)
|
|
{
|
|
printElement((U64)data2.data_32[i], myType, mySize, (data1.data_32[i] != data2.data_32[i]));
|
|
}
|
|
break;
|
|
case SHOW_TYPE_SIZE_64:
|
|
numberOfCycle = 2;
|
|
for (i = 0; i< numberOfCycle; i++)
|
|
{
|
|
printElement((U64)data2.data_64[i], myType, mySize, (data1.data_8[i] != data2.data_64[i]));
|
|
}
|
|
break;
|
|
default :
|
|
numberOfCycle = 0;
|
|
break;
|
|
}
|
|
i++;
|
|
}
|
|
}
|
|
*/
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Fonction pour le thread du magasin. */
|
|
void * threadDisplay (void * p_data)
|
|
{
|
|
while (1)
|
|
{
|
|
if (getParamModification())
|
|
{
|
|
U32 CurentFilePosition = getOfsetFile();
|
|
fseek ( filePointer[0] , CurentFilePosition , SEEK_SET );
|
|
if (NULL != filePointer[1])
|
|
{
|
|
fseek ( filePointer[1] , CurentFilePosition , SEEK_SET );
|
|
}
|
|
|
|
|
|
if ( NULL != filePointer[0]
|
|
&& NULL == filePointer[1] )
|
|
{
|
|
showFile(filePointer[0],CurentFilePosition);
|
|
}
|
|
else if ( NULL != filePointer[0]
|
|
&& NULL != filePointer[1] )
|
|
{
|
|
compareFile(filePointer[0],filePointer[1], CurentFilePosition);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
usleep(10000);
|
|
}
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
|
|
|
|
|