using System;
using System.Collections.Generic;
using Android.Runtime;
using Java.Interop;

namespace Com.Uhf.Api.Cls {

	// Metadata.xml XPath class reference: path="/api/package[@name='com.uhf.api.cls']/class[@name='R2000DataCmdReturn']"
	[global::Android.Runtime.Register ("com/uhf/api/cls/R2000DataCmdReturn", DoNotGenerateAcw=true)]
	public partial class R2000DataCmdReturn : global::Java.Lang.Object {
		static readonly JniPeerMembers _members = new XAPeerMembers ("com/uhf/api/cls/R2000DataCmdReturn", typeof (R2000DataCmdReturn));

		internal static IntPtr class_ref {
			get { return _members.JniPeerType.PeerReference.Handle; }
		}

		[global::System.Diagnostics.DebuggerBrowsable (global::System.Diagnostics.DebuggerBrowsableState.Never)]
		[global::System.ComponentModel.EditorBrowsable (global::System.ComponentModel.EditorBrowsableState.Never)]
		public override global::Java.Interop.JniPeerMembers JniPeerMembers {
			get { return _members; }
		}

		[global::System.Diagnostics.DebuggerBrowsable (global::System.Diagnostics.DebuggerBrowsableState.Never)]
		[global::System.ComponentModel.EditorBrowsable (global::System.ComponentModel.EditorBrowsableState.Never)]
		protected override IntPtr ThresholdClass {
			get { return _members.JniPeerType.PeerReference.Handle; }
		}

		[global::System.Diagnostics.DebuggerBrowsable (global::System.Diagnostics.DebuggerBrowsableState.Never)]
		[global::System.ComponentModel.EditorBrowsable (global::System.ComponentModel.EditorBrowsableState.Never)]
		protected override global::System.Type ThresholdType {
			get { return _members.ManagedPeerType; }
		}

		protected R2000DataCmdReturn (IntPtr javaReference, JniHandleOwnership transfer) : base (javaReference, transfer)
		{
		}

		// Metadata.xml XPath constructor reference: path="/api/package[@name='com.uhf.api.cls']/class[@name='R2000DataCmdReturn']/constructor[@name='R2000DataCmdReturn' and count(parameter)=0]"
		[Register (".ctor", "()V", "")]
		public unsafe R2000DataCmdReturn () : base (IntPtr.Zero, JniHandleOwnership.DoNotTransfer)
		{
			const string __id = "()V";

			if (((global::Java.Lang.Object) this).Handle != IntPtr.Zero)
				return;

			try {
				var __r = _members.InstanceMethods.StartCreateInstance (__id, ((object) this).GetType (), null);
				SetHandle (__r.Handle, JniHandleOwnership.TransferLocalRef);
				_members.InstanceMethods.FinishCreateInstance (__id, this, null);
			} finally {
			}
		}

		static Delegate cb_Data;
#pragma warning disable 0169
		static Delegate GetDataHandler ()
		{
			if (cb_Data == null)
				cb_Data = JNINativeWrapper.CreateDelegate ((_JniMarshal_PP_L) n_Data);
			return cb_Data;
		}

		static IntPtr n_Data (IntPtr jnienv, IntPtr native__this)
		{
			var __this = global::Java.Lang.Object.GetObject<global::Com.Uhf.Api.Cls.R2000DataCmdReturn> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
			return JNIEnv.NewArray (__this.Data ());
		}
#pragma warning restore 0169

		// Metadata.xml XPath method reference: path="/api/package[@name='com.uhf.api.cls']/class[@name='R2000DataCmdReturn']/method[@name='Data' and count(parameter)=0]"
		[Register ("Data", "()[B", "GetDataHandler")]
		public virtual unsafe byte[] Data ()
		{
			const string __id = "Data.()[B";
			try {
				var __rm = _members.InstanceMethods.InvokeVirtualObjectMethod (__id, this, null);
				return (byte[]) JNIEnv.GetArray (__rm.Handle, JniHandleOwnership.TransferLocalRef, typeof (byte));
			} finally {
			}
		}

		static Delegate cb_DataLength;
#pragma warning disable 0169
		static Delegate GetDataLengthHandler ()
		{
			if (cb_DataLength == null)
				cb_DataLength = JNINativeWrapper.CreateDelegate ((_JniMarshal_PP_I) n_DataLength);
			return cb_DataLength;
		}

		static int n_DataLength (IntPtr jnienv, IntPtr native__this)
		{
			var __this = global::Java.Lang.Object.GetObject<global::Com.Uhf.Api.Cls.R2000DataCmdReturn> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
			return __this.DataLength ();
		}
#pragma warning restore 0169

		// Metadata.xml XPath method reference: path="/api/package[@name='com.uhf.api.cls']/class[@name='R2000DataCmdReturn']/method[@name='DataLength' and count(parameter)=0]"
		[Register ("DataLength", "()I", "GetDataLengthHandler")]
		public virtual unsafe int DataLength ()
		{
			const string __id = "DataLength.()I";
			try {
				var __rm = _members.InstanceMethods.InvokeVirtualInt32Method (__id, this, null);
				return __rm;
			} finally {
			}
		}

		static Delegate cb_GetData_arrayB;
#pragma warning disable 0169
		static Delegate GetGetData_arrayBHandler ()
		{
			if (cb_GetData_arrayB == null)
				cb_GetData_arrayB = JNINativeWrapper.CreateDelegate ((_JniMarshal_PPL_V) n_GetData_arrayB);
			return cb_GetData_arrayB;
		}

		static void n_GetData_arrayB (IntPtr jnienv, IntPtr native__this, IntPtr native_cmddata)
		{
			var __this = global::Java.Lang.Object.GetObject<global::Com.Uhf.Api.Cls.R2000DataCmdReturn> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
			var cmddata = (byte[]) JNIEnv.GetArray (native_cmddata, JniHandleOwnership.DoNotTransfer, typeof (byte));
			__this.GetData (cmddata);
			if (cmddata != null)
				JNIEnv.CopyArray (cmddata, native_cmddata);
		}
#pragma warning restore 0169

		// Metadata.xml XPath method reference: path="/api/package[@name='com.uhf.api.cls']/class[@name='R2000DataCmdReturn']/method[@name='GetData' and count(parameter)=1 and parameter[1][@type='byte[]']]"
		[Register ("GetData", "([B)V", "GetGetData_arrayBHandler")]
		public virtual unsafe void GetData (byte[] cmddata)
		{
			const string __id = "GetData.([B)V";
			IntPtr native_cmddata = JNIEnv.NewArray (cmddata);
			try {
				JniArgumentValue* __args = stackalloc JniArgumentValue [1];
				__args [0] = new JniArgumentValue (native_cmddata);
				_members.InstanceMethods.InvokeVirtualVoidMethod (__id, this, __args);
			} finally {
				if (cmddata != null) {
					JNIEnv.CopyArray (native_cmddata, cmddata);
					JNIEnv.DeleteLocalRef (native_cmddata);
				}
				global::System.GC.KeepAlive (cmddata);
			}
		}

		static Delegate cb_SData;
#pragma warning disable 0169
		static Delegate GetSDataHandler ()
		{
			if (cb_SData == null)
				cb_SData = JNINativeWrapper.CreateDelegate ((_JniMarshal_PP_B) n_SData);
			return cb_SData;
		}

		static sbyte n_SData (IntPtr jnienv, IntPtr native__this)
		{
			var __this = global::Java.Lang.Object.GetObject<global::Com.Uhf.Api.Cls.R2000DataCmdReturn> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
			return __this.SData ();
		}
#pragma warning restore 0169

		// Metadata.xml XPath method reference: path="/api/package[@name='com.uhf.api.cls']/class[@name='R2000DataCmdReturn']/method[@name='SData' and count(parameter)=0]"
		[Register ("SData", "()B", "GetSDataHandler")]
		public virtual unsafe sbyte SData ()
		{
			const string __id = "SData.()B";
			try {
				var __rm = _members.InstanceMethods.InvokeVirtualSByteMethod (__id, this, null);
				return __rm;
			} finally {
			}
		}

		static Delegate cb_Status;
#pragma warning disable 0169
		static Delegate GetStatusHandler ()
		{
			if (cb_Status == null)
				cb_Status = JNINativeWrapper.CreateDelegate ((_JniMarshal_PP_L) n_Status);
			return cb_Status;
		}

		static IntPtr n_Status (IntPtr jnienv, IntPtr native__this)
		{
			var __this = global::Java.Lang.Object.GetObject<global::Com.Uhf.Api.Cls.R2000DataCmdReturn> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
			return JNIEnv.ToLocalJniHandle (__this.Status ());
		}
#pragma warning restore 0169

		// Metadata.xml XPath method reference: path="/api/package[@name='com.uhf.api.cls']/class[@name='R2000DataCmdReturn']/method[@name='Status' and count(parameter)=0]"
		[Register ("Status", "()Lcom/uhf/api/cls/R2000Command$R2000CmdSatus;", "GetStatusHandler")]
		public virtual unsafe global::Com.Uhf.Api.Cls.R2000Command.R2000CmdSatus Status ()
		{
			const string __id = "Status.()Lcom/uhf/api/cls/R2000Command$R2000CmdSatus;";
			try {
				var __rm = _members.InstanceMethods.InvokeVirtualObjectMethod (__id, this, null);
				return global::Java.Lang.Object.GetObject<global::Com.Uhf.Api.Cls.R2000Command.R2000CmdSatus> (__rm.Handle, JniHandleOwnership.TransferLocalRef);
			} finally {
			}
		}

	}
}
