rdefeo 1 год назад
Родитель
Сommit
11ac2a61e3
11 измененных файлов с 40 добавлено и 33 удалено
  1. 12 1
      CHANGELOG.md
  2. 17 10
      README_flipperlab.md
  3. 1 3
      actions/action.h
  4. 0 2
      actions/action_ir_utils.c
  5. 1 1
      application.fam
  6. 1 1
      item.c
  7. 0 4
      quac.h
  8. BIN
      quac.png
  9. 4 5
      scenes/scene_action_ir_list.c
  10. 1 3
      scenes/scene_items.c
  11. 3 3
      scenes/scenes.h

+ 12 - 1
CHANGELOG.md

@@ -1,23 +1,34 @@
+## 0.6
+
+- Basic NFC support
+- Improved IR file import, prompts for specific IR command
+- NFC default duration in Settings
+
 ## 0.5
+
 - Basic infrared support
 - Action settings: Rename, Delete, Import, Create Group
 - Support for Sub-GHz external antenna in Settings
 - About screen
 
 ## 0.4
+
 - New UI with horizontal/vertical layout support
 - Added icons, better header font
 - Settings menu to control UI
 - RFID duration suppport added to playlists
-	
+
 ## 0.3
+
 - Updated to firmware SDK 0.99.1
 
 ## 0.2
+
 - Playlist support
 - Hidden file/folder support
 
 ## 0.1
+
 - First release!
 - Supports Sub-GHz and RFID files
 - Items can be sorted based on filename prefix

+ 17 - 10
README_flipperlab.md

@@ -1,41 +1,48 @@
 # Quac! Remote
 
 ## QUick ACtion Remote Control for Flipperzero
+
 This app allows you to organize previously recorded signals, of any type, so that you can quickly and easily play them back. No more needing to recall whether that door is Sub-GHz or RFID! Just navigate to that action in **Quac** and press OK to send!
 
-The app does not provide any recording functionality - you must use the existing Flipperzero apps to create the saved files for your action/device. Additionally, you must manage the folder structure manually on your SD card.
+The app does not provide any recording functionality - you can use the existing Flipperzero apps to create the saved files or import from existing files. Quac! provides some basic functionality to manage your files. Or, you can manage the folder structure manually on your SD card on your PC.
 
-* Only Sub-Ghz (.sub) and RFID (.rfid) files are supported at this time, IR is coming soon!
+* Supported files include: Sub-Ghz (.sub), RFID (.rfid), Infrared (.ir), and NFC (.nfc)
 
 ## Features
-* Playback of rfid, sub-ghz, (and soon IR) signals
+
+* Playback of rfid, sub-ghz, IR, and NFC signals
 * Easy navigation
 * Flexible signal organization
+* In-app file management
 * Playlist support
 * Flexible naming/sorting, hidden file/folder support
 * Customizable UI
 
 ## Signal playback
-The signal files are played back as recorded. During playback/transmit, the LED light will flash blue until the action is complete. For RFID signals, they are continuously played back for the duration specified in the Settings.
+
+The signal files are played back as recorded. During playback/transmit, the LED light will flash blue until the action is complete. For RFID and NFC signals, they are continuously played back for the durations specified in the Settings.
 
 ## Signal Organization
+
 The key to organizing your Quac interface is to organize your **/ext/apps_data/quac** folder structure. The UI is derived directly from the filesystem structure. Every individual file/signal is assigned a button. This is an "action". And every folder/directory is a logical group of more files/folders. Selecting a group in the UI will show you the contents of that folder. There is no limit on the number of actions or folders - nest as deep as you want!
 
-You can organize your files by device type, or by function. For example, you may have a folder of "TV" actions, which correspond to Channel Up, Channel Down, Volume Up, Volume Down, etc. Or you may have a "Work Access" folder, which contains files/actions that correspond to Parking Gate, Garage Door, Lobby Entrance. 
+You can organize your files by device type, or by function. For example, you may have a folder of "TV" actions, which correspond to Channel Up, Channel Down, Volume Up, Volume Down, etc. Or you may have a "Work Access" folder, which contains files/actions that correspond to Parking Gate, Garage Door, Lobby Entrance.
 
 The files in a folder can be of mixed types. **This is Quac's main strength!** So continuing with the "Work Access" example, the Parking Gate can be Sub-Ghz and the Garage Door can be RFID.
 
 ## Playlists
+
 You can chain multiple signal playback actions together by creating a playlist. Simply create a text file which contains a list of paths to the signals you wish to transmit - they will be played sequentially. Playlist names show up as clickable button, like all other individual signals/actions.
 
-Errors found in the playlist will halt playback and vibrate the F0. Blank lines are ignored.
+Errors found in the playlist will halt playback and vibrate the Flipperzero. Blank lines are ignored.
 
 ## Settings
 
 The settings menu will appear as the last item when you are viewing the "root" directory. Within the settings you can control:
-- Layout: Switch between Horizontal and Vertical layout
-- Show Icons: Toggles display of all icons
-- Show Headers: Toggles display of header/folder text at the top, giving you room for one more item on screen!
-- RFID Duration: Changes the length of time a RFID signal is transmitted. Can be overridden, per RFID file in a Playlist
+
+* Layout: Switch between Horizontal and Vertical layout
+* Show Icons: Toggles display of all icons
+* Show Headers: Toggles display of header/folder text at the top, giving you room for one more item on screen!
+* RFID Duration: Changes the length of time a RFID signal is transmitted. Can be overridden, per RFID file in a Playlist
 
 **More information can be found in the Git repository**

+ 1 - 3
actions/action.h

@@ -10,6 +10,4 @@ struct Item;
  * @param   item        Selected item to transmit
  * @param   error       Error message if unsuccessful
 */
-void action_tx(void* context, Item* item, FuriString* error);
-
-bool action_ir_list_commands(const FuriString* ir_file, FuriString* command);
+void action_tx(void* context, Item* item, FuriString* error);

+ 0 - 2
actions/action_ir_utils.c

@@ -69,7 +69,6 @@ bool infrared_utils_read_signal_at_index(
             break;
         }
         if(furi_string_equal(temp_str, "parsed")) {
-            FURI_LOG_I(TAG, "IR File is PARSED");
             signal->is_raw = false;
 
             if(!flipper_format_read_string(fff_data_file, "protocol", temp_str)) {
@@ -95,7 +94,6 @@ bool infrared_utils_read_signal_at_index(
             }
             success = true;
         } else if(furi_string_equal(temp_str, "raw")) {
-            FURI_LOG_I(TAG, "IR File is RAW");
             signal->is_raw = true;
 
             if(!flipper_format_read_uint32(

+ 1 - 1
application.fam

@@ -9,7 +9,7 @@ App(
     fap_category="Tools",
     # Optional values
     fap_version="0.6",
-    fap_icon="quac.png",  # 10x10 1-bit PNG
+    fap_icon="images/quac.png",  # 10x10 1-bit PNG
     fap_description="Quick Action remote control app",
     fap_author="Roberto De Feo",
     fap_weburl="https://github.com/rdefeo/quac",

+ 1 - 1
item.c

@@ -148,7 +148,7 @@ void item_prettify_name(FuriString* name) {
             }
         }
     }
-    furi_string_replace_str(name, "_", " ", 0);
+    furi_string_replace_all_str(name, "_", " ");
     // FURI_LOG_I(TAG, "... %s", furi_string_get_cstr(name));
 }
 

+ 0 - 4
quac.h

@@ -14,12 +14,8 @@
 #include <notification/notification_messages.h>
 
 #include "views/action_menu.h"
-
 #include "item.h"
 
-// #pragma GCC push_options
-// #pragma GCC optimize("O0")
-
 #define QUAC_NAME "Quac!"
 #define QUAC_VERSION "v0.6"
 #define QUAC_ABOUT                                    \


+ 4 - 5
scenes/scene_action_ir_list.c

@@ -8,9 +8,7 @@
 #include "quac.h"
 #include "scenes.h"
 #include "scene_action_ir_list.h"
-#include "../actions/action.h"
 #include "../actions/action_ir_utils.h"
-#include "quac_icons.h"
 
 #include <flipper_format/flipper_format.h>
 
@@ -94,9 +92,10 @@ bool scene_action_ir_list_on_event(void* context, SceneManagerEvent event) {
                 break;
             }
 
-            // Import successful
-            // TODO: give user an OK prompt and leave them on this scene
-            // in case they want to import more from this IR file
+            // Import successful!
+            // Leave the user on this scene, in case they want to import
+            // more commands from this IR file
+            notification_message(app->notifications, &sequence_success);
 
         } while(false);
 

+ 1 - 3
scenes/scene_items.c

@@ -128,10 +128,8 @@ bool scene_items_on_event(void* context, SceneManagerEvent event) {
 
                     if(furi_string_size(error)) {
                         FURI_LOG_E(TAG, furi_string_get_cstr(error));
-                        // Change LED to Red and Vibrate!
+                        // Fire up the LED and vibrate!
                         notification_message(app->notifications, &sequence_error);
-
-                        // Display DialogEx popup or something?
                     }
 
                     furi_string_free(error);

+ 3 - 3
scenes/scenes.h

@@ -12,9 +12,9 @@ typedef enum {
 } appScenes;
 
 typedef enum {
-    QView_ActionMenu, // new UI,
-    QView_Settings, // Variable Item List for settings
-    QView_SubMenu, // [SubMenu] Action: Rename, Delete, Import, IR List
+    QView_ActionMenu, // main UI
+    QView_Settings, // Variable Item List for App Settings
+    QView_SubMenu, // Action: Rename, Delete, Import, IR List
     QView_TextInput, // Action: Rename, Create Group
     QView_Popup, // About screen
 } appView;