coreglitch 5 лет назад
Родитель
Сommit
3d5563b169
2 измененных файлов с 27 добавлено и 3 удалено
  1. 26 2
      applications/nfc/nfc.c
  2. 1 1
      firmware/targets/f2/Src/spi.c

+ 26 - 2
applications/nfc/nfc.c

@@ -68,6 +68,12 @@ void nfc_test_callback(void* context) {
     nfc->screen = 0;
     nfc->screen = 0;
     widget_enabled_set(nfc->widget, true);
     widget_enabled_set(nfc->widget, true);
 
 
+    // TODO only for workaround
+    if(nfc->ret != ERR_NONE) {
+        nfc->ret = rfalNfcInitialize();
+        rfalLowPowerModeStart();
+    }
+
     if(nfc->ret == ERR_NONE && !nfc->worker) {
     if(nfc->ret == ERR_NONE && !nfc->worker) {
         // TODO change to fuirac_start
         // TODO change to fuirac_start
         nfc->worker = osThreadNew(nfc_worker_task, nfc, &nfc->worker_attr);
         nfc->worker = osThreadNew(nfc_worker_task, nfc, &nfc->worker_attr);
@@ -77,11 +83,29 @@ void nfc_test_callback(void* context) {
 }
 }
 
 
 void nfc_field_on_callback(void* context) {
 void nfc_field_on_callback(void* context) {
+    furi_assert(context);
+    Nfc* nfc = context;
+
+    // TODO only for workaround
+    if(nfc->ret != ERR_NONE) {
+        nfc->ret = rfalNfcInitialize();
+        rfalLowPowerModeStart();
+    }
+
     st25r3916OscOn();
     st25r3916OscOn();
     st25r3916TxRxOn();
     st25r3916TxRxOn();
 }
 }
 
 
 void nfc_field_off_callback(void* context) {
 void nfc_field_off_callback(void* context) {
+    furi_assert(context);
+    Nfc* nfc = context;
+
+    // TODO only for workaround
+    if(nfc->ret != ERR_NONE) {
+        nfc->ret = rfalNfcInitialize();
+        rfalLowPowerModeStart();
+    }
+
     st25r3916TxRxOff();
     st25r3916TxRxOff();
 }
 }
 
 
@@ -158,8 +182,8 @@ void nfc_task(void* p) {
         furiac_exit(NULL);
         furiac_exit(NULL);
     }
     }
 
 
-    nfc->ret = rfalNfcInitialize();
-    rfalLowPowerModeStart();
+    // TODO only for workaround
+    nfc->ret = ERR_WRONG_STATE;
 
 
     furiac_ready();
     furiac_ready();
 
 

+ 1 - 1
firmware/targets/f2/Src/spi.c

@@ -120,7 +120,7 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle)
     */
     */
     GPIO_InitStruct.Pin = GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12;
     GPIO_InitStruct.Pin = GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12;
     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
-    GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+    GPIO_InitStruct.Pull = GPIO_NOPULL;
     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
     GPIO_InitStruct.Alternate = GPIO_AF6_SPI3;
     GPIO_InitStruct.Alternate = GPIO_AF6_SPI3;
     HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
     HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);