rusefi-1/firmware/controllers/core/error_handling.h

58 lines
1.5 KiB
C
Raw Normal View History

2015-07-10 06:01:56 -07:00
/**
* @file error_handling.h
*
* @date Mar 6, 2014
2020-01-13 18:57:43 -08:00
* @author Andrey Belomutskiy, (c) 2012-2020
2015-07-10 06:01:56 -07:00
*/
2020-03-28 16:49:36 -07:00
#pragma once
2015-07-10 06:01:56 -07:00
2019-11-13 05:42:16 -08:00
#include "obd_error_codes.h"
2015-07-10 06:01:56 -07:00
#ifdef __cplusplus
extern "C"
{
#endif /* __cplusplus */
/**
* Something is wrong, but we can live with it: some minor sensor is disconnected
* or something like that
*
2017-11-19 19:09:19 -08:00
* see also firmwareError()
2015-07-10 06:01:56 -07:00
*/
2016-10-10 12:02:10 -07:00
bool warning(obd_code_e code, const char *fmt, ...);
2016-12-31 12:02:44 -08:00
typedef char critical_msg_t[ERROR_BUFFER_SIZE];
2015-07-10 06:01:56 -07:00
/**
2017-11-19 19:09:19 -08:00
* Something really bad had happened - firmware cannot function, we cannot run the engine
* We definitely use this critical error approach in case of invalid configuration. If user sets a self-contradicting
* configuration we have to just put a hard stop on this.
2015-07-10 06:01:56 -07:00
*
2017-11-19 19:09:19 -08:00
* see also warning()
2015-07-10 06:01:56 -07:00
*/
2019-11-13 05:42:16 -08:00
void firmwareError(obd_code_e code, const char *fmt, ...);
2015-07-10 06:01:56 -07:00
extern bool hasFirmwareErrorFlag;
2015-07-10 06:01:56 -07:00
#define hasFirmwareError() hasFirmwareErrorFlag
2020-03-28 17:14:17 -07:00
// todo: rename to getCriticalErrorMessage
const char* getFirmwareError(void);
const char* getWarningMessage(void);
2015-07-10 06:01:56 -07:00
// todo: better place for this shared declaration?
int getRusEfiVersion(void);
#if EFI_ENABLE_ASSERTS
2018-07-25 20:30:00 -07:00
#define efiAssert(code, condition, message, result) { if (!(condition)) { firmwareError(code, message); return result; } }
2018-07-25 20:03:04 -07:00
#define efiAssertVoid(code, condition, message) { if (!(condition)) { firmwareError(code, message); return; } }
2015-07-10 06:01:56 -07:00
#else /* EFI_ENABLE_ASSERTS */
2018-07-25 20:30:00 -07:00
#define efiAssert(code, condition, message, result) { }
2018-07-25 20:03:04 -07:00
#define efiAssertVoid(code, condition, message) { }
2015-07-10 06:01:56 -07:00
#endif /* EFI_ENABLE_ASSERTS */
#ifdef __cplusplus
}
#endif /* __cplusplus */