| 1236 | return props; |
| 1237 | } |
| 1238 | parsePermissions(permissions) { |
| 1239 | const gatt_att_perm_readable = 0x0001; |
| 1240 | const gatt_att_perm_writable = 0x0002; |
| 1241 | const gatt_att_perm_write_no_response = 0x0004; |
| 1242 | const gatt_att_perm_encrypted_read = 0x0010; |
| 1243 | const gatt_att_perm_encrypted_write = 0x0100; |
| 1244 | const gatt_att_perm_discoverable = 0x0800; |
| 1245 | let perms = gatt_att_perm_discoverable; |
| 1246 | let readPerms = 0; |
| 1247 | let writePerms = 0; |
| 1248 | permissions.forEach(p => { |
| 1249 | switch(p.trim()) { |
| 1250 | case "read": |
| 1251 | ++readPerms; |
| 1252 | perms |= gatt_att_perm_readable; |
| 1253 | break; |
| 1254 | case "readEncrypted": |
| 1255 | ++readPerms; |
| 1256 | perms |= gatt_att_perm_encrypted_read; |
| 1257 | break; |
| 1258 | case "write": |
| 1259 | ++writePerms; |
| 1260 | perms |= gatt_att_perm_writable; |
| 1261 | break; |
| 1262 | case "writeEncrypted": |
| 1263 | ++writePerms; |
| 1264 | perms |= gatt_att_perm_encrypted_write; |
| 1265 | break; |
| 1266 | default: |
| 1267 | throw new Error("unsupported permission"); |
| 1268 | } |
| 1269 | }); |
| 1270 | if (readPerms > 1) |
| 1271 | throw new Error("only one of read/readEncrypted can be specified"); |
| 1272 | if (writePerms > 1) |
| 1273 | throw new Error("only one of write/writeEncrypted can be specified"); |
| 1274 | return perms; |
| 1275 | } |
| 1276 | }; |
| 1277 | |
| 1278 | class NRF52GATTFile extends GATTFile { |