Fix mbtk from v1265 GSW

Change-Id: I5d8d395616f284bc74c8b9448cfa347164b5a668
diff --git a/mbtk/test/libgsw_lib/gsw_oem_rw_test.c b/mbtk/test/libgsw_lib/gsw_oem_rw_test.c
new file mode 100755
index 0000000..723c0c6
--- /dev/null
+++ b/mbtk/test/libgsw_lib/gsw_oem_rw_test.c
@@ -0,0 +1,181 @@
+#include <stdio.h>

+#include <stdlib.h>

+#include <string.h>

+#include <time.h>

+#include <fcntl.h>

+#include <unistd.h>

+#include <sys/ioctl.h>

+#include <mtd/mtd-user.h>

+#include <errno.h>

+

+#include "gsw_oem_rw_interface.h"

+

+

+#define FLASH_DEVICE    "/dev/mtd32"

+

+

+

+#define TEST_BLOCK_ID 1  // 测试使用的block ID

+

+void print_usage(void)

+{

+    printf("Usage:\n");

+    printf("  1: Write test data to block\n");

+    printf("  2: Read data from block\n");

+    printf("  0: Exit\n");

+    printf("Please input your choice: ");

+}

+

+int write_test(void)

+{

+    int ret;

+    struct mtd_info_user mtd_info;

+    int fd;

+    char *write_buf = NULL;

+    unsigned int max_write_size;

+

+

+    fd = open(FLASH_DEVICE, O_RDONLY);

+    if (fd == -1) {

+        printf("Error opening flash device: %s\n", strerror(errno));

+        return GSW_HAL_NORMAL_FAIL;

+    }

+

+    if (ioctl(fd, MEMGETINFO, &mtd_info) < 0) {

+        printf("Error getting MTD info: %s\n", strerror(errno));

+        close(fd);

+        return GSW_HAL_NORMAL_FAIL;

+    }

+    

+    close(fd);

+    

+    max_write_size = mtd_info.erasesize;

+    printf("MTD erase size: %u bytes\n", max_write_size);

+

+   

+    write_buf = (char *)malloc(max_write_size);

+    if (write_buf == NULL) 

+    {

+        printf("Failed to allocate write buffer\n");

+        return -1;

+    }

+    

+    int block_id = -1;

+    printf("enter block id \n");

+    ret = scanf("%d",&block_id);

+     memset(write_buf, 0, max_write_size);

+    snprintf(write_buf, max_write_size, "Test data for block %d, timestamp: %d", 

+             block_id, (int)time(NULL));

+    printf("Write data: %s\n", write_buf);

+    printf("Writing data to block %d...\n", block_id);

+    ret = gsw_oem_write_data_ext(block_id, write_buf, max_write_size);

+    if (ret != GSW_HAL_SUCCESS) 

+    {

+        printf("Write failed with error: %d\n", ret);

+    } 

+    else

+    {

+        printf("Write successful\n");

+    }

+

+    free(write_buf);

+    return ret;

+}

+

+int read_test(void)

+{

+    int ret;

+    unsigned int read_len = 0;

+    struct mtd_info_user mtd_info;

+    int fd;

+    char *read_buf = NULL;

+    unsigned int max_read_size;

+

+

+    fd = open(FLASH_DEVICE, O_RDONLY);

+    if (fd == -1) {

+        printf("Error opening flash device: %s\n", strerror(errno));

+        return GSW_HAL_NORMAL_FAIL;

+    }

+

+    if (ioctl(fd, MEMGETINFO, &mtd_info) < 0) {

+        printf("Error getting MTD info: %s\n", strerror(errno));

+        close(fd);

+        return GSW_HAL_NORMAL_FAIL;

+    }

+    

+    close(fd);

+    

+    max_read_size = mtd_info.erasesize;

+    printf("MTD erase size: %u bytes\n", max_read_size);

+

+

+    read_buf = (char *)malloc(max_read_size);

+    if (read_buf == NULL) 

+    {

+        printf("Failed to allocate read buffer\n");

+        return -1;

+    }

+

+    memset(read_buf, 0, max_read_size);

+

+    int block_id = -1;

+    printf("enter block id \n");

+    ret = scanf("%d",&block_id);

+    printf("Reading data from block %d...\n", block_id);

+    

+    ret = gsw_oem_read_data_ext(block_id, read_buf, &read_len);

+    if (ret != GSW_HAL_SUCCESS) 

+    {

+        printf("Read failed with error: %d\n", ret);

+    }

+    else 

+    {

+        printf("Read %u bytes\n", read_len);

+        printf("Read data: %s\n", read_buf);

+    }

+    free(read_buf);  

+    return ret;

+}

+

+int main()

+{

+    int choice;

+    int ret = 0;

+

+    while (1) 

+    {

+        print_usage();

+        if (scanf("%d", &choice) != 1) 

+        {

+            printf("Invalid input\n");

+           

+            while (getchar() != '\n');

+            continue;

+        }

+

+       

+        while (getchar() != '\n');

+

+        switch (choice) 

+        {

+            case 0:

+                printf("Exit\n");

+                return 0;

+            case 1:

+                ret = write_test();

+                break;

+            case 2:

+                ret = read_test();

+                break;

+            default:

+                printf("Invalid choice\n");

+                break;

+        }

+

+        printf("\n");

+    }

+

+    return ret;

+}

+