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

Side by Side Diff: third_party/WebKit/Source/modules/bluetooth/BluetoothUUID.cpp

Issue 2775283003: bluetooth: Update services, characteristics, and descriptors (Closed)
Patch Set: updated page address for Service, Characteristics and Descriptors Created 3 years, 8 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 | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "modules/bluetooth/BluetoothUUID.h" 5 #include "modules/bluetooth/BluetoothUUID.h"
6 6
7 #include "bindings/core/v8/ExceptionState.h" 7 #include "bindings/core/v8/ExceptionState.h"
8 #include "bindings/core/v8/ScriptRegexp.h" 8 #include "bindings/core/v8/ScriptRegexp.h"
9 #include "core/dom/ExceptionCode.h" 9 #include "core/dom/ExceptionCode.h"
10 #include "platform/UUID.h" 10 #include "platform/UUID.h"
11 #include "wtf/HashMap.h" 11 #include "wtf/HashMap.h"
12 #include "wtf/HexNumber.h" 12 #include "wtf/HexNumber.h"
13 #include "wtf/text/StringBuilder.h" 13 #include "wtf/text/StringBuilder.h"
14 #include "wtf/text/WTFString.h" 14 #include "wtf/text/WTFString.h"
15 15
16 namespace blink { 16 namespace blink {
17 17
18 namespace { 18 namespace {
19 19
20 typedef WTF::HashMap<String, unsigned> NameToAssignedNumberMap; 20 typedef WTF::HashMap<String, unsigned> NameToAssignedNumberMap;
21 21
22 enum class GATTAttribute { Service, Characteristic, Descriptor }; 22 enum class GATTAttribute { Service, Characteristic, Descriptor };
23 23
24 NameToAssignedNumberMap* getAssignedNumberToServiceNameMap() { 24 NameToAssignedNumberMap* getAssignedNumberToServiceNameMap() {
25 DEFINE_THREAD_SAFE_STATIC_LOCAL(NameToAssignedNumberMap, servicesMap, []() { 25 DEFINE_THREAD_SAFE_STATIC_LOCAL(NameToAssignedNumberMap, servicesMap, []() {
26 // https://developer.bluetooth.org/gatt/services/Pages/ServicesHome.aspx 26 // https://www.bluetooth.com/specifications/gatt/services
27 NameToAssignedNumberMap* services = new NameToAssignedNumberMap(); 27 NameToAssignedNumberMap* services = new NameToAssignedNumberMap();
28 services->add("alert_notification", 0x1811); 28 services->add("alert_notification", 0x1811);
29 services->add("automation_io", 0x1815); 29 services->add("automation_io", 0x1815);
30 services->add("battery_service", 0x180F); 30 services->add("battery_service", 0x180F);
31 services->add("blood_pressure", 0x1810); 31 services->add("blood_pressure", 0x1810);
32 services->add("body_composition", 0x181B); 32 services->add("body_composition", 0x181B);
33 services->add("bond_management", 0x181E); 33 services->add("bond_management", 0x181E);
34 services->add("continuous_glucose_monitoring", 0x181F); 34 services->add("continuous_glucose_monitoring", 0x181F);
35 services->add("current_time", 0x1805); 35 services->add("current_time", 0x1805);
36 services->add("cycling_power", 0x1818); 36 services->add("cycling_power", 0x1818);
37 services->add("cycling_speed_and_cadence", 0x1816); 37 services->add("cycling_speed_and_cadence", 0x1816);
38 services->add("device_information", 0x180A); 38 services->add("device_information", 0x180A);
39 services->add("environmental_sensing", 0x181A); 39 services->add("environmental_sensing", 0x181A);
40 services->add("fitness_machine", 0x1826);
40 services->add("generic_access", 0x1800); 41 services->add("generic_access", 0x1800);
41 services->add("generic_attribute", 0x1801); 42 services->add("generic_attribute", 0x1801);
42 services->add("glucose", 0x1808); 43 services->add("glucose", 0x1808);
43 services->add("health_thermometer", 0x1809); 44 services->add("health_thermometer", 0x1809);
44 services->add("heart_rate", 0x180D); 45 services->add("heart_rate", 0x180D);
46 services->add("http_proxy", 0x1823);
45 services->add("human_interface_device", 0x1812); 47 services->add("human_interface_device", 0x1812);
46 services->add("immediate_alert", 0x1802); 48 services->add("immediate_alert", 0x1802);
47 services->add("indoor_positioning", 0x1821); 49 services->add("indoor_positioning", 0x1821);
48 services->add("internet_protocol_support", 0x1820); 50 services->add("internet_protocol_support", 0x1820);
49 services->add("link_loss", 0x1803); 51 services->add("link_loss", 0x1803);
50 services->add("location_and_navigation", 0x1819); 52 services->add("location_and_navigation", 0x1819);
51 services->add("next_dst_change", 0x1807); 53 services->add("next_dst_change", 0x1807);
54 services->add("object_transfer", 0x1825);
52 services->add("phone_alert_status", 0x180E); 55 services->add("phone_alert_status", 0x180E);
53 services->add("pulse_oximeter", 0x1822); 56 services->add("pulse_oximeter", 0x1822);
54 services->add("reference_time_update", 0x1806); 57 services->add("reference_time_update", 0x1806);
55 services->add("running_speed_and_cadence", 0x1814); 58 services->add("running_speed_and_cadence", 0x1814);
56 services->add("scan_parameters", 0x1813); 59 services->add("scan_parameters", 0x1813);
60 services->add("transport_discovery", 0x1824);
57 services->add("tx_power", 0x1804); 61 services->add("tx_power", 0x1804);
58 services->add("user_data", 0x181C); 62 services->add("user_data", 0x181C);
59 services->add("weight_scale", 0x181D); 63 services->add("weight_scale", 0x181D);
60 return services; 64 return services;
61 }()); 65 }());
62 66
63 return &servicesMap; 67 return &servicesMap;
64 } 68 }
65 69
66 NameToAssignedNumberMap* getAssignedNumberForCharacteristicNameMap() { 70 NameToAssignedNumberMap* getAssignedNumberForCharacteristicNameMap() {
67 DEFINE_THREAD_SAFE_STATIC_LOCAL( 71 DEFINE_THREAD_SAFE_STATIC_LOCAL(
68 NameToAssignedNumberMap, characteristicsMap, []() { 72 NameToAssignedNumberMap, characteristicsMap, []() {
69 // https://developer.bluetooth.org/gatt/characteristics/Pages/Characteri sticsHome.aspx 73 // https://www.bluetooth.com/specifications/gatt/characteristics
70 NameToAssignedNumberMap* characteristics = 74 NameToAssignedNumberMap* characteristics =
71 new NameToAssignedNumberMap(); 75 new NameToAssignedNumberMap();
72 characteristics->add("aerobic_heart_rate_lower_limit", 0x2A7E); 76 characteristics->add("aerobic_heart_rate_lower_limit", 0x2A7E);
73 characteristics->add("aerobic_heart_rate_upper_limit", 0x2A84); 77 characteristics->add("aerobic_heart_rate_upper_limit", 0x2A84);
74 characteristics->add("aerobic_threshold", 0x2A7F); 78 characteristics->add("aerobic_threshold", 0x2A7F);
75 characteristics->add("age", 0x2A80); 79 characteristics->add("age", 0x2A80);
76 characteristics->add("aggregate", 0x2A5A); 80 characteristics->add("aggregate", 0x2A5A);
77 characteristics->add("alert_category_id", 0x2A43); 81 characteristics->add("alert_category_id", 0x2A43);
78 characteristics->add("alert_category_id_bit_mask", 0x2A42); 82 characteristics->add("alert_category_id_bit_mask", 0x2A42);
79 characteristics->add("alert_level", 0x2A06); 83 characteristics->add("alert_level", 0x2A06);
(...skipping 19 matching lines...) Expand all
99 characteristics->add("boot_keyboard_input_report", 0x2A22); 103 characteristics->add("boot_keyboard_input_report", 0x2A22);
100 characteristics->add("boot_keyboard_output_report", 0x2A32); 104 characteristics->add("boot_keyboard_output_report", 0x2A32);
101 characteristics->add("boot_mouse_input_report", 0x2A33); 105 characteristics->add("boot_mouse_input_report", 0x2A33);
102 characteristics->add("gap.central_address_resolution_support", 0x2AA6); 106 characteristics->add("gap.central_address_resolution_support", 0x2AA6);
103 characteristics->add("cgm_feature", 0x2AA8); 107 characteristics->add("cgm_feature", 0x2AA8);
104 characteristics->add("cgm_measurement", 0x2AA7); 108 characteristics->add("cgm_measurement", 0x2AA7);
105 characteristics->add("cgm_session_run_time", 0x2AAB); 109 characteristics->add("cgm_session_run_time", 0x2AAB);
106 characteristics->add("cgm_session_start_time", 0x2AAA); 110 characteristics->add("cgm_session_start_time", 0x2AAA);
107 characteristics->add("cgm_specific_ops_control_point", 0x2AAC); 111 characteristics->add("cgm_specific_ops_control_point", 0x2AAC);
108 characteristics->add("cgm_status", 0x2AA9); 112 characteristics->add("cgm_status", 0x2AA9);
113 characteristics->add("cross_trainer_data", 0x2ACE);
109 characteristics->add("csc_feature", 0x2A5C); 114 characteristics->add("csc_feature", 0x2A5C);
110 characteristics->add("csc_measurement", 0x2A5B); 115 characteristics->add("csc_measurement", 0x2A5B);
111 characteristics->add("current_time", 0x2A2B); 116 characteristics->add("current_time", 0x2A2B);
112 characteristics->add("cycling_power_control_point", 0x2A66); 117 characteristics->add("cycling_power_control_point", 0x2A66);
113 characteristics->add("cycling_power_feature", 0x2A65); 118 characteristics->add("cycling_power_feature", 0x2A65);
114 characteristics->add("cycling_power_measurement", 0x2A63); 119 characteristics->add("cycling_power_measurement", 0x2A63);
115 characteristics->add("cycling_power_vector", 0x2A64); 120 characteristics->add("cycling_power_vector", 0x2A64);
116 characteristics->add("database_change_increment", 0x2A99); 121 characteristics->add("database_change_increment", 0x2A99);
117 characteristics->add("date_of_birth", 0x2A85); 122 characteristics->add("date_of_birth", 0x2A85);
118 characteristics->add("date_of_threshold_assessment", 0x2A86); 123 characteristics->add("date_of_threshold_assessment", 0x2A86);
119 characteristics->add("date_time", 0x2A08); 124 characteristics->add("date_time", 0x2A08);
120 characteristics->add("day_date_time", 0x2A0A); 125 characteristics->add("day_date_time", 0x2A0A);
121 characteristics->add("day_of_week", 0x2A09); 126 characteristics->add("day_of_week", 0x2A09);
122 characteristics->add("descriptor_value_changed", 0x2A7D); 127 characteristics->add("descriptor_value_changed", 0x2A7D);
123 characteristics->add("gap.device_name", 0x2A00); 128 characteristics->add("gap.device_name", 0x2A00);
124 characteristics->add("dew_point", 0x2A7B); 129 characteristics->add("dew_point", 0x2A7B);
125 characteristics->add("digital", 0x2A56); 130 characteristics->add("digital", 0x2A56);
126 characteristics->add("dst_offset", 0x2A0D); 131 characteristics->add("dst_offset", 0x2A0D);
127 characteristics->add("elevation", 0x2A6C); 132 characteristics->add("elevation", 0x2A6C);
128 characteristics->add("email_address", 0x2A87); 133 characteristics->add("email_address", 0x2A87);
129 characteristics->add("exact_time_256", 0x2A0C); 134 characteristics->add("exact_time_256", 0x2A0C);
130 characteristics->add("fat_burn_heart_rate_lower_limit", 0x2A88); 135 characteristics->add("fat_burn_heart_rate_lower_limit", 0x2A88);
131 characteristics->add("fat_burn_heart_rate_upper_limit", 0x2A89); 136 characteristics->add("fat_burn_heart_rate_upper_limit", 0x2A89);
132 characteristics->add("firmware_revision_string", 0x2A26); 137 characteristics->add("firmware_revision_string", 0x2A26);
133 characteristics->add("first_name", 0x2A8A); 138 characteristics->add("first_name", 0x2A8A);
139 characteristics->add("fitness_machine_control_point", 0x2AD9);
140 characteristics->add("fitness_machine_feature", 0x2ACC);
141 characteristics->add("fitness_machine_status", 0x2ADA);
134 characteristics->add("five_zone_heart_rate_limits", 0x2A8B); 142 characteristics->add("five_zone_heart_rate_limits", 0x2A8B);
135 characteristics->add("floor_number", 0x2AB2); 143 characteristics->add("floor_number", 0x2AB2);
136 characteristics->add("gender", 0x2A8C); 144 characteristics->add("gender", 0x2A8C);
137 characteristics->add("glucose_feature", 0x2A51); 145 characteristics->add("glucose_feature", 0x2A51);
138 characteristics->add("glucose_measurement", 0x2A18); 146 characteristics->add("glucose_measurement", 0x2A18);
139 characteristics->add("glucose_measurement_context", 0x2A34); 147 characteristics->add("glucose_measurement_context", 0x2A34);
140 characteristics->add("gust_factor", 0x2A74); 148 characteristics->add("gust_factor", 0x2A74);
141 characteristics->add("hardware_revision_string", 0x2A27); 149 characteristics->add("hardware_revision_string", 0x2A27);
142 characteristics->add("heart_rate_control_point", 0x2A39); 150 characteristics->add("heart_rate_control_point", 0x2A39);
143 characteristics->add("heart_rate_max", 0x2A8D); 151 characteristics->add("heart_rate_max", 0x2A8D);
144 characteristics->add("heart_rate_measurement", 0x2A37); 152 characteristics->add("heart_rate_measurement", 0x2A37);
145 characteristics->add("heat_index", 0x2A7A); 153 characteristics->add("heat_index", 0x2A7A);
146 characteristics->add("height", 0x2A8E); 154 characteristics->add("height", 0x2A8E);
147 characteristics->add("hid_control_point", 0x2A4C); 155 characteristics->add("hid_control_point", 0x2A4C);
148 characteristics->add("hid_information", 0x2A4A); 156 characteristics->add("hid_information", 0x2A4A);
149 characteristics->add("hip_circumference", 0x2A8F); 157 characteristics->add("hip_circumference", 0x2A8F);
158 characteristics->add("http_control_point", 0x2ABA);
159 characteristics->add("http_entity_body", 0x2AB9);
160 characteristics->add("http_headers", 0x2AB7);
161 characteristics->add("http_status_code", 0x2AB8);
162 characteristics->add("https_security", 0x2ABB);
150 characteristics->add("humidity", 0x2A6F); 163 characteristics->add("humidity", 0x2A6F);
151 characteristics->add( 164 characteristics->add(
152 "ieee_11073-20601_regulatory_certification_data_list", 0x2A2A); 165 "ieee_11073-20601_regulatory_certification_data_list", 0x2A2A);
166 characteristics->add("indoor_bike_data", 0x2AD2);
153 characteristics->add("indoor_positioning_configuration", 0x2AAD); 167 characteristics->add("indoor_positioning_configuration", 0x2AAD);
154 characteristics->add("intermediate_blood_pressure", 0x2A36); 168 characteristics->add("intermediate_blood_pressure", 0x2A36);
155 characteristics->add("intermediate_temperature", 0x2A1E); 169 characteristics->add("intermediate_temperature", 0x2A1E);
156 characteristics->add("irradiance", 0x2A77); 170 characteristics->add("irradiance", 0x2A77);
157 characteristics->add("language", 0x2AA2); 171 characteristics->add("language", 0x2AA2);
158 characteristics->add("last_name", 0x2A90); 172 characteristics->add("last_name", 0x2A90);
159 characteristics->add("latitude", 0x2AAE); 173 characteristics->add("latitude", 0x2AAE);
160 characteristics->add("ln_control_point", 0x2A6B); 174 characteristics->add("ln_control_point", 0x2A6B);
161 characteristics->add("ln_feature", 0x2A6A); 175 characteristics->add("ln_feature", 0x2A6A);
162 characteristics->add("local_east_coordinate.xml", 0x2AB1); 176 characteristics->add("local_east_coordinate.xml", 0x2AB1);
163 characteristics->add("local_north_coordinate", 0x2AB0); 177 characteristics->add("local_north_coordinate", 0x2AB0);
164 characteristics->add("local_time_information", 0x2A0F); 178 characteristics->add("local_time_information", 0x2A0F);
165 characteristics->add("location_and_speed", 0x2A67); 179 characteristics->add("location_and_speed", 0x2A67);
166 characteristics->add("location_name", 0x2AB5); 180 characteristics->add("location_name", 0x2AB5);
167 characteristics->add("longitude", 0x2AAF); 181 characteristics->add("longitude", 0x2AAF);
168 characteristics->add("magnetic_declination", 0x2A2C); 182 characteristics->add("magnetic_declination", 0x2A2C);
169 characteristics->add("magnetic_flux_density_2D", 0x2AA0); 183 characteristics->add("magnetic_flux_density_2D", 0x2AA0);
170 characteristics->add("magnetic_flux_density_3D", 0x2AA1); 184 characteristics->add("magnetic_flux_density_3D", 0x2AA1);
171 characteristics->add("manufacturer_name_string", 0x2A29); 185 characteristics->add("manufacturer_name_string", 0x2A29);
172 characteristics->add("maximum_recommended_heart_rate", 0x2A91); 186 characteristics->add("maximum_recommended_heart_rate", 0x2A91);
173 characteristics->add("measurement_interval", 0x2A21); 187 characteristics->add("measurement_interval", 0x2A21);
174 characteristics->add("model_number_string", 0x2A24); 188 characteristics->add("model_number_string", 0x2A24);
175 characteristics->add("navigation", 0x2A68); 189 characteristics->add("navigation", 0x2A68);
176 characteristics->add("new_alert", 0x2A46); 190 characteristics->add("new_alert", 0x2A46);
191 characteristics->add("object_action_control_point", 0x2AC5);
192 characteristics->add("object_changed", 0x2AC8);
193 characteristics->add("object_first_created", 0x2AC1);
194 characteristics->add("object_id", 0x2AC3);
195 characteristics->add("object_last_modified", 0x2AC2);
196 characteristics->add("object_list_control_point", 0x2AC6);
197 characteristics->add("object_list_filter", 0x2AC7);
198 characteristics->add("object_name", 0x2ABE);
199 characteristics->add("object_properties", 0x2AC4);
200 characteristics->add("object_size", 0x2AC0);
201 characteristics->add("ots_feature", 0x2ABD);
177 characteristics->add("gap.peripheral_preferred_connection_parameters", 202 characteristics->add("gap.peripheral_preferred_connection_parameters",
178 0x2A04); 203 0x2A04);
179 characteristics->add("gap.peripheral_privacy_flag", 0x2A02); 204 characteristics->add("gap.peripheral_privacy_flag", 0x2A02);
180 characteristics->add("plx_continuous_measurement", 0x2A5F); 205 characteristics->add("plx_continuous_measurement", 0x2A5F);
181 characteristics->add("plx_features", 0x2A60); 206 characteristics->add("plx_features", 0x2A60);
182 characteristics->add("plx_spot_check_measurement", 0x2A5E); 207 characteristics->add("plx_spot_check_measurement", 0x2A5E);
183 characteristics->add("pnp_id", 0x2A50); 208 characteristics->add("pnp_id", 0x2A50);
184 characteristics->add("pollen_concentration", 0x2A75); 209 characteristics->add("pollen_concentration", 0x2A75);
185 characteristics->add("position_quality", 0x2A69); 210 characteristics->add("position_quality", 0x2A69);
186 characteristics->add("pressure", 0x2A6D); 211 characteristics->add("pressure", 0x2A6D);
187 characteristics->add("protocol_mode", 0x2A4E); 212 characteristics->add("protocol_mode", 0x2A4E);
188 characteristics->add("rainfall", 0x2A78); 213 characteristics->add("rainfall", 0x2A78);
189 characteristics->add("gap.reconnection_address", 0x2A03); 214 characteristics->add("gap.reconnection_address", 0x2A03);
190 characteristics->add("record_access_control_point", 0x2A52); 215 characteristics->add("record_access_control_point", 0x2A52);
191 characteristics->add("reference_time_information", 0x2A14); 216 characteristics->add("reference_time_information", 0x2A14);
192 characteristics->add("report", 0x2A4D); 217 characteristics->add("report", 0x2A4D);
193 characteristics->add("report_map", 0x2A4B); 218 characteristics->add("report_map", 0x2A4B);
219 characteristics->add("resolvable_private_address_only", 0x2AC9);
194 characteristics->add("resting_heart_rate", 0x2A92); 220 characteristics->add("resting_heart_rate", 0x2A92);
195 characteristics->add("ringer_control_point", 0x2A40); 221 characteristics->add("ringer_control_point", 0x2A40);
196 characteristics->add("ringer_setting", 0x2A41); 222 characteristics->add("ringer_setting", 0x2A41);
223 characteristics->add("rower_data", 0x2AD1);
197 characteristics->add("rsc_feature", 0x2A54); 224 characteristics->add("rsc_feature", 0x2A54);
198 characteristics->add("rsc_measurement", 0x2A53); 225 characteristics->add("rsc_measurement", 0x2A53);
199 characteristics->add("sc_control_point", 0x2A55); 226 characteristics->add("sc_control_point", 0x2A55);
200 characteristics->add("scan_interval_window", 0x2A4F); 227 characteristics->add("scan_interval_window", 0x2A4F);
201 characteristics->add("scan_refresh", 0x2A31); 228 characteristics->add("scan_refresh", 0x2A31);
202 characteristics->add("sensor_location", 0x2A5D); 229 characteristics->add("sensor_location", 0x2A5D);
203 characteristics->add("serial_number_string", 0x2A25); 230 characteristics->add("serial_number_string", 0x2A25);
204 characteristics->add("gatt.service_changed", 0x2A05); 231 characteristics->add("gatt.service_changed", 0x2A05);
205 characteristics->add("software_revision_string", 0x2A28); 232 characteristics->add("software_revision_string", 0x2A28);
206 characteristics->add("sport_type_for_aerobic_and_anaerobic_thresholds", 233 characteristics->add("sport_type_for_aerobic_and_anaerobic_thresholds",
207 0x2A93); 234 0x2A93);
235 characteristics->add("stair_climber_data", 0x2AD0);
236 characteristics->add("step_climber_data", 0x2ACF);
237 characteristics->add("supported_heart_rate_range", 0x2AD7);
238 characteristics->add("supported_inclination_range", 0x2AD5);
208 characteristics->add("supported_new_alert_category", 0x2A47); 239 characteristics->add("supported_new_alert_category", 0x2A47);
240 characteristics->add("supported_power_range", 0x2AD8);
241 characteristics->add("supported_resistance_level_range", 0x2AD6);
242 characteristics->add("supported_speed_range", 0x2AD4);
209 characteristics->add("supported_unread_alert_category", 0x2A48); 243 characteristics->add("supported_unread_alert_category", 0x2A48);
210 characteristics->add("system_id", 0x2A23); 244 characteristics->add("system_id", 0x2A23);
245 characteristics->add("tds_control_point", 0x2ABC);
211 characteristics->add("temperature", 0x2A6E); 246 characteristics->add("temperature", 0x2A6E);
212 characteristics->add("temperature_measurement", 0x2A1C); 247 characteristics->add("temperature_measurement", 0x2A1C);
213 characteristics->add("temperature_type", 0x2A1D); 248 characteristics->add("temperature_type", 0x2A1D);
214 characteristics->add("three_zone_heart_rate_limits", 0x2A94); 249 characteristics->add("three_zone_heart_rate_limits", 0x2A94);
215 characteristics->add("time_accuracy", 0x2A12); 250 characteristics->add("time_accuracy", 0x2A12);
216 characteristics->add("time_source", 0x2A13); 251 characteristics->add("time_source", 0x2A13);
217 characteristics->add("time_update_control_point", 0x2A16); 252 characteristics->add("time_update_control_point", 0x2A16);
218 characteristics->add("time_update_state", 0x2A17); 253 characteristics->add("time_update_state", 0x2A17);
219 characteristics->add("time_with_dst", 0x2A11); 254 characteristics->add("time_with_dst", 0x2A11);
220 characteristics->add("time_zone", 0x2A0E); 255 characteristics->add("time_zone", 0x2A0E);
256 characteristics->add("training_status", 0x2AD3);
257 characteristics->add("treadmill_data", 0x2ACD);
221 characteristics->add("true_wind_direction", 0x2A71); 258 characteristics->add("true_wind_direction", 0x2A71);
222 characteristics->add("true_wind_speed", 0x2A70); 259 characteristics->add("true_wind_speed", 0x2A70);
223 characteristics->add("two_zone_heart_rate_limit", 0x2A95); 260 characteristics->add("two_zone_heart_rate_limit", 0x2A95);
224 characteristics->add("tx_power_level", 0x2A07); 261 characteristics->add("tx_power_level", 0x2A07);
225 characteristics->add("uncertainty", 0x2AB4); 262 characteristics->add("uncertainty", 0x2AB4);
226 characteristics->add("unread_alert_status", 0x2A45); 263 characteristics->add("unread_alert_status", 0x2A45);
264 characteristics->add("uri", 0x2AB6);
227 characteristics->add("user_control_point", 0x2A9F); 265 characteristics->add("user_control_point", 0x2A9F);
228 characteristics->add("user_index", 0x2A9A); 266 characteristics->add("user_index", 0x2A9A);
229 characteristics->add("uv_index", 0x2A76); 267 characteristics->add("uv_index", 0x2A76);
230 characteristics->add("vo2_max", 0x2A96); 268 characteristics->add("vo2_max", 0x2A96);
231 characteristics->add("waist_circumference", 0x2A97); 269 characteristics->add("waist_circumference", 0x2A97);
232 characteristics->add("weight", 0x2A98); 270 characteristics->add("weight", 0x2A98);
233 characteristics->add("weight_measurement", 0x2A9D); 271 characteristics->add("weight_measurement", 0x2A9D);
234 characteristics->add("weight_scale_feature", 0x2A9E); 272 characteristics->add("weight_scale_feature", 0x2A9E);
235 characteristics->add("wind_chill", 0x2A79); 273 characteristics->add("wind_chill", 0x2A79);
236 return characteristics; 274 return characteristics;
237 }()); 275 }());
238 276
239 return &characteristicsMap; 277 return &characteristicsMap;
240 } 278 }
241 279
242 NameToAssignedNumberMap* getAssignedNumberForDescriptorNameMap() { 280 NameToAssignedNumberMap* getAssignedNumberForDescriptorNameMap() {
243 DEFINE_THREAD_SAFE_STATIC_LOCAL( 281 DEFINE_THREAD_SAFE_STATIC_LOCAL(
244 NameToAssignedNumberMap, descriptorsMap, []() { 282 NameToAssignedNumberMap, descriptorsMap, []() {
245 // https://developer.bluetooth.org/gatt/descriptors/Pages/DescriptorsHom ePage.aspx 283 // https://www.bluetooth.com/specifications/gatt/descriptors
246 NameToAssignedNumberMap* descriptors = new NameToAssignedNumberMap(); 284 NameToAssignedNumberMap* descriptors = new NameToAssignedNumberMap();
285 descriptors->add("gatt.characteristic_aggregate_format", 0x2905);
247 descriptors->add("gatt.characteristic_extended_properties", 0x2900); 286 descriptors->add("gatt.characteristic_extended_properties", 0x2900);
287 descriptors->add("gatt.characteristic_presentation_format", 0x2904);
248 descriptors->add("gatt.characteristic_user_description", 0x2901); 288 descriptors->add("gatt.characteristic_user_description", 0x2901);
249 descriptors->add("gatt.client_characteristic_configuration", 0x2902); 289 descriptors->add("gatt.client_characteristic_configuration", 0x2902);
250 descriptors->add("gatt.server_characteristic_configuration", 0x2903);
251 descriptors->add("gatt.characteristic_presentation_format", 0x2904);
252 descriptors->add("gatt.characteristic_aggregate_format", 0x2905);
253 descriptors->add("valid_range", 0x2906);
254 descriptors->add("external_report_reference", 0x2907);
255 descriptors->add("report_reference", 0x2908);
256 descriptors->add("value_trigger_setting", 0x290A);
257 descriptors->add("es_configuration", 0x290B); 290 descriptors->add("es_configuration", 0x290B);
258 descriptors->add("es_measurement", 0x290C); 291 descriptors->add("es_measurement", 0x290C);
259 descriptors->add("es_trigger_setting", 0x290D); 292 descriptors->add("es_trigger_setting", 0x290D);
293 descriptors->add("external_report_reference", 0x2907);
294 descriptors->add("number_of_digitals", 0x2909);
295 descriptors->add("report_reference", 0x2908);
296 descriptors->add("gatt.server_characteristic_configuration", 0x2903);
ortuno 2017/03/29 21:00:31 I think this belongs further up.
297 descriptors->add("time_trigger_setting", 0x290E);
298 descriptors->add("valid_range", 0x2906);
299 descriptors->add("value_trigger_setting", 0x290A);
260 return descriptors; 300 return descriptors;
261 }()); 301 }());
262 302
263 return &descriptorsMap; 303 return &descriptorsMap;
264 } 304 }
265 305
266 String getUUIDForGATTAttribute(GATTAttribute attribute, 306 String getUUIDForGATTAttribute(GATTAttribute attribute,
267 StringOrUnsignedLong name, 307 StringOrUnsignedLong name,
268 ExceptionState& exceptionState) { 308 ExceptionState& exceptionState) {
269 // Implementation of BluetoothUUID.getService, BluetoothUUID.getCharacteristic 309 // Implementation of BluetoothUUID.getService, BluetoothUUID.getCharacteristic
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 errorMessage.append(" name: '"); 351 errorMessage.append(" name: '");
312 errorMessage.append(nameStr); 352 errorMessage.append(nameStr);
313 errorMessage.append( 353 errorMessage.append(
314 "'. It must be a valid UUID alias (e.g. 0x1234), " 354 "'. It must be a valid UUID alias (e.g. 0x1234), "
315 "UUID (lowercase hex characters e.g. " 355 "UUID (lowercase hex characters e.g. "
316 "'00001234-0000-1000-8000-00805f9b34fb'), " 356 "'00001234-0000-1000-8000-00805f9b34fb'), "
317 "or recognized standard name from "); 357 "or recognized standard name from ");
318 switch (attribute) { 358 switch (attribute) {
319 case GATTAttribute::Service: 359 case GATTAttribute::Service:
320 errorMessage.append( 360 errorMessage.append(
321 "https://developer.bluetooth.org/gatt/services/Pages/" 361 "https://www.bluetooth.com/specifications/gatt/services"
322 "ServicesHome.aspx"
323 " e.g. 'alert_notification'."); 362 " e.g. 'alert_notification'.");
324 break; 363 break;
325 case GATTAttribute::Characteristic: 364 case GATTAttribute::Characteristic:
326 errorMessage.append( 365 errorMessage.append(
327 "https://developer.bluetooth.org/gatt/characteristics/Pages/" 366 "https://www.bluetooth.com/specifications/gatt/characteristics"
328 "CharacteristicsHome.aspx"
329 " e.g. 'aerobic_heart_rate_lower_limit'."); 367 " e.g. 'aerobic_heart_rate_lower_limit'.");
330 break; 368 break;
331 case GATTAttribute::Descriptor: 369 case GATTAttribute::Descriptor:
332 errorMessage.append( 370 errorMessage.append(
333 "https://developer.bluetooth.org/gatt/descriptors/Pages/" 371 "https://www.bluetooth.com/specifications/gatt/descriptors"
334 "DescriptorsHomePage.aspx"
335 " e.g. 'gatt.characteristic_presentation_format'."); 372 " e.g. 'gatt.characteristic_presentation_format'.");
336 break; 373 break;
337 } 374 }
338 // Otherwise, throw a TypeError. 375 // Otherwise, throw a TypeError.
339 exceptionState.throwDOMException(V8TypeError, errorMessage.toString()); 376 exceptionState.throwDOMException(V8TypeError, errorMessage.toString());
340 return String(); 377 return String();
341 } 378 }
342 379
343 } // namespace 380 } // namespace
344 381
(...skipping 22 matching lines...) Expand all
367 StringBuilder builder; 404 StringBuilder builder;
368 builder.reserveCapacity(36 /* 36 chars or 128 bits, length of a UUID */); 405 builder.reserveCapacity(36 /* 36 chars or 128 bits, length of a UUID */);
369 appendUnsignedAsHexFixedSize( 406 appendUnsignedAsHexFixedSize(
370 alias, builder, 8 /* 8 chars or 32 bits, prefix length */, Lowercase); 407 alias, builder, 8 /* 8 chars or 32 bits, prefix length */, Lowercase);
371 408
372 builder.append("-0000-1000-8000-00805f9b34fb"); 409 builder.append("-0000-1000-8000-00805f9b34fb");
373 return builder.toString(); 410 return builder.toString();
374 } 411 }
375 412
376 } // namespace blink 413 } // namespace blink
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698