45 #ifndef ENERGEST_CONF_ON 47 #define ENERGEST_CONF_ON 0 50 #ifndef ENERGEST_CURRENT_TIME 51 #ifdef ENERGEST_CONF_CURRENT_TIME 52 #define ENERGEST_CURRENT_TIME ENERGEST_CONF_CURRENT_TIME 54 #define ENERGEST_CURRENT_TIME RTIMER_NOW 55 #define ENERGEST_SECOND RTIMER_SECOND 56 #define ENERGEST_TIME_T rtimer_clock_t 60 #ifndef ENERGEST_TIME_T 61 #ifdef ENERGEST_CONF_TIME_T 62 #define ENERGEST_TIME_T ENERGEST_CONF_TIME_T 64 #define ENERGEST_TIME_T rtimer_clock_t 68 #ifndef ENERGEST_SECOND 69 #ifdef ENERGEST_CONF_SECOND 70 #define ENERGEST_SECOND ENERGEST_CONF_SECOND 72 #define ENERGEST_SECOND RTIMER_SECOND 76 #ifndef ENERGEST_GET_TOTAL_TIME 77 #ifdef ENERGEST_CONF_GET_TOTAL_TIME 78 #define ENERGEST_GET_TOTAL_TIME ENERGEST_CONF_GET_TOTAL_TIME 80 #define ENERGEST_GET_TOTAL_TIME energest_get_total_time 91 typedef enum energest_type {
94 ENERGEST_TYPE_DEEP_LPM,
95 ENERGEST_TYPE_TRANSMIT,
98 #ifdef ENERGEST_CONF_PLATFORM_ADDITIONS 99 ENERGEST_CONF_PLATFORM_ADDITIONS,
102 #ifdef ENERGEST_CONF_ADDITIONS 103 ENERGEST_CONF_ADDITIONS,
109 void energest_init(
void);
110 void energest_flush(
void);
112 uint64_t ENERGEST_GET_TOTAL_TIME(
void);
116 extern uint64_t energest_total_time[ENERGEST_TYPE_MAX];
117 extern ENERGEST_TIME_T energest_current_time[ENERGEST_TYPE_MAX];
118 extern unsigned char energest_current_mode[ENERGEST_TYPE_MAX];
120 static inline uint64_t
121 energest_type_time(energest_type_t type)
123 return energest_total_time[type];
127 energest_type_set(energest_type_t type, uint64_t value)
129 energest_total_time[type] = value;
133 energest_on(energest_type_t type)
135 if(energest_current_mode[type] == 0) {
136 energest_current_time[type] = ENERGEST_CURRENT_TIME();
137 energest_current_mode[type] = 1;
140 #define ENERGEST_ON(type) energest_on(type) 143 energest_off(energest_type_t type)
145 if(energest_current_mode[type] != 0) {
146 energest_total_time[type] +=
147 (ENERGEST_TIME_T)(ENERGEST_CURRENT_TIME() - energest_current_time[type]);
148 energest_current_mode[type] = 0;
151 #define ENERGEST_OFF(type) energest_off(type) 154 energest_switch(energest_type_t type_off, energest_type_t type_on)
156 ENERGEST_TIME_T energest_local_variable_now = ENERGEST_CURRENT_TIME();
157 if(energest_current_mode[type_off] != 0) {
158 energest_total_time[type_off] += (ENERGEST_TIME_T)
159 (energest_local_variable_now - energest_current_time[type_off]);
160 energest_current_mode[type_off] = 0;
162 if(energest_current_mode[type_on] == 0) {
163 energest_current_time[type_on] = energest_local_variable_now;
164 energest_current_mode[type_on] = 1;
167 #define ENERGEST_SWITCH(type_off, type_on) energest_switch(type_off, type_on) 171 static inline uint64_t energest_type_time(energest_type_t type) {
return 0; }
173 static inline void energest_type_set(energest_type_t type, uint64_t time) { }
175 static inline void energest_on(energest_type_t type) { }
177 static inline void energest_off(energest_type_t type) { }
179 static inline void energest_switch(energest_type_t type_off,
180 energest_type_t type_on)
184 #define ENERGEST_ON(type) do { } while(0) 185 #define ENERGEST_OFF(type) do { } while(0) 186 #define ENERGEST_SWITCH(type_off, type_on) do { } while(0)