using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using FObjBase;
using FLY.Thick.Base.Common;

namespace FLY.Thick.Base.OBJ_INTERFACE
{
    public class GETSAMPLE_OBJ_INTERFACE
    {
        #region Pack
        public class Pack_Params_SampleCell
        {
            public bool enable;
            public bool justForCheck;
            public int orgad;
            public int position;

        }
        public class Pack_Params_SampleFeature
        {
            public bool enable;
            public int startpos;
            public int endpos;
        }
        public class Pack_Params
        {
            public bool enable;
            public UInt32 velocity;
            public int range;
            public int window;
            public bool IsCheckByPercent;
            public double ErrPercent;
            public int ErrValue;
            public IEnumerable<Pack_Params_SampleCell> samples;
            public int search;
            public IEnumerable<Pack_Params_SampleFeature> features;
        }
        public class Pack_State_SampleCell
        {
            public int ad;
            public int value;
        }
        public class Pack_State_SampleFeature
        {
            public double maxRelevancy;
            public int maxOffset;
            public int[] scanData;
        }
        public class Pack_State 
        {
            public int posOfGrid;
            public IEnumerable<Pack_State_SampleCell> samples;
            public IEnumerable<Pack_State_SampleFeature> features;
        }
        #endregion

        #region GetValue
        /// <summary>
        /// Pack_Params
        /// </summary>
        public const UInt16 GET_PARAMS = 0;
        public const UInt16 GET_STATE = 1;
        #endregion
        #region SetValue
        /// <summary>
        /// Pack_Params
        /// </summary>
        public const UInt16 SET_PARAMS = 0;
        #endregion
        #region PushMsg
        /// <summary>
        /// Pack_Params
        /// </summary>
        public const UInt16 PUSH_PARAMS = 0;
        public const UInt16 PUSH_STATE = 1;
        #endregion

        #region CallFunction
        /// <summary>
        /// request:null
        /// reponse:List(List(TempFilterData))
        /// </summary>
        public const UInt16 CALL_GET_TEMPDATAS = 0;
        #endregion
    }
}
