Energy Management/em_chipset_api.h
author Arnaud Lenoir
Tue, 27 Jul 2010 14:02:05 +0100
changeset 17 fc9a6286e87d
parent 0 bb4b476bbb96
permissions -rw-r--r--
FYI - READ ONLY - contact arnaudl@symbian.org for any changes you want. Added data code availabe for OS&Base Services.

/*
  em_chipset_api.h

  Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
  All rights reserved.

  This program and the accompanying materials are made available 
  under the terms of the Eclipse Public License v1.0 which accompanies 
  this distribution, and is available at 
  http://www.eclipse.org/legal/epl-v10.html

  Initial Contributors:
  Nokia Corporation - initial contribution.

  Contributors:
*/

/** @file
 @brief Energy management chipset API

 @publishedDeviceAbstraction
 */

#ifndef EM_CHIPSET_API_H
#define EM_CHIPSET_API_H

#include <kernel.h>
#include <platform.h>

/* ---------------------------------------------------------------------------
 *
 * TYPES
 *
 */

/**
 * Type definition for the call-back function used writing to
 *  asynchronous em callback. Callback is executed in the EM chipset's context.
 */
typedef void (*HAL_EM_CALLBACK)(TUint event, TInt p1, TAny* p2);

/* ---------------------------------------------------------------------------
 *
 * FUNCTIONAL PROTOTYPES AND MACROS
 *
 */

class TEmHal
    {
    // Class declaration

    /**
     Implements EmHal chipset
     */
public:

    /* ---------------------------------------------------------------------------
     *
     * CONSTANTS
     *
     */

    enum THalEmChaEvtType
        {
        EHalEMChaChargeStarted = 1,
        EHalEmChaChargeStopped,
        EHalEamChaChargeReady,
        EHalEamChaChargeChargerType,
        EHalEamChaChargeFull,
        EHalEamChaChargeError
        };

    enum THalEmChaChargerType
        {
        EHalEmChaChargerNone = 1,
        EHalEmChaChargerSpecial,
        EHalEmChaChargerDynamo
        };

    enum THalEmChaSource
        {
        EHalEmChaSourceDynamo = 1, 
        EHalEmChaSourceUsb
        };

    enum THalEmIbatEvtType
        {
        EHalEmChaIbatStarted = 1,
        EHalEmChaIbatStopped,
        EHalEmChaIbatSampling,
        EHalEmChaIbatError
        };

    enum THalEmVbatEvtType
        {
        EHalEmVbatTxOn = 1,
        EHalEmVbatTxOff,
        EHalEmVbatChOn,
        EHalEmVbatChOff,
        EHalEmVbatError
        };

    enum THalEmBsiEvtType
        {
        EHalEmBsiFloating = 1
        };

    enum THalEmDbiEvtType
        {
        EHalEmDbiAuthenticationOk = 1,
        EHalEmDbiAuthenticationFailed,
        EHalEmDbiReadReady,
        EHalEmDbiReadError,
        EHalEmDbiWriteReady,
        EHalEmDbiWriteError
        };

    /*
     * Constructor:
     */

    TEmHal();

    /*
     * Extension entrypoint
     */

    IMPORT_C static TEmHal* hal_em_entry_point();

    /*
     * INIT (setup):
     */

    virtual void hal_em_init(HAL_EM_CALLBACK cha_handler,
            HAL_EM_CALLBACK ibat_handler, HAL_EM_CALLBACK vbat_handler,
            HAL_EM_CALLBACK bsi_handler);

    /*
     * CHARGING:
     */
    virtual TInt hal_em_cha_charge(TInt action);
    virtual TInt hal_em_cha_charge_pause(TInt action);
    virtual TInt hal_em_cha_set_target_voltage(TInt mV);
    virtual TInt hal_em_cha_set_termination_current(TInt mA);
    virtual TInt hal_em_cha_set_in_current(TInt mA);
    virtual TInt hal_em_cha_set_out_current(TInt mA);
    virtual TInt hal_em_cha_set_min_vbus_volt(TInt mv);
    virtual TInt hal_em_cha_set_charging_source(THalEmChaSource source);

    /*
     * IBAT
     */
    virtual TInt hal_em_ibat_read();
    virtual TUint hal_em_ibat_sample_time();
    virtual TUint hal_em_ibat_avg_time_get();
    virtual TInt hal_em_ibat_avg_time_set(TUint number);
    virtual TInt hal_em_ibat_avg_get();
    virtual TInt hal_em_ibat_avg_start();
    virtual TInt hal_em_ibat_avg_stop();
    virtual TInt hal_em_ibat_avg_state_get();

    /*
     * VBAT
     */

    virtual TInt hal_em_vbat_initial();
    virtual TInt hal_em_vbat_read(TUint *value);
    virtual TInt hal_em_vbat_sync(TInt action);

    /*
     * BTEMP
     */
    virtual TInt hal_em_btemp_read(TUint *value);

    /*
     * BSI
     */
    virtual TInt hal_em_bsi_read(TUint *value);

    /* WATCHDOG */
    virtual void hal_em_watchdog();

    /* DBI */

    virtual TInt hal_em_dbi_init(HAL_EM_CALLBACK dbi_handler);
    virtual TInt hal_em_dbi_authenticate(TUint8 *challenge,
            TUint8 challengelength, TUint8 *response, TUint8 responselength);
    virtual TInt
            hal_em_dbi_read(TUint address, TUint length, TUint8* readbuf);
    virtual TInt hal_em_dbi_write(TUint address, TUint length,
            TUint8* writebuf);
    };

#endif /* EM_CHIPSET_API_H */
/* End of Include File */