FreeCalypso > hg > tcs211-c139
diff g23m/condat/ms/src/mfw/win_key.c @ 0:509db1a7b7b8
initial import: leo2moko-r1
author | Space Falcon <falcon@ivan.Harhan.ORG> |
---|---|
date | Mon, 01 Jun 2015 03:24:05 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/g23m/condat/ms/src/mfw/win_key.c Mon Jun 01 03:24:05 2015 +0000 @@ -0,0 +1,377 @@ +/* ++--------------------------------------------------------------------+ +| 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 +} +