pyipmi/msgs/sensor.py
# Copyright (c) 2014 Kontron Europe GmbH
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
from . import constants
from . import register_message_class
from . import Message
from . import UnsignedInt
from . import Timestamp
from . import Bitfield
from . import CompletionCode
from . import Optional
from . import RemainingBytes
from . import EventMessageRevision
@register_message_class
class GetDeviceSdrInfoReq(Message):
__cmdid__ = constants.CMDID_GET_DEVICE_SDR_INFO
__netfn__ = constants.NETFN_SENSOR_EVENT
@register_message_class
class GetDeviceSdrInfoRsp(Message):
__cmdid__ = constants.CMDID_GET_DEVICE_SDR_INFO
__netfn__ = constants.NETFN_SENSOR_EVENT | 1
__fields__ = (
CompletionCode(),
UnsignedInt('number_of_sensors', 1),
Bitfield('flags', 1,
Bitfield.Bit('lun0_has_sensors', 1),
Bitfield.Bit('lun1_has_sensors', 1),
Bitfield.Bit('lun2_has_sensors', 1),
Bitfield.Bit('lun3_has_sensors', 1),
Bitfield.ReservedBit(3, 0),
Bitfield.Bit('dynamic_population', 1)),
Optional(
Timestamp('sensor_population_change')
),
)
@register_message_class
class GetDeviceSdrReq(Message):
__cmdid__ = constants.CMDID_GET_DEVICE_SDR
__netfn__ = constants.NETFN_SENSOR_EVENT
__fields__ = (
UnsignedInt('reservation_id', 2, 0x0000),
UnsignedInt('record_id', 2),
UnsignedInt('offset', 1),
UnsignedInt('bytes_to_read', 1),
)
@register_message_class
class GetDeviceSdrRsp(Message):
__cmdid__ = constants.CMDID_GET_DEVICE_SDR
__netfn__ = constants.NETFN_SENSOR_EVENT | 1
__fields__ = (
CompletionCode(),
UnsignedInt('next_record_id', 2),
RemainingBytes('record_data'),
)
@register_message_class
class ReserveDeviceSdrRepositoryReq(Message):
__cmdid__ = constants.CMDID_RESERVE_DEVICE_SDR_REPOSITORY
__netfn__ = constants.NETFN_SENSOR_EVENT
@register_message_class
class ReserveDeviceSdrRepositoryRsp(Message):
__cmdid__ = constants.CMDID_RESERVE_DEVICE_SDR_REPOSITORY
__netfn__ = constants.NETFN_SENSOR_EVENT | 1
__fields__ = (
CompletionCode(),
UnsignedInt('reservation_id', 2)
)
@register_message_class
class GetSensorThresholdsReq(Message):
__cmdid__ = constants.CMDID_GET_SENSOR_THRESHOLD
__netfn__ = constants.NETFN_SENSOR_EVENT
__fields__ = (
UnsignedInt('sensor_number', 1),
)
@register_message_class
class GetSensorThresholdsRsp(Message):
__cmdid__ = constants.CMDID_GET_SENSOR_THRESHOLD
__netfn__ = constants.NETFN_SENSOR_EVENT | 1
__fields__ = (
CompletionCode(),
Bitfield('readable_mask', 1,
Bitfield.Bit('lnc', 1, default=0),
Bitfield.Bit('lcr', 1, default=0),
Bitfield.Bit('lnr', 1, default=0),
Bitfield.Bit('unc', 1, default=0),
Bitfield.Bit('ucr', 1, default=0),
Bitfield.Bit('unr', 1, default=0),
Bitfield.ReservedBit(2, 0),),
Bitfield('threshold', 6,
Bitfield.Bit('lnc', 8, default=0),
Bitfield.Bit('lcr', 8, default=0),
Bitfield.Bit('lnr', 8, default=0),
Bitfield.Bit('unc', 8, default=0),
Bitfield.Bit('ucr', 8, default=0),
Bitfield.Bit('unr', 8, default=0),),
)
@register_message_class
class SetSensorHysteresisReq(Message):
__cmdid__ = constants.CMDID_SET_SENSOR_HYSTERESIS
__netfn__ = constants.NETFN_SENSOR_EVENT
__fields__ = (
UnsignedInt('sensor_number', 1),
UnsignedInt('reserved', 1, 0xff),
UnsignedInt('positive_going_hysteresis', 1),
UnsignedInt('negative_going_hysteresis', 1),
)
@register_message_class
class SetSensorHysteresisRsp(Message):
__cmdid__ = constants.CMDID_SET_SENSOR_HYSTERESIS
__netfn__ = constants.NETFN_SENSOR_EVENT | 1
__fields__ = (
CompletionCode(),
)
@register_message_class
class GetSensorHysteresisReq(Message):
__cmdid__ = constants.CMDID_GET_SENSOR_HYSTERESIS
__netfn__ = constants.NETFN_SENSOR_EVENT
__fields__ = (
UnsignedInt('sensor_number', 1),
UnsignedInt('reserved', 1, 0xff),
)
@register_message_class
class GetSensorHysteresisRsp(Message):
__cmdid__ = constants.CMDID_GET_SENSOR_HYSTERESIS
__netfn__ = constants.NETFN_SENSOR_EVENT | 1
__fields__ = (
CompletionCode(),
UnsignedInt('positive_going_hysteresis', 1),
UnsignedInt('negative_going_hysteresis', 1),
)
@register_message_class
class SetSensorThresholdsReq(Message):
__cmdid__ = constants.CMDID_SET_SENSOR_THRESHOLD
__netfn__ = constants.NETFN_SENSOR_EVENT
__fields__ = (
UnsignedInt('sensor_number', 1),
Bitfield('set_mask', 1,
Bitfield.Bit('lnc', 1, default=0),
Bitfield.Bit('lcr', 1, default=0),
Bitfield.Bit('lnr', 1, default=0),
Bitfield.Bit('unc', 1, default=0),
Bitfield.Bit('ucr', 1, default=0),
Bitfield.Bit('unr', 1, default=0),
Bitfield.ReservedBit(2, 0),),
Bitfield('threshold', 6,
Bitfield.Bit('lnc', 8, default=0),
Bitfield.Bit('lcr', 8, default=0),
Bitfield.Bit('lnr', 8, default=0),
Bitfield.Bit('unc', 8, default=0),
Bitfield.Bit('ucr', 8, default=0),
Bitfield.Bit('unr', 8, default=0),),
)
@register_message_class
class SetSensorThresholdsRsp(Message):
__cmdid__ = constants.CMDID_SET_SENSOR_THRESHOLD
__netfn__ = constants.NETFN_SENSOR_EVENT | 1
__fields__ = (
CompletionCode(),
)
@register_message_class
class SetSensorEventEnableReq(Message):
__cmdid__ = constants.CMDID_SET_SENSOR_EVENT_ENABLE
__netfn__ = constants.NETFN_SENSOR_EVENT
__fields__ = (
UnsignedInt('sensor_number', 1),
Bitfield('enable', 1,
Bitfield.ReservedBit(4, 0),
Bitfield.Bit('config', 2, 0),
Bitfield.Bit('sensor_scanning', 1, 0),
Bitfield.Bit('event_message', 1, 0),),
Optional(UnsignedInt('byte3', 1)),
Optional(UnsignedInt('byte4', 1)),
Optional(UnsignedInt('byte5', 1)),
Optional(UnsignedInt('byte6', 1)),
)
@register_message_class
class SetSensorEventEnableRsp(Message):
__cmdid__ = constants.CMDID_SET_SENSOR_EVENT_ENABLE
__netfn__ = constants.NETFN_SENSOR_EVENT | 1
__fields__ = (
CompletionCode(),
)
@register_message_class
class GetSensorEventEnableReq(Message):
__cmdid__ = constants.CMDID_GET_SENSOR_EVENT_ENABLE
__netfn__ = constants.NETFN_SENSOR_EVENT
__fields__ = (
UnsignedInt('sensor_number', 1),
)
@register_message_class
class GetSensorEventEnableRsp(Message):
__cmdid__ = constants.CMDID_GET_SENSOR_EVENT_ENABLE
__netfn__ = constants.NETFN_SENSOR_EVENT | 1
__fields__ = (
CompletionCode(),
Bitfield('enabled', 1,
Bitfield.ReservedBit(6, 0),
Bitfield.Bit('sensor_scanning', 1, 0),
Bitfield.Bit('event_message', 1, 0),),
Optional(UnsignedInt('byte3', 1)),
Optional(UnsignedInt('byte4', 1)),
Optional(UnsignedInt('byte5', 1)),
Optional(UnsignedInt('byte6', 1)),
)
@register_message_class
class RearmSensorEventsReq(Message):
__cmdid__ = constants.CMDID_RE_ARM_SENSOR
__netfn__ = constants.NETFN_SENSOR_EVENT
__fields__ = (
UnsignedInt('sensor_number', 1),
Bitfield('re_arm', 1,
Bitfield.ReservedBit(7, 0),
Bitfield.Bit('all_event_status', 1, 0),),
UnsignedInt('re_arm_assertion_event', 2, 0),
UnsignedInt('re_arm_deassertion_event', 2, 0),
)
@register_message_class
class RearmSensorEventsRsp(Message):
__cmdid__ = constants.CMDID_RE_ARM_SENSOR
__netfn__ = constants.NETFN_SENSOR_EVENT | 1
__fields__ = (
CompletionCode(),
)
@register_message_class
class GetSensorReadingReq(Message):
__cmdid__ = constants.CMDID_GET_SENSOR_READING
__netfn__ = constants.NETFN_SENSOR_EVENT
__fields__ = (
UnsignedInt('sensor_number', 1),
)
@register_message_class
class GetSensorReadingRsp(Message):
__cmdid__ = constants.CMDID_GET_SENSOR_READING
__netfn__ = constants.NETFN_SENSOR_EVENT | 1
__fields__ = (
CompletionCode(),
UnsignedInt('sensor_reading', 1),
Bitfield('config', 1,
Bitfield.ReservedBit(5, 0),
Bitfield.Bit('initial_update_in_progress', 1, 0),
Bitfield.Bit('sensor_scanning_disabled', 1, 0),
Bitfield.Bit('event_message_disabled', 1, 0),),
Optional(UnsignedInt('states1', 1)),
Optional(UnsignedInt('states2', 1)),
)
@register_message_class
class PlatformEventReq(Message):
__cmdid__ = constants.CMDID_PLATFORM_EVENT
__netfn__ = constants.NETFN_SENSOR_EVENT
__fields__ = (
EventMessageRevision(4),
UnsignedInt('sensor_type', 1),
UnsignedInt('sensor_number', 1),
Bitfield('event_type', 1,
Bitfield.Bit('type', 7, 0),
Bitfield.Bit('dir', 1, 0),),
RemainingBytes('event_data'),
)
@register_message_class
class PlatformEventRsp(Message):
__cmdid__ = constants.CMDID_PLATFORM_EVENT
__netfn__ = constants.NETFN_SENSOR_EVENT | 1
__fields__ = (
CompletionCode(),
)