附录:源程序
头文件:
#ifndef HDC2400_H
#define HDC2400_H
enum /*枚举*/
{
n_HDC2400MinCode
n_HDC2400PrePtt
n_HDC2400PostPtt
n_HDC2400Emergency
};
enum
{
n_FixMsgHDC2400 /* ①固定短消息0000b
n_UserMsgHDC2400 ②用户短消息0001b
n_GPSMsgHDC2400 ③GPS短消息0010b
n_PatrolMsgHDC2400 ④巡更短消息0011b
n_StatusMsgHDC2400 ⑤固定状态信息0100b */
};
#define NewCode 1 /*新代号*/ /*HDC2400 Function Code*/
/*system Function,*/
#define HDC_Cancel _00000000B
#define HDC_Emergency _00000001B
#define HDC_Kill _00000010B
#define HDC_Stun _00000011B /*TC900 delete this function */
#define HDC_Active _00000100B
#define HDC_PhoneOFF _00000101B /*un use for temp*/
#define HDC_PrePTT _00000110B
#define HDC_PostPTT _00000111B
#define HDC_Status_Inq _00001000B /*same as TC700*/
#define HDC_SafeCheck_Inq _00001001B /*send is same ;receive is differnt*/ #define HDC_AutoContact _00001010B
#define HDC_ChangeCh_Inq _00001011B /*no use for temp*/
#define HDC_SystemCodeIdleC _00001100B
#define HDC_SystemCodeIdleD _00001101B
#define HDC_SystemCodeIdleE _00001110B
#define HDC_SystemCodeIdleF _00001111B
/*Call Function*/
#define HDC_SelCallAll _00010000B /*broadcast*/
#define HDC_SelCallInd _00010001B
#define HDC_SelCallGroup _00010010B
#define HDC_AlertCallInd _00010011B
#define HDC_PhoneCall_Inq _00010100B
#define HDC_MutiCall _00010101B
#define HDC_SelCallZone _00010110B
/*CALL FUNCTION*/
#define HDC_ACK_Emergency _00100000B
#define HDC_ACK_Gen _00100001B /*many function use this code*/
#define HDC_ACK_SafeCheck _ 000 0010b /*delete*/
#define HDC_ACK_CodeIdle2 _00100010B
#define HDC_ACK_ManualSafe _00100011B
#define HDC_ACK_RTStatus _00100100B /*acknowledge of real time status request*/ #define HDC_ACK_AutoContact _00100101B
#define HDC_ACK_StunOK _00100110B
#define HDC_ACK_UnstunOK _00100111B
#define HDC_ACK_EmergencyFail _00101000B
#define HDC_ACK_GenFail _00101001B
#define HDC_ACK_SafeFail _00101010B
#define HDC_ACK_ManualFail _00101011B
#define HDC_ACK_StatusFail _00101100B
#define HDC_ACK_StunFail _00101101B
#define HDC_ACK_UnstunFail _00101110B
/*Data Transmit*/
#define HDC_DataInd _01000000B/*have receive ack, start data send*/
#define HDC_DataReq _01000001B/*1 step, request*/
#define HDC_DataAck _01000010B/*Respond*/
enum
{
n_IndCallType
n_GroupCallType
n_ZoneCallType
n_AllCallType
};
struct sHDC2400CallList
{
INT16U pPrevListPointer ; /* 0x00 Individual
0x01 Group
0x02 Local Broadcast
0x03 Global Broadcast */ INT16U pNextListPointer ;
INT8U cAlias[16]; /*ASCII*/
INT8U cIDType; /* Reserved for ID Type 0x04-0xff */ INT16U iRevertChannel; /* 0x0000*/
INT8U cZoneID:4; /*0x1-0x100*/
INT8U cReserved :4 ; /*Reserved 0x0100-0xffff */
INT16U iRadioID; /*0x0001-0x9999*/
INT8U cAlertTone; /*0x00,0x01-0x08*/
};
extern utMskCommandBlock uRxFirstCommandBlock; /*外部变量*/ extern utMskCommandBlock uRxLastCommandBlock;
extern utMskCommandBlock uRxHaveRecCommandBlock;
extern utMskCommandBlock uTxFirstCommandBlock;
extern utMskCommandBlock uRxLastCommandBlockBak;
extern utMskCommandBlock uRx2ndCommandBlock;
extern utMskCommandBlock uTxHaveSendCommandBlock;
extern struct sHDC2400CallList _far * pCurHDC2400CallList;
extern void HDC2400Initial(INT8U cSystemIndex);
extern void HDC2400FunctionStart(INT8U cFunctionType);
#endif
程序:
#include "../USER/IMG_USER.H"
#include "../MskSendReceive/MskSendReceive.h"
#include "../LCD/Menu.h"
#include "../TaskIMG/TaskIMG.h"
#include "../Destination/Destination.h"
#include "../TASKTX/TxDispose.H"
#include "../CHSWITCH/ChannelSwitch.h"
#include "../HDC1200/HDC1200.h"
#include "..\Emergency\Emergency.h"
#include "../Lib/DataStruct.H"
#include "../Lib/GlobleVariable.h"
#include "../TASKLED/LED.H"
#include "../Lib/DataStruct.H"
#include "../TASKBEEP/BEEP.h"
#include "../HDC2400/HDC2400.h"
#include "../HDC2400/IMG_HDC2400.h"
void IMG_HDC_Cancel(void);/*无返回值*/ void IMG_HDC_Emergency(void);
void IMG_HDC_Kill(void);
void IMG_HDC_Stun(void);
void IMG_HDC_Active(void);
void IMG_HDC_PhoneOFF(void);
void IMG_HDC_PrePTT(void);
void IMG_HDC_PostPTT(void);
void IMG_HDC_Status_Inq(void);
void IMG_HDC_SafeCheck_Inq(void);
void IMG_HDC_AutoContact(void);
void IMG_HDC_ChangeCh_Inq(void);
void IMG_HDC_SelCallAll(void);
void IMG_HDC_SelCallPer_Inq(void);
void IMG_HDC_SelCallGro(void);
void IMG_HDC_AlerCalltPer(void);
void IMG_HDC_PhoneCall_Inq(void);
void IMG_HDC_SelCallZone(void);
void IMG_HDC_ACK_Emergency(void); void IMG_HDC_ACK_ManualSafe(void); void IMG_HDC_ACK_RTStatus(void);
void IMG_HDC_ACK_AutoContact(void); void IMG_HDC_ACK_StunOK(void);
void IMG_HDC_ACK_UnstunOK(void); void IMG_HDC_ACK_EmergencyFail(void); void IMG_HDC_ACK_SafeFail(void);
void IMG_HDC_ACK_ManualFail(void); void IMG_HDC_ACK_StatusFail(void);
void IMG_HDC_ACK_StunFail(void);
void IMG_HDC_ACK_UnstunFail(void);
void IMG_HDC_DataInd(void);
void IMG_HDC_DataReq(void);
void IMG_HDC_DataAck(void);
void IMG_HDC_SelCallInd_Inq(void);
void IMG_HDC_RadioCheck(void);
void IMG_HDC_AlertCallInd_Inq(void);
void IMG_HDC_AlertCallGroup(void);
void IMG_HDC_AlertCallZone(void);
void IMG_HDC_AlertCallAll(void);
void IMG_HDC_RmtMoniPer(void);
void IMG_HDC_RmtMoniPer_Inq(void);
void IMG_HDC_EmgRmtMoniPer_Inq(void);
void IMG_HDC_RptAccess_Inq(void);
utMskCommandBlock uRxFirstCommandBlock; utMskCommandBlock uRxLastCommandBlock; utMskCommandBlock uRxLastCommandBlockBak; utMskCommandBlock uRx2ndCommandBlock; utMskCommandBlock uRxHaveRecCommandBlock; utMskCommandBlock uTxFirstCommandBlock; utMskCommandBlock uTxHaveSendCommandBlock;
INT16U iDecodeFrameStep =0;
INT8U bGetHDC2400FunctionValid = 0;
struct sHDC2400CallList _far * pCurHDC2400CallList;
/************************************************* Function: EndMskDemodulate
Description: End demodulate the msk(结束解调,检波MSK信号)CAlls:
CAlled By:
Input:
Output:
MCU I/O:
Others:
*************************************************/
void EndMskDemodulate(void)
{
INT8U i;
pMskRcvEnd = cMskRcvData;
reset the pointer
for(i = 0; i <= 15; i++)
cMskRcvData[i] = 0;
bGetHDC2400FunctionValid = 0;
/* bFlameDetectValid = 0;
bMskCloneEnable = 0;
cMskDecodeType = 0;
cMdcFunctionType = 0;
bMSKSignalHaveDecode = 0;
iDecodeFrameStep = 0;
MskModeState = 0;
bGetFunction = 0;
bDataSendErrorFlag = 0;
bFSL = 0;
Ak2346ByteSend(0,cAk2346Ctrl1.All);
Ak2346ByteSend(1,cAk2346Ctrl2.All);
Ak2346ByteSend(3,cAk2346V olume2); */
}
/********************************************************************** * Function: IMG_HDC2400_FunctionCode
* Description: a function pointer(指针)array
* CAlls: serial function process
* CAlled By: HDC2400DecodePolling()
* Input: sRcvMskCommandBlock
* Output: serial function
* MCU I/O: None
* Others: None
***********************************************************************/ void (*const IMG_HDC2400_FunctionCode[])(void) =
{
IMG_HDC_Cancel
IMG_HDC_Emergency
IMG_HDC_Kill
IMG_HDC_Stun /**/
IMG_HDC_Active
IMG_HDC_PhoneOFF
IMG_HDC_PrePTT
IMG_HDC_PostPTT
IMG_HDC_Status_Inq
IMG_HDC_SafeCheck_Inq
IMG_HDC_AutoContact
IMG_HDC_ChangeCh_Inq
IMG_HDC_SelCallAll
IMG_HDC_SelCallPer_Inq
IMG_HDC_SelCallGro
IMG_HDC_AlerCalltPer
IMG_HDC_PhoneCall_Inq
IMG_HDC_MutiCall
IMG_HDC_SelCallZone
IMG_HDC_CallCodeIdle8
IMG_HDC_CallCodeIdle9
IMG_HDC_CallCodeIdleA
IMG_HDC_CallCodeIdleB
IMG_HDC_CallCodeIdleC
IMG_HDC_CallCodeIdleD
IMG_HDC_CallCodeIdleE
IMG_HDC_CallCodeIdleF
IMG_HDC_ACK_Emergency
IMG_HDC_ACK_ManualSafe
IMG_HDC_ACK_RTStatus
IMG_HDC_ACK_AutoContact
IMG_HDC_ACK_StunOK
IMG_HDC_ACK_UnstunOK
IMG_HDC_ACK_EmergencyFail
IMG_HDC_ACK_GenFail
IMG_HDC_ACK_SafeFail
IMG_HDC_ACK_ManualFail
IMG_HDC_ACK_StatusFail
IMG_HDC_ACK_StunFail
IMG_HDC_ACK_UnstunFail
IMG_HDC_DataInd
IMG_HDC_DataReq
IMG_HDC_DataAck
IMG_HDC_SelCallInd_Inq
IMG_HDC_RadioCheck
IMG_HDC_AlertCallInd_Inq
IMG_HDC_AlertCallGroup
IMG_HDC_AlertCallZone
IMG_HDC_AlertCallAll
IMG_HDC_RmtMoniPer
IMG_HDC_RmtMoniPer_Inq
IMG_HDC_EmgRmtMoniPer_Inq
IMG_HDC_RptAccess_Inq
/********************************************************************** * Function: HDC2400FunctionStart(启动)
* Description: PTT.Emergency Function start
* CAlls: None
* CAlled By: user.c
* Input: cFunctionType
* Output: serial function
* MCU I/O: None
* Others: None
***********************************************************************/ void HDC2400FunctionStart(INT8U cFunctionType)
{
INT8U cFunctionTypeTemp;
cFunctionTypeTemp = cFunctionType ;
if( cFunctionTypeTemp > 3)
{
return ;
}
else
{
uTxFirstCommandBlock = *(utMskCommandBlock *)0;
/*Clear the MSKCommandBlock*/
}
if(cFunctionTypeTemp == n_HDC2400PrePtt)
{
uTxFirstCommandBlock.sMskCommandBlock.uOperatMode.cOperatMode =
HDC_PrePTT;
}
else if(cFunctionTypeTemp == n_HDC2400PostPtt)
{
uTxFirstCommandBlock.sMskCommandBlock.uOperatMode.cOperatMode =
HDC_PostPTT;
}
else if (cFunctionTypeTemp == n_HDC2400Emergency)
{
uTxFirstCommandBlock.sMskCommandBlock.uOperatMode.cOperatMode =
HDC_Emergency;
}
cTaskTxNoSelect = n_TaskTxHDC2400;
}
/********************************************************************** * Function: HDC2400Initial(初始化)
* Description: change channel ; initial HDC2400 System data
* CAlls: None
* CAlled By: CHSwicth
* Input: cSystemIndex
* Output: menu data
* MCU I/O: None
* Others: None
***********************************************************************/ #define n_HeadAddrHDC2400System n_AddrHDC2400SystemStart
#define n_HeadAddrHDC2400CallList 0xbbbb
void HDC2400Initial(INT8U cSystemIndex)
{
INT8U cSystemNo;
cSystemNo = cSystemIndex - 1;
/*real List start address,from first System List*/
pCurHDC2400System= (struct HDC2400System _far*) n_HeadAddrHDC2400System ;
pCurHDC2400System = (pCurHDC2400System + cSystemNo) ;
}
/**********************************************************************
* Function: HDC2400DecodeConditionJudge(解译码条件判断)
* Description: HDC2400 Decode conditon
* CAlls: None
* CAlled By: HDC2400DecodePolling
* Input: ChPersonality
* Output: True-OK.
False- can't decode
* MCU I/O: None
* Others: None
***********************************************************************/ INT8U HDC2400DecodeConditionJudge(void)
{
/*Read Per Radio Data*/
return 1;
}
/**********************************************************************
* Function: HDC2400DecodePolling(解码查询检测)
* Description: Decode HDC2400
* CAlls: None
* CAlled By: TASK_CNT
* Input: cMSKRecDataBuf
* Output: FunctionCode
* MCU I/O: None
* Others: None
***********************************************************************/ void HDC2400DecodePolling(void)
{
INT8U i;
INT8U bConditionDecode = 0;
if((cMskDecodeType == 2)&& /*cur ch signalling is HDC2400*/
(g_PersonalityData.FstSigType==n_OptSignal_HDC2400))
{
return;
}
else
{ ;}
if (pMskRcvEnd >= pMskRcvStart+16)
{
for(i = 0;i < 16; i++)
{
cMskDecodeData[i] = 0;
}
DataSendDecode(cMskRcvData,cMskDecodeData);
OS_ENTER_CRITICAL();
for(i = 0;i <= (pMskRcvEnd-pMskRcvStart-16); i++)
{
cMskRcvData[i] = cMskRcvData[16+i];
}
pMskRcvEnd = pMskRcvEnd-16;
OS_EXIT_CRITICAL();
/* if (bDataSendErrorFlag)*/
{
/*Data Transmit,other process*/ //erro proccess of data send
EndMskDemodulate();
}
}
else
{
return;
}
/*Have received Function Frame*/
if(!bGetHDC2400FunctionValid)
{
/*store the source ID and get function type*/
bGetHDC2400FunctionValid = 1;
uRxFirstCommandBlock = *((utMskCommandBlock *)cMskDecodeData); }
else
{
/*store last frame (帧)data*/
uRxLastCommandBlock = *((utMskCommandBlock *)cMskDecodeData); }
/*bHdc2400NotTranspond=0;*/
iDecodeFrameStep ++ ;
if (iDecodeFrameStep == 2)
{
uRx2ndCommandBlock = * ((utMskCommandBlock *)cMskDecodeData);
}
else
{}
/*Kill and Revive Function no need match Decode Conditon*/
if((uRxFirstCommandBlock.sMskCommandBlock.uOperatMode.cOperatMode == HDC_Kill)
||((uRxFirstCommandBlock.sMskCommandBlock.uOperatMode.cOperatMode == HDC_Active)
/*&& bBeKillValid*/))/*golbal variable*/
{
bConditionDecode = 1;
}
else
{
bConditionDecode = HDC2400DecodeConditionJudge();
}
if ( bConditionDecode )
{
if ( uRxFirstCommandBlock.sMskCommandBlock.uOperatMode.cOperatMode
<= HDC_FunctionCodeMax )
{
IMG_HDC2400_FunctionCode
[uRxFirstCommandBlock.sMskCommandBlock.uOperatMode.cOperatMode]();
}
else
{}
}
else
{
EndMskDemodulate();
}
}
/**********************************************************************
* Function: IMG_HDC_Cancel(取消)
* Description: Decode HDC2400
***********************************************************************/
void IMG_HDC_Cancel(void)
{
/*pCurHDC2400CallList = new sHDC2400CallList;
undo; delete pCurHDC2400CallList;*/
}
/**********************************************************************
* Function: HDC2400GetTranspondID(获取转发)
* Description: Get the ID which you want to Acknowledge (确认)
* CAlls: None
* CAlled By: all Ack code Send
* Input: uRxFirstCommandBlock
* Output: uTxFirstCommandBlock
* MCU I/O: None
* Others: None
***********************************************************************/
INT8U cHDC2400AckDelayTime;
void HDC2400GetTranspondID()
{
/*Get the Destination ID*/
uTxFirstCommandBlock.sMskCommandBlock.uRegionalId.sRegionalId.hDesRegionalId =
uRxFirstCommandBlock.sMskCommandBlock.uRegionalId.sRegionalId.hSourceRegionalId;
uTxFirstCommandBlock.sMskCommandBlock.iDesId=
uRxFirstCommandBlock.sMskCommandBlock.iSourceId;
/*Get Source ID*/
uTxFirstCommandBlock.sMskCommandBlock.uRegionalId.sRegionalId.hSourceRegionalId = pCurHDC2400System->cZoneID;
uTxFirstCommandBlock.sMskCommandBlock.iSourceId=
pCurHDC2400System->iPrimaryID;
/*Start wait time counter*/
cHDC2400AckDelayTime = pCurHDC2400System->cAckDelayTime;
}
/**********************************************************************
* Function: HDC2400AckDelayTimeCounter(void)(确认延时计数器)
* Description: Ack Wait Timer
* CAlls: None
* CAlled By: HDC2400TimeCounter()
* Input: cHDC2400AckTime
* Output: cHDC2400Pretime
* MCU I/O: None
* Others: None
***********************************************************************/
void HDC2400AckDelayTimeCounter(void )
{
if( cHDC2400AckDelayTime )
{
if( --cHDC2400AckDelayTime == 0)
{
cTaskTxNoSelect = n_TaskTxHDC2400;
bHDC2400TxState = 1;
cHDC2400TxStep = n_HDC2400Pretime ;
}
else
{;}
}
else
{
return ;
}
}
/********************************************************************** * Function: IMG_HDC_Emergency(紧急情况)
* Description: Decode HDC2400
* CAlls: None
* CAlled By: IMG_HDC2400_FunctionCode
* Input: cMSKRecDataBuf
* Output: FunctionCode
* MCU I/O: None
* Others: None
***********************************************************************/ void IMG_HDC_Emergency(void)
{
if (pCurHDC2400System->bEmergencyDecode)
{
/*action*//*Indicate Emergency Status and Display ID */
/*Clear to Transpond */
HDC2400GetTranspondID();
uTxFirstCommandBlock.sMskCommandBlock.uOperatMode.cOperatMode =
HDC_ACK_Emergency;
}
else
{
return;
}
}
/********************************************************************** * Function: HDC2400JudgePrimaryID(判断原始ID)
* Description: compare the HDC2400 primary code
* CAlls: None
* CAlled By: IMG_HDC2400_FunctionCode
* Input: cMSKRecDataBuf
* Output: true ;flase
* MCU I/O: None
* Others: None
***********************************************************************/
INT8U HDC2400JudgePrimaryID(void)
{
if((pCurHDC2400System->cZoneID ==
uRxFirstCommandBlock.sMskCommandBlock.uRegionalId.sRegionalId.hDesRegionalId) &&(pCurHDC2400System->iPrimaryID ==
uRxFirstCommandBlock.sMskCommandBlock.iDesId) )
{
return n_TRUE;
}
else
{
EndMskDemodulate();
return n_FALSE;
}
}
/**********************************************************************
* Function: HDC2400JudgeGroupID(判断组ID)
* Description: compare the HDC2400 code
* CAlls: None
* CAlled By: IMG_HDC2400_FunctionCode
* Input: None
* Output: true ;flase
* MCU I/O: None
* Others: None
***********************************************************************/
INT8U HDC2400JudgeGroupID(void) Group
{
INT8U i;
for(i = 0; i < 5 ; i ++ ) /*five Group ID*/
{
if((pCurHDC2400System->cZoneID ==
uRxFirstCommandBlock.sMskCommandBlock.uRegionalId.sRegionalId.hDesRegionalId) &&(pCurHDC2400System->iGroupID[i] ==
uRxFirstCommandBlock.sMskCommandBlock.iDesId) )
{
return n_TRUE;
}
else
{}
}
EndMskDemodulate();
return n_FALSE;
}
/********************************************************************** * Function: HDC2400JudgeStunPassword(判断遥晕密码)
* Description: compare the HDC2400 Stun Password
* CAlls: None
* CAlled By: IMG_HDC2400_FunctionCode
* Input: None
* Output: true ;flase
* MCU I/O: None
* Others: None
***********************************************************************/ INT8U HDC2400JudgeStunPassword(void)
{
INT8U i;
for( i = 0; i < 3; i++ )
{
if ( uRx2ndCommandBlock.cMskCommandBlock[i] !=
pCurHDC2400System->cStunPassword[i])
{
EndMskDemodulate();
return n_FALSE;
}
else
{}
}
return n_TRUE;
}
/********************************************************************** * Function: IMG_HDC_Kill(遥毙)
* Description: Decode HDC2400
* CAlls: None
* CAlled By: IMG_HDC2400_FunctionCode
* Input: cMSKRecDataBuf
* Output: FunctionCode
* MCU I/O: None
* Others: None
***********************************************************************/ void IMG_HDC_Kill(void)
{
if(pCurHDC2400System->bStunEnable)
{
if(iDecodeFrameStep == 1)
{
if( HDC2400JudgePrimaryID())
{;}
else
{
/*ID don't match*/
EndMskDemodulate();
}
}
else if(iDecodeFrameStep == 2)
{
/*the password is match*/
if (HDC2400JudgeStunPassword())
{ /*ack the complete code*/
cBeepTaskNum = n_KillBeep;
HDC2400GetTranspondID();
uTxFirstCommandBlock.sMskCommandBlock.uOperatMode.cOperatMode =
HDC_ACK_StunOK;
}
/*password do not match*/
else
{
/*ack Fail code*/
HDC2400GetTranspondID();
uTxFirstCommandBlock.sMskCommandBlock.uOperatMode.cOperatMode =
HDC_ACK_StunFail;
}
}
else
{}
}
else
{
EndMskDemodulate();
return ;
}
}
/**********************************************************************
* Function: IMG_HDC_Active(激活)
* Description: Revive the Radio be Killed
* CAlls: None
* CAlled By: IMG_HDC2400_FunctionCode
* Input: pCurHDC2400System
* Output: Radio Status
* MCU I/O: None
* Others: None
***********************************************************************/
void IMG_HDC_Active(void)
{
/*not in kill mode, return*/
if(1) /*( !bKillValid)*/
{
return ;
}
else
{;}
if(pCurHDC2400System->bUnstunEnable)
{
/*first command */
if(iDecodeFrameStep == 1)
{
if( HDC2400JudgePrimaryID())
{
/*Stun command decode successed*//*Output Flag*/ ;
}
else
{
/*ID don't match*/
EndMskDemodulate();
}
}
else if(iDecodeFrameStep == 2)
{
/*the password is match*/
if (HDC2400JudgeStunPassword())
{
/*cBeepTaskNum = n_ReviveBeep;*/
/*ack the complete code*/
HDC2400GetTranspondID();
uTxFirstCommandBlock.sMskCommandBlock.uOperatMode.cOperatMode =
HDC_ACK_StunOK;
}
/*password do not match*/
else
{
/*ack Fail code*/
HDC2400GetTranspondID();
uTxFirstCommandBlock.sMskCommandBlock.uOperatMode.cOperatMode =
HDC_ACK_StunFail;
}
else
{}
}
else
{
EndMskDemodulate();
}
}
/********************************************************************** * Function: HDC2400DecodePolling(解码查询检测)
* Description: Decode HDC2400
* CAlls: None
* CAlled By: IMG_HDC2400_FunctionCode
* Input: cMSKRecDataBuf
* Output: FunctionCode
* MCU I/O: None
* Others: None
***********************************************************************/ void IMG_HDC_PhoneOFF(void)
{ ;}
/********************************************************************** * Function: IMG_HDC_PrePTT(发射)
* Description: Decode HDC2400
* CAlls: None
* CAlled By: IMG_HDC2400_FunctionCode
* Input: cMSKRecDataBuf
* Output: FunctionCode
* MCU I/O: None
* Others: None
***********************************************************************/ INT8U cInsertShowBuffer[2][17] = 0;
void IMG_HDC_PrePTT(void)
{
if(pCurHDC2400System->bPTTIDDecode)
{
/*Display the decode Id*/
/*First Line Zone ID. 2nd Line Primary ID*/
if(0) /*current menu status*/
{
/*Do not display the Ptt ID while in menu mode */
return;
}
{}
/*bHDC2400PttIDDisp = 1;*/
/*cHDC2400PttIDDispTime = 10; */ /*in step of 1s*/
/*fetch all of the zone id; becide source and also including des*/
/*strcpy(cInsertShowBuffer[0],
&(uRxFirstCommandBlock.sMskCommandBlock.uRegionalId.cRegionalId));
strcpy(cInsertShowBuffer[1],
&(uRxFirstCommandBlock.sMskCommandBlock.iSourceId));*/
}
else
{
return ;
}
}
/**********************************************************************
* Function: IMG_HDC_PostPTT(发射)
* Description: Decode HDC2400
* CAlls: None
* CAlled By: IMG_HDC2400_FunctionCode
* Input: cMSKRecDataBuf
* Output: FunctionCode
* MCU I/O: None
* Others: None
***********************************************************************/
void IMG_HDC_PostPTT(void)
{
if(pCurHDC2400System->bPTTIDDecode)
{
/*Display the decode Id*/
/*First Line Zone ID. 2nd Line Primary ID*/
if(0) /*current menu status*/
{
/*Do not display the Ptt ID while in menu mode */
return;
}
else
{}
/*bHDC2400PttIDDisp = 1;*/
/*cHDC2400PttIDDispTime = 10; */ /*in step of 1s*/
/*strcpy(cInsertShowBuffer[0],&
(uRxFirstCommandBlock.sMskCommandBlock.uRegionalId.sRegionalId.hSourceRegionalI
d));
strcpy(cInsertShowBuffer[1],&
(uRxFirstCommandBlock.sMskCommandBlock.iSourceId));*/ }
else
{
return ;
}
}
/********************************************************************** * Function: IMG_HDC_Status_Inq(状况)
* Description: Decode HDC2400
* CAlls: None
* CAlled By: IMG_HDC2400_FunctionCode
* Input: cMSKRecDataBuf
* Output: FunctionCode
* MCU I/O: None
* Others: None
***********************************************************************/ void IMG_HDC_Status_Inq(void)
{
INT8U i,cStatusInqItem;
if(pCurHDC2400System->bStatusInquiryDecode)
{
if(iDecodeFrameStep == 1)
{
if(HDC2400JudgePrimaryID())
{ }
else
{
EndMskDemodulate();
/*ID do not match*/;
}
}
else if(iDecodeFrameStep == 2)
{
for(i = 0; i < 6 ; i = i + 2)
{
/*chose which item you want to check*/
cStatusInqItem =uRx2ndCommandBlock.cMskCommandBlock[i];
switch (cStatusInqItem)
{
case 0 : break;
default : break;