added readme
[tida-00561-firmware-files/tida-00561-firmware-files.git] / Startup / main.c
1 /******************************************************************************
3  @file  main.c
5  @brief Main entry of the BLE SensorTag sample application.
7  Group: WCS, BTS
8  Target Device: CC2650, CC2640, CC1350
10  ******************************************************************************
11  
12  Copyright (c) 2014-2016, Texas Instruments Incorporated
13  All rights reserved.
15  Redistribution and use in source and binary forms, with or without
16  modification, are permitted provided that the following conditions
17  are met:
19  *  Redistributions of source code must retain the above copyright
20     notice, this list of conditions and the following disclaimer.
22  *  Redistributions in binary form must reproduce the above copyright
23     notice, this list of conditions and the following disclaimer in the
24     documentation and/or other materials provided with the distribution.
26  *  Neither the name of Texas Instruments Incorporated nor the names of
27     its contributors may be used to endorse or promote products derived
28     from this software without specific prior written permission.
30  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
31  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
32  THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
33  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
34  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
35  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
36  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
37  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
38  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
39  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
40  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
42  ******************************************************************************
43  Release Name: ble_sdk_2_02_01_18
44  Release Date: 2016-10-26 15:20:04
45  *****************************************************************************/
47 // TI RTOS
48 #include <ti/sysbios/BIOS.h>
49 #include <xdc/runtime/Error.h>
50 #include <ti/drivers/Power.h>
51 #include <ti/drivers/power/PowerCC26XX.h>
53 // BLE
54 #include "bcomdef.h"
56 // Application
57 #include "sensortag.h"
58 #include "sensortag_tmp.h"
59 #include "sensortag_hum.h"
60 #include "sensortag_bar.h"
61 #ifdef PH_SENSOR_DK
62 #include "SensorTag_Ph_Pt100.h"         //deb_gp 
63 #endif 
65 #ifndef USE_DEFAULT_USER_CFG
67 #include "ble_user_config.h"
69 // BLE user defined configuration
70 bleUserCfg_t user0Cfg = BLE_USER_CFG;
72 #endif // USE_DEFAULT_USER_CFG
74 /*******************************************************************************
75  * MACROS
76  */
78 /*******************************************************************************
79  * CONSTANTS
80  */
82 /*******************************************************************************
83  * TYPEDEFS
84  */
86 /*******************************************************************************
87  * LOCAL VARIABLES
88  */
90 /*******************************************************************************
91  * GLOBAL VARIABLES
92  */
94 #ifdef CC1350_LAUNCHXL
95 #ifdef POWER_SAVING
96 // Power Notify Object for wake-up callbacks
97 Power_NotifyObj rFSwitchPowerNotifyObj;
98 static uint8_t rFSwitchNotifyCb(uint8_t eventType, uint32_t *eventArg,
99                                 uint32_t *clientArg);
100 #endif //POWER_SAVING
102 PIN_State  radCtrlState;
103 PIN_Config radCtrlCfg[] = 
105   Board_DIO1_RFSW   | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW  | PIN_PUSHPULL | PIN_DRVSTR_MAX, /* RF SW Switch defaults to 2.4GHz path*/
106   Board_DIO30_SWPWR | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MAX, /* Power to the RF Switch */
107   PIN_TERMINATE
108 };
109 PIN_Handle radCtrlHandle;
110 #endif //CC1350_LAUNCHXL
112 /*******************************************************************************
113  * EXTERNS
114  */
116 extern void AssertHandler(uint8 assertCause, uint8 assertSubcause);
118 /*******************************************************************************
119  * @fn          Main
120  *
121  * @brief       Application Main
122  *
123  * input parameters
124  *
125  * @param       None.
126  *
127  * output parameters
128  *
129  * @param       None.
130  *
131  * @return      None.
132  */
133 int main()
135   /* Register Application callback to trap asserts raised in the Stack */
136   RegisterAssertCback(AssertHandler);
138   PIN_init(BoardGpioInitTable);
140 #ifdef CC1350_LAUNCHXL
141   // Enable 2.4GHz Radio
142   radCtrlHandle = PIN_open(&radCtrlState, radCtrlCfg);
144 #ifdef POWER_SAVING
145   Power_registerNotify(&rFSwitchPowerNotifyObj, 
146                        PowerCC26XX_ENTERING_STANDBY | PowerCC26XX_AWAKE_STANDBY,
147                        (Power_NotifyFxn) rFSwitchNotifyCb, NULL);
148 #endif //POWER_SAVING  
149 #endif //CC1350_LAUNCHXL
151 #ifndef POWER_SAVING
152   /* Set constraints for Standby and Idle mode */
153   Power_setConstraint(PowerCC26XX_SB_DISALLOW);
154   Power_setConstraint(PowerCC26XX_IDLE_PD_DISALLOW);
155 #endif // POWER_SAVING
157   /* Initialize ICall module */
158   ICall_init();
160   /* Start tasks of external images - Priority 5 */
161   ICall_createRemoteTasks();
163   /* Kick off profile - Priority 3 */
164   GAPRole_createTask();
166   /* Kick off application - Priority 1 */
167   SensorTag_createTask();
168   SensorTagTmp_createTask();
169   SensorTagHum_createTask();
170   SensorTagBar_createTask();
171 #ifdef PH_SENSOR_DK
172   SensorTagPh_Pt100_createTask();       //deb_gp 
173 #endif 
175   BIOS_start();     /* enable interrupts and start SYS/BIOS */
177   return 0;
181 /*******************************************************************************
182  * @fn          AssertHandler
183  *
184  * @brief       This is the Application's callback handler for asserts raised
185  *              in the stack.  When EXT_HAL_ASSERT is defined in the Stack
186  *              project this function will be called when an assert is raised, 
187  *              and can be used to observe or trap a violation from expected 
188  *              behavior.       
189  *              
190  *              As an example, for Heap allocation failures the Stack will raise 
191  *              HAL_ASSERT_CAUSE_OUT_OF_MEMORY as the assertCause and 
192  *              HAL_ASSERT_SUBCAUSE_NONE as the assertSubcause.  An application
193  *              developer could trap any malloc failure on the stack by calling
194  *              HAL_ASSERT_SPINLOCK under the matching case.
195  *
196  *              An application developer is encouraged to extend this function
197  *              for use by their own application.  To do this, add hal_assert.c
198  *              to your project workspace, the path to hal_assert.h (this can 
199  *              be found on the stack side). Asserts are raised by including
200  *              hal_assert.h and using macro HAL_ASSERT(cause) to raise an 
201  *              assert with argument assertCause.  the assertSubcause may be
202  *              optionally set by macro HAL_ASSERT_SET_SUBCAUSE(subCause) prior
203  *              to asserting the cause it describes. More information is
204  *              available in hal_assert.h.
205  *
206  * input parameters
207  *
208  * @param       assertCause    - Assert cause as defined in hal_assert.h.
209  * @param       assertSubcause - Optional assert subcause (see hal_assert.h).
210  *
211  * output parameters
212  *
213  * @param       None.
214  *
215  * @return      None.
216  */
217 void AssertHandler(uint8 assertCause, uint8 assertSubcause)
219   // check the assert cause
220   switch (assertCause)
221   {
222     default:
223       HAL_ASSERT_SPINLOCK;
224   }
226   return;
230 /*******************************************************************************
231  * @fn          smallErrorHook
232  *
233  * @brief       Error handler to be hooked into TI-RTOS.
234  *
235  * input parameters
236  *
237  * @param       eb - Pointer to Error Block.
238  *
239  * output parameters
240  *
241  * @param       None.
242  *
243  * @return      None.
244  */
245 void smallErrorHook(Error_Block *eb)
247   for (;;);
250 #if defined (CC1350_LAUNCHXL) && defined (POWER_SAVING)
251 /*******************************************************************************
252  * @fn          rFSwitchNotifyCb
253  *
254  * @brief       Power driver callback to toggle RF switch on Power state
255  *              transitions.
256  *
257  * input parameters
258  *
259  * @param   eventType - The state change.
260  * @param   eventArg  - Not used.
261  * @param   clientArg - Not used.
262  *
263  * @return  Power_NOTIFYDONE to indicate success.
264  */
265 static uint8_t rFSwitchNotifyCb(uint8_t eventType, uint32_t *eventArg,
266                                 uint32_t *clientArg)
268   if (eventType == PowerCC26XX_ENTERING_STANDBY)
269   {
270     // Power down RF Switch
271     PIN_setOutputValue(radCtrlHandle, Board_DIO30_SWPWR, 0);
272   }
273   else if (eventType == PowerCC26XX_AWAKE_STANDBY)
274   {
275     // Power up RF Switch
276     PIN_setOutputValue(radCtrlHandle, Board_DIO30_SWPWR, 1);
277   }
278   
279   // Notification handled successfully
280   return Power_NOTIFYDONE;
282 #endif //CC1350_LAUNCHXL || POWER_SAVING
285 /*******************************************************************************
286  */