UNPKG

obniz

Version:

obniz sdk for javascript

191 lines (190 loc) 6.04 kB
"use strict"; /** * @packageDocumentation * @ignore */ Object.defineProperty(exports, "__esModule", { value: true }); exports.GattCommon = void 0; // eslint-disable-next-line @typescript-eslint/no-namespace var ATT; (function (ATT) { ATT.OP_ERROR = 0x01; ATT.OP_MTU_REQ = 0x02; ATT.OP_MTU_RESP = 0x03; ATT.OP_FIND_INFO_REQ = 0x04; ATT.OP_FIND_INFO_RESP = 0x05; ATT.OP_READ_BY_TYPE_REQ = 0x08; ATT.OP_READ_BY_TYPE_RESP = 0x09; ATT.OP_READ_REQ = 0x0a; ATT.OP_READ_RESP = 0x0b; ATT.OP_READ_BLOB_REQ = 0x0c; ATT.OP_READ_BLOB_RESP = 0x0d; ATT.OP_READ_BY_GROUP_REQ = 0x10; ATT.OP_READ_BY_GROUP_RESP = 0x11; ATT.OP_WRITE_REQ = 0x12; ATT.OP_WRITE_RESP = 0x13; ATT.OP_PREPARE_WRITE_REQ = 0x16; ATT.OP_PREPARE_WRITE_RESP = 0x17; ATT.OP_EXECUTE_WRITE_REQ = 0x18; ATT.OP_EXECUTE_WRITE_RESP = 0x19; ATT.OP_HANDLE_NOTIFY = 0x1b; ATT.OP_HANDLE_IND = 0x1d; ATT.OP_HANDLE_CNF = 0x1e; ATT.OP_WRITE_CMD = 0x52; ATT.ECODE_SUCCESS = 0x00; ATT.ECODE_INVALID_HANDLE = 0x01; ATT.ECODE_READ_NOT_PERM = 0x02; ATT.ECODE_WRITE_NOT_PERM = 0x03; ATT.ECODE_INVALID_PDU = 0x04; ATT.ECODE_AUTHENTICATION = 0x05; ATT.ECODE_REQ_NOT_SUPP = 0x06; ATT.ECODE_INVALID_OFFSET = 0x07; ATT.ECODE_AUTHORIZATION = 0x08; ATT.ECODE_PREP_QUEUE_FULL = 0x09; ATT.ECODE_ATTR_NOT_FOUND = 0x0a; ATT.ECODE_ATTR_NOT_LONG = 0x0b; ATT.ECODE_INSUFF_ENCR_KEY_SIZE = 0x0c; ATT.ECODE_INVAL_ATTR_VALUE_LEN = 0x0d; ATT.ECODE_UNLIKELY = 0x0e; ATT.ECODE_INSUFF_ENC = 0x0f; ATT.ECODE_UNSUPP_GRP_TYPE = 0x10; ATT.ECODE_INSUFF_RESOURCES = 0x11; ATT.CID = 0x0004; })(ATT || (ATT = {})); const ATT_OP_READABLES = { 0x01: 'OP_ERROR', 0x02: 'OP_MTU_REQ', 0x03: 'OP_MTU_RESP', 0x04: 'OP_FIND_INFO_REQ', 0x05: 'OP_FIND_INFO_RESP', 0x08: 'OP_READ_BY_TYPE_REQ', 0x09: 'OP_READ_BY_TYPE_RESP', 0x0a: 'OP_READ_REQ', 0x0b: 'OP_READ_RESP', 0x0c: 'OP_READ_BLOB_REQ', 0x0d: 'OP_READ_BLOB_RESP', 0x10: 'OP_READ_BY_GROUP_REQ', 0x11: 'OP_READ_BY_GROUP_RESP', 0x12: 'OP_WRITE_REQ', 0x13: 'OP_WRITE_RESP', 0x16: 'OP_PREPARE_WRITE_REQ', 0x17: 'OP_PREPARE_WRITE_RESP', 0x18: 'OP_EXECUTE_WRITE_REQ', 0x19: 'OP_EXECUTE_WRITE_RESP', 0x1b: 'OP_HANDLE_NOTIFY', 0x1d: 'OP_HANDLE_IND', 0x1e: 'OP_HANDLE_CNF', 0x52: 'OP_WRITE_CMD', }; const ATT_ECODE_READABLES = { 0x00: 'ECODE_SUCCESS', 0x01: 'ECODE_INVALID_HANDLE', 0x02: 'ECODE_READ_NOT_PERM', 0x03: 'ECODE_WRITE_NOT_PERM', 0x04: 'ECODE_INVALID_PDU', 0x05: 'ECODE_AUTHENTICATION', 0x06: 'ECODE_REQ_NOT_SUPP', 0x07: 'ECODE_INVALID_OFFSET', 0x08: 'ECODE_AUTHORIZATION', 0x09: 'ECODE_PREP_QUEUE_FULL', 0x0a: 'ECODE_ATTR_NOT_FOUND', 0x0b: 'ECODE_ATTR_NOT_LONG', 0x0c: 'ECODE_INSUFF_ENCR_KEY_SIZE', 0x0d: 'ECODE_INVAL_ATTR_VALUE_LEN', 0x0e: 'ECODE_UNLIKELY', 0x0f: 'ECODE_INSUFF_ENC', 0x10: 'ECODE_UNSUPP_GRP_TYPE', 0x11: 'ECODE_INSUFF_RESOURCES', }; class GattCommon { write() { // nothing } errorResponse(opcode, handle, status) { const buf = Buffer.alloc(5); buf.writeUInt8(ATT.OP_ERROR, 0); buf.writeUInt8(opcode, 1); buf.writeUInt16LE(handle, 2); buf.writeUInt8(status, 4); return buf; } mtuRequest(mtu) { const buf = Buffer.alloc(3); buf.writeUInt8(ATT.OP_MTU_REQ, 0); buf.writeUInt16LE(mtu, 1); return buf; } mtuResponse(mtu) { const buf = Buffer.alloc(3); buf.writeUInt8(ATT.OP_MTU_RESP, 0); buf.writeUInt16LE(mtu, 1); return buf; } readByGroupRequest(startHandle, endHandle, groupUuid) { const buf = Buffer.alloc(7); buf.writeUInt8(ATT.OP_READ_BY_GROUP_REQ, 0); buf.writeUInt16LE(startHandle, 1); buf.writeUInt16LE(endHandle, 3); buf.writeUInt16LE(groupUuid, 5); return buf; } readByTypeRequest(startHandle, endHandle, groupUuid) { const buf = Buffer.alloc(7); buf.writeUInt8(ATT.OP_READ_BY_TYPE_REQ, 0); buf.writeUInt16LE(startHandle, 1); buf.writeUInt16LE(endHandle, 3); buf.writeUInt16LE(groupUuid, 5); return buf; } readRequest(handle) { const buf = Buffer.alloc(3); buf.writeUInt8(ATT.OP_READ_REQ, 0); buf.writeUInt16LE(handle, 1); return buf; } readBlobRequest(handle, offset) { const buf = Buffer.alloc(5); buf.writeUInt8(ATT.OP_READ_BLOB_REQ, 0); buf.writeUInt16LE(handle, 1); buf.writeUInt16LE(offset, 3); return buf; } findInfoRequest(startHandle, endHandle) { const buf = Buffer.alloc(5); buf.writeUInt8(ATT.OP_FIND_INFO_REQ, 0); buf.writeUInt16LE(startHandle, 1); buf.writeUInt16LE(endHandle, 3); return buf; } writeRequest(handle, data, withoutResponse) { const buf = Buffer.alloc(3 + data.length); buf.writeUInt8(withoutResponse ? ATT.OP_WRITE_CMD : ATT.OP_WRITE_REQ, 0); buf.writeUInt16LE(handle, 1); for (let i = 0; i < data.length; i++) { buf.writeUInt8(data.readUInt8(i), i + 3); } return buf; } prepareWriteRequest(handle, offset, data) { const buf = Buffer.alloc(5 + data.length); buf.writeUInt8(ATT.OP_PREPARE_WRITE_REQ, 0); buf.writeUInt16LE(handle, 1); buf.writeUInt16LE(offset, 3); for (let i = 0; i < data.length; i++) { buf.writeUInt8(data.readUInt8(i), i + 5); } return buf; } executeWriteRequest(handle, cancelPreparedWrites) { const buf = Buffer.alloc(2); buf.writeUInt8(ATT.OP_EXECUTE_WRITE_REQ, 0); buf.writeUInt8(cancelPreparedWrites ? 0 : 1, 1); return buf; } handleConfirmation() { const buf = Buffer.alloc(1); buf.writeUInt8(ATT.OP_HANDLE_CNF, 0); return buf; } } exports.GattCommon = GattCommon;