####################################### recent_avglibyy.py #################################

# Library of routines that finds the average of the most recent data samples
# It is set up to handle multiple channels.   (Multiple y)

# Format of multiple_lists
#
# Its an array of data structures
#
# Each data structure has (1) An array of data values and (2) a pointer
#


def setup_lists(data_length,starting_values):
  global multiple_lists
  number_of_lists=len(starting_values)
  multiple_lists=[]
  for i in range(0,number_of_lists):
    pointer=0
    starting_value=starting_values[i]
    data_list = [starting_value for x in range(data_length)]
    multiple_lists=multiple_lists+[[data_list,pointer]]
  return
  
def update_list(data_structure,new_data):
  #print "Entering update_list... data_structure=",data_structure
  data_list=data_structure[0]
  pointer=data_structure[1]
  pointer=pointer+1
  if pointer==len(data_list):
    pointer=0
  data_list[pointer]=new_data
  return [data_list,pointer]
  
def update_multiple_lists(new_data):
  for i in range(0,len(new_data)):
    multiple_lists[i]=update_list(multiple_lists[i],new_data[i])
    
def find_multiple_averages():    
  #print "Entering find_multiple_averages..."
  #print "multiple_lists=",multiple_lists
  averages=[]
  for i in range(0,len(multiple_lists)):
    data_structure=multiple_lists[i]
    list_for_averaging = data_structure[0]
    #print "list_for_averaging =",list_for_averaging
    average=sum(list_for_averaging)/float(len(list_for_averaging))
    averages = averages + [average]
  return averages  
