QuakeGod
2024-08-08 1fb934cda3067a81f82a7add0fa5b39f5ebf3094
ComLib/Src/functions.c
@@ -73,10 +73,11 @@
void logData(unsigned char d)
{
         KMem.WDB[128+KMem.WDT[123]] = d;
         KMem.WDT[123]++;     if (KMem.WDT[123]>=100) {KMem.WDT[123]=81;}
         KMem.WDB[128+KMem.WDT[7]] = d;
         KMem.WDT[7]++;     if (KMem.WDT[7]>=100) {KMem.WDT[7]=81;}
}
/*
const unsigned short crc16_table[256] = {
0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf,
0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7,
@@ -148,7 +149,7 @@
   }
   return(crc);
}
 */
/* Table of CRC values for high-order byte */
const uint8_t crctablehi[] = {
   0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,
@@ -191,7 +192,7 @@
   0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, 0x43, 0x83, 0x41, 0x81, 0x80,
   0x40
};
 /*
uint16_t crc16table(const uint8_t *ptr, uint16_t len)
{
   uint8_t crchi = 0xff;
@@ -205,7 +206,28 @@
   }
   return (crchi << 8 | crclo);
}
*/
const uint16_t crctalbeabs[] = {
   0x0000, 0xCC01, 0xD801, 0x1400, 0xF001, 0x3C00, 0x2800, 0xE401,
   0xA001, 0x6C00, 0x7800, 0xB401, 0x5000, 0x9C01, 0x8801, 0x4400
};
uint16_t crc16tablefast(const uint8_t *ptr, uint16_t len)
{
   uint16_t crc = 0xffff;
   uint16_t i;
   uint8_t ch;
 
   for (i = 0; i < len; i++) {
      ch = *ptr++;
      crc = crctalbeabs[(ch ^ crc) & 15] ^ (crc >> 4);
      crc = crctalbeabs[((ch >> 4) ^ crc) & 15] ^ (crc >> 4);
   }
   return crc;
}
 /*
void modbuscrc16test()
{
   printf("\n");
@@ -216,12 +238,12 @@
//   printf(" modbus crc16tablefast test, expected value : 0xd825, calculate value : 0x%x\n", crc16tablefast(crc16_data, sizeof(crc16_data)));
   printf(" modbus crc16bitbybit test, expected value : 0xd825, calculate value : 0x%x\n", crc16bitbybit(crc16_data, sizeof(crc16_data)));
}
*/
int InitUartstat(stUartStat * pUartstat,void * pBufRx, int nSizeRx, void * pBufTx, int nSizeTx)
{
   memset(pUartstat,sizeof(stUartStat),0);
   initQueue(&pUartstat->QRx,pBufRx,nSizeRx);
   initQueue(&pUartstat->QTx,pBufTx,nSizeTx);
   if (pBufRx) initQueue(&pUartstat->QRx,pBufRx,nSizeRx);
   if (pBufTx) initQueue(&pUartstat->QTx,pBufTx,nSizeTx);
   return 0;
}
@@ -364,7 +386,9 @@
            logData(value);
          }
       }
#endif
#else
         UNUSED(value);
#endif
    }    
}
@@ -386,6 +410,7 @@
//     SCB->ICSR=SCB_ICSR_PENDSVSET_Msk; //1<<SCB_ICSR_PENDSVSET_Pos;
//      KLParsePacket(Uart1RecvBuf1,Uart1RecvBuf1DataLen);
//      Uart1RecvBuf1DataLen=0;
      TriggerPendSV();
   }
}
@@ -396,6 +421,8 @@
#else
Uart2UnsetDE();
#endif
   Uart2Stat.bSendDone = 1;
   TriggerPendSV();
}
void Uart2RecvDone()
{