How about this ?  It works for me so far.
diff --git a/services/jni/com_android_server_BatteryService.cpp
b/services/jni/com_android_server_BatteryService.cpp
index 6636a97..831f44e 100644
--- a/services/jni/com_android_server_BatteryService.cpp
+++ b/services/jni/com_android_server_BatteryService.cpp
@@ -37,7 +37,27 @@
 #endif
 
 namespace android {
-
+#if TARGET_PLATFORM == eee_701
+#define AC_ONLINE_PATH "/sys/class/power_supply/AC/online"
+  /*
+    I guess this is for USB power, EeePC does not have this
+    #define USB_ONLINE_PATH "/sys/class/power_supply/usb/online"
+  */
+#define BATTERY_STATUS_PATH "/sys/class/power_supply/BAT0/status"
+  /*
+    I don't think we have this part on EeePC, I could not find this
+    on my Sony either.
+    #define BATTERY_HEALTH_PATH
"/sys/class/power_supply/battery/health"
+  */
+#define BATTERY_PRESENT_PATH "/sys/class/power_supply/BAT0/present"
+#define BATTERY_CAPACITY_PATH
"/sys/class/power_supply/BAT0/energy_full"
+#define BATTERY_VOLTAGE_PATH "/sys/class/power_supply/BAT0/voltage_now"
+  /*
+   *Did not find this on my EeePC either
+   #define BATTERY_TEMPERATURE_PATH
"/sys/class/power_supply/battery/batt_temp"
+  */
+#define BATTERY_TECHNOLOGY_PATH
"/sys/class/power_supply/BAT0/technology"
+#else
 #define AC_ONLINE_PATH "/sys/class/power_supply/ac/online"
 #define USB_ONLINE_PATH "/sys/class/power_supply/usb/online"
 #define BATTERY_STATUS_PATH "/sys/class/power_supply/battery/status"
@@ -47,7 +67,7 @@ namespace android {
 #define BATTERY_VOLTAGE_PATH "/sys/class/power_supply/battery/batt_vol"
 #define BATTERY_TEMPERATURE_PATH
"/sys/class/power_supply/battery/batt_temp"
 #define BATTERY_TECHNOLOGY_PATH
"/sys/class/power_supply/battery/technology"
-
+#endif
 struct FieldIds {
     // members
     jfieldID mAcOnline;
@@ -174,12 +194,21 @@ static void setIntField(JNIEnv* env, jobject obj,
const char* path, jfieldID fie
 static void android_server_BatteryService_update(JNIEnv* env, jobject
obj)
 {
     setBooleanField(env, obj, AC_ONLINE_PATH, gFieldIds.mAcOnline);
+#if TARGET_PLATFORM == eee_701
+    env->SetBooleanField(obj,gFieldIds.mUsbOnline,false);
+#else
     setBooleanField(env, obj, USB_ONLINE_PATH, gFieldIds.mUsbOnline);
+#endif
     setBooleanField(env, obj, BATTERY_PRESENT_PATH,
gFieldIds.mBatteryPresent);
     
     setIntField(env, obj, BATTERY_CAPACITY_PATH,
gFieldIds.mBatteryLevel);
     setIntField(env, obj, BATTERY_VOLTAGE_PATH,
gFieldIds.mBatteryVoltage);
+#if TARGET_PLATFORM == eee_701
+    /*Zero ;)*/
+    env->SetIntField(obj,gFieldIds.mBatteryTemperature,0);
+#else
     setIntField(env, obj, BATTERY_TEMPERATURE_PATH,
gFieldIds.mBatteryTemperature);
+#endif
     
     const int SIZE = 128;
     char buf[SIZE];
@@ -187,9 +216,13 @@ static void
android_server_BatteryService_update(JNIEnv* env, jobject obj)
     if (readFromFile(BATTERY_STATUS_PATH, buf, SIZE) > 0)
         env->SetIntField(obj, gFieldIds.mBatteryStatus,
getBatteryStatus(buf));
     
+
+#if TARGET_PLATFORM == eee_701
+    env->SetIntField(obj, gFieldIds.mBatteryHealth, 'G');
+#else
     if (readFromFile(BATTERY_HEALTH_PATH, buf, SIZE) > 0)
         env->SetIntField(obj, gFieldIds.mBatteryHealth,
getBatteryHealth(buf));
-
+#endif
     if (readFromFile(BATTERY_TECHNOLOGY_PATH, buf, SIZE) > 0)
         env->SetObjectField(obj, gFieldIds.mBatteryTechnology,
env->NewStringUTF(buf));
 }
diff --git a/services/jni/com_android_server_BatteryService.cpp
b/services/jni/com_android_server_BatteryService.cpp
index 6636a97..831f44e 100644
--- a/services/jni/com_android_server_BatteryService.cpp
+++ b/services/jni/com_android_server_BatteryService.cpp
@@ -37,7 +37,27 @@
 #endif
 
 namespace android {
-
+#if TARGET_PLATFORM == eee_701
+#define AC_ONLINE_PATH "/sys/class/power_supply/AC/online"
+  /*
+    I guess this is for USB power, EeePC does not have this
+    #define USB_ONLINE_PATH "/sys/class/power_supply/usb/online"
+  */
+#define BATTERY_STATUS_PATH "/sys/class/power_supply/BAT0/status"
+  /*
+    I don't think we have this part on EeePC, I could not find this
+    on my Sony either.
+    #define BATTERY_HEALTH_PATH
"/sys/class/power_supply/battery/health"
+  */
+#define BATTERY_PRESENT_PATH "/sys/class/power_supply/BAT0/present"
+#define BATTERY_CAPACITY_PATH
"/sys/class/power_supply/BAT0/energy_full"
+#define BATTERY_VOLTAGE_PATH "/sys/class/power_supply/BAT0/voltage_now"
+  /*
+   *Did not find this on my EeePC either
+   #define BATTERY_TEMPERATURE_PATH
"/sys/class/power_supply/battery/batt_temp"
+  */
+#define BATTERY_TECHNOLOGY_PATH
"/sys/class/power_supply/BAT0/technology"
+#else
 #define AC_ONLINE_PATH "/sys/class/power_supply/ac/online"
 #define USB_ONLINE_PATH "/sys/class/power_supply/usb/online"
 #define BATTERY_STATUS_PATH "/sys/class/power_supply/battery/status"
@@ -47,7 +67,7 @@ namespace android {
 #define BATTERY_VOLTAGE_PATH "/sys/class/power_supply/battery/batt_vol"
 #define BATTERY_TEMPERATURE_PATH
"/sys/class/power_supply/battery/batt_temp"
 #define BATTERY_TECHNOLOGY_PATH
"/sys/class/power_supply/battery/technology"
-
+#endif
 struct FieldIds {
     // members
     jfieldID mAcOnline;
@@ -174,12 +194,21 @@ static void setIntField(JNIEnv* env, jobject obj,
const char* path, jfieldID fie
 static void android_server_BatteryService_update(JNIEnv* env, jobject
obj)
 {
     setBooleanField(env, obj, AC_ONLINE_PATH, gFieldIds.mAcOnline);
+#if TARGET_PLATFORM == eee_701
+    env->SetBooleanField(obj,gFieldIds.mUsbOnline,false);
+#else
     setBooleanField(env, obj, USB_ONLINE_PATH, gFieldIds.mUsbOnline);
+#endif
     setBooleanField(env, obj, BATTERY_PRESENT_PATH,
gFieldIds.mBatteryPresent);
     
     setIntField(env, obj, BATTERY_CAPACITY_PATH,
gFieldIds.mBatteryLevel);
     setIntField(env, obj, BATTERY_VOLTAGE_PATH,
gFieldIds.mBatteryVoltage);
+#if TARGET_PLATFORM == eee_701
+    /*Zero ;)*/
+    env->SetIntField(obj,gFieldIds.mBatteryTemperature,0);
+#else
     setIntField(env, obj, BATTERY_TEMPERATURE_PATH,
gFieldIds.mBatteryTemperature);
+#endif
     
     const int SIZE = 128;
     char buf[SIZE];
@@ -187,9 +216,13 @@ static void
android_server_BatteryService_update(JNIEnv* env, jobject obj)
     if (readFromFile(BATTERY_STATUS_PATH, buf, SIZE) > 0)
         env->SetIntField(obj, gFieldIds.mBatteryStatus,
getBatteryStatus(buf));
     
+
+#if TARGET_PLATFORM == eee_701
+    env->SetIntField(obj, gFieldIds.mBatteryHealth, 'G');
+#else
     if (readFromFile(BATTERY_HEALTH_PATH, buf, SIZE) > 0)
         env->SetIntField(obj, gFieldIds.mBatteryHealth,
getBatteryHealth(buf));
-
+#endif
     if (readFromFile(BATTERY_TECHNOLOGY_PATH, buf, SIZE) > 0)
         env->SetObjectField(obj, gFieldIds.mBatteryTechnology,
env->NewStringUTF(buf));
 }

On Wed, 2009-04-08 at 02:43 -0700, Luca Belluccini wrote:
> I don't know if EeePc battery monitoring has the same "protocol".
> 
> On 8 Apr, 09:41, Androidphan <[email protected]> wrote:
> > Doesn't the EEE pc have any battery monitoring? Then the correct paths
> > can be modified in the Batteryservice in stead of just an unknown
> > status.
> >
> > On 8 apr, 04:07, Luca Belluccini <[email protected]> wrote:
> >
> > > Compile a kernel image disabling pmem, enabling vesa, enabling
> > > hardware stuff...
> > > Use the old eee_701 target files (replace the compiled kernel).
> > > Modify:
> > > - system/core/mountd/Android.mk (add an if to make them compile for
> > > x86 arch or specific target)
> > > - external/e2fsprogs/Android.mk (include them for x86 arch - they're
> > > necessary for installer)
> > > - vendor/asus/eee_701/init.rc (add ro.HOME_APP_ADJ 4 and
> > > ro.HOME_APP_MEM 4096)
> > > - frameworks/base/preloaded-classes (comment out some ATM non existent
> > > classes PhoneWindow and derived)
> > > - frameworks/base/services/jni/com_android_server_BatteryService.cpp
> > > (added some stuff for faking battery status)
> >
> > > @@ -15,6 +15,7 @@
> > >   */
> >
> > >  #define LOG_TAG "BatteryService"
> > > +#define eee_701 1
> >
> > >  #include "JNIHelp.h"
> > >  #include "jni.h"
> > > @@ -79,6 +80,7 @@
> >
> > >  static jint getBatteryStatus(const char* status)
> > >  {
> > > +    if(eee_701) return gConstants.statusUnknown;
> > >      switch (status[0]) {
> > >          case 'C': return gConstants.statusCharging;         //
> > > Charging
> > >          case 'D': return gConstants.statusDischarging;      //
> > > Discharging
> > > @@ -95,6 +97,7 @@
> >
> > >  static jint getBatteryHealth(const char* status)
> > >  {
> > > +    if(eee_701) return gConstants.healthUnknown;
> > >      switch (status[0]) {
> > >          case 'D': return gConstants.healthDead;         // Dead
> > >          case 'G': return gConstants.healthGood;         // Good
> > > @@ -126,6 +129,7 @@
> >
> > >  static int readFromFile(const char* path, char* buf, size_t size)
> > >  {
> > > +    if(eee_701) return size;
> > >      int fd = open(path, O_RDONLY, 0);
> > >      if (fd == -1) {
> > >          LOGE("Could not open '%s'", path);
> > > @@ -151,11 +155,13 @@
> > >      char buf[SIZE];
> >
> > >      jboolean value = false;
> > > +
> > >      if (readFromFile(path, buf, SIZE) > 0) {
> > >          if (buf[0] == '1') {
> > >              value = true;
> > >          }
> > >      }
> > > +    if (eee_701) value = true;
> > >      env->SetBooleanField(obj, fieldID, value);
> > >  }
> >
> > > @@ -168,6 +174,7 @@
> > >      if (readFromFile(path, buf, SIZE) > 0) {
> > >          value = atoi(buf);
> > >      }
> > > +    if (eee_701) value = 1;
> > >      env->SetIntField(obj, fieldID, value);
> > >  }
> >
> > > - vendor/asus/eee_701/BoardConfig.mk (append vga=788 to
> > > BOARD_KERNEL_CMDLINE)
> > > Make install_img and as usual...
> >
> >
> > 


--~--~---------~--~----~------------~-------~--~----~
unsubscribe: [email protected]
website: http://groups.google.com/group/android-porting
-~----------~----~----~----~------~----~------~--~---

Reply via email to