4d2d3f5ba454285a7b151386f874343e018e8f34
[i3-mote/i3-mote.git] / Basic-Test-Package / CC2650 / Test_CC2650_DebugUART_EchoPC / main.c
1 /*
2  *  ======== empty_min.c ========
3  */
4 /* XDCtools Header files */
5 #include <xdc/std.h>
6 #include <xdc/runtime/System.h>
8 /* BIOS Header files */
9 #include <ti/sysbios/BIOS.h>
10 #include <ti/sysbios/knl/Task.h>
11 #include <ti/sysbios/knl/Clock.h>
13 /* TI-RTOS Header files */
14 #include <ti/drivers/I2C.h>
15 #include <ti/drivers/PIN.h>
16 // #include <ti/drivers/SPI.h>
17 #include <ti/drivers/UART.h>
18 // #include <ti/drivers/Watchdog.h>
20 /* Board Header files */
21 #include "Board.h"
23 #define TASKSTACKSIZE   512
25 Task_Struct task0Struct;
26 Char task0Stack[TASKSTACKSIZE];
28 Task_Struct task1Struct;
29 Char task1Stack[TASKSTACKSIZE];
32 /* Pin driver handle */
33 static PIN_Handle ledPinHandle;
34 static PIN_State ledPinState;
36 /*
37  * Application LED pin configuration table:
38  *   - All LEDs board LEDs are off.
39  */
40 PIN_Config ledPinTable[] = {
41     Board_LED0 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
42     Board_LED1 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
43     PIN_TERMINATE
44 };
46 Void taskFxn(UArg arg0, UArg arg1)
47 {
48         char input;
49         UART_Handle uart;
50         UART_Params uartParams;
52         /* Create a UART with data processing off. */
53         UART_Params_init(&uartParams);
54         uartParams.writeDataMode = UART_DATA_BINARY;
55         uartParams.readDataMode = UART_DATA_BINARY;
56         uartParams.readReturnMode = UART_RETURN_FULL;
57         uartParams.readEcho = UART_ECHO_OFF;
58         //uartParams.baudRate = 9600;
59         uartParams.baudRate = 115200;
60         uart = UART_open(Board_UART0, &uartParams);
62         if (uart == NULL) {
63                 System_abort("Error opening the UART");
64         }
66         /* Loop forever echoing */
67         while (1) {
68                 /* Blocking Read */
69                 UART_read(uart, &input, 1);
70             UART_write(uart, &input, 1);
71         }
73 }
75 /*
76  *  ======== heartBeatFxn ========
77  *  Toggle the Board_LED0. The Task_sleep is determined by arg0 which
78  *  is configured for the heartBeat Task instance.
79  */
80 Void heartBeatFxn(UArg arg0, UArg arg1)
81 {
82     while (1) {
83         Task_sleep((UInt)arg0);
84         PIN_setOutputValue(ledPinHandle, Board_LED0,!PIN_getOutputValue(Board_LED0));
85         //PIN_setOutputValue(ledPinHandle, Board_LED1,!PIN_getOutputValue(Board_LED1));
86     }
87 }
89 /*
90  *  ======== main ========
91  */
92 int main(void)
93 {
94     Task_Params taskParams;
96     /* Call board init functions */
97     Board_initGeneral();
98     Board_initUART();
99     // Board_initI2C();
100     // Board_initSPI();
101     // Board_initWatchdog();
103     /* Construct heartBeat Task  thread */
104     Task_Params_init(&taskParams);
105     taskParams.arg0 = 2000000 / Clock_tickPeriod;
106     taskParams.stackSize = TASKSTACKSIZE;
107     taskParams.stack = &task0Stack;
108     Task_construct(&task0Struct, (Task_FuncPtr)heartBeatFxn, &taskParams, NULL);
110     /* UART */
111     Task_Params_init(&taskParams);
112     taskParams.stackSize = TASKSTACKSIZE;
113     taskParams.stack = &task1Stack;
114     Task_construct(&task1Struct, (Task_FuncPtr)taskFxn, &taskParams, NULL);
116     /* Open LED pins */
117     ledPinHandle = PIN_open(&ledPinState, ledPinTable);
118     if(!ledPinHandle) {
119         System_abort("Error initializing board LED pins\n");
120     }
122     PIN_setOutputValue(ledPinHandle, Board_LED0, 0);
123     PIN_setOutputValue(ledPinHandle, Board_LED1, 0);
125     /* Start BIOS */
126     BIOS_start();
128     return (0);