📄 csqpskdmd.c
字号:
g_nSTSProcess = 0;
g_astTranspondList[bTunerIndex].nValidCount = 0;
if ( ret != CS_OSP_SUCCESS )
{
CSTRACE( QPSK_DEBUG_LEVEL, "[HDIQPSK] Err CSSendMsg failed\n");
CSTRACE( QPSK_DEBUG_LEVEL, "Position:file = %s,line = %d\n", __FILE__, __LINE__);
return CSQPSK_SYSTEM_ERROR;
}
return CSQPSK_SUCCESS;
}
#ifdef LSI_PLATFORM
static void CSQPSKAcquisitionTask(void)
{
DWORD dwMessage[4];
int nRet;
QPSKCallbackMessage ptrCallBack;
CSQPSKCHANNEL ChannelParam;
CSHDITunerIndex bTunerIndex = 0;
ptrCallBack.bTunerIndex = bTunerIndex;
while (TRUE)
{
/* Check for a message if none then block until a message arrive */
#ifdef QPSK_DEBUG
CSTRACE( QPSK_DEBUG_LEVEL, "prepare CSReceiveMsg(void)\r\n");
#endif
nRet = CSReceiveMsg( g_hCSQPSKQueueID[bTunerIndex], (PVOID)dwMessage, 16, 1000);
#ifdef QPSK_DEBUG
CSTRACE( QPSK_DEBUG_LEVEL, "CSReceiveMsg(void) end\r\n");
CSTRACE( QPSK_DEBUG_LEVEL, "CSReceiveMsg result = %d\r\n", nRet);
CSTRACE( QPSK_DEBUG_LEVEL, "dwMessage[0] = %d,dwMessage[1] = %d\r\n", dwMessage[0], dwMessage[1]);
#endif
if ( nRet != CS_OSP_SUCCESS )
{
dwMessage[0] = DMD_TIMEOUT_MSG_ID;
#ifdef QPSK_DEBUG
CSTRACE( QPSK_DEBUG_LEVEL, "[HDIQPSK]receive timeout message status = %d\r\n", g_dwNIMState[bTunerIndex]);
#endif
}
else
{
#ifdef QPSK_DEBUG
CSTRACE( QPSK_DEBUG_LEVEL, "[HDIQPSK]receive other message = %d, status = %d\r\n", dwMessage[0], g_dwNIMState[bTunerIndex]);
#endif
}
/*del by th on 070306 because no need to set LNB index here
if ( dwMessage[2] == CS_LOCK_METHOD_SATCR)
{
ucTunerInputLNB[bTunerIndex] = dwMessage[3];
}*/
switch (g_dwNIMState[bTunerIndex])
{
case DROPPED:
#ifdef QPSK_DEBUG
//CSTRACE( INFO_LEVEL, "[HDIQPSK]Current NIM Status:DROPPED\n");
#endif
switch (dwMessage[0])
{
case DMD_CONNECT_REQUEST_MSG_ID:
CSClear(bTunerIndex);
CSQPSKSetQPSKParameter( bTunerIndex, g_TQPSKChannelCopy[bTunerIndex] );
CSQPSKDiSEqCOperation(bTunerIndex);
CSQPSKSetChannelParameter( bTunerIndex, &ChannelParam);
ptrCallBack.dwFrequency = g_TQPSKChannelCopy1[bTunerIndex].dwFreqency;
ptrCallBack.dwSymbolRate = g_TQPSKChannelCopy1[bTunerIndex].dwSymbolRate;
nRet = CSQPSKSearchingSignal( bTunerIndex, &ChannelParam );
#ifdef QPSK_DEBUG
CSTRACE(QPSK_DEBUG_LEVEL, "[HDIQPSK]CSQPSKAcquisitionTask nRet = %d\r\n", nRet);
#endif
if( CSQPSK_SUCCESS == nRet )
{
#ifdef QPSK_DEBUG
//CSTRACE( INFO_LEVEL, "[HDIQPSK]Singal found from DROPPED NIM status.\n");
#endif
g_dwNIMState[bTunerIndex] = CONNECTED;
ptrCallBack.dwNIMEvent = QPSK_CALLBACK_SIGNAL_CONNECTED;
CSQPSKCallback(bTunerIndex, &ptrCallBack);
}
else if( CSQPSK_FAILURE == nRet )
{
#ifdef QPSK_DEBUG
//CSTRACE( INFO_LEVEL, "[HDIQPSK]Singal not found from DROPPED NIM status.\n");
#endif
g_dwNIMState[bTunerIndex] = WAITING;
ptrCallBack.dwNIMEvent = QPSK_CALLBACK_SIGNAL_SEARCHING;
CSQPSKCallback(bTunerIndex, &ptrCallBack);
}
break;
case DMD_STS_MSG_ID:
/*do search the sky here*/
CSClear(bTunerIndex);
if (STSSearch(bTunerIndex, dwMessage [2]) == CSQPSK_SUCCESS)
{
ptrCallBack.dwNIMEvent = QPSK_CALLBACK_STS_COMPLETE;
}
else
{
ptrCallBack.dwNIMEvent = QPSK_CALLBACK_STS_DROPPED;
}
CSQPSKCallback(bTunerIndex, &ptrCallBack);
g_dwNIMState[bTunerIndex] = DROPPED;
break;
default:
break;
}
break;
case WAITING: /* Start of Waiting State */
#ifdef QPSK_DEBUG
//CSTRACE(INFO_LEVEL,"[HDIQPSK]Current NIM Status:WAITING.\n");
#endif
switch (dwMessage[0])
{
/*
Modify by yuxibo 2006.02.07
'g_TQPSKChannelCopy1' should NOT be updated when 'DMD_TIMEOUT_MSG_ID'
received, so 'CSQPSKSetQPSKParameter' should not be called when
'DMD_TIMEOUT_MSG_ID' received.
*/
case DMD_CONNECT_REQUEST_MSG_ID:
CSQPSKSetQPSKParameter( bTunerIndex, g_TQPSKChannelCopy[bTunerIndex] );
// no break to continue searching
case DMD_TIMEOUT_MSG_ID:
CSClear(bTunerIndex);
CSQPSKDiSEqCOperation(bTunerIndex);
CSQPSKSetChannelParameter( bTunerIndex, &ChannelParam);
ptrCallBack.dwFrequency = g_TQPSKChannelCopy1[bTunerIndex].dwFreqency;
ptrCallBack.dwSymbolRate = g_TQPSKChannelCopy1[bTunerIndex].dwSymbolRate;
nRet = CSQPSKSearchingSignal( bTunerIndex, &ChannelParam );
CSTRACE(QPSK_DEBUG_LEVEL, "[HDIQPSK]CSQPSKAcquisitionTask nRet = %d\r\n", nRet);
if( nRet == CSQPSK_SUCCESS )
{
g_dwNIMState[bTunerIndex] = CONNECTED;
ptrCallBack.dwNIMEvent = QPSK_CALLBACK_SIGNAL_CONNECTED;
CSQPSKCallback( bTunerIndex, &ptrCallBack);
}
else if(nRet == CSQPSK_FAILURE)
{
ptrCallBack.dwNIMEvent = QPSK_CALLBACK_SIGNAL_SEARCHING;
CSQPSKCallback(bTunerIndex, &ptrCallBack);
}
break;
case DMD_DROP_REQUEST_MSG_ID:
g_dwNIMState[bTunerIndex] = DROPPED;
ptrCallBack.dwNIMEvent = QPSK_CALLBACK_SIGNAL_DROPPED;
CSQPSKCallback( bTunerIndex, &ptrCallBack);
/*
Added by yuxibo 2006.02.07
Reset 'g_TQPSKChannelCopy' and 'g_TQPSKChannelCopy1'
after receiving 'DMD_DROP_REQUEST_MSG_ID' message.
*/
memset( g_TQPSKChannelCopy, -1, sizeof( g_TQPSKChannelCopy));
memset( g_TQPSKChannelCopy1, -1, sizeof( g_TQPSKChannelCopy1));
break;
case DMD_CONNECT_SAME_MSG_ID: //add by sfg for repeat send same channel
ptrCallBack.dwNIMEvent = QPSK_CALLBACK_SIGNAL_SEARCHING;
CSQPSKCallback(bTunerIndex, &ptrCallBack);
break;
case DMD_STS_MSG_ID:
CSClear(bTunerIndex);
if (STSSearch(bTunerIndex, dwMessage [2]) == CSQPSK_SUCCESS)
{
ptrCallBack.dwNIMEvent = QPSK_CALLBACK_STS_COMPLETE;
}
else
{
ptrCallBack.dwNIMEvent = QPSK_CALLBACK_STS_DROPPED;
}
CSQPSKCallback(bTunerIndex, &ptrCallBack);
g_dwNIMState[bTunerIndex] = DROPPED;
break;
default: /* ignore all other type of messages */
break;
}
break; /* End of Waiting State */
case CONNECTED: /* Start of Connected State */
#ifdef QPSK_DEBUG
//CSTRACE(INFO_LEVEL,"[HDIQPSK]Current NIM Status:CONNECTED.\n");
#endif
switch (dwMessage[0])
{
case DMD_DROP_REQUEST_MSG_ID:
g_dwNIMState[bTunerIndex] = DROPPED;
ptrCallBack.dwNIMEvent = QPSK_CALLBACK_SIGNAL_DROPPED;
CSQPSKCallback( bTunerIndex, &ptrCallBack);
/*
Added by yuxibo 2006.02.07
Reset 'g_TQPSKChannelCopy' and 'g_TQPSKChannelCopy1'
after receiving 'DMD_DROP_REQUEST_MSG_ID' message.
*/
memset( g_TQPSKChannelCopy, -1, sizeof( g_TQPSKChannelCopy));
memset( g_TQPSKChannelCopy1, -1, sizeof( g_TQPSKChannelCopy1));
break;
case DMD_CONNECT_REQUEST_MSG_ID:
CSClear(bTunerIndex);
CSQPSKSetQPSKParameter( bTunerIndex, g_TQPSKChannelCopy[bTunerIndex] );
CSQPSKDiSEqCOperation(bTunerIndex);
CSQPSKSetChannelParameter( bTunerIndex, &ChannelParam);
ptrCallBack.dwFrequency = g_TQPSKChannelCopy1[bTunerIndex].dwFreqency;
ptrCallBack.dwSymbolRate = g_TQPSKChannelCopy1[bTunerIndex].dwSymbolRate;
nRet = CSQPSKSearchingSignal( bTunerIndex, &ChannelParam );
CSTRACE(QPSK_DEBUG_LEVEL, "[HDIQPSK]CSQPSKAcquisitionTask nRet = %d\r\n", nRet);
if( nRet == CSQPSK_SUCCESS )
{
g_dwNIMState[bTunerIndex] = CONNECTED;
ptrCallBack.dwNIMEvent = QPSK_CALLBACK_SIGNAL_CONNECTED;
CSQPSKCallback( bTunerIndex, &ptrCallBack);
}
else if(nRet == CSQPSK_FAILURE)
{
g_dwNIMState[bTunerIndex] = WAITING;
ptrCallBack.dwNIMEvent = QPSK_CALLBACK_SIGNAL_SEARCHING;
CSQPSKCallback(bTunerIndex, &ptrCallBack);
}
break;
case DMD_TIMEOUT_MSG_ID:
if (CSQPSKCheckNIMLost(bTunerIndex)== 0)
{
g_dwNIMState[bTunerIndex] = WAITING;
ptrCallBack.dwNIMEvent = QPSK_CALLBACK_SIGNAL_LOST;
CSQPSKCallback(bTunerIndex, &ptrCallBack);
}
break;
case DMD_CONNECT_SAME_MSG_ID:
#ifdef QPSK_DEBUG
//CSTRACE(INFO_LEVEL,"[HDIQPSK]Same Signal No need to Lock.\n");
#endif
g_dwNIMState[bTunerIndex] = CONNECTED;
ptrCallBack.dwNIMEvent = QPSK_CALLBACK_SIGNAL_CONNECTED;
CSQPSKCallback(bTunerIndex, &ptrCallBack);
break;
case DMD_STS_MSG_ID:
/*do search the sky here*/
CSClear(bTunerIndex);
CSClear(bTunerIndex);
if (STSSearch(bTunerIndex, dwMessage [2]) == CSQPSK_SUCCESS)
{
ptrCallBack.dwNIMEvent = QPSK_CALLBACK_STS_COMPLETE;
}
else
{
ptrCallBack.dwNIMEvent = QPSK_CALLBACK_STS_DROPPED;
}
CSQPSKCallback(bTunerIndex, &ptrCallBack);
g_dwNIMState[bTunerIndex] = DROPPED;
break;
default: /* ignore all other type of messages */
break;
}
break; /* End of Connected State */
default: /* this is just for completeness of switch statement */
break;
} /* end of switch(NIMState) */
} /* end of while(TRUE) loop */
}
#else
static void CSQPSKAcquisitionTask( CSHDITunerIndex bTunerIndex )
{
DWORD dwMessage[4];
int nRet;
QPSKCallbackMessage ptrCallBack;
CSQPSKCHANNEL ChannelParam;
ptrCallBack.bTunerIndex = bTunerIndex;
while (TRUE)
{
/* Check for a message if none then block until a message arrive */
#ifdef QPSK_DEBUG
CSTRACE( QPSK_DEBUG_LEVEL, "prepare CSReceiveMsg\r\n");
#endif
nRet = CSReceiveMsg( g_hCSQPSKQueueID[bTunerIndex], (PVOID)dwMessage, 16, 1000);
if ( nRet != CS_OSP_SUCCESS )
{
dwMessage[0] = DMD_TIMEOUT_MSG_ID;
#ifdef QPSK_DEBUG
//CSTRACE( QPSK_DEBUG_LEVEL, "[HDIQPSK]receive timeout message status = %d\r\n", g_dwNIMState[bTunerIndex]);
#endif
}
else
{
#ifdef QPSK_DEBUG
//CSTRACE( QPSK_DEBUG_LEVEL, "[HDIQPSK]receive other message = %d, status = %d\r\n", dwMessage[0], g_dwNIMState[bTunerIndex]);
#endif
}
/*del by th on 070306 because no need to set LNB index here
if ( dwMessage[2] == CS_LOCK_METHOD_SATCR)
{
ucTunerInputLNB[bTunerIndex] = dwMessage[3];
}*/
switch (g_dwNIMState[bTunerIndex])
{
case DROPPED:
#ifdef QPSK_DEBUG
//CSTRACE( INFO_LEVEL, "[HDIQPSK]Current NIM Status:DROPPED\n");
#endif
switch (dwMessage[0])
{
case DMD_CONNECT_REQUEST_MSG_ID:
CSClear(bTunerIndex);
CSQPSKSetQPSKParameter( bTunerIndex, g_TQPSKChannelCopy[bTunerIndex] );/*copy ---> copy1*/
CSQPSKDiSEqCOperation(bTunerIndex);/*ODU operate*/
CSQPSKSetChannelParameter( bTunerIndex, &ChannelParam);/*set IF value which to be lock*/
ptrCallBack.dwFrequency = g_TQPSKChannelCopy1[bTunerIndex].dwFreqency;
ptrCallBack.dwSymbolRate = g_TQPSKChannelCopy1[bTunerIndex].dwSymbolRate;
nRet = CSQPSKSearchingSignal( bTunerIndex, &ChannelParam );
CSTRACE(QPSK_DEBUG_LEVEL, "[HDIQPSK]CSQPSKAcquisitionTask nRet = %d\r\n", nRet);
if( CSQPSK_SUCCESS == nRet )
{
#ifdef QPSK_DEBUG
//CSTRACE( INFO_LEVEL, "[HDIQPSK]Singal found from DROPPED NIM status.\n");
#endif
g_dwNIMState[bTunerIndex] = CONNECTED;
ptrCallBack.dwNIMEvent = QPSK_CALLBACK_SIGNAL_CONNECTED;
CSQPSKCallback(bTunerIndex, &ptrCallBack);
}
else if( CSQPSK_FAILURE == nRet )
{
#ifdef QPSK_DEBUG
//CSTRACE( INFO_LEVEL, "[HDIQPSK]Singal not found from DROPPED NIM status.\n");
#endif
g_dwNIMState[bTunerIndex] = WAITING;
ptrCallBack.dwNIMEvent = QPSK_CALLBACK_SIGNAL_SEARCHING;
CSQPSKCallback(bTunerIndex, &ptrCallBack);
}
break;
case DMD_STS_MSG_ID:
/*do search the sky here*/
CSClear(bTunerIndex);
if (STSSearch(bTunerIndex, dwMessage [2]) == CSQPSK_SUCCESS)
{
ptrCallBack.dwNIMEvent = QPSK_CALLBACK_STS_COMPLETE;
}
else
{
ptrCallBack.dwNIMEvent = QPSK_CALLBACK_STS_DROPPED;
}
CSQPSKCallback(bTunerIndex, &ptrCallBack);
g_dwNIMState[bTunerIndex] = DROPPED;
break;
default:
break;
}
break;
case WAITING: /* Start of Waiting State */
#ifdef QPSK_DEBUG
//CSTRACE(INFO_LEVEL,"[HDIQPSK]Current NIM Status:WAITING.\n");
#endif
switch (dwMessage[0])
{
/*
Modify by yuxibo 2006.02.07
'g_TQPSKChannelCopy1' should NOT be updated when 'DMD_TIMEOUT_MSG_ID'
received, so 'CSQPSKSetQPSKParameter' should not be called when
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -