QuakeGod
2024-02-25 95322c84888cbe2e92024d4d65698f59b016cb52
ComLib/Src/KBus.c
@@ -50,6 +50,10 @@
unsigned char Datas[128];      
volatile int PacketLength = 0;
stClientInfo ClientInfo[16];
unsigned char KBusBCC(void * pData, int nSize)
{
   unsigned char k;
@@ -74,7 +78,7 @@
      case cmdNone:
         break;
      case cmdPing:
         p1->PacketLen=DataLen;
         p1->DataLen=DataLen;
         memcpy(p1->data,pData,DataLen);
         p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1);
         p1->data[DataLen+1]=EndSign;
@@ -82,7 +86,7 @@
         PacketLenth=sizeof(stKBPacket)+DataLen+1;
         break;
      case cmdPingReply:
         p1->PacketLen=DataLen;
         p1->DataLen=DataLen;
         memcpy(p1->data,pData,DataLen);
         p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1);
         p1->data[DataLen+1]=EndSign;      
@@ -95,35 +99,35 @@
      case cmdWrite:
         break;
      case cmdWriteReply:
         p1->PacketLen=DataLen;
         p1->DataLen=DataLen;
       if (DataLen !=0 )   memcpy(p1->data,pData,DataLen);
         p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1);
         p1->data[DataLen+1]=EndSign;
         PacketLenth=sizeof(stKBPacket)+DataLen+1;               
         break;
      case cmdGetVersion:
         p1->PacketLen=DataLen;
         p1->DataLen=DataLen;
         memcpy(p1->data,pData,DataLen);
         p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1);
         p1->data[DataLen+1]=EndSign;
         PacketLenth=sizeof(stKBPacket)+DataLen+1;         
         break;
      case cmdVerInfo:
         p1->PacketLen=DataLen;
         p1->DataLen=DataLen;
         memcpy(p1->data,pData,DataLen);
         p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1);
         p1->data[DataLen+1]=EndSign;
         PacketLenth=sizeof(stKBPacket)+DataLen+1;         
         break;
      case cmdExChgData:
         p1->PacketLen=DataLen;
         p1->DataLen=DataLen;
         memcpy(p1->data,pData,DataLen);
         p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1);
         p1->data[DataLen+1]=EndSign;
         PacketLenth=sizeof(stKBPacket)+DataLen+1;
         break;
      case cmdExChgDataReply:
         p1->PacketLen=DataLen;
         p1->DataLen=DataLen;
         memcpy(p1->data,pData,DataLen);
         p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1);
         p1->data[DataLen+1]=EndSign;      
@@ -131,21 +135,21 @@
         break;
            
      case cmdSyncRead:
         p1->PacketLen=DataLen;
         p1->DataLen=DataLen;
         memcpy(p1->data,pData,DataLen);
         p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1);
         p1->data[DataLen+1]=EndSign;      
         PacketLenth=sizeof(stKBPacket)+DataLen+1;      
         break;
      case cmdSyncWrite:
         p1->PacketLen=DataLen;
         p1->DataLen=DataLen;
         memcpy(p1->data,pData,DataLen);
         p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1);
         p1->data[DataLen+1]=EndSign;      
         PacketLenth=sizeof(stKBPacket)+DataLen+1;      
         break;
      case cmdSequenRead:
         p1->PacketLen=DataLen;
         p1->DataLen=DataLen;
         memcpy(p1->data,pData,DataLen);
         p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1);
         p1->data[DataLen+1]=EndSign;      
@@ -153,7 +157,7 @@
         break;      
      
      case cmdSyncTime:
         p1->PacketLen=DataLen;
         p1->DataLen=DataLen;
         memcpy(p1->data,pData,DataLen);
         p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1);
         p1->data[DataLen+1]=EndSign;      
@@ -199,7 +203,7 @@
      }
      return -1;
   }
   int DataLen=p3->PacketLen;
   int DataLen=p3->DataLen;
   if (DataLen>MaxPacketLength) 
   {
      Uart2Stat.LengthErr++;
@@ -246,7 +250,7 @@
      KBusChnStats[0].ClientNotPktErr++;
      return -1;
   }
   int DataLen=p3->PacketLen;
   int DataLen=p3->DataLen;
   if (DataLen>MaxPacketLength) 
   {
      Uart2Stat.LengthErr++;
@@ -287,7 +291,7 @@
      Len1--;
   }   
      int DataLen=p1->PacketLen;
      int DataLen=p1->DataLen;
      KBusChnStats[nCurPollId].RecvPackets++;   
      pKBPacket p2=(pKBPacket)PacketBuf2;      
      int PacketLen=0;
@@ -345,7 +349,13 @@
#if (BOARD_TYPE == 14)            
            BufferIn[ChildId]=p1->data[0];
            BufferIn[ChildId + 1] = p1->data[1];
            BufferIn[ChildId + 2 ] = p1->data[2];
            KMem.WXB[ChildId-1]=BufferIn[ChildId];
            KMem.WXB[ChildId]=BufferIn[ChildId+1];
            KMem.WXB[ChildId+1]=BufferIn[ChildId+2];
            if (KMRunStat.WorkMode==0) {   
            //   KMem.WY[0]= KMem.WX[1]+(KMem.WX[2]<<8)   ;
            //   PutOutput (KMem.WY[0]);
@@ -396,7 +406,7 @@
   }      
   
   Uart2Stat.OKPacket++;            
   int DataLen=p1->PacketLen;
   int DataLen=p1->DataLen;
//int nSrcAddr=p1->SrcAddr;
   int nDstHost=p1->DstHost;
      
@@ -450,6 +460,10 @@
            break;
         case cmdExChgData:
            BufferIn[0]=p1->data[0];
            BufferIn[1]=p1->data[1];
//            KMem.WLYB[1] = BufferIn[1];
            KMem.WYB[1] = BufferIn[1];
            nSlaveTick=p1->data[4]+(p1->data[5]<<8);//+(p1->data[6]<<16)+(p1->data[7]<<24);
#if (BOARD_TYPE == 14)
         //   PutOutput(BufferIn[0]);
@@ -467,8 +481,11 @@
      //      KBusChnStats[0].ClientDatas[7]++;
//            BufferOut[0]=GetInput();
            BufferOut[0]=GetInput();
            BufferOut[1]=KMem.WXB[1];
#endif
            p1->data[0]=BufferOut[0];
            p1->data[1]=BufferOut[1];
            p1->data[3]=nIndex;
            p1->data[4]=KBusChnStats[0].ClientDatas[nIndex];
            p1->data[5]=KBusChnStats[0].ClientDatas[nIndex]>>8;
@@ -622,8 +639,14 @@
            {
               KBusChnStats[nCurPollId].Stat=0;
               KMem.ErrStat=200;
               {BufferIn[nCurPollId]=0;}
#if (BOARD_TYPE == 14)
               BufferIn[nCurPollId]=0;
               KMem.WXB[nCurPollId-1]=BufferIn[nCurPollId];
#else
               {BufferIn[nCurPollId]=0;
                  KMem.WLX[nCurPollId]=BufferIn[nCurPollId];
               }
#endif
            }
         //   LL_GPIO_SetOutputPin(GPIOA,LL_GPIO_PIN_7);
         }else