* OBJECT INITIALIZATION FUNCTIONS **
function ZWaveDeviceConnection(ipAddressFamily, ipAddress, pskIdentity, pskPassword) {
    // verify that crypto is available; if not, return an error
    if (!CryptoUtils.verifyCrypto()) {
        console.log('CRITICAL ERROR: crypto not available.');
        return;
    }

    // store our connection parameters
    this.ipAddressFamily = ipAddressFamily;
    this.ipAddress = ipAddress;
    this.pskIdentity = pskIdentity;
    this.pskPassword = pskPassword;
    // create a variable to hold our socket reference (once we send a message)
    this.dtlsSocket = null;
    // randomize the initial sequenceNumber
    // NOTE: this will throw an exception if the crypto library is not available.
    this.sequenceNumber = CryptoUtils.crypto.randomBytes(1)[0];
    // create a hash to hold a record of all outstanding messages which are waiting for an acknowledgment
    this.messagesWaitingForAck = {};
    // create an array to hold all outstanding commands which are waiting for responses
    this.pendingCommandCallbacks = [];
}