当前位置: 首页>>代码示例>>C++>>正文


C++ EEPROMClass::length方法代码示例

本文整理汇总了C++中EEPROMClass::length方法的典型用法代码示例。如果您正苦于以下问题:C++ EEPROMClass::length方法的具体用法?C++ EEPROMClass::length怎么用?C++ EEPROMClass::length使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在EEPROMClass的用法示例。


在下文中一共展示了EEPROMClass::length方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: sizeof

// write the plan to the EEPROM
unsigned char R5EEPROM::writeData(Instinct::CmdPlanner *pPlan, const unsigned int uiDataLen, unsigned char *pData)
{
	Instinct::PlanNode sPlanNode;
	Instinct::instinctID bPlanElements[INSTINCT_NODE_TYPES];
	Instinct::instinctID bElemCount = pPlan->planSize(); // total number of elements;
	unsigned int nPlanMemoryUsage = pPlan->planUsage(NULL); // total space used in RAM

	// calculate how much EEPROM we will use and return false if not enough
	unsigned int nEEPROMUsage = nPlanMemoryUsage + (bElemCount * sizeof(sPlanNode.bNodeType)) + uiDataLen;
	if (EEPROM.length() < (nEEPROMUsage + sizeof(EEPROMStorageType)))
		return false;

	Instinct::instinctID bMaxElementID = pPlan->maxElementID();
	EEPROMStorageType *pEEPROM = 0;

	// first we store the number of Node structures we are going to write out
	pPlan->planSize(bPlanElements); // get the array of element counts from the plan
	setBytesAtOffset(bPlanElements, sizeof(bPlanElements), (int)&pEEPROM->bPlanElements);

	setIntAtOffset(pPlan->getPlanID(), (int)&pEEPROM->nPlanID);

	int nAddr = (int)&pEEPROM->bPlan;

	// read each element from the plan into a buffer and then write it to EEPROM
	for ( Instinct::instinctID i = 0; i < bMaxElementID; i++)
	{
		if (pPlan->getNode(&sPlanNode, i+1))
		{
			int nSize = pPlan->sizeFromNodeType(sPlanNode.bNodeType);
			if (!nSize) // some bad thing has happened
				return false;
			nSize += sizeof(sPlanNode.bNodeType);
			nAddr += setBytesAtOffset((unsigned char *)&sPlanNode, nSize, nAddr);
		}
	}

	if (pData && uiDataLen)
	{
		// store the binary data at the end
		setBytesAtOffset(pData, uiDataLen, nAddr);
		setIntAtOffset(uiDataLen, (int)&pEEPROM->uiDataLen);
	}

	return true;
开发者ID:rwortham,项目名称:R5,代码行数:45,代码来源:R5EEPROM.cpp


注:本文中的EEPROMClass::length方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。