KBD_main.c File Reference


Detailed Description

This module provides keyboard scanning functions.

REVISION

Definition in file KBD_main.c.

#include "../MESSAGE/message.h"
#include "../GENERIC/generic.h"
#include "../SYSTEM/sys_cpld.h"
#include "../SYSTEM/sys_main.h"
#include "../SYSTEM/sys_assert.h"
#include "../SYSTEM/sys_hiddenfeature.h"
#include "../USB/usb.h"
#include "../TIMER/timer.h"
#include "keyboard.h"
#include "keyboard_assert.h"

Include dependency graph for KBD_main.c:

Include dependency graph

Go to the source code of this file.

Defines

#define mKBDMSG_send(q, msg)   {KBD_msgFilter(msg);if( KEY_NOKEY != ((msg)->d1) ) MSG_send(q, msg, 0);}
 Define to do skip keyboard filter.

Functions

void KBD_main (void)
 Function serves as the keyboard scan handle.
BOOL KBD_isKeyDown (KEY_ID id)
 This function tells if the specified key has been pressed down.
void KBD_msgFilter (st_MSG *msg)
 Function serves as the default keyboard message filter.


Define Documentation

#define mKBDMSG_send q,
msg   )     {KBD_msgFilter(msg);if( KEY_NOKEY != ((msg)->d1) ) MSG_send(q, msg, 0);}
 

Define to do skip keyboard filter.

NOTE: Current all key messages are filtered, in case this is not the case in the future, this definition needs to be enabled, and it is up to the application to do filter respectively.

Definition at line 48 of file KBD_main.c.

Referenced by KBD_main().


Function Documentation

BOOL KBD_isKeyDown KEY_ID  id  ) 
 

This function tells if the specified key has been pressed down.

Parameters:
id key ID.
Returns:
TRUE if key is pressed down, otherwise FALSE.

Definition at line 206 of file KBD_main.c.

Referenced by KBD_msgFilter(), SYS_gotoDiagnosis(), SYS_kickoff(), UI_MSF_main(), UI_PSF_null(), and UI_PSF_sleep().

00207 {
00208     return( (readKeys()&(1<<id))? TRUE : FALSE);
00209 }

void KBD_msgFilter st_MSG msg  ) 
 

Function serves as the default keyboard message filter.

Parameters:
msg keyboard message.

Definition at line 220 of file KBD_main.c.

References KBD_isKeyDown(), KDOWN, KUP, st_SYSPARAM::sleepCount, st_SYSPARAM::sleepTimer, and SRTC_UPDT.

00221 {
00222     MSG_ID          id      = msg->id;     
00223     MSG_DATA        d1      = msg->d1; 
00224     MSG_DATA        dout    = KEY_NOKEY;
00225     MSG_DATA        d2      = msg->d2;
00226     
00227     if(id != KBD_MSG_ID) return;
00228     switch(d1)
00229     {
00230         case KLOCK_DN:
00231             dout = KEY_LOCK;
00232             if(KBD_isKeyDown(KDOWN))        
00233             {
00234                 SYS_HF_batteryEnable();
00235             }
00236             else if(KBD_isKeyDown(KUP))     
00237             {
00238                 sysParam.sleepCount = sysParam.sleepTimer;
00239                 mMSG_send(sysMsgQ, SYS_MSG_ID, SRTC_UPDT, DONTCARE, SYS_FOREVER);
00240                 SYS_HF_sleepTimerEnable();          
00241             }
00242             break;
00243 
00244         case KLOCK_UP:
00245             dout = KEY_UNLOCK;
00246             if(KBD_isKeyDown(KDOWN)) 
00247             {
00248                 SYS_HF_batteryDisable();
00249                 SYS_HF_sleepTimerDisable();
00250                 mMSG_send(sysMsgQ, SYS_MSG_ID, SRTC_UPDT, DONTCARE, SYS_FOREVER);
00251             }
00252             break;
00253             
00254         case KUP_DN:
00255             if(d2 == KUP_HOLD_TIME)         dout = KEY_HUP;
00256             else if( (d2>KUP_HOLD_TIME)&&((d2&0x07)==0) )       
00257                                             dout = KEY_RUP;
00258             break;
00259             
00260         case KUP_UP:
00261             if(d2 < KUP_HOLD_TIME)          dout = KEY_UP;
00262             break;
00263             
00264         case KDOWN_DN:
00265             if(d2 == KDOWN_HOLD_TIME)       dout = KEY_HDOWN;
00266             else if( (d2>KDOWN_HOLD_TIME)&&((d2&0x07)==0) ) 
00267                                             dout = KEY_RDOWN;
00268             break;
00269             
00270         case KDOWN_UP:
00271             if(d2 < KDOWN_HOLD_TIME)        dout = KEY_DOWN;
00272             break;
00273             
00274         case KPLAY_DN:
00275             if(d2 == KPLAY_PRESS_TIME)      dout = KEY_PPLAY;
00276             if(d2 == KPLAY_HOLD_TIME)       dout = KEY_HPLAY;
00277             break;
00278             
00279         case KPLAY_UP:
00280             if(d2 < KPLAY_HOLD_TIME)        dout = KEY_PLAY;
00281             break;
00282             
00283         case KHISI_DN:
00284             if(d2 == KHISI_HOLD_TIME)       dout = KEY_HHISI;
00285             break;
00286             
00287         case KHISI_UP:
00288             if(d2 < KHISI_HOLD_TIME)        dout = KEY_HISI;
00289             break;
00290             
00291         case KBACK_DN:
00292             if(d2 == KBACK_HOLD_TIME)       dout = KEY_HBACK;
00293             break;
00294             
00295         case KBACK_UP:
00296             if(d2 < KBACK_HOLD_TIME)        dout = KEY_BACK;
00297             break;
00298             
00299         case KSELECT_DN:
00300             if(d2 == KSELECT_HOLD_TIME)     dout = KEY_HSELECT;
00301             break;
00302         
00303         case KSELECT_UP:
00304             if(d2 < KSELECT_HOLD_TIME)      dout = KEY_SELECT;
00305             break;
00306         
00307         case KPRESET1_DN:
00308             if(d2 == KPRESET1_HOLD_TIME)    dout = KEY_HPRESET1;
00309             break;
00310             
00311         case KPRESET1_UP:
00312             if(d2 < KPRESET1_HOLD_TIME)     dout = KEY_PRESET1;
00313             break;
00314             
00315         case KPRESET2_DN:
00316             if(d2 == KPRESET2_HOLD_TIME)    dout = KEY_HPRESET2;
00317             break;
00318             
00319         case KPRESET2_UP:
00320             if(d2 < KPRESET2_HOLD_TIME)     dout = KEY_PRESET2;
00321             break;
00322 
00323         case KPRESET3_DN:
00324             if(d2 == KPRESET3_HOLD_TIME)    dout = KEY_HPRESET3;
00325             break;
00326             
00327         case KPRESET3_UP:
00328             if(d2 < KPRESET3_HOLD_TIME)     dout = KEY_PRESET3;
00329             break;
00330 
00331         case KPRESET4_DN:
00332             if(d2 == KPRESET4_HOLD_TIME)    dout = KEY_HPRESET4;
00333             break;
00334             
00335         case KPRESET4_UP:
00336             if(d2 < KPRESET4_HOLD_TIME)     dout = KEY_PRESET4;
00337             break;
00338 
00339         case KPRESET5_DN:
00340             if(d2 == KPRESET5_HOLD_TIME)    dout = KEY_HPRESET5;
00341             break;
00342             
00343         case KPRESET5_UP:
00344             if(d2 < KPRESET5_HOLD_TIME)     dout = KEY_PRESET5;
00345             break;
00346 
00347         case KFORWARD_DN:
00348             if(d2 == KFORWARD_HOLD_TIME)    dout = KEY_HFORWARD;
00349             else if( (d2>KFORWARD_HOLD_TIME)&&((d2&0x07)==0) )      
00350                                             dout = KEY_RFORWARD;
00351             break;
00352             
00353         case KFORWARD_UP:
00354             if(d2 < KFORWARD_HOLD_TIME)     dout = KEY_FORWARD;
00355             break;
00356 
00357         case KREWIND_DN:
00358             if(d2 == KREWIND_HOLD_TIME)     dout = KEY_HREWIND;
00359             else if( (d2>KREWIND_HOLD_TIME)&&((d2&0x07)==0) )       
00360                                             dout = KEY_RREWIND;
00361             break;
00362             
00363         case KREWIND_UP:
00364             if(d2 < KREWIND_HOLD_TIME)      dout = KEY_REWIND;
00365             break;
00366     }
00367     msg->d1 = dout;
00368 }

Here is the call graph for this function:


Generated on Wed Jan 19 01:13:04 2005 for neuros-firmware by  doxygen 1.3.9.1