auto-sync
This commit is contained in:
parent
f4a7af302e
commit
581eef87fc
|
@ -3,5 +3,6 @@ CONTROLLERS_CORE_SRC = $(PROJECT_DIR)/controllers/core/avg_values.c
|
||||||
|
|
||||||
CONTROLLERS_CORE_SRC_CPP = $(PROJECT_DIR)/controllers/core/EfiWave.cpp \
|
CONTROLLERS_CORE_SRC_CPP = $(PROJECT_DIR)/controllers/core/EfiWave.cpp \
|
||||||
$(PROJECT_DIR)/controllers/core/table_helper.cpp \
|
$(PROJECT_DIR)/controllers/core/table_helper.cpp \
|
||||||
|
$(PROJECT_DIR)/controllers/core/logic_expression.cpp \
|
||||||
$(PROJECT_DIR)/controllers/core/interpolation.cpp \
|
$(PROJECT_DIR)/controllers/core/interpolation.cpp \
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@ class FLStack {
|
||||||
public:
|
public:
|
||||||
FLStack();
|
FLStack();
|
||||||
void push(T value);
|
void push(T value);
|
||||||
|
void reset();
|
||||||
T pop();
|
T pop();
|
||||||
int size();
|
int size();
|
||||||
bool isEmpty();
|
bool isEmpty();
|
||||||
|
@ -24,7 +25,7 @@ private:
|
||||||
|
|
||||||
template<typename T, int MAXSIZE>
|
template<typename T, int MAXSIZE>
|
||||||
FLStack<T, MAXSIZE>::FLStack() {
|
FLStack<T, MAXSIZE>::FLStack() {
|
||||||
index = 0;
|
reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T, int MAXSIZE>
|
template<typename T, int MAXSIZE>
|
||||||
|
@ -32,11 +33,22 @@ bool FLStack<T, MAXSIZE>::isEmpty() {
|
||||||
return index == 0;
|
return index == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<typename T, int MAXSIZE>
|
||||||
|
void FLStack<T, MAXSIZE>::reset() {
|
||||||
|
index = 0;
|
||||||
|
}
|
||||||
|
|
||||||
template<typename T, int MAXSIZE>
|
template<typename T, int MAXSIZE>
|
||||||
void FLStack<T, MAXSIZE>::push(T value) {
|
void FLStack<T, MAXSIZE>::push(T value) {
|
||||||
values[index++] = value;
|
values[index++] = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<typename T, int MAXSIZE>
|
||||||
|
T FLStack<T, MAXSIZE>::pop() {
|
||||||
|
return values[--index];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
template<typename T, int MAXSIZE>
|
template<typename T, int MAXSIZE>
|
||||||
int FLStack<T, MAXSIZE>::size() {
|
int FLStack<T, MAXSIZE>::size() {
|
||||||
return index;
|
return index;
|
||||||
|
|
|
@ -0,0 +1,61 @@
|
||||||
|
/**
|
||||||
|
* @file logic_expression.cpp
|
||||||
|
*
|
||||||
|
* @date Oct 3, 2014
|
||||||
|
* @author Andrey Belomutskiy, (c) 2012-2014
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "main.h"
|
||||||
|
#include "logic_expression.h"
|
||||||
|
|
||||||
|
LEElement::LEElement() {
|
||||||
|
action = LE_UNDEFINED;
|
||||||
|
next = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
//void LEElement::init(le_action_e action, int iValue) {
|
||||||
|
// this->action = action;
|
||||||
|
// this->iValue = iValue;
|
||||||
|
//}
|
||||||
|
|
||||||
|
void LEElement::init(le_action_e action) {
|
||||||
|
this->action = action;
|
||||||
|
}
|
||||||
|
|
||||||
|
void LEElement::init(le_action_e action, float fValue) {
|
||||||
|
this->action = action;
|
||||||
|
this->fValue = fValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
LECalculator::LECalculator() {
|
||||||
|
first = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
float LECalculator::getValue() {
|
||||||
|
LEElement *element = first;
|
||||||
|
|
||||||
|
stack.reset();
|
||||||
|
|
||||||
|
while(element != NULL) {
|
||||||
|
|
||||||
|
stack.push(element->fValue);
|
||||||
|
|
||||||
|
|
||||||
|
element = element->next;
|
||||||
|
}
|
||||||
|
|
||||||
|
return stack.pop();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void LECalculator::add(LEElement *element) {
|
||||||
|
if (first == NULL) {
|
||||||
|
first = element;
|
||||||
|
} else {
|
||||||
|
LEElement *last = first;
|
||||||
|
while (last->next != NULL) {
|
||||||
|
last = last->next;
|
||||||
|
}
|
||||||
|
last->next = element;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,53 @@
|
||||||
|
/**
|
||||||
|
* @file logic_expression.h
|
||||||
|
*
|
||||||
|
* @date Oct 3, 2014
|
||||||
|
* @author Andrey Belomutskiy, (c) 2012-2014
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef LOGIC_EXPRESSION_H_
|
||||||
|
#define LOGIC_EXPRESSION_H_
|
||||||
|
|
||||||
|
#include "rusefi_enums.h"
|
||||||
|
#include "fl_stack.h"
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
LE_UNDEFINED,
|
||||||
|
LE_NUMERIC_VALUE,
|
||||||
|
LE_OPERATOR_LESS,
|
||||||
|
LE_OPERATOR_MORE,
|
||||||
|
LE_OPERATOR_AND,
|
||||||
|
LE_OPERATOR_OR,
|
||||||
|
|
||||||
|
Force_4b_le_action = ENUM_SIZE_HACK,
|
||||||
|
} le_action_e;
|
||||||
|
|
||||||
|
class LEElement {
|
||||||
|
public:
|
||||||
|
LEElement();
|
||||||
|
// void init(le_action_e action, int iValue);
|
||||||
|
void init(le_action_e action);
|
||||||
|
void init(le_action_e action, float fValue);
|
||||||
|
|
||||||
|
le_action_e action;
|
||||||
|
float fValue;
|
||||||
|
int iValue;
|
||||||
|
|
||||||
|
LEElement *next;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#define MAX_STACK_DEPTH 32
|
||||||
|
|
||||||
|
class LECalculator {
|
||||||
|
public:
|
||||||
|
LECalculator();
|
||||||
|
float getValue();
|
||||||
|
void add(LEElement *element);
|
||||||
|
LEElement *first;
|
||||||
|
|
||||||
|
private:
|
||||||
|
FLStack<float, MAX_STACK_DEPTH> stack;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* LOGIC_EXPRESSION_H_ */
|
|
@ -241,5 +241,5 @@ void firmwareError(const char *fmt, ...) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int getRusEfiVersion(void) {
|
int getRusEfiVersion(void) {
|
||||||
return 20141002;
|
return 20141003;
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,6 +21,8 @@
|
||||||
|
|
||||||
#include "test_fuel_map.h"
|
#include "test_fuel_map.h"
|
||||||
#include "fuel_math.h"
|
#include "fuel_math.h"
|
||||||
|
#include "test_logic_expression.h"
|
||||||
|
#include "engine_configuration.h"
|
||||||
|
|
||||||
extern "C"
|
extern "C"
|
||||||
{
|
{
|
||||||
|
@ -29,7 +31,6 @@ extern "C"
|
||||||
#include "test_event_registry.h"
|
#include "test_event_registry.h"
|
||||||
#include "test_signal_executor.h"
|
#include "test_signal_executor.h"
|
||||||
#include "test_util.h"
|
#include "test_util.h"
|
||||||
#include "engine_configuration.h"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "engine_math.h"
|
#include "engine_math.h"
|
||||||
|
@ -95,6 +96,7 @@ static engine_configuration2_s ec2;
|
||||||
engine_configuration2_s *engineConfiguration2 = &ec2;
|
engine_configuration2_s *engineConfiguration2 = &ec2;
|
||||||
|
|
||||||
int main(void) {
|
int main(void) {
|
||||||
|
testLogicExpressions();
|
||||||
testOverflow64Counter();
|
testOverflow64Counter();
|
||||||
testInterpolate3d();
|
testInterpolate3d();
|
||||||
testFindIndex();
|
testFindIndex();
|
||||||
|
@ -130,7 +132,7 @@ int main(void) {
|
||||||
testFLStack();
|
testFLStack();
|
||||||
|
|
||||||
// resizeMap();
|
// resizeMap();
|
||||||
printf("Success 20131002\r\n");
|
printf("Success 20131003\r\n");
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,8 +9,28 @@
|
||||||
|
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "test_logic_expression.h"
|
#include "test_logic_expression.h"
|
||||||
|
#include "logic_expression.h"
|
||||||
|
|
||||||
void testLogicExpressions(void) {
|
void testLogicExpressions(void) {
|
||||||
|
printf("*************************************************** testLogicExpressions\r\n");
|
||||||
|
|
||||||
|
LECalculator c;
|
||||||
|
|
||||||
|
LEElement value1;
|
||||||
|
value1.init(LE_NUMERIC_VALUE, 123.0);
|
||||||
|
c.add(&value1);
|
||||||
|
|
||||||
|
assertEqualsM("123", 123.0, c.getValue());
|
||||||
|
|
||||||
|
|
||||||
|
LEElement value2;
|
||||||
|
value2.init(LE_NUMERIC_VALUE, 321.0);
|
||||||
|
c.add(&value2);
|
||||||
|
|
||||||
|
LEElement value3;
|
||||||
|
value3.init(LE_OPERATOR_AND);
|
||||||
|
c.add(&value3);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* fuel_pump = (time_since_boot < 4 seconds) OR (rpm > 0)
|
* fuel_pump = (time_since_boot < 4 seconds) OR (rpm > 0)
|
||||||
* fuel_pump = time_since_boot 4 less rpm 0 more OR
|
* fuel_pump = time_since_boot 4 less rpm 0 more OR
|
||||||
|
|
|
@ -311,6 +311,19 @@ void testFLStack(void) {
|
||||||
|
|
||||||
FLStack<int, 4> stack;
|
FLStack<int, 4> stack;
|
||||||
assertEquals(0, stack.size());
|
assertEquals(0, stack.size());
|
||||||
|
|
||||||
|
stack.push(123);
|
||||||
|
stack.push(234);
|
||||||
|
assertEquals(2, stack.size());
|
||||||
|
|
||||||
|
int v = stack.pop();
|
||||||
|
assertEquals(234, v);
|
||||||
|
assertEquals(1, stack.size());
|
||||||
|
|
||||||
|
v = stack.pop();
|
||||||
|
assertEquals(123, v);
|
||||||
|
assertEquals(0, stack.size());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void testMisc(void) {
|
void testMisc(void) {
|
||||||
|
|
Loading…
Reference in New Issue