• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include <js_native_api.h>
17 #include "napi/native_api.h"
18 #include "native_display_soloist/native_display_soloist.h"
19 #include "hilog/log.h"
20 
21 #define SUCCESS           0
22 #define FAIL              (-1)
23 #define FRAME_RATE_30_HZ  30
24 #define FRAME_RATE_60_HZ  60
25 #define FRAME_RATE_90_HZ  90
26 #define FRAME_RATE_120_HZ 120
27 #define SLEEP_TIME_US     100000
28 #define EXEC_SUCCESS      0
29 #define SOLOIST_ERROR     (-1)
30 
OnVSync(long long timestamp,long long targetTimestamp,void * data)31 static void OnVSync(long long timestamp, long long targetTimestamp, void* data)
32 {
33 }
34 
OHDisplaySoloistCreate001(napi_env env,napi_callback_info info)35 static napi_value OHDisplaySoloistCreate001(napi_env env, napi_callback_info info)
36 {
37     napi_value result = nullptr;
38     OH_DisplaySoloist *nativeDisplaySoloist = nullptr;
39     nativeDisplaySoloist = OH_DisplaySoloist_Create(false);
40     if (nativeDisplaySoloist != nullptr) {
41         napi_create_int32(env, SUCCESS, &result);
42     } else {
43         napi_create_int32(env, FAIL, &result);
44     }
45     OH_DisplaySoloist_Destroy(nativeDisplaySoloist);
46     return result;
47 }
48 
OHDisplaySoloistStart001(napi_env env,napi_callback_info info)49 static napi_value OHDisplaySoloistStart001(napi_env env, napi_callback_info info)
50 {
51     napi_value result = nullptr;
52     OH_DisplaySoloist_FrameCallback callback = OnVSync;
53     int32_t resultStart = OH_DisplaySoloist_Start(nullptr, callback, nullptr);
54     if (resultStart == SOLOIST_ERROR) {
55         napi_create_int32(env, SUCCESS, &result);
56     } else {
57         napi_create_int32(env, FAIL, &result);
58     }
59     return result;
60 }
61 
OHDisplaySoloistStart002(napi_env env,napi_callback_info info)62 static napi_value OHDisplaySoloistStart002(napi_env env, napi_callback_info info)
63 {
64     napi_value result = nullptr;
65     OH_DisplaySoloist *nativeDisplaySoloist = nullptr;
66     OH_DisplaySoloist_FrameCallback callback = OnVSync;
67     nativeDisplaySoloist = OH_DisplaySoloist_Create(false);
68     int32_t resultStart = OH_DisplaySoloist_Start(nativeDisplaySoloist, callback, nullptr);
69     if (resultStart == EXEC_SUCCESS) {
70         napi_create_int32(env, SUCCESS, &result);
71     } else {
72         napi_create_int32(env, FAIL, &result);
73     }
74     OH_DisplaySoloist_Destroy(nativeDisplaySoloist);
75     return result;
76 }
77 
OHDisplaySoloistSetExpectedFrameRateRange001(napi_env env,napi_callback_info info)78 static napi_value OHDisplaySoloistSetExpectedFrameRateRange001(napi_env env, napi_callback_info info)
79 {
80     napi_value result = nullptr;
81     OH_DisplaySoloist *nativeDisplaySoloist = nullptr;
82     DisplaySoloist_ExpectedRateRange validRange = { FRAME_RATE_30_HZ, FRAME_RATE_120_HZ, FRAME_RATE_60_HZ };
83     nativeDisplaySoloist = OH_DisplaySoloist_Create(false);
84     if ((OH_DisplaySoloist_SetExpectedFrameRateRange(nullptr, &validRange) == SOLOIST_ERROR) ||
85         (OH_DisplaySoloist_SetExpectedFrameRateRange(nativeDisplaySoloist, nullptr) == SOLOIST_ERROR)) {
86         napi_create_int32(env, SUCCESS, &result);
87     } else {
88         napi_create_int32(env, FAIL, &result);
89     }
90     OH_DisplaySoloist_Destroy(nativeDisplaySoloist);
91     return result;
92 }
93 
OHDisplaySoloistSetExpectedFrameRateRange002(napi_env env,napi_callback_info info)94 static napi_value OHDisplaySoloistSetExpectedFrameRateRange002(napi_env env, napi_callback_info info)
95 {
96     napi_value result = nullptr;
97     DisplaySoloist_ExpectedRateRange invalidRange = { FRAME_RATE_30_HZ, FRAME_RATE_90_HZ, FRAME_RATE_120_HZ };
98     int32_t resultRange = OH_DisplaySoloist_SetExpectedFrameRateRange(nullptr, &invalidRange);
99     if (resultRange == SOLOIST_ERROR) {
100         napi_create_int32(env, SUCCESS, &result);
101     } else {
102         napi_create_int32(env, FAIL, &result);
103     }
104     return result;
105 }
106 
OHDisplaySoloistSetExpectedFrameRateRange003(napi_env env,napi_callback_info info)107 static napi_value OHDisplaySoloistSetExpectedFrameRateRange003(napi_env env, napi_callback_info info)
108 {
109     napi_value result = nullptr;
110     OH_DisplaySoloist *nativeDisplaySoloist = nullptr;
111     DisplaySoloist_ExpectedRateRange validRange = { FRAME_RATE_30_HZ, FRAME_RATE_120_HZ, FRAME_RATE_60_HZ };
112     nativeDisplaySoloist = OH_DisplaySoloist_Create(false);
113     int32_t resultRange = OH_DisplaySoloist_SetExpectedFrameRateRange(nativeDisplaySoloist, &validRange);
114     if (resultRange == EXEC_SUCCESS) {
115         napi_create_int32(env, SUCCESS, &result);
116     } else {
117         napi_create_int32(env, FAIL, &result);
118     }
119     OH_DisplaySoloist_Destroy(nativeDisplaySoloist);
120     return result;
121 }
122 
OHDisplaySoloistStop001(napi_env env,napi_callback_info info)123 static napi_value OHDisplaySoloistStop001(napi_env env, napi_callback_info info)
124 {
125     napi_value result = nullptr;
126     int32_t resultStop = OH_DisplaySoloist_Stop(nullptr);
127     if (resultStop == SOLOIST_ERROR) {
128         napi_create_int32(env, SUCCESS, &result);
129     } else {
130         napi_create_int32(env, FAIL, &result);
131     }
132     return result;
133 }
134 
OHDisplaySoloistStop002(napi_env env,napi_callback_info info)135 static napi_value OHDisplaySoloistStop002(napi_env env, napi_callback_info info)
136 {
137     napi_value result = nullptr;
138     OH_DisplaySoloist *nativeDisplaySoloist = nullptr;
139     nativeDisplaySoloist = OH_DisplaySoloist_Create(false);
140     int32_t resultStop = OH_DisplaySoloist_Stop(nativeDisplaySoloist);
141     if (resultStop == EXEC_SUCCESS) {
142         napi_create_int32(env, SUCCESS, &result);
143     } else {
144         napi_create_int32(env, FAIL, &result);
145     }
146     OH_DisplaySoloist_Destroy(nativeDisplaySoloist);
147     return result;
148 }
149 
OHDisplaySoloistDestroy001(napi_env env,napi_callback_info info)150 static napi_value OHDisplaySoloistDestroy001(napi_env env, napi_callback_info info)
151 {
152     napi_value result = nullptr;
153     int32_t resultDestroy = OH_DisplaySoloist_Destroy(nullptr);
154     if (resultDestroy == SOLOIST_ERROR) {
155         napi_create_int32(env, SUCCESS, &result);
156     } else {
157         napi_create_int32(env, FAIL, &result);
158     }
159     return result;
160 }
161 
OHDisplaySoloistDestroy002(napi_env env,napi_callback_info info)162 static napi_value OHDisplaySoloistDestroy002(napi_env env, napi_callback_info info)
163 {
164     napi_value result = nullptr;
165     OH_DisplaySoloist *nativeDisplaySoloist = nullptr;
166     nativeDisplaySoloist = OH_DisplaySoloist_Create(false);
167     int32_t resultDestroy = OH_DisplaySoloist_Destroy(nativeDisplaySoloist);
168     if (resultDestroy == EXEC_SUCCESS) {
169         napi_create_int32(env, SUCCESS, &result);
170     } else {
171         napi_create_int32(env, FAIL, &result);
172     }
173     return result;
174 }
175 
176 EXTERN_C_START
Init(napi_env env,napi_value exports)177 static napi_value Init(napi_env env, napi_value exports)
178 {
179     napi_property_descriptor desc[] = {
180         {"oHDisplaySoloistCreate001", nullptr, OHDisplaySoloistCreate001,
181          nullptr, nullptr, nullptr, napi_default, nullptr},
182         {"oHDisplaySoloistStart001", nullptr, OHDisplaySoloistStart001,
183          nullptr, nullptr, nullptr, napi_default, nullptr},
184         {"oHDisplaySoloistStart002", nullptr, OHDisplaySoloistStart002,
185          nullptr, nullptr, nullptr, napi_default, nullptr},
186         {"oHDisplaySoloistSetExpectedFrameRateRange001", nullptr, OHDisplaySoloistSetExpectedFrameRateRange001,
187          nullptr, nullptr, nullptr, napi_default, nullptr},
188         {"oHDisplaySoloistSetExpectedFrameRateRange002", nullptr, OHDisplaySoloistSetExpectedFrameRateRange002,
189          nullptr, nullptr, nullptr, napi_default, nullptr},
190         {"oHDisplaySoloistSetExpectedFrameRateRange003", nullptr, OHDisplaySoloistSetExpectedFrameRateRange003,
191          nullptr, nullptr, nullptr, napi_default, nullptr},
192         {"oHDisplaySoloistStop001", nullptr, OHDisplaySoloistStop001,
193          nullptr, nullptr, nullptr, napi_default, nullptr},
194         {"oHDisplaySoloistStop002", nullptr, OHDisplaySoloistStop002,
195          nullptr, nullptr, nullptr, napi_default, nullptr},
196         {"oHDisplaySoloistDestroy001", nullptr, OHDisplaySoloistDestroy001,
197          nullptr, nullptr, nullptr, napi_default, nullptr},
198         {"oHDisplaySoloistDestroy002", nullptr, OHDisplaySoloistDestroy002,
199          nullptr, nullptr, nullptr, napi_default, nullptr},
200     };
201     napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc);
202     return exports;
203 }
204 
205 EXTERN_C_END
206 
207 static napi_module demoModule = {
208     .nm_version = 1,
209     .nm_flags = 0,
210     .nm_filename = nullptr,
211     .nm_register_func = Init,
212     .nm_modname = "nativeDisplaySoloistNdk",
213     .nm_priv = ((void *)0),
214     .reserved = {0},
215 };
216 
RegisterEntryModule(void)217 extern "C" __attribute__((constructor)) void RegisterEntryModule(void) { napi_module_register(&demoModule); }