Ver Fonte

clean up and update comments

zinongli há 1 ano atrás
pai
commit
47e743809d
1 ficheiros alterados com 25 adições e 82 exclusões
  1. 25 82
      t5577_writer.c

+ 25 - 82
t5577_writer.c

@@ -150,24 +150,6 @@ static uint32_t t5577_writer_navigation_submenu_callback(void* _context) {
     return T5577WriterViewSubmenu;
 }
 
-
-/**
- * @brief      Callback for returning to configure screen.
- * @details    This function is called when user press back button.  We return VIEW_NONE to
- *            indicate that we want to navigate to the configure screen.
- * @param      _context  The context - unused
- * @return     next view id
-*/
-//static uint32_t t5577_writer_navigation_configure_callback(void* _context) {
-//    UNUSED(_context);
-//    return T5577WriterViewConfigure_i;
-//}
-
-static uint32_t t5577_writer_navigation_file_callback(void* _context) {
-    UNUSED(_context);
-    return T5577WriterViewSubmenu;
-}
-
 /**
  * @brief      Handle submenu item selection.
  * @details    This function is called when user selects an item from the submenu.
@@ -197,21 +179,13 @@ static void t5577_writer_submenu_callback(void* context, uint32_t index) {
     }
 }
 
-/**
- * Our 1st sample setting is a team color.  We have 3 options: red, green, and blue.
-*/
 static const char* modulation_config_label = "Modulation";
-//static char* modulation_names[] = {"Direct", "PSK1", "PSK2", "PSK3", "FSK1", "FSK2", "FSK1a", "FSK2a","ASK/Man","Biphase","Diphase"};
 static void t5577_writer_modulation_change(VariableItem* item) {
     T5577WriterApp* app = variable_item_get_context(item);
-    FURI_LOG_D(TAG,"app defined");
     T5577WriterModel* model = view_get_model(app->view_write);
-    FURI_LOG_D(TAG,"model defined");
     if (model->data_loaded[0]) {
-        FURI_LOG_D(TAG,"loaded entered");
         variable_item_set_current_value_index(item,model->modulation_index);
     } else{
-        FURI_LOG_D(TAG,"else entered");
         uint8_t modulation_index = variable_item_get_current_value_index(item);
         model->modulation_index = modulation_index;
         model->modulation = all_mods[modulation_index];
@@ -224,7 +198,6 @@ static const char* rf_clock_config_label = "RF Clock";
 static void t5577_writer_rf_clock_change(VariableItem* item) {
     T5577WriterApp* app = variable_item_get_context(item);
     T5577WriterModel* model = view_get_model(app->view_write);
-
     if (model->data_loaded[1]) {
         variable_item_set_current_value_index(item,model->rf_clock_index);
     } else{
@@ -255,7 +228,7 @@ static void t5577_writer_user_block_num_change(VariableItem* item) {
     furi_string_printf(buffer, "%u", model->user_block_num);
     variable_item_set_current_value_text(item, furi_string_get_cstr(buffer));
     for(uint8_t i = model->user_block_num; i < LFRFID_T5577_BLOCK_COUNT; i++) {
-        model->content[i] = 0;
+        model->content[i] = 0; // pad the unneeded blocks with zeros
     }
     furi_string_free(buffer);
 }
@@ -286,7 +259,7 @@ void ensure_dir_exists(Storage *storage)
         FURI_LOG_I(TAG, "Directory exists: %s", T5577_WRITER_APPS_DATA_FOLDER);
     }
 
-    // If wiegand directory doesn't exist, create it.
+    // If t5577_writer directory doesn't exist, create it.
     if (!storage_dir_exists(storage, T5577_WRITER_FILE_FOLDER))
     {
         FURI_LOG_I(TAG, "Creating directory: %s", T5577_WRITER_FILE_FOLDER);
@@ -297,17 +270,13 @@ void ensure_dir_exists(Storage *storage)
         FURI_LOG_I(TAG, "Directory exists: %s", T5577_WRITER_FILE_FOLDER);
     }
 }
-/**
- * Our 2nd sample setting is a text field.  When the user clicks OK on the configuration 
- * setting we use a text input screen to allow the user to enter a name.  This function is
- * called when the user clicks OK on the text input screen.
-*/
+
 static const char* tag_name_entry_text = "Enter name";
 static const char* tag_name_default_value = "Tag_1";
 static void t5577_writer_file_saver(void* context) {
     T5577WriterApp* app = (T5577WriterApp*)context;
     T5577WriterModel* model = view_get_model(app->view_write);
-    model->content[0] = 0;
+    model->content[0] = 0; // clean up first block before deciding to write or save
     model->content[0] |= model->modulation.mod_page_zero;
     model->content[0] |= model->rf_clock.clock_page_zero;
     model->content[0] |= (model->user_block_num << LFRFID_T5577_MAXBLOCK_SHIFT);
@@ -353,7 +322,7 @@ static void t5577_writer_file_saver(void* context) {
         furi_string_push_back(buffer, '\n');
         storage_file_write(data_file, furi_string_get_cstr(buffer), furi_string_size(buffer));
         storage_file_close(data_file);
-    view_dispatcher_switch_to_view(app->view_dispatcher, T5577WriterViewSubmenu);
+    view_dispatcher_switch_to_view(app->view_dispatcher, T5577WriterViewSubmenu); // maybe add a pop up later
     }
 }
 
@@ -374,16 +343,17 @@ void t5577_writer_update_config_from_load(void* context) {
         }
     }
 
-    my_model->user_block_num = (my_model->content[0] >> LFRFID_T5577_MAXBLOCK_SHIFT) & 0xE;
+    my_model->user_block_num = (my_model->content[0] >> LFRFID_T5577_MAXBLOCK_SHIFT) & 0xF;  
 
-    memset(my_model->data_loaded, true, sizeof(my_model->data_loaded));
+    memset(my_model->data_loaded, true, sizeof(my_model->data_loaded)); // Everything is loaded
 
 }
 
 static void t5577_writer_config_enter_callback(void* context) {
     T5577WriterApp* app = (T5577WriterApp*)context;
     T5577WriterModel* my_model = view_get_model(app->view_write);
-    variable_item_list_reset(app->variable_item_list_config);
+    variable_item_list_reset(app->variable_item_list_config); 
+    // Recreate this view every time we enter it so that it's always updated
     app->mod_item = variable_item_list_add(
         app->variable_item_list_config,
         modulation_config_label,
@@ -422,13 +392,12 @@ static void t5577_writer_config_enter_callback(void* context) {
     view_set_previous_callback(
         view_config_i,
         t5577_writer_navigation_submenu_callback);
-    view_dispatcher_remove_view(app->view_dispatcher, T5577WriterViewConfigure_i);
+    view_dispatcher_remove_view(app->view_dispatcher, T5577WriterViewConfigure_i); // delete the last one
     view_dispatcher_add_view(
         app->view_dispatcher,
         T5577WriterViewConfigure_i,
         view_config_i);
-    view_dispatcher_switch_to_view(app->view_dispatcher,T5577WriterViewConfigure_i);
-    FURI_LOG_D(TAG,"enter_callback_finished");
+    view_dispatcher_switch_to_view(app->view_dispatcher,T5577WriterViewConfigure_i); // recreate it
 }
 
 void t5577_writer_view_load_callback(void* context) {
@@ -438,13 +407,11 @@ void t5577_writer_view_load_callback(void* context) {
     Storage* storage = furi_record_open(RECORD_STORAGE);
     ensure_dir_exists(storage);
     File* data_file = storage_file_alloc(storage);
-    dialog_file_browser_set_basic_options(&browser_options, T5577_WRITER_FILE_EXTENSION, NULL);
+    dialog_file_browser_set_basic_options(&browser_options, T5577_WRITER_FILE_EXTENSION, &I_icon);
     browser_options.base_path = T5577_WRITER_FILE_FOLDER;
     furi_string_set(app->file_path, browser_options.base_path);
     FuriString* buffer = furi_string_alloc();
-
     if(dialog_file_browser_show(app->dialogs, app->file_path, app->file_path, &browser_options)) {
-        
         if(storage_file_open(
                data_file, furi_string_get_cstr(app->file_path), FSAM_READ, FSOM_OPEN_EXISTING)) {
             while(!storage_file_eof(data_file)) { // fill buffer with every line because ch == '\n'
@@ -466,7 +433,8 @@ void t5577_writer_view_load_callback(void* context) {
                     int i = 0;
                     while(i < length) {
                         if(furi_string_get_char(buffer, i) == ':') {
-                            row_num_char_buffer[0] = furi_string_get_char(buffer, i - 1); //the number before ":" is block num
+                            row_num_char_buffer[0] = furi_string_get_char(buffer, i - 1); 
+                            //the number before ":" is block num
                             i += 2; // skip a space
                             for(size_t j = 0; j < sizeof(row_data_char_buffer); j++) {
                                 ch = furi_string_get_char(buffer, i);
@@ -494,8 +462,7 @@ void t5577_writer_view_load_callback(void* context) {
 
 /**
  * @brief      Callback when item in configuration screen is clicked.
- * @details    This function is called when user clicks OK on an item in the configuration screen.
- *            If the item clicked is our text field then we switch to the text input screen.
+ * @details    This function is called when user clicks OK on an item in the text input screen.
  * @param      context  The context - T5577WriterApp object.
  * @param      index - The index of the item that was clicked.
 */
@@ -524,18 +491,17 @@ static void t5577_writer_view_save_callback(void* context) {
         app->temp_buffer,
         app->temp_buffer_size,
         clear_previous_text);
-    // Pressing the BACK button will reload the configure screen.
+    // Pressing the BACK button will return to the main menu.
     view_set_previous_callback(
-        text_input_get_view(app->text_input), t5577_writer_navigation_file_callback);
+        text_input_get_view(app->text_input), t5577_writer_navigation_submenu_callback);
 
     // Show text input dialog.
     view_dispatcher_switch_to_view(app->view_dispatcher, T5577WriterViewTextInput);
-    
 }
 
 static void t5577_writer_actual_writing(void* model) {
     T5577WriterModel* my_model = (T5577WriterModel*)model;
-    my_model->content[0] = 0;
+    my_model->content[0] = 0; // clear up block 0
     my_model->content[0] |= my_model->modulation.mod_page_zero;
     my_model->content[0] |= my_model->rf_clock.clock_page_zero;
     my_model->content[0] |= (my_model->user_block_num << LFRFID_T5577_MAXBLOCK_SHIFT);
@@ -549,8 +515,8 @@ static void t5577_writer_actual_writing(void* model) {
 }
 
 /**
- * @brief      Callback for drawing the game screen.
- * @details    This function is called when the screen needs to be redrawn, like when the model gets updated.
+ * @brief      Callback for drawing the writing screen.
+ * @details    This function is called when the screen needs to be redrawn, so that the writing command is repeated.
  * @param      canvas  The canvas to draw on.
  * @param      model   The model - MyModel object.
 */
@@ -576,7 +542,6 @@ static void t5577_writer_view_write_callback(Canvas* canvas, void* model) {
  * @details    This function is called when the timer is elapsed.  We use this to queue a redraw event.
  * @param      context  The context - T5577WriterApp object.
 */
-
 static void t5577_writer_view_write_timer_callback(void* context) {
     T5577WriterApp* app = (T5577WriterApp*)context;
     T5577WriterModel* model = view_get_model(app->view_write);
@@ -589,9 +554,9 @@ static void t5577_writer_view_write_timer_callback(void* context) {
 }
 
 /**
- * @brief      Callback when the user starts the game screen.
- * @details    This function is called when the user enters the game screen.  We start a timer to
- *           redraw the screen periodically (so the random number is refreshed).
+ * @brief      Callback when the user starts the writing screen.
+ * @details    This function is called when the user enters the writing screen.  We start a timer to
+ *           redraw the screen periodically. (exactly like PsychToolBox lol)
  * @param      context  The context - T5577WriterApp object.
 */
 static void t5577_writer_view_write_enter_callback(void* context) {
@@ -605,8 +570,8 @@ static void t5577_writer_view_write_enter_callback(void* context) {
 }
 
 /**
- * @brief      Callback when the user exits the game screen.
- * @details    This function is called when the user exits the game screen.  We stop the timer.
+ * @brief      Callback when the user exits the writing screen.
+ * @details    This function is called when the user exits the writing screen.  We stop the timer.
  * @param      context  The context - T5577WriterApp object.
 */
 static void t5577_writer_view_write_exit_callback(void* context) {
@@ -644,27 +609,6 @@ static bool t5577_writer_view_write_custom_event_callback(uint32_t event, void*
     }
 }
 
-/**
- * @brief      Callback for game screen input.
- * @details    This function is called when the user presses a button while on the game screen.
- * @param      event    The event - InputEvent object.
- * @param      context  The context - T5577WriterApp object.
- * @return     true if the event was handled, false otherwise.
-*/
-static bool t5577_writer_view_write_input_callback(InputEvent* event, void* context) {
-    T5577WriterApp* app = (T5577WriterApp*)context;
-    if(event->type == InputTypeShort) {
-        if(event->key == InputKeyOk) {
-        // We choose to send a custom event when user presses OK button.  t5577_writer_custom_event_callback will
-        // handle our T5577WriterEventIdMaxWriteRep event.  We could have just put the code from
-        // t5577_writer_custom_event_callback here, it's a matter of preference.
-        view_dispatcher_send_custom_event(app->view_dispatcher, T5577WriterEventIdMaxWriteRep);
-        return true;
-        }
-    }
-    return false;
-}
-
 /**
  * @brief      Allocate the t5577_writer application.
  * @details    This function allocates the t5577_writer application resources.
@@ -716,7 +660,6 @@ static T5577WriterApp* t5577_writer_app_alloc() {
     
     app->view_write = view_alloc();
     view_set_draw_callback(app->view_write, t5577_writer_view_write_callback);
-    view_set_input_callback(app->view_write, t5577_writer_view_write_input_callback);
     view_set_previous_callback(app->view_write, t5577_writer_navigation_submenu_callback);
     view_set_enter_callback(app->view_write, t5577_writer_view_write_enter_callback);
     view_set_exit_callback(app->view_write, t5577_writer_view_write_exit_callback);