@@ -31,7 +31,7 @@ namespace cypress_ble {
3131
3232using namespace std ::chrono_literals;
3333
34- CyH4TransportDriver::CyH4TransportDriver (PinName tx, PinName rx, PinName cts, PinName rts, int baud, PinName bt_host_wake_name, PinName bt_device_wake_name, uint8_t host_wake_irq, uint8_t dev_wake_irq) :
34+ CyH4TransportDriver::CyH4TransportDriver (PinName tx, PinName rx, PinName cts, PinName rts, PinName bt_power_name, int baud, PinName bt_host_wake_name, PinName bt_device_wake_name, uint8_t host_wake_irq, uint8_t dev_wake_irq) :
3535 cts (cts), rts(rts),
3636 tx (tx), rx(rx),
3737 bt_host_wake_name (bt_host_wake_name),
@@ -40,21 +40,21 @@ CyH4TransportDriver::CyH4TransportDriver(PinName tx, PinName rx, PinName cts, Pi
4040 bt_device_wake (bt_device_wake_name, PIN_OUTPUT, PullNone, 1 ),
4141 host_wake_irq_event (host_wake_irq),
4242 dev_wake_irq_event (dev_wake_irq),
43- bt_power (CYBSP_BT_POWER , PIN_OUTPUT, PullNone, 0 )
43+ bt_power (bt_power_name , PIN_OUTPUT, PullNone, 0 )
4444{
4545 enabled_powersave = true ;
4646 bt_host_wake_active = false ;
4747}
4848
49- CyH4TransportDriver::CyH4TransportDriver (PinName tx, PinName rx, PinName cts, PinName rts, int baud) :
49+ CyH4TransportDriver::CyH4TransportDriver (PinName tx, PinName rx, PinName cts, PinName rts, PinName bt_power_name, int baud) :
5050 cts (cts),
5151 rts (rts),
5252 tx (tx), rx(rx),
5353 bt_host_wake_name (NC),
5454 bt_device_wake_name (NC),
5555 bt_host_wake (bt_host_wake_name),
5656 bt_device_wake (bt_device_wake_name),
57- bt_power (CYBSP_BT_POWER , PIN_OUTPUT, PullNone, 0 )
57+ bt_power (bt_power_name , PIN_OUTPUT, PullNone, 0 )
5858{
5959 enabled_powersave = false ;
6060 bt_host_wake_active = false ;
@@ -169,11 +169,6 @@ void CyH4TransportDriver::terminate()
169169 false
170170 );
171171
172- // DigitalInOut does not appear to have Destructor nor does it have a
173- // free() func (though the protected gpio_t does) so must call directly
174- // into cyhal
175- if (CYBSP_BT_DEVICE_WAKE != NC) cyhal_gpio_free (CYBSP_BT_DEVICE_WAKE);
176-
177172 if (bt_host_wake.is_connected ())
178173 {
179174#if (defined(MBED_TICKLESS) && DEVICE_SLEEP && DEVICE_LPTICKER)
@@ -182,6 +177,8 @@ void CyH4TransportDriver::terminate()
182177 bt_host_wake = false ;
183178 }
184179
180+ deassert_bt_dev_wake ();
181+
185182 bt_power = 0 ; // BT_POWER is an output, should not be freed only set inactive
186183
187184 cyhal_uart_free (&uart);
@@ -265,14 +262,14 @@ ble::vendor::cypress_ble::CyH4TransportDriver& ble_cordio_get_default_h4_transpo
265262#if (defined(CYBSP_BT_HOST_WAKE) && defined(CYBSP_BT_DEVICE_WAKE))
266263 static ble::vendor::cypress_ble::CyH4TransportDriver s_transport_driver (
267264 /* TX */ CYBSP_BT_UART_TX, /* RX */ CYBSP_BT_UART_RX,
268- /* cts */ CYBSP_BT_UART_CTS, /* rts */ CYBSP_BT_UART_RTS, DEF_BT_BAUD_RATE,
265+ /* cts */ CYBSP_BT_UART_CTS, /* rts */ CYBSP_BT_UART_RTS, CYBSP_BT_POWER, DEF_BT_BAUD_RATE,
269266 CYBSP_BT_HOST_WAKE, CYBSP_BT_DEVICE_WAKE
270267 );
271268
272269#else
273270 static ble::vendor::cypress_ble::CyH4TransportDriver s_transport_driver (
274271 /* TX */ CYBSP_BT_UART_TX, /* RX */ CYBSP_BT_UART_RX,
275- /* cts */ CYBSP_BT_UART_CTS, /* rts */ CYBSP_BT_UART_RTS, DEF_BT_BAUD_RATE);
272+ /* cts */ CYBSP_BT_UART_CTS, /* rts */ CYBSP_BT_UART_RTS, CYBSP_BT_POWER, DEF_BT_BAUD_RATE);
276273#endif
277274 return s_transport_driver;
278275}
0 commit comments