M module-bsp/board/rt1051/bsp/cellular/rt1051_cellular.cpp => module-bsp/board/rt1051/bsp/cellular/rt1051_cellular.cpp +13 -6
@@ 9,6 9,7 @@
#include "../pit/pit.hpp"
#include "dma_config.h"
#include "fsl_cache.h"
+#include "../../common/chip.hpp"
#include <common_data/EventStore.hpp>
#include <map>
@@ 99,6 100,8 @@ namespace bsp
s_cellularConfig.rxIdleConfig = kLPUART_IdleCharacter1;
s_cellularConfig.enableTx = false;
s_cellularConfig.enableRx = false;
+ s_cellularConfig.enableTxCTS = true;
+ s_cellularConfig.enableRxRTS = true;
if (LPUART_Init(CELLULAR_UART_BASE, &s_cellularConfig, GetPerphSourceClock(PerphClock_LPUART)) !=
kStatus_Success) {
@@ 109,12 112,14 @@ namespace bsp
LPUART_EnableInterrupts(CELLULAR_UART_BASE, kLPUART_IdleLineInterruptEnable | kLPUART_RxDataRegFullFlag);
LPUART_ClearStatusFlags(CELLULAR_UART_BASE, 0xFFFFFFFF);
NVIC_ClearPendingIRQ(LPUART1_IRQn);
+ NVIC_ClearPendingIRQ(GPIO1_Combined_0_15_IRQn);
+ NVIC_SetPriority(GPIO1_Combined_0_15_IRQn, configLIBRARY_LOWEST_INTERRUPT_PRIORITY);
NVIC_SetPriority(LPUART1_IRQn, configLIBRARY_LOWEST_INTERRUPT_PRIORITY);
+ NVIC_EnableIRQ(GPIO1_Combined_0_15_IRQn);
NVIC_EnableIRQ(LPUART1_IRQn);
EnableRx();
isInitialized = true;
-
}
void RT1051Cellular::SetSpeed(uint32_t portSpeed)
@@ 135,6 140,7 @@ namespace bsp
DisableTx();
NVIC_DisableIRQ(LPUART1_IRQn);
+ NVIC_DisableIRQ(GPIO1_Combined_0_15_IRQn);
LPUART_DisableInterrupts(CELLULAR_UART_BASE, kLPUART_IdleLineInterruptEnable | kLPUART_RxDataRegFullFlag);
LPUART_ClearStatusFlags(CELLULAR_UART_BASE, 0xFFFFFFFF);
NVIC_ClearPendingIRQ(LPUART1_IRQn);
@@ 330,7 336,7 @@ namespace bsp
gpio_1->ConfPin(DriverGPIOPinParams{.dir = DriverGPIOPinParams::Direction::Input,
.irqMode = DriverGPIOPinParams::InterruptMode::IntRisingOrFallingEdge,
- .defLogic = 1,
+ .defLogic = 0,
.pin = static_cast<uint32_t>(BoardDefinitions::CELLULAR_GPIO_1_CTS_PIN)});
gpio_1->ConfPin(
@@ 353,8 359,8 @@ namespace bsp
// OUTPUTS
gpio_1->ConfPin(DriverGPIOPinParams{.dir = DriverGPIOPinParams::Direction::Output,
- .irqMode = DriverGPIOPinParams::InterruptMode::NoIntmode,
- .defLogic = 0,
+ .irqMode = DriverGPIOPinParams::InterruptMode::IntRisingOrFallingEdge,
+ .defLogic = 1,
.pin = static_cast<uint32_t>(BoardDefinitions::CELLULAR_GPIO_1_RTS_PIN)});
gpio_1->ConfPin(DriverGPIOPinParams{.dir = DriverGPIOPinParams::Direction::Output,
@@ 414,7 420,8 @@ namespace bsp
;
// ENABLE INTERRUPTS
- gpio_1->EnableInterrupt(1 << static_cast<uint32_t>(BoardDefinitions::CELLULAR_GPIO_1_STATUS_PIN));
+ gpio_1->EnableInterrupt(1 << static_cast<uint32_t>(BoardDefinitions::CELLULAR_GPIO_1_CTS_PIN) |
+ 1 << static_cast<uint32_t>(BoardDefinitions::CELLULAR_GPIO_1_STATUS_PIN));
gpio_2->EnableInterrupt(1 << static_cast<uint32_t>(BoardDefinitions::CELLULAR_GPIO_2_SIM_TRAY_INSERTED_PIN) |
1 << static_cast<uint32_t>(BoardDefinitions::CELLULAR_GPIO_2_RI_PIN));
}
@@ 621,5 628,5 @@ namespace bsp
}
} // namespace ringIndicator
- } // namespace cellular
+ } // namespace cellular
} // namespace bsp
M module-bsp/board/rt1051/common/irq/irq_gpio.cpp => module-bsp/board/rt1051/common/irq/irq_gpio.cpp +5 -1
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "irq_gpio.hpp"
@@ 73,6 73,10 @@ namespace bsp
xHigherPriorityTaskWoken |= cellular::status::statusIRQhandler();
}
+ if (irq_mask & (1 << BSP_CELLULAR_UART_CTS_PIN)) {
+ LOG_DEBUG("CELLULAR CTS IRQ!");
+ }
+
// Clear all IRQs
GPIO_PortClearInterruptFlags(GPIO1, irq_mask);
M module-bsp/board/rt1051/common/pin_mux.c => module-bsp/board/rt1051/common/pin_mux.c +2 -3
@@ 1216,9 1216,8 @@ void PINMUX_InitCellular(void)
IOMUXC_SetPinConfig(PINMUX_CELLULAR_UART_CTS,
- PAD_CONFIG_SLEW_RATE_SLOW | PAD_CONFIG_DRIVER_STRENGTH_LVL_1 | PAD_CONFIG_SPEED_SLOW_50MHz |
- PAD_CONFIG_PULL_KEEPER_ENABLED | PAD_CONFIG_SELECT_PULL | PAD_CONFIG_PULL_DOWN_100kOhm |
- PAD_CONFIG_HYSTERESIS_DISABLED);
+ PAD_CONFIG_SLEW_RATE_SLOW | PAD_CONFIG_DRIVER_DISABLED | PAD_CONFIG_SPEED_SLOW_50MHz |
+ PAD_CONFIG_PULL_KEEPER_ENABLED | PAD_CONFIG_SELECT_PULL | PAD_CONFIG_PULL_DOWN_100kOhm);
IOMUXC_SetPinConfig(PINMUX_CELLULAR_UART_RTS,
M module-bsp/board/rt1051/common/pin_mux.h => module-bsp/board/rt1051/common/pin_mux.h +2 -2
@@ 130,8 130,8 @@ extern "C"
*/
#define PINMUX_CELLULAR_UART_TX IOMUXC_GPIO_AD_B0_12_LPUART1_TX
#define PINMUX_CELLULAR_UART_RX IOMUXC_GPIO_AD_B0_13_LPUART1_RX
-#define PINMUX_CELLULAR_UART_CTS IOMUXC_GPIO_AD_B0_14_GPIO1_IO14
-#define PINMUX_CELLULAR_UART_RTS IOMUXC_GPIO_AD_B0_15_GPIO1_IO15
+#define PINMUX_CELLULAR_UART_CTS IOMUXC_GPIO_AD_B0_14_LPUART1_CTS_B
+#define PINMUX_CELLULAR_UART_RTS IOMUXC_GPIO_AD_B0_15_LPUART1_RTS_B
#define PINMUX_CELLULAR_AP_READY IOMUXC_GPIO_B1_00_GPIO2_IO16
#define PINMUX_CELLULAR_RESET IOMUXC_GPIO_B1_01_GPIO2_IO17
#define PINMUX_CELLULAR_PWRKEY IOMUXC_GPIO_B1_02_GPIO2_IO18
M module-cellular/Modem/TS0710/TS0710.h => module-cellular/Modem/TS0710/TS0710.h +1 -1
@@ 275,7 275,7 @@ class TS0710
ATParser *parser;
int CloseMultiplexer();
- const static bool hardwareControlFlowEnable = false;
+ static constexpr auto hardwareControlFlowEnable = true;
bool searchForString(const std::vector<std::string> &response, std::string str)
{