This commit is contained in:
rusefi 2019-02-26 10:04:44 -05:00
commit a9cbbe6e09
52 changed files with 12586 additions and 4542 deletions

View File

@ -42,6 +42,7 @@ See https://rusefi.com/forum/viewtopic.php?f=5&t=9
| Release date | Revision | Details |
| ------------ | --------- | ------- |
| 02/23/2019 | r16857 | improvement #688: better support for 144 and 176 pin packages |
| 02/05/2019 | r16713 | improvement #631: ChibiOS 18 |
| 01/11/2019 | r16346 | bugfix #663: SPI fixes for CJ125 for stm32 errata STM32f405/7/15/17 |
| 12/09/2018 | r16057 | electronic throttle body control is now BETA version |

View File

@ -7,6 +7,8 @@ set PROJECT_BOARD=NUCLEO_F746
set PROJECT_CPU=ST_STM32F7
set EXTRA_PARAMS=-DDUMMY -DSTM32F746xx ^
-DEFI_INJECTOR_PIN3=GPIO_UNASSIGNED ^
-DEFI_COMMUNICATION_PIN=GPIOB_7 ^
-DEFI_FATAL_ERROR_PIN=GPIOB_14 ^
-DRAM_UNUSED_SIZE=10 -DCCM_UNUSED_SIZE=10
set DEBUG_LEVEL_OPT="-O2"
make -j4

View File

@ -7,7 +7,10 @@ set PROJECT_BOARD=NUCLEO_F767
set PROJECT_CPU=ST_STM32F7
set EXTRA_PARAMS=-DDUMMY -DSTM32F767xx ^
-DEFI_INJECTOR_PIN3=GPIO_UNASSIGNED ^
-DEFI_COMMUNICATION_PIN=GPIOB_7 ^
-DEFI_FATAL_ERROR_PIN=GPIOB_14 ^
-DEFI_ENABLE_ASSERTS=FALSE ^
-DCH_DBG_ENABLE_CHECKS=FALSE -DCH_DBG_ENABLE_TRACE=FALSE -DCH_DBG_ENABLE_ASSERTS=FALSE -DCH_DBG_ENABLE_STACK_CHECK=FALSE -DCH_DBG_FILL_THREADS=FALSE -DCH_DBG_THREADS_PROFILING=FALSE
set DEBUG_LEVEL_OPT="-O2"
make -j4
make -j4
..\misc\hex2dfu\HEX2DFU.exe build/rusefi.hex -out build/rusefi.dfu

View File

@ -43,9 +43,7 @@ void setSdCardConfigurationOverrides(void) {
void setBoardConfigurationOverrides(void) {
setSerialConfigurationOverrides();
engineConfiguration->communicationLedPin = GPIOB_7; // blue LED
engineConfiguration->runningLedPin = GPIOB_0; //green LED
engineConfiguration->fatalErrorPin = GPIOB_14; //red LED
engineConfiguration->warninigLedPin = GPIO_UNASSIGNED;
engineConfiguration->configResetPin = GPIO_UNASSIGNED;
#if 0

View File

@ -155,7 +155,7 @@ bool stopTsPort(ts_channel_s *tsChannel) {
}
void sr5WriteData(ts_channel_s *tsChannel, const uint8_t * buffer, int size) {
efiAssertVoid(CUSTOM_ERR_6570, getRemainingStack(chThdGetSelfX()) > 64, "tunerStudioWriteData");
efiAssertVoid(CUSTOM_ERR_6570, getCurrentRemainingStack() > 64, "tunerStudioWriteData");
#if EFI_SIMULATOR || defined(__DOXYGEN__)
logMsg("chSequentialStreamWrite [%d]\r\n", size);
#endif

View File

@ -19,7 +19,8 @@
#define SWITCH_TO_BINARY_COMMAND "~"
#define PROTOCOL "001"
#define TS_SIGNATURE "rusEFI v1.04"
// this should match 'signature' in rusefi.ini
#define TS_SIGNATURE "rusEFI v1.05"
#define TS_RESPONSE_OK 0x00
#define TS_RESPONSE_BURN_OK 0x04

View File

@ -157,7 +157,7 @@ void runConsoleLoop(ts_channel_s *console) {
}
while (true) {
efiAssertVoid(CUSTOM_ERR_6571, getRemainingStack(chThdGetSelfX()) > 256, "lowstck#9e");
efiAssertVoid(CUSTOM_ERR_6571, getCurrentRemainingStack() > 256, "lowstck#9e");
bool end = getConsoleLine((BaseSequentialStream*) console->channel, console->crcReadBuffer, sizeof(console->crcReadBuffer) - 3);
if (end) {
// firmware simulator is the only case when this happens

View File

@ -350,8 +350,6 @@ case IM_MANUAL:
}
const char *getPin_output_mode_e(pin_output_mode_e value){
switch(value) {
case Force_4_bytes_size_pin_output_mode:
return "Force_4_bytes_size_pin_output_mode";
case OM_DEFAULT:
return "OM_DEFAULT";
case OM_INVERTED:
@ -365,8 +363,6 @@ case OM_OPENDRAIN_INVERTED:
}
const char *getPin_input_mode_e(pin_input_mode_e value){
switch(value) {
case Force_4_bytes_size_pin_input_mode:
return "Force_4_bytes_size_pin_input_mode";
case PI_DEFAULT:
return "PI_DEFAULT";
case PI_PULLDOWN:
@ -506,8 +502,6 @@ case EFI_ADC_ERROR:
return "EFI_ADC_ERROR";
case EFI_ADC_NONE:
return "EFI_ADC_NONE";
case Force_4_bytes_size_cranking_adc_channel:
return "Force_4_bytes_size_cranking_adc_channel";
}
return NULL;
}
@ -545,8 +539,6 @@ case Force_4_bytes_size_ego_sensor:
}
const char *getBrain_pin_e(brain_pin_e value){
switch(value) {
case Force_4_bytes_size_brain_pin_e:
return "Force_4_bytes_size_brain_pin_e";
case GPIOA_0:
return "GPIOA_0";
case GPIOA_1:
@ -711,6 +703,102 @@ case GPIO_INVALID:
return "GPIO_INVALID";
case GPIO_UNASSIGNED:
return "GPIO_UNASSIGNED";
case GPIOF_0:
return "GPIOF_0";
case GPIOF_1:
return "GPIOF_1";
case GPIOF_10:
return "GPIOF_10";
case GPIOF_11:
return "GPIOF_11";
case GPIOF_12:
return "GPIOF_12";
case GPIOF_13:
return "GPIOF_13";
case GPIOF_14:
return "GPIOF_14";
case GPIOF_15:
return "GPIOF_15";
case GPIOF_2:
return "GPIOF_2";
case GPIOF_3:
return "GPIOF_3";
case GPIOF_4:
return "GPIOF_4";
case GPIOF_5:
return "GPIOF_5";
case GPIOF_6:
return "GPIOF_6";
case GPIOF_7:
return "GPIOF_7";
case GPIOF_8:
return "GPIOF_8";
case GPIOF_9:
return "GPIOF_9";
case GPIOG_0:
return "GPIOG_0";
case GPIOG_1:
return "GPIOG_1";
case GPIOG_10:
return "GPIOG_10";
case GPIOG_11:
return "GPIOG_11";
case GPIOG_12:
return "GPIOG_12";
case GPIOG_13:
return "GPIOG_13";
case GPIOG_14:
return "GPIOG_14";
case GPIOG_15:
return "GPIOG_15";
case GPIOG_2:
return "GPIOG_2";
case GPIOG_3:
return "GPIOG_3";
case GPIOG_4:
return "GPIOG_4";
case GPIOG_5:
return "GPIOG_5";
case GPIOG_6:
return "GPIOG_6";
case GPIOG_7:
return "GPIOG_7";
case GPIOG_8:
return "GPIOA_G";
case GPIOG_9:
return "GPIOG_9";
case GPIOH_0:
return "GPIOH_0";
case GPIOH_1:
return "GPIOH_1";
case GPIOH_10:
return "GPIOH_10";
case GPIOH_11:
return "GPIOH_11";
case GPIOH_12:
return "GPIOH_12";
case GPIOH_13:
return "GPIOH_13";
case GPIOH_14:
return "GPIOH_14";
case GPIOH_15:
return "GPIOH_15";
case GPIOH_2:
return "GPIOH_2";
case GPIOH_3:
return "GPIOH_3";
case GPIOH_4:
return "GPIOH_4";
case GPIOH_5:
return "GPIOH_5";
case GPIOH_6:
return "GPIOH_6";
case GPIOH_7:
return "GPIOH_7";
case GPIOH_8:
return "GPIOH_8";
case GPIOH_9:
return "GPIOH_9";
}
return NULL;
}

View File

@ -396,7 +396,11 @@ void prepareVoidConfiguration(engine_configuration_s *engineConfiguration) {
}
void setDefaultBasePins(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
#ifdef EFI_FATAL_ERROR_PIN
engineConfiguration->fatalErrorPin = EFI_FATAL_ERROR_PIN;
#else
engineConfiguration->fatalErrorPin = GPIOD_14;
#endif /* EFI_FATAL_ERROR_PIN */
engineConfiguration->warninigLedPin = GPIOD_13;
engineConfiguration->configResetPin = GPIOB_1;
#if EFI_PROD_CODE || defined(__DOXYGEN__)
@ -984,7 +988,7 @@ void setDefaultConfiguration(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
#else
engineConfiguration->communicationLedPin = GPIOD_15; // blue LED on discovery
#endif
engineConfiguration->runningLedPin = GPIOD_12; // greeb LED on discovery
engineConfiguration->runningLedPin = GPIOD_12; // green LED on discovery
setDefaultBasePins(PASS_ENGINE_PARAMETER_SIGNATURE);
setDefaultSerialParameters(PASS_ENGINE_PARAMETER_SIGNATURE);
@ -1343,7 +1347,7 @@ void validateConfiguration(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
void applyNonPersistentConfiguration(Logging * logger DECLARE_ENGINE_PARAMETER_SUFFIX) {
#if EFI_PROD_CODE || defined(__DOXYGEN__)
efiAssertVoid(CUSTOM_APPLY_STACK, getRemainingStack(chThdGetSelfX()) > 256, "apply c");
efiAssertVoid(CUSTOM_APPLY_STACK, getCurrentRemainingStack() > 256, "apply c");
scheduleMsg(logger, "applyNonPersistentConfiguration()");
#endif

View File

@ -425,17 +425,13 @@ typedef enum {
* logical OFF is floating, logical ON is GND
*/
OM_OPENDRAIN = 2,
OM_OPENDRAIN_INVERTED = 3,
Force_4_bytes_size_pin_output_mode = ENUM_32_BITS,
OM_OPENDRAIN_INVERTED = 3
} pin_output_mode_e;
typedef enum {
PI_DEFAULT = 0,
PI_PULLUP = 1,
PI_PULLDOWN = 2,
Force_4_bytes_size_pin_input_mode = ENUM_32_BITS,
PI_PULLDOWN = 2
} pin_input_mode_e;
#define CRANK_MODE_MULTIPLIER 2.0f
@ -579,9 +575,7 @@ typedef enum {
// todo: bad choice of value since now we have ADC_CHANNEL_SENSOR and could end up with 17 and 18 also
EFI_ADC_NONE = 16,
EFI_ADC_ERROR = 999,
Force_4_bytes_size_cranking_adc_channel = ENUM_32_BITS,
EFI_ADC_ERROR = 17,
} adc_channel_e;
typedef enum {
@ -618,146 +612,145 @@ typedef enum {
* Hardware pin. This enum is platform-specific.
*/
typedef enum {
GPIOA_0 = 0,
GPIOA_1 = 1,
GPIOA_2 = 2,
GPIOA_3 = 3,
GPIOA_4 = 4,
GPIOA_5 = 5,
GPIOA_6 = 6,
GPIOA_7 = 7,
GPIOA_8 = 8,
GPIOA_9 = 9,
GPIOA_10 = 10,
GPIOA_11 = 11,
GPIOA_12 = 12,
GPIOA_13 = 13,
GPIOA_14 = 14,
GPIOA_15 = 15,
GPIO_UNASSIGNED = 0,
GPIO_INVALID = 1,
GPIOB_0 = 16,
GPIOB_1 = 17,
GPIOB_2 = 18,
GPIOB_3 = 19,
GPIOB_4 = 20,
GPIOB_5 = 21,
GPIOB_6 = 22,
GPIOB_7 = 23,
GPIOB_8 = 24,
GPIOB_9 = 25,
GPIOB_10 = 26,
GPIOB_11 = 27,
GPIOB_12 = 28,
GPIOB_13 = 29,
GPIOB_14 = 30,
GPIOB_15 = 31,
GPIOA_0 = 2,
GPIOA_1 = 3,
GPIOA_2 = 4,
GPIOA_3 = 5,
GPIOA_4 = 6,
GPIOA_5 = 7,
GPIOA_6 = 8,
GPIOA_7 = 9,
GPIOA_8 = 10,
GPIOA_9 = 11,
GPIOA_10 = 12,
GPIOA_11 = 13,
GPIOA_12 = 14,
GPIOA_13 = 15,
GPIOA_14 = 16,
GPIOA_15 = 17,
GPIOC_0 = 32,
GPIOC_1 = 33,
GPIOC_2 = 34,
GPIOC_3 = 35,
GPIOC_4 = 36,
GPIOC_5 = 37,
GPIOC_6 = 38,
GPIOC_7 = 39,
GPIOC_8 = 40,
GPIOC_9 = 41,
GPIOC_10 = 42,
GPIOC_11 = 43,
GPIOC_12 = 44,
GPIOC_13 = 45,
GPIOC_14 = 46,
GPIOC_15 = 47,
GPIOB_0 = 18,
GPIOB_1 = 19,
GPIOB_2 = 20,
GPIOB_3 = 21,
GPIOB_4 = 22,
GPIOB_5 = 23,
GPIOB_6 = 24,
GPIOB_7 = 25,
GPIOB_8 = 26,
GPIOB_9 = 27,
GPIOB_10 = 28,
GPIOB_11 = 29,
GPIOB_12 = 30,
GPIOB_13 = 31,
GPIOB_14 = 32,
GPIOB_15 = 33,
GPIOD_0 = 48,
GPIOD_1 = 49,
GPIOD_2 = 50,
GPIOD_3 = 51,
GPIOD_4 = 52,
GPIOD_5 = 53,
GPIOD_6 = 54,
GPIOD_7 = 55,
GPIOD_8 = 56,
GPIOD_9 = 57,
GPIOD_10 = 58,
GPIOD_11 = 59,
GPIOD_12 = 60,
GPIOD_13 = 61,
GPIOD_14 = 62,
GPIOD_15 = 63,
GPIOC_0 = 34,
GPIOC_1 = 35,
GPIOC_2 = 36,
GPIOC_3 = 37,
GPIOC_4 = 38,
GPIOC_5 = 39,
GPIOC_6 = 40,
GPIOC_7 = 41,
GPIOC_8 = 42,
GPIOC_9 = 43,
GPIOC_10 = 44,
GPIOC_11 = 45,
GPIOC_12 = 46,
GPIOC_13 = 47,
GPIOC_14 = 48,
GPIOC_15 = 49,
GPIOE_0 = 64,
GPIOE_1 = 65,
GPIOE_2 = 66,
GPIOE_3 = 67,
GPIOE_4 = 68,
GPIOE_5 = 69,
GPIOE_6 = 70,
GPIOE_7 = 71,
GPIOE_8 = 72,
GPIOE_9 = 73,
GPIOE_10 = 74,
GPIOE_11 = 75,
GPIOE_12 = 76,
GPIOE_13 = 77,
GPIOE_14 = 78,
GPIOE_15 = 79,
GPIOD_0 = 50,
GPIOD_1 = 51,
GPIOD_2 = 52,
GPIOD_3 = 53,
GPIOD_4 = 54,
GPIOD_5 = 55,
GPIOD_6 = 56,
GPIOD_7 = 57,
GPIOD_8 = 58,
GPIOD_9 = 59,
GPIOD_10 = 60,
GPIOD_11 = 61,
GPIOD_12 = 62,
GPIOD_13 = 63,
GPIOD_14 = 64,
GPIOD_15 = 65,
// GPIOF_0 = 80,
// GPIOF_1 = 81,
// GPIOF_2 = 82,
// GPIOF_3 = 83,
// GPIOF_4 = 84,
// GPIOF_5 = 85,
// GPIOF_6 = 86,
// GPIOF_7 = 87,
// GPIOF_8 = 88,
// GPIOF_9 = 89,
// GPIOF_10 = 90,
// GPIOF_11 = 91,
// GPIOF_12 = 92,
// GPIOF_13 = 93,
// GPIOF_14 = 94,
// GPIOF_15 = 95,
//
// GPIOG_0 = 96,
// GPIOG_1 = 97,
// GPIOG_2 = 98,
// GPIOG_3 = 99,
// GPIOG_4 = 100,
// GPIOG_5 = 101,
// GPIOG_6 = 102,
// GPIOG_7 = 103,
// GPIOG_8 = 104,
// GPIOG_9 = 105,
// GPIOG_10 = 106,
// GPIOG_11 = 107,
// GPIOG_12 = 108,
// GPIOG_13 = 109,
// GPIOG_14 = 110,
// GPIOG_15 = 111,
//
// GPIOH_0 = 112,
// GPIOH_1 = 113,
// GPIOH_2 = 114,
// GPIOH_3 = 115,
// GPIOH_4 = 116,
// GPIOH_5 = 117,
// GPIOH_6 = 118,
// GPIOH_7 = 119,
// GPIOH_8 = 120,
// GPIOH_9 = 121,
// GPIOH_10 = 122,
// GPIOH_11 = 123,
// GPIOH_12 = 124,
// GPIOH_13 = 125,
// GPIOH_14 = 126,
// GPIOH_15 = 128,
GPIOE_0 = 66,
GPIOE_1 = 67,
GPIOE_2 = 68,
GPIOE_3 = 69,
GPIOE_4 = 70,
GPIOE_5 = 71,
GPIOE_6 = 72,
GPIOE_7 = 73,
GPIOE_8 = 74,
GPIOE_9 = 75,
GPIOE_10 = 76,
GPIOE_11 = 77,
GPIOE_12 = 78,
GPIOE_13 = 79,
GPIOE_14 = 80,
GPIOE_15 = 81,
GPIO_UNASSIGNED = 80,
GPIO_INVALID = 81,
GPIOF_0 = 82,
GPIOF_1 = 83,
GPIOF_2 = 84,
GPIOF_3 = 85,
GPIOF_4 = 86,
GPIOF_5 = 87,
GPIOF_6 = 88,
GPIOF_7 = 89,
GPIOF_8 = 90,
GPIOF_9 = 91,
GPIOF_10 = 92,
GPIOF_11 = 93,
GPIOF_12 = 94,
GPIOF_13 = 95,
GPIOF_14 = 96,
GPIOF_15 = 97,
GPIOG_0 = 98,
GPIOG_1 = 99,
GPIOG_2 = 100,
GPIOG_3 = 101,
GPIOG_4 = 102,
GPIOG_5 = 103,
GPIOG_6 = 104,
GPIOG_7 = 105,
GPIOG_8 = 106,
GPIOG_9 = 107,
GPIOG_10 = 108,
GPIOG_11 = 109,
GPIOG_12 = 110,
GPIOG_13 = 111,
GPIOG_14 = 112,
GPIOG_15 = 113,
GPIOH_0 = 114,
GPIOH_1 = 115,
GPIOH_2 = 116,
GPIOH_3 = 117,
GPIOH_4 = 118,
GPIOH_5 = 119,
GPIOH_6 = 120,
GPIOH_7 = 121,
GPIOH_8 = 122,
GPIOH_9 = 123,
GPIOH_10 = 124,
GPIOH_11 = 125,
GPIOH_12 = 126,
GPIOH_13 = 127,
GPIOH_14 = 128,
GPIOH_15 = 129,
Force_4_bytes_size_brain_pin_e = ENUM_32_BITS,
} brain_pin_e;
/**

File diff suppressed because it is too large Load Diff

View File

@ -26,7 +26,7 @@ typedef unsigned int time_t;
// time in seconds
typedef time_t efitimesec_t;
typedef int pin_mode_e;
typedef uint8_t pin_mode_e;
/**
* integer time in milliseconds

View File

@ -139,7 +139,7 @@ void LECalculator::push(le_action_e action, float value) {
*/
bool LECalculator::processElement(LEElement *element DECLARE_ENGINE_PARAMETER_SUFFIX) {
#if EFI_PROD_CODE || defined(__DOXYGEN__)
efiAssert(CUSTOM_ERR_ASSERT, getRemainingStack(chThdGetSelfX()) > 64, "FSIO logic", false);
efiAssert(CUSTOM_ERR_ASSERT, getCurrentRemainingStack() > 64, "FSIO logic", false);
#endif
switch (element->action) {

View File

@ -278,7 +278,7 @@ static void invokePerSecond(void) {
static void periodicSlowCallback(Engine *engine) {
#if (EFI_ENGINE_CONTROL && EFI_SHAFT_POSITION_INPUT) || defined(__DOXYGEN__)
efiAssertVoid(CUSTOM_ERR_6661, getRemainingStack(chThdGetSelfX()) > 64, "lowStckOnEv");
efiAssertVoid(CUSTOM_ERR_6661, getCurrentRemainingStack() > 64, "lowStckOnEv");
#if EFI_PROD_CODE
/**
* We need to push current value into the 64 bit counter often enough so that we do not miss an overflow
@ -757,10 +757,10 @@ void initEngineContoller(Logging *sharedLogger DECLARE_ENGINE_PARAMETER_SUFFIX)
// help to notice when RAM usage goes up - if a code change adds to RAM usage these variables would fail
// linking process which is the way to raise the alarm
#ifndef RAM_UNUSED_SIZE
#define RAM_UNUSED_SIZE 10200
#define RAM_UNUSED_SIZE 10000
#endif
#ifndef CCM_UNUSED_SIZE
#define CCM_UNUSED_SIZE 7000
#define CCM_UNUSED_SIZE 6800
#endif
static char UNUSED_RAM_SIZE[RAM_UNUSED_SIZE];
static char UNUSED_CCM_SIZE[CCM_UNUSED_SIZE] CCM_OPTIONAL;
@ -778,5 +778,5 @@ int getRusEfiVersion(void) {
if (initBootloader() != 0)
return 123;
#endif /* EFI_BOOTLOADER_INCLUDE_CODE */
return 20190204;
return 20190223;
}

View File

@ -130,7 +130,7 @@ static persisted_configuration_state_e doReadConfiguration(flashaddr_t address,
* connectivity so no console output here
*/
persisted_configuration_state_e readConfiguration(Logging * logger) {
efiAssert(CUSTOM_ERR_ASSERT, getRemainingStack(chThdGetSelfX()) > 256, "read f", PC_ERROR);
efiAssert(CUSTOM_ERR_ASSERT, getCurrentRemainingStack() > 256, "read f", PC_ERROR);
persisted_configuration_state_e result = doReadConfiguration(FLASH_ADDR, logger);
if (result != PC_OK) {
printMsg(logger, "Reading second configuration copy");

View File

@ -11,7 +11,7 @@
#include "engine.h"
#define FLASH_DATA_VERSION 10000
#define FLASH_DATA_VERSION 10001
typedef enum {
PC_OK = 0,

View File

@ -109,7 +109,7 @@ static bool isAveraging = false;
static void startAveraging(void *arg) {
(void) arg;
efiAssertVoid(CUSTOM_ERR_6649, getRemainingStack(chThdGetSelfX()) > 128, "lowstck#9");
efiAssertVoid(CUSTOM_ERR_6649, getCurrentRemainingStack() > 128, "lowstck#9");
bool wasLocked = lockAnyContext();
;
// with locking we would have a consistent state
@ -135,7 +135,7 @@ void mapAveragingAdcCallback(adcsample_t adcValue) {
/* Calculates the average values from the ADC samples.*/
measurementsPerRevolutionCounter++;
efiAssertVoid(CUSTOM_ERR_6650, getRemainingStack(chThdGetSelfX()) > 128, "lowstck#9a");
efiAssertVoid(CUSTOM_ERR_6650, getCurrentRemainingStack() > 128, "lowstck#9a");
#if (EFI_SENSOR_CHART && EFI_ANALOG_SENSORS) || defined(__DOXYGEN__)
if (ENGINE(sensorChartMode) == SC_MAP) {

View File

@ -43,7 +43,7 @@ uint32_t lastExecutionCount;
static void executorCallback(void *arg) {
(void)arg;
efiAssertVoid(CUSTOM_ERR_6624, getRemainingStack(chThdGetSelfX()) > 256, "lowstck#2y");
efiAssertVoid(CUSTOM_ERR_6624, getCurrentRemainingStack() > 256, "lowstck#2y");
// callbackTime = getTimeNowNt();
// if((callbackTime > nextEventTimeNt) && (callbackTime - nextEventTimeNt > US2NT(5000))) {

View File

@ -459,13 +459,13 @@ const char *portname(ioportid_t GPIOx) {
* this method returns the numeric part of pin name. For instance, for PC13 this would return '13'
*/
ioportmask_t getHwPin(const char *msg, brain_pin_e brainPin) {
if (brainPin == GPIO_UNASSIGNED)
if (brainPin == GPIO_UNASSIGNED || brainPin == GPIO_INVALID)
return EFI_ERROR_CODE;
if (brainPin > GPIO_UNASSIGNED || brainPin < 0) {
if (brainPin < GPIOA_0 || brainPin > GPIOH_15) {
firmwareError(CUSTOM_ERR_INVALID_PIN, "%s: Invalid brain_pin_e: %d", msg, brainPin);
return EFI_ERROR_CODE;
}
return brainPin % PORT_SIZE;
return (brainPin - GPIOA_0) % PORT_SIZE;
}
#else /* EFI_GPIO_HARDWARE */

View File

@ -404,7 +404,7 @@ void TriggerShape::setSecondTriggerSynchronizationGap(float syncRatio) {
void TriggerShape::initializeTriggerShape(Logging *logger, operation_mode_e operationMode, bool useOnlyRisingEdgeForTrigger, const trigger_config_s *triggerConfig) {
#if EFI_PROD_CODE || defined(__DOXYGEN__)
efiAssertVoid(CUSTOM_ERR_6641, getRemainingStack(chThdGetSelfX()) > 256, "init t");
efiAssertVoid(CUSTOM_ERR_6641, getCurrentRemainingStack() > 256, "init t");
scheduleMsg(logger, "initializeTriggerShape(%s/%d)", getTrigger_type_e(triggerConfig->type), (int) triggerConfig->type);
#endif

View File

@ -26,13 +26,6 @@
#include <nvic.h>
#endif
#if (!EFI_PROD_CODE && !EFI_SIMULATOR) || defined(__DOXYGEN__)
#define chThdGetSelfX() 0
#define getRemainingStack(x) (999999)
#endif
#if (EFI_ENGINE_CONTROL && EFI_SHAFT_POSITION_INPUT) || defined(__DOXYGEN__)
#include "main_trigger_callback.h"
@ -373,7 +366,7 @@ static void fuelClosedLoopCorrection(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
static ALWAYS_INLINE void handleFuel(const bool limitedFuel, uint32_t trgEventIndex, int rpm DECLARE_ENGINE_PARAMETER_SUFFIX) {
efiAssertVoid(CUSTOM_ERR_6627, getRemainingStack(chThdGetSelfX()) > 128, "lowstck#3");
efiAssertVoid(CUSTOM_ERR_6627, getCurrentRemainingStack() > 128, "lowstck#3");
efiAssertVoid(CUSTOM_ERR_6628, trgEventIndex < engine->engineCycleEventCount, "handleFuel/event index");
if (!isInjectionEnabled(PASS_ENGINE_PARAMETER_SIGNATURE) || limitedFuel) {
@ -446,7 +439,7 @@ void mainTriggerCallback(trigger_event_e ckpSignalType, uint32_t trgEventIndex D
*/
return;
}
efiAssertVoid(CUSTOM_ERR_6629, getRemainingStack(chThdGetSelfX()) > 128, "lowstck#2");
efiAssertVoid(CUSTOM_ERR_6629, getCurrentRemainingStack() > 128, "lowstck#2");
if (trgEventIndex >= ENGINE(engineCycleEventCount)) {
/**

View File

@ -228,7 +228,7 @@ void rpmShaftPositionCallback(trigger_event_e ckpSignalType,
uint32_t index DECLARE_ENGINE_PARAMETER_SUFFIX) {
efitick_t nowNt = getTimeNowNt();
#if EFI_PROD_CODE
efiAssertVoid(CUSTOM_ERR_6632, getRemainingStack(chThdGetSelfX()) > 256, "lowstckRCL");
efiAssertVoid(CUSTOM_ERR_6632, getCurrentRemainingStack() > 256, "lowstckRCL");
#endif
RpmCalculator *rpmState = &engine->rpmCalculator;

View File

@ -198,7 +198,7 @@ void hwHandleShaftSignal(trigger_event_e signal) {
if (triggerReentraint > maxTriggerReentraint)
maxTriggerReentraint = triggerReentraint;
triggerReentraint++;
efiAssertVoid(CUSTOM_ERR_6636, getRemainingStack(chThdGetSelfX()) > 128, "lowstck#8");
efiAssertVoid(CUSTOM_ERR_6636, getCurrentRemainingStack() > 128, "lowstck#8");
engine->triggerCentral.handleShaftSignal(signal PASS_ENGINE_PARAMETER_SUFFIX);
triggerReentraint--;
triggerDuration = GET_TIMESTAMP() - triggerHandlerEntryTime;

View File

@ -107,7 +107,7 @@ bool isTriggerDecoderError(void) {
void calculateTriggerSynchPoint(TriggerShape *shape, TriggerState *state DECLARE_ENGINE_PARAMETER_SUFFIX) {
#if EFI_PROD_CODE || defined(__DOXYGEN__)
efiAssertVoid(CUSTOM_ERR_6642, getRemainingStack(chThdGetSelfX()) > 256, "calc s");
efiAssertVoid(CUSTOM_ERR_6642, getCurrentRemainingStack() > 256, "calc s");
#endif
trigger_config_s const*triggerConfig = &engineConfiguration->trigger;
@ -634,7 +634,7 @@ uint32_t findTriggerZeroEventIndex(TriggerState *state, TriggerShape * shape,
trigger_config_s const*triggerConfig DECLARE_ENGINE_PARAMETER_SUFFIX) {
UNUSED(triggerConfig);
#if EFI_PROD_CODE || defined(__DOXYGEN__)
efiAssert(CUSTOM_ERR_ASSERT, getRemainingStack(chThdGetSelfX()) > 128, "findPos", -1);
efiAssert(CUSTOM_ERR_ASSERT, getCurrentRemainingStack() > 128, "findPos", -1);
#endif
errorDetection.clear();
efiAssert(CUSTOM_ERR_ASSERT, state != NULL, "NULL state", -1);

View File

@ -172,7 +172,7 @@ void WaveChart::addEvent3(const char *name, const char * msg) {
efiAssertVoid(CUSTOM_ERR_6651, name!=NULL, "WC: NULL name");
#if EFI_PROD_CODE
efiAssertVoid(CUSTOM_ERR_6652, getRemainingStack(chThdGetSelfX()) > 32, "lowstck#2c");
efiAssertVoid(CUSTOM_ERR_6652, getCurrentRemainingStack() > 32, "lowstck#2c");
#endif
efiAssertVoid(CUSTOM_ERR_6653, isInitialized, "chart not initialized");

View File

@ -52,8 +52,12 @@ typedef unsigned int time_t;
#define VALUE(x) VALUE_TO_STRING(x)
#define VAR_NAME_VALUE(var) #var "=" VALUE(var)
// project-wide default thread stack size
// see also PORT_INT_REQUIRED_STACK
/**
* project-wide default thread stack size
* See also PORT_INT_REQUIRED_STACK
* See getRemainingStack()
* See getMaxUsedStack()
*/
#define UTILITY_THREAD_STACK_SIZE 400
#define EFI_ERROR_CODE 0xffffffff
@ -99,6 +103,8 @@ typedef unsigned int time_t;
turnAllPinsOff(); \
enginePins.communicationLedPin.setValue(1);
#define getCurrentRemainingStack() getRemainingStack(chThdGetSelfX())
/*
* Stack debugging
* See also getMaxUsedStack()

View File

@ -174,7 +174,7 @@ AdcDevice fastAdc(&adcgrpcfg_fast);
void doSlowAdc(void) {
efiAssertVoid(CUSTOM_ERR_6658, getRemainingStack(chThdGetSelfX())> 32, "lwStAdcSlow");
efiAssertVoid(CUSTOM_ERR_6658, getCurrentRemainingStack()> 32, "lwStAdcSlow");
#if EFI_INTERNAL_ADC
@ -206,7 +206,7 @@ static void pwmpcb_slow(PWMDriver *pwmp) {
}
static void pwmpcb_fast(PWMDriver *pwmp) {
efiAssertVoid(CUSTOM_ERR_6659, getRemainingStack(chThdGetSelfX())> 32, "lwStAdcFast");
efiAssertVoid(CUSTOM_ERR_6659, getCurrentRemainingStack()> 32, "lwStAdcFast");
#if EFI_INTERNAL_ADC
(void) pwmp;
@ -292,37 +292,37 @@ static void initAdcPin(brain_pin_e pin, const char *msg) {
brain_pin_e getAdcChannelBrainPin(const char *msg, adc_channel_e hwChannel) {
// todo: replace this with an array :)
switch (hwChannel) {
case ADC_CHANNEL_IN0:
case EFI_ADC_0:
return GPIOA_0;
case ADC_CHANNEL_IN1:
case EFI_ADC_1:
return GPIOA_1;
case ADC_CHANNEL_IN2:
case EFI_ADC_2:
return GPIOA_2;
case ADC_CHANNEL_IN3:
case EFI_ADC_3:
return GPIOA_3;
case ADC_CHANNEL_IN4:
case EFI_ADC_4:
return GPIOA_4;
case ADC_CHANNEL_IN5:
case EFI_ADC_5:
return GPIOA_5;
case ADC_CHANNEL_IN6:
case EFI_ADC_6:
return GPIOA_6;
case ADC_CHANNEL_IN7:
case EFI_ADC_7:
return GPIOA_7;
case ADC_CHANNEL_IN8:
case EFI_ADC_8:
return GPIOB_0;
case ADC_CHANNEL_IN9:
case EFI_ADC_9:
return GPIOB_1;
case ADC_CHANNEL_IN10:
case EFI_ADC_10:
return GPIOC_0;
case ADC_CHANNEL_IN11:
case EFI_ADC_11:
return GPIOC_1;
case ADC_CHANNEL_IN12:
case EFI_ADC_12:
return GPIOC_2;
case ADC_CHANNEL_IN13:
case EFI_ADC_13:
return GPIOC_3;
case ADC_CHANNEL_IN14:
case EFI_ADC_14:
return GPIOC_4;
case ADC_CHANNEL_IN15:
case EFI_ADC_15:
return GPIOC_5;
default:
firmwareError(CUSTOM_ERR_ADC_UNKNOWN_CHANNEL, "Unknown hw channel %d [%s]", hwChannel, msg);
@ -573,7 +573,7 @@ int getSlowAdcCounter() {
static void adc_callback_slow(ADCDriver *adcp, adcsample_t *buffer, size_t n) {
(void) buffer;
(void) n;
efiAssertVoid(CUSTOM_ERR_6671, getRemainingStack(chThdGetSelfX()) > 128, "lowstck#9c");
efiAssertVoid(CUSTOM_ERR_6671, getCurrentRemainingStack() > 128, "lowstck#9c");
/* Note, only in the ADC_COMPLETE state because the ADC driver fires
* an intermediate callback when the buffer is half full. */
if (adcp->state == ADC_COMPLETE) {

View File

@ -87,7 +87,7 @@ bool rtcWorks = true;
* Only one consumer can use SPI bus at a given time
*/
void lockSpi(spi_device_e device) {
efiAssertVoid(CUSTOM_ERR_6674, getRemainingStack(chThdGetSelfX()) > 128, "lockSpi");
efiAssertVoid(CUSTOM_ERR_6674, getCurrentRemainingStack() > 128, "lockSpi");
// todo: different locks for different SPI devices!
chMtxLock(&spiMtx);
}
@ -191,7 +191,7 @@ void adc_callback_fast(ADCDriver *adcp, adcsample_t *buffer, size_t n) {
/**
* this callback is executed 10 000 times a second, it needs to be as fast as possible
*/
efiAssertVoid(CUSTOM_ERR_6676, getRemainingStack(chThdGetSelfX()) > 128, "lowstck#9b");
efiAssertVoid(CUSTOM_ERR_6676, getCurrentRemainingStack() > 128, "lowstck#9b");
#if EFI_MAP_AVERAGING
mapAveragingAdcCallback(fastAdc.samples[fastMapSampleIndex]);
@ -325,7 +325,7 @@ void showBor(void) {
}
void initHardware(Logging *l) {
efiAssertVoid(CUSTOM_IH_STACK, getRemainingStack(chThdGetSelfX()) > 256, "init h");
efiAssertVoid(CUSTOM_IH_STACK, getCurrentRemainingStack() > 256, "init h");
sharedLogger = l;
engine_configuration_s *engineConfiguration = engine->engineConfigurationPtr;
efiAssertVoid(CUSTOM_EC_NULL, engineConfiguration!=NULL, "engineConfiguration");

View File

@ -35,13 +35,13 @@ static ioportid_t PORTS[] = { GPIOA, GPIOB, GPIOC, GPIOD, GPIOF};
#endif /* defined(STM32F4XX) || defined(STM32F7XX) */
ioportid_t getHwPort(const char *msg, brain_pin_e brainPin) {
if (brainPin == GPIO_UNASSIGNED)
if (brainPin == GPIO_UNASSIGNED || brainPin == GPIO_INVALID)
return GPIO_NULL;
if (brainPin > GPIO_UNASSIGNED || brainPin < 0) {
if (brainPin < GPIOA_0 || brainPin > GPIOH_15) {
firmwareError(CUSTOM_ERR_INVALID_PIN, "%s: Invalid brain_pin_e: %d", msg, brainPin);
return GPIO_NULL;
}
return PORTS[brainPin / PORT_SIZE];
return PORTS[(brainPin - GPIOA_0)/ PORT_SIZE];
}
bool efiReadPin(brain_pin_e pin) {
@ -58,6 +58,7 @@ void efiSetPadMode(const char *msg, brain_pin_e brainPin, iomode_t mode) {
if (port == GPIO_NULL) {
return;
}
efiAssertVoid(OBD_PCM_Processor_Fault, pin != EFI_ERROR_CODE, "pin_error");
scheduleMsg(&logger, "%s on %s%d", msg, portname(port), pin);

View File

@ -16,7 +16,17 @@
#include "memstreams.h"
#include "chprintf.h"
#define PIN_REPO_SIZE 7 * PORT_SIZE
static ioportid_t ports[] = {GPIOA,
GPIOB,
GPIOC,
GPIOD,
GPIOE,
GPIOF,
GPIOG,
GPIOH,
};
#define PIN_REPO_SIZE (sizeof(ports) / sizeof(ioportid_t)) * PORT_SIZE
// todo: move this into PinRepository class
const char *PIN_USED[PIN_REPO_SIZE];
static int initialized = FALSE;
@ -24,18 +34,11 @@ static int initialized = FALSE;
static LoggingWithStorage logger("pin repos");
static int totalPinsUsed = 0;
static ioportid_t ports[7] = {GPIOA,
GPIOB,
GPIOC,
GPIOD,
GPIOE,
GPIOF,
GPIOH,
};
PinRepository::PinRepository() {
}
static PinRepository instance;
static int getPortIndex(ioportid_t port) {
efiAssert(CUSTOM_ERR_ASSERT, port != NULL, "null port", -1);
if (port == GPIOA)
@ -53,8 +56,12 @@ static int getPortIndex(ioportid_t port) {
if (port == GPIOF)
return 5;
#if defined(STM32F4XX) || defined(STM32F7XX)
if (port == GPIOH)
if (port == GPIOG)
return 6;
#endif /* defined(STM32F4XX) */
#if defined(STM32F4XX) || defined(STM32F7XX)
if (port == GPIOH)
return 7;
#endif /* defined(STM32F4XX) */
firmwareError(CUSTOM_ERR_UNKNOWN_PORT, "unknown port");
return -1;
@ -125,8 +132,8 @@ void initPinRepository(void) {
msObjectInit(&portNameStream, (uint8_t*) portNameBuffer, sizeof(portNameBuffer), 0);
for (int i = 0; i < PIN_REPO_SIZE; i++)
PIN_USED[i] = 0;
memset(PIN_USED, 0, sizeof(PIN_USED));
initialized = true;
addConsoleAction("pins", reportPins);
}

View File

@ -173,24 +173,29 @@ custom mass_storage_e 4 bits, U32, @OFFSET@, [0:1], @@mass_storage_e_enum@@
! todo: convert slow ADC to software scheduler and make TIM8 available
! todo: maybe convert fast ADC to software scheduler as well? less sure about that
#define brain_input_pin_e_enum "INVALID", "PA1", "PA2", "PA3", "INVALID", "PA5", "PA6", "PA7", "PA8", "PA9", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "PA15", "INVALID", "INVALID", "INVALID", "PB3", "PB4", "PB5", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "PC6", "PC7", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "PE5", "PE6", "INVALID", "INVALID", "PE9", "INVALID", "PE11", "INVALID", "INVALID", "INVALID", "INVALID", "NONE", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
custom brain_input_pin_e 4 bits, U32, @OFFSET@, [0:6], @@brain_input_pin_e_enum@@
#define brain_input_pin_e_enum "NONE", "INVALID", "INVALID", "PA1", "PA2", "PA3", "INVALID", "PA5", "PA6", "PA7", "PA8", "PA9", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "PA15", "INVALID", "INVALID", "INVALID", "PB3", "PB4", "PB5", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "PC6", "PC7", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "PE5", "PE6", "INVALID", "INVALID", "PE9", "INVALID", "PE11", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
custom brain_input_pin_e 1 bits, U08, @OFFSET@, [0:6], @@brain_input_pin_e_enum@@
#define brain_pin_e_enum "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "NONE", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
#define brain_pin_e_enum "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
custom brain_pin_e 4 bits, U32, @OFFSET@, [0:6], @@brain_pin_e_enum@@
custom brain_pin_e 1 bits, U08, @OFFSET@, [0:7], @@brain_pin_e_enum@@
#define pin_output_mode_e_enum "default", "default inverted", "open collector", "open collector inverted"
custom pin_output_mode_e 4 bits, U32, @OFFSET@, [0:1], @@pin_output_mode_e_enum@@
custom pin_output_mode_e 1 bits, U08, @OFFSET@, [0:1], @@pin_output_mode_e_enum@@
custom pin_input_mode_e 1 scalar, U08, @OFFSET@, "todo", 1, 0, 0, 20, 1
custom air_pressure_sensor_type_e 4 bits, U32, @OFFSET@, [0:3] "Custom", "DENSO183", "MPX4250", "HONDA3BAR", "NEON_2003", "22012AA090", "3 Bar", "MPX4100", "Toyota 89420-02010", "MPX4250A", "INVALID"
#define adc_channel_e_enum "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PB0", "PB1", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "Disabled", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
custom adc_channel_e 4 bits, U32, @OFFSET@, [0:4] @@adc_channel_e_enum@@
custom adc_channel_e 1 bits, U08, @OFFSET@, [0:4] @@adc_channel_e_enum@@
struct air_pressure_sensor_config_s
float lowValue;kPa value at low volts;"kpa", 1, 0, -400, 800, 2
float highValue;kPa value at high volts;"kpa", 1, 0, -400, 800, 2
air_pressure_sensor_type_e type;
adc_channel_e hwChannel;
uint8_t[3] align;
end_struct
struct MAP_sensor_config_s @brief MAP averaging configuration
@ -214,6 +219,7 @@ end_struct
struct oil_pressure_config_s @brief Oil pressure sensor interpolation
adc_channel_e hwChannel;
uint8_t[3] align;
float v1;; "volts", 1, 0.0, 0, 10.0, 2
float value1;; "kPa", 1, 0.0, 0, 1000.0, 2
float v2;; "volts", 1, 0.0, 0, 10.0, 2
@ -359,12 +365,10 @@ angle_t globalTriggerAngleOffset;+Angle between Top Dead Center (TDC) and the fi
float analogInputDividerCoefficient;+Coefficient of input voltage dividers on your PCB;"coef", 1, 0, 0.01, 10.0, 2
float vbattDividerCoeff;+Battery Voltage input resistor divider coefficient;"coef", 1, 0, 0.01, 99.0, 2
adc_channel_e vbattAdcChannel;
float fanOnTemperature;+Cooling fan turn-on temperature threshold, in Celsuis;"*C", 1, 0, 0, 1000.0, 0
float fanOffTemperature;+Cooling fan turn-off temperature threshold, in Celsuis;"*C", 1, 0, 0, 1000.0, 0
adc_channel_e fuelLevelSensor;
float vehicleSpeedCoef;+This coefficient translates vehicle speed input frequency (in Hz) into vehicle speed, km/h;"coef", 1, 0, 0.01, 2000.0, 2
@ -387,6 +391,10 @@ log_format_e logFormat;
int HD44780height;;"index", 1, 0, 0, 300, 0
adc_channel_e tpsAdcChannel;See aslo pedalPositionAdcChannel
adc_channel_e vbattAdcChannel;
adc_channel_e fuelLevelSensor;
uint8_t[1] unusedtps;
int overrideCrankingIgnition;
int sensorChartFrequency;;"index", 1, 0, 0, 300, 0 ; size 4
@ -418,65 +426,54 @@ float globalFuelCorrection;set global_fuel_correction X;"coef", 1, 0.0,
float adcVcc;; "volts", 1, 0.0, 0, 4.0, 3
float maxKnockSubDeg;maximum total number of degrees to subtract from ignition advance\nwhen knocking
adc_channel_e mafAdcChannel;See hasMafSensor
adc_channel_e mafAdcChannel;See hasMafSensor
uint8_t[3] alignMaf;
struct afr_sensor_s
adc_channel_e hwChannel;
uint8_t[3] alignAf;
float v1;; "volts", 1, 0.0, 0, 10.0, 2
float value1;; "AFR", 1, 0.0, 0, 1000.0, 2
float v2;; "volts", 1, 0.0, 0, 10.0, 2
float value2;; "AFR", 1, 0.0, 0, 1000.0, 2
end_struct
afr_sensor_s afr
adc_channel_e throttlePedalPositionAdcChannel;Electronic throttle pedal position input\nSee also tpsAdcChannel
uint8_t[3] unusedt;
air_pressure_sensor_config_s baroSensor;@see hasBaroSensor
struct idle_hardware_s
brain_pin_e solenoidPin;
pin_output_mode_e solenoidPinMode;
int solenoidFrequency;;"Hz", 1, 0, 0, 3000, 0
brain_pin_e solenoidPin;
brain_pin_e stepperDirectionPin;
brain_pin_e stepperStepPin;
pin_output_mode_e solenoidPinMode;
end_struct
struct_no_prefix board_configuration_s
idle_hardware_s idle;
float manIdlePosition;value between 0 and 100 used in Manual mode;"%", 1, 0, 0, 100, 0
brain_pin_e fuelPumpPin;
pin_output_mode_e fuelPumpPinMode;
brain_pin_e[INJECTION_PIN_COUNT iterate] injectionPins;
pin_output_mode_e injectionPinMode;
brain_pin_e[IGNITION_PIN_COUNT iterate] ignitionPins;
pin_output_mode_e ignitionPinMode;
brain_pin_e malfunctionIndicatorPin;
pin_output_mode_e malfunctionIndicatorPinMode;
brain_pin_e fanPin;
pin_output_mode_e fanPinMode;
float mapFrequency0Kpa;;"Hz", 1, 0, 0, 100000, 2
float mapFrequency100Kpa;;"Hz", 1, 0, 0, 100000, 2
brain_pin_e clutchDownPin;some cars have a switch to indicate that clutch pedal is all the way down
pin_input_mode_e clutchDownPinMode;
brain_pin_e alternatorControlPin;
pin_output_mode_e alternatorControlPinMode;
! todo: rename to triggerSimulatorRpm
int triggerSimulatorFrequency;rpm X;"Rpm", 1, 0, 0,30000, 0
brain_pin_e[INJECTION_PIN_COUNT iterate] injectionPins;
brain_pin_e[IGNITION_PIN_COUNT iterate] ignitionPins;
pin_output_mode_e injectionPinMode;
pin_output_mode_e ignitionPinMode;
brain_pin_e HD44780_rs;
brain_pin_e HD44780_e;
brain_pin_e HD44780_db4;
brain_pin_e HD44780_db5;
brain_pin_e HD44780_db6;
@ -484,12 +481,27 @@ brain_pin_e clutchDownPin;some cars have a switch to indicate that clutch pedal
brain_pin_e gps_rx_pin;
brain_pin_e gps_tx_pin;
brain_pin_e fuelPumpPin;
pin_output_mode_e fuelPumpPinMode;
brain_pin_e malfunctionIndicatorPin;
pin_output_mode_e malfunctionIndicatorPinMode;
pin_output_mode_e fanPinMode;
brain_pin_e fanPin;
brain_pin_e clutchDownPin;some cars have a switch to indicate that clutch pedal is all the way down
brain_pin_e alternatorControlPin;
pin_output_mode_e alternatorControlPinMode;
pin_input_mode_e clutchDownPinMode;
brain_pin_e[DIGIPOT_COUNT iterate] digitalPotentiometerChipSelect;
pin_output_mode_e electronicThrottlePin1Mode;
brain_pin_e wboHeaterPin;
brain_pin_e cj125CsPin;
uint8_t[1] unusedEtbM;
! todo: rename to triggerSimulatorRpm
int triggerSimulatorFrequency;rpm X;"Rpm", 1, 0, 0,30000, 0
spi_device_e digitalPotentiometerSpiDevice;Digital Potentiometer is used by stock ECU stimulation code
brain_pin_e[DIGIPOT_COUNT iterate] digitalPotentiometerChipSelect;
custom adc_channel_mode_e 4 bits, U32, @OFFSET@, [0:1], "Off", "Slow", "Fast", "INVALID"
@ -497,41 +509,42 @@ custom adc_channel_mode_e 4 bits, U32, @OFFSET@, [0:1], "Off", "Slow", "Fas
brain_pin_e etbDirectionPin2;
brain_pin_e etbControlPin1;
brain_pin_e etbControlPin2;
pin_output_mode_e electronicThrottlePin1Mode;
brain_pin_e wboHeaterPin;
brain_pin_e cj125CsPin;
float fuelLevelEmptyTankVoltage;;"V", 1, 0, 0,10, 2
float fuelLevelFullTankVoltage;;"V", 1, 0, 0,10, 2
ego_sensor_e afr_type;AFR, WBO, EGO - whatever you like to call it;
float fuelClosedLoopAfrLowThreshold;;"ratio", 1, 0, 0, 100, 1
brain_input_pin_e[TRIGGER_INPUT_PIN_COUNT iterate] triggerInputPins;
pin_output_mode_e hip9011CsPinMode;
brain_pin_e tachOutputPin;+This implementation produces one pulse per engine cycle. See also dizzySparkOutputPin.
pin_output_mode_e tachOutputPinMode;
brain_input_pin_e[TRIGGER_INPUT_PIN_COUNT iterate] triggerInputPins;
brain_pin_e mainRelayPin;
brain_pin_e sdCardCsPin;
brain_pin_e canTxPin;
brain_pin_e canRxPin;
brain_pin_e boardTestModeJumperPin;
uint8_t[1] unusedMa2;
int idleThreadPeriodMs;
int consoleLoopPeriodMs;
int lcdThreadPeriodMs;
brain_pin_e sdCardCsPin;
int generalPeriodicThreadPeriodMs;
uint32_t tunerStudioSerialSpeed;;"BPs", 1, 0, 0,1000000, 0
brain_pin_e boardTestModeJumperPin;
can_device_mode_e canDeviceMode;
brain_pin_e canTxPin;
brain_pin_e canRxPin;
brain_pin_e[TRIGGER_SIMULATOR_PIN_COUNT iterate] triggerSimulatorPins;
pin_output_mode_e[TRIGGER_SIMULATOR_PIN_COUNT iterate] triggerSimulatorPinModes;
brain_pin_e o2heaterPin;Narrow band o2 heater, not used for CJ125. See wboHeaterPin
pin_output_mode_e o2heaterPinModeTodO;
bit is_enabled_spi_1
bit is_enabled_spi_2
bit is_enabled_spi_3
@ -566,18 +579,22 @@ bit is_enabled_spi_2
bit unused_board_984_30
brain_input_pin_e[LOGIC_ANALYZER_CHANNEL_COUNT iterate] logicAnalyzerPins;
pin_output_mode_e mainRelayPinMode;
brain_pin_e hip9011CsPin;
brain_pin_e hip9011IntHoldPin;
pin_output_mode_e hip9011IntHoldPinMode;
uint8_t[LOGIC_ANALYZER_CHANNEL_COUNT] logicAnalyzerMode;default or inverted input
int unrealisticRpmThreashold;
pin_output_mode_e mainRelayPinMode;
pin_output_mode_e[FSIO_COMMAND_COUNT iterate] gpioPinModes;
brain_pin_e[FSIO_COMMAND_COUNT iterate] fsioOutputPins;todo: more comments
brain_pin_e[EGT_CHANNEL_COUNT iterate] max31855_cs;
spi_device_e max31855spiDevice;
brain_pin_e[FSIO_COMMAND_COUNT iterate] fsioOutputPins;todo: more comments
pin_output_mode_e[FSIO_COMMAND_COUNT iterate] gpioPinModes;
custom uart_device_e 4 bits,U32, @OFFSET@, [0:1], "Off", "UART1", "UART2", "UART3"
uart_device_e consoleUartDevice;
@ -588,9 +605,7 @@ custom uart_device_e 4 bits,U32, @OFFSET@, [0:1], "Off", "UART1", "UART2", "UA
float nb2ratioTo;;"value", 1, 0, 0, 1000, 5
brain_pin_e triggerErrorPin;This pin is used for debugging - snap a logic analyzer on it and see if it's ever high
pin_output_mode_e triggerErrorPinMode;
brain_pin_e acRelayPin;
pin_output_mode_e acRelayPinMode;
@ -598,27 +613,30 @@ custom pid_dt 4 scalar, U32, @OFFSET@, "ms", 1, 0, 0, 3000,
custom fsio_pwm_freq_t 2 scalar, U16, @OFFSET@, "Hz", 1, 0, 0, 3000, 0
fsio_pwm_freq_t[FSIO_COMMAND_COUNT iterate] fsioFrequency;
brain_pin_e hip9011CsPin;
brain_pin_e hip9011IntHoldPin;
pin_output_mode_e hip9011IntHoldPinMode;
custom fsio_setting_t 4 scalar, F32, @OFFSET@, "Val", 1, 0, 0, 18000, 4
fsio_setting_t[FSIO_COMMAND_COUNT iterate] fsio_setting;
brain_pin_e spi1mosiPin;
brain_pin_e spi1misoPin;
brain_pin_e spi1sckPin;
brain_pin_e spi2mosiPin;
brain_pin_e spi2misoPin;
brain_pin_e spi2sckPin;
brain_pin_e spi3mosiPin;
brain_pin_e spi3misoPin;
brain_pin_e spi3sckPin;
brain_pin_e spi3sckPin;
brain_pin_e cdmInputPin;Saab Combustion Detection Module knock signal input pin
brain_pin_e joystickCenterPin;
brain_pin_e joystickAPin;
brain_pin_e joystickBPin;
brain_pin_e joystickCPin;
brain_pin_e joystickDPin;
uint8_t[1] unusedjoy;
#define sensor_chart_e_enum "none", "trigger", "MAP", "RPM ACCEL", "DETAILED RPM", "INVALID"
custom sensor_chart_e 4 bits, S32, @OFFSET@, [0:2], @@sensor_chart_e_enum@@
@ -629,19 +647,20 @@ custom ego_sensor_e 4 bits, S32, @OFFSET@, [0:2], @@ego_sensor_e_enum@@
maf_sensor_type_e mafSensorType;
brain_input_pin_e vehicleSpeedSensorInputPin;
brain_pin_e clutchUpPin;Some vehicles have a switch to indicate that clutch pedal is all the way up
pin_input_mode_e clutchUpPinMode;
brain_pin_e[FSIO_COMMAND_COUNT iterate] fsioDigitalInputs;todo:not finshed\nThese input pins allow us to pull toggle buttons state;
brain_input_pin_e frequencyReportingMapInputPin;
brain_input_pin_e vehicleSpeedSensorInputPin;
brain_pin_e clutchUpPin;Some vehicles have a switch to indicate that clutch pedal is all the way up
brain_input_pin_e frequencyReportingMapInputPin;
pin_input_mode_e clutchUpPinMode;
int[23] unusedspi;
end_struct
custom le_formula_t 200 string, ASCII, @OFFSET@, 200
board_configuration_s bc;
int[100] unusedspi2;
bit vvtDisplayInverted
bit fuelClosedLoopCorrectionEnabled
bit isVerboseIAC;+Print details into rusEfi console
@ -674,7 +693,9 @@ bit useFSIO5ForCriticalIssueEngineStop;Sometimes we just have to shut the engine
bit useFSIO4ForSeriousEngineWarning;Sometimes we have to miss injection on purpose to attract driver's attention
bit unused_bit_1472_29;
bit unused_bit_1472_30;
adc_channel_e hipOutputChannel;
uint8_t[3] unusedh;
custom idle_mode_e 4 bits, U32, @OFFSET@, [0:0], "Automatic", "Manual"
idle_mode_e idleMode;
@ -709,6 +730,7 @@ bit unused_1484_bit_21
int16_t primeInjFalloffTemperature;Prime injection pulse falloff temperature threshold, in Celsuis;"*C", 1, 0, 0, 1000.0, 0
adc_channel_e acSwitchAdc;A/C button input handled as analog input
uint8_t[3] unusuedsw;
int ignMathCalculateAtIndex;+At what trigger index should some ignition-related math be executed? This is a performance trick to reduce load on synchronization trigger callback.;"index", 1, 0, 0, 7000, 0
@ -719,6 +741,7 @@ bit unused_1484_bit_21
int16_t warningPeriod;set warningPeriod X;"seconds", 1, 0, 0, 60, 0
adc_channel_e vRefAdcChannel;
uint8_t[3] unusuedvref;
float knockDetectionWindowStart;
float knockDetectionWindowEnd;
@ -727,13 +750,10 @@ bit unused_1484_bit_21
float idleStepperReactionTime;;"ms", 1, 0, 1, 300, 0
float knockVThreshold;;"V", 1, 0, 1, 5, 2
custom pin_input_mode_e 4 scalar, F32, @OFFSET@, "ms", 1, 0, 0, 200, 1
pin_input_mode_e[FSIO_COMMAND_COUNT iterate] fsioInputModes;
uint8_t[12] alFIn;
adc_channel_e externalKnockSenseAdc;
int[3] unsed2342342;
int idleStepperTotalSteps;;"count", 1, 0, 5, 3000, 0
brain_pin_e stepperEnablePin;
float noAccelAfterHardLimitPeriodSecs;TODO: finish this #413;"sec", 1, 0, 0, 60, 0
@ -745,11 +765,8 @@ float[BARO_CORR_SIZE] baroCorrRpmBins;;"RPM", 1, 0, 0.0, 18000,
baro_corr_table_t baroCorrTable;
#define pin_mode_e_enum "default", "INVALID", "INVALID", "INVALID", "opendrain", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "mode12", "mode13", "mode14", "mode15", "mode16", "mode17", "mode18", "mode19", "mode20", "mode21", "mode22", "mode23", "mode24", "mode25", "mode26", "mode27", "mode28", "mode29", "mode30", "mode31", "PULLUP", "mode33", "mode34", "mode35"
custom pin_mode_e 4 bits, U32, @OFFSET@, [0:5], @@pin_mode_e_enum@@
custom pin_mode_e 1 bits, U08, @OFFSET@, [0:5], @@pin_mode_e_enum@@
pin_mode_e spi2SckMode;
pin_mode_e spi2MosiMode;
pin_mode_e spi2MisoMode;
float[CRANKING_CURVE_SIZE] crankingTpsCoef;Cranking fuel correction coefficient based on TPS;"%", 1, 0, 0.0, 700.0, 2
float[CRANKING_CURVE_SIZE] crankingTpsBins;;"%", 1, 0, 0.0, 100.0, 2
@ -768,18 +785,22 @@ custom pin_mode_e 4 bits, U32, @OFFSET@, [0:5], @@pin_mode_e_enum@@
int step1RpmWindow;RPMs prior to step1rpm point where ignition advance is retarded;"rpm", 1, 0, 0, 3000.0, 2
pid_s idleRpmPid;See cltIdleRpmBins
float wwaeBeta;Wall wetting/evaporation factor/Tau factor/fuel film;"%", 1, 0, 0.0, 1.0, 2
brain_pin_e communicationLedPin;blue LED on discovery by default
brain_pin_e runningLedPin;green LED on discovery by default
brain_pin_e binarySerialTxPin;
brain_pin_e binarySerialRxPin;
brain_pin_e[AUX_DIGITAL_VALVE_COUNT iterate] auxValves
brain_pin_e consoleSerialTxPin; todo: finish pin migration from hard-coded to configurable?
brain_pin_e consoleSerialRxPin;todo: finish pin migration from hard-coded to configurable?
float[ENGINE_NOISE_CURVE_SIZE] knockNoise;Knock sensor output knock detection threshold depending on current RPM;"v", 1, 0, 0.0, 10, 2
float[ENGINE_NOISE_CURVE_SIZE] knockNoiseRpmBins;;"RPM", 1, 0, 0.0, 18000, 2
float throttlePedalUpVoltage;;"voltage", 1, 0, -6, 6, 2
float throttlePedalWOTVoltage;+Pedal in the floor;"voltage", 1, 0, -6, 6, 2
pin_output_mode_e stepperDirectionPinMode;
int16_t startUpFuelPumpDuration;+on ECU start turn fuel pump on to build fuel pressure;"seconds", 1, 0, 0, 6000, 0
int16_t idlePidRpmDeadZone;If RPM is close enough let's leave IAC alone;"RPM", 1, 0, 0, 1000, 0
@ -794,8 +815,13 @@ custom pin_mode_e 4 bits, U32, @OFFSET@, [0:5], @@pin_mode_e_enum@@
int16_t afterCrankingIACtaperDuration;;"cycles", 1, 0, 0, 5000, 0
int16_t iacByTpsTaper;Extra IAC, in percent between 0 and 100, tapered between zero and idle deactivation TPS value;"percent", 1, 0, 0, 500, 0
brain_pin_e LIS302DLCsPin;
brain_pin_e fatalErrorPin;RED led on Discovery by default. TODO: start using this property
brain_pin_e warninigLedPin;TODO: start using this property
brain_pin_e configResetPin;
brain_pin_e LIS302DLCsPin;
int tpsAccelLength;;"cycles", 1, 0, 1, 200, 0
float tpsAccelEnrichmentThreshold;;"roc", 1, 0, 0, 200, 3
float vvtOffset;+angle between cam sensor and VVT zero position\nset vvt_offset X;"value", 1, 0, -720, 1000, 1
@ -808,15 +834,12 @@ custom pin_mode_e 4 bits, U32, @OFFSET@, [0:5], @@pin_mode_e_enum@@
float engineLoadAccelEnrichmentMultiplier;;"coeff", 1, 0, 0, 200, 3
brain_pin_e fatalErrorPin;RED led on Discovery by default. TODO: start using this property
brain_pin_e warninigLedPin;TODO: start using this property
brain_pin_e configResetPin;
uint32_t uartConsoleSerialSpeed;;"BPs", 1, 0, 0,1000000, 0
float tpsDecelEnleanmentThreshold;;"roc", 1, 0, 0, 200, 3
float tpsDecelEnleanmentMultiplier;;"coeff", 1, 0, 0, 200, 3
float slowAdcAlpha;+ExpAverage alpha coefficient;"coeff", 1, 0, 0, 200, 3
debug_mode_e debugMode;set debug_mode X
brain_pin_e[AUX_DIGITAL_VALVE_COUNT iterate] auxValves
float[WARMUP_TARGET_AFR_SIZE] warmupTargetAfrBins;CLT-based target AFR for PID-based control;"C", 1, 0, -100.0, 250.0, 2
float[WARMUP_TARGET_AFR_SIZE] warmupTargetAfr;;"AFR", 1, 0, 0.0, 20.0, 2
@ -827,25 +850,30 @@ custom pin_mode_e 4 bits, U32, @OFFSET@, [0:5], @@pin_mode_e_enum@@
float[MAP_ACCEL_TAPER] mapAccelTaperBins;;"counter", 1, 0, 0.0, 300, 0
float[MAP_ACCEL_TAPER] mapAccelTaperMult;;"mult", 1, 0, 0.0, 300, 2
brain_pin_e dizzySparkOutputPin;+This implementation makes a pulse every time one of the coils is charged, using coil dwell for pulse width. See also tachOutputPin
pin_output_mode_e dizzySparkOutputPinMode;
adc_channel_e[FSIO_ANALOG_INPUT_COUNT iterate] fsioAdc;todo: rename to fsioAnalogInputs
float fixedTiming;Fixed timing, useful for TDC testing;"deg", 1, 0, -720, 720, 2
float mapLowValueVoltage;MAP voltage for low point;"v", 1, 0, 0.0, 10, 2
float mapHighValueVoltage;MAP voltage for low point;"v", 1, 0, 0.0, 10, 2
float egoValueShift;EGO value correction;"value", 1, 0, -10.0, 10, 2
brain_pin_e[AUX_PID_COUNT iterate] auxPidPins;
brain_input_pin_e camInput;+Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts.\nTODO #660
int crankingIACposition;+IAC position during cranking;"percent", 1, 0, -100.0, 100,
pin_output_mode_e cj125CsPinMode;
brain_pin_e dizzySparkOutputPin;+This implementation makes a pulse every time one of the coils is charged, using coil dwell for pulse width. See also tachOutputPin
pin_output_mode_e dizzySparkOutputPinMode;
int crankingIACposition;+IAC position during cranking;"percent", 1, 0, -100.0, 100,
float tChargeMinRpmMinTps;;"mult", 1, 0, 0, 3, 4
float tChargeMinRpmMaxTps;;"mult", 1, 0, 0, 3, 4
float tChargeMaxRpmMinTps;;"mult", 1, 0, 0, 3, 4
float tChargeMaxRpmMaxTps;;"mult", 1, 0, 0, 3, 4
brain_pin_e[AUX_PID_COUNT iterate] auxPidPins;
fsio_pwm_freq_t[AUX_PID_COUNT iterate] auxPidFrequency;
int alternatorPwmFrequency;;"Hz", 1, 0, 0, 3000.0, 0
mass_storage_e storageMode;
spi_device_e cj125SpiDevice;
pin_output_mode_e cj125CsPinMode;
float[NARROW_BAND_WIDE_BAND_CONVERSION_SIZE] narrowToWideOxygenBins;Narrow Band WBO Approximation;"V", 1, 0, -10.0, 10.0, 3
float[NARROW_BAND_WIDE_BAND_CONVERSION_SIZE] narrowToWideOxygen;;"ratio", 1, 0, -40.0, 40.0, 2
vvt_mode_e vvtMode;set vvt_mode X
@ -867,30 +895,40 @@ float[MAP_ACCEL_TAPER] mapAccelTaperMult;;"mult", 1, 0, 0.0, 300,
int16_t etbFreq;;"Hz", 1, 0, 0, 30000, 0
pid_s fuelClosedLoopPid;
float fuelClosedLoopAfrHighThreshold;;"ratio", 1, 0, 0, 100, 1
pin_mode_e stepperEnablePinMode;
adc_channel_e cj125ua;lambda input
adc_channel_e cj125ur;heater input
custom cfg_float_t_1f 4 scalar, F32, @OFFSET@, "Val", 1, 0, -20000000, 20000000, 1
cfg_float_t_1f[IGNITION_PIN_COUNT iterate] timing_offset_cylinder;per-cylinder timing correction
pin_input_mode_e brakePedalPinMode;
float idlePidActivationTime;;"seconds", 1, 0, 0, 60, 1
spi_device_e sdCardSpiDevice;
pin_mode_e spi3SckMode;
pin_mode_e spi3MosiMode;
pin_mode_e spi3MisoMode;
spi_device_e sdCardSpiDevice;
pin_mode_e spi1SckMode;
pin_mode_e spi1MosiMode;
pin_mode_e spi1MisoMode;
brain_pin_e brakePedalPin
pin_mode_e spi2SckMode;
pin_mode_e spi2MosiMode;
pin_mode_e spi2MisoMode;
pin_mode_e spi3SckMode;
pin_mode_e spi3MosiMode;
pin_mode_e spi3MisoMode;
pin_mode_e stepperEnablePinMode;
uint8_t[2] unuseSpi3;
brain_pin_e brakePedalPin
adc_channel_e cj125ua;lambda input
adc_channel_e cj125ur;heater input
pin_input_mode_e brakePedalPinMode;
pid_s[AUX_PID_COUNT iterate] auxPid;
oil_pressure_config_s oilPressure;
spi_device_e accelerometerSpiDevice;
spi_device_e accelerometerSpiDevice;
float[FSIO_CURVE_16] fsioCurve1Bins;;"x", 1, 0, -999, 1000.0, 3
float[FSIO_CURVE_16] fsioCurve1;;"y", 1, 0, -999, 1000.0, 3
float[FSIO_CURVE_16] fsioCurve2Bins;;"x", 1, 0, -999, 1000.0, 3
@ -899,13 +937,20 @@ spi_device_e accelerometerSpiDevice;
float[FSIO_CURVE_8] fsioCurve3;;"y", 1, 0, -999, 1000.0, 3
float[FSIO_CURVE_8] fsioCurve4Bins;;"x", 1, 0, -999, 1000.0, 3
float[FSIO_CURVE_8] fsioCurve4;;"y", 1, 0, -999, 1000.0, 3
brain_input_pin_e flexFuelSensor;
brain_pin_e test557pin
brain_input_pin_e flexFuelSensor;
brain_pin_e test557pin
pin_output_mode_e stepperDirectionPinMode;
adc_channel_e externalKnockSenseAdc;
brain_pin_e stepperEnablePin;
uint8_t[1] unusedSteDiM;
uint8_t[2] unusedTest55;
float[CRANKING_ADVANCE_CURVE_SIZE] crankingAdvanceBins;Optional timing advance table for Cranking (see useSeparateAdvanceForCranking);"RPM", 1, 0, 0.0, 18000, 2
float[CRANKING_ADVANCE_CURVE_SIZE] crankingAdvance ;Optional timing advance table for Cranking (see useSeparateAdvanceForCranking);"deg", 1, 0, -20, 90, 2
brain_pin_e[SERVO_COUNT iterate] servoOutputPins;todo: more comments
int16_t coastingFuelCutRpmHigh;;"rpm", 1, 0, 0, 5000, 0
int16_t coastingFuelCutRpmLow;;"rpm", 1, 0, 0, 5000, 0
int16_t coastingFuelCutTps;percent between 0 and 100;"%", 1, 0, 0, 100, 1
@ -935,8 +980,8 @@ tChargeMode_e tChargeMode;
float[ETB_BIAS_CURVE_LENGTH] etbBiasValues;PWM bias, 0 to 100%;"ETB duty cycle bias", 1, 0.0, -100, 100.0, 2
float hip9011Gain;
int[574] unusedEnd;
int[625] unusedEnd;
end_struct

View File

@ -161,7 +161,7 @@ static void scheduleReboot(void) {
}
void runRusEfi(void) {
efiAssertVoid(CUSTOM_RM_STACK_1, getRemainingStack(chThdGetSelfX()) > 512, "init s");
efiAssertVoid(CUSTOM_RM_STACK_1, getCurrentRemainingStack() > 512, "init s");
assertEngineReference();
engine->setConfig(config);
initIntermediateLoggingBuffer();
@ -233,7 +233,7 @@ void runRusEfi(void) {
* control is around main_trigger_callback
*/
while (true) {
efiAssertVoid(CUSTOM_RM_STACK, getRemainingStack(chThdGetSelfX()) > 128, "stack#1");
efiAssertVoid(CUSTOM_RM_STACK, getCurrentRemainingStack() > 128, "stack#1");
#if (EFI_CLI_SUPPORT && !EFI_UART_ECHO_TEST_MODE) || defined(__DOXYGEN__)
// sensor state + all pending messages for our own dev console

View File

@ -1,12 +1,12 @@
// This file was generated by Version2Header
// Thu Feb 21 16:27:28 EST 2019
// Sat Feb 23 08:50:46 EST 2019
#ifndef GIT_HASH
#define GIT_HASH "7476941017b1bdfeb9257a0c233304d628bdd5c3"
#define GIT_HASH "f3b64f5227a4160df076bc68d2c29094b185bfa5"
#endif
#ifndef VCS_VERSION
#define VCS_VERSION "16799"
#define VCS_VERSION "16857"
#endif

File diff suppressed because it is too large Load Diff

View File

@ -26,7 +26,7 @@ enable2ndByteCanID = false
[TunerStudio]
queryCommand = "S"
versionInfo = "V" ; firmwave version for title bar.
signature = "rusEFI v1.04" ; signature is expected to be 7 or more characters.
signature = "rusEFI v1.05" ; signature is expected to be 7 or more characters.
[Constants]
; new packet serial format with CRC
@ -1425,7 +1425,7 @@ cmd_set_engine_type_Miata_NA2 = "w\x00\x30\x00\x2F"
field = "aux1 Bias Resistor Value", auxTempSensor1_bias_resistor
field = "aux2 TempSensor ADC input", auxTempSensor2_adcChannel
field = "aux2 Bias Resistor Value", auxTempSensor2_bias_resistor
field = "Accelerator position sensor", pedalPositionAdcChannel
field = "Accelerator position sensor", throttlePedalPositionAdcChannel
field = "Oil Pressure ADC input", oilPressure_hwChannel
field = "fuelLevelSensor", fuelLevelSensor
field = "Baro ADC input", baroSensor_hwChannel
@ -1474,7 +1474,7 @@ cmd_set_engine_type_Miata_NA2 = "w\x00\x30\x00\x2F"
field = "AFR ADC input", afr_hwChannel
field = "fuelLevelSensor", fuelLevelSensor
field = "Baro ADC input", baroSensor_hwChannel
field = "Throttle pedal Position Channel", pedalPositionAdcChannel
field = "Throttle pedal Position Channel", throttlePedalPositionAdcChannel
field = "Primary input channel", triggerInputPins1
field = "Secondary channel", triggerInputPins2
field = "Cam Sync/VVT input", camInput
@ -2221,18 +2221,18 @@ cmd_set_engine_type_Miata_NA2 = "w\x00\x30\x00\x2F"
field = "verbose", isVerboseETB
field = "Throttle Pedal Up", throttlePedalUpVoltage
field = "Throttle Pedal Wide Open", throttlePedalWOTVoltage
field = "PWM Frequency", etbFreq, {pedalPositionAdcChannel != 16}
field = "Dir #1", etbDirectionPin1, {pedalPositionAdcChannel != 16}
field = "Dir #2", etbDirectionPin2, {pedalPositionAdcChannel != 16}
field = "Control #1", etbControlPin1, {pedalPositionAdcChannel != 16}
field = "Control #2", etbControlPin2, {pedalPositionAdcChannel != 16}
field = "pFactor", etb_pFactor, {pedalPositionAdcChannel != 16}
field = "iFactor", etb_iFactor, {pedalPositionAdcChannel != 16}
field = "dFactor", etb_dFactor, {pedalPositionAdcChannel != 16}
field = "offset", etb_offset, {pedalPositionAdcChannel != 16}
field = "control period", etb_periodMs, {pedalPositionAdcChannel != 16}
field = "pid min", etb_minValue, {pedalPositionAdcChannel != 16}
field = "pid max", etb_maxValue, {pedalPositionAdcChannel != 16}
field = "PWM Frequency", etbFreq, {throttlePedalPositionAdcChannel != 16}
field = "Dir #1", etbDirectionPin1, {throttlePedalPositionAdcChannel != 16}
field = "Dir #2", etbDirectionPin2, {throttlePedalPositionAdcChannel != 16}
field = "Control #1", etbControlPin1, {throttlePedalPositionAdcChannel != 16}
field = "Control #2", etbControlPin2, {throttlePedalPositionAdcChannel != 16}
field = "pFactor", etb_pFactor, {throttlePedalPositionAdcChannel != 16}
field = "iFactor", etb_iFactor, {throttlePedalPositionAdcChannel != 16}
field = "dFactor", etb_dFactor, {throttlePedalPositionAdcChannel != 16}
field = "offset", etb_offset, {throttlePedalPositionAdcChannel != 16}
field = "control period", etb_periodMs, {throttlePedalPositionAdcChannel != 16}
field = "pid min", etb_minValue, {throttlePedalPositionAdcChannel != 16}
field = "pid max", etb_maxValue, {throttlePedalPositionAdcChannel != 16}
dialog = testSpark, "Spark"
commandButton = "Spark #1", cmd_test_spk1

View File

@ -100,7 +100,7 @@ static void vappendPrintfI(Logging *logging, const char *fmt, va_list arg) {
return;
}
intermediateLoggingBuffer.eos = 0; // reset
efiAssertVoid(CUSTOM_ERR_6603, getRemainingStack(chThdGetSelfX()) > 128, "lowstck#1b");
efiAssertVoid(CUSTOM_ERR_6603, getCurrentRemainingStack() > 128, "lowstck#1b");
chvprintf((BaseSequentialStream *) &intermediateLoggingBuffer, fmt, arg);
intermediateLoggingBuffer.buffer[intermediateLoggingBuffer.eos] = 0; // need to terminate explicitly
logging->append((char *)intermediateLoggingBuffer.buffer);
@ -110,7 +110,7 @@ static void vappendPrintfI(Logging *logging, const char *fmt, va_list arg) {
* this method acquires system lock to guard the shared intermediateLoggingBuffer memory stream
*/
void Logging::vappendPrintf(const char *fmt, va_list arg) {
efiAssertVoid(CUSTOM_ERR_6604, getRemainingStack(chThdGetSelfX()) > 128, "lowstck#5b");
efiAssertVoid(CUSTOM_ERR_6604, getCurrentRemainingStack() > 128, "lowstck#5b");
int wasLocked = lockAnyContext();
vappendPrintfI(this, fmt, arg);
if (!wasLocked) {
@ -120,7 +120,7 @@ void Logging::vappendPrintf(const char *fmt, va_list arg) {
// todo: replace with logging->appendPrintf
void appendPrintf(Logging *logging, const char *fmt, ...) {
efiAssertVoid(CUSTOM_APPEND_STACK, getRemainingStack(chThdGetSelfX()) > 128, "lowstck#4");
efiAssertVoid(CUSTOM_APPEND_STACK, getCurrentRemainingStack() > 128, "lowstck#4");
va_list ap;
va_start(ap, fmt);
logging->vappendPrintf(fmt, ap);
@ -128,7 +128,7 @@ void appendPrintf(Logging *logging, const char *fmt, ...) {
}
void Logging::appendPrintf(const char *fmt, ...) {
efiAssertVoid(CUSTOM_APPEND_STACK, getRemainingStack(chThdGetSelfX()) > 128, "lowstck#4");
efiAssertVoid(CUSTOM_APPEND_STACK, getCurrentRemainingStack() > 128, "lowstck#4");
va_list ap;
va_start(ap, fmt);
vappendPrintf(fmt, ap);
@ -250,7 +250,7 @@ void resetLogging(Logging *logging) {
* This method should only be invoked on main thread because only the main thread can write to the console
*/
void printMsg(Logging *logger, const char *fmt, ...) {
efiAssertVoid(CUSTOM_ERR_6605, getRemainingStack(chThdGetSelfX()) > 128, "lowstck#5o");
efiAssertVoid(CUSTOM_ERR_6605, getCurrentRemainingStack() > 128, "lowstck#5o");
// resetLogging(logging); // I guess 'reset' is not needed here?
appendMsgPrefix(logger);

View File

@ -40,6 +40,9 @@ efitime_t Overflow64Counter::update(uint32_t value) {
}
#endif
/**
* See also getRemainingStack()
*/
int getMaxUsedStack(uint8_t *ptr, int size) {
/**
* maximum used stack size total stack buffer size minus position of first modified byte

2
hardware/.gitignore vendored
View File

@ -1,5 +1,7 @@
*-cache.lib
*-rescue.lib
*.bak
*.kicad_pcb-bak
_saved*.sch
_autosave*.*
ibom/*

1
hardware/NUCLEO144_wing/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
!NUCLEO144_wing-cache.lib

View File

@ -0,0 +1,508 @@
EESchema-LIBRARY Version 2.3
#encoding utf-8
#
# Conn_02x36_Odd_Even
#
DEF Conn_02x36_Odd_Even J 0 40 Y N 1 F N
F0 "J" 50 1800 50 H V C CNN
F1 "Conn_02x36_Odd_Even" 50 -1900 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
Connector*:*2x??x*mm*
Connector*:*2x???Pitch*
Pin_Header_Straight_2X*
Pin_Header_Angled_2X*
Socket_Strip_Straight_2X*
Socket_Strip_Angled_2X*
$ENDFPLIST
DRAW
S -50 -1795 0 -1805 1 1 6 N
S -50 -1695 0 -1705 1 1 6 N
S -50 -1595 0 -1605 1 1 6 N
S -50 -1495 0 -1505 1 1 6 N
S -50 -1395 0 -1405 1 1 6 N
S -50 -1295 0 -1305 1 1 6 N
S -50 -1195 0 -1205 1 1 6 N
S -50 -1095 0 -1105 1 1 6 N
S -50 -995 0 -1005 1 1 6 N
S -50 -895 0 -905 1 1 6 N
S -50 -795 0 -805 1 1 6 N
S -50 -695 0 -705 1 1 6 N
S -50 -595 0 -605 1 1 6 N
S -50 -495 0 -505 1 1 6 N
S -50 -395 0 -405 1 1 6 N
S -50 -295 0 -305 1 1 6 N
S -50 -195 0 -205 1 1 6 N
S -50 -95 0 -105 1 1 6 N
S -50 5 0 -5 1 1 6 N
S -50 105 0 95 1 1 6 N
S -50 205 0 195 1 1 6 N
S -50 305 0 295 1 1 6 N
S -50 405 0 395 1 1 6 N
S -50 505 0 495 1 1 6 N
S -50 605 0 595 1 1 6 N
S -50 705 0 695 1 1 6 N
S -50 805 0 795 1 1 6 N
S -50 905 0 895 1 1 6 N
S -50 1005 0 995 1 1 6 N
S -50 1105 0 1095 1 1 6 N
S -50 1205 0 1195 1 1 6 N
S -50 1305 0 1295 1 1 6 N
S -50 1405 0 1395 1 1 6 N
S -50 1505 0 1495 1 1 6 N
S -50 1605 0 1595 1 1 6 N
S -50 1705 0 1695 1 1 6 N
S -50 1750 150 -1850 1 1 10 f
S 150 -1795 100 -1805 1 1 6 N
S 150 -1695 100 -1705 1 1 6 N
S 150 -1595 100 -1605 1 1 6 N
S 150 -1495 100 -1505 1 1 6 N
S 150 -1395 100 -1405 1 1 6 N
S 150 -1295 100 -1305 1 1 6 N
S 150 -1195 100 -1205 1 1 6 N
S 150 -1095 100 -1105 1 1 6 N
S 150 -995 100 -1005 1 1 6 N
S 150 -895 100 -905 1 1 6 N
S 150 -795 100 -805 1 1 6 N
S 150 -695 100 -705 1 1 6 N
S 150 -595 100 -605 1 1 6 N
S 150 -495 100 -505 1 1 6 N
S 150 -395 100 -405 1 1 6 N
S 150 -295 100 -305 1 1 6 N
S 150 -195 100 -205 1 1 6 N
S 150 -95 100 -105 1 1 6 N
S 150 5 100 -5 1 1 6 N
S 150 105 100 95 1 1 6 N
S 150 205 100 195 1 1 6 N
S 150 305 100 295 1 1 6 N
S 150 405 100 395 1 1 6 N
S 150 505 100 495 1 1 6 N
S 150 605 100 595 1 1 6 N
S 150 705 100 695 1 1 6 N
S 150 805 100 795 1 1 6 N
S 150 905 100 895 1 1 6 N
S 150 1005 100 995 1 1 6 N
S 150 1105 100 1095 1 1 6 N
S 150 1205 100 1195 1 1 6 N
S 150 1305 100 1295 1 1 6 N
S 150 1405 100 1395 1 1 6 N
S 150 1505 100 1495 1 1 6 N
S 150 1605 100 1595 1 1 6 N
S 150 1705 100 1695 1 1 6 N
X Pin_1 1 -200 1700 150 R 50 50 1 1 P
X Pin_2 2 300 1700 150 L 50 50 1 1 P
X Pin_3 3 -200 1600 150 R 50 50 1 1 P
X Pin_4 4 300 1600 150 L 50 50 1 1 P
X Pin_5 5 -200 1500 150 R 50 50 1 1 P
X Pin_6 6 300 1500 150 L 50 50 1 1 P
X Pin_7 7 -200 1400 150 R 50 50 1 1 P
X Pin_8 8 300 1400 150 L 50 50 1 1 P
X Pin_9 9 -200 1300 150 R 50 50 1 1 P
X Pin_10 10 300 1300 150 L 50 50 1 1 P
X Pin_20 20 300 800 150 L 50 50 1 1 P
X Pin_30 30 300 300 150 L 50 50 1 1 P
X Pin_40 40 300 -200 150 L 50 50 1 1 P
X Pin_50 50 300 -700 150 L 50 50 1 1 P
X Pin_60 60 300 -1200 150 L 50 50 1 1 P
X Pin_70 70 300 -1700 150 L 50 50 1 1 P
X Pin_11 11 -200 1200 150 R 50 50 1 1 P
X Pin_21 21 -200 700 150 R 50 50 1 1 P
X Pin_31 31 -200 200 150 R 50 50 1 1 P
X Pin_41 41 -200 -300 150 R 50 50 1 1 P
X Pin_51 51 -200 -800 150 R 50 50 1 1 P
X Pin_61 61 -200 -1300 150 R 50 50 1 1 P
X Pin_71 71 -200 -1800 150 R 50 50 1 1 P
X Pin_12 12 300 1200 150 L 50 50 1 1 P
X Pin_22 22 300 700 150 L 50 50 1 1 P
X Pin_32 32 300 200 150 L 50 50 1 1 P
X Pin_42 42 300 -300 150 L 50 50 1 1 P
X Pin_52 52 300 -800 150 L 50 50 1 1 P
X Pin_62 62 300 -1300 150 L 50 50 1 1 P
X Pin_72 72 300 -1800 150 L 50 50 1 1 P
X Pin_13 13 -200 1100 150 R 50 50 1 1 P
X Pin_23 23 -200 600 150 R 50 50 1 1 P
X Pin_33 33 -200 100 150 R 50 50 1 1 P
X Pin_43 43 -200 -400 150 R 50 50 1 1 P
X Pin_53 53 -200 -900 150 R 50 50 1 1 P
X Pin_63 63 -200 -1400 150 R 50 50 1 1 P
X Pin_14 14 300 1100 150 L 50 50 1 1 P
X Pin_24 24 300 600 150 L 50 50 1 1 P
X Pin_34 34 300 100 150 L 50 50 1 1 P
X Pin_44 44 300 -400 150 L 50 50 1 1 P
X Pin_54 54 300 -900 150 L 50 50 1 1 P
X Pin_64 64 300 -1400 150 L 50 50 1 1 P
X Pin_15 15 -200 1000 150 R 50 50 1 1 P
X Pin_25 25 -200 500 150 R 50 50 1 1 P
X Pin_35 35 -200 0 150 R 50 50 1 1 P
X Pin_45 45 -200 -500 150 R 50 50 1 1 P
X Pin_55 55 -200 -1000 150 R 50 50 1 1 P
X Pin_65 65 -200 -1500 150 R 50 50 1 1 P
X Pin_16 16 300 1000 150 L 50 50 1 1 P
X Pin_26 26 300 500 150 L 50 50 1 1 P
X Pin_36 36 300 0 150 L 50 50 1 1 P
X Pin_46 46 300 -500 150 L 50 50 1 1 P
X Pin_56 56 300 -1000 150 L 50 50 1 1 P
X Pin_66 66 300 -1500 150 L 50 50 1 1 P
X Pin_17 17 -200 900 150 R 50 50 1 1 P
X Pin_27 27 -200 400 150 R 50 50 1 1 P
X Pin_37 37 -200 -100 150 R 50 50 1 1 P
X Pin_47 47 -200 -600 150 R 50 50 1 1 P
X Pin_57 57 -200 -1100 150 R 50 50 1 1 P
X Pin_67 67 -200 -1600 150 R 50 50 1 1 P
X Pin_18 18 300 900 150 L 50 50 1 1 P
X Pin_28 28 300 400 150 L 50 50 1 1 P
X Pin_38 38 300 -100 150 L 50 50 1 1 P
X Pin_48 48 300 -600 150 L 50 50 1 1 P
X Pin_58 58 300 -1100 150 L 50 50 1 1 P
X Pin_68 68 300 -1600 150 L 50 50 1 1 P
X Pin_19 19 -200 800 150 R 50 50 1 1 P
X Pin_29 29 -200 300 150 R 50 50 1 1 P
X Pin_39 39 -200 -200 150 R 50 50 1 1 P
X Pin_49 49 -200 -700 150 R 50 50 1 1 P
X Pin_59 59 -200 -1200 150 R 50 50 1 1 P
X Pin_69 69 -200 -1700 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# Conn_02x40_Odd_Even
#
DEF Conn_02x40_Odd_Even J 0 40 Y N 1 F N
F0 "J" 50 2000 50 H V C CNN
F1 "Conn_02x40_Odd_Even" 50 -2100 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
Connector*:*2x??x*mm*
Connector*:*2x???Pitch*
Pin_Header_Straight_2X*
Pin_Header_Angled_2X*
Socket_Strip_Straight_2X*
Socket_Strip_Angled_2X*
$ENDFPLIST
DRAW
S -50 -1995 0 -2005 1 1 6 N
S -50 -1895 0 -1905 1 1 6 N
S -50 -1795 0 -1805 1 1 6 N
S -50 -1695 0 -1705 1 1 6 N
S -50 -1595 0 -1605 1 1 6 N
S -50 -1495 0 -1505 1 1 6 N
S -50 -1395 0 -1405 1 1 6 N
S -50 -1295 0 -1305 1 1 6 N
S -50 -1195 0 -1205 1 1 6 N
S -50 -1095 0 -1105 1 1 6 N
S -50 -995 0 -1005 1 1 6 N
S -50 -895 0 -905 1 1 6 N
S -50 -795 0 -805 1 1 6 N
S -50 -695 0 -705 1 1 6 N
S -50 -595 0 -605 1 1 6 N
S -50 -495 0 -505 1 1 6 N
S -50 -395 0 -405 1 1 6 N
S -50 -295 0 -305 1 1 6 N
S -50 -195 0 -205 1 1 6 N
S -50 -95 0 -105 1 1 6 N
S -50 5 0 -5 1 1 6 N
S -50 105 0 95 1 1 6 N
S -50 205 0 195 1 1 6 N
S -50 305 0 295 1 1 6 N
S -50 405 0 395 1 1 6 N
S -50 505 0 495 1 1 6 N
S -50 605 0 595 1 1 6 N
S -50 705 0 695 1 1 6 N
S -50 805 0 795 1 1 6 N
S -50 905 0 895 1 1 6 N
S -50 1005 0 995 1 1 6 N
S -50 1105 0 1095 1 1 6 N
S -50 1205 0 1195 1 1 6 N
S -50 1305 0 1295 1 1 6 N
S -50 1405 0 1395 1 1 6 N
S -50 1505 0 1495 1 1 6 N
S -50 1605 0 1595 1 1 6 N
S -50 1705 0 1695 1 1 6 N
S -50 1805 0 1795 1 1 6 N
S -50 1905 0 1895 1 1 6 N
S -50 1950 150 -2050 1 1 10 f
S 150 -1995 100 -2005 1 1 6 N
S 150 -1895 100 -1905 1 1 6 N
S 150 -1795 100 -1805 1 1 6 N
S 150 -1695 100 -1705 1 1 6 N
S 150 -1595 100 -1605 1 1 6 N
S 150 -1495 100 -1505 1 1 6 N
S 150 -1395 100 -1405 1 1 6 N
S 150 -1295 100 -1305 1 1 6 N
S 150 -1195 100 -1205 1 1 6 N
S 150 -1095 100 -1105 1 1 6 N
S 150 -995 100 -1005 1 1 6 N
S 150 -895 100 -905 1 1 6 N
S 150 -795 100 -805 1 1 6 N
S 150 -695 100 -705 1 1 6 N
S 150 -595 100 -605 1 1 6 N
S 150 -495 100 -505 1 1 6 N
S 150 -395 100 -405 1 1 6 N
S 150 -295 100 -305 1 1 6 N
S 150 -195 100 -205 1 1 6 N
S 150 -95 100 -105 1 1 6 N
S 150 5 100 -5 1 1 6 N
S 150 105 100 95 1 1 6 N
S 150 205 100 195 1 1 6 N
S 150 305 100 295 1 1 6 N
S 150 405 100 395 1 1 6 N
S 150 505 100 495 1 1 6 N
S 150 605 100 595 1 1 6 N
S 150 705 100 695 1 1 6 N
S 150 805 100 795 1 1 6 N
S 150 905 100 895 1 1 6 N
S 150 1005 100 995 1 1 6 N
S 150 1105 100 1095 1 1 6 N
S 150 1205 100 1195 1 1 6 N
S 150 1305 100 1295 1 1 6 N
S 150 1405 100 1395 1 1 6 N
S 150 1505 100 1495 1 1 6 N
S 150 1605 100 1595 1 1 6 N
S 150 1705 100 1695 1 1 6 N
S 150 1805 100 1795 1 1 6 N
S 150 1905 100 1895 1 1 6 N
X Pin_1 1 -200 1900 150 R 50 50 1 1 P
X Pin_2 2 300 1900 150 L 50 50 1 1 P
X Pin_3 3 -200 1800 150 R 50 50 1 1 P
X Pin_4 4 300 1800 150 L 50 50 1 1 P
X Pin_5 5 -200 1700 150 R 50 50 1 1 P
X Pin_6 6 300 1700 150 L 50 50 1 1 P
X Pin_7 7 -200 1600 150 R 50 50 1 1 P
X Pin_8 8 300 1600 150 L 50 50 1 1 P
X Pin_9 9 -200 1500 150 R 50 50 1 1 P
X Pin_10 10 300 1500 150 L 50 50 1 1 P
X Pin_20 20 300 1000 150 L 50 50 1 1 P
X Pin_30 30 300 500 150 L 50 50 1 1 P
X Pin_40 40 300 0 150 L 50 50 1 1 P
X Pin_50 50 300 -500 150 L 50 50 1 1 P
X Pin_60 60 300 -1000 150 L 50 50 1 1 P
X Pin_70 70 300 -1500 150 L 50 50 1 1 P
X Pin_80 80 300 -2000 150 L 50 50 1 1 P
X Pin_11 11 -200 1400 150 R 50 50 1 1 P
X Pin_21 21 -200 900 150 R 50 50 1 1 P
X Pin_31 31 -200 400 150 R 50 50 1 1 P
X Pin_41 41 -200 -100 150 R 50 50 1 1 P
X Pin_51 51 -200 -600 150 R 50 50 1 1 P
X Pin_61 61 -200 -1100 150 R 50 50 1 1 P
X Pin_71 71 -200 -1600 150 R 50 50 1 1 P
X Pin_12 12 300 1400 150 L 50 50 1 1 P
X Pin_22 22 300 900 150 L 50 50 1 1 P
X Pin_32 32 300 400 150 L 50 50 1 1 P
X Pin_42 42 300 -100 150 L 50 50 1 1 P
X Pin_52 52 300 -600 150 L 50 50 1 1 P
X Pin_62 62 300 -1100 150 L 50 50 1 1 P
X Pin_72 72 300 -1600 150 L 50 50 1 1 P
X Pin_13 13 -200 1300 150 R 50 50 1 1 P
X Pin_23 23 -200 800 150 R 50 50 1 1 P
X Pin_33 33 -200 300 150 R 50 50 1 1 P
X Pin_43 43 -200 -200 150 R 50 50 1 1 P
X Pin_53 53 -200 -700 150 R 50 50 1 1 P
X Pin_63 63 -200 -1200 150 R 50 50 1 1 P
X Pin_73 73 -200 -1700 150 R 50 50 1 1 P
X Pin_14 14 300 1300 150 L 50 50 1 1 P
X Pin_24 24 300 800 150 L 50 50 1 1 P
X Pin_34 34 300 300 150 L 50 50 1 1 P
X Pin_44 44 300 -200 150 L 50 50 1 1 P
X Pin_54 54 300 -700 150 L 50 50 1 1 P
X Pin_64 64 300 -1200 150 L 50 50 1 1 P
X Pin_74 74 300 -1700 150 L 50 50 1 1 P
X Pin_15 15 -200 1200 150 R 50 50 1 1 P
X Pin_25 25 -200 700 150 R 50 50 1 1 P
X Pin_35 35 -200 200 150 R 50 50 1 1 P
X Pin_45 45 -200 -300 150 R 50 50 1 1 P
X Pin_55 55 -200 -800 150 R 50 50 1 1 P
X Pin_65 65 -200 -1300 150 R 50 50 1 1 P
X Pin_75 75 -200 -1800 150 R 50 50 1 1 P
X Pin_16 16 300 1200 150 L 50 50 1 1 P
X Pin_26 26 300 700 150 L 50 50 1 1 P
X Pin_36 36 300 200 150 L 50 50 1 1 P
X Pin_46 46 300 -300 150 L 50 50 1 1 P
X Pin_56 56 300 -800 150 L 50 50 1 1 P
X Pin_66 66 300 -1300 150 L 50 50 1 1 P
X Pin_76 76 300 -1800 150 L 50 50 1 1 P
X Pin_17 17 -200 1100 150 R 50 50 1 1 P
X Pin_27 27 -200 600 150 R 50 50 1 1 P
X Pin_37 37 -200 100 150 R 50 50 1 1 P
X Pin_47 47 -200 -400 150 R 50 50 1 1 P
X Pin_57 57 -200 -900 150 R 50 50 1 1 P
X Pin_67 67 -200 -1400 150 R 50 50 1 1 P
X Pin_77 77 -200 -1900 150 R 50 50 1 1 P
X Pin_18 18 300 1100 150 L 50 50 1 1 P
X Pin_28 28 300 600 150 L 50 50 1 1 P
X Pin_38 38 300 100 150 L 50 50 1 1 P
X Pin_48 48 300 -400 150 L 50 50 1 1 P
X Pin_58 58 300 -900 150 L 50 50 1 1 P
X Pin_68 68 300 -1400 150 L 50 50 1 1 P
X Pin_78 78 300 -1900 150 L 50 50 1 1 P
X Pin_19 19 -200 1000 150 R 50 50 1 1 P
X Pin_29 29 -200 500 150 R 50 50 1 1 P
X Pin_39 39 -200 0 150 R 50 50 1 1 P
X Pin_49 49 -200 -500 150 R 50 50 1 1 P
X Pin_59 59 -200 -1000 150 R 50 50 1 1 P
X Pin_69 69 -200 -1500 150 R 50 50 1 1 P
X Pin_79 79 -200 -2000 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# NUCLEO144-F429ZI
#
DEF NUCLEO144-F429ZI U 0 1 Y Y 1 F N
F0 "U" -900 3725 50 H V R CNN
F1 "NUCLEO144-F429ZI" -900 3650 50 H V R CNN
F2 "Module:ST_Morpho_Connector_144_STLink" 850 -3650 50 H I L CNN
F3 "" -900 300 50 H I C CNN
ALIAS NUCLEO144-F746ZG
$FPLIST
ST*Morpho*Connector*144*STLink*
$ENDFPLIST
DRAW
S -1100 -3600 1100 3600 0 1 10 f
X PC10 1 1300 -1100 200 L 50 50 1 1 B
X PC11 2 1300 -1200 200 L 50 50 1 1 B
X PC12 3 1300 -1300 200 L 50 50 1 1 B
X PD2 4 1300 -2000 200 L 50 50 1 1 B
X VDD 5 -800 3800 200 D 50 50 1 1 W
X E5V 6 -700 3800 200 D 50 50 1 1 W
X ~BOOT0 7 -1300 3300 200 R 50 50 1 1 I
X GND 8 -800 -3800 200 U 50 50 1 1 W
X PF6 9 -1300 -700 200 R 50 50 1 1 B
X NC 10 -1300 2200 200 R 50 50 1 1 N N
X GND 20 -600 -3800 200 U 50 50 1 1 W
X ETH_MDIO/PA1 30 1300 3200 200 L 50 50 1 1 B
X PD3 40 1300 -2100 200 L 50 50 1 1 B
X PE5 50 -1300 -2300 200 R 50 50 1 1 B
X GND 60 -300 -3800 200 U 50 50 1 1 W
X PG11/ETH_TX_EN 70 -1300 500 200 R 50 50 1 1 B
X U5V 80 -100 3800 200 D 50 50 1 1 W
X PB11 90 1300 500 200 L 50 50 1 1 B
X PF7 11 -1300 -800 200 R 50 50 1 1 B
X LD2/PB7 21 1300 900 200 L 50 50 1 1 B
X PH1 31 -1300 1800 200 R 50 50 1 1 B
X PD5 41 1300 -2300 200 L 50 50 1 1 B
X PF1 51 -1300 -200 200 R 50 50 1 1 B
X PE1 61 -1300 -1900 200 R 50 50 1 1 B
X GND 71 -200 -3800 200 U 50 50 1 1 W
X GND 81 0 -3800 200 U 50 50 1 1 W
X PC7 91 1300 -800 200 L 50 50 1 1 B
X IOREF 12 -600 3800 200 D 50 50 1 1 W
X GND 22 -400 -3800 200 U 50 50 1 1 W
X PA4 32 1300 2900 200 L 50 50 1 1 B
X PG2 42 -1300 1400 200 R 50 50 1 1 B
X PF2 52 -1300 -300 200 R 50 50 1 1 B
X PE6 62 -1300 -2400 200 R 50 50 1 1 B
X GND 72 -100 -3800 200 U 50 50 1 1 W
X STLINK_TX/PD8 82 1300 -2600 200 L 50 50 1 1 B
X GND 92 100 -3800 200 U 50 50 1 1 W
X TMS/PA13 13 1300 2000 200 L 50 50 1 1 B
X BT/PC13 23 1300 -1400 200 L 50 50 1 1 B
X VBAT 33 -200 3800 200 D 50 50 1 1 W
X PD6 43 1300 -2400 200 L 50 50 1 1 B
X PF0 53 -1300 -100 200 R 50 50 1 1 B
X PG9 63 -1300 700 200 R 50 50 1 1 B
X PC9 73 1300 -1000 200 L 50 50 1 1 B
X PA5 83 1300 2800 200 L 50 50 1 1 B
X USB_VBUS/PA9 93 1300 2400 200 L 50 50 1 1 B
X ~NRST 14 -1300 3200 200 R 50 50 1 1 I
X VIN 24 -300 3800 200 D 50 50 1 1 W
X PB0 34 1300 1600 200 L 50 50 1 1 B
X PG3 44 -1300 1300 200 R 50 50 1 1 B
X PF8 54 -1300 -900 200 R 50 50 1 1 B
X PG15 64 -1300 100 200 R 50 50 1 1 B
X PC8 74 1300 -900 200 L 50 50 1 1 B
X USB_DP/PA12 84 1300 2100 200 L 50 50 1 1 B
X PB2 94 1300 1400 200 L 50 50 1 1 B
X TCK/PA14 15 1300 1900 200 L 50 50 1 1 B
X RTC_CRYSTAL/PC14 25 1300 -1500 200 L 50 50 1 1 B
X PC2 35 1300 -300 200 L 50 50 1 1 B
X PD7 45 1300 -2500 200 L 50 50 1 1 B
X PD1 55 1300 -1900 200 L 50 50 1 1 B
X PG12 65 -1300 400 200 R 50 50 1 1 B
X PB8 75 1300 800 200 L 50 50 1 1 B
X PA6 85 1300 2700 200 L 50 50 1 1 B
X USB_SOF/PA8 95 1300 2500 200 L 50 50 1 1 B
X +3V3 16 -500 3800 200 D 50 50 1 1 W
X NC 26 -1300 2300 200 R 50 50 1 1 N N
X ETH_MDC/PC1 36 1300 -200 200 L 50 50 1 1 B
X PE2 46 -1300 -2000 200 R 50 50 1 1 B
X PF9 56 -1300 -1000 200 R 50 50 1 1 B
X PG10 66 -1300 600 200 R 50 50 1 1 B
X PC6 76 1300 -700 200 L 50 50 1 1 B
X USB_DM/PA11 86 1300 2200 200 L 50 50 1 1 B
X PB1 96 1300 1500 200 L 50 50 1 1 B
X PA15 17 1300 1800 200 L 50 50 1 1 B
X RTC_CRYSTAL/PC15 27 1300 -1600 200 L 50 50 1 1 B
X PC3 37 1300 -400 200 L 50 50 1 1 B
X PE3 47 -1300 -2100 200 R 50 50 1 1 B
X PD0 57 1300 -1800 200 L 50 50 1 1 B
X NC 67 -1300 2100 200 R 50 50 1 1 N N
X PB9 77 1300 700 200 L 50 50 1 1 B
X ETH_CRS_DV/PA7 87 1300 2600 200 L 50 50 1 1 B
X PB10 97 1300 600 200 L 50 50 1 1 B
X +5V 18 -400 3800 200 D 50 50 1 1 W
X ETH_REF_CLK/PA0 28 1300 3300 200 L 50 50 1 1 B
X PC0 38 1300 -100 200 L 50 50 1 1 B
X PE4 48 -1300 -2200 200 R 50 50 1 1 B
X PG1 58 -1300 1500 200 R 50 50 1 1 B
X PG13/ETH_TXD0 68 -1300 300 200 R 50 50 1 1 B
X ETH_RXD1/PC5 78 1300 -600 200 L 50 50 1 1 B
X PB12 88 1300 400 200 L 50 50 1 1 B
X PB15 98 1300 100 200 L 50 50 1 1 B
X GND 19 -700 -3800 200 U 50 50 1 1 W
X PH0 29 -1300 1900 200 R 50 50 1 1 B
X PD4 39 1300 -2200 200 L 50 50 1 1 B
X GND 49 -500 -3800 200 U 50 50 1 1 W
X PG0 59 -1300 1600 200 R 50 50 1 1 B
X STLINK_RX/PD9 69 1300 -2700 200 L 50 50 1 1 B
X AVDD 79 800 3800 200 D 50 50 1 1 W
X PB6 89 1300 1000 200 L 50 50 1 1 B
X PB4 99 1300 1200 200 L 50 50 1 1 B
X LD3/PB14 100 1300 200 200 L 50 50 1 1 B
X PF4 110 -1300 -500 200 R 50 50 1 1 B
X PD15 120 1300 -3300 200 L 50 50 1 1 B
X PF3 130 -1300 -400 200 R 50 50 1 1 B
X PG5 140 -1300 1100 200 R 50 50 1 1 B
X PB5 101 1300 1100 200 L 50 50 1 1 B
X GND 111 200 -3800 200 U 50 50 1 1 W
X PE12 121 -1300 -3000 200 R 50 50 1 1 B
X PF12 131 -1300 -1300 200 R 50 50 1 1 B
X PG4 141 -1300 1200 200 R 50 50 1 1 B
X ETH_TXD1/PB13 102 1300 300 200 L 50 50 1 1 B
X PE8 112 -1300 -2600 200 R 50 50 1 1 B
X PF14 122 -1300 -1500 200 R 50 50 1 1 B
X PF15 132 -1300 -1600 200 R 50 50 1 1 B
X PG6/USB_GPIO_OUT 142 -1300 1000 200 R 50 50 1 1 B
X SWO/PB3 103 1300 1300 200 L 50 50 1 1 B
X PD13 113 1300 -3100 200 L 50 50 1 1 B
X PE14 123 -1300 -3200 200 R 50 50 1 1 B
X PG14 133 -1300 200 200 R 50 50 1 1 B
X GND 143 500 -3800 200 U 50 50 1 1 W
X AGND 104 800 -3800 200 U 50 50 1 1 W
X PF10 114 -1300 -1100 200 R 50 50 1 1 B
X PE9 124 -1300 -2700 200 R 50 50 1 1 B
X PF11 134 -1300 -1200 200 R 50 50 1 1 B
X GND 144 600 -3800 200 U 50 50 1 1 W
X USB_ID/PA10 105 1300 2300 200 L 50 50 1 1 B
X PD12 115 1300 -3000 200 L 50 50 1 1 B
X PE15 125 -1300 -3300 200 R 50 50 1 1 B
X GND 135 400 -3800 200 U 50 50 1 1 W
X ETH_RXD0/PC4 106 1300 -500 200 L 50 50 1 1 B
X PE7 116 -1300 -2500 200 R 50 50 1 1 B
X GND 126 300 -3800 200 U 50 50 1 1 W
X PE0 136 -1300 -1800 200 R 50 50 1 1 B
X PA2 107 1300 3100 200 L 50 50 1 1 B
X PD11 117 1300 -2900 200 L 50 50 1 1 B
X PE13 127 -1300 -3100 200 R 50 50 1 1 B
X PD10 137 1300 -2800 200 L 50 50 1 1 B
X PF5 108 -1300 -600 200 R 50 50 1 1 B
X PD14 118 1300 -3200 200 L 50 50 1 1 B
X PE11 128 -1300 -2900 200 R 50 50 1 1 B
X PG8 138 -1300 800 200 R 50 50 1 1 B
X PA3 109 1300 3000 200 L 50 50 1 1 B
X PE10 119 -1300 -2800 200 R 50 50 1 1 B
X PF13 129 -1300 -1400 200 R 50 50 1 1 B
X PG7/USB_GPIO_IN 139 -1300 900 200 R 50 50 1 1 B
ENDDRAW
ENDDEF
#
#End Library

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,63 +1,77 @@
update=2/22/2019 7:18:32 AM
update=2/24/2019 7:34:59 AM
version=1
last_client=kicad
[pcbnew]
version=1
LastNetListRead=
UseCmpFile=1
PadDrill=0.600000000000
PadDrillOvalY=0.600000000000
PadSizeH=1.500000000000
PadSizeV=1.500000000000
PcbTextSizeV=1.500000000000
PcbTextSizeH=1.500000000000
PcbTextThickness=0.300000000000
ModuleTextSizeV=1.000000000000
ModuleTextSizeH=1.000000000000
ModuleTextSizeThickness=0.150000000000
SolderMaskClearance=0.000000000000
SolderMaskMinWidth=0.000000000000
DrawSegmentWidth=0.200000000000
BoardOutlineThickness=0.100000000000
ModuleOutlineThickness=0.150000000000
[cvpcb]
version=1
NetIExt=net
[cvpcb/libraries]
EquName1=devcms
[general]
version=1
[pcbnew]
version=1
PageLayoutDescrFile=../rusefi_lib/Border.kicad_wks
LastNetListRead=frankenso.net
PadDrill=0
PadDrillOvalY=0
PadSizeH=0.70104
PadSizeV=1.6002
PcbTextSizeV=1.016
PcbTextSizeH=1.016
PcbTextThickness=0.127
ModuleTextSizeV=0.508
ModuleTextSizeH=0.508
ModuleTextSizeThickness=0.127
SolderMaskClearance=0.2
SolderMaskMinWidth=0
DrawSegmentWidth=0.127
BoardOutlineThickness=0.127
ModuleOutlineThickness=0.254
[schematic_editor]
version=1
PageLayoutDescrFile=../rusefi_lib/Border.kicad_wks
PlotDirectoryName=
SubpartIdSeparator=0
SubpartFirstId=65
NetFmtName=Pcbnew
SpiceForceRefPrefix=0
SpiceUseNetNumbers=0
LabSize=60
[eeschema]
version=1
LibDir=
LibDir=../rusefi_lib
[eeschema/libraries]
LibName1=power
LibName2=device
LibName3=switches
LibName4=relays
LibName5=motors
LibName6=transistors
LibName7=conn
LibName8=linear
LibName9=regul
LibName10=74xx
LibName11=cmos4000
LibName12=adc-dac
LibName13=memory
LibName14=xilinx
LibName15=microcontrollers
LibName16=dsp
LibName17=microchip
LibName18=analog_switches
LibName19=motorola
LibName20=texas
LibName21=intel
LibName22=audio
LibName23=interface
LibName24=digital-audio
LibName25=philips
LibName26=display
LibName27=cypress
LibName28=siliconi
LibName29=opto
LibName30=atmel
LibName31=contrib
LibName32=valves
[general]
version=1
LibName3=transistors
LibName4=conn
LibName5=linear
LibName6=regul
LibName7=74xx
LibName8=cmos4000
LibName9=adc-dac
LibName10=memory
LibName11=xilinx
LibName12=microcontrollers
LibName13=dsp
LibName14=microchip
LibName15=analog_switches
LibName16=motorola
LibName17=texas
LibName18=intel
LibName19=audio
LibName20=interface
LibName21=digital-audio
LibName22=philips
LibName23=display
LibName24=cypress
LibName25=siliconi
LibName26=opto
LibName27=atmel
LibName28=contrib
LibName29=valves
LibName30=art-electro-conn
LibName31=art-electro-conn_2
LibName32=logo
LibName33=logo_flipped
LibName34=NUCLEO

View File

@ -1 +1,608 @@
EESchema Schematic File Version 2
LIBS:power
LIBS:device
LIBS:transistors
LIBS:conn
LIBS:linear
LIBS:regul
LIBS:74xx
LIBS:cmos4000
LIBS:adc-dac
LIBS:memory
LIBS:xilinx
LIBS:microcontrollers
LIBS:dsp
LIBS:microchip
LIBS:analog_switches
LIBS:motorola
LIBS:texas
LIBS:intel
LIBS:audio
LIBS:interface
LIBS:digital-audio
LIBS:philips
LIBS:display
LIBS:cypress
LIBS:siliconi
LIBS:opto
LIBS:atmel
LIBS:contrib
LIBS:valves
LIBS:art-electro-conn
LIBS:art-electro-conn_2
LIBS:logo
LIBS:logo_flipped
LIBS:NUCLEO
LIBS:NUCLEO144_wing-cache
EELAYER 25 0
EELAYER END
$Descr B 17000 11000
encoding utf-8
Sheet 1 1
Title "nucleo144_wing"
Date "2019-01-13"
Rev "0.1"
Comp "rusEFI.com"
Comment1 ""
Comment2 ""
Comment3 ""
Comment4 ""
$EndDescr
$Comp
L NUCLEO144-F429ZI U1
U 1 1 5C728F9A
P 5000 4800
F 0 "U1" H 4100 8525 50 0000 R CNN
F 1 "NUCLEO144-F429ZI" H 4100 8450 50 0000 R CNN
F 2 "rusEFI_LIB:ST_Morpho_Connector_144_STLink" H 5850 1150 50 0001 L CNN
F 3 "" H 4100 5100 50 0001 C CNN
1 5000 4800
1 0 0 -1
$EndComp
$Comp
L NUCLEO144-F429ZI U2
U 1 1 5C729630
P 9700 5000
F 0 "U2" H 8800 8725 50 0000 R CNN
F 1 "NUCLEO144-F429ZI" H 8800 8650 50 0000 R CNN
F 2 "rusEFI_LIB:ST_Morpho_Connector_144_STLink" H 10550 1350 50 0001 L CNN
F 3 "" H 8800 5300 50 0001 C CNN
1 9700 5000
1 0 0 -1
$EndComp
$Comp
L Conn_02x40_Odd_Even J20
U 1 1 5C729B67
P 16800 6100
F 0 "J20" H 16850 8100 50 0000 C CNN
F 1 "Conn_02x40_Odd_Even" H 16850 4000 50 0000 C CNN
F 2 "" H 16800 6100 50 0001 C CNN
F 3 "" H 16800 6100 50 0001 C CNN
1 16800 6100
1 0 0 -1
$EndComp
$Comp
L Conn_02x36_Odd_Even J1
U 1 1 5C729C2B
P 11750 3100
F 0 "J1" H 11800 4900 50 0000 C CNN
F 1 "Conn_02x36_Top_Bottom" H 11800 1200 50 0001 C CNN
F 2 "Pin_Headers:Pin_Header_Straight_2x36_Pitch2.54mm" H 11750 3100 50 0001 C CNN
F 3 "" H 11750 3100 50 0001 C CNN
1 11750 3100
1 0 0 -1
$EndComp
$Comp
L Conn_02x36_Odd_Even J2
U 1 1 5C72B187
P 12350 3100
F 0 "J2" H 12400 4900 50 0000 C CNN
F 1 "Conn_02x36_Top_Bottom" H 12400 1200 50 0001 C CNN
F 2 "Pin_Headers:Pin_Header_Straight_2x36_Pitch2.54mm" H 12350 3100 50 0001 C CNN
F 3 "" H 12350 3100 50 0001 C CNN
1 12350 3100
-1 0 0 -1
$EndComp
Wire Wire Line
11550 1600 11550 1650
Wire Wire Line
11550 1650 12550 1650
Wire Wire Line
12550 1650 12550 1600
Wire Wire Line
11550 2400 11550 2450
Wire Wire Line
11550 2450 12550 2450
Wire Wire Line
12550 2450 12550 2400
Wire Wire Line
11550 2300 11550 2350
Wire Wire Line
11550 2350 12550 2350
Wire Wire Line
12550 2350 12550 2300
Wire Wire Line
11550 2200 11550 2250
Wire Wire Line
11550 2250 12550 2250
Wire Wire Line
12550 2250 12550 2200
Wire Wire Line
11550 2100 11550 2150
Wire Wire Line
11550 2150 12550 2150
Wire Wire Line
12550 2150 12550 2100
Wire Wire Line
11550 2000 11550 2050
Wire Wire Line
11550 2050 12550 2050
Wire Wire Line
12550 2050 12550 2000
Wire Wire Line
11550 1900 11550 1950
Wire Wire Line
11550 1950 12550 1950
Wire Wire Line
12550 1950 12550 1900
Wire Wire Line
11550 1800 11550 1850
Wire Wire Line
11550 1850 12550 1850
Wire Wire Line
12550 1850 12550 1800
Wire Wire Line
11550 1700 11550 1750
Wire Wire Line
11550 1750 12550 1750
Wire Wire Line
12550 1750 12550 1700
Wire Wire Line
11550 1500 11550 1550
Wire Wire Line
11550 1550 12550 1550
Wire Wire Line
12550 1550 12550 1500
Wire Wire Line
11550 1400 11550 1450
Wire Wire Line
11550 1450 12550 1450
Wire Wire Line
12550 1450 12550 1400
Wire Wire Line
11500 6400 11500 6450
Wire Wire Line
11500 6450 12500 6450
Wire Wire Line
12500 6450 12500 6400
Wire Wire Line
11500 6300 11500 6350
Wire Wire Line
11500 6350 12500 6350
Wire Wire Line
12500 6350 12500 6300
Wire Wire Line
11500 6200 11500 6250
Wire Wire Line
11500 6250 12500 6250
Wire Wire Line
12500 6250 12500 6200
Wire Wire Line
11500 6100 11500 6150
Wire Wire Line
11500 6150 12500 6150
Wire Wire Line
12500 6150 12500 6100
Wire Wire Line
11500 6800 11500 6850
Wire Wire Line
11500 6850 12500 6850
Wire Wire Line
12500 6850 12500 6800
Wire Wire Line
11500 6700 11500 6750
Wire Wire Line
11500 6750 12500 6750
Wire Wire Line
12500 6750 12500 6700
Wire Wire Line
11500 6600 11500 6650
Wire Wire Line
11500 6650 12500 6650
Wire Wire Line
12500 6650 12500 6600
Wire Wire Line
11500 6500 11500 6550
Wire Wire Line
11500 6550 12500 6550
Wire Wire Line
12500 6550 12500 6500
Wire Wire Line
11550 2800 11550 2850
Wire Wire Line
11550 2850 12550 2850
Wire Wire Line
12550 2850 12550 2800
Wire Wire Line
11550 2700 11550 2750
Wire Wire Line
11550 2750 12550 2750
Wire Wire Line
12550 2750 12550 2700
Wire Wire Line
11550 2600 11550 2650
Wire Wire Line
11550 2650 12550 2650
Wire Wire Line
12550 2650 12550 2600
Wire Wire Line
11550 2500 11550 2550
Wire Wire Line
11550 2550 12550 2550
Wire Wire Line
12550 2550 12550 2500
Wire Wire Line
11550 3200 11550 3250
Wire Wire Line
11550 3250 12550 3250
Wire Wire Line
12550 3250 12550 3200
Wire Wire Line
11550 3100 11550 3150
Wire Wire Line
11550 3150 12550 3150
Wire Wire Line
12550 3150 12550 3100
Wire Wire Line
11550 3000 11550 3050
Wire Wire Line
11550 3050 12550 3050
Wire Wire Line
12550 3050 12550 3000
Wire Wire Line
11550 2900 11550 2950
Wire Wire Line
11550 2950 12550 2950
Wire Wire Line
12550 2950 12550 2900
Wire Wire Line
11550 3600 11550 3650
Wire Wire Line
11550 3650 12550 3650
Wire Wire Line
12550 3650 12550 3600
Wire Wire Line
11550 3500 11550 3550
Wire Wire Line
11550 3550 12550 3550
Wire Wire Line
12550 3550 12550 3500
Wire Wire Line
11550 3400 11550 3450
Wire Wire Line
11550 3450 12550 3450
Wire Wire Line
12550 3450 12550 3400
Wire Wire Line
11550 3300 11550 3350
Wire Wire Line
11550 3350 12550 3350
Wire Wire Line
12550 3350 12550 3300
Wire Wire Line
11550 4000 11550 4050
Wire Wire Line
11550 4050 12550 4050
Wire Wire Line
12550 4050 12550 4000
Wire Wire Line
11550 3900 11550 3950
Wire Wire Line
11550 3950 12550 3950
Wire Wire Line
12550 3950 12550 3900
Wire Wire Line
11550 3800 11550 3850
Wire Wire Line
11550 3850 12550 3850
Wire Wire Line
12550 3850 12550 3800
Wire Wire Line
11550 3700 11550 3750
Wire Wire Line
11550 3750 12550 3750
Wire Wire Line
12550 3750 12550 3700
Wire Wire Line
11550 4400 11550 4450
Wire Wire Line
11550 4450 12550 4450
Wire Wire Line
12550 4450 12550 4400
Wire Wire Line
11550 4300 11550 4350
Wire Wire Line
11550 4350 12550 4350
Wire Wire Line
12550 4350 12550 4300
Wire Wire Line
11550 4200 11550 4250
Wire Wire Line
11550 4250 12550 4250
Wire Wire Line
12550 4250 12550 4200
Wire Wire Line
11550 4100 11550 4150
Wire Wire Line
11550 4150 12550 4150
Wire Wire Line
12550 4150 12550 4100
Wire Wire Line
11550 4800 11550 4850
Wire Wire Line
11550 4850 12550 4850
Wire Wire Line
12550 4850 12550 4800
Wire Wire Line
11550 4700 11550 4750
Wire Wire Line
11550 4750 12550 4750
Wire Wire Line
12550 4750 12550 4700
Wire Wire Line
11550 4600 11550 4650
Wire Wire Line
11550 4650 12550 4650
Wire Wire Line
12550 4650 12550 4600
Wire Wire Line
11550 4500 11550 4550
Wire Wire Line
11550 4550 12550 4550
Wire Wire Line
12550 4550 12550 4500
Wire Wire Line
11550 4900 11550 4950
Wire Wire Line
11550 4950 12550 4950
Wire Wire Line
12550 4950 12550 4900
$Comp
L Conn_02x36_Odd_Even J3
U 1 1 5C72E268
P 13500 3050
F 0 "J3" H 13550 4850 50 0000 C CNN
F 1 "Conn_02x36_Top_Bottom" H 13550 1150 50 0001 C CNN
F 2 "Pin_Headers:Pin_Header_Straight_2x36_Pitch2.54mm" H 13500 3050 50 0001 C CNN
F 3 "" H 13500 3050 50 0001 C CNN
1 13500 3050
1 0 0 -1
$EndComp
$Comp
L Conn_02x36_Odd_Even J4
U 1 1 5C72E26E
P 14100 3050
F 0 "J4" H 14150 4850 50 0000 C CNN
F 1 "Conn_02x36_Top_Bottom" H 14150 1150 50 0001 C CNN
F 2 "Pin_Headers:Pin_Header_Straight_2x36_Pitch2.54mm" H 14100 3050 50 0001 C CNN
F 3 "" H 14100 3050 50 0001 C CNN
1 14100 3050
-1 0 0 -1
$EndComp
Wire Wire Line
13300 1550 13300 1600
Wire Wire Line
13300 1600 14300 1600
Wire Wire Line
14300 1600 14300 1550
Wire Wire Line
13300 2350 13300 2400
Wire Wire Line
13300 2400 14300 2400
Wire Wire Line
14300 2400 14300 2350
Wire Wire Line
13300 2250 13300 2300
Wire Wire Line
13300 2300 14300 2300
Wire Wire Line
14300 2300 14300 2250
Wire Wire Line
13300 2150 13300 2200
Wire Wire Line
13300 2200 14300 2200
Wire Wire Line
14300 2200 14300 2150
Wire Wire Line
13300 2050 13300 2100
Wire Wire Line
13300 2100 14300 2100
Wire Wire Line
14300 2100 14300 2050
Wire Wire Line
13300 1950 13300 2000
Wire Wire Line
13300 2000 14300 2000
Wire Wire Line
14300 2000 14300 1950
Wire Wire Line
13300 1850 13300 1900
Wire Wire Line
13300 1900 14300 1900
Wire Wire Line
14300 1900 14300 1850
Wire Wire Line
13300 1750 13300 1800
Wire Wire Line
13300 1800 14300 1800
Wire Wire Line
14300 1800 14300 1750
Wire Wire Line
13300 1650 13300 1700
Wire Wire Line
13300 1700 14300 1700
Wire Wire Line
14300 1700 14300 1650
Wire Wire Line
13300 1450 13300 1500
Wire Wire Line
13300 1500 14300 1500
Wire Wire Line
14300 1500 14300 1450
Wire Wire Line
13300 1350 13300 1400
Wire Wire Line
13300 1400 14300 1400
Wire Wire Line
14300 1400 14300 1350
Wire Wire Line
13300 2750 13300 2800
Wire Wire Line
13300 2800 14300 2800
Wire Wire Line
14300 2800 14300 2750
Wire Wire Line
13300 2650 13300 2700
Wire Wire Line
13300 2700 14300 2700
Wire Wire Line
14300 2700 14300 2650
Wire Wire Line
13300 2550 13300 2600
Wire Wire Line
13300 2600 14300 2600
Wire Wire Line
14300 2600 14300 2550
Wire Wire Line
13300 2450 13300 2500
Wire Wire Line
13300 2500 14300 2500
Wire Wire Line
14300 2500 14300 2450
Wire Wire Line
13300 3150 13300 3200
Wire Wire Line
13300 3200 14300 3200
Wire Wire Line
14300 3200 14300 3150
Wire Wire Line
13300 3050 13300 3100
Wire Wire Line
13300 3100 14300 3100
Wire Wire Line
14300 3100 14300 3050
Wire Wire Line
13300 2950 13300 3000
Wire Wire Line
13300 3000 14300 3000
Wire Wire Line
14300 3000 14300 2950
Wire Wire Line
13300 2850 13300 2900
Wire Wire Line
13300 2900 14300 2900
Wire Wire Line
14300 2900 14300 2850
Wire Wire Line
13300 3550 13300 3600
Wire Wire Line
13300 3600 14300 3600
Wire Wire Line
14300 3600 14300 3550
Wire Wire Line
13300 3450 13300 3500
Wire Wire Line
13300 3500 14300 3500
Wire Wire Line
14300 3500 14300 3450
Wire Wire Line
13300 3350 13300 3400
Wire Wire Line
13300 3400 14300 3400
Wire Wire Line
14300 3400 14300 3350
Wire Wire Line
13300 3250 13300 3300
Wire Wire Line
13300 3300 14300 3300
Wire Wire Line
14300 3300 14300 3250
Wire Wire Line
13300 3950 13300 4000
Wire Wire Line
13300 4000 14300 4000
Wire Wire Line
14300 4000 14300 3950
Wire Wire Line
13300 3850 13300 3900
Wire Wire Line
13300 3900 14300 3900
Wire Wire Line
14300 3900 14300 3850
Wire Wire Line
13300 3750 13300 3800
Wire Wire Line
13300 3800 14300 3800
Wire Wire Line
14300 3800 14300 3750
Wire Wire Line
13300 3650 13300 3700
Wire Wire Line
13300 3700 14300 3700
Wire Wire Line
14300 3700 14300 3650
Wire Wire Line
13300 4350 13300 4400
Wire Wire Line
13300 4400 14300 4400
Wire Wire Line
14300 4400 14300 4350
Wire Wire Line
13300 4250 13300 4300
Wire Wire Line
13300 4300 14300 4300
Wire Wire Line
14300 4300 14300 4250
Wire Wire Line
13300 4150 13300 4200
Wire Wire Line
13300 4200 14300 4200
Wire Wire Line
14300 4200 14300 4150
Wire Wire Line
13300 4050 13300 4100
Wire Wire Line
13300 4100 14300 4100
Wire Wire Line
14300 4100 14300 4050
Wire Wire Line
13300 4750 13300 4800
Wire Wire Line
13300 4800 14300 4800
Wire Wire Line
14300 4800 14300 4750
Wire Wire Line
13300 4650 13300 4700
Wire Wire Line
13300 4700 14300 4700
Wire Wire Line
14300 4700 14300 4650
Wire Wire Line
13300 4550 13300 4600
Wire Wire Line
13300 4600 14300 4600
Wire Wire Line
14300 4600 14300 4550
Wire Wire Line
13300 4450 13300 4500
Wire Wire Line
13300 4500 14300 4500
Wire Wire Line
14300 4500 14300 4450
Wire Wire Line
13300 4850 13300 4900
Wire Wire Line
13300 4900 14300 4900
Wire Wire Line
14300 4900 14300 4850
$EndSCHEMATC

View File

@ -0,0 +1,4 @@
(fp_lib_table
(lib (name rusEFI_LIB)(type KiCad)(uri "$(KIPRJMOD)/../rusefi_lib/rusefi_lib.pretty")(options "")(descr ""))
(lib (name rusEFI_local)(type KiCad)(uri "$(KIPRJMOD)/modules")(options "")(descr ""))
)

View File

@ -0,0 +1,517 @@
(module rusEfi_4x39_Pitch2.54mm (layer F.Cu) (tedit 5C7314DC)
(descr "Through hole straight pin header, 1x39, 2.54mm pitch, single row")
(tags "Through hole pin header THT 1x39 2.54mm single row")
(fp_text reference REF** (at 0 -2.33) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text value rusEfi_4x39_Pitch2.54mm (at 0 98.85) (layer F.Fab) hide
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user %R (at 5.08 48.26 90) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start 6.88 -1.8) (end 3.28 -1.8) (layer F.CrtYd) (width 0.05))
(fp_line (start 6.88 98.3) (end 6.88 -1.8) (layer F.CrtYd) (width 0.05))
(fp_line (start 3.28 98.3) (end 6.88 98.3) (layer F.CrtYd) (width 0.05))
(fp_line (start 3.28 -1.8) (end 3.28 98.3) (layer F.CrtYd) (width 0.05))
(fp_line (start 3.75 -1.33) (end 5.08 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 3.75 0) (end 3.75 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 3.75 1.27) (end 6.41 1.27) (layer F.SilkS) (width 0.12))
(fp_line (start 3.75 97.85) (end 6.41 97.85) (layer F.SilkS) (width 0.12))
(fp_line (start 3.81 -0.635) (end 4.445 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start 3.81 97.79) (end 3.81 -0.635) (layer F.Fab) (width 0.1))
(fp_line (start 6.35 97.79) (end 3.81 97.79) (layer F.Fab) (width 0.1))
(fp_line (start 6.35 -1.27) (end 6.35 97.79) (layer F.Fab) (width 0.1))
(fp_line (start 4.445 -1.27) (end 6.35 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start 4.445 -1.27) (end 6.35 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start 6.35 -1.27) (end 6.35 97.79) (layer F.Fab) (width 0.1))
(fp_line (start 6.35 97.79) (end 3.81 97.79) (layer F.Fab) (width 0.1))
(fp_line (start 3.81 97.79) (end 3.81 -0.635) (layer F.Fab) (width 0.1))
(fp_line (start 3.81 -0.635) (end 4.445 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start 3.75 97.85) (end 6.41 97.85) (layer F.SilkS) (width 0.12))
(fp_line (start 3.75 1.27) (end 6.41 1.27) (layer F.SilkS) (width 0.12))
(fp_line (start 3.75 0) (end 3.75 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 3.75 -1.33) (end 5.08 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 3.28 -1.8) (end 3.28 98.3) (layer F.CrtYd) (width 0.05))
(fp_line (start 3.28 98.3) (end 6.88 98.3) (layer F.CrtYd) (width 0.05))
(fp_line (start 6.88 98.3) (end 6.88 -1.8) (layer F.CrtYd) (width 0.05))
(fp_line (start 6.88 -1.8) (end 3.28 -1.8) (layer F.CrtYd) (width 0.05))
(fp_text user %R (at 5.08 48.26 90) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user %R (at 7.62 48.26 90) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start 9.42 -1.8) (end 5.82 -1.8) (layer F.CrtYd) (width 0.05))
(fp_line (start 9.42 98.3) (end 9.42 -1.8) (layer F.CrtYd) (width 0.05))
(fp_line (start 5.82 98.3) (end 9.42 98.3) (layer F.CrtYd) (width 0.05))
(fp_line (start 5.82 -1.8) (end 5.82 98.3) (layer F.CrtYd) (width 0.05))
(fp_line (start 6.29 -1.33) (end 7.62 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 6.29 0) (end 6.29 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 6.29 1.27) (end 8.95 1.27) (layer F.SilkS) (width 0.12))
(fp_line (start 6.29 97.85) (end 8.95 97.85) (layer F.SilkS) (width 0.12))
(fp_line (start 6.35 -0.635) (end 6.985 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start 6.35 97.79) (end 6.35 -0.635) (layer F.Fab) (width 0.1))
(fp_line (start 8.89 97.79) (end 6.35 97.79) (layer F.Fab) (width 0.1))
(fp_line (start 8.89 -1.27) (end 8.89 97.79) (layer F.Fab) (width 0.1))
(fp_line (start 6.985 -1.27) (end 8.89 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start 6.985 -1.27) (end 8.89 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start 8.89 -1.27) (end 8.89 97.79) (layer F.Fab) (width 0.1))
(fp_line (start 8.89 97.79) (end 6.35 97.79) (layer F.Fab) (width 0.1))
(fp_line (start 6.35 97.79) (end 6.35 -0.635) (layer F.Fab) (width 0.1))
(fp_line (start 6.35 -0.635) (end 6.985 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start 6.29 97.85) (end 8.95 97.85) (layer F.SilkS) (width 0.12))
(fp_line (start 6.29 1.27) (end 8.95 1.27) (layer F.SilkS) (width 0.12))
(fp_line (start 6.29 0) (end 6.29 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 6.29 -1.33) (end 7.62 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 5.82 -1.8) (end 5.82 98.3) (layer F.CrtYd) (width 0.05))
(fp_line (start 5.82 98.3) (end 9.42 98.3) (layer F.CrtYd) (width 0.05))
(fp_line (start 9.42 98.3) (end 9.42 -1.8) (layer F.CrtYd) (width 0.05))
(fp_line (start 9.42 -1.8) (end 5.82 -1.8) (layer F.CrtYd) (width 0.05))
(fp_text user %R (at 7.62 48.26 90) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user %R (at 2.54 48.26 90) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start 4.34 -1.8) (end 0.74 -1.8) (layer F.CrtYd) (width 0.05))
(fp_line (start 4.34 98.3) (end 4.34 -1.8) (layer F.CrtYd) (width 0.05))
(fp_line (start 0.74 98.3) (end 4.34 98.3) (layer F.CrtYd) (width 0.05))
(fp_line (start 0.74 -1.8) (end 0.74 98.3) (layer F.CrtYd) (width 0.05))
(fp_line (start 1.21 -1.33) (end 2.54 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 1.21 0) (end 1.21 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 1.21 1.27) (end 3.87 1.27) (layer F.SilkS) (width 0.12))
(fp_line (start 1.21 97.85) (end 3.87 97.85) (layer F.SilkS) (width 0.12))
(fp_line (start 1.27 -0.635) (end 1.905 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start 1.27 97.79) (end 1.27 -0.635) (layer F.Fab) (width 0.1))
(fp_line (start 3.81 97.79) (end 1.27 97.79) (layer F.Fab) (width 0.1))
(fp_line (start 3.81 -1.27) (end 3.81 97.79) (layer F.Fab) (width 0.1))
(fp_line (start 1.905 -1.27) (end 3.81 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start 1.905 -1.27) (end 3.81 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start 3.81 -1.27) (end 3.81 97.79) (layer F.Fab) (width 0.1))
(fp_line (start 3.81 97.79) (end 1.27 97.79) (layer F.Fab) (width 0.1))
(fp_line (start 1.27 97.79) (end 1.27 -0.635) (layer F.Fab) (width 0.1))
(fp_line (start 1.27 -0.635) (end 1.905 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start 1.21 97.85) (end 3.87 97.85) (layer F.SilkS) (width 0.12))
(fp_line (start 1.21 1.27) (end 3.87 1.27) (layer F.SilkS) (width 0.12))
(fp_line (start 1.21 0) (end 1.21 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 1.21 -1.33) (end 2.54 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 0.74 -1.8) (end 0.74 98.3) (layer F.CrtYd) (width 0.05))
(fp_line (start 0.74 98.3) (end 4.34 98.3) (layer F.CrtYd) (width 0.05))
(fp_line (start 4.34 98.3) (end 4.34 -1.8) (layer F.CrtYd) (width 0.05))
(fp_line (start 4.34 -1.8) (end 0.74 -1.8) (layer F.CrtYd) (width 0.05))
(fp_text user %R (at 2.54 48.26 90) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user %R (at 0 48.26 90) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start 1.8 -1.8) (end -1.8 -1.8) (layer F.CrtYd) (width 0.05))
(fp_line (start 1.8 98.3) (end 1.8 -1.8) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.8 98.3) (end 1.8 98.3) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.8 -1.8) (end -1.8 98.3) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.33 -1.33) (end 0 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start -1.33 0) (end -1.33 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start -1.33 1.27) (end 1.33 1.27) (layer F.SilkS) (width 0.12))
(fp_line (start -1.33 97.85) (end 1.33 97.85) (layer F.SilkS) (width 0.12))
(fp_line (start -1.27 -0.635) (end -0.635 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start -1.27 97.79) (end -1.27 -0.635) (layer F.Fab) (width 0.1))
(fp_line (start 1.27 97.79) (end -1.27 97.79) (layer F.Fab) (width 0.1))
(fp_line (start 1.27 -1.27) (end 1.27 97.79) (layer F.Fab) (width 0.1))
(fp_line (start -0.635 -1.27) (end 1.27 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start -0.635 -1.27) (end 1.27 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start 1.27 -1.27) (end 1.27 97.79) (layer F.Fab) (width 0.1))
(fp_line (start 1.27 97.79) (end -1.27 97.79) (layer F.Fab) (width 0.1))
(fp_line (start -1.27 97.79) (end -1.27 -0.635) (layer F.Fab) (width 0.1))
(fp_line (start -1.27 -0.635) (end -0.635 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start -1.33 97.85) (end 1.33 97.85) (layer F.SilkS) (width 0.12))
(fp_line (start -1.33 1.27) (end 1.33 1.27) (layer F.SilkS) (width 0.12))
(fp_line (start -1.33 0) (end -1.33 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start -1.33 -1.33) (end 0 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start -1.8 -1.8) (end -1.8 98.3) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.8 98.3) (end 1.8 98.3) (layer F.CrtYd) (width 0.05))
(fp_line (start 1.8 98.3) (end 1.8 -1.8) (layer F.CrtYd) (width 0.05))
(fp_line (start 1.8 -1.8) (end -1.8 -1.8) (layer F.CrtYd) (width 0.05))
(fp_text user %R (at 0 48.26 90) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(pad 39 thru_hole oval (at 5.08 96.52) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 38 thru_hole oval (at 5.08 93.98) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 37 thru_hole oval (at 5.08 91.44) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 36 thru_hole oval (at 5.08 88.9) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 35 thru_hole oval (at 5.08 86.36) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 34 thru_hole oval (at 5.08 83.82) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 33 thru_hole oval (at 5.08 81.28) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 32 thru_hole oval (at 5.08 78.74) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 31 thru_hole oval (at 5.08 76.2) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 30 thru_hole oval (at 5.08 73.66) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 29 thru_hole oval (at 5.08 71.12) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 28 thru_hole oval (at 5.08 68.58) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 27 thru_hole oval (at 5.08 66.04) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 26 thru_hole oval (at 5.08 63.5) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 25 thru_hole oval (at 5.08 60.96) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 24 thru_hole oval (at 5.08 58.42) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 23 thru_hole oval (at 5.08 55.88) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 22 thru_hole oval (at 5.08 53.34) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 21 thru_hole oval (at 5.08 50.8) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 20 thru_hole oval (at 5.08 48.26) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 19 thru_hole oval (at 5.08 45.72) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 18 thru_hole oval (at 5.08 43.18) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 17 thru_hole oval (at 5.08 40.64) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 16 thru_hole oval (at 5.08 38.1) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 15 thru_hole oval (at 5.08 35.56) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 14 thru_hole oval (at 5.08 33.02) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 13 thru_hole oval (at 5.08 30.48) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 12 thru_hole oval (at 5.08 27.94) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 11 thru_hole oval (at 5.08 25.4) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 10 thru_hole oval (at 5.08 22.86) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 9 thru_hole oval (at 5.08 20.32) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 8 thru_hole oval (at 5.08 17.78) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 7 thru_hole oval (at 5.08 15.24) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 6 thru_hole oval (at 5.08 12.7) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 5 thru_hole oval (at 5.08 10.16) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 2 thru_hole oval (at 5.08 2.54) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 1 thru_hole rect (at 5.08 0) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 3 thru_hole oval (at 5.08 5.08) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 4 thru_hole oval (at 5.08 7.62) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 5 thru_hole oval (at 5.08 10.16) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 6 thru_hole oval (at 5.08 12.7) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 7 thru_hole oval (at 5.08 15.24) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 8 thru_hole oval (at 5.08 17.78) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 9 thru_hole oval (at 5.08 20.32) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 10 thru_hole oval (at 5.08 22.86) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 11 thru_hole oval (at 5.08 25.4) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 12 thru_hole oval (at 5.08 27.94) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 13 thru_hole oval (at 5.08 30.48) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 14 thru_hole oval (at 5.08 33.02) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 15 thru_hole oval (at 5.08 35.56) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 16 thru_hole oval (at 5.08 38.1) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 17 thru_hole oval (at 5.08 40.64) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 18 thru_hole oval (at 5.08 43.18) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 19 thru_hole oval (at 5.08 45.72) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 20 thru_hole oval (at 5.08 48.26) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 21 thru_hole oval (at 5.08 50.8) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 22 thru_hole oval (at 5.08 53.34) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 23 thru_hole oval (at 5.08 55.88) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 24 thru_hole oval (at 5.08 58.42) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 25 thru_hole oval (at 5.08 60.96) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 26 thru_hole oval (at 5.08 63.5) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 27 thru_hole oval (at 5.08 66.04) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 28 thru_hole oval (at 5.08 68.58) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 29 thru_hole oval (at 5.08 71.12) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 30 thru_hole oval (at 5.08 73.66) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 31 thru_hole oval (at 5.08 76.2) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 32 thru_hole oval (at 5.08 78.74) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 33 thru_hole oval (at 5.08 81.28) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 34 thru_hole oval (at 5.08 83.82) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 35 thru_hole oval (at 5.08 86.36) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 36 thru_hole oval (at 5.08 88.9) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 37 thru_hole oval (at 5.08 91.44) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 38 thru_hole oval (at 5.08 93.98) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 39 thru_hole oval (at 5.08 96.52) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 39 thru_hole oval (at 7.62 96.52) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 38 thru_hole oval (at 7.62 93.98) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 37 thru_hole oval (at 7.62 91.44) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 36 thru_hole oval (at 7.62 88.9) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 35 thru_hole oval (at 7.62 86.36) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 34 thru_hole oval (at 7.62 83.82) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 33 thru_hole oval (at 7.62 81.28) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 32 thru_hole oval (at 7.62 78.74) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 31 thru_hole oval (at 7.62 76.2) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 30 thru_hole oval (at 7.62 73.66) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 29 thru_hole oval (at 7.62 71.12) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 28 thru_hole oval (at 7.62 68.58) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 27 thru_hole oval (at 7.62 66.04) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 26 thru_hole oval (at 7.62 63.5) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 25 thru_hole oval (at 7.62 60.96) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 24 thru_hole oval (at 7.62 58.42) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 23 thru_hole oval (at 7.62 55.88) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 22 thru_hole oval (at 7.62 53.34) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 21 thru_hole oval (at 7.62 50.8) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 20 thru_hole oval (at 7.62 48.26) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 19 thru_hole oval (at 7.62 45.72) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 18 thru_hole oval (at 7.62 43.18) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 17 thru_hole oval (at 7.62 40.64) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 16 thru_hole oval (at 7.62 38.1) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 15 thru_hole oval (at 7.62 35.56) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 14 thru_hole oval (at 7.62 33.02) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 13 thru_hole oval (at 7.62 30.48) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 12 thru_hole oval (at 7.62 27.94) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 11 thru_hole oval (at 7.62 25.4) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 10 thru_hole oval (at 7.62 22.86) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 9 thru_hole oval (at 7.62 20.32) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 8 thru_hole oval (at 7.62 17.78) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 7 thru_hole oval (at 7.62 15.24) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 6 thru_hole oval (at 7.62 12.7) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 5 thru_hole oval (at 7.62 10.16) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 2 thru_hole oval (at 7.62 2.54) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 1 thru_hole rect (at 7.62 0) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 3 thru_hole oval (at 7.62 5.08) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 4 thru_hole oval (at 7.62 7.62) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 5 thru_hole oval (at 7.62 10.16) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 6 thru_hole oval (at 7.62 12.7) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 7 thru_hole oval (at 7.62 15.24) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 8 thru_hole oval (at 7.62 17.78) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 9 thru_hole oval (at 7.62 20.32) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 10 thru_hole oval (at 7.62 22.86) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 11 thru_hole oval (at 7.62 25.4) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 12 thru_hole oval (at 7.62 27.94) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 13 thru_hole oval (at 7.62 30.48) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 14 thru_hole oval (at 7.62 33.02) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 15 thru_hole oval (at 7.62 35.56) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 16 thru_hole oval (at 7.62 38.1) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 17 thru_hole oval (at 7.62 40.64) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 18 thru_hole oval (at 7.62 43.18) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 19 thru_hole oval (at 7.62 45.72) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 20 thru_hole oval (at 7.62 48.26) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 21 thru_hole oval (at 7.62 50.8) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 22 thru_hole oval (at 7.62 53.34) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 23 thru_hole oval (at 7.62 55.88) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 24 thru_hole oval (at 7.62 58.42) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 25 thru_hole oval (at 7.62 60.96) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 26 thru_hole oval (at 7.62 63.5) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 27 thru_hole oval (at 7.62 66.04) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 28 thru_hole oval (at 7.62 68.58) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 29 thru_hole oval (at 7.62 71.12) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 30 thru_hole oval (at 7.62 73.66) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 31 thru_hole oval (at 7.62 76.2) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 32 thru_hole oval (at 7.62 78.74) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 33 thru_hole oval (at 7.62 81.28) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 34 thru_hole oval (at 7.62 83.82) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 35 thru_hole oval (at 7.62 86.36) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 36 thru_hole oval (at 7.62 88.9) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 37 thru_hole oval (at 7.62 91.44) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 38 thru_hole oval (at 7.62 93.98) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 39 thru_hole oval (at 7.62 96.52) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 39 thru_hole oval (at 2.54 96.52) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 38 thru_hole oval (at 2.54 93.98) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 37 thru_hole oval (at 2.54 91.44) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 36 thru_hole oval (at 2.54 88.9) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 35 thru_hole oval (at 2.54 86.36) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 34 thru_hole oval (at 2.54 83.82) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 33 thru_hole oval (at 2.54 81.28) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 32 thru_hole oval (at 2.54 78.74) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 31 thru_hole oval (at 2.54 76.2) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 30 thru_hole oval (at 2.54 73.66) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 29 thru_hole oval (at 2.54 71.12) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 28 thru_hole oval (at 2.54 68.58) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 27 thru_hole oval (at 2.54 66.04) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 26 thru_hole oval (at 2.54 63.5) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 25 thru_hole oval (at 2.54 60.96) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 24 thru_hole oval (at 2.54 58.42) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 23 thru_hole oval (at 2.54 55.88) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 22 thru_hole oval (at 2.54 53.34) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 21 thru_hole oval (at 2.54 50.8) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 20 thru_hole oval (at 2.54 48.26) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 19 thru_hole oval (at 2.54 45.72) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 17 thru_hole oval (at 2.54 40.64) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 16 thru_hole oval (at 2.54 38.1) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 15 thru_hole oval (at 2.54 35.56) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 14 thru_hole oval (at 2.54 33.02) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 13 thru_hole oval (at 2.54 30.48) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 12 thru_hole oval (at 2.54 27.94) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 11 thru_hole oval (at 2.54 25.4) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 10 thru_hole oval (at 2.54 22.86) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 9 thru_hole oval (at 2.54 20.32) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 8 thru_hole oval (at 2.54 17.78) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 7 thru_hole oval (at 2.54 15.24) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 6 thru_hole oval (at 2.54 12.7) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 5 thru_hole oval (at 2.54 10.16) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 4 thru_hole oval (at 2.54 7.62) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 3 thru_hole oval (at 2.54 5.08) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 1 thru_hole rect (at 2.54 0) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 2 thru_hole oval (at 2.54 2.54) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 3 thru_hole oval (at 2.54 5.08) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 4 thru_hole oval (at 2.54 7.62) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 5 thru_hole oval (at 2.54 10.16) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 6 thru_hole oval (at 2.54 12.7) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 7 thru_hole oval (at 2.54 15.24) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 8 thru_hole oval (at 2.54 17.78) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 9 thru_hole oval (at 2.54 20.32) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 10 thru_hole oval (at 2.54 22.86) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 11 thru_hole oval (at 2.54 25.4) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 12 thru_hole oval (at 2.54 27.94) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 13 thru_hole oval (at 2.54 30.48) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 14 thru_hole oval (at 2.54 33.02) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 15 thru_hole oval (at 2.54 35.56) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 16 thru_hole oval (at 2.54 38.1) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 17 thru_hole oval (at 2.54 40.64) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 18 thru_hole oval (at 2.54 43.18) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 19 thru_hole oval (at 2.54 45.72) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 20 thru_hole oval (at 2.54 48.26) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 21 thru_hole oval (at 2.54 50.8) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 22 thru_hole oval (at 2.54 53.34) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 23 thru_hole oval (at 2.54 55.88) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 24 thru_hole oval (at 2.54 58.42) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 25 thru_hole oval (at 2.54 60.96) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 26 thru_hole oval (at 2.54 63.5) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 27 thru_hole oval (at 2.54 66.04) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 28 thru_hole oval (at 2.54 68.58) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 29 thru_hole oval (at 2.54 71.12) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 30 thru_hole oval (at 2.54 73.66) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 31 thru_hole oval (at 2.54 76.2) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 32 thru_hole oval (at 2.54 78.74) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 33 thru_hole oval (at 2.54 81.28) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 34 thru_hole oval (at 2.54 83.82) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 35 thru_hole oval (at 2.54 86.36) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 36 thru_hole oval (at 2.54 88.9) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 37 thru_hole oval (at 2.54 91.44) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 38 thru_hole oval (at 2.54 93.98) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 39 thru_hole oval (at 2.54 96.52) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 39 thru_hole oval (at 0 96.52) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 38 thru_hole oval (at 0 93.98) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 37 thru_hole oval (at 0 91.44) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 36 thru_hole oval (at 0 88.9) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 35 thru_hole oval (at 0 86.36) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 34 thru_hole oval (at 0 83.82) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 33 thru_hole oval (at 0 81.28) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 32 thru_hole oval (at 0 78.74) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 31 thru_hole oval (at 0 76.2) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 30 thru_hole oval (at 0 73.66) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 29 thru_hole oval (at 0 71.12) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 28 thru_hole oval (at 0 68.58) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 27 thru_hole oval (at 0 66.04) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 26 thru_hole oval (at 0 63.5) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 25 thru_hole oval (at 0 60.96) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 24 thru_hole oval (at 0 58.42) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 23 thru_hole oval (at 0 55.88) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 22 thru_hole oval (at 0 53.34) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 21 thru_hole oval (at 0 50.8) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 20 thru_hole oval (at 0 48.26) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 19 thru_hole oval (at 0 45.72) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 18 thru_hole oval (at 0 43.18) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 17 thru_hole oval (at 0 40.64) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 16 thru_hole oval (at 0 38.1) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 15 thru_hole oval (at 0 35.56) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 14 thru_hole oval (at 0 33.02) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 13 thru_hole oval (at 0 30.48) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 12 thru_hole oval (at 0 27.94) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 11 thru_hole oval (at 0 25.4) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 10 thru_hole oval (at 0 22.86) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 9 thru_hole oval (at 0 20.32) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 8 thru_hole oval (at 0 17.78) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 7 thru_hole oval (at 0 15.24) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 6 thru_hole oval (at 0 12.7) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 1 thru_hole rect (at 0 0) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 2 thru_hole oval (at 0 2.54) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 3 thru_hole oval (at 0 5.08) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 4 thru_hole oval (at 0 7.62) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 5 thru_hole oval (at 0 10.16) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 6 thru_hole oval (at 0 12.7) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 7 thru_hole oval (at 0 15.24) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 8 thru_hole oval (at 0 17.78) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 9 thru_hole oval (at 0 20.32) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 10 thru_hole oval (at 0 22.86) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 11 thru_hole oval (at 0 25.4) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 12 thru_hole oval (at 0 27.94) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 13 thru_hole oval (at 0 30.48) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 14 thru_hole oval (at 0 33.02) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 15 thru_hole oval (at 0 35.56) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 16 thru_hole oval (at 0 38.1) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 17 thru_hole oval (at 0 40.64) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 18 thru_hole oval (at 0 43.18) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 19 thru_hole oval (at 0 45.72) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 20 thru_hole oval (at 0 48.26) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 21 thru_hole oval (at 0 50.8) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 22 thru_hole oval (at 0 53.34) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 23 thru_hole oval (at 0 55.88) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 24 thru_hole oval (at 0 58.42) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 25 thru_hole oval (at 0 60.96) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 26 thru_hole oval (at 0 63.5) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 27 thru_hole oval (at 0 66.04) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 28 thru_hole oval (at 0 68.58) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 29 thru_hole oval (at 0 71.12) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 30 thru_hole oval (at 0 73.66) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 31 thru_hole oval (at 0 76.2) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 32 thru_hole oval (at 0 78.74) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 33 thru_hole oval (at 0 81.28) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 34 thru_hole oval (at 0 83.82) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 35 thru_hole oval (at 0 86.36) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 36 thru_hole oval (at 0 88.9) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 37 thru_hole oval (at 0 91.44) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 38 thru_hole oval (at 0 93.98) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 39 thru_hole oval (at 0 96.52) (size 1.9 1.9) (drill 1.2) (layers *.Cu *.Mask))
(pad 1 smd rect (at 1.27 0) (size 2.54 1.524) (layers F.Cu))
(pad 2 smd rect (at 1.27 2.54) (size 2.54 1.524) (layers F.Cu))
(pad 3 smd rect (at 1.27 5.08) (size 2.54 1.524) (layers F.Cu))
(pad 4 smd rect (at 1.27 7.62) (size 2.54 1.524) (layers F.Cu))
(pad 5 smd rect (at 1.27 10.16) (size 2.54 1.524) (layers F.Cu))
(pad 6 smd rect (at 1.27 12.7) (size 2.54 1.524) (layers F.Cu))
(pad 7 smd rect (at 1.27 15.24) (size 2.54 1.524) (layers F.Cu))
(pad 8 smd rect (at 1.27 17.78) (size 2.54 1.524) (layers F.Cu))
(pad 9 smd rect (at 1.27 20.32) (size 2.54 1.524) (layers F.Cu))
(pad 10 smd rect (at 1.27 22.86) (size 2.54 1.524) (layers F.Cu))
(pad 11 smd rect (at 1.27 25.4) (size 2.54 1.524) (layers F.Cu))
(pad 12 smd rect (at 1.27 27.94) (size 2.54 1.524) (layers F.Cu))
(pad 13 smd rect (at 1.27 30.48) (size 2.54 1.524) (layers F.Cu))
(pad 14 smd rect (at 1.27 33.02) (size 2.54 1.524) (layers F.Cu))
(pad 15 smd rect (at 1.27 35.56) (size 2.54 1.524) (layers F.Cu))
(pad 16 smd rect (at 1.27 38.1) (size 2.54 1.524) (layers F.Cu))
(pad 17 smd rect (at 1.27 40.64) (size 2.54 1.524) (layers F.Cu))
(pad 18 smd rect (at 1.27 43.18) (size 2.54 1.524) (layers F.Cu))
(pad 19 smd rect (at 1.27 45.72) (size 2.54 1.524) (layers F.Cu))
(pad 20 smd rect (at 1.27 48.26) (size 2.54 1.524) (layers F.Cu))
(pad 21 smd rect (at 1.27 50.8) (size 2.54 1.524) (layers F.Cu))
(pad 22 smd rect (at 1.27 53.34) (size 2.54 1.524) (layers F.Cu))
(pad 23 smd rect (at 1.27 55.88) (size 2.54 1.524) (layers F.Cu))
(pad 24 smd rect (at 1.27 58.42) (size 2.54 1.524) (layers F.Cu))
(pad 25 smd rect (at 1.27 60.96) (size 2.54 1.524) (layers F.Cu))
(pad 26 smd rect (at 1.27 63.5) (size 2.54 1.524) (layers F.Cu))
(pad 27 smd rect (at 1.27 66.04) (size 2.54 1.524) (layers F.Cu))
(pad 28 smd rect (at 1.27 68.58) (size 2.54 1.524) (layers F.Cu))
(pad 29 smd rect (at 1.27 71.12) (size 2.54 1.524) (layers F.Cu))
(pad 30 smd rect (at 1.27 73.66) (size 2.54 1.524) (layers F.Cu))
(pad 31 smd rect (at 1.27 76.2) (size 2.54 1.524) (layers F.Cu))
(pad 32 smd rect (at 1.27 78.74) (size 2.54 1.524) (layers F.Cu))
(pad 33 smd rect (at 1.27 81.28) (size 2.54 1.524) (layers F.Cu))
(pad 34 smd rect (at 1.27 83.82) (size 2.54 1.524) (layers F.Cu))
(pad 35 smd rect (at 1.27 86.36) (size 2.54 1.524) (layers F.Cu))
(pad 36 smd rect (at 1.27 88.9) (size 2.54 1.524) (layers F.Cu))
(pad 37 smd rect (at 1.27 91.44) (size 2.54 1.524) (layers F.Cu))
(pad 38 smd rect (at 1.27 93.98) (size 2.54 1.524) (layers F.Cu))
(pad 39 smd rect (at 1.27 96.52) (size 2.54 1.524) (layers F.Cu))
(pad 1 smd rect (at 6.35 0) (size 2.54 1.524) (layers F.Cu))
(pad 2 smd rect (at 6.35 2.54) (size 2.54 1.524) (layers F.Cu))
(pad 3 smd rect (at 6.35 5.08) (size 2.54 1.524) (layers F.Cu))
(pad 4 smd rect (at 6.35 7.62) (size 2.54 1.524) (layers F.Cu))
(pad 5 smd rect (at 6.35 10.16) (size 2.54 1.524) (layers F.Cu))
(pad 6 smd rect (at 6.35 12.7) (size 2.54 1.524) (layers F.Cu))
(pad 7 smd rect (at 6.35 15.24) (size 2.54 1.524) (layers F.Cu))
(pad 8 smd rect (at 6.35 17.78) (size 2.54 1.524) (layers F.Cu))
(pad 9 smd rect (at 6.35 20.32) (size 2.54 1.524) (layers F.Cu))
(pad 10 smd rect (at 6.35 22.86) (size 2.54 1.524) (layers F.Cu))
(pad 11 smd rect (at 6.35 25.4) (size 2.54 1.524) (layers F.Cu))
(pad 12 smd rect (at 6.35 27.94) (size 2.54 1.524) (layers F.Cu))
(pad 13 smd rect (at 6.35 30.48) (size 2.54 1.524) (layers F.Cu))
(pad 14 smd rect (at 6.35 33.02) (size 2.54 1.524) (layers F.Cu))
(pad 15 smd rect (at 6.35 35.56) (size 2.54 1.524) (layers F.Cu))
(pad 16 smd rect (at 6.35 38.1) (size 2.54 1.524) (layers F.Cu))
(pad 17 smd rect (at 6.35 40.64) (size 2.54 1.524) (layers F.Cu))
(pad 18 smd rect (at 6.35 43.18) (size 2.54 1.524) (layers F.Cu))
(pad 19 smd rect (at 6.35 45.72) (size 2.54 1.524) (layers F.Cu))
(pad 20 smd rect (at 6.35 48.26) (size 2.54 1.524) (layers F.Cu))
(pad 21 smd rect (at 6.35 50.8) (size 2.54 1.524) (layers F.Cu))
(pad 22 smd rect (at 6.35 53.34) (size 2.54 1.524) (layers F.Cu))
(pad 23 smd rect (at 6.35 55.88) (size 2.54 1.524) (layers F.Cu))
(pad 24 smd rect (at 6.35 58.42) (size 2.54 1.524) (layers F.Cu))
(pad 25 smd rect (at 6.35 60.96) (size 2.54 1.524) (layers F.Cu))
(pad 26 smd rect (at 6.35 63.5) (size 2.54 1.524) (layers F.Cu))
(pad 27 smd rect (at 6.35 66.04) (size 2.54 1.524) (layers F.Cu))
(pad 28 smd rect (at 6.35 68.58) (size 2.54 1.524) (layers F.Cu))
(pad 29 smd rect (at 6.35 71.12) (size 2.54 1.524) (layers F.Cu))
(pad 30 smd rect (at 6.35 73.66) (size 2.54 1.524) (layers F.Cu))
(pad 31 smd rect (at 6.35 76.2) (size 2.54 1.524) (layers F.Cu))
(pad 32 smd rect (at 6.35 78.74) (size 2.54 1.524) (layers F.Cu))
(pad 33 smd rect (at 6.35 81.28) (size 2.54 1.524) (layers F.Cu))
(pad 34 smd rect (at 6.35 83.82) (size 2.54 1.524) (layers F.Cu))
(pad 35 smd rect (at 6.35 86.36) (size 2.54 1.524) (layers F.Cu))
(pad 36 smd rect (at 6.35 88.9) (size 2.54 1.524) (layers F.Cu))
(pad 37 smd rect (at 6.35 91.44) (size 2.54 1.524) (layers F.Cu))
(pad 38 smd rect (at 6.35 93.98) (size 2.54 1.524) (layers F.Cu))
(pad 39 smd rect (at 6.35 96.52) (size 2.54 1.524) (layers F.Cu))
(model ${KISYS3DMOD}/Pin_Headers.3dshapes/Pin_Header_Straight_1x39_Pitch2.54mm.wrl
(at (xyz 0 0 0))
(scale (xyz 1 1 1))
(rotate (xyz 0 0 0))
)
)

@ -1 +1 @@
Subproject commit 58e6444ca7ccc6a8fbb9ac68c461d74521d5b562
Subproject commit 32bb51f9c206c15a5635de248eeefd3875b7b777

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
<roms>
<!-- Generated by ConfigDefinition utility on Wed Mar 28 16:53:21 EEST 2018 -->
<!-- Generated by ConfigDefinition utility on Fri Feb 22 22:08:31 EST 2019 -->
<rom>
<romid>
@ -166,13 +166,13 @@
<table type="3D" name="Baro Correction"
category="Fuel"
storageaddress="67c" sizex="4"
storageaddress="63c" sizex="4"
sizey="4" storagetype="float" endian="big">
<scaling units="Pressure" expression="x" to_byte="x" format="0.00" fineincrement=".1" coarseincrement="1"/>
<table type="X Axis" storageaddress="65c" storagetype="float" endian="big">
<table type="X Axis" storageaddress="61c" storagetype="float" endian="big">
<scaling units="kPa" expression="x" to_byte="x" format="0.00" fineincrement=".1" coarseincrement="1"/>
</table>
<table type="Y Axis" storageaddress="66c" storagetype="float" endian="big">
<table type="Y Axis" storageaddress="62c" storagetype="float" endian="big">
<scaling units="RPM" expression="x" to_byte="x" format="0.00" fineincrement=".1" coarseincrement="1"/>
</table>
</table>
@ -188,22 +188,22 @@
</table>
</table>
<table type="2D" name="FSIO Curve #1" storageaddress="ba8"
<table type="2D" name="FSIO Curve #1" storageaddress="af4"
category="FSIO"
sizex="16" storagetype="float" endian="big">
<scaling units="Compensation (%)" expression="x" to_byte="x" format="0.00"
fineincrement=".01" coarseincrement="0.1"/>
<table type="X Axis" storageaddress="b68" storagetype="float" endian="big">
<table type="X Axis" storageaddress="ab4" storagetype="float" endian="big">
<scaling units="uni" expression="x" to_byte="x" format="0.00" fineincrement=".1" coarseincrement="1"/>
</table>
</table>
<table type="2D" name="FSIO Curve #2" storageaddress="c28"
<table type="2D" name="FSIO Curve #2" storageaddress="b74"
category="FSIO"
sizex="16" storagetype="float" endian="big">
<scaling units="Compensation (%)" expression="x" to_byte="x" format="0.00"
fineincrement=".01" coarseincrement="0.1"/>
<table type="X Axis" storageaddress="be8" storagetype="float" endian="big">
<table type="X Axis" storageaddress="b34" storagetype="float" endian="big">
<scaling units="uni" expression="x" to_byte="x" format="0.00" fineincrement=".1" coarseincrement="1"/>
</table>
</table>
@ -218,11 +218,11 @@
</table>
<table type="2D" name="Engine Noise" storageaddress="78c"
<table type="2D" name="Engine Noise" storageaddress="730"
sizex="8" storagetype="float" endian="big">
<scaling units="Volts" expression="x" to_byte="x" format="0.00"
fineincrement=".01" coarseincrement="0.1"/>
<table type="X Axis" storageaddress="7ac" storagetype="float" endian="big">
<table type="X Axis" storageaddress="750" storagetype="float" endian="big">
<scaling units="RPM" expression="x" to_byte="x" format="0.00" fineincrement=".1" coarseincrement="1"/>
</table>
</table>

View File

@ -64,6 +64,8 @@ extern "C"
void printToConsole(char *p);
#define getCurrentRemainingStack() getRemainingStack(chThdGetSelfX())
int getRemainingStack(thread_t *otp);
// todo: move somewhere else?

View File

@ -17,6 +17,10 @@
#include "boards.h"
//#define chThdGetSelfX() 0
//#define getRemainingStack(x) (999999)
#define getCurrentRemainingStack() (999999)
// this is needed by all DECLARE_ENGINE_PARAMETER_* usages
#include "engine_configuration_generated_structures.h"