mirror of https://github.com/ARMmbed/mbed-os.git
				
				
				
			
		
			
				
	
	
		
			60 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
/*
 | 
						|
 * Copyright (c) 2006 Nordic Semiconductor. All Rights Reserved.
 | 
						|
 *
 | 
						|
 * The information contained herein is confidential property of Nordic Semiconductor. The use,
 | 
						|
 * copying, transfer or disclosure of such information is prohibited except by express written
 | 
						|
 * agreement with Nordic Semiconductor.
 | 
						|
 *
 | 
						|
 */
 | 
						|
 | 
						|
/** @file
 | 
						|
 * @brief Utilities for verifying program logic
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef NRF_ASSERT_H_
 | 
						|
#define NRF_ASSERT_H_
 | 
						|
 | 
						|
#include <stdint.h>
 | 
						|
#include "nordic_global.h"
 | 
						|
 | 
						|
#if defined(DEBUG_NRF) || defined(DEBUG_NRF_USER)
 | 
						|
 | 
						|
/** @brief Function for handling assertions.
 | 
						|
 *
 | 
						|
 *
 | 
						|
 * @note
 | 
						|
 * This function is called when an assertion has triggered.
 | 
						|
 *
 | 
						|
 *
 | 
						|
 * @post
 | 
						|
 * All hardware is put into an idle non-emitting state (in particular the radio is highly
 | 
						|
 * important to switch off since the radio might be in a state that makes it send
 | 
						|
 * packets continiously while a typical final infinit ASSERT loop is executing).
 | 
						|
 *
 | 
						|
 *
 | 
						|
 * @param line_num The line number where the assertion is called
 | 
						|
 * @param file_name Pointer to the file name
 | 
						|
 */
 | 
						|
void assert_nrf_callback(uint16_t line_num, const uint8_t *file_name);
 | 
						|
 | 
						|
/*lint -emacro(506, ASSERT) */ /* Suppress "Constant value Boolean */ 
 | 
						|
/*lint -emacro(774, ASSERT) */ /* Suppress "Boolean within 'if' always evaluates to True" */ \
 | 
						|
 | 
						|
/** @brief Function for checking intended for production code.
 | 
						|
 *
 | 
						|
 * Check passes if "expr" evaluates to true. */
 | 
						|
#define ASSERT(expr) \
 | 
						|
if (expr)                                                                     \
 | 
						|
{                                                                             \
 | 
						|
}                                                                             \
 | 
						|
else                                                                          \
 | 
						|
{                                                                             \
 | 
						|
  assert_nrf_callback((uint16_t)__LINE__, (uint8_t *)__FILE__);               \
 | 
						|
}
 | 
						|
#else
 | 
						|
#define ASSERT(expr) //!< Assert empty when disabled
 | 
						|
void assert_nrf_callback(uint16_t line_num, const uint8_t *file_name);
 | 
						|
#endif /* defined(DEBUG_NRF) || defined(DEBUG_NRF_USER) */
 | 
						|
 | 
						|
#endif /* NRF_ASSERT_H_ */
 |