Subversion Repositories FlightCtrl

Rev

Blame | Last modification | View Log | RSS feed

#include <inttypes.h>
#include <string.h>
#include "profiler.h"

uint8_t currentProfiledActivity;
volatile uint32_t totalProfilerHits;
volatile uint16_t activitiesTimerHits[16];

char profilerLabel0[]  PROGMEM = "Unaccounted";
char profilerLabel1[]  PROGMEM = "AnalogUpd";
char profilerLabel2[]  PROGMEM = "MatrixUpd1";
char profilerLabel3[]  PROGMEM = "MatrixUpd2";
char profilerLabel4[]  PROGMEM = "Normalize1";
char profilerLabel5[]  PROGMEM = "Normalize2";
char profilerLabel6[]  PROGMEM = "DriftCorr";
char profilerLabel7[]  PROGMEM = "CheckMatrix";
char profilerLabel8[]  PROGMEM = "EulerAngles";
char profilerLabel9[]  PROGMEM = "AnglesOutput";
char profilerLabel10[] PROGMEM = "ControlMixer";
char profilerLabel11[] PROGMEM = "Commands";
char profilerLabel12[] PROGMEM = "FlightControl";
char profilerLabel13[] PROGMEM = "UART";
char profilerLabel14[] PROGMEM = "Outputs";
char profilerLabel15[] PROGMEM = "";

PGM_P PROFILER_LABELS[] PROGMEM = {
    profilerLabel0,
    profilerLabel1,
    profilerLabel2,
    profilerLabel3,
    profilerLabel4,
    profilerLabel5,
    profilerLabel6,
    profilerLabel7,
    profilerLabel8,
    profilerLabel9,
    profilerLabel10,
    profilerLabel11,
    profilerLabel12,
    profilerLabel13,
    profilerLabel14,
    profilerLabel15
};

void setCurrentProfiledActivity(uint8_t what) {
  currentProfiledActivity = what;
}

void reset(void) {
  memset((uint8_t*)&activitiesTimerHits, 0, sizeof(activitiesTimerHits));
  totalProfilerHits = 0;
}

void profiler_scoreTimerHit(void) {
  activitiesTimerHits[currentProfiledActivity]++;
  totalProfilerHits++;
}