1 /*
2 * Copyright (C) 2025 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 "ohos.nfc.controller.nfcController.proj.hpp"
17 #include "ohos.nfc.controller.nfcController.impl.hpp"
18 #include "taihe/runtime.hpp"
19
20 #include "loghelper.h"
21 #include "nfc_controller.h"
22 #include "nfc_taihe_controller_event.h"
23
24 using namespace taihe;
25 using namespace ohos::nfc::controller::nfcController;
26
27 namespace {
isNfcAvailable()28 bool isNfcAvailable()
29 {
30 InfoLog("isNfcAvailable, enter");
31 return OHOS::NFC::KITS::NfcController::GetInstance().IsNfcAvailable();
32 }
33
onNfcStateChange(callback_view<void (NfcState)> callback)34 void onNfcStateChange(callback_view<void(NfcState)> callback)
35 {
36 InfoLog("onNfcStateChange, enter");
37 OHOS::NFC::KITS::NfcStateEventRegister::GetInstance().Register(callback);
38 }
39
offNfcStateChange(optional_view<callback<void (NfcState)>> callback)40 void offNfcStateChange(optional_view<callback<void(NfcState)>> callback)
41 {
42 InfoLog("offNfcStateChange, enter");
43 OHOS::NFC::KITS::NfcStateEventRegister::GetInstance().Unregister();
44 }
45
openNfc()46 bool openNfc()
47 {
48 InfoLog("openNfc, enter");
49 int status = OHOS::NFC::KITS::NfcController::GetInstance().TurnOn();
50 return (status == OHOS::NFC::KITS::ERR_NONE);
51 }
52
enableNfc()53 void enableNfc()
54 {
55 InfoLog("enableNfc, enter");
56 OHOS::NFC::KITS::NfcController::GetInstance().TurnOn();
57 }
58
closeNfc()59 bool closeNfc()
60 {
61 InfoLog("closeNfc, enter");
62 int status = OHOS::NFC::KITS::NfcController::GetInstance().TurnOff();
63 return (status == OHOS::NFC::KITS::ERR_NONE);
64 }
65
disableNfc()66 void disableNfc()
67 {
68 InfoLog("disableNfc, enter");
69 OHOS::NFC::KITS::NfcController::GetInstance().TurnOff();
70 }
71
isNfcOpen()72 bool isNfcOpen()
73 {
74 InfoLog("isNfcOpen, enter");
75 bool isOpen = false;
76 int statusCode = OHOS::NFC::KITS::NfcController::GetInstance().IsNfcOpen(isOpen);
77 if (statusCode != OHOS::NFC::KITS::ERR_NONE) {
78 ErrorLog("isNfcOpen, statusCode = %{public}d", statusCode);
79 }
80 return isOpen;
81 }
82
getNfcState()83 NfcState getNfcState()
84 {
85 InfoLog("getNfcState, enter");
86 int nfcState = OHOS::NFC::KITS::NfcController::GetInstance().GetNfcState();
87 return NfcState::from_value(nfcState);
88 }
89 } // namespace
90
91 // Since these macros are auto-generate, lint will cause false positive.
92 // NOLINTBEGIN
93 TH_EXPORT_CPP_API_isNfcAvailable(isNfcAvailable);
94 TH_EXPORT_CPP_API_onNfcStateChange(onNfcStateChange);
95 TH_EXPORT_CPP_API_offNfcStateChange(offNfcStateChange);
96 TH_EXPORT_CPP_API_openNfc(openNfc);
97 TH_EXPORT_CPP_API_enableNfc(enableNfc);
98 TH_EXPORT_CPP_API_closeNfc(closeNfc);
99 TH_EXPORT_CPP_API_disableNfc(disableNfc);
100 TH_EXPORT_CPP_API_isNfcOpen(isNfcOpen);
101 TH_EXPORT_CPP_API_getNfcState(getNfcState);
102 // NOLINTEND
103