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