SDC C-Project CF Review 프로그램
SWK
2023-03-10 5ce2e7ca14f09da2138ea783ef16044a01423413
ReviewSystem/CHSignalControls/SignalControl_DitSharedMemorySync.cpp
@@ -191,6 +191,13 @@
//       return m_pSignalThread->AddThreadData(signalData);
//    }
// 
   /*< SWK 20221226 - #4403 ADD Start >*/
   if (0 == nOnTime)
   {
      Write_SendSignal(nAddrIndex, nSignalIndex, wSignalValue != 0);
      return TRUE;
   }
   /*< SWK 20221226 - #4403 ADD End >*/
   if (m_pSignalThread == NULL) return FALSE;
   CSignalData signalData;
@@ -202,6 +209,21 @@
   return m_pSignalThread->AddThreadData(signalData);
   /*< SWK 20221221 - #4403 MOD End >*/
}
/*< SWK 20221226 - #4403 ADD Start >*/
inline void CSignalControl_DitSharedMemorySync::Write_SendSignal(int nAddrIndex, int nSignalIndex, bool bOn)
{
   int nAddress = m_pSendSignalValueAddr[nAddrIndex];
   WORD wSendValue = 1 << nSignalIndex;
   WORD wCurValue = 0;
   CSingleLock localLock(&m_csWriteSignal, TRUE);
   memcpy(&wCurValue, m_pMemStartAddr + nAddress, sizeof(WORD));
   if (bOn)   wCurValue |= wSendValue;
   else      wCurValue &= ~wSendValue;
   memcpy(m_pMemStartAddr + nAddress, &wCurValue, sizeof(WORD));
}
/*< SWK 20221226 - #4403 ADD End >*/
void CSignalControl_DitSharedMemorySync::IST2P_RunThreadProcess(const CSignalData& signalData)
{
@@ -262,19 +284,24 @@
   }
   else if (GetTickCount64() - signalData.ullStartTick < signalData.dwOnTime)   // Check Holding Time
   {
      //< KEJ 20230310 - #4403 ADD >
      Sleep(1);
      CSignalData NewSignalData = signalData;
      m_pSignalThread->AddThreadData(NewSignalData);
      return;
   }
   /*< SWK 20221226 - #4403 MOD Start >*/
//    int nAddress = m_pSendSignalValueAddr[signalData.nAddrIndex];
//    WORD wSendValue = 1 << signalData.nSignalIndex;
//
//    WORD wCurValue = 0;
//    memcpy(&wCurValue, m_pMemStartAddr + nAddress, sizeof(WORD));
//    if (true == signalData.wSignalValue)   wCurValue |= wSendValue;
//    else                           wCurValue &= ~wSendValue;
//    memcpy(m_pMemStartAddr + nAddress, &wCurValue, sizeof(WORD));
   int nAddress = m_pSendSignalValueAddr[signalData.nAddrIndex];
   WORD wSendValue = 1 << signalData.nSignalIndex;
   WORD wCurValue = 0;
   memcpy(&wCurValue, m_pMemStartAddr + nAddress, sizeof(WORD));
   if (true == signalData.wSignalValue)   wCurValue |= wSendValue;
   else                           wCurValue &= ~wSendValue;
   memcpy(m_pMemStartAddr + nAddress, &wCurValue, sizeof(WORD));
   Write_SendSignal(signalData.nAddrIndex, signalData.nSignalIndex, signalData.wSignalValue != 0);
   /*< SWK 20221226 - #4403 MOD End >*/
   /*< SWK 20221221 - #4403 MOD End >*/
}