⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ecm.c.bak

📁 有线电视系统前端设备复用器原代码。 用语接受卫星信号
💻 BAK
📖 第 1 页 / 共 5 页
字号:
/*-------------------------------------------------------------------------------------*/
/*ecm.c                                                                                */
/*-------------------------------------------------------------------------------------*/
#include "psos.h"
#include "pna.h"
#include "caproc.h"
#include "repid.h"
#include "constant.h"

#define  ECMG_NOERROR      0
#define  ECMG_SOCKETERROR  1
#define  ECMG_TIMEOUTERROR 2

extern CA_CONFIG g_ca_config;

extern unsigned long ulMultEMM;

/*char   ecmgsendbuf[CA_MAX_BUFFER_LENGTH];*/
/*char   ecmgrecvbuf[CA_MAX_BUFFER_LENGTH];*/

int    g_ecmg_use_masterslave[3];
int    g_ecmg_connected[3];

CA_ECM_DATA					g_ecm_data[3];
CA_ECMG_CHANNEL_STATUS		g_ecmg_channel_status[3];
CA_ECMG_STREAM_STATUS_LIST	g_ecmg_stream_status_list[3];

int                     g_ecm_index;
unsigned char           g_CW_List[32*8],g_CW_List_Backup[32*8],g_CW_List_Backup2[32*8];

unsigned char           g_wanted_cp_number[3],g_current_cp_number =0;

unsigned short          g_ecmg_waitcommand[3];

int          			g_first_CW = 0;
extern  int 		    g_IsResetStatue;
unsigned char   	    g_CurrentSaveCpNum;

extern int       g_has_valid_ca_config;
extern int       g_has_valid_ca1_config;
extern int       g_has_valid_ca2_config;

/*发送通道状态作为测试应答*/
int ecmgSendChannelStatus(int socket,unsigned char ucCACount)
{
	CA_MESSAGE_HEAD      *pHead;
	CA_MESSAGE_ITEM_HEAD *pItemHead;
	int                  MsgLen=0;
	int i;
	int                  rc;

	char   EcmgSendBuf[CA_MAX_BUFFER_LENGTH];	

	pHead=(CA_MESSAGE_HEAD *)EcmgSendBuf;
	pHead->protocol_version=0x02;
	pHead->message_type    =ECMG2SCS_CHANNEL_STATUS;
	pHead->message_length  =0;

	pItemHead=(CA_MESSAGE_ITEM_HEAD *)((char *)pHead + sizeof(CA_MESSAGE_HEAD));

	pItemHead->parameter_type=ECMG2SCS_ECM_channel_ID;
	pItemHead->parameter_length=2;
	*(unsigned short *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD))=g_ecmg_channel_status[ucCACount].ECM_channel_ID;
	pHead->message_length  +=sizeof(CA_MESSAGE_ITEM_HEAD) + pItemHead->parameter_length;
	pItemHead=(CA_MESSAGE_ITEM_HEAD *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD) + pItemHead->parameter_length);
	
	pItemHead->parameter_type=ECMG2SCS_section_TSpkt_flag;
	pItemHead->parameter_length=1;
	*(unsigned char *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD))=g_ecmg_channel_status[ucCACount].section_TSpkt_flag;
	pHead->message_length  +=sizeof(CA_MESSAGE_ITEM_HEAD) + pItemHead->parameter_length;
	pItemHead=(CA_MESSAGE_ITEM_HEAD *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD) + pItemHead->parameter_length);
	
	pItemHead->parameter_type=ECMG2SCS_delay_start;
	pItemHead->parameter_length=2;
	*(unsigned short *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD))=g_ecmg_channel_status[ucCACount].delay_start;
	pHead->message_length  +=sizeof(CA_MESSAGE_ITEM_HEAD) + pItemHead->parameter_length;
	pItemHead=(CA_MESSAGE_ITEM_HEAD *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD) + pItemHead->parameter_length);
	
	pItemHead->parameter_type=ECMG2SCS_delay_stop;
	pItemHead->parameter_length=2;
	*(unsigned short *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD))=g_ecmg_channel_status[ucCACount].delay_stop;
	pHead->message_length  +=sizeof(CA_MESSAGE_ITEM_HEAD) + pItemHead->parameter_length;
	pItemHead=(CA_MESSAGE_ITEM_HEAD *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD) + pItemHead->parameter_length);
	
	pItemHead->parameter_type=ECMG2SCS_ECM_rep_period;
	pItemHead->parameter_length=2;
	*(unsigned short *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD))=g_ecmg_channel_status[ucCACount].ECM_rep_period;
	pHead->message_length  +=sizeof(CA_MESSAGE_ITEM_HEAD) + pItemHead->parameter_length;
	pItemHead=(CA_MESSAGE_ITEM_HEAD *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD) + pItemHead->parameter_length);
	
	pItemHead->parameter_type=ECMG2SCS_max_streams;
	pItemHead->parameter_length=2;
	*(unsigned short *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD))=g_ecmg_channel_status[ucCACount].max_streams;
	pHead->message_length  +=sizeof(CA_MESSAGE_ITEM_HEAD) + pItemHead->parameter_length;
	pItemHead=(CA_MESSAGE_ITEM_HEAD *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD) + pItemHead->parameter_length);
	
	pItemHead->parameter_type=ECMG2SCS_min_CP_duration;
	pItemHead->parameter_length=2;
	*(unsigned short *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD))=g_ecmg_channel_status[ucCACount].min_cp_duration;
	pHead->message_length  +=sizeof(CA_MESSAGE_ITEM_HEAD) + pItemHead->parameter_length;
	pItemHead=(CA_MESSAGE_ITEM_HEAD *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD) + pItemHead->parameter_length);
	
	pItemHead->parameter_type=ECMG2SCS_lead_CW;
	pItemHead->parameter_length=1;
	*(unsigned char *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD))=g_ecmg_channel_status[ucCACount].lead_CW;
	pHead->message_length  +=sizeof(CA_MESSAGE_ITEM_HEAD) + pItemHead->parameter_length;
	pItemHead=(CA_MESSAGE_ITEM_HEAD *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD) + pItemHead->parameter_length);
	
	pItemHead->parameter_type=ECMG2SCS_CW_per_msg;
	pItemHead->parameter_length=1;
	*(unsigned char *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD))=g_ecmg_channel_status[ucCACount].CW_per_msg;
	pHead->message_length  +=sizeof(CA_MESSAGE_ITEM_HEAD) + pItemHead->parameter_length;
	pItemHead=(CA_MESSAGE_ITEM_HEAD *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD) + pItemHead->parameter_length);
	
	pItemHead->parameter_type=ECMG2SCS_max_comp_time;
	pItemHead->parameter_length=2;
	*(unsigned short *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD))=g_ecmg_channel_status[ucCACount].max_comp_time;
	pHead->message_length  +=sizeof(CA_MESSAGE_ITEM_HEAD) + pItemHead->parameter_length;
	pItemHead=(CA_MESSAGE_ITEM_HEAD *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD) + pItemHead->parameter_length);

	MsgLen=pHead->message_length + sizeof(CA_MESSAGE_HEAD);
	rc=ca_send(socket,EcmgSendBuf,MsgLen,g_ca_config.Para_Config[ucCACount].Network_Delay);
	if(rc!=MsgLen)
		return -1;
	else 
	{
		caSendLog(LOGTYPE_NORMAL,"ecmg: Send a channel status message,channelid=%d",g_ecmg_channel_status[ucCACount].ECM_channel_ID); 
		return rc;		
	}
}

/*发送流状态应答*/
int ecmgSendStreamStatus(int socket,unsigned short streamid,unsigned char ucCACount)
{
	CA_MESSAGE_HEAD      *pHead;
	CA_MESSAGE_ITEM_HEAD *pItemHead;
	int                  MsgLen=0;
	int i;
	int                  rc;

	char   EcmgSendBuf[CA_MAX_BUFFER_LENGTH];

	for(i=0;i<g_ecmg_stream_status_list[ucCACount].streamcount;i++)
	{
		if(g_ecmg_stream_status_list[ucCACount].streamlist[i].ECM_stream_ID==streamid)		
			break;		
	}
	pHead=(CA_MESSAGE_HEAD *)EcmgSendBuf;
	pHead->protocol_version=0x02;
	pHead->message_type    =ECMG2SCS_STREAM_STATUS;
	pHead->message_length  =0;

	pItemHead=(CA_MESSAGE_ITEM_HEAD *)((char *)pHead + sizeof(CA_MESSAGE_HEAD));

	pItemHead->parameter_type=ECMG2SCS_ECM_channel_ID;
	pItemHead->parameter_length=2;
	*(unsigned short *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD))=g_ecmg_stream_status_list[ucCACount].streamlist[i].ECM_channel_ID;
	pHead->message_length  +=sizeof(CA_MESSAGE_ITEM_HEAD) + pItemHead->parameter_length;
	pItemHead=(CA_MESSAGE_ITEM_HEAD *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD) + pItemHead->parameter_length);

	pItemHead->parameter_type=ECMG2SCS_ECM_stream_ID;
	pItemHead->parameter_length=2;
	*(unsigned short *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD))=g_ecmg_stream_status_list[ucCACount].streamlist[i].ECM_stream_ID;
	pHead->message_length  +=sizeof(CA_MESSAGE_ITEM_HEAD) + pItemHead->parameter_length;
	pItemHead=(CA_MESSAGE_ITEM_HEAD *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD) + pItemHead->parameter_length);

	pItemHead->parameter_type=ECMG2SCS_access_criteria_transfer_mode;
	pItemHead->parameter_length=1;
	*(unsigned short *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD))=g_ecmg_stream_status_list[ucCACount].streamlist[i].access_criteria_transfer_mode;
	pHead->message_length  +=sizeof(CA_MESSAGE_ITEM_HEAD) + pItemHead->parameter_length;
	pItemHead=(CA_MESSAGE_ITEM_HEAD *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD) + pItemHead->parameter_length);

	MsgLen=pHead->message_length + sizeof(CA_MESSAGE_HEAD);
	rc=ca_send(socket,EcmgSendBuf,MsgLen,g_ca_config.Para_Config[ucCACount].Network_Delay);
	if(rc!=MsgLen)
		return -1;
	else 
	{
		caSendLog(LOGTYPE_NORMAL,"ecmg: Send a stream status message,streamid=%d.",streamid);
		return rc;
	}
}

/*发送信息到ECMG*/
int ecmgSend(int socket,unsigned short cmd,unsigned long para,unsigned char ucCACount)
{
	CA_MESSAGE_HEAD      *pHead;
	CA_MESSAGE_ITEM_HEAD *pItemHead;
	int                  MsgLen=0;
	int i;
	int                  rc;
	int                  acindex;
	unsigned char        ch1,ch2;

	char    EcmgSendBuf[CA_MAX_BUFFER_LENGTH];
	
	CA_PARA_CONFIG*   Para_Config;
	CA_ECMG_STREAM_STATUS_LIST*    Status_List;

	Para_Config = &g_ca_config.Para_Config[ucCACount];
	Status_List = &g_ecmg_stream_status_list[ucCACount];
	
	pHead=(CA_MESSAGE_HEAD *)EcmgSendBuf;
	pHead->protocol_version=0x02;
	pHead->message_type    =cmd;
	pHead->message_length  =0;

	pItemHead=(CA_MESSAGE_ITEM_HEAD *)((char *)pHead + sizeof(CA_MESSAGE_HEAD));
	switch(cmd)
	{
			case ECMG2SCS_CHANNEL_TEST:
			pItemHead->parameter_type   =ECMG2SCS_ECM_channel_ID;
			pItemHead->parameter_length =2;
			*(unsigned short *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD))=Para_Config->ECM_channel_id;
			pHead->message_length+=sizeof(CA_MESSAGE_ITEM_HEAD) + 2;

			
			g_ecmg_channel_status[ucCACount].waitresponse=1;

			caSendLog(LOGTYPE_NORMAL,"ecmg: Send a channel setup message,channelid=%d.",Para_Config->ECM_channel_id);

			break;

		case ECMG2SCS_CHANNEL_SET_UP:
			pItemHead->parameter_type   =ECMG2SCS_ECM_channel_ID;
			pItemHead->parameter_length =2;
			*(unsigned short *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD))=Para_Config->ECM_channel_id;
			pHead->message_length+=sizeof(CA_MESSAGE_ITEM_HEAD) + 2;

			pItemHead=(CA_MESSAGE_ITEM_HEAD *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD) + 2);
			pItemHead->parameter_type   = ECMG2SCS_Super_CAS_ID;
			pItemHead->parameter_length = 4;
			*(unsigned long *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD))=(unsigned long)((unsigned long)(Para_Config->CA_system_id<<16) + Para_Config->CA_subsystem_id);
			pHead->message_length+=sizeof(CA_MESSAGE_ITEM_HEAD) + 4;
			
			g_ecmg_channel_status[ucCACount].waitresponse=1;

			caSendLog(LOGTYPE_NORMAL,"ecmg: Send a channel setup message,channelid=%d.",Para_Config->ECM_channel_id);

			break;
		/*关闭通道请求*/
		case ECMG2SCS_CHANNEL_CLOSE:
			pItemHead->parameter_type   =ECMG2SCS_ECM_channel_ID;
			pItemHead->parameter_length =2;
			*(unsigned short *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD))=Para_Config->ECM_channel_id;
			pHead->message_length+=sizeof(CA_MESSAGE_ITEM_HEAD) + 2;

			caSendLog(LOGTYPE_NORMAL,"ecmg: Send a channel close message,channelid=%d.",Para_Config->ECM_channel_id);

			break;
		/*建立流请求*/
		case ECMG2SCS_STREAM_SET_UP:

			pItemHead->parameter_type   =ECMG2SCS_ECM_channel_ID;
			pItemHead->parameter_length =2;
			*(unsigned short *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD))=Status_List->streamlist[para].ECM_channel_ID;
			pHead->message_length+=sizeof(CA_MESSAGE_ITEM_HEAD) + 2;

			pItemHead=(CA_MESSAGE_ITEM_HEAD *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD) + 2);
			pItemHead->parameter_type   =ECMG2SCS_ECM_stream_ID;
			pItemHead->parameter_length =2;
			*(unsigned short *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD))=Status_List->streamlist[para].ECM_stream_ID;
			pHead->message_length+=sizeof(CA_MESSAGE_ITEM_HEAD) + 2;

			/*----------------------------------------------------------*/
			/* added 2003-4-18                                          */
			/*----------------------------------------------------------*/
			pItemHead=(CA_MESSAGE_ITEM_HEAD *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD) + 2);
			pItemHead->parameter_type   =ECMG2SCS_ECM_id;
			pItemHead->parameter_length =2;
			*(unsigned short *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD))=Status_List->streamlist[para].ECM_stream_ID;
			pHead->message_length+=sizeof(CA_MESSAGE_ITEM_HEAD) + 2;
			/*----------------------------------------------------------*/
			/* added 2003-4-18                                          */
			/*----------------------------------------------------------*/

			pItemHead=(CA_MESSAGE_ITEM_HEAD *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD) + 2);
			pItemHead->parameter_type   =ECMG2SCS_nominal_CP_duration;
			pItemHead->parameter_length =2;
			/*----------------------------------------------------------------------------------------------------------*/
			/**(unsigned short *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD))=g_ca_config.Para_Config.CP_Duration;*/
			/* updated by johnnyling 2004-02-16                                                                         */
			/*----------------------------------------------------------------------------------------------------------*/
			*(unsigned short *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD))=Para_Config->CP_Duration*10;
			pHead->message_length+=sizeof(CA_MESSAGE_ITEM_HEAD) + 2;

			Status_List->streamlist[para].waitresponse=1;

			caSendLog(LOGTYPE_NORMAL,"ecmg: Send a stream setup message,streamid=%d.",Status_List->streamlist[para].ECM_stream_ID);

			break;
		/*关闭流请求*/
		case ECMG2SCS_STREAM_CLOSE_REQUEST:
			pItemHead->parameter_type   =ECMG2SCS_ECM_channel_ID;
			pItemHead->parameter_length =2;
			*(unsigned short *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD))=Status_List->streamlist[para].ECM_channel_ID;
			pHead->message_length+=sizeof(CA_MESSAGE_ITEM_HEAD) + 2;

			pItemHead=(CA_MESSAGE_ITEM_HEAD *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD) + 2);
			pItemHead->parameter_type   =ECMG2SCS_ECM_stream_ID;
			pItemHead->parameter_length =2;
			*(unsigned short *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD))=Status_List->streamlist[para].ECM_stream_ID;
			pHead->message_length+=sizeof(CA_MESSAGE_ITEM_HEAD) + 2;

			caSendLog(LOGTYPE_NORMAL,"ecmg: Send a stream close request message,streamid=%d.",Status_List->streamlist[para].ECM_stream_ID);

			break;
		/*发送CW控制制字*/
		case ECMG2SCS_CW_PROVISION:
			pItemHead->parameter_type   =ECMG2SCS_ECM_channel_ID;
			pItemHead->parameter_length =2;
			*(unsigned short *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD))=Para_Config->ECM_channel_id;
			pHead->message_length+=sizeof(CA_MESSAGE_ITEM_HEAD) + 2;

			pItemHead=(CA_MESSAGE_ITEM_HEAD *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD) + 2);
			pItemHead->parameter_type   =ECMG2SCS_ECM_stream_ID;
			pItemHead->parameter_length =2;
			*(unsigned short *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD))=Status_List->streamlist[para].ECM_stream_ID;
			pHead->message_length+=sizeof(CA_MESSAGE_ITEM_HEAD) + 2;

			pItemHead=(CA_MESSAGE_ITEM_HEAD *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD) + 2);
			pItemHead->parameter_type   =ECMG2SCS_CP_number;
			pItemHead->parameter_length =2;

#if 1   /*modify by fpx 20060526*/
			*(unsigned short *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD))=g_current_cp_number -1;
#else
			*(unsigned short *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD))=g_current_cp_number -3;
#endif
/*			*(unsigned short *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD))=g_wanted_cp_number[ucCACount] -1;	*/
			pHead->message_length+=sizeof(CA_MESSAGE_ITEM_HEAD) + 2;
			
/*			g_CurrentSaveCpNum = g_wanted_cp_number[ucCACount];
			g_IsResetStatue = 0;*/
			
			pItemHead=(CA_MESSAGE_ITEM_HEAD *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD) + 2);

			acindex=Status_List->streamlist[para].ECM_stream_ID;
			
			if((g_ecmg_channel_status[ucCACount].lead_CW==0)&&(g_ecmg_channel_status[ucCACount].CW_per_msg==1))
			{/*一次发一个CW控制字*/
				pItemHead->parameter_type  =ECMG2SCS_CP_CW_Combination;
				pItemHead->parameter_length=10;

				*(unsigned short *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD))=g_current_cp_number-3;

				for(i=0;i<8;i++)
					*(unsigned char *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD) + 2 + i)=g_CW_List_Backup2[para*8 + i];

				pHead->message_length+=sizeof(CA_MESSAGE_ITEM_HEAD) + 10;
			}
			else if((g_ecmg_channel_status[ucCACount].lead_CW==1)&&(g_ecmg_channel_status[ucCACount].CW_per_msg==2))
			{/*当前和下一个CW*/
				pItemHead->parameter_type  =ECMG2SCS_CP_CW_Combination;
				pItemHead->parameter_length=10;

#if 1   /*modify by fpx 20060526*/
				*(unsigned short *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD))=g_current_cp_number-1;
#else
				*(unsigned short *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD))=g_current_cp_number-3;
#endif

				for(i=0;i<8;i++)
					*(unsigned char *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD) + 2 + i)=g_CW_List_Backup[acindex*8 + i];

				pHead->message_length+=sizeof(CA_MESSAGE_ITEM_HEAD) + 10;

			
				pItemHead=(CA_MESSAGE_ITEM_HEAD *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD) + 10);
				pItemHead->parameter_type  =ECMG2SCS_CP_CW_Combination;
				pItemHead->parameter_length=10;

#if 1   /*modify by fpx 20060526*/
				*(unsigned short *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD))=g_current_cp_number;
#else
				*(unsigned short *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD))=g_current_cp_number-2;
#endif

				for(i=0;i<8;i++)
					*(unsigned char *)((char *)pItemHead + sizeof(CA_MESSAGE_ITEM_HEAD) + 2 + i)=g_CW_List[acindex*8 + i];

				pHead->message_length+=sizeof(CA_MESSAGE_ITEM_HEAD) + 10;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -