|
|
@@ -123,104 +123,3 @@ static int sfd_w25q_erase (void* userdata, size_t offset, size_t len) {
|
|
|
static int sfd_w25q_ioctl (void* userdata, size_t cmd, void* buff) {
|
|
|
return -1;
|
|
|
}
|
|
|
-
|
|
|
-//--------------------------------------------------------------------
|
|
|
-// SFD at memory , for test
|
|
|
-#include "luat_zbuff.h"
|
|
|
-
|
|
|
-static int sfd_mem_init (void* userdata);
|
|
|
-static int sfd_mem_status (void* userdata);
|
|
|
-static int sfd_mem_read (void* userdata, char* buff, size_t offset, size_t len);
|
|
|
-static int sfd_mem_write (void* userdata, const char* buff, size_t offset, size_t len);
|
|
|
-static int sfd_mem_erase (void* userdata, size_t offset, size_t len);
|
|
|
-static int sfd_mem_ioctl (void* userdata, size_t cmd, void* buff);
|
|
|
-
|
|
|
-const sdf_opts_t sfd_mem_opts = {
|
|
|
- .initialize = sfd_mem_init,
|
|
|
- .status = sfd_mem_status,
|
|
|
- .read = sfd_mem_read,
|
|
|
- .write = sfd_mem_write,
|
|
|
- .erase = sfd_mem_erase,
|
|
|
- .ioctl = sfd_mem_ioctl,
|
|
|
-};
|
|
|
-
|
|
|
-static int sfd_mem_init (void* userdata) {
|
|
|
- if (userdata == NULL) {
|
|
|
- LLOGE("userdata for sfd_mem must NOT NULL");
|
|
|
- return -1;
|
|
|
- }
|
|
|
- sfd_drv_t *drv = (sfd_drv_t*)userdata;
|
|
|
- luat_zbuff* zbuff = drv->cfg.zbuff;
|
|
|
- if (zbuff->len < 16*1024) {
|
|
|
- LLOGE("zbuff for sfd_mem is too small");
|
|
|
- return -1;
|
|
|
- }
|
|
|
- return 0;
|
|
|
-}
|
|
|
-static int sfd_mem_status (void* userdata) {
|
|
|
- if (userdata == NULL) {
|
|
|
- LLOGE("userdata for sfd_mem must NOT NULL");
|
|
|
- return -1;
|
|
|
- }
|
|
|
- return 0;
|
|
|
-}
|
|
|
-static int sfd_mem_read (void* userdata, char* buff, size_t offset, size_t len) {
|
|
|
- if (userdata == NULL) {
|
|
|
- LLOGE("userdata for sfd_mem must NOT NULL");
|
|
|
- return -1;
|
|
|
- }
|
|
|
- sfd_drv_t *drv = (sfd_drv_t*)userdata;
|
|
|
- luat_zbuff* zbuff = drv->cfg.zbuff;
|
|
|
- if (offset > zbuff->len) {
|
|
|
- // LLOGD("over read");
|
|
|
- return 0;
|
|
|
- }
|
|
|
- if (offset+len > zbuff->len) {
|
|
|
- len = zbuff->len - offset;
|
|
|
- }
|
|
|
- if (len > 0) {
|
|
|
- memcpy(buff, zbuff->addr + offset, len);
|
|
|
- }
|
|
|
- return len;
|
|
|
-}
|
|
|
-static int sfd_mem_write (void* userdata, const char* buff, size_t offset, size_t len) {
|
|
|
- if (userdata == NULL) {
|
|
|
- LLOGE("userdata for sfd_mem must NOT NULL");
|
|
|
- return -1;
|
|
|
- }
|
|
|
- sfd_drv_t *drv = (sfd_drv_t*)userdata;
|
|
|
- luat_zbuff* zbuff = drv->cfg.zbuff;
|
|
|
- if (offset > zbuff->len) {
|
|
|
- // LLOGD("over read");
|
|
|
- return 0;
|
|
|
- }
|
|
|
- if (offset+len > zbuff->len) {
|
|
|
- len = zbuff->len - offset;
|
|
|
- }
|
|
|
- if (len > 0) {
|
|
|
- memcpy(zbuff->addr + offset, buff, len);
|
|
|
- }
|
|
|
- return len;
|
|
|
-}
|
|
|
-static int sfd_mem_erase (void* userdata, size_t offset, size_t len) {
|
|
|
- if (userdata == NULL) {
|
|
|
- LLOGE("userdata for sfd_mem must NOT NULL");
|
|
|
- return -1;
|
|
|
- }
|
|
|
- sfd_drv_t *drv = (sfd_drv_t*)userdata;
|
|
|
- luat_zbuff* zbuff = drv->cfg.zbuff;
|
|
|
- if (offset > zbuff->len) {
|
|
|
- // LLOGD("over read");
|
|
|
- return 0;
|
|
|
- }
|
|
|
- if (offset+len > zbuff->len) {
|
|
|
- len = zbuff->len - offset;
|
|
|
- }
|
|
|
- if (len > 0) {
|
|
|
- memset(zbuff->addr + offset, 0, len);
|
|
|
- }
|
|
|
- return 0;
|
|
|
-}
|
|
|
-static int sfd_mem_ioctl (void* userdata, size_t cmd, void* buff) {
|
|
|
- return 0;
|
|
|
-}
|