app_BT_User.c 2.14 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45

#include "app_BT_User.h"
#include <stdio.h> 
#include "bt_app_hf.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "bt_app_main.h"
extern esp_bd_addr_t peer_addr;

#define TAG "APP_BLE_USER"

BT_User_Control_Struct BT_User;

#define BT_ReConn_T 3000

void BT_User_Init(void )
{
    BT_User.BT_Sts = BT_Idle;
    BT_User.Call_Sts = Call_Idle;
    BT_User.ReconnTime = BT_ReConn_T - 500;
    BT_User.HF_Ctrl = HF_Idle;

}

void BT_Connect_Event_Pro(void )
{
    BT_User.BT_Sts = BT_Conn;
    BT_User.Call_Sts = Call_Idle;
    BT_User.ReconnTime = BT_ReConn_T - 500;
    BT_User.HF_Ctrl = HF_Idle;
    printf("TB CONN\r\n");
}


void BT_DisConnect_Event_Pro(void )
{
    BT_User.BT_Sts = BT_Idle;
    BT_User.Call_Sts = Call_Idle;
    BT_User.ReconnTime = BT_ReConn_T - 500;
    BT_User.HF_Ctrl = HF_Idle;
    printf("TB DISCONN\r\n");
}

void BT_User_Process(void )
{
时昊's avatar
时昊 committed
46
    switch(BT_User.Call_Sts)//电话状态
47
    {
时昊's avatar
时昊 committed
48
        case Call_OutCalling://打电话中
49 50 51
        {
            if(BT_User.HF_Ctrl == HF_Reject)
            {
时昊's avatar
时昊 committed
52
                hf_reject_handler();//挂断
53 54 55
            }
            break;
        }
时昊's avatar
时昊 committed
56
        case Call_IncomeCalling://响铃时
57 58 59
        {
            if(BT_User.HF_Ctrl == HF_Reject)
            {
时昊's avatar
时昊 committed
60
                hf_reject_handler();//挂断
61 62 63
            }
            else if(BT_User.HF_Ctrl == HF_Answer)
            {
时昊's avatar
时昊 committed
64
                hf_answer_handler();//接听
65 66 67
            }
            break;
        }
时昊's avatar
时昊 committed
68
        case Call_InProcess://接电话中
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
        {
            if(BT_User.HF_Ctrl == HF_Reject)
            {
                hf_reject_handler();
            }

            break;
        }
        case Call_Idle:
        {
            break;
        }
    }

    BT_User.HF_Ctrl = HF_Idle;


    if(BT_User.BT_Sts == BT_Idle)
    {
        BT_User.ReconnTime++;
        if(BT_User.ReconnTime >= BT_ReConn_T)
        {
            printf("Connect Start.................\n");
            if(app_BT_Get_BondDev() == 1)
            {
                esp_hf_client_connect(peer_addr);
            }
            
            printf("Connect Over\n");

            BT_User.ReconnTime = 0;
        }
    }
    else
    {
    }
}