File: cmd_rearm_sensor_events.go

package info (click to toggle)
golang-github-bougou-go-ipmi 0.7.8-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,880 kB
  • sloc: makefile: 38
file content (126 lines) | stat: -rw-r--r-- 5,405 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
package ipmi

import (
	"context"
)

// 35.12 Re-arm Sensor Events Command
type RearmSensorEventsRequest struct {
	SensorNumber uint8

	RearmAllEventStatus bool

	DiscreteEvents bool

	// If the field of SensorEventFlag is true, it means to re-arm the specific event
	SensorEventFlag
}

type RearmSensorEventsResponse struct {
}

func (req *RearmSensorEventsRequest) Command() Command {
	return CommandRearmSensorEvents
}

func (req *RearmSensorEventsRequest) Pack() []byte {
	out := make([]byte, 2)

	out[0] = req.SensorNumber

	var b1 uint8
	// [7] - 0b = re-arm all event status from this sensor.
	b1 = setOrClearBit7(b1, !req.RearmAllEventStatus)
	out[1] = b1

	if req.RearmAllEventStatus {
		return out
	}

	var b2, b3, b4, b5 uint8
	if req.DiscreteEvents {
		b2 = setOrClearBit7(b2, req.SensorEventFlag.SensorEvent_State_7_Assert)
		b2 = setOrClearBit6(b2, req.SensorEventFlag.SensorEvent_State_6_Assert)
		b2 = setOrClearBit5(b2, req.SensorEventFlag.SensorEvent_State_5_Assert)
		b2 = setOrClearBit4(b2, req.SensorEventFlag.SensorEvent_State_4_Assert)
		b2 = setOrClearBit3(b2, req.SensorEventFlag.SensorEvent_State_3_Assert)
		b2 = setOrClearBit2(b2, req.SensorEventFlag.SensorEvent_State_2_Assert)
		b2 = setOrClearBit1(b2, req.SensorEventFlag.SensorEvent_State_1_Assert)
		b2 = setOrClearBit0(b2, req.SensorEventFlag.SensorEvent_State_0_Assert)

		b3 = setOrClearBit6(b3, req.SensorEventFlag.SensorEvent_State_14_Assert)
		b3 = setOrClearBit5(b3, req.SensorEventFlag.SensorEvent_State_13_Assert)
		b3 = setOrClearBit4(b3, req.SensorEventFlag.SensorEvent_State_12_Assert)
		b3 = setOrClearBit3(b3, req.SensorEventFlag.SensorEvent_State_11_Assert)
		b3 = setOrClearBit2(b3, req.SensorEventFlag.SensorEvent_State_10_Assert)
		b3 = setOrClearBit1(b3, req.SensorEventFlag.SensorEvent_State_9_Assert)
		b3 = setOrClearBit0(b3, req.SensorEventFlag.SensorEvent_State_8_Assert)

		b4 = setOrClearBit7(b4, req.SensorEventFlag.SensorEvent_State_7_Deassert)
		b4 = setOrClearBit6(b4, req.SensorEventFlag.SensorEvent_State_6_Deassert)
		b4 = setOrClearBit5(b4, req.SensorEventFlag.SensorEvent_State_5_Deassert)
		b4 = setOrClearBit4(b4, req.SensorEventFlag.SensorEvent_State_4_Deassert)
		b4 = setOrClearBit3(b4, req.SensorEventFlag.SensorEvent_State_3_Deassert)
		b4 = setOrClearBit2(b4, req.SensorEventFlag.SensorEvent_State_3_Deassert)
		b4 = setOrClearBit1(b4, req.SensorEventFlag.SensorEvent_State_1_Deassert)
		b4 = setOrClearBit0(b4, req.SensorEventFlag.SensorEvent_State_0_Deassert)

		b5 = setOrClearBit6(b5, req.SensorEventFlag.SensorEvent_State_14_Deassert)
		b5 = setOrClearBit5(b5, req.SensorEventFlag.SensorEvent_State_13_Deassert)
		b5 = setOrClearBit4(b5, req.SensorEventFlag.SensorEvent_State_12_Deassert)
		b5 = setOrClearBit3(b5, req.SensorEventFlag.SensorEvent_State_11_Deassert)
		b5 = setOrClearBit2(b5, req.SensorEventFlag.SensorEvent_State_10_Deassert)
		b5 = setOrClearBit1(b5, req.SensorEventFlag.SensorEvent_State_9_Deassert)
		b5 = setOrClearBit0(b5, req.SensorEventFlag.SensorEvent_State_8_Deassert)

	} else {
		b2 = setOrClearBit7(b2, req.SensorEventFlag.SensorEvent_UNC_High_Assert)
		b2 = setOrClearBit6(b2, req.SensorEventFlag.SensorEvent_UNC_Low_Assert)
		b2 = setOrClearBit5(b2, req.SensorEventFlag.SensorEvent_LNR_High_Assert)
		b2 = setOrClearBit4(b2, req.SensorEventFlag.SensorEvent_LNR_Low_Assert)
		b2 = setOrClearBit3(b2, req.SensorEventFlag.SensorEvent_LCR_High_Assert)
		b2 = setOrClearBit2(b2, req.SensorEventFlag.SensorEvent_LCR_Low_Assert)
		b2 = setOrClearBit1(b2, req.SensorEventFlag.SensorEvent_LNC_High_Assert)
		b2 = setOrClearBit0(b2, req.SensorEventFlag.SensorEvent_LNC_Low_Assert)

		b3 = setOrClearBit3(b3, req.SensorEventFlag.SensorEvent_UNR_High_Assert)
		b3 = setOrClearBit2(b3, req.SensorEventFlag.SensorEvent_UNR_Low_Assert)
		b3 = setOrClearBit1(b3, req.SensorEventFlag.SensorEvent_UCR_High_Assert)
		b3 = setOrClearBit0(b3, req.SensorEventFlag.SensorEvent_UCR_Low_Assert)

		b4 = setOrClearBit7(b4, req.SensorEventFlag.SensorEvent_UNC_High_Deassert)
		b4 = setOrClearBit6(b4, req.SensorEventFlag.SensorEvent_UNC_Low_Deassert)
		b4 = setOrClearBit5(b4, req.SensorEventFlag.SensorEvent_LNR_High_Deassert)
		b4 = setOrClearBit4(b4, req.SensorEventFlag.SensorEvent_LNR_Low_Deassert)
		b4 = setOrClearBit3(b4, req.SensorEventFlag.SensorEvent_LCR_High_Deassert)
		b4 = setOrClearBit2(b4, req.SensorEventFlag.SensorEvent_LCR_Low_Deassert)
		b4 = setOrClearBit1(b4, req.SensorEventFlag.SensorEvent_LNC_High_Deassert)
		b4 = setOrClearBit0(b4, req.SensorEventFlag.SensorEvent_LNC_Low_Deassert)

		b5 = setOrClearBit3(b5, req.SensorEventFlag.SensorEvent_UNR_High_Deassert)
		b5 = setOrClearBit2(b5, req.SensorEventFlag.SensorEvent_UNR_Low_Deassert)
		b5 = setOrClearBit1(b5, req.SensorEventFlag.SensorEvent_UCR_High_Deassert)
		b5 = setOrClearBit0(b5, req.SensorEventFlag.SensorEvent_UCR_Low_Deassert)
	}

	out = append(out, []byte{b2, b3, b4, b5}...)
	return out
}

func (res *RearmSensorEventsResponse) Unpack(msg []byte) error {
	return nil
}

func (r *RearmSensorEventsResponse) CompletionCodes() map[uint8]string {
	return map[uint8]string{}
}

func (res *RearmSensorEventsResponse) Format() string {
	return ""
}

func (c *Client) RearmSensorEvents(ctx context.Context, request *RearmSensorEventsRequest) (response *RearmSensorEventsResponse, err error) {
	response = &RearmSensorEventsResponse{}
	err = c.Exchange(ctx, request, response)
	return
}