From 7582df66feff641d38a589f803bae616f2629ffd Mon Sep 17 00:00:00 2001 From: LucianoDev Date: Mon, 13 Apr 2026 21:18:28 +0200 Subject: [PATCH] fieona algorithm added and tested on bench --- Core/Immobilisers/ford_immo.c | 351 +++++----------------------------- Core/Immobilisers/ford_immo.h | 8 - 2 files changed, 47 insertions(+), 312 deletions(-) diff --git a/Core/Immobilisers/ford_immo.c b/Core/Immobilisers/ford_immo.c index 1e66da7..0d19e7a 100644 --- a/Core/Immobilisers/ford_immo.c +++ b/Core/Immobilisers/ford_immo.c @@ -6,38 +6,52 @@ */ #include "ford_immo.h" #include "timeouts.h" -//Detected prefix length = 622 -//Detected cycle length = 440 -// To get v[n] for n >= 622: -uint32_t fieona_counter = 0; + uint16_t FIEONA_FIRSTWORD = 0x2001; uint16_t FIEONA_SECONDWORD = 0x2000; +static uint16_t _immo_next2 = 0x4801; // predicted next rx = f(0x2001) +static uint16_t _rx_received = 0; +static uint8_t _rx_fresh = 0; + +// --- Core step function: f(x) = u16(u16(x*x) + (x >> 2)) --- + +#define IMMO_FIXUP 0x2001 + +static uint16_t immo_f(uint16_t x) +{ + uint16_t sq = (uint16_t)(x * x); + return (uint16_t)(sq + (x >> 2)); +} + +// --- Advance: compute next tx and prediction --- + uint16_t FIEONA_advance() { - fieona_counter++; - /*if(fieona_counter >= FIRSTWORD_PREFIX_LEN + FIRSTWORD_PERIOD){ - fieona_counter = FIRSTWORD_PREFIX_LEN; - }*/ - /*if(fieona_counter >= FIRSTWORD_PREFIX_LEN){ - fieona_counter = FIRSTWORD_PREFIX_LEN + fieona_counter % FIRSTWORD_PERIOD; - }*/ - uint32_t n = fieona_counter; - if (n < FIRSTWORD_PREFIX_LEN){ - FIEONA_FIRSTWORD = firstword_prefix[n]; - }else{ - n -= FIRSTWORD_PREFIX_LEN; - FIEONA_FIRSTWORD = firstword_cycle[n % FIRSTWORD_PERIOD]; - } - FIEONA_SECONDWORD = FIEONA_FIRSTWORD & 0xFF00; - //FIEONA_SECONDWORD = FIEONA_FIRSTWORD ; - return FIEONA_FIRSTWORD; + uint16_t rx = _rx_fresh ? _rx_received : _immo_next2; + _rx_fresh = 0; + + // Phase 1: tx = f(rx), fixup if < 2 + uint16_t tx = immo_f(rx); + if (tx < 2) tx = IMMO_FIXUP; + + // Phase 2: next2 = f(tx), blacklist check + uint16_t next2 = immo_f(tx); + if (next2 < 2 || next2 == 0x054B || next2 == 0x4656 || next2 == 0x88FC) + next2 = IMMO_FIXUP; + + FIEONA_FIRSTWORD = tx; + FIEONA_SECONDWORD = tx & 0xFF00; + _immo_next2 = next2; + return tx; } +// --- RX Handler --- + static uint16_t last_send4_tick = 0; // last tick for this timeout extern uint8_t count; -uint8_t booted = 0; + void Fieona_SEND4_Handler( const struct CanMessageDef *msg, const uint8_t in_data[8], @@ -45,297 +59,26 @@ void Fieona_SEND4_Handler( ) { if(count > 1){ - last_send4_tick = TIM16->CNT; - /*if(!booted){ - last_send4_tick-=1200; - booted++; - Timeout_ResetByIndex(20, last_send4_tick); // deberia mejorarlo bastante esto, en vez de - }*/ } - // - - // Extract first word (little endian) - uint16_t first_word = (uint16_t)in_data[0] | ((uint16_t)in_data[1] << 8); + uint16_t rx_word = (uint16_t)in_data[0] | ((uint16_t)in_data[1] << 8); - // Check if it matches 0x2001 - if (first_word == 0x2001) { // || first_word == 0x4801 - FIEONA_set_counter_cycle(); - }else if(first_word == 0x4801){ - //FIEONA_reset_counter(); - } + // Desync check (firmware validate_rx_word_and_aux behavior) + if (rx_word != _immo_next2) { + if (rx_word != IMMO_FIXUP) { + rx_word = 0; + } + } + + _rx_received = rx_word; + _rx_fresh = 1; } -void FIEONA_set_counter_cycle(){ - fieona_counter = FIRSTWORD_PREFIX_LEN; - FIEONA_FIRSTWORD = firstword_prefix[fieona_counter]; - FIEONA_SECONDWORD = FIEONA_FIRSTWORD & 0xFF00; -} -void FIEONA_reset_counter(){ - fieona_counter = 0; - FIEONA_FIRSTWORD = firstword_prefix[fieona_counter]; - FIEONA_SECONDWORD = FIEONA_FIRSTWORD & 0xFF00; -} -//extern uint8_t count; + void FIEONA_Poll(){ - //Timeout_ResetByIndex(20, last_send4_tick); // deberia mejorarlo bastante esto, en vez de if(last_send4_tick){ uint16_t newtick = last_send4_tick - 250; Timeout_ResetByIndex(20, newtick); // deberia mejorarlo bastante esto, en vez de last_send4_tick = 0; } - } -static const uint16_t firstword_prefix[FIRSTWORD_PREFIX_LEN] = { - 0x2001, 0xA201, 0x3421, 0x3523, 0x4525, 0x88AC, 0xCC07, 0xAC90, - 0x2419, 0xE62E, 0xAFD4, 0x6FFA, 0xAB8C, 0x6D85, 0xCAC2, 0x01FD, - 0xC562, 0xF7C7, 0x852C, 0x338F, 0x5BC1, 0x657D, 0xE85A, 0x7992, - 0x1BAA, 0x4EB7, 0xDCA3, 0xE09D, 0x471C, 0xE3C6, 0x9B3E, 0x165D, - 0x6CD8, 0xE6C1, 0xFD2D, 0x40DD, 0x13C0, 0x663C, 0x72A8, 0xA89E, - 0x9F23, 0x87C5, 0x5646, 0x6C26, 0x6114, 0xEBAE, 0xA7EC, 0xB85B, - 0x3BBC, 0x8E40, 0xBDE4, 0xD5F3, 0x67E2, 0x836F, 0xE2CF, 0x7895, - 0x39BB, 0x4D72, 0xBA88, 0xA53C, 0x6918, 0x0945, 0x299E, 0xB3B3, - 0x98BE, 0x30F5, 0xFF11, 0x8092, 0xB71A, 0x72FE, 0x88B9, 0xA238, - 0xDAF7, 0x1107, 0xF760, 0x8EB6, 0xDE65, 0x21A0, 0x155A, 0x4E62, - 0xF757, 0xD3FD, 0xDF82, 0x7089, 0x4305, 0x3D5A, 0x20E2, 0xA5FF, - 0x7760, 0x86B6, 0xC1E5, 0xA818, 0x4E35, 0x58C5, 0x6AD6, 0x56D7, - 0x0AB5, 0xDD4D, 0x4C2F, 0x7C7B, 0x085E, 0x36FF, 0x37F0, 0x8BCF, - 0x60A5, 0x5AA4, 0xE79F, 0xF1EA, 0x341B, 0xF638, 0xDC37, 0x4B3B, - 0x920A, 0x81DD, 0xB650, 0x4735, 0xD1D5, 0x862F, 0x6F1B, 0x74E8, - 0x1202, 0xB731, 0x5B34, 0x5220, 0xEE62, 0xA157, 0x9F9D, 0x6C8C, - 0x6915, 0xBD83, 0x232B, 0x2089, 0x9E05, 0x4D8A, 0xBD95, 0x058B, - 0x260F, 0xB6A9, 0xADE7, 0x765E, 0x2CDF, 0x059E, 0xAF73, 0x657A, - 0xC3E4, 0xFD53, 0xB898, 0x8ABD, 0x08CE, 0x924E, 0x82A6, 0xC83C, - 0x03C8, 0x3110, 0x0561, 0x1E77, 0x1DFF, 0x72E0, 0x9C6E, 0xF0D8, - 0x8B01, 0x0FB1, 0x3E3C, 0x5428, 0xC836, 0xF33D, 0x5496, 0xC193, - 0xF2DC, 0x1322, 0x93E3, 0x7891, 0xEAAA, 0xFFA7, 0xE95A, 0xE3A2, - 0xB06B, 0x9C1D, 0x7994, 0x2F76, 0x6211, 0xD3C2, 0x458D, 0x30D3, - 0x9DD0, 0xF0AD, 0xADD5, 0xEDEF, 0x8737, 0x716B, 0x8B2D, 0xC0BD, - 0x632E, 0x6424, 0x2DF7, 0xFDB7, 0x4D13, 0x4994, 0x5476, 0xE5E1, - 0x30FF, 0x3A90, 0x48F9, 0x8D3C, 0x6398, 0xEA6D, 0x9351, 0x6E96, - 0xC633, 0x5DE6, 0x77D0, 0x624D, 0xFAFF, 0xA230, 0x20F3, 0x4492, - 0xA75A, 0xEB82, 0x1549, 0x81D1, 0xFEFE, 0xB779, 0xF024, 0xE4B7, - 0x5D03, 0x8023, 0x7BD5, 0x6FCF, 0x74E5, 0x25C8, 0x4D30, 0xF5A3, - 0x982D, 0x580D, 0x853B, 0xB7AA, 0x6877, 0x0B9F, 0x222A, 0x811F, - 0x38C2, 0x92DD, 0x7DE0, 0x311E, 0x35EB, 0x68F5, 0xF691, 0x748A, - 0xF805, 0x962A, 0x385F, 0xFE96, 0xC733, 0x9DF6, 0xD7B9, 0xCF28, - 0x82E6, 0x59A0, 0x78DA, 0x739A, 0x23C6, 0xAF3E, 0xA19D, 0x39AC, - 0x0297, 0x0AD1, 0xC68E, 0x638A, 0x0EF5, 0xB1F1, 0x1020, 0x8242, - 0x4BF5, 0x7D41, 0xC715, 0x1063, 0xDB59, 0xBBA2, 0x15EB, 0xC6F5, - 0x3171, 0x2E98, 0xCC1D, 0xF494, 0x60A6, 0x731C, 0x0886, 0xCCAA, - 0x55C7, 0x120C, 0x0CAD, 0xAD95, 0xAC8B, 0x817F, 0xFB58, 0xF929, - 0x010F, 0xC4D9, 0x003A, 0x2110, 0xE461, 0x7B67, 0x4DF6, 0x3AB9, - 0x6D58, 0x6E49, 0xE961, 0x50B7, 0x61C3, 0xD2EF, 0x9107, 0x3F60, - 0xE336, 0x1B6D, 0x36E1, 0xF70F, 0xF539, 0x5100, 0x1510, 0x6BA1, - 0x181B, 0x9878, 0x621B, 0x0718, 0x0525, 0x64AC, 0x8BC7, 0xB86C, - 0xAB23, 0x9085, 0x2372, 0x3DE8, 0xD792, 0xC78A, 0x7535, 0x71B5, - 0x8A3D, 0x2F86, 0x5D9A, 0xF666, 0x9618, 0x7F15, 0x9FE3, 0xA151, - 0xF176, 0xF531, 0x1914, 0xA32E, 0x4824, 0x1637, 0xEFDB, 0x2EB4, - 0xC118, 0xF6C5, 0x85B6, 0x1655, 0x0137, 0xBA0B, 0x5CD7, 0x1215, - 0x6593, 0x1D1C, 0xD226, 0x8074, 0x1214, 0x533E, 0x2DDD, 0x2F10, - 0x3141, 0xA655, 0x6237, 0x329B, 0x90A0, 0xA84A, 0xE241, 0xBE65, - 0xEFA0, 0x1A3A, 0x3EB0, 0x65BB, 0xAC32, 0x4234, 0x7C10, 0x2811, - 0x6A22, 0xBA53, 0x1868, 0x0BBA, 0xFAC8, 0xAB80, 0x5EB8, 0xC03F, - 0x60E4, 0xC3A3, 0x490D, 0x98CB, 0x7703, 0x95C3, 0x1E2F, 0xEC9B, - 0x5640, 0xFA64, 0x96FB, 0x9686, 0xB28A, 0x8BE5, 0x67B8, 0xBBCF, - 0x2BA5, 0x55D4, 0xA55A, 0x7762, 0x80E7, 0x6D0E, 0x7232, 0x0494, - 0x99A6, 0x0C2C, 0x447F, 0x3608, 0xE274, 0x8934, 0xFC00, 0x0FC0, - 0x85FC, 0xCA44, 0xB269, 0x1B23, 0xE785, 0xE562, 0xD9C7, 0x8C4C, - 0xD431, 0x2404, 0x7D65, 0x4810, 0x9CD1, 0xCDAE, 0xC30C, 0xAF3D, - 0x4656, 0x52CF, 0xD795, 0xCE2B, 0x4439, 0x5DF0, 0x922F, 0x51DB, - 0x16D4, 0x0DEA, 0x95DB, 0xFF14, 0xBC8E, 0x49EA, 0xC99B, 0x6110, - 0x6861, 0x77A7, 0x5CDA, 0xD9DA, 0xF3AA, 0xBC37, 0x393B, 0xF6EA, - 0x286B, 0x7B9D, 0x004C, 0x7171, 0xB298, 0x505D, 0x9978, 0xDD2B, - 0x4A29, 0x741F, 0x2A72, 0x0D58, 0x4849, 0x9B01, 0x60B1, 0xB64C, - 0x11D1, 0xA7FE, 0x5E89, 0x8DE5, 0x2ED8, 0x70E1, 0x94AF, 0xBFC3, - 0x04CF, 0x5DB5, 0x1AFD, 0xF572, 0x2D08, 0xE4E4, 0xA5E3, 0xD5B1, - 0xFC9C, 0xDF5E, 0x7BEF, 0xED17, 0x15B9, 0xB308, 0x8B44, 0xE0F9, - 0x56BC, 0x6C70, 0xD617, 0xE6C9, 0x55E9, 0x765B, 0x859C, 0xAD6E, - 0xD868, 0xD7BA, 0xCF88, 0xCF8C, 0xDDC5, 0x10A6, 0xF61C, 0x3D36, - 0x9C0D, 0x5B7B, 0x694E, 0x5196, 0x5AE3, 0x1701, 0x8471, 0x14C8, - 0xCF20, 0xCA32, 0xA214, 0x243E, 0x536D, 0x5661, 0x2487, 0x4C58, - 0x2539, 0x0400, 0x0040, 0x0504, 0x15F5, 0x60E1, 0x83AF, 0x2933, - 0x3416, 0x6FCB, 0x8D73, 0x335A, 0xDC42, 0xEF95, 0x73AB, 0x7711, - 0x4012, 0xA892, 0xC19A, 0x44A6, 0x475C, 0x8B2A, 0x73AF, 0xD033, - 0x7E86, 0x2D0A, 0x038D, 0x13B3, 0x4EBE, 0x0755, 0xA1C7, 0x8CCC, - 0xABF9, 0xD36C, 0xE353, 0x0EF8, 0xB503, 0x35A3, 0x4C2D, 0x6D4D, - 0x4D2F, 0xCA0B, 0x8DD7, 0x53A5, 0xA454, 0x8B82, 0x6F49, 0xFB71, - 0x6938, 0xBC67, 0xF286, 0x524A, 0xBCE1, 0x256F, 0xD7EF, 0xACD7, - 0x9F15, 0x51E3, 0x3871, 0x0C08, 0xCDD4, 0x48DA, 0x109A, 0x4796, - 0x4F43, 0x8CC7, 0x34FC, 0x87B4, 0x8B28, 0x1AA6, 0x65BC, 0x87E0, - 0xA9BE, 0x6A85, 0x0412, 0x58D2, 0x20DE, 0xCAC7, 0x7FDC, 0x0F72, - 0x08A8, 0x27FE, 0x9689, 0xC165, 0x7A50, 0x0B75, -}; - -static const uint16_t firstword_cycle[440] = { - 0x4801, 0x6C81, 0x7949, 0x9011, 0x08A2, 0x55BB, 0x5B32, 0xFC24, - 0x1377, 0xE9CF, 0xB385, 0xDC22, 0x7F73, 0xA27A, 0xEDB4, 0xF488, - 0x2ADC, 0xDAA2, 0xE0DB, 0x56C4, 0xDE71, 0xF868, 0x79BA, 0x75A8, - 0x53CE, 0x1A7E, 0xC6F1, 0x5870, 0x9CD7, 0xF615, 0x49D3, 0x2360, - 0x1176, 0x9731, 0x3934, 0x4F00, 0x14F0, 0xF79F, 0x2AEA, 0xEBAB, - 0xA691, 0x7F8A, 0x30B5, 0x30AD, 0x41D5, 0x252F, 0xEB8B, 0x1E6F, - 0x40FF, 0x3390, 0xA289, 0x7A25, 0xBD7C, 0xEAFC, 0x5C14, 0x24DE, - 0xDD07, 0xDA20, 0x16E2, 0x8F5F, 0xCC86, 0xEEEA, 0x07EB, 0xFC15, - 0x5333, 0xD6B6, 0x1EE5, 0x7368, 0x5C6A, 0x50C3, 0x37DF, 0x14CE, - 0xD10E, 0xF272, 0xA1D8, 0x8D11, 0x8B72, 0xAC68, 0xE8FA, 0xF11C, - 0x3D66, 0x3D08, 0xF5E4, 0x4573, 0xAEDA, 0x12FA, 0x4FBC, 0xDD80, - 0x81D8, 0x2B11, 0x4752, 0xAC46, 0x6A86, 0x1DCA, 0x0599, 0x3E46, - 0xA6A6, 0x407C, 0x03AC, 0x8237, 0x049B, 0x9FC0, 0x0EFC, 0x9454, - 0x4282, 0xCFB9, 0x8EA8, 0xA65E, 0x07DF, 0xE9CE, 0xCADE, 0xB267, - 0x8CE6, 0x9940, 0x0694, 0x82C6, 0xAFAE, 0x5E2C, 0x889F, 0x2F7A, - 0x4C84, 0x452D, 0x195D, 0x9888, 0x991C, 0xB3E6, 0x8E30, 0x87B3, - 0x55FE, 0xE069, 0xD203, 0x9173, 0x539A, 0x61C6, 0x881E, 0xBADB, - 0x7E64, 0xE93B, 0x31EA, 0xE81B, 0x7578, 0x8EEB, 0x9985, 0x9782, - 0x5409, 0x683D, 0x0866, 0x7238, 0x87F7, 0x3457, 0x244D, 0x001F, - 0x4D32, 0x2D44, 0xF019, 0x22EE, 0xCB80, 0x60B8, 0x665F, 0xF276, - 0x38C1, 0x3C4D, 0x2D9F, 0x5B4A, 0x9D71, 0x1958, 0xDD09, 0x2ACD, - 0xE9C7, 0x154C, 0xA041, 0x6045, 0x738E, 0x5EDA, 0x2DFA, 0xEB6C, - 0x78D3, 0x8250, 0x5BF5, 0x9641, 0x1DA5, 0x93F4, 0x610C, 0xDA1D, - 0xF074, 0x1114, 0xBEAE, 0xA09C, 0x2F9E, 0xBF13, 0x08B4, 0x3BB8, - 0xB50F, 0x3E19, 0xCFCE, 0x783E, 0x82AD, 0xCFF5, 0xBB81, 0x8939, - 0xAA40, 0x9FA4, 0x146F, 0x495F, 0x0326, 0xAD04, 0x4475, 0x5B89, - 0x1FB5, 0x021D, 0x26F4, 0x23BC, 0x48C0, 0xF18C, 0xAEE5, 0xF468, - 0xB57A, 0x28E4, 0x1423, 0x6D15, 0x43C3, 0x650F, 0xC119, 0xB3FE, - 0x4549, 0x24D1, 0x7E2E, 0x4554, 0x7212, 0x75B2, 0xFC4C, 0xA331, - 0x9DF4, 0x06AC, 0x7CE7, 0xAACE, 0x016E, 0x0FA8, 0x376E, 0x6208, - 0x8134, 0xF780, 0xA378, 0x8BCB, 0x3333, 0x14B6, 0x3BC5, 0x7786, - 0xEE1A, 0x646E, 0xC158, 0x3F89, 0x85F5, 0xCFE1, 0x799F, 0xEA0A, - 0x875D, 0xBA68, 0x37DA, 0xD58A, 0xC615, 0xFED3, 0x02B0, 0x19FB, - 0xB5B6, 0x0155, 0x2867, 0x1F46, 0xBA36, 0x515D, 0x0808, 0x3994, - 0x8B76, 0xA9D1, 0xD97E, 0x8A61, 0x9BC7, 0x416C, 0x6B33, 0x1836, - 0x803D, 0x05E6, 0x6E50, 0xB2B5, 0x03CD, 0x47D7, 0xA845, 0x940E, - 0xD622, 0xB513, 0xB014, 0xE41E, 0x3E9B, 0x5D60, 0xED16, 0x06DB, - 0x1F24, 0x3127, 0x0D32, 0x2944, 0x25D9, 0x424A, 0xFBE1, 0x685F, - 0x2996, 0xEC63, 0xF119, 0xF6FE, 0x72F9, 0x2FDC, 0x1272, 0x73D8, - 0x0831, 0x3344, 0xBF79, 0x30A4, 0x63FF, 0x1440, 0xA644, 0x1629, - 0x18DF, 0xDE5E, 0xC75F, 0x5406, 0x78A2, 0xECBB, 0xD7A2, 0x9BAB, - 0xF191, 0x093A, 0x67A0, 0x71BA, 0xC528, 0x0846, 0x9A46, 0x6666, - 0xF518, 0x8605, 0x580A, 0x6E3D, 0x47C6, 0xF77E, 0xEB41, 0x23F5, - 0x9EC1, 0x10AD, 0xEFD5, 0xC50F, 0x5719, 0x855E, 0xE14F, 0x3A3D, - 0x6286, 0x714A, 0xBED1, 0xBDCE, 0x7A1E, 0x2AFB, 0x53C6, 0xFA3E, - 0x6BCD, 0x6257, 0x922D, 0x54AD, 0xD615, 0x57D3, 0x7C40, 0xECC4, - 0xFED1, 0x81CE, 0x405E, 0xF67F, 0x8828, 0x5F76, 0x0D11, 0x4372, - 0x5FE8, 0xDBB2, 0xC8AC, 0x3007, 0x64D0, 0xEB1D, 0xA004, 0x5B25, - 0x470C, 0xE57D, 0xB05A, 0x8612, 0x7AF2, 0x6AE0, 0xBBEE, 0xBF90, - 0xE349, 0xEAB1, 0x7CEC, 0xD72B, 0xE7C9, 0xB7F9, 0x142C, 0x60FF, - 0x2590, 0xB5A9, 0x3FD7, 0x73C5, 0x5F06, 0x9DD2, 0xAE2E, 0x4054, - 0xE342, 0x8D05, 0x4CFA, 0x5F5C, 0xF0AA, 0x0807, 0xAE50, 0xF6B5, - 0xFE0D, 0x2A9B, 0xC820, 0x6DC2, 0x3D2D, 0xD4DD, 0x3F00, 0x13F0, - 0xF18F, 0x94A1, 0x5BAB, 0x6D91, 0x84FA, 0xB2DC, 0x2F22, 0x59A3, - 0x666D, 0x2911, 0xE932, 0x1304, 0x89D5, 0x55AF, 0x7953, 0xA058, -}; - - -/*static const uint16_t firstword_cycle[FIRSTWORD_PERIOD] = { - 0x2001, 0xA201, 0x3421, 0x3523, 0x4525, 0x88AC, 0xCC07, 0xAC90, - 0x2419, 0xE62E, 0xAFD4, 0x6FFA, 0xAB8C, 0x6D85, 0xCAC2, 0x01FD, - 0xC562, 0xF7C7, 0x852C, 0x338F, 0x5BC1, 0x657D, 0xE85A, 0x7992, - 0x1BAA, 0x4EB7, 0xDCA3, 0xE09D, 0x471C, 0xE3C6, 0x9B3E, 0x165D, - 0x6CD8, 0xE6C1, 0xFD2D, 0x40DD, 0x13C0, 0x663C, 0x72A8, 0xA89E, - 0x9F23, 0x87C5, 0x5646, 0x6C26, 0x6114, 0xEBAE, 0xA7EC, 0xB85B, - 0x3BBC, 0x8E40, 0xBDE4, 0xD5F3, 0x67E2, 0x836F, 0xE2CF, 0x7895, - 0x39BB, 0x4D72, 0xBA88, 0xA53C, 0x6918, 0x0945, 0x299E, 0xB3B3, - 0x98BE, 0x30F5, 0xFF11, 0x8092, 0xB71A, 0x72FE, 0x88B9, 0xA238, - 0xDAF7, 0x1107, 0xF760, 0x8EB6, 0xDE65, 0x21A0, 0x155A, 0x4E62, - 0xF757, 0xD3FD, 0xDF82, 0x7089, 0x4305, 0x3D5A, 0x20E2, 0xA5FF, - 0x7760, 0x86B6, 0xC1E5, 0xA818, 0x4E35, 0x58C5, 0x6AD6, 0x56D7, - 0x0AB5, 0xDD4D, 0x4C2F, 0x7C7B, 0x085E, 0x36FF, 0x37F0, 0x8BCF, - 0x60A5, 0x5AA4, 0xE79F, 0xF1EA, 0x341B, 0xF638, 0xDC37, 0x4B3B, - 0x920A, 0x81DD, 0xB650, 0x4735, 0xD1D5, 0x862F, 0x6F1B, 0x74E8, - 0x1202, 0xB731, 0x5B34, 0x5220, 0xEE62, 0xA157, 0x9F9D, 0x6C8C, - 0x6915, 0xBD83, 0x232B, 0x2089, 0x9E05, 0x4D8A, 0xBD95, 0x058B, - 0x260F, 0xB6A9, 0xADE7, 0x765E, 0x2CDF, 0x059E, 0xAF73, 0x657A, - 0xC3E4, 0xFD53, 0xB898, 0x8ABD, 0x08CE, 0x924E, 0x82A6, 0xC83C, - 0x03C8, 0x3110, 0x0561, 0x1E77, 0x1DFF, 0x72E0, 0x9C6E, 0xF0D8, - 0x8B01, 0x0FB1, 0x3E3C, 0x5428, 0xC836, 0xF33D, 0x5496, 0xC193, - 0xF2DC, 0x1322, 0x93E3, 0x7891, 0xEAAA, 0xFFA7, 0xE95A, 0xE3A2, - 0xB06B, 0x9C1D, 0x7994, 0x2F76, 0x6211, 0xD3C2, 0x458D, 0x30D3, - 0x9DD0, 0xF0AD, 0xADD5, 0xEDEF, 0x8737, 0x716B, 0x8B2D, 0xC0BD, - 0x632E, 0x6424, 0x2DF7, 0xFDB7, 0x4D13, 0x4994, 0x5476, 0xE5E1, - 0x30FF, 0x3A90, 0x48F9, 0x8D3C, 0x6398, 0xEA6D, 0x9351, 0x6E96, - 0xC633, 0x5DE6, 0x77D0, 0x624D, 0xFAFF, 0xA230, 0x20F3, 0x4492, - 0xA75A, 0xEB82, 0x1549, 0x81D1, 0xFEFE, 0xB779, 0xF024, 0xE4B7, - 0x5D03, 0x8023, 0x7BD5, 0x6FCF, 0x74E5, 0x25C8, 0x4D30, 0xF5A3, - 0x982D, 0x580D, 0x853B, 0xB7AA, 0x6877, 0x0B9F, 0x222A, 0x811F, - 0x38C2, 0x92DD, 0x7DE0, 0x311E, 0x35EB, 0x68F5, 0xF691, 0x748A, - 0xF805, 0x962A, 0x385F, 0xFE96, 0xC733, 0x9DF6, 0xD7B9, 0xCF28, - 0x82E6, 0x59A0, 0x78DA, 0x739A, 0x23C6, 0xAF3E, 0xA19D, 0x39AC, - 0x0297, 0x0AD1, 0xC68E, 0x638A, 0x0EF5, 0xB1F1, 0x1020, 0x8242, - 0x4BF5, 0x7D41, 0xC715, 0x1063, 0xDB59, 0xBBA2, 0x15EB, 0xC6F5, - 0x3171, 0x2E98, 0xCC1D, 0xF494, 0x60A6, 0x731C, 0x0886, 0xCCAA, - 0x55C7, 0x120C, 0x0CAD, 0xAD95, 0xAC8B, 0x817F, 0xFB58, 0xF929, - 0x010F, 0xC4D9, 0x003A, 0x2110, 0xE461, 0x7B67, 0x4DF6, 0x3AB9, - 0x6D58, 0x6E49, 0xE961, 0x50B7, 0x61C3, 0xD2EF, 0x9107, 0x3F60, - 0xE336, 0x1B6D, 0x36E1, 0xF70F, 0xF539, 0x5100, 0x1510, 0x6BA1, - 0x181B, 0x9878, 0x621B, 0x0718, 0x0525, 0x64AC, 0x8BC7, 0xB86C, - 0xAB23, 0x9085, 0x2372, 0x3DE8, 0xD792, 0xC78A, 0x7535, 0x71B5, - 0x8A3D, 0x2F86, 0x5D9A, 0xF666, 0x9618, 0x7F15, 0x9FE3, 0xA151, - 0xF176, 0xF531, 0x1914, 0xA32E, 0x4824, 0x1637, 0xEFDB, 0x2EB4, - 0xC118, 0xF6C5, 0x85B6, 0x1655, 0x0137, 0xBA0B, 0x5CD7, 0x1215, - 0x6593, 0x1D1C, 0xD226, 0x8074, 0x1214, 0x533E, 0x2DDD, 0x2F10, - 0x3141, 0xA655, 0x6237, 0x329B, 0x90A0, 0xA84A, 0xE241, 0xBE65, - 0xEFA0, 0x1A3A, 0x3EB0, 0x65BB, 0xAC32, 0x4234, 0x7C10, 0x2811, - 0x6A22, 0xBA53, 0x1868, 0x0BBA, 0xFAC8, 0xAB80, 0x5EB8, 0xC03F, - 0x60E4, 0xC3A3, 0x490D, 0x98CB, 0x7703, 0x95C3, 0x1E2F, 0xEC9B, - 0x5640, 0xFA64, 0x96FB, 0x9686, 0xB28A, 0x8BE5, 0x67B8, 0xBBCF, - 0x2BA5, 0x55D4, 0xA55A, 0x7762, 0x80E7, 0x6D0E, 0x7232, 0x0494, - 0x99A6, 0x0C2C, 0x447F, 0x3608, 0xE274, 0x8934, 0xFC00, 0x0FC0, - 0x85FC, 0xCA44, 0xB269, 0x1B23, 0xE785, 0xE562, 0xD9C7, 0x8C4C, - 0xD431, 0x2404, 0x7D65, 0x4810, 0x9CD1, 0xCDAE, 0xC30C, 0xAF3D, - 0x4656, 0x4801, 0x6C81, 0x7949, 0x9011, 0x08A2, 0x55BB, 0x5B32, - 0xFC24, 0x1377, 0xE9CF, 0xB385, 0xDC22, 0x7F73, 0xA27A, 0xEDB4, - 0xF488, 0x2ADC, 0xDAA2, 0xE0DB, 0x56C4, 0xDE71, 0xF868, 0x79BA, - 0x75A8, 0x53CE, 0x1A7E, 0xC6F1, 0x5870, 0x9CD7, 0xF615, 0x49D3, - 0x2360, 0x1176, 0x9731, 0x3934, 0x4F00, 0x14F0, 0xF79F, 0x2AEA, - 0xEBAB, 0xA691, 0x7F8A, 0x30B5, 0x30AD, 0x41D5, 0x252F, 0xEB8B, - 0x1E6F, 0x40FF, 0x3390, 0xA289, 0x7A25, 0xBD7C, 0xEAFC, 0x5C14, - 0x24DE, 0xDD07, 0xDA20, 0x16E2, 0x8F5F, 0xCC86, 0xEEEA, 0x07EB, - 0xFC15, 0x5333, 0xD6B6, 0x1EE5, 0x7368, 0x5C6A, 0x50C3, 0x37DF, - 0x14CE, 0xD10E, 0xF272, 0xA1D8, 0x8D11, 0x8B72, 0xAC68, 0xE8FA, - 0xF11C, 0x3D66, 0x3D08, 0xF5E4, 0x4573, 0xAEDA, 0x12FA, 0x4FBC, - 0xDD80, 0x81D8, 0x2B11, 0x4752, 0xAC46, 0x6A86, 0x1DCA, 0x0599, - 0x3E46, 0xA6A6, 0x407C, 0x03AC, 0x8237, 0x049B, 0x9FC0, 0x0EFC, - 0x9454, 0x4282, 0xCFB9, 0x8EA8, 0xA65E, 0x07DF, 0xE9CE, 0xCADE, - 0xB267, 0x8CE6, 0x9940, 0x0694, 0x82C6, 0xAFAE, 0x5E2C, 0x889F, - 0x2F7A, 0x4C84, 0x452D, 0x195D, 0x9888, 0x991C, 0xB3E6, 0x8E30, - 0x87B3, 0x55FE, 0xE069, 0xD203, 0x9173, 0x539A, 0x61C6, 0x881E, - 0xBADB, 0x7E64, 0xE93B, 0x31EA, 0xE81B, 0x7578, 0x8EEB, 0x9985, - 0x9782, 0x5409, 0x683D, 0x0866, 0x7238, 0x87F7, 0x3457, 0x244D, - 0x001F, 0x4D32, 0x2D44, 0xF019, 0x22EE, 0xCB80, 0x60B8, 0x665F, - 0xF276, 0x38C1, 0x3C4D, 0x2D9F, 0x5B4A, 0x9D71, 0x1958, 0xDD09, - 0x2ACD, 0xE9C7, 0x154C, 0xA041, 0x6045, 0x738E, 0x5EDA, 0x2DFA, - 0xEB6C, 0x78D3, 0x8250, 0x5BF5, 0x9641, 0x1DA5, 0x93F4, 0x610C, - 0xDA1D, 0xF074, 0x1114, 0xBEAE, 0xA09C, 0x2F9E, 0xBF13, 0x08B4, - 0x3BB8, 0xB50F, 0x3E19, 0xCFCE, 0x783E, 0x82AD, 0xCFF5, 0xBB81, - 0x8939, 0xAA40, 0x9FA4, 0x146F, 0x495F, 0x0326, 0xAD04, 0x4475, - 0x5B89, 0x1FB5, 0x021D, 0x26F4, 0x23BC, 0x48C0, 0xF18C, 0xAEE5, - 0xF468, 0xB57A, 0x28E4, 0x1423, 0x6D15, 0x43C3, 0x650F, 0xC119, - 0xB3FE, 0x4549, 0x24D1, 0x7E2E, 0x4554, 0x7212, 0x75B2, 0xFC4C, - 0xA331, 0x9DF4, 0x06AC, 0x7CE7, 0xAACE, 0x016E, 0x0FA8, 0x376E, - 0x6208, 0x8134, 0xF780, 0xA378, 0x8BCB, 0x3333, 0x14B6, 0x3BC5, - 0x7786, 0xEE1A, 0x646E, 0xC158, 0x3F89, 0x85F5, 0xCFE1, 0x799F, - 0xEA0A, 0x875D, 0xBA68, 0x37DA, 0xD58A, 0xC615, 0xFED3, 0x02B0, - 0x19FB, 0xB5B6, 0x0155, 0x2867, 0x1F46, 0xBA36, 0x515D, 0x0808, - 0x3994, 0x8B76, 0xA9D1, 0xD97E, 0x8A61, 0x9BC7, 0x416C, 0x6B33, - 0x1836, 0x803D, 0x05E6, 0x6E50, 0xB2B5, 0x03CD, 0x47D7, 0xA845, - 0x940E, 0xD622, 0xB513, 0xB014, 0xE41E, 0x3E9B, 0x5D60, 0xED16, - 0x06DB, 0x1F24, 0x3127, 0x0D32, 0x2944, 0x25D9, 0x424A, 0xFBE1, - 0x685F, 0x2996, 0xEC63, 0xF119, 0xF6FE, 0x72F9, 0x2FDC, 0x1272, - 0x73D8, 0x0831, 0x3344, 0xBF79, 0x30A4, 0x63FF, 0x1440, 0xA644, - 0x1629, 0x18DF, 0xDE5E, 0xC75F, 0x5406, 0x78A2, 0xECBB, 0xD7A2, - 0x9BAB, 0xF191, 0x093A, 0x67A0, 0x71BA, 0xC528, 0x0846, 0x9A46, - 0x6666, 0xF518, 0x8605, 0x580A, 0x6E3D, 0x47C6, 0xF77E, 0xEB41, - 0x23F5, 0x9EC1, 0x10AD, 0xEFD5, 0xC50F, 0x5719, 0x855E, 0xE14F, - 0x3A3D, 0x6286, 0x714A, 0xBED1, 0xBDCE, 0x7A1E, 0x2AFB, 0x53C6, - 0xFA3E, 0x6BCD, 0x6257, 0x922D, 0x54AD, 0xD615, 0x57D3, 0x7C40, - 0xECC4, 0xFED1, 0x81CE, 0x405E, 0xF67F, 0x8828, 0x5F76, 0x0D11, - 0x4372, 0x5FE8, 0xDBB2, 0xC8AC, 0x3007, 0x64D0, 0xEB1D, 0xA004, - 0x5B25, 0x470C, 0xE57D, 0xB05A, 0x8612, 0x7AF2, 0x6AE0, 0xBBEE, - 0xBF90, 0xE349, 0xEAB1, 0x7CEC, 0xD72B, 0xE7C9, 0xB7F9, 0x142C, - 0x60FF, 0x2590, 0xB5A9, 0x3FD7, 0x73C5, 0x5F06, 0x9DD2, 0xAE2E, - 0x4054, 0xE342, 0x8D05, 0x4CFA, 0x5F5C, 0xF0AA, 0x0807, 0xAE50, - 0xF6B5, 0xFE0D, 0x2A9B, 0xC820, 0x6DC2, 0x3D2D, 0xD4DD, 0x3F00, - 0x13F0, 0xF18F, 0x94A1, 0x5BAB, 0x6D91, 0x84FA, 0xB2DC, 0x2F22, - 0x59A3, 0x666D, 0x2911, 0xE932, 0x1304, 0x89D5, 0x55AF, 0x7953, - 0xA058, -};*/ diff --git a/Core/Immobilisers/ford_immo.h b/Core/Immobilisers/ford_immo.h index 70b9fd8..26ada38 100644 --- a/Core/Immobilisers/ford_immo.h +++ b/Core/Immobilisers/ford_immo.h @@ -10,19 +10,11 @@ #ifndef IMMOBILISERS_FORD_IMMO_H_ #define IMMOBILISERS_FORD_IMMO_H_ -#define FIRSTWORD_PREFIX_LEN 622 //622 -#define FIRSTWORD_PERIOD 440 //440 - 881(el prefix 0) - -static const uint16_t firstword_prefix[FIRSTWORD_PREFIX_LEN]; // v[0..621] -static const uint16_t firstword_cycle[FIRSTWORD_PERIOD]; // v[622..622+439] - extern uint16_t FIEONA_FIRSTWORD; extern uint16_t FIEONA_SECONDWORD; extern uint16_t FIEONA_advance(); extern void Fieona_SEND4_Handler(); -extern void FIEONA_reset_counter(); void FIEONA_Poll(void); - #endif /* IMMOBILISERS_FORD_IMMO_H_ */