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

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

?? co_dict.c

?? 源代碼openCAN 源代碼openCAN 源代碼openCAN 源代碼openCAN 源代碼openCAN 源代碼openCAN
?? C
?? 第 1 頁 / 共 2 頁
字號:

/*****************************************************************************
 *
 * Microchip CANopen Stack (Dictionary Services)
 *
 *****************************************************************************
 * FileName:        CO_DICT.C
 * Dependencies:    
 * Processor:       PIC18F with CAN
 * Compiler:       	C18 02.30.00 or higher
 * Linker:          MPLINK 03.70.00 or higher
 * Company:         Microchip Technology Incorporated
 *
 * Software License Agreement
 *
 * The software supplied herewith by Microchip Technology Incorporated
 * (the "Company") is intended and supplied to you, the Company's
 * customer, for use solely and exclusively with products manufactured
 * by the Company. 
 *
 * The software is owned by the Company and/or its supplier, and is 
 * protected under applicable copyright laws. All rights are reserved. 
 * Any use in violation of the foregoing restrictions may subject the 
 * user to criminal sanctions under applicable laws, as well as to 
 * civil liability for the breach of the terms and conditions of this 
 * license.
 *
 * THIS SOFTWARE IS PROVIDED IN AN "AS IS" CONDITION. NO WARRANTIES, 
 * WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED 
 * TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 
 * PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. THE COMPANY SHALL NOT, 
 * IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL OR 
 * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
 *
 *
 * Dictionary services.
 * 
 *
 *
 * Author               Date        Comment
 *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * Ross Fosler			11/13/03	...	
 * 
 *****************************************************************************/

#include	"CO_DEFS.DEF"			// Global definitions
#include	"CO_TYPES.H"			// Standard types
#include	"CO_ABERR.H"			// Abort types
#include	"CO_DICT.H"				// Dictionary header
#include	"CO_MEMIO.H"			// Memory IO
#include	"CO_DICT.DEF"			// Standard type and device specific objects
#include	"CO_MFTR.DEF"			// Manufacturer specific objects
#include	"CO_PDO.DEF"			// PDO objects
#include	"CO_STD.DEF"			// CANopen standard objects


// Params used by the dictionary
DICT_PARAM	uDict;


rom unsigned char * _pTmpDBase;
unsigned char 		_tDBaseLen;

unsigned char		_uDictTemp[4];
MULTIPLEXOR			_tMplex;

rom unsigned char	__dummy[4] = {0,0,0,0};



									
/* Dictionary database built into ROM */								
rom DICT_OBJECT_TEMPLATE _db_objects[] = 			{DICTIONARY_DATA_TYPES};
rom DICT_OBJECT_TEMPLATE _db_device[] = 			{DICTIONARY_DEVICE_INFO};
rom DICT_OBJECT_TEMPLATE _db_sdo[] = 				{DICTIONARY_SDO};

rom DICT_OBJECT_TEMPLATE _db_pdo1_rx_comm[] = 		{DICTIONARY_PDO1_RX_COMM};
#if CO_NUM_OF_PDO > 1
rom DICT_OBJECT_TEMPLATE _db_pdo2_rx_comm[] = 		{DICTIONARY_PDO2_RX_COMM};
#endif
#if CO_NUM_OF_PDO > 2
rom DICT_OBJECT_TEMPLATE _db_pdo3_rx_comm[] = 		{DICTIONARY_PDO3_RX_COMM};
#endif
#if CO_NUM_OF_PDO > 3
rom DICT_OBJECT_TEMPLATE _db_pdo4_rx_comm[] = 		{DICTIONARY_PDO4_RX_COMM};
#endif

rom DICT_OBJECT_TEMPLATE _db_pdo1_rx_map[] = 		{DICTIONARY_PDO1_RX_MAP};
#if CO_NUM_OF_PDO > 1
rom DICT_OBJECT_TEMPLATE _db_pdo2_rx_map[] = 		{DICTIONARY_PDO2_RX_MAP};
#endif
#if CO_NUM_OF_PDO > 2
rom DICT_OBJECT_TEMPLATE _db_pdo3_rx_map[] = 		{DICTIONARY_PDO3_RX_MAP};
#endif
#if CO_NUM_OF_PDO > 3
rom DICT_OBJECT_TEMPLATE _db_pdo4_rx_map[] = 		{DICTIONARY_PDO4_RX_MAP};
#endif

rom DICT_OBJECT_TEMPLATE _db_pdo1_tx_comm[] = 		{DICTIONARY_PDO1_TX_COMM};
#if CO_NUM_OF_PDO > 1
rom DICT_OBJECT_TEMPLATE _db_pdo2_tx_comm[] = 		{DICTIONARY_PDO2_TX_COMM};
#endif
#if CO_NUM_OF_PDO > 2
rom DICT_OBJECT_TEMPLATE _db_pdo3_tx_comm[] = 		{DICTIONARY_PDO3_TX_COMM};
#endif
#if CO_NUM_OF_PDO > 3
rom DICT_OBJECT_TEMPLATE _db_pdo4_tx_comm[] = 		{DICTIONARY_PDO4_TX_COMM};
#endif

rom DICT_OBJECT_TEMPLATE _db_pdo1_tx_map[] = 		{DICTIONARY_PDO1_TX_MAP};
#if CO_NUM_OF_PDO > 1
rom DICT_OBJECT_TEMPLATE _db_pdo2_tx_map[] = 		{DICTIONARY_PDO2_TX_MAP};
#endif
#if CO_NUM_OF_PDO > 2
rom DICT_OBJECT_TEMPLATE _db_pdo3_tx_map[] = 		{DICTIONARY_PDO3_TX_MAP};
#endif
#if CO_NUM_OF_PDO > 3
rom DICT_OBJECT_TEMPLATE _db_pdo4_tx_map[] = 		{DICTIONARY_PDO4_TX_MAP};
#endif

rom DICT_OBJECT_TEMPLATE _db_manufacturer_g1[] = 	{DICTIONARY_MANUFACTURER_SPECIFIC_1};
rom DICT_OBJECT_TEMPLATE _db_manufacturer_g2[] = 	{DICTIONARY_MANUFACTURER_SPECIFIC_2};
rom DICT_OBJECT_TEMPLATE _db_manufacturer_g3[] = 	{DICTIONARY_MANUFACTURER_SPECIFIC_3};
rom DICT_OBJECT_TEMPLATE _db_manufacturer_g4[] = 	{DICTIONARY_MANUFACTURER_SPECIFIC_4};
rom DICT_OBJECT_TEMPLATE _db_standard_g1[] = 		{DICTIONARY_STANDARD_1};
rom DICT_OBJECT_TEMPLATE _db_standard_g2[] = 		{DICTIONARY_STANDARD_2};
rom DICT_OBJECT_TEMPLATE _db_standard_g3[] = 		{DICTIONARY_STANDARD_3};
rom DICT_OBJECT_TEMPLATE _db_standard_g4[] = 		{DICTIONARY_STANDARD_4};			

								



/*********************************************************************
 * Function:        void _CO_DictObjectRead(void)
 *
 * PreCondition:    _CO_DictObjectDecode() must have been called to 
 *					fill in the object structure.
 *
 * Input:       	none		
 *                  
 * Output:      	none	
 *
 * Side Effects:    none
 *
 * Overview:        Read the object referenced by uDict.obj.
 *
 * Note:            
 ********************************************************************/
void _CO_DictObjectRead(void)
{
	// If the object is valid, control code must be something other than 0
	if (uDict.obj->ctl) 
	{	
		// Process any functionally defined objects
		if (uDict.obj->ctl & FDEF_BIT)
		{
			uDict.ret = E_SUCCESS;
			uDict.cmd = DICT_OBJ_READ;
			uDict.obj->p.pFunc();	
			return;
		}
		else	

		// Decode the type of object
		switch (uDict.obj->ctl & ACCESS_BITS)
		{
			case CONST:
				//Copy ROM to RAM, uDict.obj->reqLen specifies the amount
				CO_MEMIO_CopyRomToRam(uDict.obj->p.pROM + uDict.obj->reqOffst, uDict.obj->pReqBuf, uDict.obj->reqLen);
				break;

			case RO:
			case RW:
				//Copy RAM to RAM, uDict.obj->reqLen specifies the amount
				CO_MEMIO_CopySram(uDict.obj->p.pRAM + uDict.obj->reqOffst, uDict.obj->pReqBuf, uDict.obj->reqLen);
				break;
				
//			case RW_EE:
//			case RO_EE:
//				break;
						
			default:
				// Error, cannot read object
				uDict.ret = E_CANNOT_READ;
				return;
		}
	}
	
	uDict.ret = E_SUCCESS;
	return;
}



/*********************************************************************
 * Function:        void _CO_DictObjectWrite(void)
 *
 * PreCondition:    _CO_DictObjectDecode() must have been called to 
 *					fill in the object structure.
 *
 * Input:       	none		
 *                  
 * Output:      	none	
 *
 * Side Effects:    none
 *
 * Overview:        Write the object referenced by uDict.obj.
 *
 * Note:            
 ********************************************************************/
void _CO_DictObjectWrite(void)
{
	// If the object is found
	if (uDict.obj->ctl) 
	{
		if (uDict.obj->ctl & FDEF_BIT)
		{
			uDict.ret = E_SUCCESS;
			uDict.cmd = DICT_OBJ_WRITE;
			uDict.obj->p.pFunc();	
			return;
		}
		else	

		// Decode the type of object
		switch (uDict.obj->ctl & ACCESS_BITS)
		{							
			case RW:
			case WO:
				//Copy RAM to RAM, uDict.obj->reqLen specifies the amount
				CO_MEMIO_CopySram(uDict.obj->pReqBuf, uDict.obj->p.pRAM, uDict.obj->reqLen);
				break;
			
//			case RW_EE:
//			case WO_EE:
//				break;
						
			default:
				// Error, write not allowed
				uDict.ret = E_CANNOT_WRITE;
				return;
		}
	}
	
	uDict.ret = E_SUCCESS;
	return;
}


/*********************************************************************
 * Function:        void _CO_DictObjectDecode(void)
 *
 * PreCondition:    The multiplexor referenced by uDict must have been
 *					initialized.
 *
 * Input:       	none		
 *                  
 * Output:      	none	
 *
 * Side Effects:    none
 *
 * Overview:        Find the object in the dictionary and return 
 * 					information related to the object. The user must
 * 					pass a pointer to a structure that contains the 
 *					multiplexor. The decode process will fill the 
 *					rest of the structure with other pertenent
 *					information.
 *
 * Note:            
 ********************************************************************/
/* Decode the object*/
void _CO_DictObjectDecode(void)
{			
	// Copy the multiplexor to a local storage area
	_tMplex = *(MULTIPLEXOR *)(&(uDict.obj->index));

	switch (_tMplex.index.bytes.B1.byte & 0xF0)
	{		
		case 0x00:		// Data types
			_pTmpDBase = (rom unsigned char *)_db_objects;
			_tDBaseLen = sizeof(_db_objects)/sizeof(DICT_OBJECT_TEMPLATE);
			break;
		

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美激情在线一区二区三区| 欧美日韩一区成人| 国产肉丝袜一区二区| 国产精品一区二区视频| 久久精品人人做人人爽人人| www.成人在线| 夜夜精品视频一区二区| 欧美一区在线视频| 精品一区二区三区久久| 国产欧美精品一区二区色综合 | 一区二区三区日韩欧美精品| 91麻豆成人久久精品二区三区| 一区二区三区四区在线| 91精品久久久久久久99蜜桃| 国产中文字幕精品| 国产精品国产三级国产三级人妇 | 久久99蜜桃精品| 亚洲国产精品二十页| 91小视频在线免费看| 奇米色一区二区三区四区| 久久久久国产精品人| 欧洲亚洲精品在线| 九色综合国产一区二区三区| 国产精品久久久久9999吃药| 7878成人国产在线观看| 丰满放荡岳乱妇91ww| 亚洲va在线va天堂| 久久免费视频色| 欧美亚洲国产怡红院影院| 精品夜夜嗨av一区二区三区| 成人欧美一区二区三区小说| 91精品国产综合久久香蕉麻豆 | 亚洲最快最全在线视频| 欧美大片在线观看一区二区| 99久久国产综合精品女不卡| 久久精品国产精品亚洲精品| 亚洲卡通欧美制服中文| 久久综合999| 欧美精品一二三区| 成人av在线网| 加勒比av一区二区| 亚洲高清久久久| 国产精品乱人伦| 日韩欧美国产三级电影视频| 99re亚洲国产精品| 国产精品综合二区| 日韩高清在线一区| 亚洲免费观看在线观看| 欧美精品一区二区三区视频| 欧美日韩高清一区二区| 91免费在线播放| 成人小视频在线| 狠狠网亚洲精品| 日本不卡的三区四区五区| 亚洲精品乱码久久久久| 欧美韩国日本综合| 精品毛片乱码1区2区3区| 欧美日韩情趣电影| 色呦呦网站一区| aaa国产一区| 国产精品乡下勾搭老头1| 久久精品国产久精国产| 日韩国产欧美在线观看| 亚洲成av人影院| 亚洲国产aⅴ成人精品无吗| 亚洲免费电影在线| 亚洲欧美电影一区二区| 中文字幕av在线一区二区三区| 久久伊人中文字幕| 精品区一区二区| 日韩欧美精品在线| 精品久久久影院| 久久在线免费观看| 26uuu亚洲婷婷狠狠天堂| 日韩精品最新网址| 精品国产乱码久久久久久夜甘婷婷 | 在线观看不卡视频| 色一区在线观看| 欧美性猛交一区二区三区精品| 日本精品一区二区三区高清| 色av成人天堂桃色av| 欧美视频在线一区二区三区| 欧美午夜精品一区| 欧美精品一二三| 欧美一级在线免费| 精品成人在线观看| 国产色91在线| 最新国产精品久久精品| 1区2区3区精品视频| 亚洲一区二区三区视频在线播放| 亚洲6080在线| 精品亚洲免费视频| 国产成人一级电影| 97精品国产97久久久久久久久久久久 | 欧美xxxxxxxxx| 国产欧美精品一区aⅴ影院| 国产精品美女一区二区三区| 日韩一区欧美一区| 香蕉加勒比综合久久| 看电视剧不卡顿的网站| 高清不卡一区二区| 在线欧美日韩精品| 日韩欧美中文一区| 国产精品日韩精品欧美在线| 亚洲一区国产视频| 麻豆成人在线观看| 成人一区在线看| 欧美性一级生活| 精品国产乱码久久久久久免费 | 国产最新精品精品你懂的| 国产成人av自拍| 欧美最新大片在线看| 日韩亚洲欧美一区二区三区| 国产日韩精品一区二区三区在线| 亚洲欧美日韩综合aⅴ视频| 日韩专区在线视频| 成人在线视频一区| 日韩一级免费观看| 国产精品久久午夜| 日本人妖一区二区| 成人av在线看| 日韩三级在线免费观看| ...av二区三区久久精品| 天涯成人国产亚洲精品一区av| 国产麻豆精品theporn| 91免费国产在线| 久久久精品人体av艺术| 五月天中文字幕一区二区| 国产xxx精品视频大全| 欧美肥妇free| 亚洲人成伊人成综合网小说| 精品一区二区av| 欧美二区在线观看| 亚洲精品国产高清久久伦理二区| 国产精品一线二线三线精华| 欧美乱熟臀69xxxxxx| 中文字幕制服丝袜成人av| 久久国产精品区| 欧美高清视频www夜色资源网| 国产精品国产三级国产普通话99| 六月丁香综合在线视频| 欧美午夜电影一区| 亚洲视频一区二区免费在线观看| 国产精品白丝av| 日韩免费观看2025年上映的电影| 亚洲一区影音先锋| 色天天综合色天天久久| 中文字幕国产一区| 国产电影一区在线| 亚洲精品一区二区精华| 麻豆91在线播放| 3d动漫精品啪啪| 日日噜噜夜夜狠狠视频欧美人| 日本韩国精品在线| 亚洲图片你懂的| www.亚洲国产| 国产精品久久久久久福利一牛影视| 国产成人夜色高潮福利影视| 日韩小视频在线观看专区| 日本一不卡视频| 欧美变态tickle挠乳网站| 美女一区二区在线观看| 欧美一级搡bbbb搡bbbb| 秋霞国产午夜精品免费视频| 欧美剧情片在线观看| 偷拍亚洲欧洲综合| 在线播放/欧美激情| 日韩综合一区二区| 日韩一区二区在线看片| 日本不卡一区二区| 精品国产一区二区亚洲人成毛片| 国产综合色视频| 国产拍揄自揄精品视频麻豆| 国产不卡一区视频| 欧美激情资源网| 97精品视频在线观看自产线路二| 17c精品麻豆一区二区免费| 97久久精品人人做人人爽50路| 亚洲天天做日日做天天谢日日欢 | 久久久久国产精品厨房| 国产a级毛片一区| 国产精品久久福利| 日本二三区不卡| 午夜免费欧美电影| 欧美成人vr18sexvr| 福利视频网站一区二区三区| 亚洲欧美区自拍先锋| 色哟哟精品一区| 日韩精品一级二级 | 亚洲国产精品二十页| 97久久超碰国产精品| 爽爽淫人综合网网站| 日韩一区二区三区av| 成人一区在线观看| 亚洲伦在线观看| 日韩欧美高清在线| 床上的激情91.| 亚洲成av人综合在线观看| 精品国产免费久久| 91麻豆高清视频|