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

📄 headset_buttons.h

📁 蓝牙耳机的源代码,结合csr的开发套件使用
💻 H
字号:
/****************************************************************************
Copyright (C) Cambridge Silicon Radio Ltd. 2004-2006
Part of BlueLab 3.5.2-release

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
}ButtonsTime_t ;

    /*usd byt the button manager*/
typedef struct ButtonEventsTag
{
    uint16        ButtonMask ;
    uint16        StateMask ;  
    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 ;
    uint16          ButtonToMatch[BM_NUM_BUTTONS_PER_MATCH_PATTERN] ;
    
}ButtonMatchPattern_t ;
 


typedef struct
{
 TaskData        task;
 Task            client;   
    
    uint16          gBOldState  ;       /*the last state we received*/
    ButtonsTime_t   gBTime  ;
    
    
    uint16        gBDoubleState  ;
    
    uint16 gButtonLevelMask ;  /*mask used when detecting the PIOs changed*/
    
    uint16 gButtonEdgeMask ;
    uint16 gBOldEdgeState ;
    
    uint16 gBLongDuration_ms ;
    uint16 gBVeryLongDuration_ms ;
    uint16 gBDoubleDuration_ms  ;
    uint16 gBRepeatDuration_ms ;
    unsigned        gBDoubleTap:1  ;
    
        /*used by the button manager*/
    unsigned           gNumEventsConfigured:15; /*max 40*/
   
    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;



    /*enum to register abutton as an edge or level triggering button*/
typedef enum ButtonTriggerTypeTag
{
    ButtonLevelTrigger ,
    ButtonEdgeTrigger
}ButtonTriggerType_t ;
/****************************************************************************
NAME 
 buttonManagerInit

DESCRIPTION
 Initialises the button event 

RETURNS
 void
    
*/
void ButtonsInit (  BTaskData *pBTask ) ;


/*************************************************************
NAME 
 ButtonsRegisterButtons

DESCRIPTION
 Registers buttons contained in the mask so that they will be detected by
    the button task

RETURNS
	void
    
*/
void ButtonsRegisterButtons (BTaskData *pBTask, uint16 pButtonMask , ButtonTriggerType_t pTrigger) ;


/*************************************************************
NAME	
	ButtonsUnRegisterButtons

DESCRIPTION
	Removes Registered buttons contained in the mask so that they will be detected by
    the button task

RETURNS
	void
    
*/
void ButtonsUnRegisterButtons (BTaskData *pBTask, uint16 pButtonMask  ) ;



/*************************************************************
NAME	
	ButtonsConfigDurations

DESCRIPTION
	Sets up the configurable button durations

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

#endif

⌨️ 快捷键说明

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