#include "arr_tool.h"


//void arr_move_front(uint16_t arr[],uint32_t length)
//{
//  
//    uint16_t temp = arr[0],i;
//    for (i = 0; i < length; i++)
//    {
//            arr[i] = arr[i + 1];
//    }
//    arr[length-1]=temp;
//}

uint16_t find_max_val_position(uint16_t* max_val,uint16_t* arr,uint16_t len)
{
  uint16_t i;
  uint16_t max_p=0;
  *max_val = 0;
  for (i = 0 ; i<len ; i++)
  {
     if(arr[i] > *max_val)
     {
       *max_val = arr[i];
       max_p = i;     
     }
  }
  return max_p;
}

uint16_t find_echo_position(uint16_t max_val,uint16_t max_val_position,uint16_t* arr,uint16_t len)
{
  uint16_t i=0;
  uint32_t max_val_zero;
  max_val_zero = max_val - 2048 ;
  //uint16_t echo_position = 0;
  // 最大值的0.1倍
  uint16_t max_val_zero_0R1 = (max_val_zero*8/100)+2048;
  // 最大值的0.3倍
  uint16_t max_val_zero_0R3 = (max_val_zero*40/100)+2048;
  
  if(max_val_position>200)
  {
    i = max_val_position-200;
  }else
  {
    i = 0;
  }
  
  for(; i < max_val_position;i++)
  {
    // 判断是否是顶点
    //if( arr[i-2]<arr[i-1] && arr[i-1] <= arr[i] && arr[i]>=arr[i+1] && arr[i+1]>arr[i+2])
    // 
    if( arr[i-1] < arr[i] && arr[i]> arr[i+1])
    {
      // 减去偏置电压
      //temp_val_zero = arr[i]-2048;
      // 判断顶点是否在 10%-%30之间。
      if(arr[i] >= max_val_zero_0R1 && arr[i] <= max_val_zero_0R3 )
      {
        // 如果找到 函数推出
        return i;
      }
    }
  }
  // 如果没有找到 返回0;
  return 0;
}