diff --git a/applications/external/airmouse/application.fam b/applications/external/airmouse/application.fam index abc3f55bb..7bdba948a 100644 --- a/applications/external/airmouse/application.fam +++ b/applications/external/airmouse/application.fam @@ -4,6 +4,6 @@ App( apptype=FlipperAppType.EXTERNAL, entry_point="air_mouse_app", stack_size=10 * 1024, - fap_icon="mouse_10px.png", fap_category="GPIO", + fap_icon="mouse_10px.png", ) diff --git a/applications/external/asteroids/application.fam b/applications/external/asteroids/application.fam index 5eb43a6e5..5f70a0e1c 100644 --- a/applications/external/asteroids/application.fam +++ b/applications/external/asteroids/application.fam @@ -8,8 +8,8 @@ App( stack_size=8 * 1024, order=50, fap_icon="appicon.png", - fap_category="Games", fap_icon_assets="assets", # Image assets to compile for this application + fap_category="Games", fap_description="An implementation of the classic arcade game Asteroids", fap_author="antirez, SimplyMinimal", fap_weburl="https://github.com/SimplyMinimal/FlipperZero-Asteroids", diff --git a/applications/external/bpmtapper/application.fam b/applications/external/bpmtapper/application.fam index b6ad315b6..93c4179c5 100644 --- a/applications/external/bpmtapper/application.fam +++ b/applications/external/bpmtapper/application.fam @@ -7,7 +7,7 @@ App( requires=["gui"], stack_size=2 * 1024, fap_icon="bpm_10px.png", - fap_icon_assets="icons", fap_category="Music", - order=35, + fap_icon_assets="icons", + order=15, ) diff --git a/applications/external/geigercounter/application.fam b/applications/external/geiger/application.fam similarity index 100% rename from applications/external/geigercounter/application.fam rename to applications/external/geiger/application.fam diff --git a/applications/external/geigercounter/flipper_geiger.c b/applications/external/geiger/flipper_geiger.c similarity index 100% rename from applications/external/geigercounter/flipper_geiger.c rename to applications/external/geiger/flipper_geiger.c diff --git a/applications/external/geigercounter/geiger.png b/applications/external/geiger/geiger.png similarity index 100% rename from applications/external/geigercounter/geiger.png rename to applications/external/geiger/geiger.png diff --git a/applications/external/nightstand/application.fam b/applications/external/nightstand_clock/application.fam similarity index 100% rename from applications/external/nightstand/application.fam rename to applications/external/nightstand_clock/application.fam diff --git a/applications/external/nightstand/clock.png b/applications/external/nightstand_clock/clock.png similarity index 100% rename from applications/external/nightstand/clock.png rename to applications/external/nightstand_clock/clock.png diff --git a/applications/external/nightstand/clock_app.c b/applications/external/nightstand_clock/clock_app.c similarity index 100% rename from applications/external/nightstand/clock_app.c rename to applications/external/nightstand_clock/clock_app.c diff --git a/applications/external/nightstand/clock_app.h b/applications/external/nightstand_clock/clock_app.h similarity index 100% rename from applications/external/nightstand/clock_app.h rename to applications/external/nightstand_clock/clock_app.h diff --git a/applications/external/nrf24scan/Distr/nrf24scan/addr-CO2mini.txt b/applications/external/nrf24scan/Distr/nrf24scan/addr-CO2mini.txt new file mode 100644 index 000000000..d159da337 --- /dev/null +++ b/applications/external/nrf24scan/Distr/nrf24scan/addr-CO2mini.txt @@ -0,0 +1,7 @@ +Rate: 1 +Ch: 122 +ESB: 1 +DPL: 0 +CRC: 2 +Payload: 4 +P0: C8C8C1 diff --git a/applications/external/nrf24scan/Distr/nrf24scan/addr-WCO1.txt b/applications/external/nrf24scan/Distr/nrf24scan/addr-WCO1.txt new file mode 100644 index 000000000..658340d03 --- /dev/null +++ b/applications/external/nrf24scan/Distr/nrf24scan/addr-WCO1.txt @@ -0,0 +1,7 @@ +Rate: 1 +Ch: 120 +ESB: 1 +DPL: 1 +CRC: 2 +Payload: 4 +P0: C8C8E5 diff --git a/applications/external/nrf24scan/Distr/nrf24scan/addresses.txt b/applications/external/nrf24scan/Distr/nrf24scan/addresses.txt new file mode 100644 index 000000000..e5bd3ed32 --- /dev/null +++ b/applications/external/nrf24scan/Distr/nrf24scan/addresses.txt @@ -0,0 +1,11 @@ +Rate: 1 +Ch: 2 +ESB: 1 +DPL: 0 +CRC: 2 +Payload: 4 +P0: C8C8C0 +P1: C8C8C1 +P2: C2 +P3: C3 +P4: E5 diff --git a/applications/external/nrf24scan/Distr/nrf24scan/sniff.txt b/applications/external/nrf24scan/Distr/nrf24scan/sniff.txt new file mode 100644 index 000000000..fa8c5ba9f --- /dev/null +++ b/applications/external/nrf24scan/Distr/nrf24scan/sniff.txt @@ -0,0 +1,5 @@ +SNIFF +ESB: 1 +CRC: 2 +P0: 00AA +P1: 0055 diff --git a/applications/external/nrf24scan/nrf24scan.c b/applications/external/nrf24scan/nrf24scan.c index 1b0a42808..5f941098d 100644 --- a/applications/external/nrf24scan/nrf24scan.c +++ b/applications/external/nrf24scan/nrf24scan.c @@ -532,6 +532,7 @@ static void prepare_nrf24(bool fsend_packet) { nrf24_HANDLE, REG_FEATURE, 0); // Enables the W_TX_PAYLOAD_NOACK command, Disable Payload with ACK, set Dynamic Payload + // EN_DYN_ACK(0x01) for W_TX_PAYLOAD_NOACK cmd broke AA on some fake nRF24l01+ modules } else if(setup_from_log) { // Scan nrf24_write_reg( nrf24_HANDLE, @@ -544,8 +545,8 @@ static void prepare_nrf24(bool fsend_packet) { nrf24_HANDLE, REG_FEATURE, *(rec + 2 + addr_size) >> 2 != 0x33 ? - 4 + 1 : - 1); // Enables the W_TX_PAYLOAD_NOACK command, Disable Payload with ACK, set Dynamic Payload + 4 : + 0); // Enables the W_TX_PAYLOAD_NOACK command, Disable Payload with ACK, set Dynamic Payload if(*(rec + 1) & 0b100) { // ESB nrf24_write_reg(nrf24_HANDLE, REG_SETUP_RETR, 0x01); // Automatic Retransmission nrf24_write_reg(nrf24_HANDLE, REG_EN_AA, 0x3F); // Auto acknowledgement @@ -570,8 +571,8 @@ static void prepare_nrf24(bool fsend_packet) { nrf24_HANDLE, REG_FEATURE, NRF_DPL ? - 4 + 1 : - 1); // Enables the W_TX_PAYLOAD_NOACK command, Disable Payload with ACK, set Dynamic Payload + 4 : + 0); // Enables the W_TX_PAYLOAD_NOACK command, Disable Payload with ACK, set Dynamic Payload nrf24_write_reg( nrf24_HANDLE, REG_DYNPD, NRF_DPL ? 0x3F : 0); // Enable dynamic payload reg nrf24_write_reg(nrf24_HANDLE, REG_RF_CH, NRF_channel); @@ -909,7 +910,7 @@ bool nrf24_send_packet() { nrf24_set_maclen(nrf24_HANDLE, 2); nrf24_set_mac(REG_RX_ADDR_P0, adr, 2); nrf24_set_mac(REG_TX_ADDR, adr, 2); - last_packet_send_st = nrf24_txpacket(nrf24_HANDLE, ptr + 2 + 2, 32 - 2, false); + last_packet_send_st = nrf24_txpacket(nrf24_HANDLE, ptr + 2 + 2, 32 - 2, true); } else { nrf24_write_reg( nrf24_HANDLE, REG_SETUP_RETR, NRF_ESB ? 0x11 : 0); // Automatic Retransmission @@ -943,7 +944,7 @@ bool nrf24_send_packet() { NRF_CRC == 2 ? 0b1100 : 0))); // Mask all interrupts nrf24_write_reg(nrf24_HANDLE, REG_DYNPD, NRF_DPL ? 0x3F : 0); // Enable dynamic payload reg - last_packet_send_st = nrf24_txpacket(nrf24_HANDLE, ptr + 2, a, false); + last_packet_send_st = nrf24_txpacket(nrf24_HANDLE, ptr + 2, a, true); } last_packet_send = view_log_arr_idx; notification_message( @@ -954,10 +955,9 @@ bool nrf24_send_packet() { } static void render_callback(Canvas* const canvas, void* ctx) { - furi_assert(ctx); const PluginState* plugin_state = ctx; - furi_mutex_acquire(plugin_state->mutex, FuriWaitForever); - + if(plugin_state == NULL) return; + if(furi_mutex_acquire(plugin_state->mutex, 25) != FuriStatusOk) return; //canvas_draw_frame(canvas, 0, 0, 128, 64); // border around the edge of the screen if(what_doing == 0) { canvas_set_font(canvas, FontSecondary); // 8x10 font, 6 lines @@ -1334,12 +1334,12 @@ int32_t nrf24scan_app(void* p) { APP = malloc(sizeof(Nrf24Scan)); DOLPHIN_DEED(DolphinDeedPluginStart); APP->event_queue = furi_message_queue_alloc(8, sizeof(PluginEvent)); - APP->plugin_state = malloc(sizeof(PluginState)); - APP->plugin_state->mutex = furi_mutex_alloc(FuriMutexTypeNormal); - if(!APP->plugin_state->mutex) { + PluginState* plugin_state = malloc(sizeof(PluginState)); + plugin_state->mutex = furi_mutex_alloc(FuriMutexTypeNormal); + if(!plugin_state->mutex) { furi_message_queue_free(APP->event_queue); FURI_LOG_E(TAG, "cannot create mutex"); - free(APP->plugin_state); + free(plugin_state); return 255; } APP->log_arr = malloc(LOG_REC_SIZE * MAX_LOG_RECORDS); @@ -1365,7 +1365,7 @@ int32_t nrf24scan_app(void* p) { // Set system callbacks APP->view_port = view_port_alloc(); - view_port_draw_callback_set(APP->view_port, render_callback, APP->plugin_state); + view_port_draw_callback_set(APP->view_port, render_callback, plugin_state); view_port_input_callback_set(APP->view_port, input_callback, APP->event_queue); // Open GUI and register view_port @@ -1406,7 +1406,7 @@ int32_t nrf24scan_app(void* p) { PluginEvent event; for(bool processing = true; processing;) { FuriStatus event_status = furi_message_queue_get(APP->event_queue, &event, 100); - furi_mutex_acquire(APP->plugin_state->mutex, FuriWaitForever); + furi_mutex_acquire(plugin_state->mutex, FuriWaitForever); if(event_status == FuriStatusOk) { // press events @@ -1633,7 +1633,7 @@ int32_t nrf24scan_app(void* p) { } view_port_update(APP->view_port); - furi_mutex_release(APP->plugin_state->mutex); + furi_mutex_release(plugin_state->mutex); } nrf24_set_idle(nrf24_HANDLE); if(log_arr_idx && (log_to_file == 1 || log_to_file == 2)) { @@ -1648,11 +1648,11 @@ int32_t nrf24scan_app(void* p) { furi_record_close(RECORD_NOTIFICATION); furi_record_close(RECORD_STORAGE); view_port_free(APP->view_port); - furi_mutex_free(APP->plugin_state->mutex); furi_message_queue_free(APP->event_queue); - free(APP->plugin_state); if(APP->log_arr) free(APP->log_arr); if(APP->found) free(APP->found); + furi_mutex_free(plugin_state->mutex); + free(plugin_state); free(APP); return 0; } diff --git a/applications/external/nrf24scan/nrf24scan.h b/applications/external/nrf24scan/nrf24scan.h index cfc4806e7..86e34856d 100644 --- a/applications/external/nrf24scan/nrf24scan.h +++ b/applications/external/nrf24scan/nrf24scan.h @@ -31,7 +31,6 @@ struct FOUND { typedef struct { Gui* gui; FuriMessageQueue* event_queue; - PluginState* plugin_state; ViewPort* view_port; Storage* storage; NotificationApp* notification; diff --git a/applications/external/qrcode/LICENSE b/applications/external/qrcode/LICENSE new file mode 100644 index 000000000..85e7f6b40 --- /dev/null +++ b/applications/external/qrcode/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Bob Matcuk + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/applications/external/usb_hid_autofire/application.fam b/applications/external/usb_hid_autofire/application.fam index 8a184d674..9e7b9378c 100644 --- a/applications/external/usb_hid_autofire/application.fam +++ b/applications/external/usb_hid_autofire/application.fam @@ -1,5 +1,3 @@ -# qv. https://github.com/flipperdevices/flipperzero-firmware/blob/dev/documentation/AppManifests.md - App( appid="usb_hid_autofire", name="USB HID Autofire",