diff g23m/condat/com/src/driver/keypad.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/com/src/driver/keypad.c	Mon Jun 01 03:24:05 2015 +0000
@@ -0,0 +1,459 @@
+/* 
++----------------------------------------------------------------------------- 
+|  Project :  GSM-PS
+|  Modul   :  DRV_KBD
++----------------------------------------------------------------------------- 
+|  Copyright 2002 Texas Instruments Berlin, AG 
+|                 All rights reserved. 
+| 
+|                 This file is confidential and a trade secret of Texas 
+|                 Instruments Berlin, AG 
+|                 The receipt of or possession of this file does not convey 
+|                 any rights to reproduce or disclose its contents or to 
+|                 manufacture, use, or sell anything it may describe, in 
+|                 whole, or in part, without the specific written consent of 
+|                 Texas Instruments Berlin, AG. 
++----------------------------------------------------------------------------- 
+|  Purpose :  This Module defines the G23 keyboard driver.
+|             
+|             The driver has two parts:
+|             
+|             Part 1 is the driver interface (kbd_... )
+|             Part 2 is the simulation for Windows
++----------------------------------------------------------------------------- 
+*/ 
+
+#ifndef DRV_KBD_C
+#define DRV_KBD_C
+#endif
+/*==== INCLUDES ===================================================*/
+#if defined (NEW_FRAME)
+#include <string.h>
+#include "typedefs.h"
+#include "gdi.h"
+#include "kbd.h"
+#else
+#include <string.h>
+#include "stddefs.h"
+#include "gdi.h"
+#include "kbd.h"
+#endif
+/*==== EXPORT =====================================================*/
+#if defined (_TMS470)
+EXTERN void KP_Init          (void (*mmi_key_pressed)(UBYTE key),
+                              void (*mmi_key_relesed)(UBYTE key));
+#else
+LOCAL  void KP_Init          (void (*mmi_key_pressed)(UBYTE key),
+                              void (*mmi_key_relesed)(UBYTE key));
+#endif
+
+LOCAL void kbd_key_pressed   (UBYTE act_key);
+LOCAL void kbd_key_released  (UBYTE act_key);
+
+GLOBAL void kbd_test (UBYTE key);
+
+/*==== VARIABLES ==================================================*/
+drv_SignalCB_Type  kbd_signal_callback = NULL;
+UBYTE              kbd_act_key;
+
+/*
+ * Marcus: Issue 811: 05:09/2002:
+ * Moved kbd_map, simkbd_map and config_map from \bmi\Condat\MS\SRC\mfw\ti1_key.c
+ */
+
+const U8 kbd_map [NUM_KPD_KEYS] =            /* ti mapping               */
+{                                                   /* default keyboard mapping */
+    /* KEY_0              */  0x01,
+    /* KEY_1              */  0x02,
+    /* KEY_2              */  0x03,
+    /* KEY_3              */  0x04,
+    /* KEY_4              */  0x05,
+    /* KEY_5              */  0x06,
+    /* KEY_6              */  0x07,
+    /* KEY_7              */  0x08,
+    /* KEY_8              */  0x09,
+    /* KEY_9              */  0x0A,
+    /* KEY_STAR           */  0x11,
+    /* KEY_HASH          */  0x12,
+    /* KEY_VOLUP          */  0xFE,
+    /* KEY_VOLDOWN       */ 0xFE,
+    /* KEY_MNUUP          */ 0x0B,
+    /* KEY_MNUDOWN        */0x0C,
+    /* KEY_LEFT            */  0x0D,
+    /* KEY_RIGHT          */  0x0E,
+    /* KEY_CALL           */  0x0F,
+    /* KEY_HUP            */  0x10,
+    /* KEY_OK             */  0xFE,
+    /* KEY_CLEAR          */  0xFE,
+    /* KEY_ABC            */  0xFE,
+    /* KEY_POWER          */  0x19,
+    /* KEY_MNULEFT         */  0x15,
+    /* KEY_MNURIGHT       */  0x16,
+    /* KEY_MNUSELECT      */  0x17,
+    /* KEY_F4              */  0xFE,
+    /* KEY_MAX            */  0xFE,
+    /* KEY_AUTO           */  0xFE,
+    /* KEY_LONG           */  0xFE,
+    /* KEY_MAKE           */  0xFE
+};
+
+const U8 simkbd_map [NUM_KPD_KEYS] =         /* MOB SIM mapping          */
+{                                                   /* default keyboard mapping. Same as kbd_map */
+    /* KEY_0              */  0x01,
+    /* KEY_1              */  0x02,
+    /* KEY_2              */  0x03,
+    /* KEY_3              */  0x04,
+    /* KEY_4              */  0x05,
+    /* KEY_5              */  0x06,
+    /* KEY_6              */  0x07,
+    /* KEY_7              */  0x08,
+    /* KEY_8              */  0x09,
+    /* KEY_9              */  0x0A,
+    /* KEY_STAR           */  0x11,
+    /* KEY_HASH          */  0x12,
+    /* KEY_VOLUP          */  0xFE,
+    /* KEY_VOLDOWN       */ 0xFE,
+    /* KEY_MNUUP          */ 0x0B,
+    /* KEY_MNUDOWN        */0x0C,
+    /* KEY_LEFT            */  0x0D,
+    /* KEY_RIGHT          */  0x0E,
+    /* KEY_CALL           */  0x0F,
+    /* KEY_HUP            */  0x10,
+    /* KEY_OK             */  0xFE,
+    /* KEY_CLEAR          */  0xFE,
+    /* KEY_ABC            */  0xFE,
+    /* KEY_POWER          */  0x19,
+    /* KEY_MNULEFT         */  0x15,
+    /* KEY_MNURIGHT       */  0x16,
+    /* KEY_MNUSELECT      */  0x17,
+    /* KEY_F4              */  0xFE,
+    /* KEY_MAX            */  0xFE,
+    /* KEY_AUTO           */  0xFE,
+    /* KEY_LONG           */  0xFE,
+    /* KEY_MAKE           */  0xFE
+};
+
+#if 0
+/* the following codes are at least unuseable for d-sample!!!  */
+const char * const config_map [NUM_KPD_KEYS] =
+{                                                   /* 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_AUTO         */      "",
+    /* KEY_LONG         */      "",
+    /* KEY_MAKE         */      ""
+};
+#endif
+
+ char * const config_map [NUM_KPD_KEYS] =
+{                                                   /* CONFIG prim key names    */
+    /* unused           */      "X0",  /* dummy placeholder */
+    /* 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_MNUUP        */      "UP",
+    /* KEY_MNUDOWN      */      "DOWN",
+    /* KEY_LEFT         */      "LSOFT",
+    /* KEY_RIGHT        */      "RSOFT",
+    /* KEY_CALL         */      "SEND",
+    /* KEY_HUP          */      "END",
+    /* KEY_STAR         */      "*",
+    /* KEY_HASH         */      "#",
+    /* KEY_VOLUP        */      "VOL_PLUS",
+    /* KEY_VOLDOWN      */      "VOL_MINUS",
+    /* KEY_MNULEFT      */      "LEFT",
+    /* KEY_MNURIGHT     */      "RIGHT",
+    /* KEY_MNUSELECT    */      "CENTER",
+    /* voice memo ???   */      "EXTRA",
+    /* unused           */      "X26",  /* dummy placeholder */
+    /* unused           */      "X27",  /* dummy placeholder */
+    /* unused           */      "X28",  /* dummy placeholder */
+    /* unused           */      "X29",  /* dummy placeholder */
+    /* unused           */      "X30",  /* dummy placeholder */
+    /* unused           */      "X31",  /* dummy placeholder */
+    /* unused           */      "X32",  /* dummy placeholder */
+};
+
+
+
+/*==== FUNCTIONS ==================================================*/
+
+/*==== CONSTANTS ==================================================*/
+/*******************************************************************
+ *                                                                 *
+ * PART I: Driver Interface                                        *
+ *                                                                 *
+ *******************************************************************/
+/*
++--------------------------------------------------------------------+
+| PROJECT : GSM-PS (6103)       MODULE  : DRV_KBD                    |
+| STATE   : code                ROUTINE : kbd_Init                   |
++--------------------------------------------------------------------+
+
+  PURPOSE : The function initializes the driverīs internal data. The
+            function returns KBD_INITIALIZED if the driver has already
+            been initialized and is ready to be used or already in use.
+            In case of an initialization failure, which means that the
+            driver cannot be used, the function returns KBD_INITFAILURE.
+            After initialization, the driver is ready to handle
+            keyboard status changes.
+
+*/
+
+GLOBAL UBYTE kbd_Init (drv_SignalCB_Type in_SignalCBPtr)
+{
+  kbd_signal_callback = in_SignalCBPtr;    /* store call-back function */
+
+  /*
+   * Initialise TI driver with internal callback functions
+   */
+  KP_Init (kbd_key_pressed, kbd_key_released);
+
+  return DRV_OK;
+}
+
+/*
++--------------------------------------------------------------------+
+| PROJECT : GSM-PS (6103)       MODULE  : DRV_KBD                    |
+| STATE   : code                ROUTINE : kbd_Exit                   |
++--------------------------------------------------------------------+
+
+  PURPOSE : The function is called when the driver functionality is
+            not longer needed. The function "de-allocates" all
+            allocated resources and finalizes the driver.
+
+*/
+
+GLOBAL void kbd_Exit (void)
+{
+  kbd_signal_callback = NULL;
+}
+
+/*
++--------------------------------------------------------------------+
+| PROJECT : GSM-PS (6103)       MODULE  : DRV_KBD                    |
+| STATE   : code                ROUTINE : kbd_SetConfig              |
++--------------------------------------------------------------------+
+
+  PURPOSE : This function is used to set the typematic rate settings
+            of the keyboard driver. After a successful completion,
+            the driver uses the new configuration on following
+            keyboard events (e.g. key press). If one of the parameters
+            included in the driver control block is invalid, the function
+            returns DRV_INVALID_PARAMS. To retrieve the driverīs default
+            configuration, call the function kbd_GetConfig().
+
+*/
+
+GLOBAL UBYTE kbd_SetConfig (kbd_DCB_Type * in_DCB_Ptr)
+{
+  return DRV_OK;
+}
+
+/*
++--------------------------------------------------------------------+
+| PROJECT : GSM-PS (6103)       MODULE  : DRV_KBD                    |
+| STATE   : code                ROUTINE : kbd_GetConfig              |
++--------------------------------------------------------------------+
+
+  PURPOSE : The function is used to retrieve the typematic rate
+            settings of the driver. The configuration is returned
+            in the driver control block to which the pointer provided
+            out_DCBPtr points. The typematic configuration can be set
+            by using the kbd_SetConfig() function.
+            If the driver is not configured, the function returns
+            KBD_NOTCONFIGURED.
+
+*/
+
+GLOBAL UBYTE kbd_GetConfig (kbd_DCB_Type * out_DCBPtr)
+{
+  return DRV_OK;
+}
+
+/*
++--------------------------------------------------------------------+
+| PROJECT : GSM-PS (6103)       MODULE  : DRV_KBD                    |
+| STATE   : code                ROUTINE : kbd_SetSignal              |
++--------------------------------------------------------------------+
+
+  PURPOSE : This function is used to define a signal that indicates
+            keyboard status changes to a process. A keyboard status
+            change is an event identified in the signal information
+            data type as SignalType. The only signal that can be set is
+            the keyboard status change signal as described in the
+            interface documentation.
+
+*/
+
+GLOBAL UBYTE kbd_SetSignal (drv_SignalID_Type * in_SignalIDPtr)
+{
+  return DRV_OK;
+}
+
+/*
++--------------------------------------------------------------------+
+| PROJECT : GSM-PS (6103)       MODULE  : DRV_KBD                    |
+| STATE   : code                ROUTINE : kbd_ResetSignal            |
++--------------------------------------------------------------------+
+
+  PURPOSE : This function is used to remove a signal that has previously
+            set. The signal that is removed is identified by the
+            signal information data element called SignalType.
+
+*/
+
+GLOBAL UBYTE kbd_ResetSignal (drv_SignalID_Type * in_SignalIDPtr)
+{
+  return DRV_OK;
+}
+
+/*
++--------------------------------------------------------------------+
+| PROJECT : GSM-PS (6103)       MODULE  : DRV_KBD                    |
+| STATE   : code                ROUTINE : kbd_GetStatus              |
++--------------------------------------------------------------------+
+
+  PURPOSE : This function is used to retrieve the current (latest)
+            status of the keyboard.
+
+*/
+
+GLOBAL ULONG kbd_GetStatus (void)
+{
+  return 0L;
+}
+
+
+/*
++--------------------------------------------------------------------+
+| PROJECT : GSM-PS (6103)       MODULE  : TIL_MMI                    |
+| STATE   : code                ROUTINE : kbd_key_pressed            |
++--------------------------------------------------------------------+
+
+  PURPOSE : The function is called when a key is pressed.
+
+*/
+
+LOCAL void kbd_key_pressed (UBYTE act_key)
+{
+  drv_SignalID_Type signal_params;
+  signal_params.SignalType  = KBD_SIGTYPE_STATUSCHG;
+
+#if defined (NEW_FRAME)
+  /*
+  	UserData should not be a pointer, NM 12.10.01
+  */
+  signal_params.UserData = (ULONG*)(0x00010000L | (ULONG)act_key);
+#else
+  signal_params.SignalValue = 0;
+  signal_params.UserData    = 0x00010000L + (ULONG)act_key;
+#endif
+
+  kbd_act_key = act_key;
+
+  if (kbd_signal_callback NEQ NULL)
+    (*kbd_signal_callback)(&signal_params);
+}
+
+/*
++--------------------------------------------------------------------+
+| PROJECT : GSM-PS (6103)       MODULE  : TIL_MMI                    |
+| STATE   : code                ROUTINE : kbd_key_released           |
++--------------------------------------------------------------------+
+
+  PURPOSE : The function is called when a key is released.
+
+*/
+
+LOCAL void kbd_key_released (UBYTE act_key)
+{
+  drv_SignalID_Type signal_params;
+  signal_params.SignalType  = KBD_SIGTYPE_STATUSCHG;
+
+
+#if defined (NEW_FRAME)
+  /*
+  	UserData should be use as a pointer;
+
+  	The "act_key" wasnt even used in the old frame.
+  	"kbd_act_key" keeps the key_code from the "key-press CB function"
+  	and is used for the key-release CB function as well !!
+  	It seems to be that the key_code for the key-release from the TI driver
+  	isnt correct. This way looks like a work around but it works.
+
+    //old
+    //signal_params.UserData = (ULONG*)(0x00000000L | (ULONG)act_key);
+
+  	NM 12.10.01
+  */
+  signal_params.UserData = (ULONG*)(0x00000000L | (ULONG)kbd_act_key);
+#else
+  signal_params.SignalValue = 0;
+  signal_params.UserData    = 0x00000000L + (ULONG)kbd_act_key;
+#endif
+
+  if (kbd_signal_callback NEQ NULL)
+    (*kbd_signal_callback)(&signal_params);
+}
+
+
+/*******************************************************************
+ *                                                                 *
+ * PART II: Simulation for Windows                                 *
+ *                                                                 *
+ *******************************************************************/
+
+#if defined (WIN32)
+/*
+ * Dummies for driver calls
+ */
+LOCAL void KP_Init   (void (*mmi_key_pressed)(UBYTE),
+                      void (*mmi_key_relesed)(UBYTE))
+{
+}
+
+/*
+ * Stimulation of the keyboard driver
+ */
+GLOBAL void kbd_test (UBYTE key)
+{
+  kbd_key_pressed (key);
+  kbd_key_released (key);
+}
+
+#endif