dcl_pxs.h 11.2 KB
/*****************************************************************************
*  Copyright Statement:
*  --------------------
*  This software is protected by Copyright and the information contained
*  herein is confidential. The software may not be copied and the information
*  contained herein may not be used or disclosed except with the written
*  permission of MediaTek Inc. (C) 2001
*
*****************************************************************************/

/*****************************************************************************
 *
 * Filename:
 * ---------
 *   dcl_pxs.h
 *
 * Project:
 * --------
 *   Maui
 *
 * Description:
 * ------------
 *   Header file of DCL (Driver Common Layer) for proximity sensor.
 *
 * Author:
 * -------
 * -------
 *
 *============================================================================
 *             HISTORY
 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
 *------------------------------------------------------------------------------
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 *------------------------------------------------------------------------------
 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
 *============================================================================
 ****************************************************************************/

#ifdef DCL_DEFINITION_STRUCT
#ifndef __DCL_PXS_H_STRUCT__
#define __DCL_PXS_H_STRUCT__

/*******************************************************************************
 * DCL_OPTIONS for PXS
 *******************************************************************************/
#define PXS_OPTIONS

/*******************************************************************************
 * DCL_CONFIGURE_T for PXS
 *******************************************************************************/
typedef void (*PFN_DCL_PXS_NOTIFY_CALLBACK)(DCL_BOOL fgObjectDetected);

typedef enum
{
	PXS_COMPARE_WINDOW,  // Comparing window of PXS thresold algorithm
	PXS_HILO_THRESHOLD,  // HIGH/LOW thresold methodology
	PXS_ADV_ALGO_MAX
} PXS_ADV_ALGO_ENUM;

typedef struct
{
   DCL_BOOL fgNotify;
   PFN_DCL_PXS_NOTIFY_CALLBACK NotifyCallback;
} PXS_CONFIG_T, PXS_CTRL_CONFIG_T;

#define PXS_CONFIGS \
   PXS_CONFIG_T rPXSConfig;

/*******************************************************************************
 * DCL_EVENT for PXS
 *******************************************************************************/
#define PXS_EVENTS

/*******************************************************************************
 * DCL_CTRL_CMD for PXS
 *******************************************************************************/
#define PXS_CMDS \
   PXS_CMD_ENABLE, \
   PXS_CMD_GET_RAW_DATA, \
   PXS_CMD_EM_READ, \
   PXS_CMD_EM_WRITE, \
   PXS_CMD_GET_ADV_ALGO_WINDOWING, \
   PXS_CMD_GET_ADV_ALGO_THRESHOLD, \
   PXS_CMD_MODIFY_CONFIG, \
   PXS_CMD_GET_SENSITIVITY_LEVEL_NUM, \
   PXS_CMD_SET_SENSITIVITY_LEVEL, \
   PXS_CMD_GET_DETECT_STATUS, \
   PXS_CMD_SET_DEBOUNCE, \


/*******************************************************************************
 * DCL_CTRL_DATA_T: Define the Control data structure for each module's command
 *******************************************************************************/


typedef enum
{
	PXS_HW_CMD_POWER_ENABLE,
	PXS_HW_CMD_GET_SENSITIVITY_LEVEL_NUM,
	PXS_HW_CMD_GET_SENSITIVITY_TABLE,
}PXS_HW_CMD_ENUM;

/* For PXS_CMD_ENABLE command. */
typedef struct
{
   DCL_BOOL fgEnable;
}PXS_CTRL_ENABLE_T;

/* For PXS_CMD_GET_RAW_DATA command. */
typedef struct
{
   DCL_UINT16 u2Data;
}PXS_CTRL_RAW_DATA_T;

/* For PXS_CMD_EM_ADV_ALGO_WINDOWING command. */
//typedef struct
//{
//   DCL_UINT16 u2Count;
//}PXS_CTRL_EM_WINDOWING_T;

/* For PXS_CMD_EM_ADV_ALGO_THRESHOLD command. */
//typedef struct
//{
//   DCL_UINT16 u2HiThreshold;
//   DCL_UINT16 u2LoThreshold;
//}PXS_CTRL_EM_THRESHOLD_T;

/* For PXS_CMD_EM_READ, PXS_CMD_EM_WRITE command. */
typedef struct
{
   DCL_UINT32 u4P1;
   DCL_UINT32 u4P2;
   DCL_UINT32 u4P3;
   DCL_UINT32 u4P4;
   DCL_UINT32 u4P5;
   DCL_UINT32 u4P6;
   DCL_UINT32 u4P7;
   DCL_UINT32 u4P8;
   DCL_UINT32 u4PollingPeriod;   // EM polling period, unit by ms
}PXS_CTRL_EM_PARAM_T;

/* For PXS_CMD_GET_ADV_ALGO_WINDOWING command. */
typedef struct
{
   DCL_UINT16 u2Count;
}PXS_CTRL_GET_ADV_ALGO_WINDOWING_T;

/* For PXS_CMD_GET_ADV_ALGO_THRESHOLD command. */
typedef struct
{
   DCL_UINT16 u2HiThreshold;
   DCL_UINT16 u2LoThreshold;
}PXS_CTRL_GET_ADV_ALGO_THRESHOLD_T;

/* For PXS_CMD_GET_SENSITIVITY_LEVEL_NUM command. */
typedef struct
{
   DCL_UINT16 u2LevelNum;
}PXS_CTRL_GET_SENSITIVITY_LEVEL_NUM_T;

/* For PXS_CMD_SET_SENSITIVITY_LEVEL command. */
typedef struct
{
   DCL_UINT16 u2Level;
}PXS_CTRL_SET_SENSITIVITY_LEVEL_T;

/* For PXS_CMD_GET_DETECT_STATUS command. */
typedef struct
{
   DCL_BOOL fgDetected;
}PXS_CTRL_GET_DETECT_STATUS_T;


/* For PXS_CMD_SET_DEBOUNCE command. */
typedef struct
{
	DCL_UINT32 u4TopAreaDebounce; //ms
	DCL_UINT32 u4LargerAreaDebounce; //ms
}PXS_CTRL_SET_DEBOUNCE_T;

#define PXS_CTRLS \
   PXS_CTRL_ENABLE_T   rPXSEnable; \
   PXS_CTRL_RAW_DATA_T rPXSRawData; \
   PXS_CTRL_EM_PARAM_T rPXSEMParam; \
   PXS_CTRL_GET_ADV_ALGO_WINDOWING_T rPXSAdvAlgoWindowing; \
   PXS_CTRL_GET_ADV_ALGO_THRESHOLD_T rPXSAdvAlgoThreshold; \
   PXS_CTRL_CONFIG_T rPXSConfig; \
   PXS_CTRL_GET_SENSITIVITY_LEVEL_NUM_T rPXSSensitivityLevelNum; \
   PXS_CTRL_SET_SENSITIVITY_LEVEL_T rPXSSensitivityLevel; \
   PXS_CTRL_GET_DETECT_STATUS_T rPXSDetectStatus; \
   PXS_CTRL_SET_DEBOUNCE_T rPXSSetDebounce;



#endif // #ifndef __DCL_PXS_H_STRUCT__
#endif // #ifdef DCL_DEFINITION_STRUCT


#ifdef DCL_DEFINITION_PROTOTYPE
#ifndef __DCL_PXS_H_PROTOTYPE__
#define __DCL_PXS_H_PROTOTYPE__

/*************************************************************************
* FUNCTION
*  DclPXS_Initialize
*
* DESCRIPTION
*  This function is to initialize PXS module
*
* PARAMETERS
*  None
*
* RETURNS
*  STATUS_OK
*
*************************************************************************/
extern DCL_STATUS DclPXS_Initialize(void);
/*************************************************************************
* FUNCTION
*  DclPXS_Open
*
* DESCRIPTION
*  This function is to open the PXS module and return a handle
*
* PARAMETERS
*  dev: only valid for DCL_PXS
*  flags: no sepcial flags is needed. Please use FLAGS_NONE
*
* RETURNS
*  DCL_HANDLE_INVALID: Open failed
*  Other value: A valid handle
*
*************************************************************************/
extern DCL_HANDLE DclPXS_Open(DCL_DEV dev, DCL_FLAGS flags);
/*************************************************************************
* FUNCTION
*  DclPXS_ReadData
*
* DESCRIPTION
*  This function is not supported for the PXS module now.
*
* PARAMETERS
*	N/A
*
* RETURNS
*	STATUS_UNSUPPORTED
*
*************************************************************************/
extern DCL_STATUS DclPXS_ReadData(DCL_HANDLE handle, DCL_BUFF *buff, DCL_BUFF_LEN buf_len, DCL_OPTIONS options);
/*************************************************************************
* FUNCTION
*  DclPXS_WriteData
*
* DESCRIPTION
*  This function is not supported for the PXS module now.
*
* PARAMETERS
*	N/A
*
* RETURNS
*	STATUS_UNSUPPORTED
*
*************************************************************************/
extern DCL_STATUS DclPXS_WriteData(DCL_HANDLE handle, DCL_BUFF *buff, DCL_BUFF_LEN buf_len, DCL_OPTIONS options);
/*************************************************************************
* FUNCTION
*  DclPXS_Configure
*
* DESCRIPTION
*  This function is to configure the PXS module.
*
* PARAMETERS
*  handle: the returned handle value of DclPXS_Open
*  configure: a structure which include the PXS configuration.
*
* RETURNS
*  STATUS_OK: Successfully configure PXS module.
*  STATUS_INVALID_HANDLE: It's a invalid handle.
*  STATUS_NOT_OPENED: The module has not been opened.
*  STATUS_INVALID_CONFIGURATION: The configuration is invalid.
*
*************************************************************************/
extern DCL_STATUS DclPXS_Configure(DCL_HANDLE handle, DCL_CONFIGURE_T *configure);
/*************************************************************************
* FUNCTION
*  DclPXS_RegisterCallback
*
* DESCRIPTION
*  This function is to set callback function for the PXS module.
*
* PARAMETERS
*  handle: the returned handle value of DclPXS_Open
*  event: Supported events:
*  callback: the callback function for registered events
*
* RETURNS
*  STATUS_UNSUPPORTED
*
*************************************************************************/
extern DCL_STATUS DclPXS_RegisterCallback(DCL_HANDLE handle, DCL_EVENT event, PFN_DCL_CALLBACK callback);
/*************************************************************************
* FUNCTION
*  DclPXS_Control
*
* DESCRIPTION
*  This function is to send command to control the PXS module.
*
* PARAMETERS
*  handle: The handle value returned from DclPXS_Open
*  cmd: A control command for PXS module
*          1. PXS_CMD_ENABLE: to enable/disable PXS function
*          2. PXS_CMD_GET_RAW_DATA: to get PXS sampled raw data
*          3. PXS_CMD_EM_READ: to read EM parameters
*          4. PXS_CMD_EM_WRITE: to write EM parameters
*          5. PXS_CMD_GET_DETECT_STATUS: to get PXS detected status
*  data: The data of the control command
*          1. PXS_CMD_ENABLE: pointer to a PXS_CTRL_ENABLE_T structure
*          2. PXS_CMD_GET_RAW_DATA: pointer to a PXS_CTRL_RAW_DATA_T structure
*          3. PXS_CMD_EM_READ: pointer to a PXS_CTRL_EM_PARAM_T structure
*          4. PXS_CMD_EM_WRITE: pointer to a PXS_CTRL_EM_PARAM_T structure
*          5. PXS_CMD_GET_DETECT_STATUS: pointer to a PXS_CTRL_GET_DETECT_STATUS_T structure
*
* RETURNS
*  STATUS_OK: command is executed successfully.
*  STATUS_FAIL: command is failed.
*  STATUS_INVALID_CMD: It's a invalid command.
*  STATUS_UNSUPPORTED: The command is NOT supported
*
*************************************************************************/
extern DCL_STATUS DclPXS_Control(DCL_HANDLE handle, DCL_CTRL_CMD cmd, DCL_CTRL_DATA_T *data);
/*************************************************************************
* FUNCTION
*  DclPXS_Close
*
* DESCRIPTION
*  This function is to close the PXS module.
*
* PARAMETERS
*  handle: the returned handle value of DclPXS_Open
*
* RETURNS
*  STATUS_OK
*
*************************************************************************/
extern DCL_STATUS DclPXS_Close(DCL_HANDLE handle);



// Low level PXS driver (DclHPXS_XXX interfaces)
extern DCL_STATUS DclHPXS_Initialize(void);
extern DCL_HANDLE DclHPXS_Open(DCL_DEV dev, DCL_FLAGS flags);
extern DCL_STATUS DclHPXS_ReadData(DCL_HANDLE handle, DCL_BUFF *buff, DCL_BUFF_LEN buf_len, DCL_OPTIONS options);
extern DCL_STATUS DclHPXS_WriteData(DCL_HANDLE handle, DCL_BUFF *buff, DCL_BUFF_LEN buf_len, DCL_OPTIONS options);
extern DCL_STATUS DclHPXS_Configure(DCL_HANDLE handle, DCL_CONFIGURE_T *configure);
extern DCL_STATUS DclHPXS_RegisterCallback(DCL_HANDLE handle, DCL_EVENT event, PFN_DCL_CALLBACK callback);
extern DCL_STATUS DclHPXS_Control(DCL_HANDLE handle, DCL_CTRL_CMD cmd, DCL_CTRL_DATA_T *data);
extern DCL_STATUS DclHPXS_Close(DCL_HANDLE handle);





#endif // #ifndef __DCL_PXS_H_PROTOTYPE__
#endif // #ifdef DCL_DEFINITION_PROTOTYPE