homebridge-bondbridge
Version:
Plugin to integrate BondBridge units by Bond to Homekit
59 lines (43 loc) • 1.71 kB
JavaScript
;
let ucFirst = require( "../utils/ucFirst" );
let BB2_DEVICE_TYPE_ENUM = require( "../lib/BB2_DEVICE_TYPE_ENUM" ).BB2_DEVICE_TYPE_ENUM;
// Description:
// Determine if type is a Bb2 device based BB2_DEVICE_TYPE_ENUM.deviceName
//
// @param deviceName - The device name to check. i.e. "Switch"
// @param allowUpper - if upper case allowed to be checked.
// @returns: { deviceName: The CORRECT device name
// devEnumIndex: The index of the characteristic
// } or null
function isDevDirective( deviceName, allowUpper = false )
{
// We return similiar to isAccDirective
// We must return a null devTypeIndex, which should be checked instead
// of just rc, like isAccDirective
let defaultRc = { "deviceName": deviceName,
"devEnumIndex": null
};
if ( ! deviceName )
{
console.warn( "No parameter passed to isDevDirective" );
return defaultRc;
}
let devEnumIndex;
// We want lower case to be correct
devEnumIndex = BB2_DEVICE_TYPE_ENUM.Bb2indexOfEnum( deviceName );
if ( devEnumIndex >= 0 )
return { "deviceName": deviceName,
"devEnumIndex": devEnumIndex };
// Note: There are othes like WiFi ... but nobody uses them thankfully !
if ( allowUpper == true )
{
let ucDeviceName = ucFirst( deviceName );
devEnumIndex = BB2_DEVICE_TYPE_ENUM.Bb2indexOfEnum( ucDeviceName );
// We return the correct upper case
if ( devEnumIndex >= 0 )
return { "deviceName": BB2_DEVICE_TYPE_ENUM.devEnumIndexToC( devEnumIndex ),
"devEnumIndex": devEnumIndex };
}
return defaultRc;
}
module.exports = isDevDirective;