#/bin/bash
ProjectPath="/opt/ti-processor-sdk-linux-am335x-evm-04.02.00.09"
defineFilePath="$ProjectPath/EVSE/Projects/define.h"
workPath="$ProjectPath/EVSE/Projects/DD360Audi/Apps/Define"
filename="$workPath/define.h";
copyFile="$workPath/define.c"
frontKey="/*";
afterKey="*/";

Currency="char Currency\[54\]\[3\]"

FaultCode="char FaultStatusCode\[40\]\[6\]";

AlarmCode="char AlarmStatusCode\[128\]\[6\]";

InfoCode="char InfoStatusCode\[384\]\[6\]";

finalString="#endif // DEFINE_H_";

count=512;

rm -rf $workPath/define.h;
rm -rf $workPath/define.c;
cp -r $defineFilePath $workPath;

# Currency String
line=$(grep -n "$Currency" $filename | cut -d ":" -f 1);
echo $line;

line_n=$(sed -n "$(($line-1))"p $filename);
if [ "$line_n" != "/*" ]
then
rm -rf define.c
echo "#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>

#include \"define.h\"

//------------------------------------------------------------------------------" >> $copyFile

addKey=$line"i $frontKey"
sed -i "$addKey" $filename

line=$(grep -n "$Currency" $filename | cut -d ":" -f 1);
while [ $line -le $(($line+$count)) ]
do
line_n=$(sed -n "$line"p $filename);
#echo $line_n
if [ "$line_n" == "};" ]
then
    echo $line_n >> $copyFile;
    echo -e >> $copyFile;
    line=$line"a $afterKey";
    sed -i "$line" $filename;
    break;
else
    line=$(($line+1));
    echo $line_n >> $copyFile;
fi
done
fi

#fault Status code
line=$(grep -n "$FaultCode" $filename | cut -d ":" -f 1);
echo $line;

line_n=$(sed -n "$(($line-1))"p $filename);
if [ "$line_n" != "/*" ]
then
addKey=$line"i $frontKey"
sed -i "$addKey" $filename

line=$(grep -n "$FaultCode" $filename | cut -d ":" -f 1);
while [ $line -le $(($line+$count)) ]
do
line_n=$(sed -n "$line"p $filename);
#echo $line_n
if [ "$line_n" == "};" ]
then
    echo $line_n >> $copyFile;
    echo -e >> $copyFile;
    line=$line"a $afterKey";
    sed -i "$line" $filename;
    break;
else
    line=$(($line+1));
    echo $line_n >> $copyFile;
fi
done
fi

#Alarm Status Code
line=$(grep -n "$AlarmCode" $filename | cut -d ":" -f 1);
echo $line;

line_n=$(sed -n "$(($line-1))"p $filename);
if [ "$line_n" != "/*" ]
then
addKey=$line"i $frontKey";
sed -i "$addKey" $filename;

line=$(grep -n "$AlarmCode" $filename | cut -d ":" -f 1);
while [ $line -le $(($line+$count)) ]
do
line_n=$(sed -n "$line"p $filename);
#echo $line_n
if [ "$line_n" == "};" ]
then
    echo $line_n >> $copyFile;
    echo -e >> $copyFile;
    line=$line"a $afterKey";
    sed -i "$line" $filename;
    break;
else
    line=$(($line+1));
    echo $line_n >> $copyFile;
fi
done
fi

#Info Status Code
line=$(grep -n "$InfoCode" $filename | cut -d ":" -f 1);
echo $line;

line_n=$(sed -n "$(($line-1))"p $filename);
if [ "$line_n" != "/*" ]
then
addKey=$line"i $frontKey"
sed -i "$addKey" $filename

line=$(grep -n "$InfoCode" $filename | cut -d ":" -f 1);
while [ $line -le $(($line+$count)) ]
do
line_n=$(sed -n "$line"p $filename);
#echo $line_n
if [ "$line_n" == "};" ]
then
    echo $line_n >> $copyFile;
    echo -e >> $copyFile;
    line=$line"a $afterKey";
    sed -i "$line" $filename;
    break;
else
    line=$(($line+1));
    echo $line_n >> $copyFile;
fi
done
echo "
//------------------------------------------------------------------------------
char *GetCurrency(uint8_t index)
{
    return &Currency[index][0];
}

char *GetFaultStatusCode(uint8_t index)
{
    return &FaultStatusCode[index][0];
}

char *GetAlarmStatusCode(uint8_t index)
{
    return &AlarmStatusCode[index][0];
}

char *GetInfoStatusCode(uint16_t index)
{
    return &InfoStatusCode[index][0];
}" >> $copyFile;
fi

line=$(grep -n "$finalString" $filename | cut -d ":" -f 1);
echo $line;

line_n=$(sed -n "$(($line-1))"p $filename);
if [ "$line_n" != "char *GetInfoCode(uint16_t index);" ]
then
sed -i "$line"d $filename

echo "
//------------------------------------------------------------------------------
char *GetCurrency(uint8_t index);
char *GetFaultStatusCode(uint8_t index);
char *GetAlarmStatusCode(uint8_t index);
char *GetInfoStatusCode(uint16_t index);
#endif // DEFINE_H_" >> $filename;
fi