Mouse code for the MacroRat

Dependencies:   ITG3200 QEI

Committer:
sahilmgandhi
Date:
Sat Jun 03 00:22:44 2017 +0000
Revision:
46:b156ef445742
Parent:
18:6a4db94011d3
Final code for internal battlebot competition.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sahilmgandhi 18:6a4db94011d3 1 #include "mbed_stats.h"
sahilmgandhi 18:6a4db94011d3 2 #include <string.h>
sahilmgandhi 18:6a4db94011d3 3
sahilmgandhi 18:6a4db94011d3 4 #if MBED_CONF_RTOS_PRESENT
sahilmgandhi 18:6a4db94011d3 5 #include "cmsis_os.h"
sahilmgandhi 18:6a4db94011d3 6 #endif
sahilmgandhi 18:6a4db94011d3 7
sahilmgandhi 18:6a4db94011d3 8 // note: mbed_stats_heap_get defined in mbed_alloc_wrappers.cpp
sahilmgandhi 18:6a4db94011d3 9
sahilmgandhi 18:6a4db94011d3 10 void mbed_stats_stack_get(mbed_stats_stack_t *stats)
sahilmgandhi 18:6a4db94011d3 11 {
sahilmgandhi 18:6a4db94011d3 12 memset(stats, 0, sizeof(mbed_stats_stack_t));
sahilmgandhi 18:6a4db94011d3 13
sahilmgandhi 18:6a4db94011d3 14 #if MBED_STACK_STATS_ENABLED && MBED_CONF_RTOS_PRESENT
sahilmgandhi 18:6a4db94011d3 15 osThreadEnumId enumid = _osThreadsEnumStart();
sahilmgandhi 18:6a4db94011d3 16 osThreadId threadid;
sahilmgandhi 18:6a4db94011d3 17
sahilmgandhi 18:6a4db94011d3 18 while ((threadid = _osThreadEnumNext(enumid))) {
sahilmgandhi 18:6a4db94011d3 19 osEvent e;
sahilmgandhi 18:6a4db94011d3 20
sahilmgandhi 18:6a4db94011d3 21 e = _osThreadGetInfo(threadid, osThreadInfoStackMax);
sahilmgandhi 18:6a4db94011d3 22 if (e.status == osOK) {
sahilmgandhi 18:6a4db94011d3 23 stats->max_size += (uint32_t)e.value.p;
sahilmgandhi 18:6a4db94011d3 24 }
sahilmgandhi 18:6a4db94011d3 25
sahilmgandhi 18:6a4db94011d3 26 e = _osThreadGetInfo(threadid, osThreadInfoStackSize);
sahilmgandhi 18:6a4db94011d3 27 if (e.status == osOK) {
sahilmgandhi 18:6a4db94011d3 28 stats->reserved_size += (uint32_t)e.value.p;
sahilmgandhi 18:6a4db94011d3 29 }
sahilmgandhi 18:6a4db94011d3 30
sahilmgandhi 18:6a4db94011d3 31 stats->stack_cnt += 1;
sahilmgandhi 18:6a4db94011d3 32 }
sahilmgandhi 18:6a4db94011d3 33 #endif
sahilmgandhi 18:6a4db94011d3 34 }
sahilmgandhi 18:6a4db94011d3 35
sahilmgandhi 18:6a4db94011d3 36 size_t mbed_stats_stack_get_each(mbed_stats_stack_t *stats, size_t count)
sahilmgandhi 18:6a4db94011d3 37 {
sahilmgandhi 18:6a4db94011d3 38 memset(stats, 0, count*sizeof(mbed_stats_stack_t));
sahilmgandhi 18:6a4db94011d3 39 size_t i = 0;
sahilmgandhi 18:6a4db94011d3 40
sahilmgandhi 18:6a4db94011d3 41 #if MBED_STACK_STATS_ENABLED && MBED_CONF_RTOS_PRESENT
sahilmgandhi 18:6a4db94011d3 42 osThreadEnumId enumid = _osThreadsEnumStart();
sahilmgandhi 18:6a4db94011d3 43 osThreadId threadid;
sahilmgandhi 18:6a4db94011d3 44
sahilmgandhi 18:6a4db94011d3 45 while ((threadid = _osThreadEnumNext(enumid)) && i < count) {
sahilmgandhi 18:6a4db94011d3 46 osEvent e;
sahilmgandhi 18:6a4db94011d3 47
sahilmgandhi 18:6a4db94011d3 48 e = _osThreadGetInfo(threadid, osThreadInfoStackMax);
sahilmgandhi 18:6a4db94011d3 49 if (e.status == osOK) {
sahilmgandhi 18:6a4db94011d3 50 stats[i].max_size = (uint32_t)e.value.p;
sahilmgandhi 18:6a4db94011d3 51 }
sahilmgandhi 18:6a4db94011d3 52
sahilmgandhi 18:6a4db94011d3 53 e = _osThreadGetInfo(threadid, osThreadInfoStackSize);
sahilmgandhi 18:6a4db94011d3 54 if (e.status == osOK) {
sahilmgandhi 18:6a4db94011d3 55 stats[i].reserved_size = (uint32_t)e.value.p;
sahilmgandhi 18:6a4db94011d3 56 }
sahilmgandhi 18:6a4db94011d3 57
sahilmgandhi 18:6a4db94011d3 58 stats[i].thread_id = (uint32_t)threadid;
sahilmgandhi 18:6a4db94011d3 59 stats[i].stack_cnt = 1;
sahilmgandhi 18:6a4db94011d3 60 i += 1;
sahilmgandhi 18:6a4db94011d3 61 }
sahilmgandhi 18:6a4db94011d3 62 #endif
sahilmgandhi 18:6a4db94011d3 63
sahilmgandhi 18:6a4db94011d3 64 return i;
sahilmgandhi 18:6a4db94011d3 65 }
sahilmgandhi 18:6a4db94011d3 66
sahilmgandhi 18:6a4db94011d3 67 #if MBED_STACK_STATS_ENABLED && !MBED_CONF_RTOS_PRESENT
sahilmgandhi 18:6a4db94011d3 68 #warning Stack statistics are currently not supported without the rtos.
sahilmgandhi 18:6a4db94011d3 69 #endif