mediCAL's first BLE project

Dependents:   BLE_mediCAL

Fork of nRF51822 by Nordic Semiconductor

Revision:
0:eff01767de02
diff -r 000000000000 -r eff01767de02 nordic/ble/ble_error_log.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nordic/ble/ble_error_log.cpp	Wed Mar 26 14:38:17 2014 +0000
@@ -0,0 +1,61 @@
+/* Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved.
+ *
+ * The information contained herein is property of Nordic Semiconductor ASA.
+ * Terms and conditions of usage are described in detail in NORDIC
+ * SEMICONDUCTOR STANDARD SOFTWARE LICENSE AGREEMENT.
+ *
+ * Licensees are granted free, non-transferable use of the information. NO
+ * WARRANTY of ANY KIND is provided. This heading must NOT be removed from
+ * the file.
+ *
+ */
+
+#include <string.h>
+#include <stdint.h>
+#include <stdbool.h>
+#include <nrf51.h>
+#include "ble_error_log.h"
+#include "app_util.h"
+#include "app_error.h"
+#include "nrf_gpio.h"
+#include "pstorage.h"
+
+
+// Made static to avoid the error_log to go on the stack.
+static ble_error_log_data_t   m_ble_error_log;            /**< . */
+//lint -esym(526,__Vectors)
+extern uint32_t             * __Vectors;                  /**< The initialization vector holds the address to __initial_sp that will be used when fetching the stack. */
+
+static void fetch_stack(ble_error_log_data_t * error_log)
+{
+    // KTOWN: Temporarily removed 06022014
+    /*
+    uint32_t * p_stack;
+    uint32_t * initial_sp;
+    uint32_t   length;
+  
+    initial_sp = (uint32_t *) __Vectors;
+    p_stack    = (uint32_t *) GET_SP();
+  
+    length = ((uint32_t) initial_sp) - ((uint32_t) p_stack);
+    memcpy(error_log->stack_info, 
+           p_stack, 
+           (length > STACK_DUMP_LENGTH) ? STACK_DUMP_LENGTH : length);
+    */
+}
+
+uint32_t ble_error_log_write(uint32_t err_code, const uint8_t * p_message, uint16_t line_number)
+{
+    m_ble_error_log.failure     = true;
+    m_ble_error_log.err_code    = err_code;
+    m_ble_error_log.line_number = line_number;
+
+    strncpy((char *)m_ble_error_log.message, (const char *)p_message, ERROR_MESSAGE_LENGTH - 1);
+    m_ble_error_log.message[ERROR_MESSAGE_LENGTH - 1] = '\0';
+
+    fetch_stack(&m_ble_error_log);
+    
+    // Write to flash removed, to be redone.
+
+    return NRF_SUCCESS;
+}