# Path: BAC0/core/devices/mixins/CommandableMixin.py
# class LocalBinaryOutputObjectCmd(CurrentPropertyListMixIn, BinaryOutputObjectCmd):
#     pass


from bacpypes.object import (
    MultiStateValueObject,
    AnalogValueObject,
    BinaryValueObject,
    AnalogInputObject,
    BinaryInputObject,
    AnalogOutputObject,
    BinaryOutputObject,
    CharacterStringValueObject,
    DateTimeValueObject,
    Property,
    register_object_type,
)
from bacpypes.local.object import (
    AnalogOutputCmdObject,
    AnalogValueCmdObject,
    BinaryOutputCmdObject,
    BinaryValueCmdObject,
)
from bacpypes.primitivedata import CharacterString, Date, Time, Real, Boolean
from bacpypes.constructeddata import ArrayOf
from bacpypes.basetypes import EngineeringUnits, DateTime, PriorityArray, StatusFlags
from .mixins.CommandableMixin import LocalBinaryOutputObjectCmd

def create_BI(oid=1, pv=0, name="BI", activeText="On", inactiveText="Off"):
    deprecate_msg()
    return BinaryInputObject(
        objectIdentifier=("binaryInput", oid),
        objectName=name,
        presentValue=pv,
        activeText=activeText,
        inactiveText=inactiveText,
        statusFlags=StatusFlags(),
    )


def create_AO(oid=1, pv=0, name="AO", units=None, pv_writable=False):
    aoo = AnalogOutputObject(
        objectIdentifier=("analogOutput", oid),
        objectName=name,
        presentValue=pv,
        units=units,
        priorityArray=PriorityArray(),
        statusFlags=StatusFlags(),
    )
    aoo = _make_mutable(aoo, mutable=pv_writable)
    deprecate_msg()
    return aoo


def create_BO(
    oid=1, pv=0, name="BO", activeText="On", inactiveText="Off", pv_writable=False
):

# Path: BAC0/core/devices/mixins/CommandableMixin.py
# class LocalBinaryOutputObjectCmd(CurrentPropertyListMixIn, BinaryOutputObjectCmd):
#     pass


# Path: BAC0/core/devices/create_objects.py
from bacpypes.object import (
    MultiStateValueObject,
    AnalogValueObject,
    BinaryValueObject,
    AnalogInputObject,
    BinaryInputObject,
    AnalogOutputObject,
    BinaryOutputObject,
    CharacterStringValueObject,
    DateTimeValueObject,
    Property,
    register_object_type,
)
from bacpypes.local.object import (
    AnalogOutputCmdObject,
    AnalogValueCmdObject,
    BinaryOutputCmdObject,
    BinaryValueCmdObject,
)
from bacpypes.primitivedata import CharacterString, Date, Time, Real, Boolean
from bacpypes.constructeddata import ArrayOf
from bacpypes.basetypes import EngineeringUnits, DateTime, PriorityArray, StatusFlags
from .mixins.CommandableMixin import LocalBinaryOutputObjectCmd


def create_BI(oid=1, pv=0, name="BI", activeText="On", inactiveText="Off"):
    deprecate_msg()
    return BinaryInputObject(
        objectIdentifier=("binaryInput", oid),
        objectName=name,
        presentValue=pv,
        activeText=activeText,
        inactiveText=inactiveText,
        statusFlags=StatusFlags(),
    )


def create_AO(oid=1, pv=0, name="AO", units=None, pv_writable=False):
    aoo = AnalogOutputObject(
        objectIdentifier=("analogOutput", oid),
        objectName=name,
        presentValue=pv,
        units=units,
        priorityArray=PriorityArray(),
        statusFlags=StatusFlags(),
    )
    aoo = _make_mutable(aoo, mutable=pv_writable)
    deprecate_msg()
    return aoo


def create_BO(
    oid=1, pv=0, name="BO", activeText="On", inactiveText="Off", pv_writable=False
):

    boo = LocalBinaryOutputObjectCmd(