mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-07-10 23:28:10 -07:00
Merge remote-tracking branch 'ofw/dev' into mntm-dev --nobuild
This commit is contained in:
@@ -296,63 +296,65 @@ def _validate_app_imports(target, source, env):
|
||||
for sym in unresolved_syms
|
||||
if sym.startswith(
|
||||
(
|
||||
# advanced_plugin
|
||||
# example_advanced_plugins app_api_table
|
||||
"app_api_accumulator_",
|
||||
# gallagher
|
||||
"GALLAGHER_CARDAX_ASCII",
|
||||
"gallagher_deobfuscate_and_parse_credential",
|
||||
# js_
|
||||
# js_app app_api_table
|
||||
"js_delay_with_flags",
|
||||
"js_event_loop_get_loop",
|
||||
"js_flags_set",
|
||||
"js_flags_wait",
|
||||
"js_gui_make_view_factory",
|
||||
"js_module_get",
|
||||
# test_js
|
||||
"js_thread_run",
|
||||
"js_thread_stop",
|
||||
# totp_
|
||||
"totp_",
|
||||
"token_info_",
|
||||
"memset_s",
|
||||
# social_moscow, troika
|
||||
"mosgortrans_parse_transport_block",
|
||||
"render_section_header",
|
||||
# metroflip
|
||||
# js_event_loop_api_table
|
||||
"js_event_loop_get_loop",
|
||||
# js_gui_api_table
|
||||
"js_gui_make_view_factory",
|
||||
# metroflip_api_table
|
||||
"metroflip_",
|
||||
"apdu_success",
|
||||
"bit_slice_to_dec",
|
||||
"byte_to_binary",
|
||||
"free_calypso_",
|
||||
"get_calypso_",
|
||||
"get_intercode_",
|
||||
"get_network_",
|
||||
"get_opus_",
|
||||
"get_ravkav_",
|
||||
"guess_card_type",
|
||||
"handle_keyfile_case",
|
||||
"is_calypso_",
|
||||
"manage_keyfiles",
|
||||
"mf_classic_key_cache_",
|
||||
"read_file",
|
||||
"apdu_success",
|
||||
"select_app",
|
||||
"show_navigo_",
|
||||
"show_opus_",
|
||||
"show_ravkav_",
|
||||
"mf_classic_key_cache_",
|
||||
"manage_keyfiles",
|
||||
"uid_to_string",
|
||||
"handle_keyfile_case",
|
||||
"get_calypso_",
|
||||
"get_network_",
|
||||
"is_calypso_",
|
||||
"free_calypso_",
|
||||
"guess_card_type",
|
||||
"get_intercode_",
|
||||
"show_navigo_",
|
||||
"get_opus_",
|
||||
"show_opus_",
|
||||
"get_ravkav_",
|
||||
"show_ravkav_",
|
||||
"mosgortrans_parse_transport_block",
|
||||
"render_section_header",
|
||||
# nfc_app_api_table
|
||||
"gallagher_deobfuscate_and_parse_credential",
|
||||
"GALLAGHER_CARDAX_ASCII",
|
||||
"mosgortrans_parse_transport_block",
|
||||
"render_section_header",
|
||||
# totp app_api_table
|
||||
"totp_",
|
||||
"memset_s",
|
||||
"token_info_",
|
||||
# unit_tests_api_table
|
||||
"js_thread_run",
|
||||
"js_thread_stop",
|
||||
"js_value_buffer_size",
|
||||
"js_value_parse",
|
||||
)
|
||||
)
|
||||
and any(
|
||||
prefix in source[0].path
|
||||
for prefix in [
|
||||
# example_advanced_plugins app_api_table
|
||||
"advanced_plugin",
|
||||
"gallagher",
|
||||
# js_app app_api_table, js_event_loop_api_table, js_gui_api_table
|
||||
"js_", # js_app and all js_ modules
|
||||
"social_moscow",
|
||||
"test_js",
|
||||
"totp_",
|
||||
"troika",
|
||||
# metroflip
|
||||
# metroflip_api_table
|
||||
"bip_plugin",
|
||||
"calypso_plugin",
|
||||
"charliecard_plugin",
|
||||
@@ -364,6 +366,14 @@ def _validate_app_imports(target, source, env):
|
||||
"opal_plugin",
|
||||
"smartrider_plugin",
|
||||
"troika_plugin",
|
||||
# nfc_app_api_table
|
||||
"gallagher",
|
||||
"social_moscow",
|
||||
"troika",
|
||||
# totp app_api_table
|
||||
"totp_",
|
||||
# unit_tests_api_table
|
||||
"test_js",
|
||||
]
|
||||
)
|
||||
]
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
import argparse
|
||||
import logging
|
||||
from serial import Serial
|
||||
from random import randint
|
||||
from time import time
|
||||
|
||||
from flipper.utils.cdc import resolve_port
|
||||
|
||||
|
||||
def main():
|
||||
logger = logging.getLogger()
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("-p", "--port", help="CDC Port", default="auto")
|
||||
parser.add_argument(
|
||||
"-l", "--length", type=int, help="Number of bytes to send", default=1024**2
|
||||
)
|
||||
args = parser.parse_args()
|
||||
|
||||
if not (port := resolve_port(logger, args.port)):
|
||||
logger.error("Is Flipper connected via USB and not in DFU mode?")
|
||||
return 1
|
||||
port = Serial(port, 230400)
|
||||
port.timeout = 2
|
||||
|
||||
port.read_until(b">: ")
|
||||
port.write(b"echo\r")
|
||||
port.read_until(b">: ")
|
||||
|
||||
print(f"Transferring {args.length} bytes. Hang tight...")
|
||||
|
||||
start_time = time()
|
||||
|
||||
bytes_to_send = args.length
|
||||
block_size = 1024
|
||||
while bytes_to_send:
|
||||
actual_size = min(block_size, bytes_to_send)
|
||||
# can't use 0x03 because that's ASCII ETX, or Ctrl+C
|
||||
block = bytes([randint(4, 255) for _ in range(actual_size)])
|
||||
|
||||
port.write(block)
|
||||
return_block = port.read(actual_size)
|
||||
|
||||
if return_block != block:
|
||||
logger.error("Incorrect block received")
|
||||
break
|
||||
|
||||
bytes_to_send -= actual_size
|
||||
|
||||
end_time = time()
|
||||
delta = end_time - start_time
|
||||
speed = args.length / delta
|
||||
print(f"Speed: {speed/1024:.2f} KiB/s")
|
||||
|
||||
port.write(b"\x03") # Ctrl+C
|
||||
port.close()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
+1
-1
@@ -35,7 +35,7 @@ class Main(App):
|
||||
|
||||
FLASH_BASE = 0x8000000
|
||||
FLASH_PAGE_SIZE = 4 * 1024
|
||||
MIN_GAP_PAGES = 1
|
||||
MIN_GAP_PAGES = 0
|
||||
|
||||
# Update stage file larger than that is not loadable without fix
|
||||
# https://github.com/flipperdevices/flipperzero-firmware/pull/3676
|
||||
|
||||
Reference in New Issue
Block a user