/**************************************************************************************************
  Filename:       ppsp_serv.h
  Revised:
  Revision:

  Description:    This file contains the Simple GATT profile definitions and
                  prototypes.

 **************************************************************************************************/

#ifndef PPSP_SERV_H
#define PPSP_SERV_H

#ifdef __cplusplus
extern "C"
{
#endif

/*********************************************************************
 * INCLUDES
 */

/*********************************************************************
 * CONSTANTS
 */

// Profile Parameters
#define PPSP_SERV_CFGS_CHAR_FFD4_INDX       0   // RW uint8 - Profile Characteristic 1 value
#define PPSP_SERV_CFGS_CHAR_FFD5_INDX       1   // RW uint8 - Profile Characteristic 2 value
#define PPSP_SERV_CFGS_CHAR_FFD6_INDX       2   // RW uint8 - Profile Characteristic 3 value
#define PPSP_SERV_CFGS_CHAR_FFD7_INDX       3   // RW uint8 - Profile Characteristic 4 value
#define PPSP_SERV_CFGS_CHAR_FFD8_INDX       4   // RW uint8 - Profile Characteristic 5 value

// Simple Profile Service UUID
#define PPSP_SERV_CFGS_SERV_FEB3_UUID       0xFEB3

// Key Pressed UUID
#define PPSP_SERV_CFGS_CHAR_FED4_UUID       0xFED4
#define PPSP_SERV_CFGS_CHAR_FED5_UUID       0xFED5
#define PPSP_SERV_CFGS_CHAR_FED6_UUID       0xFED6
#define PPSP_SERV_CFGS_CHAR_FED7_UUID       0xFED7
#define PPSP_SERV_CFGS_CHAR_FED8_UUID       0xFED8

// Simple Keys Profile Services bit fields
#define PPSP_SERV_CFGS_SERV_FEB3_MASK       0x00000001

// Data Length of Characteristic 5 in bytes
#define PPSP_DATA_LEN						520
#define PPSP_SERV_CFGS_CHAR_FED4_DLEN       520
#define PPSP_SERV_CFGS_CHAR_FED5_DLEN       520
#define PPSP_SERV_CFGS_CHAR_FED6_DLEN       520
#define PPSP_SERV_CFGS_CHAR_FED7_DLEN       520
#define PPSP_SERV_CFGS_CHAR_FED8_DLEN       520

/*********************************************************************
 * TYPEDEFS
 */
#include "bcomdef.h"

/*********************************************************************
 * MACROS
 */

/*********************************************************************
 * Profile Callbacks
 */

// Callback when a characteristic value has changed
typedef void (*ppsp_serv_hdlr_char_upda_t)( uint8 para, uint16 coun );

typedef struct {
  ppsp_serv_hdlr_char_upda_t char_upda;  // Called when characteristic value changes
} ppsp_serv_appl_CBs_t;



/*********************************************************************
 * API FUNCTIONS
 */


/*
 * SimpleProfile_AddService- Initializes the Simple GATT Profile service by registering
 *          GATT attributes with the GATT server.
 *
 * @param   services - services to add. This is a bit map and can
 *                     contain more than one service.
 */

extern bStatus_t ppsp_serv_add_serv(uint32 serv);

/*
 * SimpleProfile_RegisterAppCBs - Registers the application callback function.
 *                    Only call this function once.
 *
 *    appCallbacks - pointer to application callbacks.
 */
extern bStatus_t ppsp_serv_reg_appl( ppsp_serv_appl_CBs_t *appl_hdlr );

/*
 * SimpleProfile_SetParameter - Set a Simple GATT Profile parameter.
 *
 *    param - Profile parameter ID
 *    len - length of data to right
 *    value - pointer to data to write.  This is dependent on
 *          the parameter ID and WILL be cast to the appropriate
 *          data type (example: data type of uint16 will be cast to
 *          uint16 pointer).
 */
extern bStatus_t ppsp_serv_set_para( uint8 para, uint8 leng, void *valu );

/*
 * SimpleProfile_GetParameter - Get a Simple GATT Profile parameter.
 *
 *    param - Profile parameter ID
 *    value - pointer to data to write.  This is dependent on
 *          the parameter ID and WILL be cast to the appropriate
 *          data type (example: data type of uint16 will be cast to
 *          uint16 pointer).
 */
extern bStatus_t ppsp_serv_get_para( uint8 para, void *valu, uint16 leng );

// extern bStatus_t simpleProfile_Notify( uint8 param, uint8 len, void *value );
/*********************************************************************
*********************************************************************/

#ifdef __cplusplus
}
#endif

#endif /* SIMPLEGATTPROFILE_H */