UARTCC26X0.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2017-2018, Texas Instruments Incorporated
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * * Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  *
12  * * Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in the
14  * documentation and/or other materials provided with the distribution.
15  *
16  * * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
340 #ifndef ti_drivers_uart_UARTCC26X0__include
341 #define ti_drivers_uart_UARTCC26X0__include
342 
343 #ifdef __cplusplus
344 extern "C" {
345 #endif
346 
347 #include <stdint.h>
348 #include <stdbool.h>
349 
350 #include <ti/drivers/dpl/ClockP.h>
351 #include <ti/drivers/dpl/HwiP.h>
352 #include <ti/drivers/dpl/SemaphoreP.h>
353 #include <ti/drivers/dpl/SwiP.h>
354 #include <ti/drivers/Power.h>
355 #include <ti/drivers/UART.h>
358 
359 
360 
364 #define UARTCC26X0_FLOWCTRL_NONE 0
365 
369 #define UARTCC26X0_FLOWCTRL_HARDWARE 1
370 
381 /* Add UARTCC26X0_STATUS_* macros here */
382 
402 #define UARTCC26X0_CMD_RETURN_PARTIAL_ENABLE (UART_CMD_RESERVED + 0)
403 
411 #define UARTCC26X0_CMD_RETURN_PARTIAL_DISABLE (UART_CMD_RESERVED + 1)
412 
419 #define UARTCC26X0_CMD_RX_FIFO_FLUSH (UART_CMD_RESERVED + 2)
420 
421 
425 #define UARTCC26X0_FIFO_SIZE 32
426 
446 
457 typedef void (*UARTCC26X0_ErrorCallback) (UART_Handle handle, uint32_t error);
458 
459 /* UART function table pointer */
461 
516 typedef struct UARTCC26X0_HWAttrs {
518  uint32_t baseAddr;
520  int intNum;
522  uint8_t intPriority;
528  uint32_t swiPriority;
530  uint32_t flowControl;
532  unsigned char *ringBufPtr;
534  size_t ringBufSize;
536  uint8_t rxPin;
538  uint8_t txPin;
540  uint8_t ctsPin;
542  uint8_t rtsPin;
544  UARTCC26X0_FifoThreshold txIntFifoThr;
546  UARTCC26X0_FifoThreshold rxIntFifoThr;
550 
556 typedef struct UARTCC26X0_Object {
557  /* UART state variable */
558  struct {
559  bool opened:1; /* Has the obj been opened */
560  UART_Mode readMode:1; /* Mode for all read calls */
561  UART_Mode writeMode:1; /* Mode for all write calls */
562  UART_DataMode readDataMode:1; /* Type of data being read */
563  UART_DataMode writeDataMode:1; /* Type of data being written */
564  UART_ReturnMode readReturnMode:1; /* Receive return mode */
565  UART_Echo readEcho:1; /* Echo received data back */
566  /*
567  * Flag to determine if a timeout has occurred when the user called
568  * UART_read(). This flag is set by the timeoutClk clock object.
569  */
570  bool bufTimeout:1;
571  /*
572  * Flag to determine when an ISR needs to perform a callback; in both
573  * UART_MODE_BLOCKING or UART_MODE_CALLBACK
574  */
575  bool callCallback:1;
576  /*
577  * Flag to determine if the ISR is in control draining the ring buffer
578  * when in UART_MODE_CALLBACK
579  */
580  bool drainByISR:1;
581  /* Keep track of RX enabled state set by app with UART_control() */
582  bool ctrlRxEnabled:1;
583  /* Flag to keep the state of the read Power constraints */
584  bool rxEnabled:1;
585  /* Flag to keep the state of the write Power constraints */
586  bool txEnabled:1;
587  } state;
588 
589  HwiP_Struct hwi; /* Hwi object for interrupts */
590  SwiP_Struct swi; /* Swi for read/write callbacks */
591  ClockP_Struct timeoutClk; /* Clock object to for timeouts */
592  ClockP_Struct txFifoEmptyClk; /* UART TX FIFO empty clock */
593  uint32_t baudRate; /* Baud rate for UART */
594  UART_LEN dataLength; /* Data length for UART */
595  UART_STOP stopBits; /* Stop bits for UART */
596  UART_PAR parityType; /* Parity bit type for UART */
597  uint32_t status; /* RX status */
598 
599  /* UART read variables */
600  RingBuf_Object ringBuffer; /* local circular buffer object */
601  unsigned char *readBuf; /* Buffer data pointer */
602  size_t readSize; /* Desired number of bytes to read */
603  size_t readCount; /* Number of bytes left to read */
604  SemaphoreP_Struct readSem; /* UART read semaphore */
605  unsigned int readTimeout; /* Timeout for read semaphore */
606  UART_Callback readCallback; /* Pointer to read callback */
607  bool readRetPartial; /* Return partial RX data if timeout occurs */
608 
609  /* UART write variables */
610  const unsigned char *writeBuf; /* Buffer data pointer */
611  size_t writeSize; /* Desired number of bytes to write*/
612  size_t writeCount; /* Number of bytes left to write */
613  SemaphoreP_Struct writeSem; /* UART write semaphore*/
614  unsigned int writeTimeout; /* Timeout for write semaphore */
615  UART_Callback writeCallback; /* Pointer to write callback */
616  unsigned int writeEmptyClkTimeout; /* TX FIFO timeout tick count */
617 
618  /* PIN driver state object and handle */
621 
622  /* For Power management */
625 
626 #ifdef __cplusplus
627 }
628 #endif
629 
630 #endif /* ti_drivers_uart_UARTCC26X0__include */
enum UART_Echo_ UART_Echo
UART echo settings.
UARTCC26X0_FifoThreshold
UART TX/RX interrupt FIFO threshold select.
Definition: UARTCC26X0.h:438
UARTCC26X0 Object.
Definition: UARTCC26X0.h:556
size_t readSize
Definition: UARTCC26X0.h:602
size_t readCount
Definition: UARTCC26X0.h:603
unsigned int readTimeout
Definition: UARTCC26X0.h:605
enum UART_PAR_ UART_PAR
UART parity type settings.
bool readRetPartial
Definition: UARTCC26X0.h:607
Power Manager.
enum UART_LEN_ UART_LEN
UART data length settings.
UARTCC26X0_FifoThreshold txIntFifoThr
Definition: UARTCC26X0.h:544
uint8_t rtsPin
Definition: UARTCC26X0.h:542
enum UART_Mode_ UART_Mode
UART mode settings.
Definition: UARTCC26X0.h:441
uint8_t intPriority
Definition: UARTCC26X0.h:522
HwiP_Struct hwi
Definition: UARTCC26X0.h:589
unsigned char * ringBufPtr
Definition: UARTCC26X0.h:532
uint8_t rxPin
Definition: UARTCC26X0.h:536
uint32_t status
Definition: UARTCC26X0.h:597
Definition: UARTCC26X0.h:443
UART Global configuration.
Definition: UART.h:678
struct UARTCC26X0_HWAttrs UARTCC26X0_HWAttrs
UARTCC26X0 Hardware attributes.
size_t writeCount
Definition: UARTCC26X0.h:612
unsigned char * readBuf
Definition: UARTCC26X0.h:601
int intNum
Definition: UARTCC26X0.h:520
SemaphoreP_Struct readSem
Definition: UARTCC26X0.h:604
struct UARTCC26X0_Object * UARTCC26X0_Handle
Device-specific pin & GPIO driver for CC26xx family [def].
Power_NotifyObj postNotify
Definition: UARTCC26X0.h:623
uint8_t txPin
Definition: UARTCC26X0.h:538
size_t ringBufSize
Definition: UARTCC26X0.h:534
uint32_t baudRate
Definition: UARTCC26X0.h:593
SwiP_Struct swi
Definition: UARTCC26X0.h:590
Definition: UARTCC26X0.h:442
uint32_t baseAddr
Definition: UARTCC26X0.h:518
PIN_State pinState
Definition: UARTCC26X0.h:619
The definition of a UART function table that contains the required set of functions to control a spec...
Definition: UART.h:635
size_t writeSize
Definition: UARTCC26X0.h:611
Power notify object structure.
Definition: Power.h:443
struct UARTCC26X0_Object UARTCC26X0_Object
UARTCC26X0 Object.
ClockP_Struct timeoutClk
Definition: UARTCC26X0.h:591
Universal Asynchronous Receiver-Transmitter (UART) Driver.
const unsigned char * writeBuf
Definition: UARTCC26X0.h:610
UART_Callback writeCallback
Definition: UARTCC26X0.h:615
uint8_t ctsPin
Definition: UARTCC26X0.h:540
SemaphoreP_Struct writeSem
Definition: UARTCC26X0.h:613
underlying data structure for type PIN_State
Definition: PIN.h:707
ClockP_Struct txFifoEmptyClk
Definition: UARTCC26X0.h:592
enum UART_STOP_ UART_STOP
UART stop bit settings.
Definition: UARTCC26X0.h:440
enum UART_ReturnMode_ UART_ReturnMode
UART return mode settings.
UARTCC26X0 Hardware attributes.
Definition: UARTCC26X0.h:516
unsigned int writeTimeout
Definition: UARTCC26X0.h:614
RingBuf_Object ringBuffer
Definition: UARTCC26X0.h:600
Definition: RingBuf.h:44
UARTCC26X0_FifoThreshold rxIntFifoThr
Definition: UARTCC26X0.h:546
uint32_t swiPriority
Swi priority. The higher the number, the higher the priority. The minimum priority is 0 and the maxim...
Definition: UARTCC26X0.h:528
UARTCC26X0_ErrorCallback errorFxn
Definition: UARTCC26X0.h:548
void(* UARTCC26X0_ErrorCallback)(UART_Handle handle, uint32_t error)
The definition of an optional callback function used by the UART driver to notify the application whe...
Definition: UARTCC26X0.h:457
unsigned int writeEmptyClkTimeout
Definition: UARTCC26X0.h:616
UART_Callback readCallback
Definition: UARTCC26X0.h:606
const UART_FxnTable UARTCC26X0_fxnTable
uint32_t flowControl
Definition: UARTCC26X0.h:530
PIN_Handle hPin
Definition: UARTCC26X0.h:620
Definition: UARTCC26X0.h:439
UART_PAR parityType
Definition: UARTCC26X0.h:596
UART_LEN dataLength
Definition: UARTCC26X0.h:594
void(* UART_Callback)(UART_Handle handle, void *buf, size_t count)
The definition of a callback function used by the UART driver when used in UART_MODE_CALLBACK The cal...
Definition: UART.h:421
Definition: UARTCC26X0.h:444
enum UART_DataMode_ UART_DataMode
UART data mode settings.
UART_STOP stopBits
Definition: UARTCC26X0.h:595
© Copyright 1995-2019, Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy policy | Terms of use | Terms of sale