浏览代码

Port Sil's changes for multi-fucc/xeon & back btn

Willy-JL 2 年之前
父节点
当前提交
318a859df0
共有 3 个文件被更改,包括 16 次插入2 次删除
  1. 11 0
      esp_flasher/esp_flasher_worker.c
  2. 4 1
      esp_flasher/lib/esp-serial-flasher/src/esp_loader.c
  3. 1 1
      geiger/flipper_geiger.c

+ 11 - 0
esp_flasher/esp_flasher_worker.c

@@ -307,6 +307,9 @@ static int32_t esp_flasher_reset(void* context) {
     _setRTS(false);
     _initRTS();
 
+    furi_hal_gpio_init_simple(&gpio_swclk, GpioModeOutputPushPull);
+    furi_hal_gpio_write(&gpio_swclk, true);
+
     if(app->reset) {
         loader_port_debug_print("Resetting board\n");
         loader_port_reset_target();
@@ -369,6 +372,14 @@ void loader_port_reset_target(void) {
 }
 
 void loader_port_enter_bootloader(void) {
+    // Also support for the Multi-fucc and Xeon boards
+    furi_hal_gpio_write(&gpio_swclk, false);
+    furi_hal_power_disable_otg();
+    loader_port_delay_ms(100);
+    furi_hal_power_enable_otg();
+    furi_hal_gpio_init_simple(&gpio_swclk, GpioModeAnalog);
+    loader_port_delay_ms(100);
+
     // adapted from custom usb-jtag-serial reset in esptool
     // (works on official wifi dev board)
     _setDTR(true);

+ 4 - 1
esp_flasher/lib/esp-serial-flasher/src/esp_loader.c

@@ -85,7 +85,10 @@ static uint32_t timeout_per_mb(uint32_t size_bytes, uint32_t time_per_mb)
 
 esp_loader_error_t esp_loader_connect(esp_loader_connect_args_t *connect_args)
 {
-    loader_port_enter_bootloader();
+    // if bootloader mode ever give issues, uncomment this function
+    // it shouldnt be needed because we enter bootloader mode before this function is called
+    // this function breaks bootloader mode for the Multi-fucc and Xeon
+    //loader_port_enter_bootloader();
 
     RETURN_ON_ERROR(loader_initialize_conn(connect_args));
 

+ 1 - 1
geiger/flipper_geiger.c

@@ -217,7 +217,7 @@ int32_t flipper_geiger_app()
         {   
             if(event.type == EventTypeInput) 
             {
-                if(event.input.key == InputKeyBack && event.input.type == InputTypeLong) 
+                if(event.input.key == InputKeyBack && (event.input.type == InputTypeShort || event.input.type == InputTypeLong)) 
                 {
                     break;
                 }