亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ac48drhi.c

?? Audiocodes old vision DSP driver
?? C
?? 第 1 頁 / 共 5 頁
字號:
	String[2] = DownloadBlock[6]+'0';
	String[3] = DownloadBlock[7]+'0';
	Version.Day = atoi(&String[2]);

	String[0] = DownloadBlock[8]+'0';
	String[1] = DownloadBlock[9]+'0';
	String[2] = DownloadBlock[10]+'0';
	String[3] = DownloadBlock[11]+'0';
	Version.Year = atoi(String);

	strcpy(Name, "Ac48");
    for(i=0; i<6; i++)
        Name[4+i] = DownloadBlock[12+i];
    Name[4+i] = '\0';
    strcat(Name, "-S");
   	strcpy(Version.Name, Name);

    return Version;
}
/*======================================================================*/
/* Name    :        Ac48xxKernelVersion                                 */
/*======================================================================*/
/* Purpose :   return software version packed in a structure, and the   */
/*             name of the version, by 'Name' argument.                 */
/*                                                                      */
/*======================================================================*/
TVersion Ac48xxKernelVersion(const char *KernelDownloadBlock, char *Name)
{
	return Ac48xxVersion(KernelDownloadBlock+KERNEL_VERSION_INFO_OFFSET, Name);
}
/*======================================================================*/
/* Name    :        Ac48xxKernelDownload                                */
/*======================================================================*/
/* Purpose :                                                            */
/*                                                                      */
/* Inputs  :                                                            */
/*======================================================================*/
void Ac48xxKernelDownload(int DeviceIndex, const char *KernelDownloadBlock,
															int KernelSize)
{
	int i=0;
	if(!KernelDownloadBlock)
        return;
	Ac48xxResetAssert(DeviceIndex);
#if   AC48_DEVICE == AC4830X_DEVICE
    Ac48xxResponseDelay();
	Ac48xxResetRelease(DeviceIndex);
#endif /* AC48_DEVICE */
			/* Set DSP to read/write MSB first */
	Ac48xxSetHPIByteOrder(DeviceIndex, MSB_FIRST);

			/* hpia = AC48_KERNEL_ADDRESS */
	Ac48xxHostWrite((char)((AC48_KERNEL_ADDRESS-1)>>8), DeviceIndex, 
														HPIA, First);
	Ac48xxHostWrite((char)(AC48_KERNEL_ADDRESS-1), DeviceIndex, 
														HPIA, Second);
                /* write kernel to AC48 */
	    for( i=0; i<KernelSize; i+=2)
			{
		    Ac48xxHostWrite(*KernelDownloadBlock++, 
											  DeviceIndex, HPID, First);
    		Ac48xxHostWrite(*KernelDownloadBlock++, 
											  DeviceIndex, HPID, Second);

	    	}
	        /* write "packet full": */
		/* HPIA <= AC48_BOOT_STATUS_REGISTER */
	Ac48xxHostWrite((char)(AC48_BOOT_STATUS_REGISTER>>8), 
											  DeviceIndex, HPIA, First);
	Ac48xxHostWrite((char)AC48_BOOT_STATUS_REGISTER, 
											  DeviceIndex, HPIA, Second);
		/* HPID <= PACKET_FULL */
	Ac48xxHostWrite((char)0          , DeviceIndex, HPIDL, First);
	Ac48xxHostWrite((char)PACKET_FULL, DeviceIndex, HPIDL, Second);

#if AC48_DEVICE == AC4830X_DEVICE
		/* HPIA <= AC48_PROGRAM_ENTRY_POINT */
	Ac48xxHostWrite((char)((AC48_PROGRAM_ENTRY_POINT)>>8), 
											  DeviceIndex, HPIA, First);
	Ac48xxHostWrite((char)(AC48_PROGRAM_ENTRY_POINT), 
											  DeviceIndex, HPIA, Second);

			/* HPID = AC48_KERNEL_ADDRESS */
	Ac48xxHostWrite((char)(AC48_KERNEL_ADDRESS>>8), DeviceIndex, 
														HPIDL, First);
	Ac48xxHostWrite((char)AC48_KERNEL_ADDRESS, DeviceIndex, 
														HPIDL, Second);
				/* Set DSP to read/write back to LSB first */
	Ac48xxSetHPIByteOrder(DeviceIndex, LSB_FIRST);

#else /* AC48_DEVICE */
				/* Set DSP to read/write back to LSB first */
	Ac48xxSetHPIByteOrder(DeviceIndex, LSB_FIRST);
	Ac48xxResetRelease(DeviceIndex);
#endif /* AC48_DEVICE */
}
/*======================================================================*/
/* Name    :        Ac48xxProgramVersion                                */
/*======================================================================*/
/* Purpose :   return software version packed in a structure, and the   */
/*             name of the version, by 'Name' argument.                 */
/*                                                                      */
/*======================================================================*/
TVersion Ac48xxProgramVersion(const char *ProgramDownloadBlock, char *Name)
{
	return Ac48xxVersion(ProgramDownloadBlock+PROGRAM_VERSION_INFO_OFFSET, Name);
}
/*======================================================================*/
/* Name    :        Ac48xxProgramDownload                               */
/*======================================================================*/
/* Purpose :                                                            */
/*                                                                      */
/* Inputs  :                                                            */
/*                                                                      */
/* Output  :    int:                                                    */
/*                  (LAST_STAGE_COMPLETED)                              */
/*                  (-1) + update the pointer to the Program Download   */
/*                         Blocks                                       */
/*                  (ERROR)                                             */
/**/
/*  Note   :    The "ProgramDownloadBlocks" is an address of a pointer  */
/*              to the Program Download memory Block.                   */
/*              At the begining, it points to the head of the memory    */
/*              Block. This pointer's value changes, to point to actual */
/*              byte readed by "Ac48xxProgramDownload" program.         */
/*              After successfull completion of the Download,           */ 
/*              "ProgramDownloadBlocks" will point to the last byte.    */
/*======================================================================*/
int Ac48xxProgramDownload(int DeviceIndex, const char **ProgramDownloadBlocks)
{
	int i, BlockLength, Status;
	static char LastBlockFlag=0;
	const unsigned char *Download;
	if(!ProgramDownloadBlocks)
		return AC_ERROR;      /* NULL pointer */
				/* Set DSP to read/write MSB first */
	Ac48xxSetHPIByteOrder(DeviceIndex, MSB_FIRST);
	Download = (unsigned char*)*ProgramDownloadBlocks;
	while(1)
		{
				/* HPIA <= AC48_BOOT_STATUS_REGISTER */
		Ac48xxHostWrite((char)(AC48_BOOT_STATUS_REGISTER>>8), DeviceIndex,
															HPIA, First);
		Ac48xxHostWrite((char)AC48_BOOT_STATUS_REGISTER, DeviceIndex,
															HPIA, Second);
				/* ignore first reading HPID  */
		Ac48xxHostRead(DeviceIndex, HPIDL, First);
		Ac48xxHostRead(DeviceIndex, HPIDL, Second);
		Ac48xxHostRead(DeviceIndex, HPIDL, First);
		Status = Ac48xxHostRead(DeviceIndex, HPIDL, Second);
		if(Status == PACKET_FULL)
			{	/* Set DSP to read/write back to LSB first */
			Ac48xxSetHPIByteOrder(DeviceIndex, LSB_FIRST);
			*ProgramDownloadBlocks = (char *)Download;
			return (-1);
			}
		if(Status != PACKET_EMPTY)
			{
			Ac48xxSetHPIByteOrder(DeviceIndex, LSB_FIRST);
			return AC_ERROR;
			}
							
		if(LastBlockFlag)	
			{		/* Set DSP to read/write back to LSB first */
			Ac48xxSetHPIByteOrder(DeviceIndex, LSB_FIRST);
			LastBlockFlag=0;
			return LAST_STAGE_COMPLETED;
			}
		LastBlockFlag = (Download[0] & 0x80);
		BlockLength =  ((int)(Download[4])<<8) 
					  |(int)((unsigned char)Download[5]);
		BlockLength += 5;	/* as is */
			    /* HPIA <= AC48_PROGRAM_ADDRESS-1 */
		Ac48xxHostWrite((char)((AC48_PROGRAM_ADDRESS-1)>>8), 
											DeviceIndex, HPIA, First);
		Ac48xxHostWrite((char)(AC48_PROGRAM_ADDRESS-1), 
											DeviceIndex, HPIA, Second);
				
		for(i=0; i<BlockLength; i++) /* copy block */ 
			{
			Ac48xxHostWrite(*Download++, DeviceIndex, HPID, First);
			Ac48xxHostWrite(*Download++, DeviceIndex, HPID, Second);
			}
		        /* write "packet full" */
				/* HPIA <= BOOT_STATUS_REGISTER */
		Ac48xxHostWrite((char)(AC48_BOOT_STATUS_REGISTER>>8), 
											DeviceIndex, HPIA, First);
		Ac48xxHostWrite((char)AC48_BOOT_STATUS_REGISTER, 
											DeviceIndex, HPIA, Second);
				/* HPID <= PACKET_FULL */
		Ac48xxHostWrite((char)0          , DeviceIndex, HPIDL, First);
		Ac48xxHostWrite((char)PACKET_FULL, DeviceIndex, HPIDL, Second);
				/* send interupt to DSP */
		Ac48xxHostWrite((SET_DSPINT | CLEAR_HINT | MSB_FIRST), 
											DeviceIndex, HPIC, First);
		Ac48xxHostWrite((SET_DSPINT | CLEAR_HINT | MSB_FIRST), 
											DeviceIndex, HPIC, Second);
		}
}

/*======================================================================*/
int Ac48xxProgramDownloadForDebugging(int DeviceIndex,
									  const char **ProgramDownloadBlocks,
                                      const char *ProgramDownloadStructure,
                                      FILE *BlockStructureFile)
{
	int i, BlockLength, Status;
	static char LastBlockFlag=0;
	const unsigned char *Download;
	if(!ProgramDownloadBlocks)
        {
        fprintf(BlockStructureFile, "'ProgramDownloadBlocks' not Allocated in Memory"); 
        return AC_ERROR;      /* NULL pointer */
        }
				/* Set DSP to read/write MSB first */
	Ac48xxSetHPIByteOrder(DeviceIndex, MSB_FIRST);
	Download = (unsigned char*)*ProgramDownloadBlocks;
	while(1)
		{
				/* HPIA <= AC48_BOOT_STATUS_REGISTER */
		Ac48xxHostWrite((char)(AC48_BOOT_STATUS_REGISTER>>8), DeviceIndex,
															HPIA, First);
		Ac48xxHostWrite((char)AC48_BOOT_STATUS_REGISTER, DeviceIndex,
															HPIA, Second);
				/* ignore first reading HPID  */
		Ac48xxHostRead(DeviceIndex, HPIDL, First);
		Ac48xxHostRead(DeviceIndex, HPIDL, Second);
		Ac48xxHostRead(DeviceIndex, HPIDL, First);
		Status = Ac48xxHostRead(DeviceIndex, HPIDL, Second);
		if(Status == PACKET_FULL)
			{	/* Set DSP to read/write back to LSB first */
			Ac48xxSetHPIByteOrder(DeviceIndex, LSB_FIRST);
			*ProgramDownloadBlocks = (char *)Download;
			if(BlockStructureFile)    
                fprintf(BlockStructureFile, 
                "                                    Status == %X (PACKET_FULL (-1))\n", Status); 
            return (-1);
			}
		if(Status != PACKET_EMPTY)
			{
			Ac48xxSetHPIByteOrder(DeviceIndex, LSB_FIRST);
			if(BlockStructureFile)    
                fprintf(BlockStructureFile, 
                "                                    ERROR (Status == %X)\n", Status); 
			return AC_ERROR;
			}
							

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产手机| 色婷婷久久99综合精品jk白丝| 日本不卡不码高清免费观看| 亚洲精品欧美激情| 亚洲电影欧美电影有声小说| 捆绑调教一区二区三区| 麻豆91在线观看| 色一情一乱一乱一91av| 日韩午夜av电影| 亚洲免费在线视频一区 二区| 日韩精品电影一区亚洲| 日韩av一级片| 一本久久精品一区二区| 精品不卡在线视频| 亚洲国产一二三| 丁香激情综合五月| 欧美视频在线一区二区三区 | 久久99国产精品久久99果冻传媒| 激情成人午夜视频| 欧美专区日韩专区| 国产精品久久久久国产精品日日| 日本不卡一区二区| 欧美亚洲动漫精品| 欧美一个色资源| 一区二区在线观看不卡| 国产一区二区三区在线观看免费视频| 91久久精品一区二区| 久久丝袜美腿综合| 美国av一区二区| 欧美美女网站色| 亚洲精品成人少妇| 成人av免费在线播放| 国产亚洲欧美一级| 免费日韩伦理电影| 制服.丝袜.亚洲.另类.中文| 综合欧美亚洲日本| 九九精品视频在线看| 在线观看91精品国产麻豆| 亚洲男女一区二区三区| av色综合久久天堂av综合| 久久噜噜亚洲综合| 国产真实乱对白精彩久久| 欧美日韩综合在线免费观看| 亚洲美女偷拍久久| 色综合咪咪久久| 中文字幕在线视频一区| 国产成人自拍在线| 国产女人水真多18毛片18精品视频 | 久久99深爱久久99精品| 欧美精品欧美精品系列| 亚洲第一狼人社区| 欧美日韩第一区日日骚| 天天做天天摸天天爽国产一区| 日韩一区二区在线免费观看| 亚洲国产一区二区三区青草影视| 91蜜桃免费观看视频| 亚洲视频 欧洲视频| 色综合久久中文字幕| 一区二区三区美女| 欧美日韩黄色影视| 夜夜嗨av一区二区三区网页| 在线观看91精品国产入口| 三级欧美韩日大片在线看| 欧洲国内综合视频| 图片区小说区区亚洲影院| 欧美日韩一区 二区 三区 久久精品| 最新中文字幕一区二区三区 | 欧美亚洲一区二区在线观看| 亚洲电影第三页| 日韩免费一区二区三区在线播放| 免费看黄色91| 国产欧美日韩三级| 91久久国产最好的精华液| 亚洲国产另类精品专区| 欧美电影免费观看高清完整版在线| 精品一区二区日韩| 国产精品成人免费| 欧美日韩国产中文| 激情小说欧美图片| 国产精品理论在线观看| 欧美日韩一区二区三区四区| 久久er99精品| 亚洲欧美日韩小说| 欧美成人aa大片| 色哟哟一区二区在线观看| 天天做天天摸天天爽国产一区| 久久综合色婷婷| 在线一区二区三区四区五区| 久久国产尿小便嘘嘘| 国产日韩精品一区二区三区在线| 欧美日韩一区二区欧美激情| 成人做爰69片免费看网站| 一区二区三区在线观看欧美| 欧美不卡一区二区三区| 成人精品国产一区二区4080| 波多野结衣一区二区三区| 日韩精品91亚洲二区在线观看| 亚洲综合色区另类av| 亚洲视频一区二区免费在线观看| 国产欧美一区二区精品久导航| 精品国产污污免费网站入口| 欧美一区二区三区的| 欧美丰满美乳xxx高潮www| 欧美视频在线一区二区三区| 日本乱人伦一区| 色8久久精品久久久久久蜜| 99精品视频中文字幕| 99在线视频精品| 成人美女视频在线观看| 国产精品123| 国产福利视频一区二区三区| 国产一区二区久久| 狠狠久久亚洲欧美| 国产精品一级二级三级| 国产一区二区日韩精品| 国产精品一品二品| 成人午夜在线视频| 99视频热这里只有精品免费| 99视频精品免费视频| 91日韩一区二区三区| 日本久久电影网| 欧美三区在线观看| 日韩亚洲欧美综合| 精品国产成人在线影院| 久久久久久亚洲综合| 亚洲国产精品t66y| 亚洲色图欧洲色图婷婷| 亚洲一区二区偷拍精品| 日韩精品电影一区亚洲| 国产一区二区三区久久久 | 欧美不卡一区二区三区四区| 欧美变态tickling挠脚心| 精品国产乱子伦一区| 欧美激情一区二区三区四区 | 91丨porny丨中文| 欧美写真视频网站| 欧美成人一级视频| 欧美韩日一区二区三区四区| 亚洲在线免费播放| 蜜桃视频免费观看一区| 国产成人激情av| 91美女精品福利| 3751色影院一区二区三区| 久久久精品黄色| 亚洲色图另类专区| 日韩激情在线观看| 不卡视频在线观看| 91麻豆精品91久久久久同性| 中文乱码免费一区二区| 一区二区三区在线视频免费| 蜜臀99久久精品久久久久久软件| 国产电影一区二区三区| 欧美日韩一卡二卡三卡| 久久精品视频免费| 亚洲电影一区二区三区| 国产v综合v亚洲欧| 欧美高清dvd| 中文字幕巨乱亚洲| 麻豆成人av在线| 91福利国产成人精品照片| 精品1区2区在线观看| 亚洲国产中文字幕在线视频综合 | 日韩高清在线不卡| 波多野洁衣一区| 精品久久国产字幕高潮| 亚洲一区二区三区影院| 成人高清免费观看| 日韩一区二区免费高清| 亚洲色图在线看| 国产成人午夜精品影院观看视频 | 欧美日韩国产高清一区二区三区| 国产欧美日韩不卡| 美腿丝袜在线亚洲一区| 在线精品国精品国产尤物884a| 国产欧美日韩麻豆91| 免费成人在线视频观看| 欧美性猛交xxxx乱大交退制版| 国产精品理伦片| 韩国精品一区二区| 8x8x8国产精品| 亚洲午夜一区二区三区| 99re免费视频精品全部| 中文字幕免费在线观看视频一区| 蜜臀av性久久久久蜜臀av麻豆| 欧日韩精品视频| 亚洲免费观看高清| 97成人超碰视| 中文字幕在线观看不卡视频| 成人一级黄色片| 中文字幕精品在线不卡| 国产精品影视天天线| 欧美v国产在线一区二区三区| 秋霞电影一区二区| 69成人精品免费视频| 天堂蜜桃91精品| 日韩限制级电影在线观看| 日日夜夜一区二区| 日韩视频一区在线观看| 激情成人综合网| 久久久久久久精|