| 1540 | return props; |
| 1541 | } |
| 1542 | parsePermissions(permissions) { |
| 1543 | let perms = []; |
| 1544 | let readPerms = 0; |
| 1545 | let writePerms = 0; |
| 1546 | permissions.forEach(p => { |
| 1547 | switch(p.trim()) { |
| 1548 | case "read": |
| 1549 | ++readPerms; |
| 1550 | perms.push("GATT_PERM_READ"); |
| 1551 | break; |
| 1552 | case "readEncrypted": |
| 1553 | ++readPerms; |
| 1554 | perms.push("GATT_PERM_READ_ENCRYPTED"); |
| 1555 | break; |
| 1556 | case "write": |
| 1557 | ++writePerms; |
| 1558 | perms.push("GATT_PERM_WRITE"); |
| 1559 | break; |
| 1560 | case "writeEncrypted": |
| 1561 | ++writePerms; |
| 1562 | perms.push("GATT_PERM_WRITE_ENCRYPTED"); |
| 1563 | break; |
| 1564 | default: |
| 1565 | throw new Error("unsupported permission"); |
| 1566 | } |
| 1567 | }); |
| 1568 | if (readPerms > 1) |
| 1569 | throw new Error("only one of read/readEncrypted can be specified"); |
| 1570 | if (writePerms > 1) |
| 1571 | throw new Error("only one of write/writeEncrypted can be specified"); |
| 1572 | |
| 1573 | return perms.join("|"); |
| 1574 | } |
| 1575 | writeAttributeValue(file, attribute, index, prefix) { |
| 1576 | let buffer = typedValueToBuffer(attribute.type, attribute.value); |
| 1577 | attribute._length = buffer.byteLength; |