diff src/ui/mfw/mfw_mme.c @ 69:77321341946c

first-pass implementation of UI to FCHG connection
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 23 Oct 2020 03:39:22 +0000
parents 7c7fe9d0ea7c
children 7160f0d005d2
line wrap: on
line diff
--- a/src/ui/mfw/mfw_mme.c	Fri Oct 23 01:59:58 2020 +0000
+++ b/src/ui/mfw/mfw_mme.c	Fri Oct 23 03:39:22 2020 +0000
@@ -146,6 +146,7 @@
 #ifdef FF_MMI_USBMS
 #include "usb/usb_api.h"
 #endif
+#include "fchg/fchg_api.h"
 
 //x0pleela 01 Apr, 2007 ER: OMAPS00122561
 #ifdef FF_PHONE_LOCK
@@ -184,7 +185,7 @@
 static int mmeCommand (U32 cmd, void *h);
 
                                         /* driver callbacks         */
-static void pwrCb (drv_SignalID_Type *signal_params);
+static void pwrCb (enum fchg_event);
 static void rxCb (drv_SignalID_Type *signal_params);
 static void rtcCb (drv_SignalID_Type *signal_params);
 
@@ -426,9 +427,9 @@
     hdsPresence = 0;
 
 
-    pwr_Init(pwrCb); //power driver
-    rx_Init(rxCb);   //fieldstrength driver
-    light_Init();    //light emitting driver
+    fchg_register_event_handler(pwrCb);	/* battery driver */
+    rx_Init(rxCb);	//fieldstrength driver
+    light_Init();	//light emitting driver
 //      xpradipg - LOCOSTO-ENH-31895 : 23 June 2005
 #ifdef FF_MMI_AUDIO_PROFILE
     audio_Init(audio_device_config);
@@ -436,8 +437,6 @@
     audio_Init(hdsCb); //audio driver
 #endif
 
-    mmeBattInfo ( 10, 0);
-
     mmeRxInfo(5,0);
 
     /* install prim handler     */
@@ -778,6 +777,7 @@
 
 */
 
+#if 0	/* removed in FreeCalypso */
 void mmeBattInfo ( U8 intervalls, U16 level)
 {
     pwr_DCB_Type pwr_DCB;
@@ -789,6 +789,7 @@
     pwr_DCB.Steps = intervalls;         /* n Steps                  */
     pwr_SetConfig(&pwr_DCB);
 }
+#endif
 
 
 /*
@@ -1042,12 +1043,17 @@
         case MMI_BATTERY_IND:
             level = ((T_MMI_BATTERY_IND *) data)->volt;
             state = ((T_MMI_BATTERY_IND *) data)->temp;
-            if (battLevel != level)
+            if (level != FCHG_BATT_BARS_CHARGING && battLevel != level)
             {
                 battLevel = level;
                 mmeSignal(MfwMmeBattery,level);
             }
-            if (battState != state)
+            /* is it a new state or an event? */
+            if (state >= BATT_EVENT_CHARGER_PLUG)
+            {
+                mmeSignal(MfwMmeBaState,state);
+            }
+            else if (battState != state)
             {
                 battState = state;
                 mmeSignal(MfwMmeBaState,state);
@@ -1187,14 +1193,28 @@
 
 */
 
-static void pwrCb (drv_SignalID_Type *signal_params)
+static void pwrCb (enum fchg_event fchg_event)
 {
-    pwr_Status_Type *para;
+    struct fchg_user_state fchg_data;
     PALLOC(battery_ind, MMI_BATTERY_IND);
 
-    para = (pwr_Status_Type *) signal_params->UserData;
-    battery_ind->volt = para->BatteryLevel;
-    battery_ind->temp = para->Status;
+    fchg_get_current_state(&fchg_data);
+    battery_ind->volt = fchg_data.batt_bars;
+    if (fchg_event == FCHG_EVENT_CHARGER_PLUG) {
+	battery_ind->temp = BATT_EVENT_CHARGER_PLUG;
+    } else {
+	switch (fchg_data.chg_state) {
+	case FCHG_STATE_CI_CHARGING:
+	case FCHG_STATE_CV_CHARGING:
+	    battery_ind->temp = BATT_STATE_CHARGING;
+	    break;
+	case FCHG_STATE_READY_TO_RECHARGE:
+	    battery_ind->temp = BATT_STATE_CHARGING_COMPLETE;
+	    break;
+	default:
+	    battery_ind->temp = BATT_STATE_NO_CHARGING;
+	}
+    }
 
     PSENDX(ACI,battery_ind);
 }