?? nvdevice.c
字號:
/*
* -----------------------------------------------------------
* NVDevice
* Access to nonvolatile devices
* -----------------------------------------------------------
*/
#include "NVDevice.h"
#include "Rtos.h"
static NVDevice *first_nvdevice = NULL;
void
NVDevice_Register(NVDevice *nvdev)
{
OS_EnterRegion();
nvdev->next = first_nvdevice;
first_nvdevice = nvdev;
OS_LeaveRegion();
}
#if 0
void
NVDevice_UnRegister(NVDevice *nvdev)
{
NVDevice *cursor,*prev;
OS_EnterRegion();
for(prev=NULL,cursor=first_nvdevice;cursor;prev=cursor,cursor=cursor->next) {
if(cursor == nvdev) {
if(prev) {
prev->next = cursor->next;
} else {
first_nvdevice = cursor->next;
}
break;
}
}
OS_LeaveRegion();
}
#endif
static NVDevice *
NVDevice_Find(uint16_t addr)
{
NVDevice *cursor;
OS_EnterRegion();
for(cursor=first_nvdevice;cursor;cursor=cursor->next) {
if(cursor->addr == addr) {
OS_LeaveRegion();
return cursor;
}
}
OS_LeaveRegion();
return NULL;
}
int
NVDevice_Write(uint16_t dev_addr,uint16_t mem_addr,const uint8_t *data,uint16_t len)
{
NVDevice *nvdev = NVDevice_Find(dev_addr);
if(nvdev && nvdev->write) {
return nvdev->write(nvdev->owner,dev_addr,mem_addr,data,len);
}
return -1;
}
int
NVDevice_Read(uint16_t dev_addr,uint16_t mem_addr,uint8_t *data,uint16_t len)
{
NVDevice *nvdev = NVDevice_Find(dev_addr);
if(nvdev && nvdev->read) {
return nvdev->read(nvdev->owner,dev_addr,mem_addr,data,len);
}
return -1;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -