Subversion Repositories freemyipod

Rev

Rev 845 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 845 Rev 960
Line 43... Line 43...
43
    pmu_init();
43
    pmu_init();
44
}                          
44
}                          
45
 
45
 
46
bool charging_state(void)
46
bool charging_state(void)
47
{
47
{
48
    return false;
48
    return (PDAT(11) & 0x10) ? false : true;
49
}
49
}
50
 
50
 
51
bool external_power_state(void)
51
bool vbus_state(void)
52
{
52
{
53
    return (PDAT(12) & 8) ? false : true;
53
    return (PDAT(11) & 0x20) ? false : true;
54
}
54
}
55
 
55
 
56
bool vbus_state(void)
56
bool external_power_state(void)
57
{
57
{
58
    return (PDAT(12) & 8) ? false : true;
58
    return vbus_state();
59
}
59
}
60
 
60
 
61
int read_battery_voltage(int battery)
61
int read_battery_voltage(int battery)
62
{
62
{
63
    if (battery == 0) return pmu_read_battery_voltage();
63
    if (battery == 0) return pmu_read_battery_voltage();
Line 83... Line 83...
83
}
83
}
84
 
84
 
85
int read_battery_mwh_current(int battery)
85
int read_battery_mwh_current(int battery)
86
{
86
{
87
    // TODO: Approximate that better
87
    // TODO: Approximate that better
88
    if (battery == 0) return (read_battery_voltage(0) - 3600) * 3;
88
    if (battery == 0) return MAX(0, (read_battery_voltage(0) - 3600) * 3);
89
    return -1;
89
    return -1;
90
}
90
}
91
 
91
 
92
int read_battery_mw(int battery)
92
int read_battery_mw(int battery)
93
{
93
{
Line 95... Line 95...
95
}
95
}
96
 
96
 
97
enum battery_state read_battery_state(int battery)
97
enum battery_state read_battery_state(int battery)
98
{
98
{
99
    if (battery != 0) return BATTERY_STATE_INVALID;
99
    if (battery != 0) return BATTERY_STATE_INVALID;
-
 
100
    if (read_battery_voltage(0) < 100) return BATTERY_STATE_NONPRESENT;
100
    if (charging_state()) return BATTERY_STATE_CHARGING;
101
    if (charging_state()) return BATTERY_STATE_CHARGING;
101
    if (external_power_state()) return BATTERY_STATE_IDLE;
102
    if (external_power_state()) return BATTERY_STATE_IDLE;
102
    return BATTERY_STATE_DISCHARGING;
103
    return BATTERY_STATE_DISCHARGING;
103
}
104
}
104
 
105
 
Line 121... Line 122...
121
{
122
{
122
    if (input != 0) return INPUT_STATE_INVALID;
123
    if (input != 0) return INPUT_STATE_INVALID;
123
    if (external_power_state()) return INPUT_STATE_ACTIVE;
124
    if (external_power_state()) return INPUT_STATE_ACTIVE;
124
    return INPUT_STATE_NONPRESENT;
125
    return INPUT_STATE_NONPRESENT;
125
}
126
}
-
 
127