Subversion Repositories EDIS_Ignition

Rev

Rev 10 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 10 Rev 11
Line 1... Line 1...
1
 
1
 
2
 
2
 
3
#include "saveTiming.h"
3
#include "saveTiming.h"
4
 
4
 
5
#include "nvram.h"
5
#include "nvram.h"
-
 
6
#include "main.h"
6
 
7
 
7
#include "libIgnTiming/timing.H"
8
#include "libIgnTiming/timing.H"
8
 
9
 
9
// define tags for items
10
// define tags for items
10
static const uint8_t TIMING_OFFSET_TAG = 1; // timing offset tag
11
static const uint8_t TIMING_OFFSET_TAG = 1; // timing offset tag
Line 55... Line 56...
55
        setTimingAdjust(found->data.val);
56
        setTimingAdjust(found->data.val);
56
    else
57
    else
57
        missingData = 1;
58
        missingData = 1;
58
 
59
 
59
    // load in timing map column heading values
60
    // load in timing map column heading values
60
    for (int i = 0; i < MAX_TIMING_POINTS; i++)
61
    for (int i = 0; i < MAX_RPM_POINTS; i++)
61
    {
62
    {
62
        uint16_t val;
63
        uint16_t val;
63
        uint8_t found = load_uint16_t(TIMING_LOW_TAG + i, &val);
64
        uint8_t found = load_uint16_t(TIMING_LOW_TAG + i, &val);
64
        if (found)
65
        if (found)
65
            setRpmMap(i, val);
66
            setRpmMap(i, val);
Line 79... Line 80...
79
    }
80
    }
80
 
81
 
81
    for (int i = 0; i < MAX_VACUUM_POINTS; i++)
82
    for (int i = 0; i < MAX_VACUUM_POINTS; i++)
82
    {
83
    {
83
        uint8_t tag_base = i * MAP_ROW_OFFSET + MAP_BASE_TAG;
84
        uint8_t tag_base = i * MAP_ROW_OFFSET + MAP_BASE_TAG;
84
        for (int j = 0; j < MAX_TIMING_POINTS; j++)
85
        for (int j = 0; j < MAX_RPM_POINTS; j++)
85
        {
86
        {
86
            found = find_nvram_data(tag_base + j);
87
            found = find_nvram_data(tag_base + j);
87
            if (found)
88
            if (found)
88
                setTiming(i, j, found->data.val);
89
                setTiming(i, j, found->data.val);
89
            else
90
            else
Line 93... Line 94...
93
 
94
 
94
    if (missingData)
95
    if (missingData)
95
        saveTimingInfoToNvram();
96
        saveTimingInfoToNvram();
96
}
97
}
97
 
98
 
98
/// @brief Save timing info to NVRAM
99
/// @brief Save timing info to NVRAM : this relies on the 
99
void saveTimingInfoToNvram()
100
void saveTimingInfoToNvram()
100
{
101
{
101
    nvram_info_t info;
102
    nvram_info_t info;
102
    info.data.tag = TIMING_OFFSET_TAG;
103
    info.data.tag = TIMING_OFFSET_TAG;
103
    info.data.val = getTimingAdjust();
104
    info.data.val = getTimingAdjust();
-
 
105
    watchdogWrite();
104
    write_nvram_data(info);
106
    write_nvram_data(info);
105
 
107
 
106
       // load in timing map column heading values
108
       // load in timing map column heading values
107
    for (int i = 0; i < MAX_TIMING_POINTS; i++)
109
    for (int i = 0; i < MAX_RPM_POINTS; i++)
108
    {
110
    {
109
        uint16_t val = getRpmMap(i);
111
        uint16_t val = getRpmMap(i);
110
        save_uint16_t(TIMING_LOW_TAG + i, val);
112
        save_uint16_t(TIMING_LOW_TAG + i, val);
111
    }
113
    }
112
 
114
 
113
    // load in vacuum map row heading values
115
    // load in vacuum map row heading values
114
    for (int i = 0; i < MAX_VACUUM_POINTS; i++)
116
    for (int i = 0; i < MAX_VACUUM_POINTS; i++)
115
    {
117
    {
116
        uint16_t val = getVacuumMap(i);
118
        uint16_t val = getVacuumMap(i);
-
 
119
        watchdogWrite();
117
        save_uint16_t(VACUUM_LOW_TAG + i, val);
120
        save_uint16_t(VACUUM_LOW_TAG + i, val);
118
    }
121
    }
119
 
122
 
120
    // save all the data values 
123
    // save all the data values 
121
    for (int i = 0; i < MAX_VACUUM_POINTS; i++)
124
    for (int i = 0; i < MAX_VACUUM_POINTS; i++)
122
    {
125
    {
123
        uint8_t tag_base = i * MAP_ROW_OFFSET+MAP_BASE_TAG;
126
        uint8_t tag_base = i * MAP_ROW_OFFSET+MAP_BASE_TAG;
124
        for (int j = 0; j < MAX_TIMING_POINTS; j++)
127
        for (int j = 0; j < MAX_RPM_POINTS; j++)
125
        {
128
        {
126
            info.data.val = getTiming(i,j);
129
            info.data.val = getTiming(i,j);
127
            info.data.tag = tag_base + j;
130
            info.data.tag = tag_base + j;
-
 
131
            watchdogWrite();
128
            write_nvram_data(info);
132
            write_nvram_data(info);
129
           
133
           
130
        }
134
        }
131
    }
135
    }
132
}
136
}
133
137