工具与软件:
似乎在osal_nv_read_ex()中的函数中存在问题osal_nv.c。
pZStackCfg->nvFps.readItem()返回时NVINTF_NOTFOUND、osal_nv_read_ex()仍然返回SUCCESS。
或许应该更改
if ( pZStackCfg->nvFps.readItem( nvId, ndx, len, buf )!= NVINTF_SUCCESS )
???
/******************************************************************************
* @fn osal_nv_read_ex
*
* @brief Read data from NV. This function can be used to read an entire item from NV or
* an element of an item by indexing into the item with an offset.
* Read data is copied into *buf.
*
* @param id - Valid NV item Id.
* @param subId - Valid NV item sub Id.
* @param ndx - Index offset into item
* @param len - Length of data to read.
* @param *buf - Data is read into this buffer.
*
* @return SUCCESS if NV data was copied to the parameter 'buf'.
* Otherwise, NV_OPER_FAILED for failure.
*/
uint8_t osal_nv_read_ex( uint16_t id, uint16_t subId, uint16_t ndx, uint16_t len, void *buf )
{
if ( pZStackCfg && pZStackCfg->nvFps.readItem )
{
NVINTF_itemID_t nvId;
nvId.systemID = NVINTF_SYSID_ZSTACK;
nvId.itemID = (uint16_t)id;
nvId.subID = (uint16_t)subId;
if ( pZStackCfg->nvFps.readItem( nvId, ndx, len, buf ) == NVINTF_FAILURE )
{
return ( NV_OPER_FAILED );
}
else
{
return ( SUCCESS );
}
}
else
{
return ( NV_OPER_FAILED );
}
}