⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 headset_buttons.h

📁 bc5_stereo:bluetooth stereo Headset CODE 支持A2DP HSP 和 HSP 。可作为车载免提。BlueLab 2007环境下编译
💻 H
字号:
/****************************************************************************
Copyright (C) Cambridge Silicon Radio Ltd. 2004-2007

FILE NAME
    headset_buttons.h
    
DESCRIPTION
    
*/
#ifndef HEADSET_BUTTONS_H
#define HEADSET_BUTTONS_H

#include <message.h>
#include "headset_buttons.h"
#include "headset_events.h"


typedef enum ButtonsTimeTag
{
    B_INVALID ,
    B_SHORT ,
    B_LONG  ,
    B_VERY_LONG , 
    B_DOUBLE ,
    B_REPEAT , 
    B_LOW_TO_HIGH ,
    B_HIGH_TO_LOW , 
    B_SHORT_SINGLE,
    B_LONG_RELEASE,
    B_VERY_LONG_RELEASE ,
    B_VERY_VERY_LONG ,
    B_VERY_VERY_LONG_RELEASE
}ButtonsTime_t ;

/* used by the button manager */
typedef struct ButtonEventsTag
{
    uint32        ButtonMask ;
    unsigned int HfpStateMask:8 ;  
    unsigned int A2dpStateMask:8 ;  
    ButtonsTime_t Duration ;
    uint16        Event ;
}ButtonEvents_t ;

#define BM_NUM_BUTTON_MATCH_PATTERNS 2
#define BM_NUM_BUTTONS_PER_MATCH_PATTERN 6
 
typedef struct ButtonPatternTag
{
    headsetEvents_t EventToSend ;
    uint16          NumberOfMatches ;
    uint32          ButtonToMatch[BM_NUM_BUTTONS_PER_MATCH_PATTERN] ;   
}ButtonMatchPattern_t ;

    /*enum to register abutton as an edge or level triggering button*/
typedef enum ButtonTriggerTypeTag
{
    ButtonLevelTrigger ,
    ButtonEdgeTrigger
}ButtonTriggerType_t ;
 
typedef struct
{
    TaskData    task;
	Task        client;   
    
    uint32      gBOldState  ;       /*the last state we received*/    
    uint32      gBDoubleState  ;    
    uint32 		gButtonLevelMask ;  /*mask used when detecting the PIOs changed*/
    uint32 		gButtonEdgeMask ;
    uint32 		gBOldEdgeState ;
    
    uint16 		gBLongDuration_ms ;
    uint16 		gBVeryLongDuration_ms ;
    uint16 		gBVeryVeryLongDuration_ms ;
    uint16 		gBDoubleDuration_ms  ;
    uint16 		gBRepeatDuration_ms ;
    
	unsigned    gBDoubleTap:1  ;
	unsigned 	gBTime:8 ; /**ButtonsTime_t   */
	unsigned    gNumEventsConfigured:7; /*max 127*/
   
    ButtonEvents_t * gButtonEvents [2] ;/*pointer to the array of button event maps*/
             
    ButtonMatchPattern_t * gButtonPatterns [BM_NUM_BUTTON_MATCH_PATTERNS]; /*the button match patterns*/
    
    uint16          gButtonMatchProgress[BM_NUM_BUTTON_MATCH_PATTERNS] ;  /*the progress achieved*/

} BTaskData;


/****************************************************************************
  FUNCTIONS
*/

/****************************************************************************
NAME
    ButtonsInit
    
DESCRIPTION
 	Initialises the Button Module parameters.
*/  
void ButtonsInit (  BTaskData *pBTask ) ;


/****************************************************************************
NAME
    ButtonsRegisterButtons
    
DESCRIPTION
 	Registers buttons contained in the mask so that they will be detected by
    the button task.
*/
void ButtonsRegisterButtons (BTaskData *pBTask, uint32 pButtonMask , ButtonTriggerType_t pTrigger , const uint16 pio_debounce ) ;


/****************************************************************************
NAME
    ButtonsConfigDurations
 
DESCRIPTION
    Configures the button durations to the user defined values.

*/
void ButtonsConfigDurations (BTaskData *pBTask, uint16 pLong , uint16 pVeryLong , uint16 pDouble , uint16 pRepeat ,uint16 pVeryVeryLong) ;  


#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -