Oliver Fabel 1 год назад
Родитель
Сommit
69839afcf5
2 измененных файлов с 58 добавлено и 59 удалено
  1. 58 1
      mp_flipper_fileio.c
  2. 0 58
      mp_flipper_halport.c

+ 58 - 1
mp_flipper_fileio.c

@@ -177,9 +177,66 @@ MP_DEFINE_CONST_OBJ_TYPE(
     locals_dict,
     locals_dict,
     &mp_flipper_file_locals_dict);
     &mp_flipper_file_locals_dict);
 
 
+mp_obj_t mp_flipper_builtin_open(size_t n_args, const mp_obj_t* args, mp_map_t* kwargs) {
+    const char* file_name = mp_obj_str_get_str(args[0]);
+
+    uint8_t access_mode = MP_FLIPPER_FILE_ACCESS_MODE_READ;
+    uint8_t open_mode = MP_FLIPPER_FILE_OPEN_MODE_OPEN_EXIST;
+    bool is_text = true;
+
+    if(n_args > 1) {
+        size_t len;
+
+        const char* mode = mp_obj_str_get_data(args[1], &len);
+
+        for(size_t i = 0; i < len; i++) {
+            if(i == 0 && mode[i] == 'r') {
+                access_mode = MP_FLIPPER_FILE_ACCESS_MODE_READ;
+                open_mode = MP_FLIPPER_FILE_OPEN_MODE_OPEN_EXIST;
+
+                continue;
+            }
+
+            if(i == 0 && mode[i] == 'w') {
+                access_mode = MP_FLIPPER_FILE_ACCESS_MODE_WRITE;
+                open_mode = MP_FLIPPER_FILE_OPEN_MODE_CREATE_ALWAYS;
+
+                continue;
+            }
+
+            if(i == 1 && mode[i] == 'b') {
+                is_text = false;
+
+                continue;
+            }
+
+            if(i == 1 && mode[i] == 't') {
+                is_text = true;
+
+                continue;
+            }
+
+            if(i >= 1 && mode[i] == '+') {
+                access_mode = MP_FLIPPER_FILE_ACCESS_MODE_READ | MP_FLIPPER_FILE_ACCESS_MODE_WRITE;
+                open_mode = MP_FLIPPER_FILE_OPEN_MODE_OPEN_APPEND;
+
+                continue;
+            }
+
+            mp_raise_OSError(MP_EINVAL);
+        }
+    }
+
+    void* handle = mp_flipper_file_open(file_name, access_mode, open_mode);
+    void* fd = mp_flipper_file_new_file_descriptor(handle, file_name, access_mode, open_mode, is_text);
+
+    return MP_OBJ_FROM_PTR(fd);
+}
+MP_DEFINE_CONST_FUN_OBJ_KW(mp_flipper_builtin_open_obj, 1, mp_flipper_builtin_open);
+
 static const mp_rom_map_elem_t mp_module_io_globals_table[] = {
 static const mp_rom_map_elem_t mp_module_io_globals_table[] = {
     {MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_io)},
     {MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_io)},
-    {MP_ROM_QSTR(MP_QSTR_open), MP_ROM_PTR(&mp_builtin_open_obj)},
+    {MP_ROM_QSTR(MP_QSTR_open), MP_ROM_PTR(&mp_flipper_builtin_open_obj)},
     {MP_ROM_QSTR(MP_QSTR_FileIO), MP_ROM_PTR(&mp_flipper_fileio_type)},
     {MP_ROM_QSTR(MP_QSTR_FileIO), MP_ROM_PTR(&mp_flipper_fileio_type)},
     {MP_ROM_QSTR(MP_QSTR_TextIO), MP_ROM_PTR(&mp_flipper_textio_type)},
     {MP_ROM_QSTR(MP_QSTR_TextIO), MP_ROM_PTR(&mp_flipper_textio_type)},
 };
 };

+ 0 - 58
mp_flipper_halport.c

@@ -9,64 +9,6 @@
 #include "mp_flipper_halport.h"
 #include "mp_flipper_halport.h"
 #include "mp_flipper_fileio.h"
 #include "mp_flipper_fileio.h"
 
 
-mp_obj_t mp_builtin_open(size_t n_args, const mp_obj_t* args, mp_map_t* kwargs) {
-    const char* file_name = mp_obj_str_get_str(args[0]);
-
-    uint8_t access_mode = MP_FLIPPER_FILE_ACCESS_MODE_READ;
-    uint8_t open_mode = MP_FLIPPER_FILE_OPEN_MODE_OPEN_EXIST;
-    bool is_text = true;
-
-    if(n_args > 1) {
-        size_t len;
-
-        const char* mode = mp_obj_str_get_data(args[1], &len);
-
-        for(size_t i = 0; i < len; i++) {
-            if(i == 0 && mode[i] == 'r') {
-                access_mode = MP_FLIPPER_FILE_ACCESS_MODE_READ;
-                open_mode = MP_FLIPPER_FILE_OPEN_MODE_OPEN_EXIST;
-
-                continue;
-            }
-
-            if(i == 0 && mode[i] == 'w') {
-                access_mode = MP_FLIPPER_FILE_ACCESS_MODE_WRITE;
-                open_mode = MP_FLIPPER_FILE_OPEN_MODE_CREATE_ALWAYS;
-
-                continue;
-            }
-
-            if(i == 1 && mode[i] == 'b') {
-                is_text = false;
-
-                continue;
-            }
-
-            if(i == 1 && mode[i] == 't') {
-                is_text = true;
-
-                continue;
-            }
-
-            if(i >= 1 && mode[i] == '+') {
-                access_mode = MP_FLIPPER_FILE_ACCESS_MODE_READ | MP_FLIPPER_FILE_ACCESS_MODE_WRITE;
-                open_mode = MP_FLIPPER_FILE_OPEN_MODE_OPEN_APPEND;
-
-                continue;
-            }
-
-            mp_raise_OSError(MP_EINVAL);
-        }
-    }
-
-    void* handle = mp_flipper_file_open(file_name, access_mode, open_mode);
-    void* fd = mp_flipper_file_new_file_descriptor(handle, file_name, access_mode, open_mode, is_text);
-
-    return MP_OBJ_FROM_PTR(fd);
-}
-
-MP_DEFINE_CONST_FUN_OBJ_KW(mp_builtin_open_obj, 1, mp_builtin_open);
-
 void mp_hal_stdout_tx_str(const char* str) {
 void mp_hal_stdout_tx_str(const char* str) {
     mp_flipper_stdout_tx_str(str);
     mp_flipper_stdout_tx_str(str);
 }
 }