/******************************************************************************
 *
 *  Copyright (C) 1999-2012 Broadcom Corporation
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at:
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 *
 ******************************************************************************/

#ifndef SRVC_DIS_INT_H
#define SRVC_DIS_INT_H

#include "bt_target.h"
#include "gatt_api.h"
#include "srvc_api.h"
#include "srvc_eng_int.h"

#ifdef __cplusplus
extern "C" {
#endif

#define DIS_MAX_CHAR_NUM            9

typedef struct
{
    uint16_t    uuid;
    uint16_t    handle;
}tDIS_DB_ENTRY;

#define DIS_SYSTEM_ID_SIZE      8
#define DIS_PNP_ID_SIZE         7

typedef struct
{
    tDIS_DB_ENTRY           dis_attr[DIS_MAX_CHAR_NUM];
    tDIS_VALUE              dis_value;

    tDIS_READ_CBACK         *p_read_dis_cback;

    uint16_t                service_handle;
    uint16_t                max_handle;

    bool                    enabled;

    uint8_t                 dis_read_uuid_idx;

    tDIS_ATTR_MASK          request_mask;
}tDIS_CB;

/* Global GATT data */
extern tDIS_CB dis_cb;

extern bool    dis_valid_handle_range(uint16_t handle);
extern uint8_t dis_read_attr_value (uint8_t clcb_idx, uint16_t handle, tGATT_VALUE *p_value,
                           bool    is_long, tGATT_STATUS *p_status);
extern uint8_t dis_write_attr_value(tGATT_WRITE_REQ * p_data, tGATT_STATUS *p_status);

extern void dis_c_cmpl_cback (tSRVC_CLCB *p_clcb, tGATTC_OPTYPE op,
                                    tGATT_STATUS status, tGATT_CL_COMPLETE *p_data);

#ifdef __cplusplus
}
#endif
#endif
