add ability to build and upload sketches from the bash command line (via beta ino2cpp...
[zumo-cc3200/zumo-cc3200.git] / etc / ino2cpp / templates / cc2600emt / main.template
1 /*
2  *  ======== main.cpp ========
3  *  MT wiring Task framework
4  */
5 #include <stddef.h>
6 //#include <oslib/osi.h>
8 /* XDC Header files */
9 #include <xdc/cfg/global.h>
11 /* BIOS Header files */
12 #include <ti/sysbios/BIOS.h>
13 #include <ti/sysbios/knl/Task.h>
14 #include <ti/sysbios/family/arm/m3/Hwi.h>
15 #include <xdc/runtime/System.h>
17 /* Board Support Header files (from configuration closure) */
18 #include <ti/runtime/wiring/Energia.h>
20 /* magic insertion point 769d20fcd7a0eedaf64270f591438b01 */
22 Void the_task(UArg _task_setup, UArg _task_loop);
24 /* set priority of simple link callbacks
25  * must be >= 0 and < Task_numPriorities
26  * where Task_numPriorities is set by
27  * TI-RTOS config
28  */
30 /*
31  *  ======== main task ========
32  */
33 Void the_task(UArg _task_setup, UArg _task_loop)
34 {
35         /* Call setup once */
36         (*(void(*)()) _task_setup)();
38         /* Call loop repeatedly */
39         for(;;) {
40                 (*(void(*)()) _task_loop)();
41                 System_flush();
42                 Task_yield();
43         }
44 }
45 /*
46  *  ======== main ========
47  */
48 int main()
49 {
50         /* initialize all device/board specific peripherals */
51         Board_init();  /* this function is generated as part of TI-RTOS config */
53         /* The SimpleLink Host Driver requires a mechanism to allow functions to
54          * execute in task context.  The SpawnTask is created to handle such
55          * situations.  This task will remain blocked until the host driver
56          * posts a function.  If the SpawnTask priority is higher than other
57          * tasks, it will immediately execute that function and return to a
58          * blocked state.  Otherwise, it will remain ready until it has
59          * the highest priority of any ready function.
60         */
62         Task_Params taskParams;
64         /* initialize taskParams and set to default */
65         Task_Params_init(&taskParams);
67         /* All tasks have the same priority */
68         taskParams.priority = Task_numPriorities - 2;
69         taskParams.stackSize = 0x800;
71         uint8_t i = 0;
72         for(i = 0; i < NUM_SKETCHES; i++) {
73                 /* Set arg0 to setup() */
74                 taskParams.arg0 = (xdc_UArg)func_ptr[i][0];
75                 /* Set ar1 to loop */
76                 taskParams.arg1 = (xdc_UArg)func_ptr[i][1];
77                 /* Set the task name */
78                 taskParams.instance->name = (xdc_String) taskNames[i];
79                 /* Create the task */
80                 Task_create(the_task, &taskParams, NULL);
81         }
83         /* does not return */
84         BIOS_start();
86         return (0); /* should never get here, but just in case ... */
87 }