model

package
v0.8.7 Latest Latest
Warning

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

Go to latest
Published: Dec 1, 2023 License: MIT Imports: 1 Imported by: 0

Documentation

Index

Constants

View Source
const CARD = "8165538"
View Source
const CARD_INDEX = "3"
View Source
const CONTROLLER = "405419896"
View Source
const DOOR = "3"
View Source
const EVENT_INDEX = "37"
View Source
const TIME_PROFILE_ID = "29"

Variables

View Source
var ActivateKeypads = Function{
	Name: "activate keypads",
	Args: []Arg{
		Arg{
			Name: "device id",
			Type: "uint32",
		},
		Arg{
			Name: "reader 1",
			Type: "bool",
		},
		Arg{
			Name: "reader 2",
			Type: "bool",
		},
		Arg{
			Name: "reader 3",
			Type: "bool",
		},
		Arg{
			Name: "reader 4",
			Type: "bool",
		},
	},
	Request:  &ActivateKeypadsRequest,
	Response: &ActivateKeypadsResponse,
}
View Source
var ActivateKeypadsRequest = Message{
	Name:    "activate keypads request",
	MsgType: 0xa4,
	Fields: []Field{
		Field{
			Name:   "device id",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "reader 1",
			Type:   "bool",
			Offset: 8,
		},
		Field{
			Name:   "reader 2",
			Type:   "bool",
			Offset: 9,
		},
		Field{
			Name:   "reader 3",
			Type:   "bool",
			Offset: 10,
		},
		Field{
			Name:   "reader 4",
			Type:   "bool",
			Offset: 11,
		},
	},
}
View Source
var ActivateKeypadsResponse = Message{
	Name:    "activate keypads response",
	MsgType: 0xa4,
	Fields: []Field{
		Field{
			Name:   "controller",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "ok",
			Type:   "bool",
			Offset: 8,
		},
	},
}
View Source
var ActivateKeypadsTest = Test{
	Name: "activate keypads",
	Request: &Request{
		Name: ActivateKeypadsRequest.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "reader 1",
				Type:  "bool",
				Value: "true",
			},
			Value{
				Name:  "reader 2",
				Type:  "bool",
				Value: "true",
			},
			Value{
				Name:  "reader 3",
				Type:  "bool",
				Value: "false",
			},
			Value{
				Name:  "reader 4",
				Type:  "bool",
				Value: "true",
			},
		},
		Message: []uint8{
			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,
		},
	},
	Response: &Response{
		Name: ActivateKeypadsResponse.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "ok",
				Type:  "bool",
				Value: true,
			},
		},
		Message: []uint8{
			0x17, 0xa4, 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 AddTask = Function{
	Name: "add task",
	Args: []Arg{
		Arg{
			Name: "device id",
			Type: "uint32",
		},
		Arg{
			Name: "start date",
			Type: "date",
		},
		Arg{
			Name: "end date",
			Type: "date",
		},
		Arg{
			Name: "monday",
			Type: "bool",
		},
		Arg{
			Name: "tuesday",
			Type: "bool",
		},
		Arg{
			Name: "wednesday",
			Type: "bool",
		},
		Arg{
			Name: "thursday",
			Type: "bool",
		},
		Arg{
			Name: "friday",
			Type: "bool",
		},
		Arg{
			Name: "saturday",
			Type: "bool",
		},
		Arg{
			Name: "sunday",
			Type: "bool",
		},
		Arg{
			Name: "start time",
			Type: "HHmm",
		},
		Arg{
			Name: "door",
			Type: "uint8",
		},
		Arg{
			Name: "task type",
			Type: "uint8",
		},
		Arg{
			Name: "more cards",
			Type: "uint8",
		},
	},
	Request:  &AddTaskRequest,
	Response: &AddTaskResponse,
}
View Source
var AddTaskRequest = Message{
	Name:    "add task request",
	MsgType: 0xa8,
	Fields: []Field{
		Field{
			Name:   "device id",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "start date",
			Type:   "date",
			Offset: 8,
		},
		Field{
			Name:   "end date",
			Type:   "date",
			Offset: 12,
		},
		Field{
			Name:   "monday",
			Type:   "bool",
			Offset: 16,
		},
		Field{
			Name:   "tuesday",
			Type:   "bool",
			Offset: 17,
		},
		Field{
			Name:   "wednesday",
			Type:   "bool",
			Offset: 18,
		},
		Field{
			Name:   "thursday",
			Type:   "bool",
			Offset: 19,
		},
		Field{
			Name:   "friday",
			Type:   "bool",
			Offset: 20,
		},
		Field{
			Name:   "saturday",
			Type:   "bool",
			Offset: 21,
		},
		Field{
			Name:   "sunday",
			Type:   "bool",
			Offset: 22,
		},
		Field{
			Name:   "start time",
			Type:   "HHmm",
			Offset: 23,
		},
		Field{
			Name:   "door",
			Type:   "uint8",
			Offset: 25,
		},
		Field{
			Name:   "task type",
			Type:   "uint8",
			Offset: 26,
		},
		Field{
			Name:   "more cards",
			Type:   "uint8",
			Offset: 27,
		},
	},
}
View Source
var AddTaskResponse = Message{
	Name:    "add task response",
	MsgType: 0xa8,
	Fields: []Field{
		Field{
			Name:   "controller",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "added",
			Type:   "bool",
			Offset: 8,
		},
	},
}
View Source
var AddTaskTest = Test{
	Name: "add task",
	Request: &Request{
		Name: AddTaskRequest.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "start date",
				Type:  "date",
				Value: "2022-01-01",
			},
			Value{
				Name:  "end date",
				Type:  "date",
				Value: "2022-12-31",
			},
			Value{
				Name:  "monday",
				Type:  "bool",
				Value: "true",
			},
			Value{
				Name:  "tuesday",
				Type:  "bool",
				Value: "false",
			},
			Value{
				Name:  "wednesday",
				Type:  "bool",
				Value: "true",
			},
			Value{
				Name:  "thursday",
				Type:  "bool",
				Value: "true",
			},
			Value{
				Name:  "friday",
				Type:  "bool",
				Value: "false",
			},
			Value{
				Name:  "saturday",
				Type:  "bool",
				Value: "false",
			},
			Value{
				Name:  "sunday",
				Type:  "bool",
				Value: "true",
			},
			Value{
				Name:  "start time",
				Type:  "HHmm",
				Value: "08:30",
			},
			Value{
				Name:  "door",
				Type:  "uint8",
				Value: "3",
			},
			Value{
				Name:  "task type",
				Type:  "uint8",
				Value: "2",
			},
			Value{
				Name:  "more cards",
				Type:  "uint8",
				Value: "17",
			},
		},
		Message: []uint8{
			0x17, 0xa8, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x20, 0x22, 0x01, 0x01, 0x20, 0x22, 0x12, 0x31,
			0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x30, 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,
		},
	},
	Response: &Response{
		Name: AddTaskResponse.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "added",
				Type:  "bool",
				Value: true,
			},
		},
		Message: []uint8{
			0x17, 0xa8, 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 ClearTaskList = Function{
	Name: "clear tasklist",
	Args: []Arg{
		Arg{
			Name: "device id",
			Type: "uint32",
		},
	},
	Request:  &ClearTaskListRequest,
	Response: &ClearTaskListResponse,
}
View Source
var ClearTaskListRequest = Message{
	Name:    "clear tasklist request",
	MsgType: 0xa6,
	Fields: []Field{
		Field{
			Name:   "device id",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "",
			Type:   "magic",
			Offset: 8,
		},
	},
}
View Source
var ClearTaskListResponse = Message{
	Name:    "clear tasklist response",
	MsgType: 0xa6,
	Fields: []Field{
		Field{
			Name:   "controller",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "cleared",
			Type:   "bool",
			Offset: 8,
		},
	},
}
View Source
var ClearTaskListTest = Test{
	Name: "clear tasklist",
	Request: &Request{
		Name: ClearTaskListRequest.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
		},
		Message: []uint8{
			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,
		},
	},
	Response: &Response{
		Name: ClearTaskListResponse.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "cleared",
				Type:  "bool",
				Value: true,
			},
		},
		Message: []uint8{
			0x17, 0xa6, 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 DeleteAllCards = Function{
	Name: "delete all cards",
	Args: []Arg{
		Arg{
			Name: "device id",
			Type: "uint32",
		},
	},
	Request:  &DeleteAllCardsRequest,
	Response: &DeleteAllCardsResponse,
}
View Source
var DeleteAllCardsRequest = Message{
	Name:    "delete cards request",
	MsgType: 0x54,
	Fields: []Field{
		Field{
			Name:   "device id",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "",
			Type:   "magic",
			Offset: 8,
		},
	},
}
View Source
var DeleteAllCardsResponse = Message{
	Name:    "delete all cards response",
	MsgType: 0x54,
	Fields: []Field{
		Field{
			Name:   "controller",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "deleted",
			Type:   "bool",
			Offset: 8,
		},
	},
}
View Source
var DeleteAllCardsTest = Test{
	Name: "delete cards",
	Request: &Request{
		Name: DeleteAllCardsRequest.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
		},
		Message: []uint8{
			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,
		},
	},
	Response: &Response{
		Name: DeleteAllCardsResponse.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "deleted",
				Type:  "bool",
				Value: true,
			},
		},
		Message: []uint8{
			0x17, 0x54, 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 DeleteAllTimeProfiles = Function{
	Name: "delete all time profiles",
	Args: []Arg{
		Arg{
			Name: "device id",
			Type: "uint32",
		},
	},
	Request:  &DeleteAllTimeProfilesRequest,
	Response: &DeleteAllTimeProfilesResponse,
}
View Source
var DeleteAllTimeProfilesRequest = Message{
	Name:    "delete all time profiles request",
	MsgType: 0x8a,
	Fields: []Field{
		Field{
			Name:   "device id",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "",
			Type:   "magic",
			Offset: 8,
		},
	},
}
View Source
var DeleteAllTimeProfilesResponse = Message{
	Name:    "delete all time profiles response",
	MsgType: 0x8a,
	Fields: []Field{
		Field{
			Name:   "controller",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "deleted",
			Type:   "bool",
			Offset: 8,
		},
	},
}
View Source
var DeleteAllTimeProfilesTest = Test{
	Name: "delete all time profiles",
	Request: &Request{
		Name: DeleteAllTimeProfilesRequest.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
		},
		Message: []uint8{
			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,
		},
	},
	Response: &Response{
		Name: DeleteAllTimeProfilesResponse.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "deleted",
				Type:  "bool",
				Value: true,
			},
		},
		Message: []uint8{
			0x17, 0x8a, 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 DeleteCard = Function{
	Name: "delete card",
	Args: []Arg{
		Arg{
			Name: "device id",
			Type: "uint32",
		},
		Arg{
			Name: "card number",
			Type: "uint32",
		},
	},
	Request:  &DeleteCardRequest,
	Response: &DeleteCardResponse,
}
View Source
var DeleteCardRequest = Message{
	Name:    "delete card request",
	MsgType: 0x52,
	Fields: []Field{
		Field{
			Name:   "device id",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "card number",
			Type:   "uint32",
			Offset: 8,
		},
	},
}
View Source
var DeleteCardResponse = Message{
	Name:    "delete card response",
	MsgType: 0x52,
	Fields: []Field{
		Field{
			Name:   "controller",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "deleted",
			Type:   "bool",
			Offset: 8,
		},
	},
}
View Source
var DeleteCardTest = Test{
	Name: "delete card",
	Request: &Request{
		Name: DeleteCardRequest.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "card",
				Type:  "uint32",
				Value: CARD,
			},
		},
		Message: []uint8{
			0x17, 0x52, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0xa2, 0x98, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
		},
	},
	Response: &Response{
		Name: DeleteCardResponse.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "deleted",
				Type:  "bool",
				Value: true,
			},
		},
		Message: []uint8{
			0x17, 0x52, 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 Event = Message{
	Name:    "event",
	MsgType: 0x20,
	Fields: []Field{
		Field{
			Name:   "device id",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "event index",
			Type:   "uint32",
			Offset: 8,
		},
		Field{
			Name:   "event type",
			Type:   "uint8",
			Offset: 12,
		},
		Field{
			Name:   "event access granted",
			Type:   "bool",
			Offset: 13,
		},
		Field{
			Name:   "event door",
			Type:   "uint8",
			Offset: 14,
		},
		Field{
			Name:   "event direction",
			Type:   "uint8",
			Offset: 15,
		},
		Field{
			Name:   "event card",
			Type:   "uint32",
			Offset: 16,
		},
		Field{
			Name:   "event timestamp",
			Type:   "datetime",
			Offset: 20,
		},
		Field{
			Name:   "event reason",
			Type:   "uint8",
			Offset: 27,
		},
		Field{
			Name:   "system date",
			Type:   "shortdate",
			Offset: 51,
		},
		Field{
			Name:   "system time",
			Type:   "time",
			Offset: 37,
		},
		Field{
			Name:   "system error",
			Type:   "uint8",
			Offset: 36,
		},
		Field{
			Name:   "door 1 open",
			Type:   "bool",
			Offset: 28,
		},
		Field{
			Name:   "door 2 open",
			Type:   "bool",
			Offset: 29,
		},
		Field{
			Name:   "door 3 open",
			Type:   "bool",
			Offset: 30,
		},
		Field{
			Name:   "door 4 open",
			Type:   "bool",
			Offset: 31,
		},
		Field{
			Name:   "door 1 button",
			Type:   "bool",
			Offset: 32,
		},
		Field{
			Name:   "door 2 button",
			Type:   "bool",
			Offset: 33,
		},
		Field{
			Name:   "door 3 button",
			Type:   "bool",
			Offset: 34,
		},
		Field{
			Name:   "door 4 button",
			Type:   "bool",
			Offset: 35,
		},
		Field{
			Name:   "relays",
			Type:   "uint8",
			Offset: 49,
		},
		Field{
			Name:   "inputs",
			Type:   "uint8",
			Offset: 50,
		},
		Field{
			Name:   "special info",
			Type:   "uint8",
			Offset: 48,
		},
		Field{
			Name:   "sequence no",
			Type:   "uint32",
			Offset: 40,
		},
	},
}
View Source
var GetCard = Function{
	Name: "get card",
	Args: []Arg{
		Arg{
			Name: "device id",
			Type: "uint32",
		},
		Arg{
			Name: "card number",
			Type: "uint32",
		},
	},
	Request:  &GetCardRequest,
	Response: &GetCardResponse,
}
View Source
var GetCardByIndex = Function{
	Name: "get card by index",
	Args: []Arg{
		Arg{
			Name: "device id",
			Type: "uint32",
		},
		Arg{
			Name: "card index",
			Type: "uint32",
		},
	},
	Request:  &GetCardByIndexRequest,
	Response: &GetCardByIndexResponse,
}
View Source
var GetCardByIndexRequest = Message{
	Name:    "get card by index request",
	MsgType: 0x5c,
	Fields: []Field{
		Field{
			Name:   "device id",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "card index",
			Type:   "uint32",
			Offset: 8,
		},
	},
}
View Source
var GetCardByIndexResponse = Message{
	Name:    "get card by index response",
	MsgType: 0x5c,
	Fields: []Field{
		Field{
			Name:   "controller",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "card number",
			Type:   "uint32",
			Offset: 8,
		},
		Field{
			Name:   "start date",
			Type:   "optional date",
			Offset: 12,
		},
		Field{
			Name:   "end date",
			Type:   "optional date",
			Offset: 16,
		},
		Field{
			Name:   "door 1",
			Type:   "uint8",
			Offset: 20,
		},
		Field{
			Name:   "door 2",
			Type:   "uint8",
			Offset: 21,
		},
		Field{
			Name:   "door 3",
			Type:   "uint8",
			Offset: 22,
		},
		Field{
			Name:   "door 4",
			Type:   "uint8",
			Offset: 23,
		},
		Field{
			Name:   "PIN",
			Type:   "pin",
			Offset: 24,
		},
	},
}
View Source
var GetCardByIndexTest = Test{
	Name: "get card by index",
	Request: &Request{
		Name: GetCardByIndexRequest.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "index",
				Type:  "uint32",
				Value: CARD_INDEX,
			},
		},
		Message: []uint8{
			0x17, 0x5c, 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,
		},
	},
	Response: &Response{
		Name: GetCardByIndexResponse.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "card number",
				Type:  "uint32",
				Value: CARD,
			},
			Value{
				Name:  "start date",
				Type:  "optional date",
				Value: "2022-01-01",
			},
			Value{
				Name:  "end date",
				Type:  "optional date",
				Value: "2022-12-31",
			},
			Value{
				Name:  "door 1",
				Type:  "uint8",
				Value: 0,
			},
			Value{
				Name:  "door 2",
				Type:  "uint8",
				Value: 1,
			},
			Value{
				Name:  "door 3",
				Type:  "uint8",
				Value: 29,
			},
			Value{
				Name:  "door 4",
				Type:  "uint8",
				Value: 0,
			},
			Value{
				Name:  "PIN",
				Type:  "pin",
				Value: 7531,
			},
		},
		Message: []uint8{
			0x17, 0x5c, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0xa2, 0x98, 0x7c, 0x00, 0x20, 0x22, 0x01, 0x01,
			0x20, 0x22, 0x12, 0x31, 0x00, 0x01, 0x1d, 0x00, 0x6b, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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 = Message{
	Name:    "get card request",
	MsgType: 0x5a,
	Fields: []Field{
		Field{
			Name:   "device id",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "card number",
			Type:   "uint32",
			Offset: 8,
		},
	},
}
View Source
var GetCardResponse = Message{
	Name:    "get card response",
	MsgType: 0x5a,
	Fields: []Field{
		Field{
			Name:   "controller",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "card number",
			Type:   "uint32",
			Offset: 8,
		},
		Field{
			Name:   "start date",
			Type:   "optional date",
			Offset: 12,
		},
		Field{
			Name:   "end date",
			Type:   "optional date",
			Offset: 16,
		},
		Field{
			Name:   "door 1",
			Type:   "uint8",
			Offset: 20,
		},
		Field{
			Name:   "door 2",
			Type:   "uint8",
			Offset: 21,
		},
		Field{
			Name:   "door 3",
			Type:   "uint8",
			Offset: 22,
		},
		Field{
			Name:   "door 4",
			Type:   "uint8",
			Offset: 23,
		},
		Field{
			Name:   "PIN",
			Type:   "pin",
			Offset: 24,
		},
	},
}
View Source
var GetCardTest = Test{
	Name: "get card",
	Request: &Request{
		Name: GetCardRequest.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "card",
				Type:  "uint32",
				Value: CARD,
			},
		},
		Message: []uint8{
			0x17, 0x5a, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0xa2, 0x98, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
		},
	},
	Response: &Response{
		Name: GetCardResponse.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "card number",
				Type:  "uint32",
				Value: CARD,
			},
			Value{
				Name:  "start date",
				Type:  "optional date",
				Value: "2022-01-01",
			},
			Value{
				Name:  "end date",
				Type:  "optional date",
				Value: "2022-12-31",
			},
			Value{
				Name:  "door 1",
				Type:  "uint8",
				Value: 0,
			},
			Value{
				Name:  "door 2",
				Type:  "uint8",
				Value: 1,
			},
			Value{
				Name:  "door 3",
				Type:  "uint8",
				Value: 29,
			},
			Value{
				Name:  "door 4",
				Type:  "uint8",
				Value: 0,
			},
			Value{
				Name:  "PIN",
				Type:  "pin",
				Value: 7531,
			},
		},
		Message: []uint8{
			0x17, 0x5a, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0xa2, 0x98, 0x7c, 0x00, 0x20, 0x22, 0x01, 0x01,
			0x20, 0x22, 0x12, 0x31, 0x00, 0x01, 0x1d, 0x00, 0x6b, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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 GetCards = Function{
	Name: "get cards",
	Args: []Arg{
		Arg{
			Name: "device id",
			Type: "uint32",
		},
	},
	Request:  &GetCardsRequest,
	Response: &GetCardsResponse,
}
View Source
var GetCardsRequest = Message{
	Name:    "get cards request",
	MsgType: 0x58,
	Fields: []Field{
		Field{
			Name:   "device id",
			Type:   "uint32",
			Offset: 4,
		},
	},
}
View Source
var GetCardsResponse = Message{
	Name:    "get cards response",
	MsgType: 0x58,
	Fields: []Field{
		Field{
			Name:   "controller",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "cards",
			Type:   "uint32",
			Offset: 8,
		},
	},
}
View Source
var GetCardsTest = Test{
	Name: "get cards",
	Request: &Request{
		Name: GetCardsRequest.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
		},
		Message: []uint8{
			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,
		},
	},
	Response: &Response{
		Name: GetCardsResponse.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "cards",
				Type:  "uint32",
				Value: 11,
			},
		},
		Message: []uint8{
			0x17, 0x58, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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 GetController = Function{
	Name: "get controller",
	Args: []Arg{
		Arg{
			Name: "device id",
			Type: "uint32",
		},
	},
	Request:  &GetControllerRequest,
	Response: &GetControllerResponse,
}
View Source
var GetControllerRequest = Message{
	Name:    "get controller request",
	MsgType: 0x94,
	Fields: []Field{
		Field{
			Name:   "device id",
			Type:   "uint32",
			Offset: 4,
		},
	},
}
View Source
var GetControllerResponse = Message{
	Name:    "get controller response",
	MsgType: 0x94,
	Fields: []Field{
		Field{
			Name:   "controller",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "ip address",
			Type:   "IPv4",
			Offset: 8,
		},
		Field{
			Name:   "subnet mask",
			Type:   "IPv4",
			Offset: 12,
		},
		Field{
			Name:   "gateway",
			Type:   "IPv4",
			Offset: 16,
		},
		Field{
			Name:   "MAC address",
			Type:   "MAC",
			Offset: 20,
		},
		Field{
			Name:   "version",
			Type:   "version",
			Offset: 26,
		},
		Field{
			Name:   "date",
			Type:   "date",
			Offset: 28,
		},
	},
}
View Source
var GetControllerTest = Test{
	Name: "get controller",
	Request: &Request{
		Name: GetControllerRequest.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
		},
		Message: []uint8{
			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,
		},
	},
	Response: &Response{
		Name: GetControllerResponse.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "ip address",
				Type:  "IPv4",
				Value: "192.168.1.100",
			},
			Value{
				Name:  "subnet mask",
				Type:  "IPv4",
				Value: "255.255.255.0",
			},
			Value{
				Name:  "gateway",
				Type:  "IPv4",
				Value: "192.168.1.1",
			},
			Value{
				Name:  "MAC address",
				Type:  "string",
				Value: "00:12:23:34:45:56",
			},
			Value{
				Name:  "version",
				Type:  "string",
				Value: "v8.92",
			},
			Value{
				Name:  "date",
				Type:  "date",
				Value: "2018-11-05",
			},
		},
		Message: []uint8{
			0x17, 0x94, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0xc0, 0xa8, 0x01, 0x64, 0xff, 0xff, 0xff, 0x00,
			0xc0, 0xa8, 0x01, 0x01, 0x00, 0x12, 0x23, 0x34, 0x45, 0x56, 0x08, 0x92, 0x20, 0x18, 0x11, 0x05,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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 GetDoorControl = Function{
	Name: "get door control",
	Args: []Arg{
		Arg{
			Name: "device id",
			Type: "uint32",
		},
		Arg{
			Name: "door",
			Type: "uint8",
		},
	},
	Request:  &GetDoorControlRequest,
	Response: &GetDoorControlResponse,
}
View Source
var GetDoorControlRequest = Message{
	Name:    "get door control request",
	MsgType: 0x82,
	Fields: []Field{
		Field{
			Name:   "device id",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "door",
			Type:   "uint8",
			Offset: 8,
		},
	},
}
View Source
var GetDoorControlResponse = Message{
	Name:    "get door control response",
	MsgType: 0x82,
	Fields: []Field{
		Field{
			Name:   "controller",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "door",
			Type:   "uint8",
			Offset: 8,
		},
		Field{
			Name:   "mode",
			Type:   "uint8",
			Offset: 9,
		},
		Field{
			Name:   "delay",
			Type:   "uint8",
			Offset: 10,
		},
	},
}
View Source
var GetDoorControlTest = Test{
	Name: "get door control",
	Request: &Request{
		Name: GetDoorControlRequest.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "door",
				Type:  "uint8",
				Value: 3,
			},
		},
		Message: []uint8{
			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,
		},
	},
	Response: &Response{
		Name: GetDoorControlResponse.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "door",
				Type:  "uint8",
				Value: 3,
			},
			Value{
				Name:  "mode",
				Type:  "uint8",
				Value: 2,
			},
			Value{
				Name:  "delay",
				Type:  "uint8",
				Value: 10,
			},
		},
		Message: []uint8{
			0x17, 0x82, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x03, 0x02, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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 GetEvent = Function{
	Name: "get event",
	Args: []Arg{
		Arg{
			Name: "device id",
			Type: "uint32",
		},
		Arg{
			Name: "event index",
			Type: "uint32",
		},
	},
	Request:  &GetEventRequest,
	Response: &GetEventResponse,
}
View Source
var GetEventIndex = Function{
	Name: "get event index",
	Args: []Arg{
		Arg{
			Name: "device id",
			Type: "uint32",
		},
	},
	Request:  &GetEventIndexRequest,
	Response: &GetEventIndexResponse,
}
View Source
var GetEventIndexRequest = Message{
	Name:    "get event index request",
	MsgType: 0xb4,
	Fields: []Field{
		Field{
			Name:   "device id",
			Type:   "uint32",
			Offset: 4,
		},
	},
}
View Source
var GetEventIndexResponse = Message{
	Name:    "get event index response",
	MsgType: 0xb4,
	Fields: []Field{
		Field{
			Name:   "controller",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "event index",
			Type:   "uint32",
			Offset: 8,
		},
	},
}
View Source
var GetEventIndexTest = Test{
	Name: "get event index",
	Request: &Request{
		Name: GetEventIndexRequest.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
		},
		Message: []uint8{
			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,
		},
	},
	Response: &Response{
		Name: GetEventIndexResponse.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "event index",
				Type:  "uint32",
				Value: "37",
			},
		},
		Message: []uint8{
			0x17, 0xb4, 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 GetEventRequest = Message{
	Name:    "get event request",
	MsgType: 0xb0,
	Fields: []Field{
		Field{
			Name:   "device id",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "event index",
			Type:   "uint32",
			Offset: 8,
		},
	},
}
View Source
var GetEventResponse = Message{
	Name:    "get event response",
	MsgType: 0xb0,
	Fields: []Field{
		Field{
			Name:   "controller",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "index",
			Type:   "uint32",
			Offset: 8,
		},
		Field{
			Name:   "event type",
			Type:   "uint8",
			Offset: 12,
		},
		Field{
			Name:   "access granted",
			Type:   "bool",
			Offset: 13,
		},
		Field{
			Name:   "door",
			Type:   "uint8",
			Offset: 14,
		},
		Field{
			Name:   "direction",
			Type:   "uint8",
			Offset: 15,
		},
		Field{
			Name:   "card",
			Type:   "uint32",
			Offset: 16,
		},
		Field{
			Name:   "timestamp",
			Type:   "optional datetime",
			Offset: 20,
		},
		Field{
			Name:   "reason",
			Type:   "uint8",
			Offset: 27,
		},
	},
}
View Source
var GetEventTest = Test{
	Name: "get event",
	Request: &Request{
		Name: GetEventRequest.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "index",
				Type:  "uint32",
				Value: EVENT_INDEX,
			},
		},
		Message: []uint8{
			0x17, 0xb0, 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,
		},
	},
	Response: &Response{
		Name: GetEventResponse.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "index",
				Type:  "uint32",
				Value: EVENT_INDEX,
			},
			Value{
				Name:  "event type",
				Type:  "uint8",
				Value: 2,
			},
			Value{
				Name:  "access granted",
				Type:  "bool",
				Value: true,
			},
			Value{
				Name:  "door",
				Type:  "uint8",
				Value: 4,
			},
			Value{
				Name:  "direction",
				Type:  "uint8",
				Value: 1,
			},
			Value{
				Name:  "card",
				Type:  "uint32",
				Value: "8165536",
			},
			Value{
				Name:  "timestamp",
				Type:  "optional datetime",
				Value: "2019-08-04 20:02:07",
			},
			Value{
				Name:  "reason",
				Type:  "uint8",
				Value: 6,
			},
		},
		Message: []uint8{
			0x17, 0xb0, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x25, 0x00, 0x00, 0x00, 0x02, 0x01, 0x04, 0x01,
			0xa0, 0x98, 0x7c, 0x00, 0x20, 0x19, 0x08, 0x04, 0x20, 0x02, 0x07, 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,
		},
	},
}
View Source
var GetListener = Function{
	Name: "get listener",
	Args: []Arg{
		Arg{
			Name: "device id",
			Type: "uint32",
		},
	},
	Request:  &GetListenerRequest,
	Response: &GetListenerResponse,
}
View Source
var GetListenerRequest = Message{
	Name:    "get listener request",
	MsgType: 0x92,
	Fields: []Field{
		Field{
			Name:   "device id",
			Type:   "uint32",
			Offset: 4,
		},
	},
}
View Source
var GetListenerResponse = Message{
	Name:    "get listener response",
	MsgType: 0x92,
	Fields: []Field{
		Field{
			Name:   "controller",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "address",
			Type:   "IPv4",
			Offset: 8,
		},
		Field{
			Name:   "port",
			Type:   "uint16",
			Offset: 12,
		},
	},
}
View Source
var GetListenerTest = Test{
	Name: "get listener",
	Request: &Request{
		Name: GetListenerRequest.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
		},
		Message: []uint8{
			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,
		},
	},
	Response: &Response{
		Name: GetListenerResponse.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "address",
				Type:  "IPv4",
				Value: "192.168.1.100",
			},
			Value{
				Name:  "port",
				Type:  "uint16",
				Value: "60001",
			},
		},
		Message: []uint8{
			0x17, 0x92, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0xc0, 0xa8, 0x01, 0x64, 0x61, 0xea, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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 GetStatus = Function{
	Name: "get status",
	Args: []Arg{
		Arg{
			Name: "device id",
			Type: "uint32",
		},
	},
	Request:  &GetStatusRequest,
	Response: &GetStatusResponse,
}
View Source
var GetStatusNoEventTest = Test{
	Name: "get status no event",
	Request: &Request{
		Name: GetStatusRequest.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
		},
		Message: []uint8{
			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,
		},
	},
	Response: &Response{
		Name: GetStatusResponse.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "system date",
				Type:  "short date",
				Value: "2022-08-23",
			},
			Value{
				Name:  "system time",
				Type:  "time",
				Value: "09:49:39",
			},
			Value{
				Name:  "door 1 open",
				Type:  "bool",
				Value: false,
			},
			Value{
				Name:  "door 2 open",
				Type:  "bool",
				Value: true,
			},
			Value{
				Name:  "door 3 open",
				Type:  "bool",
				Value: false,
			},
			Value{
				Name:  "door 4 open",
				Type:  "bool",
				Value: false,
			},
			Value{
				Name:  "door 1 button",
				Type:  "bool",
				Value: false,
			},
			Value{
				Name:  "door 2 button",
				Type:  "bool",
				Value: false,
			},
			Value{
				Name:  "door 3 button",
				Type:  "bool",
				Value: false,
			},
			Value{
				Name:  "door 4 button",
				Type:  "bool",
				Value: true,
			},
			Value{
				Name:  "relays",
				Type:  "uint8",
				Value: "7",
			},
			Value{
				Name:  "inputs",
				Type:  "uint8",
				Value: "9",
			},
			Value{
				Name:  "system error",
				Type:  "uint8",
				Value: 3,
			},
			Value{
				Name:  "special info",
				Type:  "uint8",
				Value: 39,
			},
			Value{
				Name:  "event index",
				Type:  "uint32",
				Value: 0,
			},
			Value{
				Name:  "event type",
				Type:  "uint8",
				Value: 0,
			},
			Value{
				Name:  "event access granted",
				Type:  "bool",
				Value: false,
			},
			Value{
				Name:  "event door",
				Type:  "uint8",
				Value: 0,
			},
			Value{
				Name:  "event direction",
				Type:  "uint8",
				Value: 0,
			},
			Value{
				Name:  "event card",
				Type:  "uint32",
				Value: "0",
			},
			Value{
				Name:  "event timestamp",
				Type:  "optional datetime",
				Value: "",
			},
			Value{
				Name:  "event reason",
				Type:  "uint8",
				Value: 0,
			},
			Value{
				Name:  "sequence no",
				Type:  "uint32",
				Value: 0,
			},
		},
		Message: []uint8{
			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, 0x01, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x01, 0x03, 0x09, 0x49, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x27, 0x07, 0x09, 0x22, 0x08, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
		},
	},
}
View Source
var GetStatusRequest = Message{
	Name:    "get status request",
	MsgType: 0x20,
	Fields: []Field{
		Field{
			Name:   "device id",
			Type:   "uint32",
			Offset: 4,
		},
	},
}
View Source
var GetStatusResponse = Message{
	Name:    "get status response",
	MsgType: 0x20,
	Fields: []Field{
		Field{
			Name:   "controller",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "system date",
			Type:   "shortdate",
			Offset: 51,
		},
		Field{
			Name:   "system time",
			Type:   "time",
			Offset: 37,
		},
		Field{
			Name:   "door 1 open",
			Type:   "bool",
			Offset: 28,
		},
		Field{
			Name:   "door 2 open",
			Type:   "bool",
			Offset: 29,
		},
		Field{
			Name:   "door 3 open",
			Type:   "bool",
			Offset: 30,
		},
		Field{
			Name:   "door 4 open",
			Type:   "bool",
			Offset: 31,
		},
		Field{
			Name:   "door 1 button",
			Type:   "bool",
			Offset: 32,
		},
		Field{
			Name:   "door 2 button",
			Type:   "bool",
			Offset: 33,
		},
		Field{
			Name:   "door 3 button",
			Type:   "bool",
			Offset: 34,
		},
		Field{
			Name:   "door 4 button",
			Type:   "bool",
			Offset: 35,
		},
		Field{
			Name:   "relays",
			Type:   "uint8",
			Offset: 49,
		},
		Field{
			Name:   "inputs",
			Type:   "uint8",
			Offset: 50,
		},
		Field{
			Name:   "system error",
			Type:   "uint8",
			Offset: 36,
		},
		Field{
			Name:   "special info",
			Type:   "uint8",
			Offset: 48,
		},
		Field{
			Name:   "event index",
			Type:   "uint32",
			Offset: 8,
		},
		Field{
			Name:   "event type",
			Type:   "uint8",
			Offset: 12,
		},
		Field{
			Name:   "event access granted",
			Type:   "bool",
			Offset: 13,
		},
		Field{
			Name:   "event door",
			Type:   "uint8",
			Offset: 14,
		},
		Field{
			Name:   "event direction",
			Type:   "uint8",
			Offset: 15,
		},
		Field{
			Name:   "event card",
			Type:   "uint32",
			Offset: 16,
		},
		Field{
			Name:   "event timestamp",
			Type:   "optional datetime",
			Offset: 20,
		},
		Field{
			Name:   "event reason",
			Type:   "uint8",
			Offset: 27,
		},
		Field{
			Name:   "sequence no",
			Type:   "uint32",
			Offset: 40,
		},
	},
}
View Source
var GetStatusTest = Test{
	Name: "get status",
	Request: &Request{
		Name: GetStatusRequest.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
		},
		Message: []uint8{
			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,
		},
	},
	Response: &Response{
		Name: GetStatusResponse.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "system date",
				Type:  "short date",
				Value: "2022-08-23",
			},
			Value{
				Name:  "system time",
				Type:  "time",
				Value: "09:49:39",
			},
			Value{
				Name:  "door 1 open",
				Type:  "bool",
				Value: false,
			},
			Value{
				Name:  "door 2 open",
				Type:  "bool",
				Value: true,
			},
			Value{
				Name:  "door 3 open",
				Type:  "bool",
				Value: false,
			},
			Value{
				Name:  "door 4 open",
				Type:  "bool",
				Value: false,
			},
			Value{
				Name:  "door 1 button",
				Type:  "bool",
				Value: false,
			},
			Value{
				Name:  "door 2 button",
				Type:  "bool",
				Value: false,
			},
			Value{
				Name:  "door 3 button",
				Type:  "bool",
				Value: false,
			},
			Value{
				Name:  "door 4 button",
				Type:  "bool",
				Value: true,
			},
			Value{
				Name:  "relays",
				Type:  "uint8",
				Value: "7",
			},
			Value{
				Name:  "inputs",
				Type:  "uint8",
				Value: "9",
			},
			Value{
				Name:  "system error",
				Type:  "uint8",
				Value: 3,
			},
			Value{
				Name:  "special info",
				Type:  "uint8",
				Value: 39,
			},
			Value{
				Name:  "event index",
				Type:  "uint32",
				Value: 78,
			},
			Value{
				Name:  "event type",
				Type:  "uint8",
				Value: 2,
			},
			Value{
				Name:  "event access granted",
				Type:  "bool",
				Value: true,
			},
			Value{
				Name:  "event door",
				Type:  "uint8",
				Value: 3,
			},
			Value{
				Name:  "event direction",
				Type:  "uint8",
				Value: 1,
			},
			Value{
				Name:  "event card",
				Type:  "uint32",
				Value: "8165537",
			},
			Value{
				Name:  "event timestamp",
				Type:  "optional datetime",
				Value: "2022-08-23 09:47:06",
			},
			Value{
				Name:  "event reason",
				Type:  "uint8",
				Value: 44,
			},
			Value{
				Name:  "sequence no",
				Type:  "uint32",
				Value: 0,
			},
		},
		Message: []uint8{
			0x17, 0x20, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x4e, 0x00, 0x00, 0x00, 0x02, 0x01, 0x03, 0x01,
			0xa1, 0x98, 0x7c, 0x00, 0x20, 0x22, 0x08, 0x23, 0x09, 0x47, 0x06, 0x2c, 0x00, 0x01, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x01, 0x03, 0x09, 0x49, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x27, 0x07, 0x09, 0x22, 0x08, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
		},
	},
}
View Source
var GetTime = Function{
	Name: "get time",
	Args: []Arg{
		Arg{
			Name: "device id",
			Type: "uint32",
		},
	},
	Request:  &GetTimeRequest,
	Response: &GetTimeResponse,
}
View Source
var GetTimeProfile = Function{
	Name: "get time profile",
	Args: []Arg{
		Arg{
			Name: "device id",
			Type: "uint32",
		},
		Arg{
			Name: "profile id",
			Type: "uint8",
		},
	},
	Request:  &GetTimeProfileRequest,
	Response: &GetTimeProfileResponse,
}
View Source
var GetTimeProfileRequest = Message{
	Name:    "get time profile request",
	MsgType: 0x98,
	Fields: []Field{
		Field{
			Name:   "device id",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "profile id",
			Type:   "uint8",
			Offset: 8,
		},
	},
}
View Source
var GetTimeProfileResponse = Message{
	Name:    "get time profile response",
	MsgType: 0x98,
	Fields: []Field{
		Field{
			Name:   "controller",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "profile id",
			Type:   "uint8",
			Offset: 8,
		},
		Field{
			Name:   "start date",
			Type:   "optional date",
			Offset: 9,
		},
		Field{
			Name:   "end date",
			Type:   "optional date",
			Offset: 13,
		},
		Field{
			Name:   "monday",
			Type:   "bool",
			Offset: 17,
		},
		Field{
			Name:   "tuesday",
			Type:   "bool",
			Offset: 18,
		},
		Field{
			Name:   "wednesday",
			Type:   "bool",
			Offset: 19,
		},
		Field{
			Name:   "thursday",
			Type:   "bool",
			Offset: 20,
		},
		Field{
			Name:   "friday",
			Type:   "bool",
			Offset: 21,
		},
		Field{
			Name:   "saturday",
			Type:   "bool",
			Offset: 22,
		},
		Field{
			Name:   "sunday",
			Type:   "bool",
			Offset: 23,
		},
		Field{
			Name:   "segment 1 start",
			Type:   "HHmm",
			Offset: 24,
		},
		Field{
			Name:   "segment 1 end",
			Type:   "HHmm",
			Offset: 26,
		},
		Field{
			Name:   "segment 2 start",
			Type:   "HHmm",
			Offset: 28,
		},
		Field{
			Name:   "segment 2 end",
			Type:   "HHmm",
			Offset: 30,
		},
		Field{
			Name:   "segment 3 start",
			Type:   "HHmm",
			Offset: 32,
		},
		Field{
			Name:   "segment 3 end",
			Type:   "HHmm",
			Offset: 34,
		},
		Field{
			Name:   "linked profile id",
			Type:   "uint8",
			Offset: 36,
		},
	},
}
View Source
var GetTimeProfileTest = Test{
	Name: "get time profile",
	Request: &Request{
		Name: GetTimeProfileRequest.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "profile id",
				Type:  "uint8",
				Value: TIME_PROFILE_ID,
			},
		},
		Message: []uint8{
			0x17, 0x98, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
		},
	},
	Response: &Response{
		Name: GetTimeProfileResponse.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "profile id",
				Type:  "uint8",
				Value: 29,
			},
			Value{
				Name:  "start date",
				Type:  "optional date",
				Value: "2022-01-01",
			},
			Value{
				Name:  "end date",
				Type:  "optional date",
				Value: "2022-12-31",
			},
			Value{
				Name:  "monday",
				Type:  "bool",
				Value: true,
			},
			Value{
				Name:  "tuesday",
				Type:  "bool",
				Value: false,
			},
			Value{
				Name:  "wednesday",
				Type:  "bool",
				Value: true,
			},
			Value{
				Name:  "thursday",
				Type:  "bool",
				Value: true,
			},
			Value{
				Name:  "friday",
				Type:  "bool",
				Value: false,
			},
			Value{
				Name:  "saturday",
				Type:  "bool",
				Value: false,
			},
			Value{
				Name:  "sunday",
				Type:  "bool",
				Value: true,
			},
			Value{
				Name:  "segment 1 start",
				Type:  "HHmm",
				Value: "08:30",
			},
			Value{
				Name:  "segment 1 end",
				Type:  "HHmm",
				Value: "11:45",
			},
			Value{
				Name:  "segment 2 start",
				Type:  "HHmm",
				Value: "13:00",
			},
			Value{
				Name:  "segment 2 end",
				Type:  "HHmm",
				Value: "17:15",
			},
			Value{
				Name:  "segment 3 start",
				Type:  "HHmm",
				Value: "19:15",
			},
			Value{
				Name:  "segment 3 end",
				Type:  "HHmm",
				Value: "21:05",
			},
			Value{
				Name:  "linked profile id",
				Type:  "uint8",
				Value: 31,
			},
		},
		Message: []uint8{
			0x17, 0x98, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x1d, 0x20, 0x22, 0x01, 0x01, 0x20, 0x22, 0x12,
			0x31, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x30, 0x11, 0x45, 0x13, 0x00, 0x17, 0x15,
			0x19, 0x15, 0x21, 0x05, 0x1f, 0x00, 0x00, 0x00, 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 = Message{
	Name:    "get time request",
	MsgType: 0x32,
	Fields: []Field{
		Field{
			Name:   "device id",
			Type:   "uint32",
			Offset: 4,
		},
	},
}
View Source
var GetTimeResponse = Message{
	Name:    "get time response",
	MsgType: 0x32,
	Fields: []Field{
		Field{
			Name:   "controller",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "datetime",
			Type:   "datetime",
			Offset: 8,
		},
	},
}
View Source
var GetTimeTest = Test{
	Name: "get time",
	Request: &Request{
		Name: GetTimeRequest.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
		},
		Message: []uint8{
			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,
		},
	},
	Response: &Response{
		Name: GetTimeResponse.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "datetime",
				Type:  "datetime",
				Value: "2022-08-23 09:48:09",
			},
		},
		Message: []uint8{
			0x17, 0x32, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x20, 0x22, 0x08, 0x23, 0x09, 0x48, 0x09, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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 OpenDoor = Function{
	Name: "open door",
	Args: []Arg{
		Arg{
			Name: "device id",
			Type: "uint32",
		},
		Arg{
			Name: "door",
			Type: "uint8",
		},
	},
	Request:  &OpenDoorRequest,
	Response: &OpenDoorResponse,
}
View Source
var OpenDoorRequest = Message{
	Name:    "open door request",
	MsgType: 0x40,
	Fields: []Field{
		Field{
			Name:   "device id",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "door",
			Type:   "uint8",
			Offset: 8,
		},
	},
}
View Source
var OpenDoorResponse = Message{
	Name:    "open door response",
	MsgType: 0x40,
	Fields: []Field{
		Field{
			Name:   "controller",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "opened",
			Type:   "bool",
			Offset: 8,
		},
	},
}
View Source
var OpenDoorTest = Test{
	Name: "open door",
	Request: &Request{
		Name: OpenDoorRequest.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "door",
				Type:  "uint8",
				Value: "3",
			},
		},
		Message: []uint8{
			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,
		},
	},
	Response: &Response{
		Name: OpenDoorResponse.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "opened",
				Type:  "bool",
				Value: true,
			},
		},
		Message: []uint8{
			0x17, 0x40, 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 PutCard = Function{
	Name: "put card",
	Args: []Arg{
		Arg{
			Name: "device id",
			Type: "uint32",
		},
		Arg{
			Name: "card number",
			Type: "uint32",
		},
		Arg{
			Name: "start date",
			Type: "date",
		},
		Arg{
			Name: "end date",
			Type: "date",
		},
		Arg{
			Name: "door 1",
			Type: "uint8",
		},
		Arg{
			Name: "door 2",
			Type: "uint8",
		},
		Arg{
			Name: "door 3",
			Type: "uint8",
		},
		Arg{
			Name: "door 4",
			Type: "uint8",
		},
		Arg{
			Name: "PIN",
			Type: "pin",
		},
	},
	Request:  &PutCardRequest,
	Response: &PutCardResponse,
}
View Source
var PutCardRequest = Message{
	Name:    "put card request",
	MsgType: 0x50,
	Fields: []Field{
		Field{
			Name:   "device id",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "card number",
			Type:   "uint32",
			Offset: 8,
		},
		Field{
			Name:   "start date",
			Type:   "date",
			Offset: 12,
		},
		Field{
			Name:   "end date",
			Type:   "date",
			Offset: 16,
		},
		Field{
			Name:   "door 1",
			Type:   "uint8",
			Offset: 20,
		},
		Field{
			Name:   "door 2",
			Type:   "uint8",
			Offset: 21,
		},
		Field{
			Name:   "door 3",
			Type:   "uint8",
			Offset: 22,
		},
		Field{
			Name:   "door 4",
			Type:   "uint8",
			Offset: 23,
		},
		Field{
			Name:   "PIN",
			Type:   "pin",
			Offset: 24,
		},
	},
}
View Source
var PutCardResponse = Message{
	Name:    "put card response",
	MsgType: 0x50,
	Fields: []Field{
		Field{
			Name:   "controller",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "stored",
			Type:   "bool",
			Offset: 8,
		},
	},
}
View Source
var PutCardTest = Test{
	Name: "put card",
	Request: &Request{
		Name: PutCardRequest.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "card",
				Type:  "uint32",
				Value: CARD,
			},
			Value{
				Name:  "start date",
				Type:  "date",
				Value: "2022-01-01",
			},
			Value{
				Name:  "end date",
				Type:  "date",
				Value: "2022-12-31",
			},
			Value{
				Name:  "door1",
				Type:  "uint8",
				Value: "0",
			},
			Value{
				Name:  "door2",
				Type:  "uint8",
				Value: "1",
			},
			Value{
				Name:  "door3",
				Type:  "uint8",
				Value: "29",
			},
			Value{
				Name:  "door4",
				Type:  "uint8",
				Value: "0",
			},
			Value{
				Name:  "PIN",
				Type:  "pin",
				Value: "7531",
			},
		},
		Message: []uint8{
			0x17, 0x50, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0xa2, 0x98, 0x7c, 0x00, 0x20, 0x22, 0x01, 0x01,
			0x20, 0x22, 0x12, 0x31, 0x00, 0x01, 0x1d, 0x00, 0x6b, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
		},
	},
	Response: &Response{
		Name: PutCardResponse.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "stored",
				Type:  "bool",
				Value: true,
			},
		},
		Message: []uint8{
			0x17, 0x50, 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 RecordSpecialEvents = Function{
	Name: "record special events",
	Args: []Arg{
		Arg{
			Name: "device id",
			Type: "uint32",
		},
		Arg{
			Name: "enable",
			Type: "bool",
		},
	},
	Request:  &RecordSpecialEventsRequest,
	Response: &RecordSpecialEventsResponse,
}
View Source
var RecordSpecialEventsRequest = Message{
	Name:    "record special events request",
	MsgType: 0x8e,
	Fields: []Field{
		Field{
			Name:   "device id",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "enable",
			Type:   "bool",
			Offset: 8,
		},
	},
}
View Source
var RecordSpecialEventsResponse = Message{
	Name:    "record special events response",
	MsgType: 0x8e,
	Fields: []Field{
		Field{
			Name:   "controller",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "updated",
			Type:   "bool",
			Offset: 8,
		},
	},
}
View Source
var RecordSpecialEventsTest = Test{
	Name: "record special events",
	Request: &Request{
		Name: RecordSpecialEventsRequest.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "enabled",
				Type:  "bool",
				Value: "true",
			},
		},
		Message: []uint8{
			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,
		},
	},
	Response: &Response{
		Name: RecordSpecialEventsResponse.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "updated",
				Type:  "bool",
				Value: true,
			},
		},
		Message: []uint8{
			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 RefreshTaskList = Function{
	Name: "refresh tasklist",
	Args: []Arg{
		Arg{
			Name: "device id",
			Type: "uint32",
		},
	},
	Request:  &RefreshTaskListRequest,
	Response: &RefreshTaskListResponse,
}
View Source
var RefreshTaskListRequest = Message{
	Name:    "refresh tasklist request",
	MsgType: 0xac,
	Fields: []Field{
		Field{
			Name:   "device id",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "",
			Type:   "magic",
			Offset: 8,
		},
	},
}
View Source
var RefreshTaskListResponse = Message{
	Name:    "refresh tasklist response",
	MsgType: 0xac,
	Fields: []Field{
		Field{
			Name:   "controller",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "refreshed",
			Type:   "bool",
			Offset: 8,
		},
	},
}
View Source
var RefreshTaskListTest = Test{
	Name: "refresh tasklist",
	Request: &Request{
		Name: RefreshTaskListRequest.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
		},
		Message: []uint8{
			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,
		},
	},
	Response: &Response{
		Name: RefreshTaskListResponse.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "refreshed",
				Type:  "bool",
				Value: true,
			},
		},
		Message: []uint8{
			0x17, 0xac, 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 SetDoorControl = Function{
	Name: "set door control",
	Args: []Arg{
		Arg{
			Name: "device id",
			Type: "uint32",
		},
		Arg{
			Name: "door",
			Type: "uint8",
		},
		Arg{
			Name: "mode",
			Type: "uint8",
		},
		Arg{
			Name: "delay",
			Type: "uint8",
		},
	},
	Request:  &SetDoorControlRequest,
	Response: &SetDoorControlResponse,
}
View Source
var SetDoorControlRequest = Message{
	Name:    "set door control request",
	MsgType: 0x80,
	Fields: []Field{
		Field{
			Name:   "device id",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "door",
			Type:   "uint8",
			Offset: 8,
		},
		Field{
			Name:   "mode",
			Type:   "uint8",
			Offset: 9,
		},
		Field{
			Name:   "delay",
			Type:   "uint8",
			Offset: 10,
		},
	},
}
View Source
var SetDoorControlResponse = Message{
	Name:    "set door control response",
	MsgType: 0x80,
	Fields: []Field{
		Field{
			Name:   "controller",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "door",
			Type:   "uint8",
			Offset: 8,
		},
		Field{
			Name:   "mode",
			Type:   "uint8",
			Offset: 9,
		},
		Field{
			Name:   "delay",
			Type:   "uint8",
			Offset: 10,
		},
	},
}
View Source
var SetDoorControlTest = Test{
	Name: "set door control",
	Request: &Request{
		Name: SetDoorControlRequest.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "door",
				Type:  "uint8",
				Value: 3,
			},
			Value{
				Name:  "mode",
				Type:  "uint8",
				Value: 2,
			},
			Value{
				Name:  "delay",
				Type:  "uint8",
				Value: 10,
			},
		},
		Message: []uint8{
			0x17, 0x80, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x03, 0x02, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
		},
	},
	Response: &Response{
		Name: SetDoorControlResponse.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "door",
				Type:  "uint8",
				Value: 3,
			},
			Value{
				Name:  "mode",
				Type:  "uint8",
				Value: 2,
			},
			Value{
				Name:  "delay",
				Type:  "uint8",
				Value: 10,
			},
		},
		Message: []uint8{
			0x17, 0x80, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x03, 0x02, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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 SetDoorPasscodes = Function{
	Name: "set door passcodes",
	Args: []Arg{
		Arg{
			Name: "device id",
			Type: "uint32",
		},
		Arg{
			Name: "door",
			Type: "uint8",
		},
		Arg{
			Name: "passcode 1",
			Type: "uint32",
		},
		Arg{
			Name: "passcode 2",
			Type: "uint32",
		},
		Arg{
			Name: "passcode 3",
			Type: "uint32",
		},
		Arg{
			Name: "passcode 4",
			Type: "uint32",
		},
	},
	Request:  &SetDoorPasscodesRequest,
	Response: &SetDoorPasscodesResponse,
}
View Source
var SetDoorPasscodesRequest = Message{
	Name:    "set door passcodes request",
	MsgType: 0x8c,
	Fields: []Field{
		Field{
			Name:   "device id",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "door",
			Type:   "uint8",
			Offset: 8,
		},
		Field{
			Name:   "passcode 1",
			Type:   "uint32",
			Offset: 12,
		},
		Field{
			Name:   "passcode 2",
			Type:   "uint32",
			Offset: 16,
		},
		Field{
			Name:   "passcode 3",
			Type:   "uint32",
			Offset: 20,
		},
		Field{
			Name:   "passcode 4",
			Type:   "uint32",
			Offset: 24,
		},
	},
}
View Source
var SetDoorPasscodesResponse = Message{
	Name:    "set door passcodes response",
	MsgType: 0x8c,
	Fields: []Field{
		Field{
			Name:   "controller",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "ok",
			Type:   "bool",
			Offset: 8,
		},
	},
}
View Source
var SetDoorPasscodesTest = Test{
	Name: "set door passcodes",
	Request: &Request{
		Name: SetDoorPasscodesRequest.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "door",
				Type:  "uint8",
				Value: DOOR,
			},
			Value{
				Name:  "passcode 1",
				Type:  "uint32",
				Value: "12345",
			},
			Value{
				Name:  "passcode 2",
				Type:  "uint32",
				Value: "0",
			},
			Value{
				Name:  "passcode 3",
				Type:  "uint32",
				Value: "999999",
			},
			Value{
				Name:  "passcode 4",
				Type:  "uint32",
				Value: "54321",
			},
		},
		Message: []uint8{
			0x17, 0x8c, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x03, 0x00, 0x00, 0x00, 0x39, 0x30, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x3f, 0x42, 0x0f, 0x00, 0x31, 0xd4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
		},
	},
	Response: &Response{
		Name: SetDoorPasscodesResponse.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "ok",
				Type:  "bool",
				Value: true,
			},
		},
		Message: []uint8{
			0x17, 0x8c, 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 SetEventIndex = Function{
	Name: "set event index",
	Args: []Arg{
		Arg{
			Name: "device id",
			Type: "uint32",
		},
		Arg{
			Name: "event index",
			Type: "uint32",
		},
	},
	Request:  &SetEventIndexRequest,
	Response: &SetEventIndexResponse,
}
View Source
var SetEventIndexRequest = Message{
	Name:    "set event index request",
	MsgType: 0xb2,
	Fields: []Field{
		Field{
			Name:   "device id",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "event index",
			Type:   "uint32",
			Offset: 8,
		},
		Field{
			Name:   "",
			Type:   "magic",
			Offset: 12,
		},
	},
}
View Source
var SetEventIndexResponse = Message{
	Name:    "set event index response",
	MsgType: 0xb2,
	Fields: []Field{
		Field{
			Name:   "controller",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "updated",
			Type:   "bool",
			Offset: 8,
		},
	},
}
View Source
var SetEventIndexTest = Test{
	Name: "set event index",
	Request: &Request{
		Name: SetEventIndexRequest.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "index",
				Type:  "uint32",
				Value: EVENT_INDEX,
			},
		},
		Message: []uint8{
			0x17, 0xb2, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x25, 0x00, 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,
		},
	},
	Response: &Response{
		Name: SetEventIndexResponse.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "updated",
				Type:  "bool",
				Value: true,
			},
		},
		Message: []uint8{
			0x17, 0xb2, 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 SetIP = Function{
	Name: "set IP",
	Args: []Arg{
		Arg{
			Name: "device id",
			Type: "uint32",
		},
		Arg{
			Name: "address",
			Type: "IPv4",
		},
		Arg{
			Name: "netmask",
			Type: "IPv4",
		},
		Arg{
			Name: "gateway",
			Type: "IPv4",
		},
	},
	Request: &SetIPRequest,
}
View Source
var SetIPRequest = Message{
	Name:    "set IP request",
	MsgType: 0x96,
	Fields: []Field{
		Field{
			Name:   "device id",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "address",
			Type:   "IPv4",
			Offset: 8,
		},
		Field{
			Name:   "netmask",
			Type:   "IPv4",
			Offset: 12,
		},
		Field{
			Name:   "gateway",
			Type:   "IPv4",
			Offset: 16,
		},
		Field{
			Name:   "",
			Type:   "magic",
			Offset: 20,
		},
	},
}
View Source
var SetIPTest = Test{
	Name: "set IP",
	Request: &Request{
		Name: SetIPRequest.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "address",
				Type:  "IPv4",
				Value: netip.MustParseAddr("192.168.1.100"),
			},
			Value{
				Name:  "netmask",
				Type:  "IPv4",
				Value: netip.MustParseAddr("255.255.255.0"),
			},
			Value{
				Name:  "gateway",
				Type:  "IPv4",
				Value: netip.MustParseAddr("192.168.1.1"),
			},
		},
		Message: []uint8{
			0x17, 0x96, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0xc0, 0xa8, 0x01, 0x64, 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 SetInterlock = Function{
	Name: "set interlock",
	Args: []Arg{
		Arg{
			Name: "device id",
			Type: "uint32",
		},
		Arg{
			Name: "interlock",
			Type: "uint8",
		},
	},
	Request:  &SetInterlockRequest,
	Response: &SetInterlockResponse,
}
View Source
var SetInterlockRequest = Message{
	Name:    "set interlock request",
	MsgType: 0xa2,
	Fields: []Field{
		Field{
			Name:   "device id",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "interlock",
			Type:   "uint8",
			Offset: 8,
		},
	},
}
View Source
var SetInterlockResponse = Message{
	Name:    "set interlock response",
	MsgType: 0xa2,
	Fields: []Field{
		Field{
			Name:   "controller",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "ok",
			Type:   "bool",
			Offset: 8,
		},
	},
}
View Source
var SetInterlockTest = Test{
	Name: "set interlock",
	Request: &Request{
		Name: SetInterlockRequest.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "interlock",
				Type:  "uint8",
				Value: "4",
			},
		},
		Message: []uint8{
			0x17, 0xa2, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
		},
	},
	Response: &Response{
		Name: SetInterlockResponse.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "ok",
				Type:  "bool",
				Value: true,
			},
		},
		Message: []uint8{
			0x17, 0xa2, 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 SetListener = Function{
	Name: "set listener",
	Args: []Arg{
		Arg{
			Name: "device id",
			Type: "uint32",
		},
		Arg{
			Name: "address",
			Type: "IPv4",
		},
		Arg{
			Name: "port",
			Type: "uint16",
		},
	},
	Request:  &SetListenerRequest,
	Response: &SetListenerResponse,
}
View Source
var SetListenerRequest = Message{
	Name:    "set listener request",
	MsgType: 0x90,
	Fields: []Field{
		Field{
			Name:   "device id",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "address",
			Type:   "IPv4",
			Offset: 8,
		},
		Field{
			Name:   "port",
			Type:   "uint16",
			Offset: 12,
		},
	},
}
View Source
var SetListenerResponse = Message{
	Name:    "set listener response",
	MsgType: 0x90,
	Fields: []Field{
		Field{
			Name:   "controller",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "ok",
			Type:   "bool",
			Offset: 8,
		},
	},
}
View Source
var SetListenerTest = Test{
	Name: "set listener",
	Request: &Request{
		Name: SetListenerRequest.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "address",
				Type:  "IPv4",
				Value: netip.MustParseAddr("192.168.1.100"),
			},
			Value{
				Name:  "port",
				Type:  "uint16",
				Value: "60001",
			},
		},
		Message: []uint8{
			0x17, 0x90, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0xc0, 0xa8, 0x01, 0x64, 0x61, 0xea, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
		},
	},
	Response: &Response{
		Name: SetListenerResponse.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "ok",
				Type:  "bool",
				Value: true,
			},
		},
		Message: []uint8{
			0x17, 0x90, 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 SetPCControl = Function{
	Name: "set pc control",
	Args: []Arg{
		Arg{
			Name: "device id",
			Type: "uint32",
		},
		Arg{
			Name: "enable",
			Type: "bool",
		},
	},
	Request:  &SetPCControlRequest,
	Response: &SetPCControlResponse,
}
View Source
var SetPCControlRequest = Message{
	Name:    "set pc control request",
	MsgType: 0xa0,
	Fields: []Field{
		Field{
			Name:   "device id",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "",
			Type:   "magic",
			Offset: 8,
		},
		Field{
			Name:   "enable",
			Type:   "bool",
			Offset: 12,
		},
	},
}
View Source
var SetPCControlResponse = Message{
	Name:    "set pc control response",
	MsgType: 0xa0,
	Fields: []Field{
		Field{
			Name:   "controller",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "ok",
			Type:   "bool",
			Offset: 8,
		},
	},
}
View Source
var SetPCControlTest = Test{
	Name: "set pc control",
	Request: &Request{
		Name: SetPCControlRequest.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "enabled",
				Type:  "bool",
				Value: "true",
			},
		},
		Message: []uint8{
			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,
		},
	},
	Response: &Response{
		Name: SetPCControlResponse.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "ok",
				Type:  "bool",
				Value: true,
			},
		},
		Message: []uint8{
			0x17, 0xa0, 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 SetTime = Function{
	Name: "set time",
	Args: []Arg{
		Arg{
			Name: "device id",
			Type: "uint32",
		},
		Arg{
			Name: "time",
			Type: "datetime",
		},
	},
	Request:  &SetTimeRequest,
	Response: &SetTimeResponse,
}
View Source
var SetTimeProfile = Function{
	Name: "set time profile",
	Args: []Arg{
		Arg{
			Name: "device id",
			Type: "uint32",
		},
		Arg{
			Name: "profile id",
			Type: "uint8",
		},
		Arg{
			Name: "start date",
			Type: "date",
		},
		Arg{
			Name: "end date",
			Type: "date",
		},
		Arg{
			Name: "monday",
			Type: "bool",
		},
		Arg{
			Name: "tuesday",
			Type: "bool",
		},
		Arg{
			Name: "wednesday",
			Type: "bool",
		},
		Arg{
			Name: "thursday",
			Type: "bool",
		},
		Arg{
			Name: "friday",
			Type: "bool",
		},
		Arg{
			Name: "saturday",
			Type: "bool",
		},
		Arg{
			Name: "sunday",
			Type: "bool",
		},
		Arg{
			Name: "segment 1 start",
			Type: "HHmm",
		},
		Arg{
			Name: "segment 1 end",
			Type: "HHmm",
		},
		Arg{
			Name: "segment 2 start",
			Type: "HHmm",
		},
		Arg{
			Name: "segment 2 end",
			Type: "HHmm",
		},
		Arg{
			Name: "segment 3 start",
			Type: "HHmm",
		},
		Arg{
			Name: "segment 3 end",
			Type: "HHmm",
		},
		Arg{
			Name: "linked profile id",
			Type: "uint8",
		},
	},
	Request:  &SetTimeProfileRequest,
	Response: &SetTimeProfileResponse,
}
View Source
var SetTimeProfileRequest = Message{
	Name:    "set time profile request",
	MsgType: 0x88,
	Fields: []Field{
		Field{
			Name:   "device id",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "profile id",
			Type:   "uint8",
			Offset: 8,
		},
		Field{
			Name:   "start date",
			Type:   "date",
			Offset: 9,
		},
		Field{
			Name:   "end date",
			Type:   "date",
			Offset: 13,
		},
		Field{
			Name:   "monday",
			Type:   "bool",
			Offset: 17,
		},
		Field{
			Name:   "tuesday",
			Type:   "bool",
			Offset: 18,
		},
		Field{
			Name:   "wednesday",
			Type:   "bool",
			Offset: 19,
		},
		Field{
			Name:   "thursday",
			Type:   "bool",
			Offset: 20,
		},
		Field{
			Name:   "friday",
			Type:   "bool",
			Offset: 21,
		},
		Field{
			Name:   "saturday",
			Type:   "bool",
			Offset: 22,
		},
		Field{
			Name:   "sunday",
			Type:   "bool",
			Offset: 23,
		},
		Field{
			Name:   "segment 1 start",
			Type:   "HHmm",
			Offset: 24,
		},
		Field{
			Name:   "segment 1 end",
			Type:   "HHmm",
			Offset: 26,
		},
		Field{
			Name:   "segment 2 start",
			Type:   "HHmm",
			Offset: 28,
		},
		Field{
			Name:   "segment 2 end",
			Type:   "HHmm",
			Offset: 30,
		},
		Field{
			Name:   "segment 3 start",
			Type:   "HHmm",
			Offset: 32,
		},
		Field{
			Name:   "segment 3 end",
			Type:   "HHmm",
			Offset: 34,
		},
		Field{
			Name:   "linked profile id",
			Type:   "uint8",
			Offset: 36,
		},
	},
}
View Source
var SetTimeProfileResponse = Message{
	Name:    "set time profile response",
	MsgType: 0x88,
	Fields: []Field{
		Field{
			Name:   "controller",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "stored",
			Type:   "bool",
			Offset: 8,
		},
	},
}
View Source
var SetTimeProfileTest = Test{
	Name: "set time profile",
	Request: &Request{
		Name: SetTimeProfileRequest.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "profile id",
				Type:  "uint8",
				Value: TIME_PROFILE_ID,
			},
			Value{
				Name:  "start date",
				Type:  "date",
				Value: "2022-01-01",
			},
			Value{
				Name:  "end date",
				Type:  "date",
				Value: "2022-12-31",
			},
			Value{
				Name:  "monday",
				Type:  "bool",
				Value: "true",
			},
			Value{
				Name:  "tuesday",
				Type:  "bool",
				Value: "false",
			},
			Value{
				Name:  "wednesday",
				Type:  "bool",
				Value: "true",
			},
			Value{
				Name:  "thursday",
				Type:  "bool",
				Value: "true",
			},
			Value{
				Name:  "friday",
				Type:  "bool",
				Value: "false",
			},
			Value{
				Name:  "saturday",
				Type:  "bool",
				Value: "false",
			},
			Value{
				Name:  "sunday",
				Type:  "bool",
				Value: "true",
			},
			Value{
				Name:  "segment 1 start",
				Type:  "HHmm",
				Value: "08:30",
			},
			Value{
				Name:  "segment 1 end",
				Type:  "HHmm",
				Value: "11:45",
			},
			Value{
				Name:  "segment 2 start",
				Type:  "HHmm",
				Value: "13:15",
			},
			Value{
				Name:  "segment 2 end",
				Type:  "HHmm",
				Value: "16:30",
			},
			Value{
				Name:  "segment 3 start",
				Type:  "HHmm",
				Value: "19:30",
			},
			Value{
				Name:  "segment 3 end",
				Type:  "HHmm",
				Value: "20:55",
			},
			Value{
				Name:  "linked profile id",
				Type:  "uint8",
				Value: "30",
			},
		},
		Message: []uint8{
			0x17, 0x88, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x1d, 0x20, 0x22, 0x01, 0x01, 0x20, 0x22, 0x12,
			0x31, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x08, 0x30, 0x11, 0x45, 0x13, 0x15, 0x16, 0x30,
			0x19, 0x30, 0x20, 0x55, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
		},
	},
	Response: &Response{
		Name: SetTimeProfileResponse.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "stored",
				Type:  "bool",
				Value: true,
			},
		},
		Message: []uint8{
			0x17, 0x88, 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 SetTimeRequest = Message{
	Name:    "set time request",
	MsgType: 0x30,
	Fields: []Field{
		Field{
			Name:   "device id",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "datetime",
			Type:   "datetime",
			Offset: 8,
		},
	},
}
View Source
var SetTimeResponse = Message{
	Name:    "set time response",
	MsgType: 0x30,
	Fields: []Field{
		Field{
			Name:   "controller",
			Type:   "uint32",
			Offset: 4,
		},
		Field{
			Name:   "datetime",
			Type:   "datetime",
			Offset: 8,
		},
	},
}
View Source
var SetTimeTest = Test{
	Name: "set time",
	Request: &Request{
		Name: SetTimeRequest.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "datetime",
				Type:  "datetime",
				Value: "2022-08-23 09:49:03",
			},
		},
		Message: []uint8{
			0x17, 0x30, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x20, 0x22, 0x08, 0x23, 0x09, 0x49, 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,
		},
	},
	Response: &Response{
		Name: SetTimeResponse.Name,
		Values: []Value{
			Value{
				Name:  "controller",
				Type:  "uint32",
				Value: CONTROLLER,
			},
			Value{
				Name:  "datetime",
				Type:  "datetime",
				Value: "2022-08-23 09:49:03",
			},
		},
		Message: []uint8{
			0x17, 0x30, 0x00, 0x00, 0x78, 0x37, 0x2a, 0x18, 0x20, 0x22, 0x08, 0x23, 0x09, 0x49, 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,
		},
	},
}

Functions

This section is empty.

Types

type Arg

type Arg struct {
	Name string `json:"name"`
	Type string `json:"type"`
}

type Field

type Field struct {
	Name   string `json:"name"`
	Type   string `json:"type"`
	Offset uint8  `json:"offset"`
}

type Function

type Function struct {
	Name     string   `json:"name"`
	Args     []Arg    `json:"args"`
	Request  *Message `json:"request,omitempty"`
	Response *Message `json:"response,omitempty"`
}

type Message

type Message struct {
	Name    string  `json:"name"`
	MsgType uint8   `json:"msgtype"`
	Fields  []Field `json:"fields"`
}

type Model

type Model struct {
	Functions []Function `json:"functions"`
	Requests  []Message  `json:"requests"`
	Responses []Message  `json:"responses"`
	Event     Message    `json:"event"`
}

type Request

type Request struct {
	Name    string  `json:"name"`
	Values  []Value `json:"values"`
	Message []uint8 `json:"message,omitempty"`
}

type Response

type Response struct {
	Name    string  `json:"name"`
	Values  []Value `json:"values"`
	Message []uint8 `json:"message,omitempty"`
}

type Test

type Test struct {
	Name     string    `json:"name"`
	Request  *Request  `json:"request,omitempty"`
	Response *Response `json:"response,omitempty"`
}

type TestData

type TestData struct {
	Tests []Test `json:"tests"`
}

type Value

type Value struct {
	Name  string `json:"name"`
	Type  string `json:"type"`
	Value any    `json:"value"`
}

Jump to

Keyboard shortcuts

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