func GetNodeRole(homeID uint32, nodeID uint8) uint8 {
	return uint8(C.manager_getNodeRole(cmanager, C.uint32_t(homeID), C.uint8_t(nodeID)))
}
GetNodeRole returns the node role as reported in the Z-Wave+ Info report.
package goopenzwave
import "C"
import (
	"unsafe"
)
func RefreshNodeInfo(homeID uint32, nodeID uint8) bool {
	return bool(C.manager_refreshNodeInfo(cmanager, C.uint32_t(homeID), C.uint8_t(nodeID)))
}
func RequestNodeState(homeID uint32, nodeID uint8) bool {
	return bool(C.manager_requestNodeState(cmanager, C.uint32_t(homeID), C.uint8_t(nodeID)))
}
func RequestNodeDynamic(homeID uint32, nodeID uint8) bool {
	return bool(C.manager_requestNodeDynamic(cmanager, C.uint32_t(homeID), C.uint8_t(nodeID)))
}
func IsNodeListeningDevice(homeID uint32, nodeID uint8) bool {
	return bool(C.manager_isNodeListeningDevice(cmanager, C.uint32_t(homeID), C.uint8_t(nodeID)))
}
func IsNodeFrequentListeningDevice(homeID uint32, nodeID uint8) bool {
	return bool(C.manager_isNodeFrequentListeningDevice(cmanager, C.uint32_t(homeID), C.uint8_t(nodeID)))
}
func IsNodeBeamingDevice(homeID uint32, nodeID uint8) bool {
	return bool(C.manager_isNodeBeamingDevice(cmanager, C.uint32_t(homeID), C.uint8_t(nodeID)))
}
func IsNodeRoutingDevice(homeID uint32, nodeID uint8) bool {
	return bool(C.manager_isNodeRoutingDevice(cmanager, C.uint32_t(homeID), C.uint8_t(nodeID)))
}
func IsNodeSecurityDevice(homeID uint32, nodeID uint8) bool {
	return bool(C.manager_isNodeSecurityDevice(cmanager, C.uint32_t(homeID), C.uint8_t(nodeID)))
}
func GetNodeMaxBaudRate(homeID uint32, nodeID uint8) uint32 {
	return uint32(C.manager_getNodeMaxBaudRate(cmanager, C.uint32_t(homeID), C.uint8_t(nodeID)))
}
func GetNodeVersion(homeID uint32, nodeID uint8) uint8 {
	return uint8(C.manager_getNodeVersion(cmanager, C.uint32_t(homeID), C.uint8_t(nodeID)))
}
func GetNodeSecurity(homeID uint32, nodeID uint8) uint8 {
	return uint8(C.manager_getNodeSecurity(cmanager, C.uint32_t(homeID), C.uint8_t(nodeID)))
}
func IsNodeZWavePlus(homeID uint32, nodeID uint8) bool {
	return bool(C.manager_isNodeZWavePlus(cmanager, C.uint32_t(homeID), C.uint8_t(nodeID)))
}
func GetNodeBasicType(homeID uint32, nodeID uint8) uint8 {
	return uint8(C.manager_getNodeBasic(cmanager, C.uint32_t(homeID), C.uint8_t(nodeID)))
}
func GetNodeGenericType(homeID uint32, nodeID uint8) uint8 {
	return uint8(C.manager_getNodeGeneric(cmanager, C.uint32_t(homeID), C.uint8_t(nodeID)))
}
func GetNodeSpecificType(homeID uint32, nodeID uint8) uint8 {
	return uint8(C.manager_getNodeSpecific(cmanager, C.uint32_t(homeID), C.uint8_t(nodeID)))
}
func GetNodeType(homeID uint32, nodeID uint8) string {
	cstr := C.manager_getNodeType(cmanager, C.uint32_t(homeID), C.uint8_t(nodeID))
	defer C.free(unsafe.Pointer(cstr))
	return C.GoString(cstr)
}
func GetNodeManufacturerName(homeID uint32, nodeID uint8) string {
	cstr := C.manager_getNodeManufacturerName(cmanager, C.uint32_t(homeID), C.uint8_t(nodeID))
	defer C.free(unsafe.Pointer(cstr))
	return C.GoString(cstr)
}
func GetNodeProductName(homeID uint32, nodeID uint8) string {
	cstr := C.manager_getNodeProductName(cmanager, C.uint32_t(homeID), C.uint8_t(nodeID))
	defer C.free(unsafe.Pointer(cstr))
	return C.GoString(cstr)
}
func GetNodeName(homeID uint32, nodeID uint8) string {
	cstr := C.manager_getNodeName(cmanager, C.uint32_t(homeID), C.uint8_t(nodeID))
	defer C.free(unsafe.Pointer(cstr))
	return C.GoString(cstr)
}
func GetNodeLocation(homeID uint32, nodeID uint8) string {
	cstr := C.manager_getNodeLocation(cmanager, C.uint32_t(homeID), C.uint8_t(nodeID))
	defer C.free(unsafe.Pointer(cstr))
	return C.GoString(cstr)
}
func GetNodeManufacturerID(homeID uint32, nodeID uint8) string {
	cstr := C.manager_getNodeManufacturerId(cmanager, C.uint32_t(homeID), C.uint8_t(nodeID))
	defer C.free(unsafe.Pointer(cstr))
	return C.GoString(cstr)
}
func GetNodeProductType(homeID uint32, nodeID uint8) string {
	cstr := C.manager_getNodeProductType(cmanager, C.uint32_t(homeID), C.uint8_t(nodeID))
	defer C.free(unsafe.Pointer(cstr))
	return C.GoString(cstr)
}
func GetNodeProductID(homeID uint32, nodeID uint8) string {
	cstr := C.manager_getNodeProductId(cmanager, C.uint32_t(homeID), C.uint8_t(nodeID))
	defer C.free(unsafe.Pointer(cstr))
	return C.GoString(cstr)
}
func SetNodeManufacturerName(homeID uint32, nodeID uint8, manufacturerName string) {
	cstr := C.CString(manufacturerName)
	C.manager_setNodeManufacturerName(cmanager, C.uint32_t(homeID), C.uint8_t(nodeID), cstr)
	defer C.free(unsafe.Pointer(cstr))
}
func SetNodeProductName(homeID uint32, nodeID uint8, productName string) {
	cstr := C.CString(productName)
	C.manager_setNodeProductName(cmanager, C.uint32_t(homeID), C.uint8_t(nodeID), cstr)
	defer C.free(unsafe.Pointer(cstr))
}
func SetNodeName(homeID uint32, nodeID uint8, nodeName string) {
	cstr := C.CString(nodeName)
	C.manager_setNodeName(cmanager, C.uint32_t(homeID), C.uint8_t(nodeID), cstr)
	defer C.free(unsafe.Pointer(cstr))
}
func SetNodeLocation(homeID uint32, nodeID uint8, location string) {
	cstr := C.CString(location)
	C.manager_setNodeLocation(cmanager, C.uint32_t(homeID), C.uint8_t(nodeID), cstr)
	defer C.free(unsafe.Pointer(cstr))
}
func SetNodeOn(homeID uint32, nodeID uint8) {
	C.manager_setNodeOn(cmanager, C.uint32_t(homeID), C.uint8_t(nodeID))
}
func SetNodeOff(homeID uint32, nodeID uint8) {
	C.manager_setNodeOff(cmanager, C.uint32_t(homeID), C.uint8_t(nodeID))
}
func SetNodeLevel(homeID uint32, nodeID uint8, level uint8) {
	C.manager_setNodeLevel(cmanager, C.uint32_t(homeID), C.uint8_t(nodeID), C.uint8_t(level))
}
func IsNodeInfoReceived(homeID uint32, nodeID uint8) bool {
	return bool(C.manager_isNodeInfoReceived(cmanager, C.uint32_t(homeID), C.uint8_t(nodeID)))
}
func GetNodeClassInformation(homeID uint32, nodeID uint8, commandClassID uint8) (bool, string, uint8) {
	var cClassName *C.char
	var cClassVersion C.uint8_t
	result := bool(C.manager_getNodeClassInformation(cmanager, C.uint32_t(homeID), C.uint8_t(nodeID), C.uint8_t(commandClassID), &cClassName, &cClassVersion))
	goClassName := C.GoString(cClassName)
	goClassVersion := uint8(cClassVersion)
	C.free(unsafe.Pointer(cClassName))
	return result, goClassName, goClassVersion
}
func IsNodeAwake(homeID uint32, nodeID uint8) bool {
	return bool(C.manager_isNodeAwake(cmanager, C.uint32_t(homeID), C.uint8_t(nodeID)))
}
func IsNodeFailed(homeID uint32, nodeID uint8) bool {
	return bool(C.manager_isNodeFailed(cmanager, C.uint32_t(homeID), C.uint8_t(nodeID)))
}
func GetNodeQueryStage(homeID uint32, nodeID uint8) string {
	cstr := C.manager_getNodeQueryStage(cmanager, C.uint32_t(homeID), C.uint8_t(nodeID))
	defer C.free(unsafe.Pointer(cstr))
	return C.GoString(cstr)
}
func GetNodeDeviceType(homeID uint32, nodeID uint8) uint16 {
	return uint16(C.manager_getNodeDeviceType(cmanager, C.uint32_t(homeID), C.uint8_t(nodeID)))
}
func GetNodeDeviceTypeString(homeID uint32, nodeID uint8) string {
	cstr := C.manager_getNodeDeviceTypeString(cmanager, C.uint32_t(homeID), C.uint8_t(nodeID))
	defer C.free(unsafe.Pointer(cstr))
	return C.GoString(cstr)
}