1 /*
2 * Copyright (C) 2015-2019 Alibaba Group Holding Limited
3 */
4
5 #include <stdio.h>
6 #include <string.h>
7
8 #include "amp_config.h"
9 #include "amp_defines.h"
10 #include "aos_system.h"
11 #include "be_inl.h"
12
13
14 #define MOD_STR "Battery"
15
native_battery_conn_state_get(duk_context * ctx)16 static duk_ret_t native_battery_conn_state_get(duk_context *ctx)
17 {
18 int ret = -1;
19 int state;
20
21 if (aos_battery_connect_state_get(&state)) {
22 amp_error(MOD_STR, "get battery connect state fail");
23 goto out;
24 }
25
26 ret = state;
27 out:
28 duk_push_int(ctx, ret);
29 return 1;
30 }
31
native_battery_voltage_get(duk_context * ctx)32 static duk_ret_t native_battery_voltage_get(duk_context *ctx)
33 {
34 int ret = -1;
35 int voltage;
36
37 if (aos_battery_voltage_get(&voltage)) {
38 amp_error(MOD_STR, "get battery voltage fail");
39 goto out;
40 }
41
42 ret = voltage;
43 out:
44 duk_push_int(ctx, ret);
45 return 1;
46 }
47
native_battery_level_get(duk_context * ctx)48 static duk_ret_t native_battery_level_get(duk_context *ctx)
49 {
50 int ret = -1;
51 int level;
52
53 if (aos_battery_level_get(&level)) {
54 amp_error(MOD_STR, "get battery level fail");
55 goto out;
56 }
57
58 ret = level;
59 out:
60 duk_push_int(ctx, ret);
61 return 1;
62 }
63
native_battery_temperature_get(duk_context * ctx)64 static duk_ret_t native_battery_temperature_get(duk_context *ctx)
65 {
66 int ret = -1;
67 int temperature;
68
69 if (aos_battery_temperature_get(&temperature)) {
70 amp_error(MOD_STR, "get battery temperature fail");
71 goto out;
72 }
73
74 ret = temperature;
75 out:
76 duk_push_int(ctx, ret);
77 return 1;
78 }
79
module_battery_register(void)80 void module_battery_register(void)
81 {
82 duk_context *ctx = be_get_context();
83 duk_push_object(ctx);
84
85 AMP_ADD_FUNCTION("getConnectState", native_battery_conn_state_get, 0);
86 AMP_ADD_FUNCTION("getVoltage", native_battery_voltage_get, 0);
87 AMP_ADD_FUNCTION("getLevel", native_battery_level_get, 0);
88 AMP_ADD_FUNCTION("getTemperature", native_battery_temperature_get, 0);
89
90 duk_put_prop_string(ctx, -2, "Battery");
91 }
92
93