Files
hpsg5-controller_v2-stm32g4/Core/Phi/phi_cal_tables.c

261 lines
24 KiB
C

/**
* @file phi_cal_tables.c
* @brief T06211 compact-port calibration data (auto-generated).
*
* AUTO-GENERATED by tools/extract_t06211_cal.py
* Source ROM: rom_eeprom_dump_0000-9FFF_504012.bin
* Bases: RWA4 = 0x9BD8, RWC6 = 0x7D0E
*
* DO NOT EDIT -- regenerate with:
* python tools/extract_t06211_cal.py --target compact
*/
#include <stddef.h>
#include "phi.h"
/* ======================================================================
* Accel axes + data tables (file-local; expose only phi_t06211_cal).
* Angle accumulator axes + 3-D table (FUN_722e producer chain).
* ====================================================================== */
/* Accel RPM axis -- 7 words @ 0x9D38. */
static const int16_t phi_accel_axis_rpm[7] = {
(int16_t)0x4B5E, (int16_t)0x3127, (int16_t)0x16F0, (int16_t)0x1206, (int16_t)0x09D5, (int16_t)0x068E, (int16_t)0x0000
};
/* Accel inj_qty_demand axis -- 6 words @ 0x9D46. */
static const int16_t phi_accel_axis_demand[6] = {
(int16_t)0x08C0, (int16_t)0x0640, (int16_t)0x0320, (int16_t)0x0280, (int16_t)0x01E0, (int16_t)0x0000
};
/* Accel temperature axis -- 5 words @ 0x9D52. */
static const int16_t phi_accel_axis_temp[5] = {
(int16_t)0x12F0, (int16_t)0x1250, (int16_t)0x1110, (int16_t)0x0FD0, (int16_t)0x0000
};
/* Accel 2-D combine (RPM x demand) -- 42 words @ 0x9D5C. */
static const int16_t phi_accel_combine_table[42] = {
(int16_t)0x0000, (int16_t)0x020A, (int16_t)0x052C, (int16_t)0x082A, (int16_t)0x082A, (int16_t)0x0000, (int16_t)0x0000, (int16_t)0x0000, (int16_t)0x020A, (int16_t)0x052C,
(int16_t)0x082A, (int16_t)0x082A, (int16_t)0x0000, (int16_t)0x0000, (int16_t)0x0000, (int16_t)0x020A, (int16_t)0x052C, (int16_t)0x082A, (int16_t)0x082A, (int16_t)0x0000,
(int16_t)0x0000, (int16_t)0x0000, (int16_t)0x020A, (int16_t)0x052C, (int16_t)0x082A, (int16_t)0x082A, (int16_t)0x0000, (int16_t)0x0000, (int16_t)0x0000, (int16_t)0x020A,
(int16_t)0x052C, (int16_t)0x082A, (int16_t)0x082A, (int16_t)0x0000, (int16_t)0x0000, (int16_t)0x0000, (int16_t)0x020A, (int16_t)0x052C, (int16_t)0x082A, (int16_t)0x082A,
(int16_t)0x0000, (int16_t)0x0000
};
/* Accel 1-D refine (temperature) -- 5 words @ 0x9DB0. */
static const int16_t phi_accel_refine_table[5] = {
(int16_t)0x00FF, (int16_t)0x00FF, (int16_t)0x00FF, (int16_t)0x00FF, (int16_t)0x00FF
};
/* Angle RPM axis -- 15 words @ 0x7D44. */
static const int16_t phi_angle_axis_rpm[15] = {
(int16_t)0x51EC, (int16_t)0x4D01, (int16_t)0x4817, (int16_t)0x4189, (int16_t)0x3AFB, (int16_t)0x346E, (int16_t)0x2DE0, (int16_t)0x2752, (int16_t)0x20C5, (int16_t)0x1A37,
(int16_t)0x13A9, (int16_t)0x0D1B, (int16_t)0x068E, (int16_t)0x0347, (int16_t)0x0000
};
/* Angle inj_qty_demand axis -- 15 words @ 0x7D62. */
static const int16_t phi_angle_axis_demand[15] = {
(int16_t)0x0C73, (int16_t)0x0A60, (int16_t)0x08D2, (int16_t)0x07C8, (int16_t)0x06BE, (int16_t)0x05B5, (int16_t)0x04AB, (int16_t)0x03A2, (int16_t)0x0298, (int16_t)0x018E,
(int16_t)0x010A, (int16_t)0x0085, (int16_t)0x0035, (int16_t)0x000D, (int16_t)0x0000
};
/* Angle angle_dec_cmd axis -- 3 words @ 0x7D80. */
static const int16_t phi_angle_axis_dec_cmd[3] = {
(int16_t)0x0300, (int16_t)0x01C4, (int16_t)0x0000
};
/* 3-D angle combine (RPM x demand x angle_dec_cmd) -- 675 words @ 0x7D86. */
static const int16_t phi_angle_3d_table[675] = {
(int16_t)0x0A88, (int16_t)0x0A45, (int16_t)0x09CC, (int16_t)0x0905, (int16_t)0x0943, (int16_t)0x0881, (int16_t)0x079F, (int16_t)0x074F, (int16_t)0x06C2, (int16_t)0x0665,
(int16_t)0x0532, (int16_t)0x04C3, (int16_t)0x03E6, (int16_t)0x036F, (int16_t)0x036F, (int16_t)0x0A88, (int16_t)0x0A45, (int16_t)0x09CC, (int16_t)0x0905, (int16_t)0x0943,
(int16_t)0x0881, (int16_t)0x079F, (int16_t)0x074F, (int16_t)0x06C2, (int16_t)0x0665, (int16_t)0x0532, (int16_t)0x043A, (int16_t)0x0365, (int16_t)0x02E1, (int16_t)0x02E1,
(int16_t)0x0A88, (int16_t)0x0A45, (int16_t)0x09CC, (int16_t)0x0905, (int16_t)0x0943, (int16_t)0x0881, (int16_t)0x079F, (int16_t)0x074F, (int16_t)0x06C2, (int16_t)0x05BE,
(int16_t)0x04B2, (int16_t)0x03D5, (int16_t)0x0309, (int16_t)0x028C, (int16_t)0x028C, (int16_t)0x0A88, (int16_t)0x0A45, (int16_t)0x09CC, (int16_t)0x0905, (int16_t)0x0943,
(int16_t)0x0881, (int16_t)0x079F, (int16_t)0x074F, (int16_t)0x064D, (int16_t)0x0558, (int16_t)0x045E, (int16_t)0x0392, (int16_t)0x02C9, (int16_t)0x0247, (int16_t)0x0247,
(int16_t)0x0A88, (int16_t)0x0A45, (int16_t)0x09CC, (int16_t)0x0905, (int16_t)0x0943, (int16_t)0x0881, (int16_t)0x079F, (int16_t)0x06AD, (int16_t)0x05CA, (int16_t)0x04EB,
(int16_t)0x040A, (int16_t)0x0351, (int16_t)0x029A, (int16_t)0x0214, (int16_t)0x0214, (int16_t)0x0A88, (int16_t)0x0A45, (int16_t)0x09CC, (int16_t)0x0905, (int16_t)0x083F,
(int16_t)0x0786, (int16_t)0x06D0, (int16_t)0x0600, (int16_t)0x053E, (int16_t)0x0485, (int16_t)0x03C1, (int16_t)0x0312, (int16_t)0x0250, (int16_t)0x01CF, (int16_t)0x01CF,
(int16_t)0x0990, (int16_t)0x0957, (int16_t)0x08DD, (int16_t)0x081E, (int16_t)0x075F, (int16_t)0x06C3, (int16_t)0x0624, (int16_t)0x056A, (int16_t)0x04AC, (int16_t)0x0413,
(int16_t)0x036E, (int16_t)0x02D8, (int16_t)0x020F, (int16_t)0x01AE, (int16_t)0x01AE, (int16_t)0x08DD, (int16_t)0x0866, (int16_t)0x07FD, (int16_t)0x075C, (int16_t)0x06C7,
(int16_t)0x0637, (int16_t)0x058C, (int16_t)0x04EB, (int16_t)0x043B, (int16_t)0x03A3, (int16_t)0x0314, (int16_t)0x029B, (int16_t)0x01D0, (int16_t)0x018C, (int16_t)0x018C,
(int16_t)0x0832, (int16_t)0x07A9, (int16_t)0x073F, (int16_t)0x06A6, (int16_t)0x0614, (int16_t)0x0579, (int16_t)0x0508, (int16_t)0x0477, (int16_t)0x03C9, (int16_t)0x0348,
(int16_t)0x02BF, (int16_t)0x024F, (int16_t)0x01A6, (int16_t)0x0165, (int16_t)0x0165, (int16_t)0x0798, (int16_t)0x0738, (int16_t)0x06CB, (int16_t)0x0643, (int16_t)0x05BB,
(int16_t)0x053B, (int16_t)0x04A5, (int16_t)0x042E, (int16_t)0x0389, (int16_t)0x0313, (int16_t)0x027C, (int16_t)0x0205, (int16_t)0x0175, (int16_t)0x014C, (int16_t)0x014C,
(int16_t)0x0721, (int16_t)0x06BA, (int16_t)0x0654, (int16_t)0x05DC, (int16_t)0x055F, (int16_t)0x04E0, (int16_t)0x0460, (int16_t)0x03C7, (int16_t)0x0346, (int16_t)0x02C8,
(int16_t)0x0242, (int16_t)0x01C9, (int16_t)0x013C, (int16_t)0x0125, (int16_t)0x0125, (int16_t)0x067F, (int16_t)0x061F, (int16_t)0x05C3, (int16_t)0x054B, (int16_t)0x04E7,
(int16_t)0x047A, (int16_t)0x0408, (int16_t)0x038D, (int16_t)0x0312, (int16_t)0x029D, (int16_t)0x0213, (int16_t)0x0192, (int16_t)0x0117, (int16_t)0x00FF, (int16_t)0x00FF,
(int16_t)0x064B, (int16_t)0x05E5, (int16_t)0x0590, (int16_t)0x0510, (int16_t)0x04AF, (int16_t)0x0436, (int16_t)0x03C4, (int16_t)0x0348, (int16_t)0x02DF, (int16_t)0x027F,
(int16_t)0x01F5, (int16_t)0x017B, (int16_t)0x0108, (int16_t)0x00E1, (int16_t)0x00E1, (int16_t)0x0618, (int16_t)0x05BA, (int16_t)0x0565, (int16_t)0x04EE, (int16_t)0x0472,
(int16_t)0x040B, (int16_t)0x0388, (int16_t)0x031E, (int16_t)0x02B4, (int16_t)0x025B, (int16_t)0x01E0, (int16_t)0x0166, (int16_t)0x00F7, (int16_t)0x00D0, (int16_t)0x00D0,
(int16_t)0x0000, (int16_t)0x0000, (int16_t)0x0000, (int16_t)0x0000, (int16_t)0x0000, (int16_t)0x0000, (int16_t)0x0000, (int16_t)0x0000, (int16_t)0x0000, (int16_t)0x0000,
(int16_t)0x0000, (int16_t)0x0000, (int16_t)0x0000, (int16_t)0x0003, (int16_t)0x0003, (int16_t)0x0B84, (int16_t)0x0B26, (int16_t)0x0BDB, (int16_t)0x0AE0, (int16_t)0x0AAE,
(int16_t)0x09F4, (int16_t)0x094A, (int16_t)0x0890, (int16_t)0x0805, (int16_t)0x07A5, (int16_t)0x0655, (int16_t)0x0545, (int16_t)0x048F, (int16_t)0x0436, (int16_t)0x0436,
(int16_t)0x0B84, (int16_t)0x0B26, (int16_t)0x0BDB, (int16_t)0x0AE0, (int16_t)0x0AAE, (int16_t)0x09F4, (int16_t)0x094A, (int16_t)0x0890, (int16_t)0x0805, (int16_t)0x06E2,
(int16_t)0x05C9, (int16_t)0x04CF, (int16_t)0x0417, (int16_t)0x03C7, (int16_t)0x03C7, (int16_t)0x0B84, (int16_t)0x0B26, (int16_t)0x0BDB, (int16_t)0x0AE0, (int16_t)0x0AAE,
(int16_t)0x09F4, (int16_t)0x094A, (int16_t)0x0890, (int16_t)0x077E, (int16_t)0x066B, (int16_t)0x0566, (int16_t)0x0480, (int16_t)0x03C4, (int16_t)0x0369, (int16_t)0x0369,
(int16_t)0x0B84, (int16_t)0x0B26, (int16_t)0x0BDB, (int16_t)0x0AE0, (int16_t)0x0AAE, (int16_t)0x09F4, (int16_t)0x08E8, (int16_t)0x080B, (int16_t)0x070C, (int16_t)0x060B,
(int16_t)0x051B, (int16_t)0x0440, (int16_t)0x0387, (int16_t)0x0325, (int16_t)0x0325, (int16_t)0x0B84, (int16_t)0x0B26, (int16_t)0x0BDB, (int16_t)0x0AE0, (int16_t)0x09F4,
(int16_t)0x0936, (int16_t)0x0843, (int16_t)0x076C, (int16_t)0x068E, (int16_t)0x05A0, (int16_t)0x04C9, (int16_t)0x0403, (int16_t)0x0350, (int16_t)0x02D8, (int16_t)0x02D8,
(int16_t)0x0B84, (int16_t)0x0B26, (int16_t)0x0AB2, (int16_t)0x09D7, (int16_t)0x0912, (int16_t)0x0851, (int16_t)0x0787, (int16_t)0x06BE, (int16_t)0x060A, (int16_t)0x053C,
(int16_t)0x0476, (int16_t)0x03BD, (int16_t)0x0316, (int16_t)0x0297, (int16_t)0x0297, (int16_t)0x0ADD, (int16_t)0x0A4E, (int16_t)0x09C4, (int16_t)0x0909, (int16_t)0x0853,
(int16_t)0x07A0, (int16_t)0x06DD, (int16_t)0x062B, (int16_t)0x0581, (int16_t)0x04DC, (int16_t)0x042A, (int16_t)0x038B, (int16_t)0x02E5, (int16_t)0x0269, (int16_t)0x0269,
(int16_t)0x09B2, (int16_t)0x0937, (int16_t)0x08BF, (int16_t)0x082F, (int16_t)0x0795, (int16_t)0x0702, (int16_t)0x0669, (int16_t)0x05B4, (int16_t)0x0509, (int16_t)0x0477,
(int16_t)0x03DA, (int16_t)0x0355, (int16_t)0x02A9, (int16_t)0x0246, (int16_t)0x0246, (int16_t)0x0929, (int16_t)0x08B8, (int16_t)0x0836, (int16_t)0x078A, (int16_t)0x06FC,
(int16_t)0x0670, (int16_t)0x05C4, (int16_t)0x053B, (int16_t)0x04A7, (int16_t)0x0418, (int16_t)0x038D, (int16_t)0x031D, (int16_t)0x026F, (int16_t)0x021D, (int16_t)0x021D,
(int16_t)0x0832, (int16_t)0x07BB, (int16_t)0x0754, (int16_t)0x06CB, (int16_t)0x0643, (int16_t)0x05DD, (int16_t)0x0549, (int16_t)0x04C3, (int16_t)0x0430, (int16_t)0x03AD,
(int16_t)0x0334, (int16_t)0x02C0, (int16_t)0x0234, (int16_t)0x01F5, (int16_t)0x01F5, (int16_t)0x07FF, (int16_t)0x077F, (int16_t)0x0725, (int16_t)0x0698, (int16_t)0x0611,
(int16_t)0x0594, (int16_t)0x0519, (int16_t)0x0491, (int16_t)0x040C, (int16_t)0x0392, (int16_t)0x030D, (int16_t)0x028D, (int16_t)0x0218, (int16_t)0x01EB, (int16_t)0x01EB,
(int16_t)0x07C3, (int16_t)0x0733, (int16_t)0x06CB, (int16_t)0x066B, (int16_t)0x05F0, (int16_t)0x056A, (int16_t)0x04F7, (int16_t)0x046B, (int16_t)0x03C6, (int16_t)0x0346,
(int16_t)0x02C6, (int16_t)0x024E, (int16_t)0x01FB, (int16_t)0x01DD, (int16_t)0x01DD, (int16_t)0x0790, (int16_t)0x070E, (int16_t)0x0698, (int16_t)0x061E, (int16_t)0x05B4,
(int16_t)0x052D, (int16_t)0x04B4, (int16_t)0x0440, (int16_t)0x03AE, (int16_t)0x0322, (int16_t)0x02AC, (int16_t)0x0230, (int16_t)0x01DD, (int16_t)0x01CD, (int16_t)0x01CD,
(int16_t)0x0754, (int16_t)0x06CB, (int16_t)0x066E, (int16_t)0x05E5, (int16_t)0x057B, (int16_t)0x04FB, (int16_t)0x0488, (int16_t)0x040D, (int16_t)0x0381, (int16_t)0x030B,
(int16_t)0x027E, (int16_t)0x020C, (int16_t)0x01BB, (int16_t)0x01B6, (int16_t)0x01B6, (int16_t)0x0000, (int16_t)0x0000, (int16_t)0x0000, (int16_t)0x0000, (int16_t)0x0000,
(int16_t)0x0000, (int16_t)0x0000, (int16_t)0x0000, (int16_t)0x0000, (int16_t)0x0000, (int16_t)0x0000, (int16_t)0x0000, (int16_t)0x0000, (int16_t)0x0003, (int16_t)0x0003,
(int16_t)0x0CA6, (int16_t)0x0CA6, (int16_t)0x0D83, (int16_t)0x0C7C, (int16_t)0x0B98, (int16_t)0x0B71, (int16_t)0x0A7A, (int16_t)0x0A0E, (int16_t)0x0913, (int16_t)0x080E,
(int16_t)0x0724, (int16_t)0x0636, (int16_t)0x0667, (int16_t)0x059D, (int16_t)0x059D, (int16_t)0x0CA6, (int16_t)0x0CA6, (int16_t)0x0D83, (int16_t)0x0C7C, (int16_t)0x0B98,
(int16_t)0x0B71, (int16_t)0x0A7A, (int16_t)0x0A0E, (int16_t)0x0913, (int16_t)0x080E, (int16_t)0x0724, (int16_t)0x0636, (int16_t)0x05E6, (int16_t)0x0527, (int16_t)0x0527,
(int16_t)0x0CA6, (int16_t)0x0CA6, (int16_t)0x0D83, (int16_t)0x0C7C, (int16_t)0x0B98, (int16_t)0x0B71, (int16_t)0x0A7A, (int16_t)0x0A0E, (int16_t)0x0913, (int16_t)0x080E,
(int16_t)0x0724, (int16_t)0x0636, (int16_t)0x0598, (int16_t)0x04DC, (int16_t)0x04DC, (int16_t)0x0CA6, (int16_t)0x0CA6, (int16_t)0x0D83, (int16_t)0x0C7C, (int16_t)0x0B98,
(int16_t)0x0B71, (int16_t)0x0A7A, (int16_t)0x0987, (int16_t)0x089F, (int16_t)0x07AC, (int16_t)0x06D6, (int16_t)0x05FD, (int16_t)0x0556, (int16_t)0x04AE, (int16_t)0x04AE,
(int16_t)0x0CA6, (int16_t)0x0CA6, (int16_t)0x0D83, (int16_t)0x0C7C, (int16_t)0x0B98, (int16_t)0x0ABC, (int16_t)0x09E0, (int16_t)0x0905, (int16_t)0x082C, (int16_t)0x0751,
(int16_t)0x068D, (int16_t)0x05C3, (int16_t)0x051B, (int16_t)0x048A, (int16_t)0x048A, (int16_t)0x0CA6, (int16_t)0x0CA6, (int16_t)0x0C36, (int16_t)0x0B72, (int16_t)0x0AAE,
(int16_t)0x09F6, (int16_t)0x093A, (int16_t)0x0879, (int16_t)0x07B5, (int16_t)0x06F1, (int16_t)0x063F, (int16_t)0x0589, (int16_t)0x04DE, (int16_t)0x045B, (int16_t)0x045B,
(int16_t)0x0C62, (int16_t)0x0BDD, (int16_t)0x0B57, (int16_t)0x0A9C, (int16_t)0x09EE, (int16_t)0x0943, (int16_t)0x0893, (int16_t)0x07EB, (int16_t)0x0741, (int16_t)0x0691,
(int16_t)0x05F6, (int16_t)0x0554, (int16_t)0x04A9, (int16_t)0x042C, (int16_t)0x042C, (int16_t)0x0B8C, (int16_t)0x0B19, (int16_t)0x0AA6, (int16_t)0x0A01, (int16_t)0x0953,
(int16_t)0x08AA, (int16_t)0x0806, (int16_t)0x0769, (int16_t)0x06D0, (int16_t)0x0635, (int16_t)0x05AB, (int16_t)0x0522, (int16_t)0x046D, (int16_t)0x03FF, (int16_t)0x03FF,
(int16_t)0x0B04, (int16_t)0x0A74, (int16_t)0x09E5, (int16_t)0x0959, (int16_t)0x08BC, (int16_t)0x081F, (int16_t)0x0780, (int16_t)0x06EE, (int16_t)0x065E, (int16_t)0x05C9,
(int16_t)0x056C, (int16_t)0x04E6, (int16_t)0x042D, (int16_t)0x03D2, (int16_t)0x03D2, (int16_t)0x09CD, (int16_t)0x0966, (int16_t)0x08FF, (int16_t)0x084B, (int16_t)0x07E2,
(int16_t)0x0775, (int16_t)0x06F2, (int16_t)0x066E, (int16_t)0x05F3, (int16_t)0x0579, (int16_t)0x050D, (int16_t)0x0481, (int16_t)0x03E8, (int16_t)0x03A4, (int16_t)0x03A4,
(int16_t)0x096E, (int16_t)0x08F9, (int16_t)0x0883, (int16_t)0x07F8, (int16_t)0x0785, (int16_t)0x0726, (int16_t)0x06BF, (int16_t)0x0642, (int16_t)0x05C8, (int16_t)0x0548,
(int16_t)0x04C9, (int16_t)0x0449, (int16_t)0x03C8, (int16_t)0x0394, (int16_t)0x0394, (int16_t)0x0921, (int16_t)0x08B2, (int16_t)0x0843, (int16_t)0x07A2, (int16_t)0x074E,
(int16_t)0x06C9, (int16_t)0x065E, (int16_t)0x05EC, (int16_t)0x056A, (int16_t)0x04F4, (int16_t)0x047A, (int16_t)0x0407, (int16_t)0x03A9, (int16_t)0x035B, (int16_t)0x035B,
(int16_t)0x0880, (int16_t)0x083A, (int16_t)0x07F4, (int16_t)0x077B, (int16_t)0x06F3, (int16_t)0x0699, (int16_t)0x060B, (int16_t)0x05B0, (int16_t)0x052C, (int16_t)0x04BF,
(int16_t)0x044C, (int16_t)0x03DB, (int16_t)0x0392, (int16_t)0x0338, (int16_t)0x0338, (int16_t)0x07FF, (int16_t)0x07CA, (int16_t)0x0794, (int16_t)0x074F, (int16_t)0x06D8,
(int16_t)0x067C, (int16_t)0x05E7, (int16_t)0x0587, (int16_t)0x0509, (int16_t)0x04A2, (int16_t)0x0437, (int16_t)0x03C6, (int16_t)0x0354, (int16_t)0x0327, (int16_t)0x0327,
(int16_t)0x0000, (int16_t)0x0000, (int16_t)0x0000, (int16_t)0x0000, (int16_t)0x0000, (int16_t)0x0000, (int16_t)0x0000, (int16_t)0x0000, (int16_t)0x0000, (int16_t)0x0000,
(int16_t)0x0000, (int16_t)0x0000, (int16_t)0x0000, (int16_t)0x0003, (int16_t)0x0003
};
/* 2-D angle-kick combine (RPM x demand) -- consumed by orphan FUN_5D58 @ 0x5D8D -- 225 words @ 0x82CC. */
static const int16_t phi_angle_2d_kick_table[225] = {
(int16_t)0x0B0D, (int16_t)0x0B0D, (int16_t)0x0CAD, (int16_t)0x0D73, (int16_t)0x0BFB, (int16_t)0x0B63, (int16_t)0x0A4B, (int16_t)0x08F7, (int16_t)0x085F, (int16_t)0x0720,
(int16_t)0x0838, (int16_t)0x0CEE, (int16_t)0x0616, (int16_t)0x05B2, (int16_t)0x05B2, (int16_t)0x0B0D, (int16_t)0x0B0D, (int16_t)0x0CAD, (int16_t)0x0D73, (int16_t)0x0BFB,
(int16_t)0x0B63, (int16_t)0x0A4B, (int16_t)0x08F7, (int16_t)0x085F, (int16_t)0x0720, (int16_t)0x0838, (int16_t)0x0CEE, (int16_t)0x0616, (int16_t)0x05B2, (int16_t)0x05B2,
(int16_t)0x0B0D, (int16_t)0x0B0D, (int16_t)0x0CAD, (int16_t)0x0D73, (int16_t)0x0BFB, (int16_t)0x0B63, (int16_t)0x0A4B, (int16_t)0x08F7, (int16_t)0x085F, (int16_t)0x0720,
(int16_t)0x0838, (int16_t)0x0CEE, (int16_t)0x0616, (int16_t)0x05B2, (int16_t)0x05B2, (int16_t)0x0B0D, (int16_t)0x0B0D, (int16_t)0x0CAD, (int16_t)0x0D73, (int16_t)0x0BFB,
(int16_t)0x0B63, (int16_t)0x0A4B, (int16_t)0x08F7, (int16_t)0x085F, (int16_t)0x0720, (int16_t)0x0838, (int16_t)0x0CEE, (int16_t)0x0616, (int16_t)0x05B2, (int16_t)0x05B2,
(int16_t)0x0B0D, (int16_t)0x0B0D, (int16_t)0x0CAD, (int16_t)0x0D73, (int16_t)0x0BFB, (int16_t)0x0B63, (int16_t)0x0A4B, (int16_t)0x08F7, (int16_t)0x085F, (int16_t)0x0720,
(int16_t)0x0838, (int16_t)0x0CEE, (int16_t)0x0616, (int16_t)0x05B2, (int16_t)0x05B2, (int16_t)0x0B0D, (int16_t)0x0B0D, (int16_t)0x0CAD, (int16_t)0x0B30, (int16_t)0x0AA5,
(int16_t)0x08BC, (int16_t)0x07E7, (int16_t)0x07E9, (int16_t)0x06A6, (int16_t)0x0613, (int16_t)0x0831, (int16_t)0x0CF2, (int16_t)0x04EB, (int16_t)0x05FE, (int16_t)0x05FE,
(int16_t)0x0686, (int16_t)0x0686, (int16_t)0x0632, (int16_t)0x0886, (int16_t)0x06A4, (int16_t)0x0661, (int16_t)0x05C9, (int16_t)0x04A3, (int16_t)0x0526, (int16_t)0x0525,
(int16_t)0x06B5, (int16_t)0x09CF, (int16_t)0x039E, (int16_t)0x04BA, (int16_t)0x04BA, (int16_t)0x0660, (int16_t)0x0660, (int16_t)0x05D3, (int16_t)0x067D, (int16_t)0x0572,
(int16_t)0x04B2, (int16_t)0x0495, (int16_t)0x032B, (int16_t)0x044F, (int16_t)0x0403, (int16_t)0x0579, (int16_t)0x06D7, (int16_t)0x0443, (int16_t)0x0431, (int16_t)0x0431,
(int16_t)0x05C5, (int16_t)0x05C5, (int16_t)0x0388, (int16_t)0x045D, (int16_t)0x048D, (int16_t)0x0427, (int16_t)0x0306, (int16_t)0x029E, (int16_t)0x0230, (int16_t)0x02D8,
(int16_t)0x055D, (int16_t)0x0397, (int16_t)0x031F, (int16_t)0x03BC, (int16_t)0x03BC, (int16_t)0x0235, (int16_t)0x0235, (int16_t)0x0423, (int16_t)0x0463, (int16_t)0x01B4,
(int16_t)0x0236, (int16_t)0x0371, (int16_t)0x01A1, (int16_t)0x0215, (int16_t)0x0274, (int16_t)0x025F, (int16_t)0x0255, (int16_t)0x0286, (int16_t)0x028E, (int16_t)0x028E,
(int16_t)0x0235, (int16_t)0x0235, (int16_t)0x0154, (int16_t)0x005D, (int16_t)0x02B8, (int16_t)0x004B, (int16_t)0x01A0, (int16_t)0x0134, (int16_t)0x0133, (int16_t)0x015B,
(int16_t)0x0152, (int16_t)0x022F, (int16_t)0x0202, (int16_t)0x0224, (int16_t)0x0224, (int16_t)0x0235, (int16_t)0x0235, (int16_t)0x0154, (int16_t)0x005D, (int16_t)0x02B8,
(int16_t)0x004B, (int16_t)0x01A0, (int16_t)0x0134, (int16_t)0x0133, (int16_t)0x015B, (int16_t)0x0152, (int16_t)0x022F, (int16_t)0x0202, (int16_t)0x0224, (int16_t)0x0224,
(int16_t)0x0235, (int16_t)0x0235, (int16_t)0x0154, (int16_t)0x005D, (int16_t)0x02B8, (int16_t)0x004B, (int16_t)0x01A0, (int16_t)0x0134, (int16_t)0x0133, (int16_t)0x015B,
(int16_t)0x0152, (int16_t)0x022F, (int16_t)0x0202, (int16_t)0x0224, (int16_t)0x0224, (int16_t)0x0235, (int16_t)0x0235, (int16_t)0x0154, (int16_t)0x005D, (int16_t)0x02B8,
(int16_t)0x004B, (int16_t)0x01A0, (int16_t)0x0134, (int16_t)0x0133, (int16_t)0x015B, (int16_t)0x0152, (int16_t)0x022F, (int16_t)0x0202, (int16_t)0x0224, (int16_t)0x0224,
(int16_t)0x0235, (int16_t)0x0235, (int16_t)0x0154, (int16_t)0x005D, (int16_t)0x02B8, (int16_t)0x004B, (int16_t)0x01A0, (int16_t)0x0134, (int16_t)0x0133, (int16_t)0x015B,
(int16_t)0x0152, (int16_t)0x022F, (int16_t)0x0202, (int16_t)0x0224, (int16_t)0x0224
};
/* ======================================================================
* Master calibration literal.
* ====================================================================== */
calibration_t phi_t06211_cal = {
/* RWA4-relative scalars (base 0x9BD8) */
.tein_nominal = (int16_t)0x0C28, /* CAL+0x1E @ 0x9BF6 -- tein_nominal — nominal TE_IN base added to tein_valve_fault_guard / tein_overtemp_guard (FUN_7453 0x747b) */
.cal_48 = (int16_t)0x04B0, /* CAL+0x48 @ 0x9C20 -- RW7A latch value when FUN_62a2 fires (0x62d8) */
.phi0 = (int16_t)0x0DAB, /* CAL+0x4C @ 0x9C24 -- phi0: base/initial angle. ROM addend baked into phi1 (= *(0x014e)) by FUN_6aaf (0x6ad2); FUN_7453 reads phi0 + dphi at 0x74a2 */
.cal_byte_56 = 0x0Du, /* CAL+0x56 @ 0x9C2E -- tooth phase comparand for rpm_baseline producer (T06211 producer @ 0x5153 from dispatcher 0x7969) */
.cal_byte_9c = 0x03u, /* CAL+0x9C @ 0x9C74 -- FUN_62a2 counter increment (0x62c6) */
.cal_54 = (int16_t)0x0B2B, /* CAL+0x54 @ 0x9C2C -- UPPER clamp on target_inj_angle (FUN_7453 0x7493) */
.cal_74 = (int16_t)0x20C5, /* CAL+0x74 @ 0x9C4C -- gate_0220 lower RPM threshold */
.cal_76 = (int16_t)0x01A3, /* CAL+0x76 @ 0x9C4E -- gate_0220 hysteresis width (upper = cal_74 + cal_76) */
.cal_78 = (int16_t)0x007F, /* CAL+0x78 @ 0x9C50 -- accel_comp_offset upper clamp (FUN_732d 0x7340) */
.cal_7a = (int16_t)0xFFCF, /* CAL+0x7A @ 0x9C52 -- accel_comp_offset lower clamp (FUN_732d 0x734e) */
.cal_7e = (int16_t)0x13C0, /* CAL+0x7E @ 0x9C56 -- temperature reference subtrahend in compute_temp_comp_factor (FUN_5DAB 0x5DD1) */
.cal_temp_comp_switch_dynamic = (int16_t)0x1702, /* CAL+0x80 @ 0x9C58 -- boot value of *(0x02F6) = TK_AT_W switch (compute_temp_comp_factor 0x5DB4) */
.cal_82 = (int16_t)0x026F, /* CAL+0x82 @ 0x9C5A -- IIR input gain b for phi_tick_1khz (FUN_6b4e MULU at 0x6B66; Q16 unsigned) */
.cal_84 = (int16_t)0xFD91, /* CAL+0x84 @ 0x9C5C -- IIR pole coefficient a for phi_tick_1khz (FUN_6b4e MULU at 0x6B4E and 0x6B57; Q16 unsigned) */
.cal_temp_comp_switch_complete = (int16_t)0x0001, /* CAL+0x86 @ 0x9C5E -- boot value of *(0x02F2) = F_TK_TE_W switch (compute_temp_comp_factor 0x5DDB) */
.cal_92 = (int16_t)0x1750, /* CAL+0x92 @ 0x9C6A -- temperature offset subtracted in FUN_5ca1 (0x5cf7) */
.cal_94 = (int16_t)0x0008, /* CAL+0x94 @ 0x9C6C -- FUN_5ca1 multiplier (0x5d05) */
.cal_96 = (int16_t)0x04B0, /* CAL+0x96 @ 0x9C6E -- FUN_5ca1 RW1C upper clamp (0x5d0b, unsigned) */
.cal_98 = (int16_t)0x1D7E, /* CAL+0x98 @ 0x9C70 -- tein_overtemp_guard lower RPM (FUN_5ca1 0x5d1a, unsigned) */
.cal_9a = (int16_t)0x3127, /* CAL+0x9A @ 0x9C72 -- tein_overtemp_guard upper RPM (FUN_5ca1 0x5d21, unsigned) */
/* RWC6-relative scalars (base 0x7D0E) */
.cal_rwc6_34 = (int16_t)0x0831, /* RWC6+0x34 @ 0x7D42 -- demand-weight multiplier in compute_angle_kick_2d (orphan FUN_5D58 @ 0x5D81) */
/* Accel descriptors (input_var bound at runtime by phi_t06211_bind_inputs). */
.desc_accel_rpm = {
.runtime_slot = 0,
.input_var = NULL,
.stride_items = 7,
.axis = phi_accel_axis_rpm,
},
.desc_accel_demand = {
.runtime_slot = 0,
.input_var = NULL,
.stride_items = 6,
.axis = phi_accel_axis_demand,
},
.desc_accel_temp = {
.runtime_slot = 0,
.input_var = NULL,
.stride_items = 5,
.axis = phi_accel_axis_temp,
},
/* Accel table pointers. */
.accel_combine_table = phi_accel_combine_table,
.accel_refine_table = phi_accel_refine_table,
/* Absolute-address ROM constants. */
.dat_604c = (int16_t)0x0444, /* *(0x604C) -- FUN_62a2 RWC2 timing threshold (= 0x0444) */
.cal_byte_402 = (int16_t)0xFFF8, /* *(0x0402) -- FUN_5e67 sign-extends byte 0x0402 (compute_temp_comp_factor 0x5DD6) */
/* Angle accumulator descriptors (FUN_722e, RWC6-relative; input_var bound at runtime). */
.desc_rpm = {
.runtime_slot = 0,
.input_var = NULL,
.stride_items = 15,
.axis = phi_angle_axis_rpm,
},
.desc_demand = {
.runtime_slot = 0,
.input_var = NULL,
.stride_items = 15,
.axis = phi_angle_axis_demand,
},
.desc_dec_cmd = {
.runtime_slot = 0,
.input_var = NULL,
.stride_items = 3,
.axis = phi_angle_axis_dec_cmd,
},
/* Angle accumulator 3-D table pointer. */
.data_table_3d = phi_angle_3d_table,
.data_table_2d_kick = phi_angle_2d_kick_table,
};
/* ======================================================================
* Runtime input binder.
* ====================================================================== */
void phi_t06211_bind_inputs(runtime_state_t *rt, calibration_t *cal)
{
cal->desc_accel_rpm.input_var = (int16_t *)&rt->rpm;
cal->desc_accel_demand.input_var = &rt->inj_qty_demand;
cal->desc_accel_temp.input_var = &rt->temperature;
cal->desc_rpm.input_var = (int16_t *)&rt->rpm;
cal->desc_demand.input_var = &rt->inj_qty_demand;
cal->desc_dec_cmd.input_var = &rt->angle_dec_cmd;
}