Microchip® Advanced Software Framework

serial_drv.c File Reference

Handles Serial driver functionalities.

Copyright (c) 2017-2018 Microchip Technology Inc. and its subsidiaries.

#include <asf.h>
#include <string.h>
#include "ble_utils.h"
#include "serial_drv.h"
#include "conf_serialdrv.h"
#include "serial_fifo.h"
#include "platform.h"

Macros

#define ioport_set_pin_peripheral_mode(pin, mode)
 Set peripheral mode for one single IOPORT pin. More...
 

Functions

static void ble_patch_serial_drv_send (uint8_t *data, uint16_t len)
 
void BLE_PATCH_UART_Handler (void)
 
void ble_pdc_send_data (uint8_t *buf, uint16_t len)
 
static void ble_pdc_serial_drv_send (uint8_t *data, uint16_t len)
 
static void ble_pdc_uart_handler (void)
 
void BLE_UART_Handler (void)
 
static uint8_t configure_patch_usart (void)
 
static uint8_t configure_primary_uart (uint32_t bus_baudrate)
 
uint8_t configure_serial_drv (uint32_t bus_baudrate)
 Initializes the Serial IO Module. More...
 
void configure_usart_after_patch (uint32_t bus_baudrate)
 
static void pdc_update_rx_transfer (void)
 
void platform_configure_sleep_manager (void)
 
void platform_enter_critical_section (void)
 
void platform_leave_critical_section (void)
 
void platform_pdc_process_rxdata (uint8_t *buf, uint16_t len)
 
void platform_restore_from_sleep (void)
 
uint32_t platform_serial_drv_tx_status (void)
 
void platform_set_ble_rts_high (void)
 
void platform_set_ble_rts_low (void)
 
void platform_set_hostsleep (void)
 
uint16_t serial_drive_rx_data_count (void)
 
uint16_t serial_drv_send (uint8_t *data, uint16_t len)
 Transmits data via UART. More...
 
static uint32_t usart_clear_tx_empty (Usart *p_usart)
 
static uint32_t usart_is_rx_buffer_overrun (Usart *p_usart)
 
static uint32_t usart_is_rx_timeout (Usart *p_usart)
 

Variables

static volatile uint8_t * ble_txbuf_ptr = NULL
 
static volatile uint16_t ble_txbyte_count = 0
 
Pdc * ble_usart_pdc
 
pdc_packet_t ble_usart_rx_pkt
 
volatile bool ble_usart_tx_cmpl = true
 
pdc_packet_t ble_usart_tx_pkt
 
enum sleepmgr_mode current_sleep_mode = SLEEPMGR_ACTIVE
 
volatile uint16_t dma_buf_index
 
uint16_t g_txdata
 
uint8_t pdc_rx_buffer [BLE_MAX_RX_PAYLOAD_SIZE]
 
volatile bool pdc_uart_enabled = false
 

#define ioport_set_pin_peripheral_mode (   pin,
  mode 
)
Value:
do {\
} while (0)
static void ioport_set_pin_mode(ioport_pin_t pin, ioport_mode_t mode)
Set pin mode for one single IOPORT pin.
Definition: ioport.h:217
static void ioport_disable_pin(ioport_pin_t pin)
Disable IOPORT pin, based on a pin created with IOPORT_CREATE_PIN().
Definition: ioport.h:179

Set peripheral mode for one single IOPORT pin.

It will configure port mode and disable pin mode (but enable peripheral).

Parameters
pinIOPORT pin to configure
modeMode masks to configure for the specified pin (IOPORT Modes)

Referenced by configure_patch_usart(), and configure_primary_uart().

static void ble_patch_serial_drv_send ( uint8_t *  data,
uint16_t  len 
)
inlinestatic
void ble_pdc_send_data ( uint8_t *  buf,
uint16_t  len 
)
static void ble_pdc_serial_drv_send ( uint8_t *  data,
uint16_t  len 
)
inlinestatic

References ble_pdc_send_data(), and ble_usart_tx_cmpl.

Referenced by serial_drv_send().

void BLE_UART_Handler ( void  )
uint8_t configure_serial_drv ( uint32_t  )

Initializes the Serial IO Module.

Returns
STATUS_OK for successful initialization and FAILURE incase the IO is not initialized

References configure_patch_usart(), configure_primary_uart(), and STATUS_OK.

Referenced by platform_configure_primary_uart(), and platform_init().

void configure_usart_after_patch ( uint32_t  bus_baudrate)
static void pdc_update_rx_transfer ( void  )
inlinestatic
void platform_configure_sleep_manager ( void  )
void platform_enter_critical_section ( void  )
void platform_leave_critical_section ( void  )
void platform_pdc_process_rxdata ( uint8_t *  buf,
uint16_t  len 
)
void platform_restore_from_sleep ( void  )
uint32_t platform_serial_drv_tx_status ( void  )

References ble_usart_tx_cmpl.

void platform_set_ble_rts_high ( void  )
void platform_set_ble_rts_low ( void  )
uint16_t serial_drive_rx_data_count ( void  )
uint16_t serial_drv_send ( uint8_t *  data,
uint16_t  len 
)

Transmits data via UART.

Parameters
dataPointer to the buffer where the data to be transmitted is present
lengthNumber of bytes to be transmitted
Returns
Number of bytes actually transmitted

References ble_patch_serial_drv_send(), ble_pdc_serial_drv_send(), pdc_uart_enabled, and STATUS_OK.

Referenced by platform_send_sync().

static uint32_t usart_clear_tx_empty ( Usart *  p_usart)
inlinestatic

Referenced by ble_pdc_uart_handler().

static uint32_t usart_is_rx_buffer_overrun ( Usart *  p_usart)
inlinestatic

Referenced by ble_pdc_uart_handler().

static uint32_t usart_is_rx_timeout ( Usart *  p_usart)
inlinestatic

Referenced by ble_pdc_uart_handler().

volatile uint8_t* ble_txbuf_ptr = NULL
static
volatile uint16_t ble_txbyte_count = 0
static
pdc_packet_t ble_usart_rx_pkt
pdc_packet_t ble_usart_tx_pkt
uint16_t g_txdata
uint8_t pdc_rx_buffer[BLE_MAX_RX_PAYLOAD_SIZE]
volatile bool pdc_uart_enabled = false