Mini Kabibi Habibi

Current Path : C:/Program Files/Smart Professional Surveillance System/PC-NVR/Common/Lua/ptz/
Upload File :
Current File : C:/Program Files/Smart Professional Surveillance System/PC-NVR/Common/Lua/ptz/Videon_P.lua

-- Videon RS422P PROTOCOL
-- watchnetҪ���PelcoPЭ��

local Protocol = {};

Protocol.Attr = 
{
	Name = "Videon-P",	
	Type = "PTZ",
	Internal = 200,
	CamAddrRange 		= {0x00, 0x1F}, 
	MonAddrRange		= {0x00, 0xFF},	
	PresetRange 		= {0x00, 0xFF},
	TourRange		= {0x00, 0xff},
	PatternRange		= {0x00, 0x00},
	TileSpeedRange 		= {0x00, 0x3F},
	PanSpeedRange 		= {0x00, 0x3F},
	AuxRange 		= {0x01, 0x08},
}

Protocol.CommandAttr =
{
	AddrPos 		= 2, 
	PresetPos 		= 6, 
	TileSpeedPos 		= 6,
	PanSpeedPos 		= 5,
	AuxPos 			= 6,
}

Protocol.Command = 
{
	Start= 
	{
		TileUp 		= "0xA0, 0x00, 0x50, 0x08, 0x00, 0x00, 0xAF, 0x00",
		TileDown 	= "0xA0, 0x00, 0x50, 0x10, 0x00, 0x00, 0xAF, 0x00",
		PanLeft 	= "0xA0, 0x00, 0x50, 0x04, 0x00, 0x00, 0xAF, 0x00",
		PanRight 	= "0xA0, 0x00, 0x50, 0x02, 0x00, 0x00, 0xAF, 0x00",
		LeftUp 		= "0xA0, 0x00, 0x50, 0x0C, 0x00, 0x00, 0xAF, 0x00",
		LeftDown 	= "0xA0, 0x00, 0x50, 0x14, 0x00, 0x00, 0xAF, 0x00",
		RightUp		= "0xA0, 0x00, 0x50, 0x0A, 0x00, 0x00, 0xAF, 0x00",
		RightDown 	= "0xA0, 0x00, 0x50, 0x12, 0x00, 0x00, 0xAF, 0x00",

		ZoomWide 	= "0xA0, 0x00, 0x50, 0x40, 0x00, 0x00, 0xAF, 0x00",
		ZoomTele 	= "0xA0, 0x00, 0x50, 0x20, 0x00, 0x00, 0xAF, 0x00",
		FocusNear	= "0xA0, 0x00, 0x52, 0x00, 0x00, 0x00, 0xAF, 0x00",
		FocusFar 	= "0xA0, 0x00, 0x51, 0x00, 0x00, 0x00, 0xAF, 0x00",
		IrisSmall 	= "0xA0, 0x00, 0x58, 0x00, 0x00, 0x00, 0xAF, 0x00",
		IrisLarge 	= "0xA0, 0x00, 0x54, 0x00, 0x00, 0x00, 0xAF, 0x00",
			
		SetPreset 	= "0xA0, 0x00, 0x00, 0x03, 0x00, 0x00, 0xAF, 0x00",
		ClearPreset	= "0xA0, 0x00, 0x00, 0x05, 0x00, 0x00, 0xAF, 0x00",
		GoToPreset 	= "0xA0, 0x00, 0x00, 0x07, 0x00, 0x00, 0xAF, 0x00",
			
		--AutoScanOn 	= "0xA0, 0x00, 0x70, 0x00, 0x00, 0x00, 0xAF, 0x00",
		--AutoScanOff	= "0xA0, 0x00, 0x50, 0x00, 0x00, 0x00, 0xAF, 0x00",
			
		SetPatternStart = "0xA0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0xAF, 0x00",
		SetPatternStop 	= "0xA0, 0x00, 0x00, 0x21, 0x00, 0x00, 0xAF, 0x00",
		StartPattern 	= "0xA0, 0x00, 0x00, 0x23, 0x00, 0x00, 0xAF, 0x00",
                StopPattern     = "0xA0, 0x00, 0x50, 0x00, 0x00, 0x00, 0xAF, 0x00",
		
		AuxOn 		= "0xA0, 0x00, 0x00, 0x09, 0x00, 0x00, 0xAF, 0x00",
		AuxOff 		= "0xA0, 0x00, 0x00, 0x0B, 0x00, 0x00, 0xAF, 0x00",
	},
	Stop = 
	{
		TileUp 		= "0xA0, 0x00, 0x50, 0x00, 0x00, 0x00, 0xAF, 0x00",
		TileDown 	= "0xA0, 0x00, 0x50, 0x00, 0x00, 0x00, 0xAF, 0x00",
		PanLeft 	= "0xA0, 0x00, 0x50, 0x00, 0x00, 0x00, 0xAF, 0x00",
		PanRight 	= "0xA0, 0x00, 0x50, 0x00, 0x00, 0x00, 0xAF, 0x00",
		LeftUp 		= "0xA0, 0x00, 0x50, 0x00, 0x00, 0x00, 0xAF, 0x00",
		LeftDown 	= "0xA0, 0x00, 0x50, 0x00, 0x00, 0x00, 0xAF, 0x00",
		RightUp		= "0xA0, 0x00, 0x50, 0x00, 0x00, 0x00, 0xAF, 0x00",
		RightDown 	= "0xA0, 0x00, 0x50, 0x00, 0x00, 0x00, 0xAF, 0x00",
		
		ZoomWide 	= "0xA0, 0x00, 0x50, 0x00, 0x00, 0x00, 0xAF, 0x00",
		ZoomTele 	= "0xA0, 0x00, 0x50, 0x00, 0x00, 0x00, 0xAF, 0x00",
		FocusNear 	= "0xA0, 0x00, 0x50, 0x00, 0x00, 0x00, 0xAF, 0x00",
		FocusFar 	= "0xA0, 0x00, 0x50, 0x00, 0x00, 0x00, 0xAF, 0x00",
		IrisSmall 	= "0xA0, 0x00, 0x50, 0x00, 0x00, 0x00, 0xAF, 0x00",
		IrisLarge 	= "0xA0, 0x00, 0x50, 0x00, 0x00, 0x00, 0xAF, 0x00",
	},
}

Protocol.Checksum = function (s)
	local value = s[1];
	for i = 2, 7 do
		value = bits.bxor(value,s[i]);
	end;
	s[8] = math.mod(value, 256);
	return s;
end;

Protocol.SpeedProcess = function(s, ver, hor)
	if s[4] ~= 0x00 and ver ~= 0x00 then
		s[6] = ver;
	end;
	if s[4] ~= 0x00 and hor ~= 0x00 then
		s[5] = hor;
	end;
	return s;
end;

return Protocol;