Просмотр исходного кода

[FL-3232] FuriHal: fix gpio naming and add explicit pulls for vibro, speaker and ir_tx (#2565)

* FuriHal: fix gpio naming and add explicit pulls for vibro, speaker and ir_tx
* Github: workflow event debug print
* Github: proper PR head commit SHA extraction in get_env.py
あく 2 лет назад
Родитель
Сommit
0d8518d31d

+ 2 - 2
.github/workflows/build.yml

@@ -37,7 +37,7 @@ jobs:
           else
             TYPE="other"
           fi
-          python3 scripts/get_env.py "--event_file=${{ github.event_path }}" "--type=$TYPE"
+          python3 scripts/get_env.py "--event_file=${{ github.event_path }}" "--type=$TYPE" || cat "${{ github.event_path }}"
           echo random_hash=$(openssl rand -base64 40 | shasum -a 256 | awk '{print $1}') >> $GITHUB_OUTPUT
           echo "event_type=$TYPE" >> $GITHUB_OUTPUT
 
@@ -182,7 +182,7 @@ jobs:
           else
             TYPE="other"
           fi
-          python3 scripts/get_env.py "--event_file=${{ github.event_path }}" "--type=$TYPE"
+          python3 scripts/get_env.py "--event_file=${{ github.event_path }}" "--type=$TYPE" || cat "${{ github.event_path }}"
 
       - name: 'Build the firmware'
         run: |

+ 1 - 1
.github/workflows/merge_report.yml

@@ -30,7 +30,7 @@ jobs:
           else
             TYPE="other"
           fi
-          python3 scripts/get_env.py "--event_file=${{ github.event_path }}" "--type=$TYPE"
+          python3 scripts/get_env.py "--event_file=${{ github.event_path }}" "--type=$TYPE" || cat "${{ github.event_path }}"
 
       - name: 'Check ticket and report'
         run: |

+ 1 - 1
.github/workflows/pvs_studio.yml

@@ -38,7 +38,7 @@ jobs:
           else
             TYPE="other"
           fi
-          python3 scripts/get_env.py "--event_file=${{ github.event_path }}" "--type=$TYPE"
+          python3 scripts/get_env.py "--event_file=${{ github.event_path }}" "--type=$TYPE" || cat "${{ github.event_path }}"
 
       - name: 'Supply PVS credentials'
         run: |

+ 1 - 1
applications/debug/accessor/accessor_app.cpp

@@ -34,7 +34,7 @@ void AccessorApp::run(void) {
 AccessorApp::AccessorApp()
     : text_store{0} {
     notification = static_cast<NotificationApp*>(furi_record_open(RECORD_NOTIFICATION));
-    onewire_host = onewire_host_alloc(&ibutton_gpio);
+    onewire_host = onewire_host_alloc(&gpio_ibutton);
     furi_hal_power_enable_otg();
 }
 

+ 2 - 2
applications/examples/example_thermo/README.md

@@ -33,10 +33,10 @@ It is possible to use other GPIO pin as a 1-Wire data pin. In order to change it
  - gpio_ext_pa4
  - gpio_ext_pa6
  - gpio_ext_pa7
- - ibutton_gpio
+ - gpio_ibutton
 */
 
-#define THERMO_GPIO_PIN (ibutton_gpio)
+#define THERMO_GPIO_PIN (gpio_ibutton)
 ```
 Do not forget about the external pull-up resistor as these pins do not have one built-in.
 

+ 2 - 2
applications/examples/example_thermo/example_thermo.c

@@ -43,10 +43,10 @@
  - gpio_ext_pa4
  - gpio_ext_pa6
  - gpio_ext_pa7
- - ibutton_gpio
+ - gpio_ibutton
 */
 
-#define THERMO_GPIO_PIN (ibutton_gpio)
+#define THERMO_GPIO_PIN (gpio_ibutton)
 
 /* Flags which the reader thread responds to */
 typedef enum {

+ 1 - 1
applications/main/onewire/onewire_cli.c

@@ -25,7 +25,7 @@ static void onewire_cli_print_usage() {
 
 static void onewire_cli_search(Cli* cli) {
     UNUSED(cli);
-    OneWireHost* onewire = onewire_host_alloc(&ibutton_gpio);
+    OneWireHost* onewire = onewire_host_alloc(&gpio_ibutton);
     uint8_t address[8];
     bool done = false;
 

+ 4 - 4
firmware/targets/f18/api_symbols.csv

@@ -1,5 +1,5 @@
 entry,status,name,type,params
-Version,+,20.1,,
+Version,+,21.0,,
 Header,+,applications/services/bt/bt_service/bt.h,,
 Header,+,applications/services/cli/cli.h,,
 Header,+,applications/services/cli/cli_vcp.h,,
@@ -2161,7 +2161,7 @@ Variable,+,gpio_usart_rx,const GpioPin,
 Variable,+,gpio_usart_tx,const GpioPin,
 Variable,+,gpio_usb_dm,const GpioPin,
 Variable,+,gpio_usb_dp,const GpioPin,
-Variable,+,ibutton_gpio,const GpioPin,
+Variable,+,gpio_ibutton,const GpioPin,
 Variable,+,input_pins,const InputPin[],
 Variable,+,input_pins_count,const size_t,
 Variable,+,message_blink_set_color_blue,const NotificationMessage,
@@ -2309,7 +2309,7 @@ Variable,+,message_red_255,const NotificationMessage,
 Variable,+,message_sound_off,const NotificationMessage,
 Variable,+,message_vibro_off,const NotificationMessage,
 Variable,+,message_vibro_on,const NotificationMessage,
-Variable,+,periph_power,const GpioPin,
+Variable,+,gpio_periph_power,const GpioPin,
 Variable,+,sequence_audiovisual_alert,const NotificationSequence,
 Variable,+,sequence_blink_blue_10,const NotificationSequence,
 Variable,+,sequence_blink_blue_100,const NotificationSequence,
@@ -2364,4 +2364,4 @@ Variable,+,usb_cdc_single,FuriHalUsbInterface,
 Variable,+,usb_hid,FuriHalUsbInterface,
 Variable,+,usb_hid_u2f,FuriHalUsbInterface,
 Variable,+,usbd_devfs,const usbd_driver,
-Variable,+,vibro_gpio,const GpioPin,
+Variable,+,gpio_vibro,const GpioPin,

+ 11 - 9
firmware/targets/f18/furi_hal/furi_hal_resources.c

@@ -6,8 +6,8 @@
 
 #define TAG "FuriHalResources"
 
-const GpioPin vibro_gpio = {.port = GPIOA, .pin = LL_GPIO_PIN_8};
-const GpioPin ibutton_gpio = {.port = GPIOB, .pin = LL_GPIO_PIN_14};
+const GpioPin gpio_vibro = {.port = GPIOA, .pin = LL_GPIO_PIN_8};
+const GpioPin gpio_ibutton = {.port = GPIOB, .pin = LL_GPIO_PIN_14};
 
 const GpioPin gpio_display_cs = {.port = GPIOC, .pin = LL_GPIO_PIN_11};
 const GpioPin gpio_display_rst_n = {.port = GPIOB, .pin = LL_GPIO_PIN_0};
@@ -57,7 +57,7 @@ const GpioPin gpio_i2c_power_scl = {.port = GPIOA, .pin = LL_GPIO_PIN_9};
 
 const GpioPin gpio_speaker = {.port = GPIOB, .pin = LL_GPIO_PIN_8};
 
-const GpioPin periph_power = {.port = GPIOA, .pin = LL_GPIO_PIN_3};
+const GpioPin gpio_periph_power = {.port = GPIOA, .pin = LL_GPIO_PIN_3};
 
 const GpioPin gpio_usb_dm = {.port = GPIOA, .pin = LL_GPIO_PIN_11};
 const GpioPin gpio_usb_dp = {.port = GPIOA, .pin = LL_GPIO_PIN_12};
@@ -118,8 +118,8 @@ void furi_hal_resources_init_early() {
     furi_hal_resources_init_input_pins(GpioModeInput);
 
     // SD Card stepdown control
-    furi_hal_gpio_write(&periph_power, 1);
-    furi_hal_gpio_init(&periph_power, GpioModeOutputOpenDrain, GpioPullNo, GpioSpeedLow);
+    furi_hal_gpio_write(&gpio_periph_power, 1);
+    furi_hal_gpio_init(&gpio_periph_power, GpioModeOutputOpenDrain, GpioPullNo, GpioSpeedLow);
 
     // Display pins
     furi_hal_gpio_write(&gpio_display_rst_n, 1);
@@ -165,6 +165,10 @@ void furi_hal_resources_init() {
     // Button pins
     furi_hal_resources_init_input_pins(GpioModeInterruptRiseFall);
 
+    // Explicit pulls pins
+    furi_hal_gpio_init(&gpio_speaker, GpioModeAnalog, GpioPullDown, GpioSpeedLow);
+    furi_hal_gpio_init(&gpio_vibro, GpioModeAnalog, GpioPullDown, GpioSpeedLow);
+
     // Display pins
     furi_hal_gpio_init(&gpio_display_rst_n, GpioModeOutputPushPull, GpioPullNo, GpioSpeedLow);
     furi_hal_gpio_write(&gpio_display_rst_n, 0);
@@ -176,9 +180,7 @@ void furi_hal_resources_init() {
     furi_hal_gpio_init(&gpio_sdcard_cd, GpioModeInput, GpioPullNo, GpioSpeedLow);
     furi_hal_gpio_write(&gpio_sdcard_cd, 0);
 
-    furi_hal_gpio_init(&vibro_gpio, GpioModeAnalog, GpioPullNo, GpioSpeedLow);
-
-    furi_hal_gpio_init(&ibutton_gpio, GpioModeAnalog, GpioPullNo, GpioSpeedLow);
+    furi_hal_gpio_init(&gpio_ibutton, GpioModeAnalog, GpioPullNo, GpioSpeedLow);
 
     NVIC_SetPriority(EXTI0_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(), 5, 0));
     NVIC_EnableIRQ(EXTI0_IRQn);
@@ -222,7 +224,7 @@ int32_t furi_hal_resources_get_ext_pin_number(const GpioPin* gpio) {
         return 15;
     else if(gpio == &gpio_ext_pc0)
         return 16;
-    else if(gpio == &ibutton_gpio)
+    else if(gpio == &gpio_ibutton)
         return 17;
     else
         return -1;

+ 3 - 3
firmware/targets/f18/furi_hal/furi_hal_resources.h

@@ -50,8 +50,8 @@ extern const size_t input_pins_count;
 extern const GpioPinRecord gpio_pins[];
 extern const size_t gpio_pins_count;
 
-extern const GpioPin vibro_gpio;
-extern const GpioPin ibutton_gpio;
+extern const GpioPin gpio_vibro;
+extern const GpioPin gpio_ibutton;
 
 extern const GpioPin gpio_display_cs;
 extern const GpioPin gpio_display_rst_n;
@@ -100,7 +100,7 @@ extern const GpioPin gpio_i2c_power_scl;
 
 extern const GpioPin gpio_speaker;
 
-extern const GpioPin periph_power;
+extern const GpioPin gpio_periph_power;
 
 extern const GpioPin gpio_usb_dm;
 extern const GpioPin gpio_usb_dp;

+ 4 - 4
firmware/targets/f7/api_symbols.csv

@@ -1,5 +1,5 @@
 entry,status,name,type,params
-Version,+,20.1,,
+Version,+,21.0,,
 Header,+,applications/services/bt/bt_service/bt.h,,
 Header,+,applications/services/cli/cli.h,,
 Header,+,applications/services/cli/cli_vcp.h,,
@@ -3100,7 +3100,7 @@ Variable,+,gpio_usart_rx,const GpioPin,
 Variable,+,gpio_usart_tx,const GpioPin,
 Variable,+,gpio_usb_dm,const GpioPin,
 Variable,+,gpio_usb_dp,const GpioPin,
-Variable,+,ibutton_gpio,const GpioPin,
+Variable,+,gpio_ibutton,const GpioPin,
 Variable,+,input_pins,const InputPin[],
 Variable,+,input_pins_count,const size_t,
 Variable,+,lfrfid_protocols,const ProtocolBase*[],
@@ -3249,7 +3249,7 @@ Variable,+,message_red_255,const NotificationMessage,
 Variable,+,message_sound_off,const NotificationMessage,
 Variable,+,message_vibro_off,const NotificationMessage,
 Variable,+,message_vibro_on,const NotificationMessage,
-Variable,+,periph_power,const GpioPin,
+Variable,+,gpio_periph_power,const GpioPin,
 Variable,+,sequence_audiovisual_alert,const NotificationSequence,
 Variable,+,sequence_blink_blue_10,const NotificationSequence,
 Variable,+,sequence_blink_blue_100,const NotificationSequence,
@@ -3307,4 +3307,4 @@ Variable,+,usb_cdc_single,FuriHalUsbInterface,
 Variable,+,usb_hid,FuriHalUsbInterface,
 Variable,+,usb_hid_u2f,FuriHalUsbInterface,
 Variable,+,usbd_devfs,const usbd_driver,
-Variable,+,vibro_gpio,const GpioPin,
+Variable,+,gpio_vibro,const GpioPin,

+ 5 - 5
firmware/targets/f7/furi_hal/furi_hal_ibutton.c

@@ -93,15 +93,15 @@ void furi_hal_ibutton_emulate_stop() {
 }
 
 void furi_hal_ibutton_pin_configure() {
-    furi_hal_gpio_write(&ibutton_gpio, true);
-    furi_hal_gpio_init(&ibutton_gpio, GpioModeOutputOpenDrain, GpioPullNo, GpioSpeedLow);
+    furi_hal_gpio_write(&gpio_ibutton, true);
+    furi_hal_gpio_init(&gpio_ibutton, GpioModeOutputOpenDrain, GpioPullNo, GpioSpeedLow);
 }
 
 void furi_hal_ibutton_pin_reset() {
-    furi_hal_gpio_write(&ibutton_gpio, true);
-    furi_hal_gpio_init(&ibutton_gpio, GpioModeAnalog, GpioPullNo, GpioSpeedLow);
+    furi_hal_gpio_write(&gpio_ibutton, true);
+    furi_hal_gpio_init(&gpio_ibutton, GpioModeAnalog, GpioPullNo, GpioSpeedLow);
 }
 
 void furi_hal_ibutton_pin_write(const bool state) {
-    furi_hal_gpio_write(&ibutton_gpio, state);
+    furi_hal_gpio_write(&gpio_ibutton, state);
 }

+ 2 - 2
firmware/targets/f7/furi_hal/furi_hal_infrared.c

@@ -17,7 +17,7 @@
 
 #if INFRARED_TX_DEBUG == 1
 #define gpio_infrared_tx gpio_infrared_tx_debug
-const GpioPin gpio_infrared_tx_debug = {.port = GPIOA, .pin = GPIO_PIN_7};
+const GpioPin gpio_infrared_tx_debug = {.port = GPIOA, .pin = GpioModeAnalog};
 #endif
 
 #define INFRARED_TIM_TX_DMA_BUFFER_SIZE 200
@@ -567,7 +567,7 @@ static void furi_hal_infrared_async_tx_free_resources(void) {
         (furi_hal_infrared_state == InfraredStateIdle) ||
         (furi_hal_infrared_state == InfraredStateAsyncTxStopped));
 
-    furi_hal_gpio_init(&gpio_infrared_tx, GpioModeOutputOpenDrain, GpioPullDown, GpioSpeedLow);
+    furi_hal_gpio_init(&gpio_infrared_tx, GpioModeAnalog, GpioPullDown, GpioSpeedLow);
     furi_hal_interrupt_set_isr(IR_DMA_CH1_IRQ, NULL, NULL);
     furi_hal_interrupt_set_isr(IR_DMA_CH2_IRQ, NULL, NULL);
     LL_TIM_DeInit(TIM1);

+ 2 - 2
firmware/targets/f7/furi_hal/furi_hal_power.c

@@ -440,11 +440,11 @@ float furi_hal_power_get_usb_voltage() {
 }
 
 void furi_hal_power_enable_external_3_3v() {
-    furi_hal_gpio_write(&periph_power, 1);
+    furi_hal_gpio_write(&gpio_periph_power, 1);
 }
 
 void furi_hal_power_disable_external_3_3v() {
-    furi_hal_gpio_write(&periph_power, 0);
+    furi_hal_gpio_write(&gpio_periph_power, 0);
 }
 
 void furi_hal_power_suppress_charge_enter() {

+ 12 - 9
firmware/targets/f7/furi_hal/furi_hal_resources.c

@@ -6,8 +6,8 @@
 
 #define TAG "FuriHalResources"
 
-const GpioPin vibro_gpio = {.port = VIBRO_GPIO_Port, .pin = VIBRO_Pin};
-const GpioPin ibutton_gpio = {.port = iBTN_GPIO_Port, .pin = iBTN_Pin};
+const GpioPin gpio_vibro = {.port = VIBRO_GPIO_Port, .pin = VIBRO_Pin};
+const GpioPin gpio_ibutton = {.port = iBTN_GPIO_Port, .pin = iBTN_Pin};
 
 const GpioPin gpio_cc1101_g0 = {.port = CC1101_G0_GPIO_Port, .pin = CC1101_G0_Pin};
 const GpioPin gpio_rf_sw_0 = {.port = RF_SW_0_GPIO_Port, .pin = RF_SW_0_Pin};
@@ -59,7 +59,7 @@ const GpioPin gpio_i2c_power_scl = {.port = GPIOA, .pin = LL_GPIO_PIN_9};
 
 const GpioPin gpio_speaker = {.port = GPIOB, .pin = LL_GPIO_PIN_8};
 
-const GpioPin periph_power = {.port = GPIOA, .pin = LL_GPIO_PIN_3};
+const GpioPin gpio_periph_power = {.port = GPIOA, .pin = LL_GPIO_PIN_3};
 
 const GpioPin gpio_usb_dm = {.port = GPIOA, .pin = LL_GPIO_PIN_11};
 const GpioPin gpio_usb_dp = {.port = GPIOA, .pin = LL_GPIO_PIN_12};
@@ -106,8 +106,8 @@ void furi_hal_resources_init_early() {
     furi_hal_resources_init_input_pins(GpioModeInput);
 
     // SD Card stepdown control
-    furi_hal_gpio_write(&periph_power, 1);
-    furi_hal_gpio_init(&periph_power, GpioModeOutputOpenDrain, GpioPullNo, GpioSpeedLow);
+    furi_hal_gpio_write(&gpio_periph_power, 1);
+    furi_hal_gpio_init(&gpio_periph_power, GpioModeOutputOpenDrain, GpioPullNo, GpioSpeedLow);
 
     // Display pins
     furi_hal_gpio_write(&gpio_display_rst_n, 1);
@@ -153,6 +153,11 @@ void furi_hal_resources_init() {
     // Button pins
     furi_hal_resources_init_input_pins(GpioModeInterruptRiseFall);
 
+    // Explicit pulls pins
+    furi_hal_gpio_init(&gpio_infrared_tx, GpioModeAnalog, GpioPullDown, GpioSpeedLow);
+    furi_hal_gpio_init(&gpio_speaker, GpioModeAnalog, GpioPullDown, GpioSpeedLow);
+    furi_hal_gpio_init(&gpio_vibro, GpioModeAnalog, GpioPullDown, GpioSpeedLow);
+
     // Display pins
     furi_hal_gpio_init(&gpio_display_rst_n, GpioModeOutputPushPull, GpioPullNo, GpioSpeedLow);
     furi_hal_gpio_write(&gpio_display_rst_n, 0);
@@ -164,9 +169,7 @@ void furi_hal_resources_init() {
     furi_hal_gpio_init(&gpio_sdcard_cd, GpioModeInput, GpioPullNo, GpioSpeedLow);
     furi_hal_gpio_write(&gpio_sdcard_cd, 0);
 
-    furi_hal_gpio_init(&vibro_gpio, GpioModeAnalog, GpioPullNo, GpioSpeedLow);
-
-    furi_hal_gpio_init(&ibutton_gpio, GpioModeAnalog, GpioPullNo, GpioSpeedLow);
+    furi_hal_gpio_init(&gpio_ibutton, GpioModeAnalog, GpioPullNo, GpioSpeedLow);
 
     furi_hal_gpio_init(&gpio_nfc_irq_rfid_pull, GpioModeInterruptRise, GpioPullNo, GpioSpeedLow);
 
@@ -213,7 +216,7 @@ int32_t furi_hal_resources_get_ext_pin_number(const GpioPin* gpio) {
         return 15;
     else if(gpio == &gpio_ext_pc0)
         return 16;
-    else if(gpio == &ibutton_gpio)
+    else if(gpio == &gpio_ibutton)
         return 17;
     else
         return -1;

+ 3 - 3
firmware/targets/f7/furi_hal/furi_hal_resources.h

@@ -50,8 +50,8 @@ extern const size_t input_pins_count;
 extern const GpioPinRecord gpio_pins[];
 extern const size_t gpio_pins_count;
 
-extern const GpioPin vibro_gpio;
-extern const GpioPin ibutton_gpio;
+extern const GpioPin gpio_vibro;
+extern const GpioPin gpio_ibutton;
 
 extern const GpioPin gpio_cc1101_g0;
 extern const GpioPin gpio_rf_sw_0;
@@ -102,7 +102,7 @@ extern const GpioPin gpio_i2c_power_scl;
 
 extern const GpioPin gpio_speaker;
 
-extern const GpioPin periph_power;
+extern const GpioPin gpio_periph_power;
 
 extern const GpioPin gpio_usb_dm;
 extern const GpioPin gpio_usb_dp;

+ 1 - 1
firmware/targets/f7/furi_hal/furi_hal_speaker.c

@@ -52,7 +52,7 @@ void furi_hal_speaker_release() {
     furi_check(furi_hal_speaker_is_mine());
 
     furi_hal_speaker_stop();
-    furi_hal_gpio_init(&gpio_speaker, GpioModeAnalog, GpioPullNo, GpioSpeedLow);
+    furi_hal_gpio_init(&gpio_speaker, GpioModeAnalog, GpioPullDown, GpioSpeedLow);
     furi_hal_power_insomnia_exit();
 
     furi_check(furi_mutex_release(furi_hal_speaker_mutex) == FuriStatusOk);

+ 3 - 3
firmware/targets/f7/furi_hal/furi_hal_vibro.c

@@ -4,11 +4,11 @@
 #define TAG "FuriHalVibro"
 
 void furi_hal_vibro_init() {
-    furi_hal_gpio_init(&vibro_gpio, GpioModeOutputPushPull, GpioPullNo, GpioSpeedLow);
-    furi_hal_gpio_write(&vibro_gpio, false);
+    furi_hal_gpio_init(&gpio_vibro, GpioModeOutputPushPull, GpioPullNo, GpioSpeedLow);
+    furi_hal_gpio_write(&gpio_vibro, false);
     FURI_LOG_I(TAG, "Init OK");
 }
 
 void furi_hal_vibro_on(bool value) {
-    furi_hal_gpio_write(&vibro_gpio, value);
+    furi_hal_gpio_write(&gpio_vibro, value);
 }

+ 2 - 2
lib/ibutton/protocols/dallas/protocol_group_dallas.c

@@ -14,8 +14,8 @@ typedef struct {
 static iButtonProtocolGroupDallas* ibutton_protocol_group_dallas_alloc() {
     iButtonProtocolGroupDallas* group = malloc(sizeof(iButtonProtocolGroupDallas));
 
-    group->host = onewire_host_alloc(&ibutton_gpio);
-    group->bus = onewire_slave_alloc(&ibutton_gpio);
+    group->host = onewire_host_alloc(&gpio_ibutton);
+    group->bus = onewire_slave_alloc(&gpio_ibutton);
 
     return group;
 }

+ 1 - 1
scripts/get_env.py

@@ -32,7 +32,7 @@ def parse_args():
 def get_commit_json(event):
     context = ssl._create_unverified_context()
     commit_url = event["pull_request"]["base"]["repo"]["commits_url"].replace(
-        "{/sha}", f"/{event['after']}"
+        "{/sha}", f"/{event['pull_request']['head']['sha']}"
     )
     with urllib.request.urlopen(commit_url, context=context) as commit_file:
         commit_json = json.loads(commit_file.read().decode("utf-8"))