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

📄 extsystem.c

📁 使用51单片机开发的一个集团电话系统
💻 C
📖 第 1 页 / 共 5 页
字号:
			}
			else
			{
				flag = FLAUSE;
				goto exit;
			}
			switch( Function )//功能号码选择
			{
				case Fun_End://*#0*password(3)
					switch(Num)
					{
						case 0:
							list = Ext_Timer[Ext_No].Counter_Rec_DTMF;
							if(list >= (Fun_Len+EXT_Len) )
							{
								if(Password1 = Ext_Param[Ext_No].Ext_RecDtmf_List[4])
								{
									if(Password2 = Ext_Param[Ext_No].Ext_RecDtmf_List[5])
									{
										if(Password3 = Ext_Param[Ext_No].Ext_RecDtmf_List[6])
										{
											if((System_Modify == Ext_No)||(System_Modify >= MAX_Ext))
											{
												System_Modify = Ext_No;
												Phone_SetOk(Ext_No, 1, state31_TestDailSingal);
												break;
											}
											else
												System_Modify = 0xff;
										}
									}
								}
								flag = FLAUSE;
							}
							break;
						case 1://*#1*password(3)
							if(System_Modify!=Ext_No)
							{
								flag = FLAUSE;
								goto exit;
							}
							list = Ext_Timer[Ext_No].Counter_Rec_DTMF;
							if(list >= (Fun_Len+EXT_Len) )
							{
								Password1 = Ext_Param[Ext_No].Ext_RecDtmf_List[4];
								Password2 = Ext_Param[Ext_No].Ext_RecDtmf_List[5];
								Password3 = Ext_Param[Ext_No].Ext_RecDtmf_List[6];
								Phone_SetOk(Ext_No, 1, state31_TestDailSingal);
							}
							break;
						case 9://*#9*
							System_Modify = 0xff;
							break;
						default:
							flag = FLAUSE;
							break;
					}
					break;
				case 0:
					switch(Num)//功能编号选择
					{//*01*
						case 1:
							Phone_SetOk(Ext_No, 1, state31_TestDailSingal);
							break;
						case 2:
							Phone_SetOk(Ext_No, 2, state32_TestBusySingal);
							break;
						case 3:
							Phone_SetOk(Ext_No, 3, state33_TestFreeSingal);
							break;
						case 4:
							Phone_SetOk(Ext_No, 4, state34_TestHarrySingal);
							break;
						case 5:
							Phone_SetOk(Ext_No, 5, state35_TestRing);
							break;
						case 6:
							Phone_SetOk(Ext_No, 6, state36_TestResSingal);
							break;
						default:
							flag = FLAUSE;
							break;
					}
					break;
				case 1://*11*
					if(System_Modify!=Ext_No)
					{
						flag = FLAUSE;
						goto exit;
					}
					SetParamCounter = 1;
					list = Ext_Timer[Ext_No].Counter_Rec_DTMF;
					if(list<5)
						break;
					switch(Num)
					{
						case 0://*10*0=phone system *10*1=CCP system 
							if(list >Fun_Len)
							{
								if(Ext_Param[Ext_No].Ext_RecDtmf_List[4]==0)
								{
									FlagSystemType = 0;
								}
								else if(Ext_Param[Ext_No].Ext_RecDtmf_List[4]==1)
								{
									FlagSystemType = 1;
								}
								else
								{
									flag = FLAUSE;
									break;
								}
								BaseDataComm(RepSystemType, 0);
								Phone_SetOk(Ext_No, 1, state31_TestDailSingal);
							}
							break;
						case 1:
							member = Ext_Param[Ext_No].Ext_RecDtmf_List[4];
							if(member>0&&member<10)
							{
								if(EXT_Head == member)
								{
									flag = FLAUSE;
									goto exit;
								}
								member <<=4;
								if(First_Meet_Head == member)
								{
									flag = FLAUSE;
									goto exit;
								}
								else if(First_Troop_Head == member)
								{
									flag = FLAUSE;
									goto exit;
								}
								if((FlagHeartSkip==4)||(FlagHeartSkip==9))
								{
									BaseDataComm(RepSetHead1, 0);
								}								
								EXT_Head = Ext_Param[Ext_No].Ext_RecDtmf_List[4];
								Phone_SetOk(Ext_No, 1, state31_TestDailSingal);
							}
							else
							{
								flag = FLAUSE;
							}
							break;
						case 2:
							member = Ext_Param[Ext_No].Ext_RecDtmf_List[4];
							if(member>0&&member<10)
							{
								if(EXT_Head == member)
								{
									flag = FLAUSE;
									goto exit;
								}
								member <<=4;
								if(First_Meet_Head == member)
								{
									flag = FLAUSE;
									goto exit;
								}
								else if(First_Troop_Head == member)
								{
									flag = FLAUSE;
									goto exit;
								}
								if((FlagHeartSkip==4)||(FlagHeartSkip==9))
								{
									BaseDataComm(RepSetHead2, 0);
								}
								First_Meet_Head = member;
								for(i=0;i<TAL_MeetGroup;i++)
								{
									Meet_Group[i].MeetHead = First_Meet_Head+i;
								}
								Phone_SetOk(Ext_No, 1, state31_TestDailSingal);
							}
							else
							{
								flag = FLAUSE;
							}
							break;
						case 3:
							member = Ext_Param[Ext_No].Ext_RecDtmf_List[4];
							if(member>0&&member<10)
							{
								if(EXT_Head == member)
								{
									flag = FLAUSE;
									goto exit;
								}
								member <<=4;
								if(First_Meet_Head == member)
								{
									flag = FLAUSE;
									goto exit;
								}
								else if(First_Troop_Head == member)
								{
									flag = FLAUSE;
									goto exit;
								}
								if((FlagHeartSkip==4)||(FlagHeartSkip==9))
								{
									BaseDataComm(RepSetHead3, 0);
								}
								First_Troop_Head = member;
								for(i=0;i<TAL_TroopGroup;i++)
								{
									Troop_Param[i].TroopHead = First_Troop_Head+i;
								}
								Phone_SetOk(Ext_No, 1, state31_TestDailSingal);
							}
							else
							{
								flag = FLAUSE;
							}
							break;
						default:
							flag = FLAUSE;
							break;
					}
					break;
				case 2://查询用户状态
					if(System_Modify!=Ext_No)
					{
						flag = FLAUSE;
						goto exit;
					}
					SetParamCounter = 1;
					list = Ext_Timer[Ext_No].Counter_Rec_DTMF;
					switch(Num)
					{
						case 0://*20*600
							if(list >= (Fun_Len+EXT_Len) )
							{
								Ext_Param[Ext_No].Ext_RecDtmf_List[0] = Ext_Param[Ext_No].Ext_RecDtmf_List[4];
								Ext_Param[Ext_No].Ext_RecDtmf_List[1] = Ext_Param[Ext_No].Ext_RecDtmf_List[5];
								Ext_Param[Ext_No].Ext_RecDtmf_List[2] = Ext_Param[Ext_No].Ext_RecDtmf_List[6];
								Ext_Param[Ext_No].Ext_RecDtmf_List[3] = Ext_Param[Ext_No].Ext_RecDtmf_List[7];
								SExt_No = Scan_EXT_LogicList(Ext_No);
								if(SExt_No>TAL_EXT_PORT)
								{
									flag = FLAUSE;
									goto exit;
								}
								BaseDataComm(RepState, SExt_No);								
								Phone_SetOk(Ext_No, 1, state34_TestHarrySingal);
							}
							break;
						case 1://*20*1  heartskip type
							if(list >Fun_Len)
							{
								if(Ext_Param[Ext_No].Ext_RecDtmf_List[4]<=9)
								{
									FlagHeartSkip = Ext_Param[Ext_No].Ext_RecDtmf_List[4];
									Phone_SetOk(Ext_No, 1, state31_TestDailSingal);
								}
								else
								{
									Phone_SetOk(Ext_No, 1, state34_TestHarrySingal);
								}
							}
							break;
						case 2://*20*1	meet array
							if(list >Fun_Len)
							{
								group = Ext_Param[Ext_No].Ext_RecDtmf_List[4];
								if(group<7)
								{
									BaseDataComm(RepMeet, group);
									Phone_SetOk(Ext_No, 1, state31_TestDailSingal);
								}
								else
								{
									flag = FLAUSE;
								}
							}
							break;
						case 3:
							if(list >Fun_Len)
							{
								group = Ext_Param[Ext_No].Ext_RecDtmf_List[4];
								if(group<7)
								{
									BaseDataComm(RepTroop, group);
									Phone_SetOk(Ext_No, 1, state31_TestDailSingal);
								}
								else
								{
									flag = FLAUSE;
								}
							}
							break;
						case 4:
							if(list >=Fun_Len)
							{
								BaseDataComm(RepSystem, 0);
								Phone_SetOk(Ext_No, 1, state31_TestDailSingal);
							}
							break;
						case 9://*29*NoFreeCounter  NoFreeFlag 0
							if(list >= (Fun_Len+EXT_Len) )
							{
								NoFreeCounter = Ext_Param[Ext_No].Ext_RecDtmf_List[4];
								NoFreeFlag = Ext_Param[Ext_No].Ext_RecDtmf_List[5]*10;
								NoFreeFlag += Ext_Param[Ext_No].Ext_RecDtmf_List[6];
								Phone_SetOk(Ext_No, 1, state31_TestDailSingal);
							}
							break;
						default:
							flag = FLAUSE;
							break;
					}
					break;
				case 3://未启用参数
					flag = FLAUSE;
					break;
				case 4://未启用参数
					flag = FLAUSE;
					break;
				case 5://未启用参数
					flag = FLAUSE;
					break;
				case 6:
					if(System_Modify!=Ext_No)
					{
						flag = FLAUSE;
						goto exit;
					}
					SetParamCounter = 1;
					list = Ext_Timer[Ext_No].Counter_Rec_DTMF;
					switch(Num)
					{
						case 1://设置会议成员
							if(list >= (Fun_Len+EXT_Len+1) )
							{
								group = Ext_Param[Ext_No].Ext_RecDtmf_List[Fun_Len+EXT_Len];
								Ext_Param[Ext_No].Ext_RecDtmf_List[0] = Ext_Param[Ext_No].Ext_RecDtmf_List[4];
								Ext_Param[Ext_No].Ext_RecDtmf_List[1] = Ext_Param[Ext_No].Ext_RecDtmf_List[5];
								Ext_Param[Ext_No].Ext_RecDtmf_List[2] = Ext_Param[Ext_No].Ext_RecDtmf_List[6];
								Ext_Param[Ext_No].Ext_RecDtmf_List[3] = Ext_Param[Ext_No].Ext_RecDtmf_List[7];
								SExt_No = Scan_EXT_LogicList(Ext_No);
								if((SExt_No>TAL_EXT_PORT)||(group>6))
								{
									flag = FLAUSE;
									goto exit;
								}
								member = Meet_Group[group].Num_Member;
								list = 0;
								for(i=0;i<member;i++)
								{
									if(Meet_Group[group].Meet_Member[i]==SExt_No)
										list = 1;
								}
								if(list!=1)
								{
									Meet_Group[group].Meet_Member[member] = SExt_No;
									Meet_Group[group].Num_Member++;
									Phone_SetOk(Ext_No, 1, state31_TestDailSingal);
								}
								else
								{
									Phone_SetOk(Ext_No, 1, state34_TestHarrySingal);
								}
							}
							break;
						case 2://取消会议成员
							if(list >= (Fun_Len+EXT_Len+1) )
							{
								group = Ext_Param[Ext_No].Ext_RecDtmf_List[Fun_Len+EXT_Len];
								Ext_Param[Ext_No].Ext_RecDtmf_List[0] = Ext_Param[Ext_No].Ext_RecDtmf_List[4];
								Ext_Param[Ext_No].Ext_RecDtmf_List[1] = Ext_Param[Ext_No].Ext_RecDtmf_List[5];
								Ext_Param[Ext_No].Ext_RecDtmf_List[2] = Ext_Param[Ext_No].Ext_RecDtmf_List[6];
								Ext_Param[Ext_No].Ext_RecDtmf_List[3] = Ext_Param[Ext_No].Ext_RecDtmf_List[7];
								SExt_No = Scan_EXT_LogicList(Ext_No);
								if((SExt_No>TAL_EXT_PORT)||(group>6))
								{
									flag = FLAUSE;
									goto exit;
								}
								member = Meet_Group[group].Num_Member;
								list = 0;
								for(i=0;i<member;i++)
								{
									if(Meet_Group[group].Meet_Member[i]==SExt_No)
									{
										list = 1;
										break;
									}
								}
								
								if(list==1)
								{
									member--;
									Meet_Group[group].Meet_Member[i] = Meet_Group[group].Meet_Member[member];
									Meet_Group[group].Meet_Member[member] = 0XFF;
									Meet_Group[

⌨️ 快捷键说明

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