diff --git a/libraries/mbed/api/error.h b/libraries/mbed/api/error.h index 0abe725c16..c62f22b602 100644 --- a/libraries/mbed/api/error.h +++ b/libraries/mbed/api/error.h @@ -53,14 +53,16 @@ * #endcode */ -#include -#include "device.h" +#include "toolchain.h" -#if DEVICE_STDIO_MESSAGES - #include - #define error(...) (fprintf(stderr, __VA_ARGS__), exit(1)) -#else - #define error(...) (exit(1)) +#ifdef __cplusplus +extern "C" { +#endif + +void error(const char* format, ...); + +#ifdef __cplusplus +} #endif #endif diff --git a/libraries/mbed/common/error.c b/libraries/mbed/common/error.c new file mode 100644 index 0000000000..7c6a556c03 --- /dev/null +++ b/libraries/mbed/common/error.c @@ -0,0 +1,33 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include +#include +#include "device.h" +#include "toolchain.h" +#if DEVICE_STDIO_MESSAGES +#include +#endif + +WEAK void error(const char* format, ...); +WEAK void error(const char* format, ...) { +#if DEVICE_STDIO_MESSAGES + va_list arg; + va_start(arg, format); + vfprintf(stderr, format, arg); + va_end(arg); +#endif + exit(1); +} diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/serial_api.c b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/serial_api.c index 57ee01da35..123dd6af0d 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/serial_api.c +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/serial_api.c @@ -16,6 +16,7 @@ // math.h required for floating point operations for baud rate calculation #include #include +#include #include "serial_api.h" #include "cmsis.h" diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11XX_11CXX/serial_api.c b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11XX_11CXX/serial_api.c index b798789e0e..55bfc1a5a8 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11XX_11CXX/serial_api.c +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11XX_11CXX/serial_api.c @@ -16,6 +16,7 @@ // math.h required for floating point operations for baud rate calculation #include #include +#include #include "serial_api.h" #include "cmsis.h" diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC13XX/serial_api.c b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC13XX/serial_api.c index 1db3211e0f..3b405a2c68 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC13XX/serial_api.c +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC13XX/serial_api.c @@ -16,6 +16,7 @@ // math.h required for floating point operations for baud rate calculation #include #include +#include #include "serial_api.h" #include "cmsis.h" diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/serial_api.c b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/serial_api.c index b74e7b527c..c9bbee6bf0 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/serial_api.c +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/serial_api.c @@ -16,6 +16,7 @@ // math.h required for floating point operations for baud rate calculation #include #include +#include #include "serial_api.h" #include "cmsis.h" diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC23XX/serial_api.c b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC23XX/serial_api.c index 517d28c58a..a4a4b311fb 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC23XX/serial_api.c +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC23XX/serial_api.c @@ -16,6 +16,7 @@ // math.h required for floating point operations for baud rate calculation #include #include +#include #include "serial_api.h" #include "cmsis.h" diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC408X/serial_api.c b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC408X/serial_api.c index a11d4a522f..26d01224b7 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC408X/serial_api.c +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC408X/serial_api.c @@ -16,6 +16,7 @@ // math.h required for floating point operations for baud rate calculation #include #include +#include #include "serial_api.h" #include "cmsis.h" diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC43XX/serial_api.c b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC43XX/serial_api.c index b5af98f6a1..6efec95413 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC43XX/serial_api.c +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC43XX/serial_api.c @@ -18,6 +18,7 @@ // math.h required for floating point operations for baud rate calculation #include #include +#include #include "serial_api.h" #include "cmsis.h"