requests

package
v0.9.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 27, 2026 License: MIT Imports: 2 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ActivateKeypadsRequest = Request{
	Message: Message{
		Name:    "activate keypads request",
		MsgType: 0xa4,
		Fields: []Field{
			{
				Name:        "controller",
				Type:        "uint32",
				Offset:      4,
				Description: "controller serial number",
			},
			{
				Name:   "reader 1",
				Type:   "bool",
				Offset: 8,
			},
			{
				Name:   "reader 2",
				Type:   "bool",
				Offset: 9,
			},
			{
				Name:   "reader 3",
				Type:   "bool",
				Offset: 10,
			},
			{
				Name:   "reader 4",
				Type:   "bool",
				Offset: 11,
			},
		},
	},

	Tests: []RequestTest{
		{
			Name: "activate-keypads",
			Args: []Arg{
				{
					Name:  "controller",
					Type:  "uint32",
					Value: 405419896,
				},
				{
					Name:  "reader 1",
					Type:  "bool",
					Value: true,
				},
				{
					Name:  "reader 2",
					Type:  "bool",
					Value: true,
				},
				{
					Name:  "reader 3",
					Type:  "bool",
					Value: false,
				},
				{
					Name:  "reader 4",
					Type:  "bool",
					Value: true,
				},
			},
			Expected: []byte{
				0x17, 0xa4, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			},
		},
	},
}
View Source
var AddTaskRequest = Request{
	Message: Message{
		Name:    "add task request",
		MsgType: 0xa8,
		Fields: []Field{
			{
				Name:        "controller",
				Type:        "uint32",
				Offset:      4,
				Description: "controller serial number",
			},
			{
				Name:   "task",
				Type:   "task",
				Offset: 26,
			},
			{
				Name:   "start date",
				Type:   "date",
				Offset: 8,
			},
			{
				Name:   "end date",
				Type:   "date",
				Offset: 12,
			},
			{
				Name:   "monday",
				Type:   "bool",
				Offset: 16,
			},
			{
				Name:   "tuesday",
				Type:   "bool",
				Offset: 17,
			},
			{
				Name:   "wednesday",
				Type:   "bool",
				Offset: 18,
			},
			{
				Name:   "thursday",
				Type:   "bool",
				Offset: 19,
			},
			{
				Name:   "friday",
				Type:   "bool",
				Offset: 20,
			},
			{
				Name:   "saturday",
				Type:   "bool",
				Offset: 21,
			},
			{
				Name:   "sunday",
				Type:   "bool",
				Offset: 22,
			},
			{
				Name:   "start time",
				Type:   "HHmm",
				Offset: 23,
			},
			{
				Name:   "door",
				Type:   "uint8",
				Offset: 25,
			},
			{
				Name:   "more cards",
				Type:   "uint8",
				Offset: 27,
			},
		},
	},
	Tests: []RequestTest{
		{
			Name: "add-task",
			Args: []Arg{
				{
					Name:  "controller",
					Type:  "uint32",
					Value: 405419896,
				},
				{
					Name:  "task",
					Type:  "task",
					Value: "2",
				},
				{
					Name:  "start date",
					Type:  "date",
					Value: "2025-01-01",
				},
				{
					Name:  "end date",
					Type:  "date",
					Value: "2025-12-31",
				},
				{
					Name:  "monday",
					Type:  "bool",
					Value: "true",
				},
				{
					Name:  "tuesday",
					Type:  "bool",
					Value: "true",
				},
				{
					Name:  "wednesday",
					Type:  "bool",
					Value: "false",
				},
				{
					Name:  "thursday",
					Type:  "bool",
					Value: "true",
				},
				{
					Name:  "friday",
					Type:  "bool",
					Value: "false",
				},
				{
					Name:  "saturday",
					Type:  "bool",
					Value: "true",
				},
				{
					Name:  "sunday",
					Type:  "bool",
					Value: "true",
				},
				{
					Name:  "start time",
					Type:  "HHmm",
					Value: "08:45",
				},
				{
					Name:  "door",
					Type:  "uint8",
					Value: "3",
				},
				{
					Name:  "more cards",
					Type:  "uint8",
					Value: "7",
				},
			},
			Expected: []byte{
				0x17, 0xa8, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x20, 0x25, 0x01, 0x01, 0x20, 0x25, 0x12, 0x31,
				0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x08, 0x45, 0x03, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			},
		},
	},
}
View Source
var ClearTaskListRequest = Request{
	Message: Message{
		Name:    "clear tasklist request",
		MsgType: 0xa6,
		Fields: []Field{
			{
				Name:        "controller",
				Type:        "uint32",
				Offset:      4,
				Description: "controller serial number",
			},
			{
				Name:   "",
				Type:   "magic",
				Offset: 8,
			},
		},
	},

	Tests: []RequestTest{
		{
			Name: "clear-task-list",
			Args: []Arg{
				{
					Name:  "controller",
					Type:  "uint32",
					Value: 405419896,
				},
			},
			Expected: []byte{
				0x17, 0xa6, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x55, 0xaa, 0xaa, 0x55, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			},
		},
	},
}
View Source
var ClearTimeProfilesRequest = Request{
	Message: Message{
		Name:    "clear time profiles request",
		MsgType: 0x8a,
		Fields: []Field{
			{
				Name:        "controller",
				Type:        "uint32",
				Offset:      4,
				Description: "controller serial number",
			},
			{
				Name:   "",
				Type:   "magic",
				Offset: 8,
			},
		},
	},
	Tests: []RequestTest{
		{
			Name: "clear-time-profiles",
			Args: []Arg{
				{
					Name:  "controller",
					Type:  "uint32",
					Value: 405419896,
				},
			},
			Expected: []byte{
				0x17, 0x8a, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x55, 0xaa, 0xaa, 0x55, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			},
		},
	},
}
View Source
var DeleteAllCardsRequest = Request{
	Message: Message{
		Name:    "delete cards request",
		MsgType: 0x54,
		Fields: []Field{
			{
				Name:        "controller",
				Type:        "uint32",
				Offset:      4,
				Description: "controller serial number",
			},
			{
				Name:   "",
				Type:   "magic",
				Offset: 8,
			},
		},
	},

	Tests: []RequestTest{
		{
			Name: "delete-all-cards",
			Args: []Arg{
				{
					Name:  "controller",
					Type:  "uint32",
					Value: 405419896,
				},
			},
			Expected: []byte{
				0x17, 0x54, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x55, 0xaa, 0xaa, 0x55, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			},
		},
	},
}
View Source
var DeleteCardRequest = Request{
	Message: Message{
		Name:    "delete card request",
		MsgType: 0x52,
		Fields: []Field{
			{
				Name:        "controller",
				Type:        "uint32",
				Offset:      4,
				Description: "controller serial number",
			},
			{
				Name:   "card number",
				Type:   "uint32",
				Offset: 8,
			},
		},
	},

	Tests: []RequestTest{
		{
			Name: "delete-card",
			Args: []Arg{
				{
					Name:  "controller",
					Type:  "uint32",
					Value: 405419896,
				},
				{
					Name:  "card",
					Type:  "uint32",
					Value: 10058400,
				},
			},
			Expected: []byte{
				0x17, 0x52, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0xa0, 0x7a, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			},
		},
	},
}
View Source
var GetAntiPassbackRequest = Request{
	Message: Message{
		Name:    "get antipassback request",
		MsgType: 0x86,
		Fields: []Field{
			{
				Name:        "controller",
				Type:        "uint32",
				Offset:      4,
				Description: "controller serial number",
			},
		},
	},

	Tests: []RequestTest{
		{
			Name: "get-antipassack",
			Args: []Arg{
				{
					Name:  "controller",
					Type:  "uint32",
					Value: 405419896,
				},
			},
			Expected: []byte{
				0x17, 0x86, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			},
		},
	},
}
View Source
var GetCardAtIndexRequest = Request{
	Message: Message{
		Name:    "get card at index request",
		MsgType: 0x5c,
		Fields: []Field{
			{
				Name:        "controller",
				Type:        "uint32",
				Offset:      4,
				Description: "controller serial number",
			},
			{
				Name:   "index",
				Type:   "uint32",
				Offset: 8,
			},
		},
	},
	Tests: []RequestTest{
		{
			Name: "get-card-at-index",
			Args: []Arg{
				{
					Name:  "controller",
					Type:  "uint32",
					Value: 405419896,
				},
				{
					Name:  "index",
					Type:  "uint32",
					Value: 135,
				},
			},
			Expected: []byte{
				0x17, 0x5c, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			},
		},
	},
}
View Source
var GetCardRequest = Request{
	Message: Message{
		Name:    "get card request",
		MsgType: 0x5a,
		Fields: []Field{
			{
				Name:        "controller",
				Type:        "uint32",
				Offset:      4,
				Description: "controller serial number",
			},
			{
				Name:   "card number",
				Type:   "uint32",
				Offset: 8,
			},
		},
	},
	Tests: []RequestTest{
		{
			Name: "get-card",
			Args: []Arg{
				{
					Name:  "controller",
					Type:  "uint32",
					Value: 405419896,
				},
				{
					Name:  "card",
					Type:  "uint32",
					Value: 10058400,
				},
			},
			Expected: []byte{
				0x17, 0x5a, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0xa0, 0x7a, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			},
		},
	},
}
View Source
var GetCardsRequest = Request{
	Message: Message{
		Name:    "get cards request",
		MsgType: 0x58,
		Fields: []Field{
			{
				Name:        "controller",
				Type:        "uint32",
				Offset:      4,
				Description: "controller serial number",
			},
		},
	},
	Tests: []RequestTest{
		{
			Name: "get-cards",
			Args: []Arg{
				{
					Name:  "controller",
					Type:  "uint32",
					Value: 405419896,
				},
			},
			Expected: []byte{
				0x17, 0x58, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			},
		},
	},
}
View Source
var GetControllerRequest = Request{
	Message: Message{
		Name:    "get controller request",
		MsgType: 0x94,
		Fields: []Field{
			{
				Name:        "controller",
				Type:        "uint32",
				Offset:      4,
				Description: "controller serial number",
			},
		},
	},
	Tests: []RequestTest{
		{
			Name: "find-controllers",
			Args: []Arg{
				{
					Name:  "controller",
					Type:  "uint32",
					Value: 0,
				},
			},
			Expected: []byte{
				0x17, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			},
		},
		{
			Name: "get-controller",
			Args: []Arg{
				{
					Name:  "controller",
					Type:  "uint32",
					Value: 405419896,
				},
			},
			Expected: []byte{
				0x17, 0x94, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			},
		},
	},
}
View Source
var GetDoorRequest = Request{
	Message: Message{
		Name:    "get door request",
		MsgType: 0x82,
		Fields: []Field{
			{
				Name:        "controller",
				Type:        "uint32",
				Offset:      4,
				Description: "controller serial number",
			},
			{
				Name:        "door",
				Type:        "uint8",
				Offset:      8,
				Description: "door ID ([1..4])",
			},
		},
	},
	Tests: []RequestTest{
		{
			Name: "get-door",
			Args: []Arg{
				{
					Name:  "controller",
					Type:  "uint32",
					Value: 405419896,
				},
				{
					Name:  "door",
					Type:  "uint8",
					Value: 3,
				},
			},
			Expected: []byte{
				0x17, 0x82, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			},
		},
	},
}
View Source
var GetEventIndexRequest = Request{
	Message: Message{
		Name:    "get event index request",
		MsgType: 0xb4,
		Fields: []Field{
			{
				Name:        "controller",
				Type:        "uint32",
				Offset:      4,
				Description: "controller serial number",
			},
		},
	},

	Tests: []RequestTest{
		{
			Name: "get-event-index",
			Args: []Arg{
				{
					Name:  "controller",
					Type:  "uint32",
					Value: 405419896,
				},
			},
			Expected: []byte{
				0x17, 0xb4, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			},
		},
	},
}
View Source
var GetEventRequest = Request{
	Message: Message{
		Name:    "get event request",
		MsgType: 0xb0,
		Fields: []Field{
			{
				Name:        "controller",
				Type:        "uint32",
				Offset:      4,
				Description: "controller serial number",
			},
			{
				Name:   "event index",
				Type:   "uint32",
				Offset: 8,
			},
		},
	},
	Tests: []RequestTest{
		{
			Name: "get-event",
			Args: []Arg{
				{
					Name:  "controller",
					Type:  "uint32",
					Value: 405419896,
				},
				{
					Name:  "event index",
					Type:  "uint32",
					Value: 13579,
				},
			},
			Expected: []byte{
				0x17, 0xb0, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x0b, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			},
		},
	},
}
View Source
var GetListenerAddrPortRequest = Request{
	Message: Message{
		Name:    "get listener addr port request",
		MsgType: 0x92,
		Fields: []Field{
			{
				Name:        "controller",
				Type:        "uint32",
				Offset:      4,
				Description: "controller serial number",
			},
		},
	},
	Tests: []RequestTest{
		{
			Name: "get-listener-addr-port",
			Args: []Arg{
				{
					Name:  "controller",
					Type:  "uint32",
					Value: 405419896,
				},
			},
			Expected: []byte{
				0x17, 0x92, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			},
		},
	},
}
View Source
var GetListenerRequest = Request{
	Message: Message{
		Name:    "get listener request",
		MsgType: 0x92,
		Fields: []Field{
			{
				Name:        "controller",
				Type:        "uint32",
				Offset:      4,
				Description: "controller serial number",
			},
		},
	},
	Tests: []RequestTest{
		{
			Name: "get-listener",
			Args: []Arg{
				{
					Name:  "controller",
					Type:  "uint32",
					Value: 405419896,
				},
			},
			Expected: []byte{
				0x17, 0x92, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			},
		},
	},
}
View Source
var GetStatusRequest = Request{
	Message: Message{
		Name:    "get status request",
		MsgType: 0x20,
		Fields: []Field{
			{
				Name:        "controller",
				Type:        "uint32",
				Offset:      4,
				Description: "controller serial number",
			},
		},
	},
	Tests: []RequestTest{
		{
			Name: "get-status",
			Args: []Arg{
				{
					Name:  "controller",
					Type:  "uint32",
					Value: 405419896,
				},
			},
			Expected: []byte{
				0x17, 0x20, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			},
		},
	},
}
View Source
var GetTimeProfileRequest = Request{
	Message: Message{
		Name:    "get time profile request",
		MsgType: 0x98,
		Fields: []Field{
			{
				Name:        "controller",
				Type:        "uint32",
				Offset:      4,
				Description: "controller serial number",
			},
			{
				Name:   "profile",
				Type:   "uint8",
				Offset: 8,
			},
		},
	},
	Tests: []RequestTest{
		{
			Name: "get-time-profile",
			Args: []Arg{
				{
					Name:  "controller",
					Type:  "uint32",
					Value: 405419896,
				},
				{
					Name:  "profile",
					Type:  "uint8",
					Value: 37,
				},
			},
			Expected: []byte{
				0x17, 0x98, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			},
		},
	},
}
View Source
var GetTimeRequest = Request{
	Message: Message{
		Name:    "get time request",
		MsgType: 0x32,
		Fields: []Field{
			{
				Name:        "controller",
				Type:        "uint32",
				Offset:      4,
				Description: "controller serial number",
			},
		},
	},
	Tests: []RequestTest{
		{
			Name: "get-time",
			Args: []Arg{
				{
					Name:  "controller",
					Type:  "uint32",
					Value: 405419896,
				},
			},
			Expected: []byte{
				0x17, 0x32, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			},
		},
	},
}
View Source
var OpenDoorRequest = Request{
	Message: Message{
		Name:    "open door request",
		MsgType: 0x40,
		Fields: []Field{
			{
				Name:        "controller",
				Type:        "uint32",
				Offset:      4,
				Description: "controller serial number",
			},
			{
				Name:   "door",
				Type:   "uint8",
				Offset: 8,
			},
		},
	},
	Tests: []RequestTest{
		{
			Name: "open-door",
			Args: []Arg{
				{
					Name:  "controller",
					Type:  "uint32",
					Value: 405419896,
				},
				{
					Name:  "door",
					Type:  "uint8",
					Value: 3,
				},
			},
			Expected: []byte{
				0x17, 0x40, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			},
		},
	},
}
View Source
var PutCardRequest = Request{
	Message: Message{
		Name:    "put card request",
		MsgType: 0x50,
		Fields: []Field{
			{
				Name:        "controller",
				Type:        "uint32",
				Offset:      4,
				Description: "controller serial number",
			},
			{
				Name:   "card",
				Type:   "uint32",
				Offset: 8,
			},
			{
				Name:   "start date",
				Type:   "date",
				Offset: 12,
			},
			{
				Name:   "end date",
				Type:   "date",
				Offset: 16,
			},
			{
				Name:   "door 1",
				Type:   "uint8",
				Offset: 20,
			},
			{
				Name:   "door 2",
				Type:   "uint8",
				Offset: 21,
			},
			{
				Name:   "door 3",
				Type:   "uint8",
				Offset: 22,
			},
			{
				Name:   "door 4",
				Type:   "uint8",
				Offset: 23,
			},
			{
				Name:   "PIN",
				Type:   "pin",
				Offset: 24,
			},
		},
	},
	Tests: []RequestTest{
		{
			Name: "put-card",
			Args: []Arg{
				{
					Name:  "controller",
					Type:  "uint32",
					Value: 405419896,
				},
				{
					Name:  "card",
					Type:  "uint32",
					Value: 10058400,
				},
				{
					Name:  "start date",
					Type:  "date",
					Value: "2025-01-01",
				},
				{
					Name:  "end date",
					Type:  "date",
					Value: "2025-12-31",
				},
				{
					Name:  "door 1",
					Type:  "uint8",
					Value: 1,
				},
				{
					Name:  "door 2",
					Type:  "uint8",
					Value: 0,
				},
				{
					Name:  "door 3",
					Type:  "uint8",
					Value: 17,
				},
				{
					Name:  "door 4",
					Type:  "uint8",
					Value: 1,
				},
				{
					Name:  "PIN",
					Type:  "pin",
					Value: 999999,
				},
			},
			Expected: []byte{
				0x17, 0x50, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0xa0, 0x7a, 0x99, 0x00, 0x20, 0x25, 0x01, 0x01,
				0x20, 0x25, 0x12, 0x31, 0x01, 0x00, 0x11, 0x01, 0x3f, 0x42, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			},
		},
	},
}
View Source
var RecordSpecialEventsRequest = Request{
	Message: Message{
		Name:    "record special events request",
		MsgType: 0x8e,
		Fields: []Field{
			{
				Name:        "controller",
				Type:        "uint32",
				Offset:      4,
				Description: "controller serial number",
			},
			{
				Name:   "enabled",
				Type:   "bool",
				Offset: 8,
			},
		},
	},

	Tests: []RequestTest{
		{
			Name: "record-special-events-request",
			Args: []Arg{
				{
					Name:  "controller",
					Type:  "uint32",
					Value: 405419896,
				},
				{
					Name:  "enabled",
					Type:  "bool",
					Value: true,
				},
			},
			Expected: []byte{
				0x17, 0x8e, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			},
		},
	},
}
View Source
var RefreshTaskListRequest = Request{
	Message: Message{
		Name:    "refresh task list request",
		MsgType: 0xac,
		Fields: []Field{
			{
				Name:        "controller",
				Type:        "uint32",
				Offset:      4,
				Description: "controller serial number",
			},
			{
				Name:   "",
				Type:   "magic",
				Offset: 8,
			},
		},
	},

	Tests: []RequestTest{
		{
			Name: "refresh-task-list",
			Args: []Arg{
				{
					Name:  "controller",
					Type:  "uint32",
					Value: 405419896,
				},
			},
			Expected: []byte{
				0x17, 0xac, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x55, 0xaa, 0xaa, 0x55, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			},
		},
	},
}
View Source
var RestoreDefaultParametersRequest = Request{
	Message: Message{
		Name:    "restore default parameters request",
		MsgType: 0xc8,
		Fields: []Field{
			{
				Name:        "controller",
				Type:        "uint32",
				Offset:      4,
				Description: "controller serial number",
			},
			{
				Name:   "",
				Type:   "magic",
				Offset: 8,
			},
		},
	},

	Tests: []RequestTest{
		{
			Name: "restore-default-parameters",
			Args: []Arg{
				{
					Name:  "controller",
					Type:  "uint32",
					Value: 405419896,
				},
			},
			Expected: []byte{
				0x17, 0xc8, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x55, 0xaa, 0xaa, 0x55, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			},
		},
	},
}
View Source
var SetAntiPassbackRequest = Request{
	Message: Message{
		Name:    "set antipassback request",
		MsgType: 0x84,
		Fields: []Field{
			{
				Name:        "controller",
				Type:        "uint32",
				Offset:      4,
				Description: "controller serial number",
			},
			{
				Name:   "antipassback",
				Type:   "anti-passback",
				Offset: 8,
			},
		},
	},

	Tests: []RequestTest{
		{
			Name: "set-antipassack",
			Args: []Arg{
				{
					Name:  "controller",
					Type:  "uint32",
					Value: 405419896,
				},
				{
					Name:  "antipassback",
					Type:  "anti-passback",
					Value: 2,
				},
			},
			Expected: []byte{
				0x17, 0x84, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			},
		},
	},
}
View Source
var SetDoorPasscodesRequest = Request{
	Message: Message{
		Name:    "set door passcodes request",
		MsgType: 0x8c,
		Fields: []Field{
			{
				Name:        "controller",
				Type:        "uint32",
				Offset:      4,
				Description: "controller serial number",
			},
			{
				Name:   "door",
				Type:   "uint8",
				Offset: 8,
			},
			{
				Name:   "passcode 1",
				Type:   "pin",
				Offset: 12,
			},
			{
				Name:   "passcode 2",
				Type:   "pin",
				Offset: 16,
			},
			{
				Name:   "passcode 3",
				Type:   "pin",
				Offset: 20,
			},
			{
				Name:   "passcode 4",
				Type:   "pin",
				Offset: 24,
			},
		},
	},

	Tests: []RequestTest{
		{
			Name: "set-door-passcodes",
			Args: []Arg{
				{
					Name:  "controller",
					Type:  "uint32",
					Value: 405419896,
				},
				{
					Name:  "door",
					Type:  "uint8",
					Value: 3,
				},
				{
					Name:  "passcode 1",
					Type:  "uint32",
					Value: 123456,
				},
				{
					Name:  "passcode 2",
					Type:  "uint32",
					Value: 234567,
				},
				{
					Name:  "passcode 3",
					Type:  "uint32",
					Value: 345678,
				},
				{
					Name:  "passcode 4",
					Type:  "uint32",
					Value: 456789,
				},
			},
			Expected: []byte{
				0x17, 0x8c, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x03, 0x00, 0x00, 0x00, 0x40, 0xe2, 0x01, 0x00,
				0x47, 0x94, 0x03, 0x00, 0x4e, 0x46, 0x05, 0x00, 0x55, 0xf8, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			},
		},
		{
			Name: "set-door-passcodes-with-invalid-passcode",
			Args: []Arg{
				{
					Name:  "controller",
					Type:  "uint32",
					Value: 405419896,
				},
				{
					Name:  "door",
					Type:  "uint8",
					Value: 3,
				},
				{
					Name:  "passcode 1",
					Type:  "uint32",
					Value: 123456,
				},
				{
					Name:  "passcode 2",
					Type:  "uint32",
					Value: 1234567,
				},
				{
					Name:  "passcode 3",
					Type:  "uint32",
					Value: 345678,
				},
				{
					Name:  "passcode 4",
					Type:  "uint32",
					Value: 456789,
				},
			},
			Expected: []byte{
				0x17, 0x8c, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x03, 0x00, 0x00, 0x00, 0x40, 0xe2, 0x01, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x4e, 0x46, 0x05, 0x00, 0x55, 0xf8, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			},
		},
	},
}
View Source
var SetDoorRequest = Request{
	Message: Message{
		Name:    "set door request",
		MsgType: 0x80,
		Fields: []Field{
			{
				Name:        "controller",
				Type:        "uint32",
				Offset:      4,
				Description: "controller serial number",
			},
			{
				Name:   "door",
				Type:   "uint8",
				Offset: 8,
			},
			{
				Name:   "mode",
				Type:   "mode",
				Offset: 9,
			},
			{
				Name:   "delay",
				Type:   "uint8",
				Offset: 10,
			},
		},
	},

	Tests: []RequestTest{
		{
			Name: "set-door",
			Args: []Arg{
				{
					Name:  "controller",
					Type:  "uint32",
					Value: 405419896,
				},
				{
					Name:  "door",
					Type:  "uint8",
					Value: 3,
				},
				{
					Name:  "mode",
					Type:  "mode",
					Value: 2,
				},
				{
					Name:  "delay",
					Type:  "uint8",
					Value: 17,
				},
			},
			Expected: []byte{
				0x17, 0x80, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x03, 0x02, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			},
		},
	},
}
View Source
var SetEventIndexRequest = Request{
	Message: Message{
		Name:    "set event index request",
		MsgType: 0xb2,
		Fields: []Field{
			{
				Name:        "controller",
				Type:        "uint32",
				Offset:      4,
				Description: "controller serial number",
			},
			{
				Name:   "event index",
				Type:   "uint32",
				Offset: 8,
			},
			{
				Name:   "",
				Type:   "magic",
				Offset: 12,
			},
		},
	},

	Tests: []RequestTest{
		{
			Name: "set-event-index-request",
			Args: []Arg{
				{
					Name:  "controller",
					Type:  "uint32",
					Value: 405419896,
				},
				{
					Name:  "index",
					Type:  "uint32",
					Value: 13579,
				},
			},
			Expected: []byte{
				0x17, 0xb2, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x0b, 0x35, 0x00, 0x00, 0x55, 0xaa, 0xaa, 0x55,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			},
		},
	},
}
View Source
var SetIPv4Request = Request{
	Message: Message{
		Name:    "set IPv4 request",
		MsgType: 0x96,
		Fields: []Field{
			{
				Name:        "controller",
				Type:        "uint32",
				Offset:      4,
				Description: "controller serial number",
			},
			{
				Name:        "address",
				Type:        "IPv4",
				Offset:      8,
				Description: "controller IPv4 address",
			},
			{
				Name:        "netmask",
				Type:        "IPv4",
				Offset:      12,
				Description: "controller IPv4 subnet mask",
			},
			{
				Name:        "gateway",
				Type:        "IPv4",
				Offset:      16,
				Description: "controller IPv4 gateway address",
			},
			{
				Name:        "",
				Type:        "magic",
				Offset:      20,
				Description: "'magic' word",
			},
		},
	},
	Tests: []RequestTest{
		{
			Name: "set-IPv4",
			Args: []Arg{
				{
					Name:  "controller",
					Type:  "uint32",
					Value: 405419896,
				},
				{
					Name:  "address",
					Type:  "IPv4",
					Value: netip.MustParseAddr("192.168.1.125"),
				},
				{
					Name:  "netmask",
					Type:  "IPv4",
					Value: netip.MustParseAddr("255.255.255.0"),
				},
				{
					Name:  "gateway",
					Type:  "IPv4",
					Value: netip.MustParseAddr("192.168.1.1"),
				},
			},
			Expected: []byte{
				0x17, 0x96, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0xc0, 0xa8, 0x01, 0x7d, 0xff, 0xff, 0xff, 0x00,
				0xc0, 0xa8, 0x01, 0x01, 0x55, 0xaa, 0xaa, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			},
		},
	},
}
View Source
var SetInterlockRequest = Request{
	Message: Message{
		Name:    "set interlock request",
		MsgType: 0xa2,
		Fields: []Field{
			{
				Name:        "controller",
				Type:        "uint32",
				Offset:      4,
				Description: "controller serial number",
			},
			{
				Name:   "interlock",
				Type:   "interlock",
				Offset: 8,
			},
		},
	},

	Tests: []RequestTest{
		{
			Name: "set-interlock-request",
			Args: []Arg{
				{
					Name:  "controller",
					Type:  "uint32",
					Value: 405419896,
				},
				{
					Name:  "interlock",
					Type:  "interlock",
					Value: 8,
				},
			},
			Expected: []byte{
				0x17, 0xa2, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			},
		},
	},
}
View Source
var SetListenerAddrPortRequest = Request{
	Message: Message{
		Name:    "set listener addr:port request",
		MsgType: 0x90,
		Fields: []Field{
			{
				Name:        "controller",
				Type:        "uint32",
				Offset:      4,
				Description: "controller serial number",
			},
			{
				Name:        "listener",
				Type:        "address:port",
				Offset:      8,
				Description: "event listener IPv4 address:port",
			},
			{
				Name:        "interval",
				Type:        "uint8",
				Offset:      14,
				Description: "status auto-send interval (seconds)",
			},
		},
	},
	Tests: []RequestTest{
		{
			Name: "set-listener-addrport",
			Args: []Arg{
				{
					Name:  "controller",
					Type:  "uint32",
					Value: 405419896,
				},
				{
					Name:  "listener",
					Type:  "address:port",
					Value: netip.MustParseAddrPort("192.168.1.100:60001"),
				},
				{
					Name:  "interval",
					Type:  "uint8",
					Value: 17,
				},
			},
			Expected: []byte{
				0x17, 0x90, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0xc0, 0xa8, 0x01, 0x64, 0x61, 0xea, 0x11, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			},
		},
	},
}
View Source
var SetListenerRequest = Request{
	Message: Message{
		Name:    "set listener request",
		MsgType: 0x90,
		Fields: []Field{
			{
				Name:        "controller",
				Type:        "uint32",
				Offset:      4,
				Description: "controller serial number",
			},
			{
				Name:        "address",
				Type:        "IPv4",
				Offset:      8,
				Description: "event listener IPv4 address",
			},
			{
				Name:        "port",
				Type:        "uint16",
				Offset:      12,
				Description: "event listener IPv4 port",
			},
			{
				Name:        "interval",
				Type:        "uint8",
				Offset:      14,
				Description: "status auto-send interval (seconds)",
			},
		},
	},
	Tests: []RequestTest{
		{
			Name: "set-listener",
			Args: []Arg{
				{
					Name:  "controller",
					Type:  "uint32",
					Value: 405419896,
				},
				{
					Name:  "address",
					Type:  "IPv4",
					Value: netip.MustParseAddr("192.168.1.100"),
				},
				{
					Name:  "port",
					Type:  "uint16",
					Value: 60001,
				},
				{
					Name:  "interval",
					Type:  "uint8",
					Value: 17,
				},
			},
			Expected: []byte{
				0x17, 0x90, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0xc0, 0xa8, 0x01, 0x64, 0x61, 0xea, 0x11, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			},
		},
	},
}
View Source
var SetPCControlRequest = Request{
	Message: Message{
		Name:    "set PC control request",
		MsgType: 0xa0,
		Fields: []Field{
			{
				Name:        "controller",
				Type:        "uint32",
				Offset:      4,
				Description: "controller serial number",
			},
			{
				Name:   "",
				Type:   "magic",
				Offset: 8,
			},
			{
				Name:   "enabled",
				Type:   "bool",
				Offset: 12,
			},
		},
	},

	Tests: []RequestTest{
		{
			Name: "set-pc-control-request",
			Args: []Arg{
				{
					Name:  "controller",
					Type:  "uint32",
					Value: 405419896,
				},
				{
					Name:  "enabled",
					Type:  "bool",
					Value: true,
				},
			},
			Expected: []byte{
				0x17, 0xa0, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x55, 0xaa, 0xaa, 0x55, 0x01, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			},
		},
	},
}
View Source
var SetTimeProfileRequest = Request{
	Message: Message{
		Name:    "set time profile request",
		MsgType: 0x88,
		Fields: []Field{
			{
				Name:        "controller",
				Type:        "uint32",
				Offset:      4,
				Description: "controller serial number",
			},
			{
				Name:   "profile",
				Type:   "uint8",
				Offset: 8,
			},
			{
				Name:   "start date",
				Type:   "date",
				Offset: 9,
			},
			{
				Name:   "end date",
				Type:   "date",
				Offset: 13,
			},
			{
				Name:   "monday",
				Type:   "bool",
				Offset: 17,
			},
			{
				Name:   "tuesday",
				Type:   "bool",
				Offset: 18,
			},
			{
				Name:   "wednesday",
				Type:   "bool",
				Offset: 19,
			},
			{
				Name:   "thursday",
				Type:   "bool",
				Offset: 20,
			},
			{
				Name:   "friday",
				Type:   "bool",
				Offset: 21,
			},
			{
				Name:   "saturday",
				Type:   "bool",
				Offset: 22,
			},
			{
				Name:   "sunday",
				Type:   "bool",
				Offset: 23,
			},
			{
				Name:   "segment 1 start",
				Type:   "HHmm",
				Offset: 24,
			},
			{
				Name:   "segment 1 end",
				Type:   "HHmm",
				Offset: 26,
			},
			{
				Name:   "segment 2 start",
				Type:   "HHmm",
				Offset: 28,
			},
			{
				Name:   "segment 2 end",
				Type:   "HHmm",
				Offset: 30,
			},
			{
				Name:   "segment 3 start",
				Type:   "HHmm",
				Offset: 32,
			},
			{
				Name:   "segment 3 end",
				Type:   "HHmm",
				Offset: 34,
			},
			{
				Name:   "linked profile id",
				Type:   "uint8",
				Offset: 36,
			},
		},
	},

	Tests: []RequestTest{
		{
			Name: "set-time-profile",
			Args: []Arg{
				{
					Name:  "controller",
					Type:  "uint32",
					Value: 405419896,
				},
				{
					Name:  "profile",
					Type:  "uint8",
					Value: 37,
				},
				{
					Name:  "start date",
					Type:  "date",
					Value: "2025-11-26",
				},
				{
					Name:  "end date",
					Type:  "date",
					Value: "2025-12-29",
				},
				{
					Name:  "monday",
					Type:  "bool",
					Value: true,
				},
				{
					Name:  "tuesday",
					Type:  "bool",
					Value: true,
				},
				{
					Name:  "wednesday",
					Type:  "bool",
					Value: false,
				},
				{
					Name:  "thursday",
					Type:  "bool",
					Value: true,
				},
				{
					Name:  "friday",
					Type:  "bool",
					Value: false,
				},
				{
					Name:  "saturday",
					Type:  "bool",
					Value: true,
				},
				{
					Name:  "sunday",
					Type:  "bool",
					Value: true,
				},
				{
					Name:  "segment 1 start",
					Type:  "HHmm",
					Value: "8:30",
				},
				{
					Name:  "segment 1 end",
					Type:  "HHmm",
					Value: "9:45",
				},
				{
					Name:  "segment 2 start",
					Type:  "HHmm",
					Value: "11:35",
				},
				{
					Name:  "segment 2 end",
					Type:  "HHmm",
					Value: "13:15",
				},
				{
					Name:  "segment 3 start",
					Type:  "HHmm",
					Value: "14:01",
				},
				{
					Name:  "segment 3 end",
					Type:  "HHmm",
					Value: "17:59",
				},
				{
					Name:  "linked profile id",
					Type:  "uint8",
					Value: 19,
				},
			},
			Expected: []byte{
				0x17, 0x88, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x25, 0x20, 0x25, 0x11, 0x26, 0x20, 0x25, 0x12,
				0x29, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x08, 0x30, 0x09, 0x45, 0x11, 0x35, 0x13, 0x15,
				0x14, 0x01, 0x17, 0x59, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			},
		},
	},
}
View Source
var SetTimeRequest = Request{
	Message: Message{
		Name:    "set time request",
		MsgType: 0x30,
		Fields: []Field{
			{
				Name:        "controller",
				Type:        "uint32",
				Offset:      4,
				Description: "controller serial number",
			},
			{
				Name:        "datetime",
				Type:        "datetime",
				Offset:      8,
				Description: "date/time",
			},
		},
	},
	Tests: []RequestTest{
		{
			Name: "set-time",
			Args: []Arg{
				{
					Name:  "controller",
					Type:  "uint32",
					Value: 405419896,
				},
				{
					Name:  "datetime",
					Type:  "datetime",
					Value: "2025-11-04 12:34:56",
				},
			},
			Expected: []byte{
				0x17, 0x30, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x20, 0x25, 0x11, 0x04, 0x12, 0x34, 0x56, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			},
		},
	},
}

Functions

This section is empty.

Types

type Arg

type Arg = types.Arg

type Field

type Field = types.Field

type Message

type Message = types.Message

type Request

type Request = types.Request

type RequestTest

type RequestTest = types.RequestTest

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL