From 0fe6b074f3f3994d87af195f37e349a83e27882c Mon Sep 17 00:00:00 2001
From: QuakeGod <QuakeGod@sina.com>
Date: 星期六, 10 十二月 2022 16:55:40 +0800
Subject: [PATCH] FP0 fix utf8 char

---
 Src/KBus.c |  479 +++++++++++++++++++++++++++++------------------------------
 1 files changed, 239 insertions(+), 240 deletions(-)

diff --git a/Src/KBus.c b/Src/KBus.c
index ab4b3ff..f51509d 100644
--- a/Src/KBus.c
+++ b/Src/KBus.c
@@ -9,7 +9,7 @@
 #include "string.h"
 #include "stm32f0xx.h"
 
-unsigned char bMaster=0,bSlave=0,bRepeater=0;;
+unsigned char bKBusMaster=0,bKBusSlave=0,bKBusRepeater=0;;
 
 unsigned char PacketBuf1[128];
 unsigned char PacketBuf2[128];
@@ -17,22 +17,22 @@
 unsigned char BufferIn[16]={0};
 unsigned char BufferOut[16]={0};
 
-stChnStat ChnStats[9];
-unsigned char nAddr=0;
+stChnStat KBusChnStats[8];
+unsigned char nStationID=0;
 unsigned char nChilds;
 int ChildStat[16];
 unsigned char nCurPollId=0;
 unsigned char nSeq=0;
 
-volatile unsigned char MasterRecved=1;
-volatile unsigned char MasterRecvOK=1;
+volatile unsigned char KBusMasterRecved=1;
+volatile unsigned char KBusMasterRecvOK=1;
 
-volatile unsigned char SlaveRecved=1;
-unsigned int SendTimeuS=0;
-volatile int RecvTimeuS=0;
+volatile unsigned char KBusSlaveRecved=1;
+unsigned int KBusSendTimeuS=0;
+volatile int KBusRecvTimeuS=0;
 
-int DelayuS=0;
-int MaxDelayuS=0;
+int KBusDelayuS=0;
+int KBusMaxDelayuS=0;
 int ThisuS;
 volatile unsigned int nSlaveTick=0;
 
@@ -47,7 +47,7 @@
 unsigned char Datas[128];		
 volatile int PacketLength = 0;
 
-unsigned char BCC(void * pData, int nSize)
+unsigned char KBusBCC(void * pData, int nSize)
 {
 	unsigned char k;
 	k=0;
@@ -58,137 +58,7 @@
 	return k;	
 }
 
-int RepeaterFunc(int nChn)
-{
-		KMem.WY[0]=KMem.WX[0];
-		if ((KMem.nRunCount &0x7f) == 88) 
-		{ 
-			nCount2++;	
-			ToggleRunLed();
-//		int len1=sprintf(str1,"%d %d Cfg %02X  Input %02X  \r\n",nCount,nCount2,EffJumperSW,MyKeyStat1);
-//		PutStr(str1,len1);
-		}				
-	return 0;
-}
-
-int MasterFunc(int nChn)
-{
-		uint32_t tick1=HAL_GetTick();
-		uint32_t thisuS=GetuS();
-	
-			int len1=0;
-
-			if ((MasterRecved && MasterRecvOK && thisuS-SendTimeuS>50) || thisuS-SendTimeuS>1500u)
-			{
-				if (!MasterRecvOK) 
-				{
-					TimeOutCount++;
-					Uart2Stat.TimeOutErr++; 
-					ChnStats[nCurPollId].LostPackets++;
-					ChnStats[nCurPollId].CtnLstPkts++;
-					if (!MasterRecved) {ChnStats[nCurPollId].TimeOutErr++;}
-					if (ChnStats[nCurPollId].CtnLstPkts>ChnStats[nCurPollId].MaxCtnLstPkts)
-					{ChnStats[nCurPollId].MaxCtnLstPkts=ChnStats[nCurPollId].CtnLstPkts;}
-					if (ChnStats[nCurPollId].CtnLstPkts>3)
-					{
-						ChnStats[nCurPollId].Stat=0;
-						KMem.ErrStat=200;
-						 
-						{BufferIn[nCurPollId]=0;}
-					}
-				//	LL_GPIO_SetOutputPin(GPIOA,LL_GPIO_PIN_7);
-				}else
-				{
-					ChnStats[nCurPollId].Stat=1;
-					
-					KMem.RunStat=100;
-				}
-				nCurPollId ++;
-				if (nCurPollId > nChilds)
-				{
-					CircleTime=thisuS-LastCircleStartTime;
-					LastCircleStartTime=thisuS;
-					nSeq++;
-					nCurPollId=1;
-				}
-#if (BOARD_TYPE == 12)
-				if (KMRunStat.WorkMode==0)
-				{
-				//	KMem.WX[0]= GetInput();
-				//	KMem.WY[1]=KMem.WX[0]&0xff;
-				//	KMem.WY[2]=(KMem.WX[0]>>8)&0xff;		
-				}
-			//	BufferOut[1]=KMem.WY[1];
-			//	BufferOut[2]=KMem.WY[2];		
-#else
-				if (KMRunStat.WorkMode==0)
-				{
-					KMem.WX[0]= GetInput();
-					KMem.WY[1]=KMem.WX[0]&0xff;
-					KMem.WY[2]=(KMem.WX[0]>>8)&0xff;		
-				}
-				BufferOut[1]=KMem.WY[1];
-				BufferOut[2]=KMem.WY[2];		
-#endif
-
-				Datas[0]=BufferOut[nCurPollId];
-				Datas[1]=BufferOut[nCurPollId+1];;
-				Datas[2]=ChnStats[nCurPollId].Stat;
-				Datas[3]=0;
-				Datas[4]=tick1&0xff;
-				Datas[5]=(tick1>>8)&0xff;
-				Datas[6]=(tick1>>16)&0xff;
-				Datas[7]=(tick1>>24)&0xff;
-				
-				SendTimeuS=thisuS;				
-				len1=MakePacket((pPacket)PacketBuf1,0,nCurPollId,cmdExChgData,nSeq,8,Datas);
-				SendPacket(nChn, (pPacket)PacketBuf1, len1);
-				ChnStats[nCurPollId].SendPackets++;
-				ChnStats[nCurPollId].SendTimeInterval=SendTimeuS-ChnStats[nCurPollId].LastSentTimeuS;
-				ChnStats[nCurPollId].LastSentTimeuS=SendTimeuS;
-				PacketLength = len1;
-				SendTime=tick1;
-
-				MasterRecved=0;
-				MasterRecvOK=0;
-			//	LL_GPIO_TogglePin(GPIOA,LL_GPIO_PIN_5);		
-				//ToggleErrLed();
-//				ToggleOut8();
-
-			}
-		
-			Clk3=SysTick->VAL;
-		//	LL_GPIO_TogglePin(GPIOA,LL_GPIO_PIN_4);
-	//	HAL_Delay(1);				
-	return 0;
-}
-
-int SlaveFunc(int nChn)
-{
-		int ThisuS=GetuS();
-		int thisRecvTime=RecvTimeuS;
-		if (SlaveRecved)
-		{
-			KMem.RunStat=8000;
-			SlaveRecved=0;
-		}else if ((ThisuS - thisRecvTime) >12000u)
-		{
-			KMem.ErrStat=8000;
-			KMem.SDD[17]=1;
-			KMem.SDD[18]=ThisuS;
-			KMem.SDD[19]=RecvTimeuS;
-		}else if ( ThisuS > (thisRecvTime + 12000u))
-		{
-			KMem.ErrStat=8000;
-			KMem.SDD[17]=2;
-			KMem.SDD[18]=ThisuS;
-			KMem.SDD[19]=RecvTimeuS;
-		}
-		
-	return 0;
-}
-
-int MakePacket(pPacket p1,unsigned char src, uchar dst, uchar nType,unsigned char nSEQ, unsigned char DataLen,void * pData )
+int KBusMakePacket(pKBPacket p1,unsigned char src, uchar dst, uchar nType,unsigned char nSEQ, unsigned char DataLen,void * pData )
 {
 	p1->Sign=StartSign;
 	p1->DstHost=dst;
@@ -203,17 +73,17 @@
 		case cmdPing:
 			p1->PacketLen=DataLen;
 			memcpy(p1->data,pData,DataLen);
-			p1->data[DataLen]=BCC(p1,sizeof(stPacket)+DataLen-1);
+			p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1);
 			p1->data[DataLen+1]=EndSign;
 		
-			PacketLenth=sizeof(stPacket)+DataLen+1;
+			PacketLenth=sizeof(stKBPacket)+DataLen+1;
 			break;
 		case cmdPingReply:
 			p1->PacketLen=DataLen;
 			memcpy(p1->data,pData,DataLen);
-			p1->data[DataLen]=BCC(p1,sizeof(stPacket)+DataLen-1);
+			p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1);
 			p1->data[DataLen+1]=EndSign;		
-			PacketLenth=sizeof(stPacket)+DataLen+1;		
+			PacketLenth=sizeof(stKBPacket)+DataLen+1;		
 			break;
 		case cmdRead:
 			break;
@@ -224,67 +94,67 @@
 		case cmdWriteReply:
 			p1->PacketLen=DataLen;
 		 if (DataLen !=0 )	memcpy(p1->data,pData,DataLen);
-			p1->data[DataLen]=BCC(p1,sizeof(stPacket)+DataLen-1);
+			p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1);
 			p1->data[DataLen+1]=EndSign;
-			PacketLenth=sizeof(stPacket)+DataLen+1;					
+			PacketLenth=sizeof(stKBPacket)+DataLen+1;					
 			break;
 		case cmdGetVersion:
 			p1->PacketLen=DataLen;
 			memcpy(p1->data,pData,DataLen);
-			p1->data[DataLen]=BCC(p1,sizeof(stPacket)+DataLen-1);
+			p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1);
 			p1->data[DataLen+1]=EndSign;
-			PacketLenth=sizeof(stPacket)+DataLen+1;			
+			PacketLenth=sizeof(stKBPacket)+DataLen+1;			
 			break;
 		case cmdVerInfo:
 			p1->PacketLen=DataLen;
 			memcpy(p1->data,pData,DataLen);
-			p1->data[DataLen]=BCC(p1,sizeof(stPacket)+DataLen-1);
+			p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1);
 			p1->data[DataLen+1]=EndSign;
-			PacketLenth=sizeof(stPacket)+DataLen+1;			
+			PacketLenth=sizeof(stKBPacket)+DataLen+1;			
 			break;
 		case cmdExChgData:
 			p1->PacketLen=DataLen;
 			memcpy(p1->data,pData,DataLen);
-			p1->data[DataLen]=BCC(p1,sizeof(stPacket)+DataLen-1);
+			p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1);
 			p1->data[DataLen+1]=EndSign;
-			PacketLenth=sizeof(stPacket)+DataLen+1;
+			PacketLenth=sizeof(stKBPacket)+DataLen+1;
 			break;
 		case cmdExChgDataReply:
 			p1->PacketLen=DataLen;
 			memcpy(p1->data,pData,DataLen);
-			p1->data[DataLen]=BCC(p1,sizeof(stPacket)+DataLen-1);
+			p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1);
 			p1->data[DataLen+1]=EndSign;		
-			PacketLenth=sizeof(stPacket)+DataLen+1;		
+			PacketLenth=sizeof(stKBPacket)+DataLen+1;		
 			break;
 				
 		case cmdSyncRead:
 			p1->PacketLen=DataLen;
 			memcpy(p1->data,pData,DataLen);
-			p1->data[DataLen]=BCC(p1,sizeof(stPacket)+DataLen-1);
+			p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1);
 			p1->data[DataLen+1]=EndSign;		
-			PacketLenth=sizeof(stPacket)+DataLen+1;		
+			PacketLenth=sizeof(stKBPacket)+DataLen+1;		
 			break;
 		case cmdSyncWrite:
 			p1->PacketLen=DataLen;
 			memcpy(p1->data,pData,DataLen);
-			p1->data[DataLen]=BCC(p1,sizeof(stPacket)+DataLen-1);
+			p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1);
 			p1->data[DataLen+1]=EndSign;		
-			PacketLenth=sizeof(stPacket)+DataLen+1;		
+			PacketLenth=sizeof(stKBPacket)+DataLen+1;		
 			break;
 		case cmdSequenRead:
 			p1->PacketLen=DataLen;
 			memcpy(p1->data,pData,DataLen);
-			p1->data[DataLen]=BCC(p1,sizeof(stPacket)+DataLen-1);
+			p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1);
 			p1->data[DataLen+1]=EndSign;		
-			PacketLenth=sizeof(stPacket)+DataLen+1;		
+			PacketLenth=sizeof(stKBPacket)+DataLen+1;		
 			break;		
 		
 		case cmdSyncTime:
 			p1->PacketLen=DataLen;
 			memcpy(p1->data,pData,DataLen);
-			p1->data[DataLen]=BCC(p1,sizeof(stPacket)+DataLen-1);
+			p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1);
 			p1->data[DataLen+1]=EndSign;		
-			PacketLenth=sizeof(stPacket)+DataLen+1;		
+			PacketLenth=sizeof(stKBPacket)+DataLen+1;		
 			break;
 		
 		default:
@@ -294,90 +164,90 @@
 	return PacketLenth;
 }
 
-int CheckPacket(int nChn, pPacket p1, int nLen1)
+int KBusCheckPacket(int nChn, pKBPacket p1, int nLen1)
 {
 	if (p1->Sign != StartSign)
 	{
 		Uart2Stat.NotPacketErr++;
-		ChnStats[nCurPollId].NotPkgErr++;
+		KBusChnStats[nCurPollId].NotPkgErr++;
 		return -1;
 	}
 	int DataLen=p1->PacketLen;
 	if (DataLen>MaxPacketLength) 
 	{
 		Uart2Stat.LengthErr++;
-		ChnStats[nCurPollId].PkgLenErr++;
+		KBusChnStats[nCurPollId].PkgLenErr++;
 		return -1;
 	}
-	if (nLen1<DataLen+sizeof(stPacket)+1)
+	if (nLen1<DataLen+sizeof(stKBPacket)+1)
 	{
-		//len4=sprintf(str3,"%d < %d + %d \r\n",len2,DataLen,sizeof(stPacket));
+		//len4=sprintf(str3,"%d < %d + %d \r\n",len2,DataLen,sizeof(stKBPacket));
 		//PutStr(str3,len4);
-		ChnStats[nCurPollId].PkgLenErr++;
+		KBusChnStats[nCurPollId].PkgLenErr++;
 		Uart2Stat.LengthErr++;
 		return -3;	//not long enough					
 	}
 //	if (p1->data[DataLen+1] != EndSign)
 //	{
-//		ChnStats[nCurPollId].NoEndErr++;
+//		KBusChnStats[nCurPollId].NoEndErr++;
 //		Uart2Stat.LengthErr++;		
 //		return -2;
 //	}
-	unsigned char thisBCC=BCC(p1,sizeof(stPacket)+DataLen-1);
+	unsigned char thisBCC=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1);
 	if (thisBCC != p1->data[DataLen]) 
 	{//BCC Error;
 		Uart2Stat.BCCerr++;
-		ChnStats[nCurPollId].BCCErr++;
+		KBusChnStats[nCurPollId].BCCErr++;
 		return -4;
 	} 		
 	return 0;
 }
 
-int SlaveCheckPacket(int nChn, pPacket p1, int nLen1)
+int KBusSlaveCheckPacket(int nChn, pKBPacket p1, int nLen1)
 {
 	if (p1->Sign != StartSign)
 	{
 		Uart2Stat.NotPacketErr++;
-		ChnStats[0].ClientNotPktErr++;
+		KBusChnStats[0].ClientNotPktErr++;
 		return -1;
 	}
 	int DataLen=p1->PacketLen;
 	if (DataLen>MaxPacketLength) 
 	{
 		Uart2Stat.LengthErr++;
-		ChnStats[0].ClientPkgLenErr++;
+		KBusChnStats[0].ClientPkgLenErr++;
 		return -1;
 	}
-	if (nLen1<DataLen+sizeof(stPacket)+1)
+	if (nLen1<DataLen+sizeof(stKBPacket)+1)
 	{
-		//len4=sprintf(str3,"%d < %d + %d \r\n",len2,DataLen,sizeof(stPacket));
+		//len4=sprintf(str3,"%d < %d + %d \r\n",len2,DataLen,sizeof(stKBPacket));
 		//PutStr(str3,len4);
-		ChnStats[0].ClientPkgLenErr++;
+		KBusChnStats[0].ClientPkgLenErr++;
 		Uart2Stat.LengthErr++;
 		return -3;	//not long enough					
 	}
 //	if (p1->data[DataLen+1] != EndSign)
 //	{
-//		ChnStats[nCurPollId].NoEndErr++;
+//		KBusChnStats[nCurPollId].NoEndErr++;
 //		Uart2Stat.LengthErr++;		
 //		return -2;
 //	}
-	unsigned char thisBCC=BCC(p1,sizeof(stPacket)+DataLen-1);
+	unsigned char thisBCC=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1);
 	if (thisBCC != p1->data[DataLen]) 
 	{//BCC Error;
 		Uart2Stat.BCCerr++;
-		ChnStats[0].ClientBccErr++;
+		KBusChnStats[0].ClientBccErr++;
 		return -4;
 	} 		
 	return 0;
 }
 
-int MasterParsePacket(int nChn, pPacket p1, int Len1)
+int KBusMasterParsePacket(int nChn, pKBPacket p1, int Len1)
 {
 
 		int DataLen=p1->PacketLen;
-		ChnStats[nCurPollId].RecvPackets++;	
-		pPacket p2=(pPacket)PacketBuf2;		
+		KBusChnStats[nCurPollId].RecvPackets++;	
+		pKBPacket p2=(pKBPacket)PacketBuf2;		
 		int PacketLen=0;
 		//LL_GPIO_TogglePin(GPIOA,LL_GPIO_PIN_6);
 		int ChildId=p1->SrcAddr;
@@ -389,22 +259,22 @@
 				break;
 			case cmdPing:
 				BufferIn[ChildId]=p1->data[0];
-				PacketLen=MakePacket(p2,0,nCurPollId,cmdPingReply,p1->nSEQ,DataLen,p1->data);
+				PacketLen=KBusMakePacket(p2,0,nCurPollId,cmdPingReply,p1->nSEQ,DataLen,p1->data);
 				SendPacket(nChn, p2, PacketLen);
 				break;
 			case cmdPingReply:
-				DelayuS=ThisuS-SendTimeuS;
-				if (DelayuS > MaxDelayuS) MaxDelayuS = DelayuS;
+				KBusDelayuS=ThisuS-KBusSendTimeuS;
+				if (KBusDelayuS > KBusMaxDelayuS) KBusMaxDelayuS = KBusDelayuS;
 				
 				BufferIn[ChildId]=p1->data[0];
 				
 				//RunStat=100;
-				ChnStats[nCurPollId].CtnLstPkts=0;
-				ChnStats[nCurPollId].Delay=DelayuS;
-			if (DelayuS > ChnStats[nCurPollId].MaxDelay) 
-				ChnStats[nCurPollId].MaxDelay=DelayuS;
+				KBusChnStats[nCurPollId].CtnLstPkts=0;
+				KBusChnStats[nCurPollId].Delay=KBusDelayuS;
+			if (KBusDelayuS > KBusChnStats[nCurPollId].MaxDelay) 
+				KBusChnStats[nCurPollId].MaxDelay=KBusDelayuS;
 				//PutOutput(outputvalue);
-				MasterRecvOK=1;
+				KBusMasterRecvOK=1;
 				break;
 			case cmdRead:
 				break;
@@ -413,7 +283,7 @@
 			case cmdWrite:
 				break;
 			case cmdWriteReply:
-				MasterRecved=1;
+				KBusMasterRecved=1;
 				break;
 			case cmdGetVersion:
 				break;
@@ -424,14 +294,14 @@
 				//PutOutput(outputvalue);
 				//memcpy(DispBuf,p1->data+2,8);
 				p1->data[0]=BufferOut[0];
-				PacketLen=MakePacket(p2,nAddr,0,cmdExChgDataReply,p1->nSEQ,DataLen,p1->data);
+				PacketLen=KBusMakePacket(p2,nStationID,0,cmdExChgDataReply,p1->nSEQ,DataLen,p1->data);
 				SendPacket(nChn, p2, PacketLen);
 				break;
 			case cmdExChgDataReply:
-				DelayuS=ThisuS-SendTimeuS;
-				if (DelayuS > MaxDelayuS) MaxDelayuS = DelayuS;
+				KBusDelayuS=ThisuS-KBusSendTimeuS;
+				if (KBusDelayuS > KBusMaxDelayuS) KBusMaxDelayuS = KBusDelayuS;
 
-#if (BOARD_TYPE==12)				
+#if (BOARD_TYPE == 14)				
 				BufferIn[ChildId]=p1->data[0];
 				KMem.WXB[ChildId-1]=BufferIn[ChildId];
 				if (KMRunStat.WorkMode==0) {	
@@ -448,17 +318,17 @@
 #endif
 
 				//RunStat=100;
-				ChnStats[nCurPollId].CtnLstPkts=0;
-				ChnStats[nCurPollId].Delay=DelayuS;
-			if (DelayuS > ChnStats[nCurPollId].MaxDelay) 
-				ChnStats[nCurPollId].MaxDelay=DelayuS;
+				KBusChnStats[nCurPollId].CtnLstPkts=0;
+				KBusChnStats[nCurPollId].Delay=KBusDelayuS;
+			if (KBusDelayuS > KBusChnStats[nCurPollId].MaxDelay) 
+				KBusChnStats[nCurPollId].MaxDelay=KBusDelayuS;
 				//PutOutput(outputvalue);
 				
 			
 				nIndex=p1->data[3];
-				ChnStats[nCurPollId].ClientDatas[nIndex]=p1->data[4]|(p1->data[5]<<8)|(p1->data[6]<<16)|(p1->data[7]<<24);
+				KBusChnStats[nCurPollId].ClientDatas[nIndex]=p1->data[4]|(p1->data[5]<<8)|(p1->data[6]<<16)|(p1->data[7]<<24);
 			
-				MasterRecvOK=1;
+				KBusMasterRecvOK=1;
 				
 				break;
 					
@@ -473,28 +343,28 @@
 	return 0;
 }
 unsigned char nClientDataIndex=0;
-int SlaveParsePacket(int nChn, pPacket p1, int Len1)
+int KBusSlaveParsePacket(int nChn, pKBPacket p1, int Len1)
 {
 	Uart2Stat.OKPacket++;				
 	int DataLen=p1->PacketLen;	
 //int nSrcAddr=p1->SrcAddr;
 	int nDstHost=p1->DstHost;
 		
-//	RecvTimeuS=ThisuS;
-//	SlaveRecved=1;
+//	KBusRecvTimeuS=ThisuS;
+//	KBusSlaveRecved=1;
 	
-	pPacket p2=(pPacket)PacketBuf2;
+	pKBPacket p2=(pKBPacket)PacketBuf2;
 	int PacketLen=0;
 	unsigned char nIndex = p1->nSEQ & 0x07;
-	if (nDstHost!=nAddr && nDstHost != 0xff)
+	if (nDstHost!=nStationID && nDstHost != 0xff)
 	{
-		ChnStats[0].ClientMisIdPkts++;
+		KBusChnStats[0].ClientMisIdPkts++;
 		return -1;
 	}
-	if (nDstHost==nAddr || nDstHost==0xff)
+	if (nDstHost==nStationID || nDstHost==0xff)
 	{
-		RecvTimeuS=ThisuS;
-		SlaveRecved=1;
+		KBusRecvTimeuS=ThisuS;
+		KBusSlaveRecved=1;
 		switch (p1->nCMD)
 		{
 			case cmdNone:
@@ -504,9 +374,9 @@
 				//PutOutput(outputvalue);
 				//memcpy(DispBuf,p1->data+2,8);
 				p1->data[0]=BufferOut[0];
-				RecvTimeuS=ThisuS;
-				PacketLen=MakePacket(p2,nAddr,0,cmdPingReply,p1->nSEQ,DataLen,p1->data);
-				ChnStats[0].ClientSendPkts++;
+				KBusRecvTimeuS=ThisuS;
+				PacketLen=KBusMakePacket(p2,nStationID,0,cmdPingReply,p1->nSEQ,DataLen,p1->data);
+				KBusChnStats[0].ClientSendPkts++;
 				SendPacket(nChn, p2, PacketLen);
 				break;
 			case cmdPingReply:
@@ -517,8 +387,8 @@
 				break;
 			case cmdWrite:
 				//memcpy(DispBuf,p1->data,DataLen);
-				PacketLen=MakePacket(p2,1,0,cmdWriteReply,p1->nSEQ,0,0);
-				ChnStats[0].ClientSendPkts++;
+				PacketLen=KBusMakePacket(p2,1,0,cmdWriteReply,p1->nSEQ,0,0);
+				KBusChnStats[0].ClientSendPkts++;
 				SendPacket(nChn, p2, PacketLen);					
 				break;
 			case cmdWriteReply:
@@ -530,12 +400,12 @@
 			case cmdExChgData:
 				BufferIn[0]=p1->data[0];
 				nSlaveTick=p1->data[4]+(p1->data[5]<<8);//+(p1->data[6]<<16)+(p1->data[7]<<24);
-#if (BOARD_TYPE == 12)
+#if (BOARD_TYPE == 14)
 			//	PutOutput(BufferIn[0]);
 				//PutOutput(outputvalue);
 				//memcpy(DispBuf,p1->data+2,8);
 				nIndex=nClientDataIndex;
-		//		ChnStats[0].ClientDatas[7]++;
+		//		KBusChnStats[0].ClientDatas[7]++;
 //				BufferOut[0]=GetInput();
 		//		BufferOut[0]=GetInput();
 #else
@@ -543,20 +413,20 @@
 				//PutOutput(outputvalue);
 				//memcpy(DispBuf,p1->data+2,8);
 				nIndex=nClientDataIndex;
-		//		ChnStats[0].ClientDatas[7]++;
+		//		KBusChnStats[0].ClientDatas[7]++;
 //				BufferOut[0]=GetInput();
 				BufferOut[0]=GetInput();
 #endif
 				p1->data[0]=BufferOut[0];
 				p1->data[3]=nIndex;
-				p1->data[4]=ChnStats[0].ClientDatas[nIndex];
-				p1->data[5]=ChnStats[0].ClientDatas[nIndex]>>8;
-				p1->data[6]=ChnStats[0].ClientDatas[nIndex]>>16;
-				p1->data[7]=ChnStats[0].ClientDatas[nIndex]>>24;
+				p1->data[4]=KBusChnStats[0].ClientDatas[nIndex];
+				p1->data[5]=KBusChnStats[0].ClientDatas[nIndex]>>8;
+				p1->data[6]=KBusChnStats[0].ClientDatas[nIndex]>>16;
+				p1->data[7]=KBusChnStats[0].ClientDatas[nIndex]>>24;
 				nClientDataIndex++;
 				if (nClientDataIndex >= 10) { nClientDataIndex=0;}
-				PacketLen=MakePacket(p2,nAddr,0,cmdExChgDataReply,p1->nSEQ,DataLen,p1->data);
-				ChnStats[0].ClientSendPkts++;
+				PacketLen=KBusMakePacket(p2,nStationID,0,cmdExChgDataReply,p1->nSEQ,DataLen,p1->data);
+				KBusChnStats[0].ClientSendPkts++;
 				SendPacket(nChn, p2, PacketLen);
 				break;
 			case cmdExChgDataReply:
@@ -578,42 +448,42 @@
 	}	
 	return 0;
 }
-int ParsePacket(int nChn, pPacket p1, int Len1)
+int KBusParsePacket(int nChn, pKBPacket p1, int Len1)
 {
 	ThisuS=GetuS();
 	int Result=0;
-	if (bMaster)
+	if (bKBusMaster)
 	{
-			MasterRecved=1;
-			Result=CheckPacket(nChn, p1, Len1);
+			KBusMasterRecved=1;
+			Result=KBusCheckPacket(nChn, p1, Len1);
 			if (Result != S_OK)
 			{
 				return Result;
 			}
-			MasterRecvOK=1;
-			Result=MasterParsePacket(nChn, p1, Len1);			
+			KBusMasterRecvOK=1;
+			Result=KBusMasterParsePacket(nChn, p1, Len1);			
 			return Result;
 	}
-	if (bSlave)
+	if (bKBusSlave)
 	{
-			ChnStats[0].ClientRecvPkts++;
-			Result=SlaveCheckPacket(nChn, p1, Len1);
+			KBusChnStats[0].ClientRecvPkts++;
+			Result=KBusSlaveCheckPacket(nChn, p1, Len1);
 			if (Result != S_OK)
 			{
 				return Result;
 			}
-			ChnStats[0].ClientTimeOutErr=KMem.RunStat;
-			Result=SlaveParsePacket(nChn, p1, Len1);
+			KBusChnStats[0].ClientTimeOutErr=KMem.RunStat;
+			Result=KBusSlaveParsePacket(nChn, p1, Len1);
 			return Result;
 	}
 	//int len1=p1->PacketLen;
 //	if (p1->DstHost!=255&&p1->DstHost!=2) return -3;
-//	pPacket p2=(pPacket)PacketBuf2;
+//	pKBPacket p2=(pKBPacket)PacketBuf2;
 //			Uart2Stat.OKPacket++;
 
 	return Result;
 }
-
+/*
 int InitMachine(stMachineConfig * pConfig)
 {
 	return S_OK;
@@ -653,4 +523,133 @@
 {
 	return S_OK;
 }
+*/
+int KBusRepeaterFunc(int nChn)
+{
+		KMem.WY[0]=KMem.WX[0];
+		if ((KMem.nRunCount &0x7f) == 88) 
+		{ 
+			nCount2++;	
+			ToggleRunLed();
+//		int len1=sprintf(str1,"%d %d Cfg %02X  Input %02X  \r\n",nCount,nCount2,EffJumperSW,MyKeyStat1);
+//		PutStr(str1,len1);
+		}				
+	return 0;
+}
 
+int KBusMasterFunc(int nChn)
+{
+	uint32_t tick1=HAL_GetTick();
+	uint32_t thisuS=GetuS();
+
+		int len1=0;
+
+		if ((KBusMasterRecved && KBusMasterRecvOK && thisuS-KBusSendTimeuS>50) || thisuS-KBusSendTimeuS>1000u)
+		{
+			if (!KBusMasterRecvOK) 
+			{
+				TimeOutCount++;
+				Uart2Stat.TimeOutErr++; 
+				KBusChnStats[nCurPollId].LostPackets++;
+				KBusChnStats[nCurPollId].CtnLstPkts++;
+				if (!KBusMasterRecved) {KBusChnStats[nCurPollId].TimeOutErr++;}
+				if (KBusChnStats[nCurPollId].CtnLstPkts>KBusChnStats[nCurPollId].MaxCtnLstPkts)
+				{KBusChnStats[nCurPollId].MaxCtnLstPkts=KBusChnStats[nCurPollId].CtnLstPkts;}
+				if (KBusChnStats[nCurPollId].CtnLstPkts>3)
+				{
+					KBusChnStats[nCurPollId].Stat=0;
+					KMem.ErrStat=200;
+					 
+					{BufferIn[nCurPollId]=0;}
+				}
+			//	LL_GPIO_SetOutputPin(GPIOA,LL_GPIO_PIN_7);
+			}else
+			{
+				KBusChnStats[nCurPollId].Stat=1;
+				
+				KMem.RunStat=100;
+			}
+			nCurPollId ++;
+			if (nCurPollId > nChilds)
+			{
+				CircleTime=thisuS-LastCircleStartTime;
+				LastCircleStartTime=thisuS;
+				nSeq++;
+				nCurPollId=1;
+			}
+#if (BOARD_TYPE == 14)
+			if (KMRunStat.WorkMode==0)
+			{
+			//	KMem.WX[0]= GetInput();
+			//	KMem.WY[1]=KMem.WX[0]&0xff;
+			//	KMem.WY[2]=(KMem.WX[0]>>8)&0xff;		
+			}
+		//	BufferOut[1]=KMem.WY[1];
+		//	BufferOut[2]=KMem.WY[2];		
+#else
+			if (KMRunStat.WorkMode==0)
+			{
+				KMem.WX[0]= GetInput();
+				KMem.WY[1]=KMem.WX[0]&0xff;
+				KMem.WY[2]=(KMem.WX[0]>>8)&0xff;		
+			}
+			BufferOut[1]=KMem.WY[1];
+			BufferOut[2]=KMem.WY[2];		
+#endif
+
+			Datas[0]=BufferOut[nCurPollId];
+			Datas[1]=BufferOut[nCurPollId+1];;
+			Datas[2]=KBusChnStats[nCurPollId].Stat;
+			Datas[3]=0;
+			Datas[4]=tick1&0xff;
+			Datas[5]=(tick1>>8)&0xff;
+			Datas[6]=(tick1>>16)&0xff;
+			Datas[7]=(tick1>>24)&0xff;
+			
+			KBusSendTimeuS=thisuS;				
+			len1=KBusMakePacket((pKBPacket)PacketBuf1,0,nCurPollId,cmdExChgData,nSeq,8,Datas);
+			SendPacket(nChn, (pKBPacket)PacketBuf1, len1);
+			KBusChnStats[nCurPollId].SendPackets++;
+			KBusChnStats[nCurPollId].SendTimeInterval=KBusSendTimeuS-KBusChnStats[nCurPollId].LastSentTimeuS;
+			KBusChnStats[nCurPollId].LastSentTimeuS=KBusSendTimeuS;
+//			PacketLength = len1;
+			SendTime=tick1;
+
+			KBusMasterRecved=0;
+			KBusMasterRecvOK=0;
+		//	LL_GPIO_TogglePin(GPIOA,LL_GPIO_PIN_5);		
+			//ToggleErrLed();
+//				ToggleOut8();
+
+		}
+	
+//		Clk3=SysTick->VAL;
+	//	LL_GPIO_TogglePin(GPIOA,LL_GPIO_PIN_4);
+//	HAL_Delay(1);				
+	return 0;
+}
+
+int KBusSlaveFunc(int nChn)
+{
+		int ThisuS=GetuS();
+		int thisRecvTime=KBusRecvTimeuS;
+		if (KBusSlaveRecved)
+		{
+			KMem.RunStat=8000;
+			KBusSlaveRecved=0;
+		}else if ((ThisuS - thisRecvTime) >12000u)
+		{
+			KMem.ErrStat=8000;
+			KMem.SDD[17]=1;
+			KMem.SDD[18]=ThisuS;
+			KMem.SDD[19]=KBusRecvTimeuS;
+		}else if ( ThisuS > (thisRecvTime + 12000u))
+		{
+			KMem.ErrStat=8000;
+			KMem.SDD[17]=2;
+			KMem.SDD[18]=ThisuS;
+			KMem.SDD[19]=KBusRecvTimeuS;
+		}
+		
+	return 0;
+}

--
Gitblit v1.9.1