knxultimate
Version:
KNX IP protocol implementation for Node. This is the ENGINE of Node-Red KNX-Ultimate node.
49 lines (42 loc) • 1.22 kB
text/typescript
/**
* Builds KNX disconnect request frames.
*
* Written in Italy with love, sun and passion, by Massimo Saccani.
*
* Released under the MIT License.
* Use at your own risk; the author assumes no liability for damages.
*/
import KNXPacket from './KNXPacket'
import HPAI from './HPAI'
import { KNX_CONSTANTS } from './KNXConstants'
export default class KNXDisconnectRequest extends KNXPacket {
channelID: number
hpaiControl: HPAI
constructor(channelID: number, hpaiControl: HPAI = HPAI.NULLHPAI) {
super(KNX_CONSTANTS.DISCONNECT_REQUEST, hpaiControl.length + 2)
this.channelID = channelID
this.hpaiControl = hpaiControl
}
static createFromBuffer(
buffer: Buffer,
offset: number = 0,
): KNXDisconnectRequest {
if (offset >= buffer.length) {
throw new Error('Buffer too short')
}
const channelID = buffer.readUInt8(offset++)
offset++
const hpaiControl = HPAI.createFromBuffer(buffer, offset)
return new KNXDisconnectRequest(channelID, hpaiControl)
}
toBuffer(): Buffer {
const buffer = Buffer.alloc(2)
buffer.writeUInt8(this.channelID, 0)
buffer.writeUInt8(0, 1)
return Buffer.concat([
this.header.toBuffer(),
buffer,
this.hpaiControl.toBuffer(),
])
}
}