⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fntelgen.c

📁 一个完整的用用AVR单片机开发的电话交换机程序 希望对想学习AVR开发人有帮助
💻 C
📖 第 1 页 / 共 2 页
字号:
		Writesoundway(4,mExtenNm,ON);
		return (4);
	  }

   if(bit_is_clear(OutsideBusy_Free,5))     //查找空闲外线
      {	 
		SetBit(OutsideBusy_Free,5);               //外线被占
		Writesoundway(5,mExtenNm,ON);
		return (5);
	  }

  return 0;
}


unsigned char fnLinkDTMF_Ext(unsigned char mY)    //mExtenNm 0-5  return: return: 0:Unsuccess  1= DTMF 1 2= DTMF 2
{

   if(bit_is_clear(DTMFBusy_Free,0))
   {
      SetBit(DTMFBusy_Free,0);               //DTMF解码被占
	  Writesoundway(mY,cX_DTMF1,ON);
      return (1);
   }

   if(bit_is_clear(DTMFBusy_Free,1))
   {
      SetBit(DTMFBusy_Free,1);               //DTMF解码被占
	  Writesoundway(mY,cX_DTMF2,ON);
      return (2);
   }
 return 0;
}

unsigned char fnFindRingOutLine(void)
{
 if (Out1_FunPt==1)
  { 
    return cOut1Bit;
   }

 if (Out2_FunPt==1)
  { 
    return cOut2Bit;
   }

  return 0;
 
} 


/*
unsigned char fnFindRingOutLine(void)
{
 if (Out1_FunPt==1)
  { 
    fnStopOutRing(Out1_NumdialOut);
    return cOut1Bit;
   }

 if (Out2_FunPt==1)
  { 
    fnStopOutRing(Out2_NumdialOut);
    return cOut2Bit;
   }

  return 0;
 
} 
*/


unsigned char fnFindRingDoorPhone(void)
{
  return(NotHoldDoorphone());
}




unsigned char fnFindRingExtLine(unsigned char mExtNum)
{

  if(Ext1_FunPt==6)
  {
    fnStopExtRing(Ext1_NumdialOut);
	Ext1_NumdialOut=mExtNum+1;
    return (cExt1Num+1);
   }

  
  if(Ext2_FunPt==6)
  {
    fnStopExtRing(Ext2_NumdialOut);
	Ext2_NumdialOut=mExtNum+1;
    return (cExt2Num+1);
   }


  if(Ext3_FunPt==6)
  {
    fnStopExtRing(Ext3_NumdialOut);
	Ext3_NumdialOut=mExtNum+1;
    return (cExt3Num+1);
   }


  if(Ext4_FunPt==6)
  {
    fnStopExtRing(Ext4_NumdialOut);
	Ext4_NumdialOut=mExtNum+1;
    return (cExt4Num+1);
   }


  if(Ext5_FunPt==6)
  {
    fnStopExtRing(Ext5_NumdialOut);
	Ext5_NumdialOut=mExtNum+1;
    return (cExt5Num+1);
   }


  if(Ext6_FunPt==6)
  {
    fnStopExtRing(Ext6_NumdialOut);
	Ext6_NumdialOut=mExtNum+1;
    return (cExt6Num+1);
   }

  return 0;
}



unsigned char fnFindRingExtY4Y5(void)
{

  if(Ext1_FunPt==6)
  {
    return (Ext1_LineY4Y5Num);
   }

  
  if(Ext2_FunPt==6)
  {
    return (Ext2_LineY4Y5Num);
   }


  if(Ext3_FunPt==6)
  {
    return (Ext3_LineY4Y5Num);
   }


  if(Ext4_FunPt==6)
  {
    return (Ext4_LineY4Y5Num);
   }


  if(Ext5_FunPt==6)
  {
    return (Ext5_LineY4Y5Num);
   }


  if(Ext6_FunPt==6)
  {
    return (Ext6_LineY4Y5Num);
   }

  return 0;
}


unsigned char fnExt_DTMFIN1(unsigned char mDTMF_Num, unsigned char mY4Y5Num,unsigned char mExtNum ,unsigned char mExtdialOutNum )
{
	tFSKPhoneNumber[10]=0x31+mExtNum;
	switch (mDTMF_Num)
	{
		case 1:
			if (Ext1_FunPt){ return 0; }		
	  		Ext1_FunPt=12;                             //对方响铃
  			SetBit(ExtTelRingState,cExt1Num);
			
  			Ext1_LineY4Y5Num=mY4Y5Num;
  			Ext1_FlashNumdialOut=mExtNum+1;	       	                                         
  			Ext1_MusicNumdialIn=mExtdialOutNum;
			return 1;
		case 2:
			if (Ext2_FunPt){ return 0; }
			Ext2_FunPt=12;                             //对方响铃
			SetBit(ExtTelRingState,cExt2Num);
			
			Ext2_LineY4Y5Num=mY4Y5Num;
			Ext2_FlashNumdialOut=mExtNum+1;	       	                                         
			Ext2_MusicNumdialIn=mExtdialOutNum;		                   			 		         
			return 1;
		case 3:
			if (Ext3_FunPt){ return 0; }	
			Ext3_FunPt=12;                             //对方响铃
			SetBit(ExtTelRingState,cExt3Num);
			
			Ext3_LineY4Y5Num=mY4Y5Num; 
			Ext3_FlashNumdialOut=mExtNum+1;	       	                                         
			Ext3_MusicNumdialIn=mExtdialOutNum;                       			           
			return 1;
		case 4:
			if (Ext4_FunPt){ return 0; }
			Ext4_FunPt=12;                             //对方响铃
			SetBit(ExtTelRingState,cExt4Num);
			
			Ext4_LineY4Y5Num=mY4Y5Num;
			Ext4_FlashNumdialOut=mExtNum+1;	       	                                         
			Ext4_MusicNumdialIn=mExtdialOutNum;                             			 
			return 1;
		case 5:
			if (Ext5_FunPt){ return 0;  }	
			Ext5_FunPt=12;                             //对方响铃
			SetBit(ExtTelRingState,cExt5Num);
			
			Ext5_LineY4Y5Num=mY4Y5Num;
			Ext5_FlashNumdialOut=mExtNum+1;	       	                                         
			Ext5_MusicNumdialIn=mExtdialOutNum;	                             			 
			return 1;
		case 6:
			if (Ext6_FunPt){ return 0; }
			Ext6_FunPt=12;                             //对方响铃
			SetBit(ExtTelRingState,cExt6Num);
			
			Ext6_LineY4Y5Num=mY4Y5Num;
			Ext6_FlashNumdialOut=mExtNum+1;	       	                                         
			Ext6_MusicNumdialIn=mExtdialOutNum;			                             			 
			return 1;
		default:
			 return 0; 
	 }
}



unsigned char fnExt_DTMFIN2(unsigned char mDTMF_Num, unsigned char mExtNum ,unsigned char mY4Y5Num)
{
	tFSKPhoneNumber[10]=0x31+mExtNum;
	switch (mDTMF_Num)
	{
		case 1:
			if (Ext1_FunPt) return 0;			
			Ext1_FunPt=9;                             //对方响铃
			SetBit(ExtTelRingState,cExt1Num); 

			Ext1_NumdialIn=mExtNum+1;
			Ext1_LineY4Y5Num=mY4Y5Num;			                             
			return 1;	
		case 2:
			if (Ext2_FunPt) return 0;
			Ext2_FunPt=9;                             //对方响铃
			SetBit(ExtTelRingState,cExt2Num);
			
			Ext2_NumdialIn=mExtNum+1;
			Ext2_LineY4Y5Num=mY4Y5Num;			                             			 		         
			return 1;
		case 3:
			if (Ext3_FunPt) return 0;		
			Ext3_FunPt=9;                             //对方响铃
			SetBit(ExtTelRingState,cExt3Num);
			
			Ext3_NumdialIn=mExtNum+1;
			Ext3_LineY4Y5Num=mY4Y5Num;			                             			           
			return 1;
		case 4:
			if (Ext4_FunPt) return 0;		
			Ext4_FunPt=9;                             //对方响铃
			SetBit(ExtTelRingState,cExt4Num);
			
			Ext4_NumdialIn=mExtNum+1;
			Ext4_LineY4Y5Num=mY4Y5Num;			                             			 
			return 1;
		case 5:
			if (Ext5_FunPt) return 0;		
			Ext5_FunPt=9;                             //对方响铃
			SetBit(ExtTelRingState,cExt5Num);
			
			Ext5_NumdialIn=mExtNum+1;
			Ext5_LineY4Y5Num=mY4Y5Num;			                             			 
			return 1;
		case 6:
			if (Ext6_FunPt) return 0;		
			Ext6_FunPt=9;                             //对方响铃
			SetBit(ExtTelRingState,cExt6Num);
			
			Ext6_NumdialIn=mExtNum+1;
			Ext6_LineY4Y5Num=mY4Y5Num;			                             			 
			return 1;
		default:
			return 0;
	}
}


void fnStopAllExtRingFor_OutLine(void)				// 停止 内机响铃
{
	if (Out1_FunPt==1)  return;  // Line In 1 be Ringing, keep ext ring
	if (Out2_FunPt==1)  return;  // Line In 2 be Ringing, keep ext ring
   	if (Doorphone_FunPt==1) {return;}

	if (Ext1_FunPt==20)
	{
       Ext1_FunPt=0;
       Writesoundway(SigCallID,cX_Ex1,OFF);      //连接响铃
	   ClrBit(ExtTelRingState,cExt1Num); 
	}

	if (Ext2_FunPt==20)
	{
       Ext2_FunPt=0;
       Writesoundway(SigCallID,cX_Ex2,OFF);      //连接响铃
	   ClrBit(ExtTelRingState,cExt2Num); 
	}

	if (Ext3_FunPt==20)
	{
       Ext3_FunPt=0;
       Writesoundway(SigCallID,cX_Ex3,OFF);      //连接响铃
	   ClrBit(ExtTelRingState,cExt3Num); 
 	 }

	if (Ext4_FunPt==20)
	{
       Ext4_FunPt=0;
       Writesoundway(SigCallID,cX_Ex4,OFF);      //连接响铃
	   ClrBit(ExtTelRingState,cExt4Num); 
	}

	if (Ext5_FunPt==20)
	{
       Ext5_FunPt=0;
       Writesoundway(SigCallID,cX_Ex5,OFF);      //连接响铃
	   ClrBit(ExtTelRingState,cExt5Num); 
 	}
 
	if (Ext6_FunPt==20)
	{
       Ext6_FunPt=0;
       Writesoundway(SigCallID,cX_Ex6,OFF);      //连接响铃
	   ClrBit(ExtTelRingState,cExt6Num); 
	}
}


unsigned char fnFind_4FreeExt(unsigned char mOutNum)
{
   unsigned char i;
	i=0;
 	if (Doorphone_FunPt==1) {return 5;}
	if (Out1_FunPt==1)  {return 5;}
	if (Out2_FunPt==1)  {return 5;}

	mLineInFirstRing =  mOutNum;  // 1 = Line In 1 2=Line In 2	

   if(!Ext1_FunPt)
    {		
        Ext1_FunPt=20;
        Ext1_dialtime=0;
		SetBit(ExtTelRingState,cExt1Num); 
		i++;
	 }

    if(!Ext2_FunPt)
	{		
        Ext2_FunPt=20;
		Ext2_dialtime=0;
		SetBit(ExtTelRingState,cExt2Num); 
		i++;
	 }
       
	if(!Ext3_FunPt)
	{
        Ext3_FunPt=20;
		Ext3_dialtime=0;
		SetBit(ExtTelRingState,cExt3Num); 
		i++;
	 }
       
    if(!Ext4_FunPt)
	{
        Ext4_FunPt=20;
		Ext4_dialtime=0;
		SetBit(ExtTelRingState,cExt4Num); 
		i++;
	  }
	
	if (i>=4)	return i;
	
	if(!Ext5_FunPt)
	 {
        Ext5_FunPt=20;
		Ext5_dialtime=0;
		SetBit(ExtTelRingState,cExt5Num); 
		i++;
	  }
	if (i>=4)	return i;

    if(!Ext6_FunPt)
	 {
        Ext6_FunPt=20;
		Ext6_dialtime=0;
	    SetBit(ExtTelRingState,cExt6Num); 
		i++;
	  }
	 
	 return i;
}


unsigned char fnFindWhichLineInRingFirst(void)
{
   
   if (mLineInFirstRing==1)		// 第一路先打进
   {	
   	 if (Doorphone_FunPt==1) {return 3;}
   	 if (Out1_FunPt==1) { return 1;}
	 if (Out2_FunPt==1) { return 2;}
	  return  0;
	}else
	  {
   	 	if (Doorphone_FunPt==1) {return 3;}   		
		if (Out2_FunPt==1) { return 2;}
   		if (Out1_FunPt==1) { return 1;}
		return  0;
	  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -