mbed library sources. Supersedes mbed-src.

Dependents:   Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more

Committer:
AnnaBridge
Date:
Wed Feb 20 22:31:08 2019 +0000
Revision:
189:f392fc9709a3
Parent:
187:0387e8f68319
mbed library release version 165

Who changed what in which revision?

UserRevisionLine numberNew contents of line
<> 149:156823d33999 1 /* mbed Microcontroller Library
<> 149:156823d33999 2 * Copyright (c) 2006-2013 ARM Limited
AnnaBridge 189:f392fc9709a3 3 * SPDX-License-Identifier: Apache-2.0
<> 149:156823d33999 4 *
<> 149:156823d33999 5 * Licensed under the Apache License, Version 2.0 (the "License");
<> 149:156823d33999 6 * you may not use this file except in compliance with the License.
<> 149:156823d33999 7 * You may obtain a copy of the License at
<> 149:156823d33999 8 *
<> 149:156823d33999 9 * http://www.apache.org/licenses/LICENSE-2.0
<> 149:156823d33999 10 *
<> 149:156823d33999 11 * Unless required by applicable law or agreed to in writing, software
<> 149:156823d33999 12 * distributed under the License is distributed on an "AS IS" BASIS,
<> 149:156823d33999 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
<> 149:156823d33999 14 * See the License for the specific language governing permissions and
<> 149:156823d33999 15 * limitations under the License.
<> 149:156823d33999 16 */
<> 149:156823d33999 17 #include <stdio.h>
<> 149:156823d33999 18 #include "hal/gpio_api.h"
<> 160:d5399cc887bb 19 #include "platform/mbed_wait_api.h"
<> 160:d5399cc887bb 20 #include "platform/mbed_toolchain.h"
<> 149:156823d33999 21 #include "platform/mbed_interface.h"
AnnaBridge 189:f392fc9709a3 22 #include "platform/mbed_retarget.h"
<> 160:d5399cc887bb 23 #include "platform/mbed_critical.h"
<> 149:156823d33999 24
AnnaBridge 189:f392fc9709a3 25 WEAK MBED_NORETURN void mbed_die(void)
AnnaBridge 187:0387e8f68319 26 {
<> 149:156823d33999 27 #if !defined (NRF51_H) && !defined(TARGET_EFM32)
<> 149:156823d33999 28 core_util_critical_section_enter();
<> 149:156823d33999 29 #endif
AnnaBridge 187:0387e8f68319 30 gpio_t led_err;
AnnaBridge 187:0387e8f68319 31 gpio_init_out(&led_err, LED1);
<> 149:156823d33999 32
<> 149:156823d33999 33 while (1) {
AnnaBridge 174:b96e65c34a4d 34 for (int i = 0; i < 4; ++i) {
AnnaBridge 174:b96e65c34a4d 35 gpio_write(&led_err, 1);
AnnaBridge 189:f392fc9709a3 36 wait_us(150000);
AnnaBridge 174:b96e65c34a4d 37 gpio_write(&led_err, 0);
AnnaBridge 189:f392fc9709a3 38 wait_us(150000);
AnnaBridge 174:b96e65c34a4d 39 }
<> 149:156823d33999 40
AnnaBridge 174:b96e65c34a4d 41 for (int i = 0; i < 4; ++i) {
AnnaBridge 174:b96e65c34a4d 42 gpio_write(&led_err, 1);
AnnaBridge 189:f392fc9709a3 43 wait_us(400000);
AnnaBridge 174:b96e65c34a4d 44 gpio_write(&led_err, 0);
AnnaBridge 189:f392fc9709a3 45 wait_us(400000);
AnnaBridge 174:b96e65c34a4d 46 }
<> 149:156823d33999 47 }
<> 149:156823d33999 48 }
<> 149:156823d33999 49
AnnaBridge 187:0387e8f68319 50 void mbed_error_printf(const char *format, ...)
AnnaBridge 187:0387e8f68319 51 {
<> 149:156823d33999 52 va_list arg;
<> 149:156823d33999 53 va_start(arg, format);
AnnaBridge 189:f392fc9709a3 54 mbed_error_vprintf(format, arg);
<> 149:156823d33999 55 va_end(arg);
<> 149:156823d33999 56 }
<> 149:156823d33999 57
AnnaBridge 189:f392fc9709a3 58 void mbed_error_vprintf(const char *format, va_list arg)
AnnaBridge 189:f392fc9709a3 59 {
AnnaBridge 189:f392fc9709a3 60 char buffer[132];
AnnaBridge 189:f392fc9709a3 61 int size = vsnprintf(buffer, sizeof buffer, format, arg);
AnnaBridge 189:f392fc9709a3 62 if ((unsigned int)size >= sizeof buffer) {
AnnaBridge 189:f392fc9709a3 63 /* Output was truncated - indicate by overwriting tail of buffer
AnnaBridge 189:f392fc9709a3 64 * with ellipsis, newline and null terminator.
AnnaBridge 189:f392fc9709a3 65 */
AnnaBridge 189:f392fc9709a3 66 static const char ellipsis[] = "...\n";
AnnaBridge 189:f392fc9709a3 67 memcpy(&buffer[sizeof buffer - sizeof ellipsis], ellipsis, sizeof ellipsis);
AnnaBridge 189:f392fc9709a3 68 }
AnnaBridge 189:f392fc9709a3 69 if (size > 0) {
AnnaBridge 189:f392fc9709a3 70 mbed_error_puts(buffer);
AnnaBridge 189:f392fc9709a3 71 }
AnnaBridge 189:f392fc9709a3 72 }
AnnaBridge 189:f392fc9709a3 73
AnnaBridge 189:f392fc9709a3 74 void mbed_error_puts(const char *str)
AnnaBridge 189:f392fc9709a3 75 {
AnnaBridge 189:f392fc9709a3 76 core_util_critical_section_enter();
AnnaBridge 189:f392fc9709a3 77 #if MBED_CONF_PLATFORM_STDIO_CONVERT_NEWLINES || MBED_CONF_PLATFORM_STDIO_CONVERT_TTY_NEWLINES
AnnaBridge 189:f392fc9709a3 78 char stdio_out_prev = '\0';
AnnaBridge 189:f392fc9709a3 79 for (; *str != '\0'; str++) {
AnnaBridge 189:f392fc9709a3 80 if (*str == '\n' && stdio_out_prev != '\r') {
AnnaBridge 189:f392fc9709a3 81 const char cr = '\r';
AnnaBridge 189:f392fc9709a3 82 write(STDERR_FILENO, &cr, 1);
AnnaBridge 189:f392fc9709a3 83 }
AnnaBridge 189:f392fc9709a3 84 write(STDERR_FILENO, str, 1);
AnnaBridge 189:f392fc9709a3 85 stdio_out_prev = *str;
AnnaBridge 189:f392fc9709a3 86 }
AnnaBridge 189:f392fc9709a3 87 #else
AnnaBridge 189:f392fc9709a3 88 write(STDERR_FILENO, str, strlen(str));
AnnaBridge 189:f392fc9709a3 89 #endif
AnnaBridge 189:f392fc9709a3 90 core_util_critical_section_exit();
AnnaBridge 189:f392fc9709a3 91 }
AnnaBridge 189:f392fc9709a3 92
AnnaBridge 187:0387e8f68319 93 void mbed_error_vfprintf(const char *format, va_list arg)
AnnaBridge 187:0387e8f68319 94 {
AnnaBridge 189:f392fc9709a3 95 mbed_error_vprintf(format, arg);
<> 149:156823d33999 96 }