rusEFI
The most advanced open source ECU
Loading...
Searching...
No Matches
script_impl.cpp
Go to the documentation of this file.
1/**
2 * @file script_impl.cpp
3 *
4 * @date Oct 5, 2014
5 * @author Andrey Belomutskiy, (c) 2012-2020
6 */
7
8#include "pch.h"
9
10#include "script_impl.h"
11
12using namespace rusefi::stringutil;
13
18
20 switch (index) {
21 default:
22 return &scriptTable1;
23 case 1:
24 return &scriptTable2;
25 case 2:
26 return &scriptTable3;
27 case 3:
28 return &scriptTable4;
29 }
30}
31
32// todo: template this copy-pasta
33/**
34 * @return zero-based index of curve with given name
35 */
36expected<int> getCurveIndexByName(const char *name) {
37 for (int i = 0;i<SCRIPT_CURVE_COUNT;i++) {
38 if (strEqualCaseInsensitive(name, engineConfiguration->scriptCurveName[i])) {
39 return i;
40 }
41 }
42
43 return unexpected;
44}
45
46expected<int> getTableIndexByName(const char *name) {
47 for (int i = 0;i<SCRIPT_TABLE_COUNT;i++) {
48 if (strEqualCaseInsensitive(name, engineConfiguration->scriptTableName[i])) {
49 return i;
50 }
51 }
52
53 return unexpected;
54}
55
56expected<int> getSettingIndexByName(const char *name) {
57 for (int i = 0;i<SCRIPT_SETTING_COUNT;i++) {
58 if (strEqualCaseInsensitive(name, engineConfiguration->scriptSettingName[i])) {
59 return i;
60 }
61 }
62
63 return unexpected;
64}
65
66float getCurveValue(int index, float key) {
67 // not great code at all :(
68 switch (index) {
69 default:
70 return interpolate2d(key, config->scriptCurve1Bins, config->scriptCurve1);
71 case 1:
72 return interpolate2d(key, config->scriptCurve2Bins, config->scriptCurve2);
73 case 2:
74 return interpolate2d(key, config->scriptCurve3Bins, config->scriptCurve3);
75 case 3:
76 return interpolate2d(key, config->scriptCurve4Bins, config->scriptCurve4);
77 case 4:
78 return interpolate2d(key, config->scriptCurve5Bins, config->scriptCurve5);
79 case 5:
80 return interpolate2d(key, config->scriptCurve6Bins, config->scriptCurve6);
81 }
82}
83
void initTable(TValueInit(&table)[TRowNum][TColNum], const TXColumnInit(&columnBins)[TColNum], const TRowInit(&rowBins)[TRowNum])
static constexpr persistent_config_s * config
static constexpr engine_configuration_s * engineConfiguration
float getCurveValue(int index, float key)
ValueProvider3D * getscriptTable(int index)
static script4_Map3D_u8t scriptTable4
static script1_Map3D_f32t scriptTable1
expected< int > getSettingIndexByName(const char *name)
expected< int > getTableIndexByName(const char *name)
expected< int > getCurveIndexByName(const char *name)
static script2_Map3D_f32t scriptTable2
void initScriptImpl()
static script3_Map3D_u8t scriptTable3
uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]
float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]