Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(165)

Side by Side Diff: device/nfc/nfc_tag_chromeos.cc

Issue 2292703002: chromeos: Remove unused NFC D-Bus client library (Closed)
Patch Set: rebase Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « device/nfc/nfc_tag_chromeos.h ('k') | device/nfc/nfc_tag_technology.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "device/nfc/nfc_tag_chromeos.h"
6
7 #include "chromeos/dbus/dbus_thread_manager.h"
8 #include "device/nfc/nfc_tag_technology_chromeos.h"
9 #include "third_party/cros_system_api/dbus/service_constants.h"
10
11 using device::NfcTag;
12 using device::NfcTagTechnology;
13 using device::NfcNdefTagTechnology;
14
15 namespace chromeos {
16
17 namespace {
18
19 // Converts an NFC tag type value returned by neard to a NfcTag::TagType enum
20 // value.
21 NfcTag::TagType DBusTypePropertyToTagType(const std::string& type) {
22 if (type == nfc_tag::kTagType1)
23 return NfcTag::kTagType1;
24 if (type == nfc_tag::kTagType2)
25 return NfcTag::kTagType2;
26 if (type == nfc_tag::kTagType3)
27 return NfcTag::kTagType3;
28 if (type == nfc_tag::kTagType4)
29 return NfcTag::kTagType4;
30 return NfcTag::kTagTypeUnknown;
31 }
32
33 // Converts an NFC tag protocol value returned by neard to a NfcTag::Protocol
34 // enum value.
35 NfcTag::Protocol DBusProtocolPropertyToTagProtocol(
36 const std::string& protocol) {
37 if (protocol == nfc_common::kProtocolFelica)
38 return NfcTag::kProtocolFelica;
39 if (protocol == nfc_common::kProtocolIsoDep)
40 return NfcTag::kProtocolIsoDep;
41 if (protocol == nfc_common::kProtocolJewel)
42 return NfcTag::kProtocolJewel;
43 if (protocol == nfc_common::kProtocolMifare)
44 return NfcTag::kProtocolMifare;
45 if (protocol == nfc_common::kProtocolNfcDep)
46 return NfcTag::kProtocolNfcDep;
47 return NfcTag::kProtocolUnknown;
48 }
49
50 } // namespace
51
52 NfcTagChromeOS::NfcTagChromeOS(const dbus::ObjectPath& object_path)
53 : object_path_(object_path),
54 is_ready_(false),
55 ndef_technology_(new NfcNdefTagTechnologyChromeOS(this)) {
56 DBusThreadManager::Get()->GetNfcTagClient()->AddObserver(this);
57 }
58
59 NfcTagChromeOS::~NfcTagChromeOS() {
60 DBusThreadManager::Get()->GetNfcTagClient()->RemoveObserver(this);
61 }
62
63 void NfcTagChromeOS::AddObserver(NfcTag::Observer* observer) {
64 observers_.AddObserver(observer);
65 }
66
67 void NfcTagChromeOS::RemoveObserver(NfcTag::Observer* observer) {
68 observers_.RemoveObserver(observer);
69 }
70
71 std::string NfcTagChromeOS::GetIdentifier() const {
72 return object_path_.value();
73 }
74
75 NfcTag::TagType NfcTagChromeOS::GetType() const {
76 DCHECK(object_path_.IsValid());
77 return DBusTypePropertyToTagType(
78 DBusThreadManager::Get()->GetNfcTagClient()->
79 GetProperties(object_path_)->type.value());
80 }
81
82 bool NfcTagChromeOS::IsReadOnly() const {
83 DCHECK(object_path_.IsValid());
84 return DBusThreadManager::Get()->GetNfcTagClient()->
85 GetProperties(object_path_)->read_only.value();
86 }
87
88 NfcTag::Protocol NfcTagChromeOS::GetSupportedProtocol() const {
89 DCHECK(object_path_.IsValid());
90 return DBusProtocolPropertyToTagProtocol(
91 DBusThreadManager::Get()->GetNfcTagClient()->
92 GetProperties(object_path_)->protocol.value());
93 }
94
95 NfcTagTechnology::TechnologyTypeMask
96 NfcTagChromeOS::GetSupportedTechnologies() const {
97 // Determine supported technologies based on the tag's protocol and
98 // type.
99 NfcTag::TagType type = GetType();
100 NfcTag::Protocol protocol = GetSupportedProtocol();
101 if (type == NfcTag::kTagTypeUnknown || protocol == kProtocolUnknown) {
102 VLOG(1) << "Tag type and protocol unknown.";
103 return 0;
104 }
105
106 NfcTagTechnology::TechnologyTypeMask technologies = 0;
107 technologies |= NfcTagTechnology::kTechnologyTypeNdef;
108 if (type == NfcTag::kTagType3) {
109 DCHECK(protocol == NfcTag::kProtocolFelica);
110 return technologies | NfcTagTechnology::kTechnologyTypeNfcF;
111 }
112
113 if (protocol == NfcTag::kProtocolIsoDep) {
114 DCHECK(type == NfcTag::kTagType4);
115 technologies |= NfcTagTechnology::kTechnologyTypeIsoDep;
116 // TODO(armansito): Neard doesn't provide enough information to determine
117 // if the underlying wave-form is type A or type B. For now, report
118 // neither.
119 return technologies;
120 }
121
122 return technologies | NfcTagTechnology::kTechnologyTypeNfcA;
123 }
124
125 bool NfcTagChromeOS::IsReady() const {
126 return is_ready_;
127 }
128
129 NfcNdefTagTechnology* NfcTagChromeOS::GetNdefTagTechnology() {
130 return ndef_technology_.get();
131 }
132
133 void NfcTagChromeOS::TagPropertyChanged(const dbus::ObjectPath& object_path,
134 const std::string& property_name) {
135 if (object_path != object_path_)
136 return;
137
138 NfcTagClient::Properties* properties =
139 DBusThreadManager::Get()->GetNfcTagClient()->GetProperties(object_path_);
140 DCHECK(properties);
141
142 if (property_name == properties->type.name()) {
143 FOR_EACH_OBSERVER(NfcTag::Observer, observers_,
144 TagTypeChanged(this, GetType()));
145 } else if (property_name == properties->read_only.name()) {
146 FOR_EACH_OBSERVER(NfcTag::Observer, observers_,
147 TagWritePermissionChanged(this, IsReadOnly()));
148 } else if (property_name == properties->protocol.name()) {
149 FOR_EACH_OBSERVER(
150 NfcTag::Observer, observers_,
151 TagSupportedProtocolChanged(this, GetSupportedProtocol()));
152 }
153 }
154
155 void NfcTagChromeOS::TagPropertiesReceived(
156 const dbus::ObjectPath& object_path) {
157 if (is_ready_ || object_path != object_path_)
158 return;
159
160 is_ready_ = true;
161 FOR_EACH_OBSERVER(NfcTag::Observer, observers_, TagReady(this));
162 }
163
164 } // namespace chromeos
OLDNEW
« no previous file with comments | « device/nfc/nfc_tag_chromeos.h ('k') | device/nfc/nfc_tag_technology.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698