summaryrefslogtreecommitdiff
path: root/common/mock_smart_battery_stub.c
blob: 49b44859c98e61406b902821b0db4ba12fd1fbda (plain)
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);