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 #ifndef I_NFC_SERVICE_H
16 #define I_NFC_SERVICE_H
17 #include "element_name.h"
18 #include "iforeground_callback.h"
19 
20 namespace OHOS {
21 namespace NFC {
22 namespace TAG {
23     class TagDispatcher;
24 #ifdef NDEF_WIFI_ENABLED
25     class WifiConnectionManager;
26 #endif
27 #ifdef NDEF_BT_ENABLED
28     class BtConnectionManager;
29 #endif
30 }
31 class NfcEventHandler;
32 class NfcPollingManager;
33 class NfcRoutingManager;
34 class CeService;
35 enum class NfcCommonEvent {
36     // tags found
37     MSG_TAG_FOUND = 0,
38     MSG_TAG_DEBOUNCE,
39     MSG_TAG_LOST,
40 
41     // screen changed
42     MSG_SCREEN_CHANGED,
43 
44     // package updated
45     MSG_PACKAGE_UPDATED,
46 
47     // card emulation
48     MSG_ROUTE_AID,
49     MSG_COMMIT_ROUTING,
50     MSG_COMPUTE_ROUTING_PARAMS,
51 
52     // field activated
53     MSG_FIELD_ACTIVATED,
54 
55     // field deactivated
56     MSG_FIELD_DEACTIVATED,
57 
58     // notify field on
59     MSG_NOTIFY_FIELD_ON,
60 
61     // notify field off
62     MSG_NOTIFY_FIELD_OFF,
63     MSG_NOTIFY_FIELD_OFF_TIMEOUT,
64 
65     // device shutdown
66     MSG_SHUTDOWN,
67 
68     // datashare ready
69     MSG_DATA_SHARE_READY,
70 
71 #ifdef VENDOR_APPLICATIONS_ENABLED
72     // vendor event
73     MSG_VENDOR_EVENT,
74 #endif
75 #ifdef NDEF_WIFI_ENABLED
76     // for connect wifi by ndef wifi tag
77     MSG_WIFI_ENABLE_TIMEOUT,
78     MSG_WIFI_CONNECT_TIMEOUT,
79     MSG_WIFI_ENABLED,
80     MSG_WIFI_CONNECTED,
81     MSG_WIFI_NTF_CLICKED,
82 #endif
83 #ifdef NDEF_BT_ENABLED
84     // for connect BT by ndef bt tag
85     MSG_BT_ENABLE_TIMEOUT,
86     MSG_BT_PAIR_TIMEOUT,
87     MSG_BT_CONNECT_TIMEOUT,
88     MSG_BT_ENABLED,
89     MSG_BT_PAIR_STATUS_CHANGED,
90     MSG_BT_CONNECT_STATUS_CHANGED,
91     MSG_BT_NTF_CLICKED,
92 #endif
93 };
94 
95 enum class ScreenState {
96     SCREEN_STATE_UNKNOWN = 0x00,
97     SCREEN_STATE_OFF_UNLOCKED = 0x01,
98     SCREEN_STATE_OFF_LOCKED = 0x02,
99     SCREEN_STATE_ON_LOCKED = 0x04,
100     SCREEN_STATE_ON_UNLOCKED = 0x08,
101     // Polling mask
102     SCREEN_POLLING_TAG_MASK = 0x10,
103     SCREEN_POLLING_READER_MASK = 0x40
104 };
105 
106 class INfcService {
107 public:
~INfcService()108     virtual ~INfcService() {}
109 
110     virtual bool IsNfcEnabled() = 0;
111     virtual int GetNfcState() = 0;
112     virtual int GetScreenState() = 0;
113     virtual int GetNciVersion() = 0;
114     virtual std::weak_ptr<TAG::TagDispatcher> GetTagDispatcher() = 0;
115     virtual std::weak_ptr<NfcPollingManager> GetNfcPollingManager() = 0;
116     virtual std::weak_ptr<NfcRoutingManager> GetNfcRoutingManager() = 0;
117     virtual OHOS::sptr<IRemoteObject> GetTagServiceIface() = 0;
118     virtual OHOS::sptr<IRemoteObject> GetHceServiceIface() = 0;
119     virtual std::weak_ptr<CeService> GetCeService() = 0 ;
120     virtual std::string GetSimVendorBundleName() = 0;
121 };
122 }  // namespace NFC
123 }  // namespace OHOS
124 #endif  // I_NFC_SERVICE_H
125