1 /*
2  * Copyright (C) 2015-2018 Alibaba Group Holding Limited
3  */
4 #include "iotx_dm_internal.h"
5 
6 #ifdef DEVICE_MODEL_ENABLED
7 
8 static dm_opt_ctx g_dm_opt = { 0, 0, 1, 1, 1, 60 * 1000, 0 };
9 
dm_opt_set(dm_opt_t opt,void * data)10 int dm_opt_set(dm_opt_t opt, void *data)
11 {
12     int res = SUCCESS_RETURN;
13 
14     if (data == NULL) {
15         return FAIL_RETURN;
16     }
17 
18     switch (opt) {
19 #if !defined(DEVICE_MODEL_RAWDATA_SOLO)
20     case DM_OPT_DOWNSTREAM_PROPERTY_POST_REPLY:
21         {
22             int opt = *(int *)(data);
23             g_dm_opt.prop_post_reply_opt = opt;
24         }
25         break;
26     case DM_OPT_DOWNSTREAM_EVENT_POST_REPLY:
27         {
28             int opt = *(int *)(data);
29             g_dm_opt.event_post_reply_opt = opt;
30         }
31         break;
32     case DM_OPT_UPSTREAM_PROPERTY_SET_REPLY:
33         {
34             int opt = *(int *)(data);
35             g_dm_opt.prop_set_reply_opt = opt;
36         }
37         break;
38 #endif
39 #ifdef DEVICE_MODEL_SHADOW
40     case DM_OPT_DOWNSTREAM_EVENT_PROPERTY_DESIRED_GET_REPLY:
41         {
42             int opt = *(int *)(data);
43             g_dm_opt.prop_desired_get_reply_opt = opt;
44         }
45         break;
46     case DM_OPT_DOWNSTREAM_EVENT_PROPERTY_DESIRED_DELETE_REPLY:
47         {
48             int opt = *(int *)(data);
49             g_dm_opt.prop_desired_delete_reply_opt = opt;
50         }
51         break;
52 #endif
53     case DM_OPT_FOTA_RETRY_TIMEOUT_MS:
54         {
55             int opt = *(int *)(data);
56             g_dm_opt.fota_retry_timeout_ms = opt;
57         }
58         break;
59     case DM_OPT_PROXY_PRODUCT_REGISTER:
60         {
61             int opt = *(int *)(data);
62             g_dm_opt.proxy_product_register = opt;
63         }
64         break;
65     default:
66         {
67             res = FAIL_RETURN;
68         }
69         break;
70     }
71 
72     return res;
73 }
74 
dm_opt_get(dm_opt_t opt,void * data)75 int dm_opt_get(dm_opt_t opt, void *data)
76 {
77     int res = SUCCESS_RETURN;
78 
79     if (data == NULL) {
80         return FAIL_RETURN;
81     }
82 
83     switch (opt) {
84 #if !defined(DEVICE_MODEL_RAWDATA_SOLO)
85     case DM_OPT_DOWNSTREAM_PROPERTY_POST_REPLY:
86         {
87             *(int *)(data) = g_dm_opt.prop_post_reply_opt;
88         }
89         break;
90     case DM_OPT_DOWNSTREAM_EVENT_POST_REPLY:
91         {
92             *(int *)(data) = g_dm_opt.event_post_reply_opt;
93         }
94         break;
95     case DM_OPT_UPSTREAM_PROPERTY_SET_REPLY:
96         {
97             *(int *)(data) = g_dm_opt.prop_set_reply_opt;
98         }
99         break;
100 #endif
101 #ifdef DEVICE_MODEL_SHADOW
102     case DM_OPT_DOWNSTREAM_EVENT_PROPERTY_DESIRED_DELETE_REPLY:
103         {
104             *(int *)(data) = g_dm_opt.prop_desired_delete_reply_opt;
105         }
106         break;
107     case DM_OPT_DOWNSTREAM_EVENT_PROPERTY_DESIRED_GET_REPLY:
108         {
109             *(int *)(data) = g_dm_opt.prop_desired_get_reply_opt;
110         }
111         break;
112 #endif
113     case DM_OPT_FOTA_RETRY_TIMEOUT_MS:
114         {
115             *(int *)(data) = g_dm_opt.fota_retry_timeout_ms;
116         }
117         break;
118     case DM_OPT_PROXY_PRODUCT_REGISTER:
119         {
120             *(int *)(data) = g_dm_opt.proxy_product_register;
121         }
122         break;
123     default:
124         {
125             res = FAIL_RETURN;
126         }
127         break;
128     }
129 
130     return res;
131 }
132 #endif
133