FreeCalypso > hg > fc-magnetite
view src/aci2/mfw/win_key.c @ 668:4011858168a1
AT@LPG and AT@PWL implemented in aci3
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Thu, 28 May 2020 02:13:50 +0000 |
parents | 93999a60b835 |
children |
line wrap: on
line source
/* +--------------------------------------------------------------------+ | PROJECT: MMI-Framework (8417) $Workfile:: win_key.c $| | $Author:: Kk $ CONDAT GmbH $Revision:: 1 $| | CREATED: 28.01.99 $Modtime:: 3.01.00 19:35 $| | STATE : code | +--------------------------------------------------------------------+ MODULE : TI1_KEY PURPOSE : keyboard driver interface (TI1 VERSION) EXPORT : TO DO : $History:: win_key.c $ * * ***************** Version 1 ***************** * User: Kk Date: 6.01.00 Time: 12:22 * Created in $/GSM/Condat/MS/SRC/MFW * * ***************** Version 11 ***************** * User: Es Date: 9.07.99 Time: 21:29 * Updated in $/GSM/DEV/MS/SRC/MFW * * ***************** Version 10 ***************** * User: Es Date: 6.07.99 Time: 18:37 * Updated in $/GSM/DEV/MS/SRC/MFW * * ***************** Version 9 ***************** * User: Es Date: 6.07.99 Time: 12:41 * Updated in $/GSM/DEV/MS/SRC/MFW * * ***************** Version 8 ***************** * User: Es Date: 14.04.99 Time: 17:34 * Updated in $/GSM/DEV/MS/SRC/MFW * moved to CST * * ***************** Version 7 ***************** * User: Es Date: 1.04.99 Time: 17:07 * Updated in $/GSM/DEV/MS/SRC/MFW * removed lots of traces * * ***************** Version 6 ***************** * User: Es Date: 20.02.99 Time: 19:24 * Updated in $/GSM/DEV/MS/SRC/MFW * * ***************** Version 5 ***************** * User: Es Date: 20.02.99 Time: 18:22 * Updated in $/GSM/DEV/MS/SRC/MFW * * ***************** Version 4 ***************** * User: Es Date: 20.02.99 Time: 14:43 * Updated in $/GSM/DEV/MS/SRC/MFW * * ***************** Version 3 ***************** * User: Es Date: 17.02.99 Time: 20:00 * Updated in $/GSM/DEV/MS/SRC/MFW * * ***************** Version 2 ***************** * User: Es Date: 10.02.99 Time: 19:51 * Updated in $/GSM/DEV/MS/SRC/MFW * * ***************** Version 1 ***************** * User: Es Date: 9.02.99 Time: 14:53 * Created in $/GSM/DEV/MS/SRC/MFW * TI display & keyboard interface for MFW */ #include <string.h> #include "STDDEFS.H" #include "mfw_mfw.h" #include "mfw_sys.h" #include "gdi.h" #include "kbd.h" #include "drv_key.h" #include "win_key.h" static const U8 kbd_map [32] = /* ti mapping */ { /* default keyboard mapping */ /* KEY_0 */ 0x30, /* KEY_1 */ 0x31, /* KEY_2 */ 0x32, /* KEY_3 */ 0x33, /* KEY_4 */ 0x34, /* KEY_5 */ 0x35, /* KEY_6 */ 0x36, /* KEY_7 */ 0x37, /* KEY_8 */ 0x38, /* KEY_9 */ 0x39, /* KEY_STAR */ 0x2a, /* KEY_HASH */ 0x23, /* KEY_VOLUP */ 0xFE, /* KEY_VOLDOWN */ 0xFE, /* KEY_MNUUP */ 0x2d, /* KEY_MNUDOWN */ 0x62, /* KEY_LEFT */ 0x43, /* KEY_RIGHT */ 0x5e, /* KEY_CALL */ 0x61, /* KEY_HUP */ 0x56, /* KEY_OK */ 0xFE/*'f'*/, /* KEY_CLEAR */ 0xFE, /* KEY_ABC */ 0xFE, /* KEY_POWER */ 0x45, /* KEY_F1 */ 0xFE, /* KEY_F2 */ 0xFE, /* KEY_F3 */ 0xFE, /* KEY_F4 */ 0xFE, /* KEY_MAX */ 0xFE, /* KEY_UNDEFINED */ 0xFE, /* KEY_UNDEFINED */ 0xFE, /* KEY_UNDEFINED */ 0xFE }; static const U8 simkbd_map [32] = /* MOB SIM mapping */ { /* default keyboard mapping */ /* KEY_0 0 */ 0, /* KEY_1 1 */ 1, /* KEY_2 2 */ 2, /* KEY_3 3 */ 3, /* KEY_4 4 */ 4, /* KEY_5 5 */ 5, /* KEY_6 6 */ 6, /* KEY_7 7 */ 7, /* KEY_8 8 */ 8, /* KEY_9 9 */ 9, /* KEY_STAR 10 */ 10, /* KEY_HASH 11 */ 11, /* KEY_VOLUP 12 */ 12, /* KEY_VOLDOWN 13 */ 13, /* KEY_MNUUP 14 */ 14, /* KEY_MNUDOWN 15 */ 15, /* KEY_LEFT 16 */ 16, /* KEY_RIGHT 17 */ 17, /* KEY_CALL 18 */ 18, /* KEY_HUP 19 */ 19, /* KEY_OK 20 */ 20, /* KEY_CLEAR 21 */ 21, /* KEY_ABC 22 */ 22, /* KEY_POWER 23 */ 23, /* KEY_F1 24 */ 24, /* KEY_F2 25 */ 25, /* KEY_F3 26 */ 26, /* KEY_F4 27 */ 27, /* KEY_MAX 28 */ 28, /* KEY_AUTO 29 */ 29, /* KEY_LONG 30 */ 30, /* KEY_MAKE 31 */ 31 }; static const char * config_map [32] = { /* CONFIG prim key names */ /* KEY_0 */ "0", /* KEY_1 */ "1", /* KEY_2 */ "2", /* KEY_3 */ "3", /* KEY_4 */ "4", /* KEY_5 */ "5", /* KEY_6 */ "6", /* KEY_7 */ "7", /* KEY_8 */ "8", /* KEY_9 */ "9", /* KEY_STAR */ "STAR", /* KEY_HASH */ "HASH", /* KEY_VOLUP */ "VOL_PLUS", /* KEY_VOLDOWN */ "VOL_MINUS", /* KEY_MNUUP */ "UP", /* KEY_MNUDOWN */ "DOWN", /* KEY_LEFT */ "LEFT", /* KEY_RIGHT */ "RIGHT", /* KEY_CALL */ "SEND", /* KEY_HUP */ "END", /* KEY_OK */ "OK", /* KEY_CLEAR */ "CLEAR", /* KEY_ABC */ "ABC", /* KEY_POWER */ "POWER", /* KEY_F1 */ "F1", /* KEY_F2 */ "F2", /* KEY_F3 */ "F3", /* KEY_F4 */ "F4", /* KEY_MAX */ "", /* KEY_UNDEFINED */ "", /* KEY_UNDEFINED */ "", /* KEY_UNDEFINED */ "" }; /* driver callback */ static void kbdCb (drv_SignalID_Type *signal_params); static void (*sig) (char,char) = 0; /* kbd signaling function */ static char *keyMap = (char *) kbd_map; /* current keyboard mapping */ /* +--------------------------------------------------------------------+ | PROJECT : MMI-Framework (8417) MODULE : ti1_key | | STATE : code ROUTINE : keyInit | +--------------------------------------------------------------------+ PURPOSE : initialize keyboard driver */ void keyInit (void (*s)(char,char)) { sig = s; /* * read keyboard mapping from EEPROM. * if this fails set keyboard mapping with default values. * * EEPROM reading not now !!! */ keyMap = (char *) kbd_map; kbd_Init(kbdCb); } /* +--------------------------------------------------------------------+ | PROJECT : MMI-Framework (8417) MODULE : ti1_key | | STATE : code ROUTINE : keyExit | +--------------------------------------------------------------------+ PURPOSE : finalize keyboard driver */ void keyExit (void) { sig = 0; } /* +--------------------------------------------------------------------+ | PROJECT : MMI-Framework (8417) MODULE : ti1_key | | STATE : code ROUTINE : drvKeyUpDown | +--------------------------------------------------------------------+ PURPOSE : handle key event (called from keyboard) */ void drvKeyUpDown (char upDown, char key) { char i; if (!sig) return; /* no event handler */ //kk test if (!key) return; /* no valid key */ for (i = 0; i < 32; i++) { if (keyMap[i] == key) { sig(!upDown,i); return; } } /* TEST only ES!! */ for (i = 0; i < 32; i++) { if (simkbd_map[i] == key) { sig(!upDown,i); return; } } } /* +--------------------------------------------------------------------+ | PROJECT : MMI-Framework (8417) MODULE : ti1_key | | STATE : code ROUTINE : mfw_keystroke | +--------------------------------------------------------------------+ PURPOSE : handle keystroke primitive (called from aci-pei) keystroke sent via 'PEI-CONFIG'-primitive used in Test cases and by RT; */ void mfw_keystroke (char * key) { char i, number; if (!sig) return; /* no event handler */ if (!key) return; /* no valid key */ number = 0; while (strlen(key)) { if (!strcmp(key,"#*43*1#")) { sig(1,19); /* simulate HUP */ sig(0,19); key += 7; continue; } if (!strcmp(key,"#*43*0#")) { sig(1,18); /* simulate CALL */ sig(0,18); key += 7; continue; } for (i = 0; i < 32; i++) { if (!strcmp(key,config_map[i])) { sig(1,i); /* assume key down event */ sig(0,i); /* add key down event */ key += strlen(config_map[i]); break; } } if (i < 32) continue; /* found config code */ if (*key >= '0' && *key <= '9') { number = 1; sig(1,(char) (*key-'0')); /* assume a dial number */ sig(0,(char) (*key-'0')); } key++; } if (number) { sig(1,18); /* simulate CALL */ sig(0,18); } } /* +--------------------------------------------------------------------+ | PROJECT : MMI-Framework (8417) MODULE : ti1_key | | STATE : code ROUTINE : kbd_callback | +--------------------------------------------------------------------+ PURPOSE : Called by keyboard driver */ #include "prim.h" #define hCommACI _ENTITY_PREFIXED(hCommACI) static void kbdCb (drv_SignalID_Type *signal_params) { EXTERN T_VSI_CHANDLE hCommACI; U16 signal_high; U16 signal_low; PALLOC(key_ind,MMI_KEYPAD_IND); signal_high = (U16) (signal_params->UserData >> 16); signal_low = (U16) (signal_params->UserData & 0xFFFF); key_ind->key_code = (U8) (signal_low & 0xFF); if (signal_high == 1) key_ind->key_stat = KEY_STAT_PRS; else key_ind->key_stat = KEY_STAT_REL; #if defined (_TMS470) vsi_c_send("",hCommACI,D2P(key_ind), sizeof(T_PRIM_HEADER)+sizeof(T_MMI_KEYPAD_IND)); #else PSEND(ACI,key_ind); #endif }