Hi

we are using TI BQ27210 <http://www.ti.com/product/BQ27210> in our project 
for Battery voltage monitoring purpose.we are using the default driver 
bq27x00_battery .c provided with Android JB4.3.we are able to read the  
entries from the battery driver through sysfs properly.But these details 
are not getting posted to the Android User space properly

we are seeing that power_supply_changed is not triggering the UEventThread' 
run function which is waiting on this event. in file 
frameworks/base/core/java/android/os/UEventObserver.java  i.e 

/*******************************************************************

private static final class UEventThread extends Thread {
       ...................

            while (true) {
                Log.d(TAG, "***************nativeWaitForNextEvent()");
                String message = nativeWaitForNextEvent();
                Log.d(TAG, "***************got event from ---- 
nativeWaitForNextEvent()");
                if (message != null) {
                    if (DEBUG) {
                        Log.d(TAG, message);
                    }
                Log.d(TAG, "***************send event!");
                    sendEvent(message);
                }
            }
        }

****************************************************************************************

And below is our driver code which triggers power_supply changed 
function.This is being called every 120 seconds properly

static void bq27x00_update(struct bq27x00_device_info *di)
{
        .....................some code here.........................

        /* Ignore current_now which is a snapshot of the current battery 
state
         * and is likely to be different even between two consecutive reads 
*/
        if (memcmp(&di->cache, &cache, sizeof(cache) - sizeof(int)) != 0) {
                di->cache = cache;
                printk(KERN_ERR "BQ27x00 power_supply_changed\n");
                power_supply_changed(&di->bat);
        }

        di->last_update = jiffies;
}

We are stuck.Please guide us in right direction.I found a clue in this 
direction that is I see a error value returned for the function call 
kobject_uevent as -2 (temp1 = -2) in below code.I dont know how to go ahead.

static void power_supply_changed_work(struct work_struct *work)
{
        unsigned long flags;
        int temp1;
        struct power_supply *psy = container_of(work, struct power_supply,
                                                changed_work);

        dev_dbg(psy->dev, "%s changed flag = %d\n ", __func__,psy->changed);

        spin_lock_irqsave(&psy->changed_lock, flags);
        if (psy->changed) {
                psy->changed = false;
                spin_unlock_irqrestore(&psy->changed_lock, flags);

                class_for_each_device(power_supply_class, NULL, psy,
                                      __power_supply_changed_work);

                power_supply_update_leds(psy);

                temp1 = kobject_uevent(&psy->dev->kobj, KOBJ_CHANGE);
                dev_dbg(psy->dev,"temp 1 = %d",temp1);
                spin_lock_irqsave(&psy->changed_lock, flags);
        }
        if (!psy->changed)
                wake_unlock(&psy->work_wake_lock);
        spin_unlock_irqrestore(&psy->changed_lock, flags);
}

 Regards

Anand

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

--- 
You received this message because you are subscribed to the Google Groups 
"android-porting" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to