#include "Components.h"

uint8_t OTA_Update_Count_Open = 0;
uint8_t OTA_Update_Count_Close = 0;
uint8_t Update_Graphic_Count = 0;
uint8_t GetBlueToothVaild = 0;
uint8_t GetPhoneBookVaild = 0;
uint8_t TextInit = 0;
uint8_t SetUUIDTimes = 0;
_PICID_Struct PicObj;
_QRCODE_RECT QRCode_Rect;
const uint8_t HJBlueToothName[9]= {"HJ750"};
uint8_t UUIDConfigBuf[22] = {"800082024071700000001"};
// 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00


void TextService(void);

void BlueToothService()
{
    // SetUUIDTimes++;
    if(Get_Dis_Bluetooth_Open_Close() == 0)
    {
        if(GetBlueToothVaild == 0)
        {
            SetBluetoothTurnXX(1);
            GetBlueToothVaild = 1;
        }
    }
    else
    {
        if(GetBlueToothVaild == 1)
        {
            SetBluetoothTurnXX(0);
            GetBlueToothVaild = 0;
        }
    }

    if ((BlueToothPhoneData.BlueToothSignalSate == BlueTooth_Connection)&&(GetPhoneBookVaild == 0))
    {
        PackedTransfer_GetPhoneBookCmd();
        GetPhoneBookVaild = 1;
    }
    else if (BlueToothPhoneData.BlueToothSignalSate == BlueTooth_DisConnect)
    {
        GetPhoneBookVaild = 0;
    }

    if((BlueToothPhoneData.BlueToothPhoneSate == Phone_Outgoing) || (BlueToothPhoneData.BlueToothPhoneSate == Phone_Incoming) || (BlueToothPhoneData.BlueToothPhoneSate == Phone_Talking))
    {
        Menu_Change_Branch_To_Item(MENU_BRANCH_ANIMATION,MENU_ITEM_MAIN_ITEM);
    }
    SetUUIDData((char *)UUIDConfigBuf, 22);
    if (OTA_Update_Flag == 1) 
    {
        QRCode_Rect.x = 650;
        QRCode_Rect.y = 210;
    }
    else 
    {
        QRCode_Rect.x = QRCode_X;
        QRCode_Rect.y = QRCode_Y;
    }
    // QRCode_Rect.x = 650;
    // QRCode_Rect.y = 210;
    QRCode_Rect.height = 240;
    QRCode_Rect.width = 240;
    SetScreenType(QRCode_TYPE, QRCode_Rect);
    if(Menu_Get_Current_Cursor_Information() != MENU_ITEM_FAULT_INFORMATION)
    {
        OTA_Update_Flag = 0;
    }
    if(OTA_Update_Flag == 1)
    {
        if(OTA_Update_Count_Open < 5)
        {
            SetUpdateCtrl(1,QRCode_Rect);
            OTA_Update_Count_Open++;
        }  
        OTA_Update_Count_Close = 0;
    }
    else
    {
        if(OTA_Update_Count_Close < 5)
        {
            SetUpdateCtrl(0,QRCode_Rect);
            OTA_Update_Count_Close++;
        } 
        OTA_Update_Count_Open=0;
    }
    SetTaskbarHeight(150);
    SetBlueToothName((uint8_t *)HJBlueToothName, sizeof(HJBlueToothName));
    TextService();
    
    // BlueConnectStatus = GetBlueToothPowerSTATE();
    // juasfha = BlueToothPhoneData.BlueToothPhoneSate;
    // juasfha = BlueToothPhoneData.PhoneBookTotalCount;
    // for(i=0;i<20;i++)
    // {
    //     sjhja[i] = BlueToothPhoneData.PhoneNumber[i];
    // }
    // for(i=0;i<100;i++)
    // {
    //     PhoneName[i] = BlueToothPhoneData.BlueToothPhoneName[i];
    // }
    
    // _QRCODE_RECT QRCode_Rect;
    // QRCode_Rect.x = QRCode_X;
    // QRCode_Rect.y = QRCode_Y;
    // QRCode_Rect.height = QRCode_HEIGHT;
    // QRCode_Rect.width = QRCode_WIDTH;
    // SetScreenType(QRCode_TYPE, QRCode_Rect);
}

TEXT_STRUCT TextPara[TEXT_NUM_TOTAL] = 
{
    {TEXT_NUM_BLUETOOTH_NAME,           0x4005, 0},
    {TEXT_NUM_BLUETOOTH_PHONENAME,      0x4007, 0},
    {TEXT_NUM_PHONE_NUMBER,             0x4009, 0},
    {TEXT_NUM_PHONE_NUMBER_TOTAL,       0x4011, 0},
    {TEXT_NUM_INFORMATION_MCUVER,       0x4012, 0},
    {TEXT_NUM_INFORMATION_SWVERSION,    0x4013, 0},
    {TEXT_NUM_INFORMATION_HW,           0x4014, 0}, //23F 23E
    {TEXT_NUM_INFORMATION_OS,           0x4015, 0},
    {TEXT_NUM_INFORMATION_HMI,          0x4016, 0},
    {TEXT_NUM_ROAD_NAME,                0x4022, 0},

};

uint8_t PhoneNumber[40];
uint8_t LastPhoneNumber[20];
uint8_t LastBlueToothPhoneName[100];
uint8_t CurBlueToothPhoneName[100];

void TextService(void) 
{
    if(TextInit == 0)
    {
        TextInit = 1;
        memset(PhoneNumber, 0, sizeof(PhoneNumber));
        memset(LastPhoneNumber, 0, sizeof(LastPhoneNumber));
        memset(LastBlueToothPhoneName, 0, sizeof(LastBlueToothPhoneName));
        memset(CurBlueToothPhoneName, 0, sizeof(CurBlueToothPhoneName));
    }
    if (BlueToothPhoneData.BlueToothSignalSate == BlueTooth_Connection) 
    {
        if ((BlueToothPhoneData.BlueToothPhoneSate == Phone_Outgoing) || (BlueToothPhoneData.BlueToothPhoneSate == Phone_Incoming) || (BlueToothPhoneData.BlueToothPhoneSate == Phone_Talking)) {
            if ((memcmp(LastBlueToothPhoneName, BlueToothPhoneData.BlueToothPhoneName, sizeof(LastBlueToothPhoneName))) != 0) 
            {
                for (uint8_t i = 0; i < (sizeof(BlueToothPhoneData.BlueToothPhoneName) / 2); i++) 
                {
                    CurBlueToothPhoneName[i * 2] = BlueToothPhoneData.BlueToothPhoneName[(i * 2) + 1];
                    CurBlueToothPhoneName[(i * 2) + 1] = BlueToothPhoneData.BlueToothPhoneName[i * 2];
                }
                memcpy(LastBlueToothPhoneName, BlueToothPhoneData.BlueToothPhoneName, (sizeof(BlueToothPhoneData.BlueToothPhoneName) / sizeof(BlueToothPhoneData.BlueToothPhoneName[0])));
                TextPara[TEXT_NUM_BLUETOOTH_PHONENAME].Vaild = 0X01;
            }
            if ((memcmp(LastPhoneNumber, BlueToothPhoneData.PhoneNumber, sizeof(LastPhoneNumber))) != 0) 
            {
                for (uint8_t i = 0; i < sizeof(BlueToothPhoneData.PhoneNumber); i++) 
                {
                    PhoneNumber[i * 2] = (uint8_t)(BlueToothPhoneData.PhoneNumber[i]);
                    PhoneNumber[(i * 2) + 1] = 0X00;
                }
                memcpy(LastPhoneNumber, BlueToothPhoneData.PhoneNumber, (sizeof(BlueToothPhoneData.PhoneNumber) / sizeof(BlueToothPhoneData.PhoneNumber[0])));
                TextPara[TEXT_NUM_PHONE_NUMBER].Vaild = 0X01;
            }
        }
    }
}