📄 headset_charger.c
字号:
/****************************************************************************
Copyright (C) Cambridge Silicon Radio Ltd. 2005-2007
FILE NAME
headset_charger.c
DESCRIPTION
This file contains the battery charging functionality for NiMH batteries.
NOTES
*/
/****************************************************************************
Header files
*/
#include "headset_charger.h"
#include "headset_debug.h"
#include "headset_private.h"
#include <charger.h>
#include <pio.h>
#include <vm.h>
#ifdef DEBUG_CHARGER
#define CH_DEBUG(x) DEBUG(x)
#else
#define CH_DEBUG(x)
#endif
#define SET_CHARGER_STATE(s) (power->charger.state = s);
/* Private messages for controlling battery charging process */
#define CHARGER_MESSAGE_BASE (0)
enum
{
CHARGER_MONITOR = CHARGER_MESSAGE_BASE
};
/* Local function prototypes */
static void charger_handler(Task task, MessageId id, Message message);
/*static void chargerError(power_type* power);*/
/****************************************************************************
FUNCTIONS
*/
/****************************************************************************
NAME
charger_handler
DESCRIPTION
Messages for the charger control task arrive here
RETURNS
void
*/
static void charger_handler(Task task, MessageId id, Message message)
{
/* Get Power configuration data */
power_type* power = ((hsTaskData *)getAppTask())->power;
charger_status lcharger_status = NOT_CHARGING ;
lcharger_status = ChargerStatus() ;
/* Process message */
switch(id)
{
/* Monitor onchip LiON battery charger */
case CHARGER_MONITOR:
CH_DEBUG(("CH: monitor status = %d\n",lcharger_status));
switch (lcharger_status)
{
case CHARGING :
case TRICKLE_CHARGE :
case FAST_CHARGE :
MessageSend(getAppTask(), EventFastCharge, 0);
break ;
case DISABLED_ERROR :
case STANDBY :
case NO_POWER :
case NOT_CHARGING :
default:
MessageSend(getAppTask(), EventTrickleCharge, 0);
break ;
}
/* Monitoring period of 1s whilst charger is plugged in */
MessageSendLater(&power->charger.task, CHARGER_MONITOR, 0, D_SEC(1));
break;
default:
break;
}
}
/****************************************************************************
NAME
chargerError
DESCRIPTION
This function is called if a charger error is detected
RETURNS
void
*/
/*
static void chargerError(power_type* power)
{
CH_DEBUG(("CH: Error\n"));
SET_CHARGER_STATE(charge_error);
MessageSend(getAppTask(), EventCancelLedIndication, 0);
MessageSend(getAppTask(), EventChargeError, 0);
}
*/
/*****************************************************************************/
void chargerInit(power_type* power)
{
CH_DEBUG(("CH: Init\n"));
/* Setup charger message task handler */
power->charger.task.handler = charger_handler;
/* Assume charger disconnected at boot time */
power->charger.state = disconnected;
}
/*****************************************************************************/
void chargerConnected(power_type* power)
{
CH_DEBUG(("CH: Connected\n"));
switch(power->charger.state)
{
case disconnected:
/* LiON Handled automatically */
/* Fast charge state */
SET_CHARGER_STATE(fast_charge);
/* Enable fast charge PIO line */
/*setChargeEnable(TRUE);*/
/* Start monitoring onchip LiON battery charger status */
MessageSend(&power->charger.task, CHARGER_MONITOR, 0);
/* Disable deep sleep during charging */
VmDeepSleepEnable(FALSE);
break;
case trickle_charge:
case fast_charge:
case charge_error:
break;
}
}
/*****************************************************************************/
void chargerDisconnected(power_type* power)
{
CH_DEBUG(("CH: Disconnected\n"));
switch(power->charger.state)
{
case trickle_charge:
case fast_charge:
case charge_error:
/* The charger has just been removed, move to disconnected state */
SET_CHARGER_STATE(disconnected);
/* Cancel any pending LiON battery charger status monitoring messages */
MessageCancelAll(&power->charger.task, CHARGER_MONITOR);
/* Cancel current LED indication */
MessageSend(getAppTask(), EventCancelLedIndication, 0);
/* Disable fast charge enable PIO line */
/*setChargeEnable(FALSE);*/
/* Enable deep sleep */
VmDeepSleepEnable(TRUE);
break;
case disconnected:
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -