• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2022 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 #ifndef NAPI_PARSER_UTILS_H
17 #define NAPI_PARSER_UTILS_H
18 
19 #include "napi_bluetooth_utils.h"
20 
21 namespace OHOS {
22 namespace Bluetooth {
23 
24 struct NapiBleDescriptor {
25     UUID serviceUuid;
26     UUID characteristicUuid;
27     UUID descriptorUuid;
28     std::vector<uint8_t> descriptorValue;
29 };
30 
31 struct NapiBleCharacteristic {
32     UUID serviceUuid;
33     UUID characteristicUuid;
34     std::vector<uint8_t> characteristicValue;
35     std::vector<NapiBleDescriptor> descriptors;
36 };
37 
38 struct NapiGattService {
39     UUID serviceUuid;
40     bool isPrimary;
41     std::vector<NapiBleCharacteristic> characteristics;
42     std::vector<NapiGattService> includeServices;
43 };
44 
45 napi_status NapiParseBoolean(napi_env env, napi_value value, bool &outBoolean);
46 napi_status NapiParseInt32(napi_env env, napi_value value, int32_t &outNum);
47 napi_status NapiParseUint32(napi_env env, napi_value value, uint32_t &outNum);
48 napi_status NapiParseString(napi_env env, napi_value value, std::string &outStr);
49 napi_status NapiParseBdAddr(napi_env env, napi_value value, std::string &outAddr);
50 napi_status NapiParseUuid(napi_env env, napi_value value, std::string &outUuid);
51 napi_status NapiParseArrayBuffer(napi_env env, napi_value value, std::vector<uint8_t> &outVec);
52 napi_status NapiParseGattService(napi_env env, napi_value object, NapiGattService &outService);
53 napi_status NapiParseGattCharacteristic(napi_env env, napi_value object, NapiBleCharacteristic &outCharacteristic);
54 napi_status NapiParseGattDescriptor(napi_env env, napi_value object, NapiBleDescriptor &outDescriptor);
55 napi_status NapiParseNotifyCharacteristic(napi_env env, napi_value object, NapiNotifyCharacteristic &outCharacter);
56 napi_status NapiParseGattsServerResponse(napi_env env, napi_value object, NapiGattsServerResponse &rsp);
57 
58 // must have the 'name' property
59 napi_status NapiGetObjectProperty(napi_env env, napi_value object, const char *name, napi_value &outProperty);
60 napi_status NapiParseObjectBoolean(napi_env env, napi_value object, const char *name, bool &outBoolean);
61 napi_status NapiParseObjectUuid(napi_env env, napi_value object, const char *name, std::string &outUuid);
62 napi_status NapiParseObjectArrayBuffer(napi_env env, napi_value value, const char *name, std::vector<uint8_t> &outVec);
63 napi_status NapiParseObjectBdAddr(napi_env env, napi_value object, const char *name, std::string &outAddr);
64 napi_status NapiParseObjectInt32(napi_env env, napi_value object, const char *name, int32_t &outNum);
65 napi_status NapiParseObjectUint32(napi_env env, napi_value object, const char *name, uint32_t &outNum);
66 
67 napi_status NapiGetObjectPropertyOptional(napi_env env, napi_value object, const char *name, napi_value &outProperty,
68     bool &outExist);
69 napi_status NapiParseObjectBooleanOptional(napi_env env, napi_value object, const char *name, bool &outBoolean,
70     bool &outExist);
71 napi_status NapiParseObjectInt32Optional(napi_env env, napi_value object, const char *name, int32_t &outNum,
72     bool &outExist);
73 napi_status NapiParseObjectUint32Optional(napi_env env, napi_value object, const char *name, uint32_t &outNum,
74     bool &outExist);
75 
76 // Parse type Array<XXX>, must implete NapiParseObject<XXX> in napi_parser_utils.cpp.
77 template <typename T>
78 napi_status NapiParseArray(napi_env env, napi_value value, std::vector<T> &outVec);
79 template <typename T>
80 napi_status NapiParseObjectArray(napi_env env, napi_value object, const char *name, std::vector<T> &outVec);
81 }  // namespace Bluetooth
82 }  // namespace OHOS
83 #endif  // NAPI_PARSER_UTILS_H