


//=============================================================================
//  DECODE PERIOD - used in RomanBlack's DTMF triplet decoder algorithm
//=============================================================================
void decode_period(void)
{
  //-------------------------------------------------------
  // this is called once for each captured period, it checks that
  // period to see if matches one of the 24 periods in our DTMF signatures.
  // if so, it checks that period and the 2 periods before it to
  // see if they match a triplet and then allocate points.
  // This code could be made very fast by sorting the period
  // tests into a few groups by numerical order and jumping to
  // the right group. Or maybe use a jump table of some type.
  // (for now it just does 24 sequential period tests)
  // There are lots of very obvious ways the code below can be
  // tidied up and optimised for speed and/or ROM size!!
  //-------------------------------------------------------
  
  // Tone 0 66 98  LLS LSL SLL
  if(per >= 66-1 && per <= 66+1)  // ends S 
  {
    if(per2 >= 98-1 && per2 <= 98+1 && per1 >= 98-1 && per1 <= 98+1) Dtone[0]+=9; // LLS
  }
  if(per >= 98-1 && per <= 98+1)  // ends L 
  {
    if(per2 >= 66-1 && per2 <= 66+1 && per1 >= 98-1 && per1 <= 98+1) Dtone[0]+=9; // SLL
    if(per2 >= 98-1 && per2 <= 98+1 && per1 >= 66-1 && per1 <= 66+1) Dtone[0]+=9; // LSL
  }
  
  //-------------------------------------------------------
  // Tone 1 63 94  SLS LSL 
  if(per >= 63-1 && per <= 63+1)  // ends S 
  {
    if(per2 >= 63-1 && per2 <= 63+1 && per1 >= 94-1 && per1 <= 94+1) Dtone[1]+=14; // SLS
  }
  if(per >= 94-1 && per <= 94+1)  // ends L 
  {
    if(per2 >= 94-1 && per2 <= 94+1 && per1 >= 63-1 && per1 <= 63+1) Dtone[1]+=6; // LSL
  }
  
  //-------------------------------------------------------
  // Tone 2 61 90  SSL SLS LSS 
  if(per >= 61-1 && per <= 61+1)  // ends S 
  {
    if(per2 >= 61-1 && per2 <= 61+1 && per1 >= 90-1 && per1 <= 90+1) Dtone[2]+=3; // SLS
    if(per2 >= 90-1 && per2 <= 90+1 && per1 >= 61-1 && per1 <= 61+1) Dtone[2]+=12; // LSS
  }
  if(per >= 90-1 && per <= 90+1)  // ends L 
  {
    if(per2 >= 61-1 && per2 <= 61+1 && per1 >= 61-1 && per1 <= 61+1) Dtone[2]+=12; // SSL
  }
  
  //-------------------------------------------------------
  // Tone 3 58 86  SSL LSS 
  if(per >= 58-1 && per <= 58+1)  // ends S 
  {
    if(per2 >= 86-1 && per2 <= 86+1 && per1 >= 58-1 && per1 <= 58+1) Dtone[3]+=10; // LSS
  }
  if(per >= 86-1 && per <= 86+1)  // ends L 
  {
    if(per2 >= 58-1 && per2 <= 58+1 && per1 >= 58-1 && per1 <= 58+1) Dtone[3]+=10; // SSL
  }
  
  //-------------------------------------------------------
  // Tone 4 62 92  SSS SLL LLS 
  if(per >= 62-1 && per <= 62+1)  // ends S 
  {
    if(per2 >= 62-1 && per2 <= 62+1 && per1 >= 62-1 && per1 <= 62+1) Dtone[0]+=2; // SSS
    if(per2 >= 92-1 && per2 <= 92+1 && per1 >= 92-1 && per1 <= 92+1) Dtone[4]+=28; // LLS
  }
  if(per >= 92-1 && per <= 92+1)  // ends L 
  {
    if(per2 >= 62-1 && per2 <= 62+1 && per1 >= 92-1 && per1 <= 92+1) Dtone[4]+=28; // SLL
  }
  
  //-------------------------------------------------------
  // Tone 5 60 89  SLL LLS 
  if(per >= 60-1 && per <= 60+1)  // ends S 
  {
    if(per2 >= 89-1 && per2 <= 89+1 && per1 >= 89-1 && per1 <= 89+1) Dtone[5]+=10; // LLS
  }
  if(per >= 89-1 && per <= 89+1)  // ends L 
  {
    if(per2 >= 60-1 && per2 <= 60+1 && per1 >= 89-1 && per1 <= 89+1) Dtone[5]+=10; // SLL
  }
  
  //-------------------------------------------------------
  // Tone 6 58 85  SLL LLS LSL
  if(per >= 58-1 && per <= 58+1)  // ends S 
  {
    if(per2 >= 85-1 && per2 <= 85+1 && per1 >= 85-1 && per1 <= 85+1) Dtone[6]+=10; // LLS
  }
  if(per >= 85-1 && per <= 85+1)  // ends L 
  {
    if(per2 >= 58-1 && per2 <= 58+1 && per1 >= 85-1 && per1 <= 85+1) Dtone[6]+=10; // SLL
    if(per2 >= 85-1 && per2 <= 85+1 && per1 >= 58-1 && per1 <= 58+1) Dtone[6]+=6; // LSL
  }
  
  //-------------------------------------------------------
  // Tone 7 55 82  SLS SSL LSS 
  if(per >= 55-1 && per <= 55+1)  // ends S 
  {
    if(per2 >= 55-1 && per2 <= 55+1 && per1 >= 82-1 && per1 <= 82+1) Dtone[7]+=6; // SLS
    if(per2 >= 82-1 && per2 <= 82+1 && per1 >= 55-1 && per1 <= 55+1) Dtone[7]+=8; // LSS
  }
  if(per >= 82-1 && per <= 82+1)  // ends L 
  {
    if(per2 >= 55-1 && per2 <= 55+1 && per1 >= 55-1 && per1 <= 55+1) Dtone[7]+=8; // SSL
  }
  
  //-------------------------------------------------------
  // Tone 8 86 114  SLS SSL LSS 
  if(per >= 86-1 && per <= 86+1)  // ends S 
  {
    if(per2 >= 86-1 && per2 <= 86+1 && per1 >= 114-1 && per1 <= 114+1) Dtone[8]+=15; // SLS
    if(per2 >= 114-1 && per2 <= 114+1 && per1 >= 86-1 && per1 <= 86+1) Dtone[8]+=15; // LSS
  }
  if(per >= 114-1 && per <= 114+1)  // ends L 
  {
    if(per2 >= 86-1 && per2 <= 86+1 && per1 >= 86-1 && per1 <= 86+1) Dtone[8]+=15; // SSL
  }

  //-------------------------------------------------------
  // Tone 9 57 83  SLL LLS LSL
  if(per >= 57-1 && per <= 57+1)  // ends S 
  {
    if(per2 >= 83-1 && per2 <= 83+1 && per1 >= 83-1 && per1 <= 83+1) Dtone[9]+=18; // LLS
  }
  if(per >= 83-1 && per <= 83+1)  // ends L 
  {
    if(per2 >= 57-1 && per2 <= 57+1 && per1 >= 83-1 && per1 <= 83+1) Dtone[9]+=18; // SLL
    if(per2 >= 83-1 && per2 <= 83+1 && per1 >= 57-1 && per1 <= 57+1) Dtone[9]+=18; // LSL
  }
  
  //-------------------------------------------------------
  // Tone 10 54 80  LLS
  if(per >= 54-1 && per <= 54+1)  // ends S 
  {
    if(per2 >= 80-1 && per2 <= 80+1 && per1 >= 80-1 && per1 <= 80+1) Dtone[10]+=17; // LLS
  }
  
  //-------------------------------------------------------
  // Tone 11 52 77  SLS SLL LLS
  if(per >= 52-1 && per <= 52+1)  // ends S 
  {
    if(per2 >= 52-1 && per2 <= 52+1 && per1 >= 77-1 && per1 <= 77+1) Dtone[11]+=8; // SLS
    if(per2 >= 77-1 && per2 <= 77+1 && per1 >= 77-1 && per1 <= 77+1) Dtone[11]+=8; // LLS
  }
  if(per >= 77-1 && per <= 77+1)  // ends L 
  {
    if(per2 >= 52-1 && per2 <= 52+1 && per1 >= 77-1 && per1 <= 77+1) Dtone[11]+=8; // SLL
  }
}
//-----------------------------------------------------------------------------


