Update CC2650 Tests
[i3-mote/i3-mote.git] / Basic-Test-Package / CC2650 / Test_CC2650_3wSPI_Slave_MSP432_Master / 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"
22 #include "uart_printf.h"
24 #define TASKSTACKSIZE   512
26 Task_Struct task0Struct;
27 Char task0Stack[TASKSTACKSIZE];
29 Task_Struct task1Struct;
30 Char task1Stack[TASKSTACKSIZE];
33 /* Pin driver handle */
34 static PIN_Handle ledPinHandle;
35 static PIN_State ledPinState;
37 /*
38  * Application LED pin configuration table:
39  *   - All LEDs board LEDs are off.
40  */
42 PIN_Config ledPinTable[] = {
43     Board_LED0 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
44     Board_LED1 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
45     PIN_TERMINATE
46 };
48 Void echoFxn(UArg arg0, UArg arg1)
49 {
50         uint8_t         rxBufferPointer[4];
51         uint8_t         txBufferPointer[4];
52     SPI_Handle      spi;
53     SPI_Params      spiParams;
54     SPI_Transaction spiTransaction;
56     SPI_Params_init(&spiParams);
57     // Slave mode
58     spiParams.mode = SPI_SLAVE;
59     spiParams.bitRate = 500000;
60     spiParams.frameFormat = SPI_POL1_PHA1;
61     // params.transferMode = SPI_MODE_CALLBACK;
62     //spiParams.transferCallbackFxn = spi_tx_call;
64     spi=SPI_open(Board_SPI1,&spiParams);
65     if(!spi){
66       System_printf("SPI did not open");
67     }
68     System_printf("SPI Slave Mode Open\r\n");
70     rxBufferPointer[0]='*';
72     while(1) {
74         spiTransaction.rxBuf= rxBufferPointer;
75         spiTransaction.txBuf = txBufferPointer;
76         spiTransaction.count=1;
78                 PIN_setOutputValue(ledPinHandle, Board_LEDR,0);
80                 if (SPI_transfer(spi,&spiTransaction)) {
82                         PIN_setOutputValue(ledPinHandle, Board_LEDR,1);
84                         System_printf("RxData: %x\r\n",rxBufferPointer[0]);
86                         txBufferPointer[0]=rxBufferPointer[0];
87                         rxBufferPointer[0]=0x55;
89                 }
92     }
94     /* Deinitialized I2C */
95     SPI_close(spi);
96 }
99 /*
100  *  ======== heartBeatFxn ========
101  *  Toggle the Board_LED0. The Task_sleep is determined by arg0 which
102  *  is configured for the heartBeat Task instance.
103  */
104 Void heartBeatFxn(UArg arg0, UArg arg1)
106     while (1) {
108         Task_sleep((UInt)arg0-5000/Clock_tickPeriod);
109         PIN_setOutputValue(ledPinHandle, Board_LEDG,1);
110         Task_sleep((UInt)5000/Clock_tickPeriod);
111         PIN_setOutputValue(ledPinHandle, Board_LEDG,0);
113         //PIN_setOutputValue(ledPinHandle, Board_LEDG,!PIN_getOutputValue(Board_LEDG));
114         //PIN_setOutputValue(ledPinHandle, Board_LEDR,!PIN_getOutputValue(Board_LEDR));
115     }
118 /*
119  *  ======== main ========
120  */
121 int main(void)
123     Task_Params taskParams;
125     /* Call board init functions */
126     Board_initGeneral();
127     Board_initSPI();
128     // Board_initI2C();
129     // Board_initUART();
130     // Board_initWatchdog();
132     /* Init UART for System_printf()*/
133     UART_Params uartParams;
134     UART_Params_init(&uartParams);
135     uartParams.baudRate = 115200;
136     UartPrintf_init(UART_open(Board_UART, &uartParams));
137     System_printf("Uart open\r\n");
139     /* Construct heartBeat Task thread */
140     Task_Params_init(&taskParams);
141     taskParams.arg0 = 2000000 / Clock_tickPeriod;
142     taskParams.stackSize = TASKSTACKSIZE;
143     taskParams.stack = &task0Stack;
144     Task_construct(&task0Struct, (Task_FuncPtr)heartBeatFxn, &taskParams, NULL);
146     /* Construct SPI Echo Task thread */
147     Task_Params_init(&taskParams);
148     taskParams.arg0 = 0;
149     taskParams.stackSize = TASKSTACKSIZE;
150     taskParams.stack = &task1Stack;
151     Task_construct(&task1Struct, (Task_FuncPtr)echoFxn, &taskParams, NULL);
153     /* Open LED pins */
154     ledPinHandle = PIN_open(&ledPinState, ledPinTable);
155     if(!ledPinHandle) {
156         System_abort("Error initializing board LED pins\n");
157     }
159     PIN_setOutputValue(ledPinHandle, Board_LED0, 0);
160     PIN_setOutputValue(ledPinHandle, Board_LED1, 0);
162     /* Start BIOS */
163     BIOS_start();
165     return (0);