1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
#include "console.h"
#include "smart_battery.h"
#include "smart_battery_stub.h"
#include "uart.h"
#include "util.h"
static int mock_temperature = 2981;
static int mock_desire_voltage = 7000;
static int mock_desire_current = 3000;
static int mock_voltage = 6000;
static int mock_current = 3000;
int sb_read(int cmd, int *param)
{
switch (cmd)
{
case SB_TEMPERATURE:
*param = mock_temperature;
break;
case SB_VOLTAGE:
*param = mock_voltage;
break;
case SB_CURRENT:
*param = mock_current;
break;
case SB_RELATIVE_STATE_OF_CHARGE:
case SB_ABSOLUTE_STATE_OF_CHARGE:
*param = 70; /* 70% charged */
break;
case SB_REMAINING_CAPACITY:
*param = 7000; /* 7000 mAh */
break;
case SB_FULL_CHARGE_CAPACITY:
case SB_DESIGN_CAPACITY:
*param = 10000; /* 10000 mAh */
break;
case SB_AVERAGE_TIME_TO_EMPTY:
case SB_RUN_TIME_TO_EMPTY:
*param = 60; /* 60 min to empty */
break;
case SB_AVERAGE_TIME_TO_FULL:
*param = 30; /* 30 min to full */
break;
case SB_CHARGING_CURRENT:
*param = mock_desire_current;
break;
case SB_CHARGING_VOLTAGE:
*param = mock_desire_voltage;
break;
case SB_CYCLE_COUNT:
*param = 10;
break;
case SB_DESIGN_VOLTAGE:
*param = 7400; /* 7.4 V */
break;
case SB_SERIAL_NUMBER:
*param = 112233;
break;
default:
*param = 0;
break;
}
return EC_SUCCESS;
}
int sb_write(int cmd, int param)
{
uart_printf("sb_write: cmd = %d, param = %d\n", cmd, param);
return EC_SUCCESS;
}
static int command_sb_mock(int argc, char **argv)
{
char *e;
int v;
if (argc < 3)
return EC_ERROR_PARAM_COUNT;
v = strtoi(argv[2], &e, 0);
if (*e)
return EC_ERROR_PARAM2;
if (!strcasecmp(argv[1], "temperature"))
mock_temperature = v;
else if (!strcasecmp(argv[1], "desire_voltage"))
mock_desire_voltage = v;
else if (!strcasecmp(argv[1], "desire_current"))
mock_desire_current = v;
else if (!strcasecmp(argv[1], "voltage"))
mock_voltage = v;
else if (!strcasecmp(argv[1], "current"))
mock_current = v;
else
return EC_ERROR_PARAM1;
return EC_SUCCESS;
}
DECLARE_CONSOLE_COMMAND(sbmock, command_sb_mock,
"name value",
"Mock smart battery attribute",
NULL);
|