blockDetailsLookup.c

Go to the documentation of this file.
00001 /*      blockDetailsLookup.c
00002 
00003         Copyright 2008 Fred Cooke
00004 
00005         This file is part of the FreeEMS project.
00006 
00007         FreeEMS software is free software: you can redistribute it and/or modify
00008         it under the terms of the GNU General Public License as published by
00009         the Free Software Foundation, either version 3 of the License, or
00010         (at your option) any later version.
00011 
00012         FreeEMS software is distributed in the hope that it will be useful,
00013         but WITHOUT ANY WARRANTY; without even the implied warranty of
00014         MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015         GNU General Public License for more details.
00016 
00017         You should have received a copy of the GNU General Public License
00018         along with any FreeEMS software.  If not, see <http://www.gnu.org/licenses/>.
00019 
00020         We ask that if you make any changes to this file you send them upstream to us at admin@diyefi.org
00021 
00022         Thank you for choosing FreeEMS to run your engine! */
00023 
00024 #define BLOCK_DETAILS_LOOKUP_C
00025 #include "inc/freeEMS.h"
00026 #include "inc/interrupts.h"
00027 #include "inc/blockDetailsLookup.h"
00028 
00029 
00030 /* Flash only blocks leave the ram address and page values       */
00031 /* set to zero. ID's that don't exist leave all set to zero. */
00032 /* Error handling is to be done externally based on that.        */
00033 void lookupBlockDetails(unsigned short locationID, blockDetails* details){
00034         /* Initialise the four values needed for operations on memory at 0 for error checking */
00035         details->RAMPage = 0;
00036         details->FlashPage = 0;
00037         details->RAMAddress = 0;
00038         details->FlashAddress = 0;
00039 
00040         /* Initialise the block size to 1024 to save code space and increase readability */
00041         details->size = MAINTABLE_SIZE;
00042 
00043         /* Look up the locations and set non default sizes */
00044         switch (locationID) {
00045         /* flash only fixed conf full blocks */
00046         case FixedConfig1LocationID:
00047                 details->FlashPage = PPAGE;
00048                 details->FlashAddress = (void*)&fixedConfigs1;
00049                 break;
00050         case FixedConfig2LocationID:
00051                 details->FlashPage = PPAGE;
00052                 details->FlashAddress = (void*)&fixedConfigs2;
00053                 break;
00054 
00055         /* lookup tables */
00056         case IATTransferTableLocationID:
00057                 details->size = TransferTableSize;
00058                 details->FlashPage = LOOKUP_PPAGE;
00059                 details->FlashAddress = IATTransferTableLocation;
00060                 break;
00061         case CHTTransferTableLocationID:
00062                 details->size = TransferTableSize;
00063                 details->FlashPage = LOOKUP_PPAGE;
00064                 details->FlashAddress = CHTTransferTableLocation;
00065                 break;
00066         case MAFTransferTableLocationID:
00067                 details->size = TransferTableSize;
00068                 details->FlashPage = LOOKUP_PPAGE;
00069                 details->FlashAddress = MAFTransferTableLocation;
00070                 break;
00071         case TestTransferTableLocationID:
00072                 details->size = TransferTableSize;
00073                 details->FlashPage = LOOKUP_PPAGE;
00074                 details->FlashAddress = TestTransferTableLocation;
00075                 break;
00076 
00077         /* fuel tables */
00078         case VETableMainLocationID:
00079                 details->RAMPage = RPAGE_FUEL_ONE;
00080                 details->FlashPage = FUELTABLES_PPAGE;
00081                 details->RAMAddress = (void*)&TablesA;
00082                 details->FlashAddress = VETableMainFlashLocation;
00083                 break;
00084         case VETableMain2LocationID:
00085                 details->RAMPage = RPAGE_FUEL_TWO;
00086                 details->FlashPage = FUELTABLES_PPAGE;
00087                 details->RAMAddress = (void*)&TablesA;
00088                 details->FlashAddress = VETableMainFlash2Location;
00089                 break;
00090         case VETableSecondaryLocationID:
00091                 details->RAMPage = RPAGE_FUEL_ONE;
00092                 details->FlashPage = FUELTABLES_PPAGE;
00093                 details->RAMAddress = (void*)&TablesB;
00094                 details->FlashAddress = VETableSecondaryFlashLocation;
00095                 break;
00096         case VETableSecondary2LocationID:
00097                 details->RAMPage = RPAGE_FUEL_TWO;
00098                 details->FlashPage = FUELTABLES_PPAGE;
00099                 details->RAMAddress = (void*)&TablesB;
00100                 details->FlashAddress = VETableSecondaryFlash2Location;
00101                 break;
00102         case VETableTertiaryLocationID:
00103                 details->RAMPage = RPAGE_FUEL_ONE;
00104                 details->FlashPage = FUELTABLES_PPAGE;
00105                 details->RAMAddress = (void*)&TablesC;
00106                 details->FlashAddress = VETableTertiaryFlashLocation;
00107                 break;
00108         case VETableTertiary2LocationID:
00109                 details->RAMPage = RPAGE_FUEL_TWO;
00110                 details->FlashPage = FUELTABLES_PPAGE;
00111                 details->RAMAddress = (void*)&TablesC;
00112                 details->FlashAddress = VETableTertiaryFlash2Location;
00113                 break;
00114         case LambdaTableLocationID:
00115                 details->RAMPage = RPAGE_FUEL_ONE;
00116                 details->FlashPage = FUELTABLES_PPAGE;
00117                 details->RAMAddress = (void*)&TablesD;
00118                 details->FlashAddress = LambdaTableFlashLocation;
00119                 break;
00120         case LambdaTable2LocationID:
00121                 details->RAMPage = RPAGE_FUEL_TWO;
00122                 details->FlashPage = FUELTABLES_PPAGE;
00123                 details->RAMAddress = (void*)&TablesD;
00124                 details->FlashAddress = LambdaTableFlash2Location;
00125                 break;
00126 
00127         /* timing tables */
00128         case IgnitionAdvanceTableMainLocationID:
00129                 details->RAMPage = RPAGE_TIME_ONE;
00130                 details->FlashPage = TIMETABLES_PPAGE;
00131                 details->RAMAddress = (void*)&TablesA;
00132                 details->FlashAddress = IgnitionAdvanceTableMainFlashLocation;
00133                 break;
00134         case IgnitionAdvanceTableMain2LocationID:
00135                 details->RAMPage = RPAGE_TIME_TWO;
00136                 details->FlashPage = TIMETABLES_PPAGE;
00137                 details->RAMAddress = (void*)&TablesA;
00138                 details->FlashAddress = IgnitionAdvanceTableMainFlash2Location;
00139                 break;
00140         case IgnitionAdvanceTableSecondaryLocationID:
00141                 details->RAMPage = RPAGE_TIME_ONE;
00142                 details->FlashPage = TIMETABLES_PPAGE;
00143                 details->RAMAddress = (void*)&TablesB;
00144                 details->FlashAddress = IgnitionAdvanceTableSecondaryFlashLocation;
00145                 break;
00146         case IgnitionAdvanceTableSecondary2LocationID:
00147                 details->RAMPage = RPAGE_TIME_TWO;
00148                 details->FlashPage = TIMETABLES_PPAGE;
00149                 details->RAMAddress = (void*)&TablesB;
00150                 details->FlashAddress = IgnitionAdvanceTableSecondaryFlash2Location;
00151                 break;
00152         case InjectionAdvanceTableMainLocationID:
00153                 details->RAMPage = RPAGE_TIME_ONE;
00154                 details->FlashPage = TIMETABLES_PPAGE;
00155                 details->RAMAddress = (void*)&TablesC;
00156                 details->FlashAddress = InjectionAdvanceTableMainFlashLocation;
00157                 break;
00158         case InjectionAdvanceTableMain2LocationID:
00159                 details->RAMPage = RPAGE_TIME_TWO;
00160                 details->FlashPage = TIMETABLES_PPAGE;
00161                 details->RAMAddress = (void*)&TablesC;
00162                 details->FlashAddress = InjectionAdvanceTableMainFlash2Location;
00163                 break;
00164         case InjectionAdvanceTableSecondaryLocationID:
00165                 details->RAMPage = RPAGE_TIME_ONE;
00166                 details->FlashPage = TIMETABLES_PPAGE;
00167                 details->RAMAddress = (void*)&TablesD;
00168                 details->FlashAddress = InjectionAdvanceTableSecondaryFlashLocation;
00169                 break;
00170         case InjectionAdvanceTableSecondary2LocationID:
00171                 details->RAMPage = RPAGE_TIME_TWO;
00172                 details->FlashPage = TIMETABLES_PPAGE;
00173                 details->RAMAddress = (void*)&TablesD;
00174                 details->FlashAddress = InjectionAdvanceTableSecondaryFlash2Location;
00175                 break;
00176 
00177         /* small table full blocks */
00178         case SmallTablesALocationID:
00179                 details->RAMPage = RPAGE_TUNE_ONE;
00180                 details->FlashPage = TUNETABLES_PPAGE;
00181                 details->RAMAddress = (void*)&TablesA;
00182                 details->FlashAddress = SmallTablesAFlashLocation;
00183                 break;
00184         case SmallTablesA2LocationID:
00185                 details->RAMPage = RPAGE_TUNE_TWO;
00186                 details->FlashPage = TUNETABLES_PPAGE;
00187                 details->RAMAddress = (void*)&TablesA;
00188                 details->FlashAddress = SmallTablesAFlash2Location;
00189                 break;
00190         case SmallTablesBLocationID:
00191                 details->RAMPage = RPAGE_TUNE_ONE;
00192                 details->FlashPage = TUNETABLES_PPAGE;
00193                 details->RAMAddress = (void*)&TablesB;
00194                 details->FlashAddress = SmallTablesBFlashLocation;
00195                 break;
00196         case SmallTablesB2LocationID:
00197                 details->RAMPage = RPAGE_TUNE_TWO;
00198                 details->FlashPage = TUNETABLES_PPAGE;
00199                 details->RAMAddress = (void*)&TablesB;
00200                 details->FlashAddress = SmallTablesBFlash2Location;
00201                 break;
00202         case SmallTablesCLocationID:
00203                 details->RAMPage = RPAGE_TUNE_ONE;
00204                 details->FlashPage = TUNETABLES_PPAGE;
00205                 details->RAMAddress = (void*)&TablesC;
00206                 details->FlashAddress = SmallTablesCFlashLocation;
00207                 break;
00208         case SmallTablesC2LocationID:
00209                 details->RAMPage = RPAGE_TUNE_TWO;
00210                 details->FlashPage = TUNETABLES_PPAGE;
00211                 details->RAMAddress = (void*)&TablesC;
00212                 details->FlashAddress = SmallTablesCFlash2Location;
00213                 break;
00214         case SmallTablesDLocationID:
00215                 details->RAMPage = RPAGE_TUNE_ONE;
00216                 details->FlashPage = TUNETABLES_PPAGE;
00217                 details->RAMAddress = (void*)&TablesD;
00218                 details->FlashAddress = SmallTablesDFlashLocation;
00219                 break;
00220         case SmallTablesD2LocationID:
00221                 details->RAMPage = RPAGE_TUNE_TWO;
00222                 details->FlashPage = TUNETABLES_PPAGE;
00223                 details->RAMAddress = (void*)&TablesD;
00224                 details->FlashAddress = SmallTablesDFlash2Location;
00225                 break;
00226 
00227         /* TablesA small tables */
00228         case dwellDesiredVersusVoltageTableLocationID:
00229                 details->size = TWODTABLEUS_SIZE;
00230                 details->RAMPage = RPAGE_TUNE_ONE;
00231                 details->FlashPage = TUNETABLES_PPAGE;
00232                 details->RAMAddress = (void*)&TablesA.SmallTablesA.dwellDesiredVersusVoltageTable;
00233                 //details->FlashAddress = FlashLocation;
00234                 break;
00235         case dwellDesiredVersusVoltageTable2LocationID:
00236                 details->size = TWODTABLEUS_SIZE;
00237                 details->RAMPage = RPAGE_TUNE_TWO;
00238                 details->FlashPage = TUNETABLES_PPAGE;
00239                 details->RAMAddress = (void*)&TablesA.SmallTablesA.dwellDesiredVersusVoltageTable;
00240                 //details->FlashAddress = FlashLocation;
00241                 break;
00242         case injectorDeadTimeTableLocationID:
00243                 details->size = TWODTABLEUS_SIZE;
00244                 details->RAMPage = RPAGE_TUNE_ONE;
00245                 details->FlashPage = TUNETABLES_PPAGE;
00246                 details->RAMAddress = (void*)&TablesA.SmallTablesA.injectorDeadTimeTable;
00247                 //details->FlashAddress = FlashLocation;
00248                 break;
00249         case injectorDeadTimeTable2LocationID:
00250                 details->size = TWODTABLEUS_SIZE;
00251                 details->RAMPage = RPAGE_TUNE_TWO;
00252                 details->FlashPage = TUNETABLES_PPAGE;
00253                 details->RAMAddress = (void*)&TablesA.SmallTablesA.injectorDeadTimeTable;
00254                 //details->FlashAddress = FlashLocation;
00255                 break;
00256         case postStartEnrichmentTableLocationID:
00257                 details->size = TWODTABLEUS_SIZE;
00258                 details->RAMPage = RPAGE_TUNE_ONE;
00259                 details->FlashPage = TUNETABLES_PPAGE;
00260                 details->RAMAddress = (void*)&TablesA.SmallTablesA.postStartEnrichmentTable;
00261                 //details->FlashAddress = FlashLocation;
00262                 break;
00263         case postStartEnrichmentTable2LocationID:
00264                 details->size = TWODTABLEUS_SIZE;
00265                 details->RAMPage = RPAGE_TUNE_TWO;
00266                 details->FlashPage = TUNETABLES_PPAGE;
00267                 details->RAMAddress = (void*)&TablesA.SmallTablesA.postStartEnrichmentTable;
00268                 //details->FlashAddress = FlashLocation;
00269                 break;
00270         case engineTempEnrichmentTableFixedLocationID:
00271                 details->size = TWODTABLEUS_SIZE;
00272                 details->RAMPage = RPAGE_TUNE_ONE;
00273                 details->FlashPage = TUNETABLES_PPAGE;
00274                 details->RAMAddress = (void*)&TablesA.SmallTablesA.engineTempEnrichmentTableFixed;
00275                 //details->FlashAddress = FlashLocation;
00276                 break;
00277         case engineTempEnrichmentTableFixed2LocationID:
00278                 details->size = TWODTABLEUS_SIZE;
00279                 details->RAMPage = RPAGE_TUNE_TWO;
00280                 details->FlashPage = TUNETABLES_PPAGE;
00281                 details->RAMAddress = (void*)&TablesA.SmallTablesA.engineTempEnrichmentTableFixed;
00282                 //details->FlashAddress = FlashLocation;
00283                 break;
00284         case primingVolumeTableLocationID:
00285                 details->size = TWODTABLEUS_SIZE;
00286                 details->RAMPage = RPAGE_TUNE_ONE;
00287                 details->FlashPage = TUNETABLES_PPAGE;
00288                 details->RAMAddress = (void*)&TablesA.SmallTablesA.primingVolumeTable;
00289                 //details->FlashAddress = FlashLocation;
00290                 break;
00291         case primingVolumeTable2LocationID:
00292                 details->size = TWODTABLEUS_SIZE;
00293                 details->RAMPage = RPAGE_TUNE_TWO;
00294                 details->FlashPage = TUNETABLES_PPAGE;
00295                 details->RAMAddress = (void*)&TablesA.SmallTablesA.primingVolumeTable;
00296                 //details->FlashAddress = FlashLocation;
00297                 break;
00298         case engineTempEnrichmentTablePercentLocationID:
00299                 details->size = TWODTABLEUS_SIZE;
00300                 details->RAMPage = RPAGE_TUNE_ONE;
00301                 details->FlashPage = TUNETABLES_PPAGE;
00302                 details->RAMAddress = (void*)&TablesA.SmallTablesA.engineTempEnrichmentTablePercent;
00303                 //details->FlashAddress = FlashLocation;
00304                 break;
00305         case engineTempEnrichmentTablePercent2LocationID:
00306                 details->size = TWODTABLEUS_SIZE;
00307                 details->RAMPage = RPAGE_TUNE_TWO;
00308                 details->FlashPage = TUNETABLES_PPAGE;
00309                 details->RAMAddress = (void*)&TablesA.SmallTablesA.engineTempEnrichmentTablePercent;
00310                 //details->FlashAddress = FlashLocation;
00311                 break;
00312         case dwellMaxVersusRPMTableLocationID:
00313                 details->size = TWODTABLEUS_SIZE;
00314                 details->RAMPage = RPAGE_TUNE_ONE;
00315                 details->FlashPage = TUNETABLES_PPAGE;
00316                 details->RAMAddress = (void*)&TablesA.SmallTablesA.dwellMaxVersusRPMTable;
00317                 //details->FlashAddress = FlashLocation;
00318                 break;
00319         case dwellMaxVersusRPMTable2LocationID:
00320                 details->size = TWODTABLEUS_SIZE;
00321                 details->RAMPage = RPAGE_TUNE_TWO;
00322                 details->FlashPage = TUNETABLES_PPAGE;
00323                 details->RAMAddress = (void*)&TablesA.SmallTablesA.dwellMaxVersusRPMTable;
00324                 //details->FlashAddress = FlashLocation;
00325                 break;
00326 
00327         /* TablesB small tables */
00328         case perCylinderFuelTrimsLocationID:
00329                 details->size = 12;
00330                 details->RAMPage = RPAGE_TUNE_ONE;
00331                 details->FlashPage = TUNETABLES_PPAGE;
00332                 details->RAMAddress = (void*)&TablesB.SmallTablesB.perCylinderFuelTrims;
00333                 //details->FlashAddress = FlashLocation;
00334                 break;
00335         case perCylinderFuelTrims2LocationID:
00336                 details->size = 12;
00337                 details->RAMPage = RPAGE_TUNE_TWO;
00338                 details->FlashPage = TUNETABLES_PPAGE;
00339                 details->RAMAddress = (void*)&TablesB.SmallTablesB.perCylinderFuelTrims;
00340                 //details->FlashAddress = FlashLocation;
00341                 break;
00342 
00343         /* TablesC small tables */
00344                 // TODO
00345 
00346         /* TablesD small tables */
00347                 // TODO
00348 
00349         /* filler block entries */
00350         case fillerALocationID:
00351                 details->size = 576;
00352                 details->RAMPage = RPAGE_TUNE_ONE;
00353                 details->FlashPage = TUNETABLES_PPAGE;
00354                 details->RAMAddress = (void*)&TablesA.SmallTablesA.filler;
00355                 //details->FlashAddress = FlashLocation;
00356                 break;
00357         case fillerA2LocationID:
00358                 details->size = 576;
00359                 details->RAMPage = RPAGE_TUNE_TWO;
00360                 details->FlashPage = TUNETABLES_PPAGE;
00361                 details->RAMAddress = (void*)&TablesA.SmallTablesA.filler;
00362                 //details->FlashAddress = FlashLocation;
00363                 break;
00364         case fillerBLocationID:
00365                 details->size = 1012;
00366                 details->RAMPage = RPAGE_TUNE_ONE;
00367                 details->FlashPage = TUNETABLES_PPAGE;
00368                 details->RAMAddress = (void*)&TablesB.SmallTablesB.filler;
00369                 //details->FlashAddress = FlashLocation;
00370                 break;
00371         case fillerB2LocationID:
00372                 details->size = 1012;
00373                 details->RAMPage = RPAGE_TUNE_TWO;
00374                 details->FlashPage = TUNETABLES_PPAGE;
00375                 details->RAMAddress = (void*)&TablesB.SmallTablesB.filler;
00376                 //details->FlashAddress = FlashLocation;
00377                 break;
00378         case fillerCLocationID:
00379                 details->size = 1024;
00380                 details->RAMPage = RPAGE_TUNE_ONE;
00381                 details->FlashPage = TUNETABLES_PPAGE;
00382                 details->RAMAddress = (void*)&TablesC.SmallTablesC.filler;
00383                 //details->FlashAddress = FlashLocation;
00384                 break;
00385         case fillerC2LocationID:
00386                 details->size = 1024;
00387                 details->RAMPage = RPAGE_TUNE_TWO;
00388                 details->FlashPage = TUNETABLES_PPAGE;
00389                 details->RAMAddress = (void*)&TablesC.SmallTablesC.filler;
00390                 //details->FlashAddress = FlashLocation;
00391                 break;
00392         case fillerDLocationID:
00393                 details->size = 1024;
00394                 details->RAMPage = RPAGE_TUNE_ONE;
00395                 details->FlashPage = TUNETABLES_PPAGE;
00396                 details->RAMAddress = (void*)&TablesD.SmallTablesD.filler;
00397                 //details->FlashAddress = FlashLocation;
00398                 break;
00399 
00400         case fillerD2LocationID:
00401                 details->size = 1024;
00402                 details->RAMPage = RPAGE_TUNE_TWO;
00403                 details->FlashPage = TUNETABLES_PPAGE;
00404                 details->RAMAddress = (void*)&TablesD.SmallTablesD.filler;
00405                 //details->FlashAddress = FlashLocation;
00406                 break;
00407         }
00408 }

Generated on Mon Dec 22 21:29:17 2008 for freeems by  doxygen 1.5.2