SVDiag - Rev 9 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| I | O | M | D | N |
Variable Information |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| Y | N |
|
|
|
|
|
|
|
|
|
|
| Range |
|
|
|
|
|
|
|
|
|
|
|
Software Variable Name | Standard Reference Name | FDD Reference | Description | [I]nput
[O]uput
[M]oduleInternal
[D]isplay
[N]onVolatileMemory
Usage | OEM | 1X, 1Y, 1Z, 1I, 1BS
2X, 2Y, 2Z, 2I, 2BS
etc
Graph Settings | Initalization Value | Min | Max | Resolution | Unit Test Tolerance (+/-) | Units | Type | Memory Segment |
|
|
|
|
|
|
Variables |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MtrDrvrInitStart_Cnt_lgc |
| FDD49 SineVoltageGenerationDiagnostics |
| I |
|
| 0 | 0 | 1 | n/a |
| Counts | boolean |
|
|
|
|
|
|
|
VswitchClosed_Cnt_lgc | En_Relay_Closed | FDD49 SineVoltageGenerationDiagnostics |
| I |
|
| 0 | 0 | 1 | n/a |
| Counts | boolean |
|
|
|
|
|
|
|
FETFaultPhase_Cnt_enum |
| FDD49 SineVoltageGenerationDiagnostics |
| O |
|
| 0 | 0 | 3 | 1 | 0.00E+00 | Counts | uint8 |
|
|
|
|
|
|
|
FETFaultType_Cnt_enum |
| FDD49 SineVoltageGenerationDiagnostics |
| O |
|
| 0 | 0 | 2 | 1 | 0.00E+00 | Counts | uint8 |
|
|
|
|
|
|
|
MtrDrvrInitComplete_Cnt_lgc | MtrDrvrInit_Complete | FDD49 SineVoltageGenerationDiagnostics |
| O |
|
| 0 | 0 | 1 | n/a | n/a | Counts | boolean |
|
|
|
|
|
|
|
SVDiag_MtrDrvInitStartTime_mS_M_u32p0 |
| FDD49 SineVoltageGenerationDiagnostics |
| M |
|
| 0 | 0 | 4294967295 | 1 | 1.00E+00 | mS | uint32 |
|
|
|
|
|
|
|
SVDiag_ResetWaitLoop_Cnt_M_lgc |
| FDD49 SineVoltageGenerationDiagnostics |
| M |
|
| 0 | 0 | 1 | n/a | n/a | Counts | boolean |
|
|
|
|
|
|
|
SVDiag_MtrDrvInitActive_Cnt_M_lgc |
| FDD49 SineVoltageGenerationDiagnostics |
| M |
|
| 0 | 0 | 1 | n/a | n/a | Counts | boolean |
|
|
|
|
|
|
|
SVDiag_MtrDrvInitComp_Cnt_M_lgc |
| FDD49 SineVoltageGenerationDiagnostics |
| M |
|
| 0 | 0 | 1 | n/a | n/a | Counts | boolean |
|
|
|
|
|
|
|
SVDiag_GateDriveFltAcc_Cnt_M_u16 |
| FDD49 SineVoltageGenerationDiagnostics |
| M |
|
| 0 | 0 | 65535 | 1 | 1.00E+00 | Counts | uint16 |
|
|
|
|
|
|
|
SVDiag_GenGateDriveFltAcc_Cnt_M_u16 |
| FDD49 SineVoltageGenerationDiagnostics |
| M |
|
| 0 | 0 | 200 | 1 | 1.00E+00 | Counts | uint16 |
|
|
|
|
|
|
|
SVDiag_OnStateFltAcc_Cnt_M_u16 |
| FDD49 SineVoltageGenerationDiagnostics |
| M |
|
| 0 | 0 | 65535 | 1 | 1.00E+00 | Counts | uint16 |
|
|
|
|
|
|
|
SVDiag_FETFaultType_Cnt_M_enum |
| FDD49 SineVoltageGenerationDiagnostics |
| M |
|
| 0 | 0 | 2 | 1 | 0.00E+00 | Counts | uint8 |
|
|
|
|
|
|
|
SVDiag_FETFaultPhase_Cnt_M_enum |
| FDD49 SineVoltageGenerationDiagnostics |
| M |
|
| 0 | 0 | 3 | 1 | 0.00E+00 | Counts | uint8 |
|
|
|
|
|
|
|
SVDiag_GateDrvFltSts_Cnt_D_b16 | FET_DiagSts | FDD49 SineVoltageGenerationDiagnostics |
| D |
|
| 0 | 0 | 65535 | 1 | 0.00E+00 | Counts | uint16 |
|
|
|
|
|
|
|
ExpectedOnTimeA_Cnt_u32 | ExpectedOnTime_A | FDD49 SineVoltageGenerationDiagnostics | Expected On Time | I | N |
| 0 | 0 | 200000 | 1 | Counts | uint32 | uint32 |
|
|
|
|
|
|
|
ExpectedOnTimeB_Cnt_u32 | ExpectedOnTime_B | FDD49 SineVoltageGenerationDiagnostics | Expected On Time | I | N |
| 0 | 0 | 200000 | 1 | Counts | uint32 | uint32 |
|
|
|
|
|
|
|
ExpectedOnTimeC_Cnt_u32 | ExpectedOnTime_C | FDD49 SineVoltageGenerationDiagnostics | Expected On Time | I | N |
| 0 | 0 | 200000 | 1 | Counts | uint32 | uint32 |
|
|
|
|
|
|
|
MeasuredOnTimeA_Cnt_u32 | MeasuredOnTime_A | FDD49 SineVoltageGenerationDiagnostics | Measured On Time | I | N |
| 0 | 0 | 200000 | 1 | Counts | uint32 | uint32 |
|
|
|
|
|
|
|
MeasuredOnTimeB_Cnt_u32 | MeasuredOnTime_B | FDD49 SineVoltageGenerationDiagnostics | Measured On Time | I | N |
| 0 | 0 | 200000 | 1 | Counts | uint32 | uint32 |
|
|
|
|
|
|
|
MeasuredOnTimeC_Cnt_u32 | MeasuredOnTime_C | FDD49 SineVoltageGenerationDiagnostics | Measured On Time | I | N |
| 0 | 0 | 200000 | 1 | Counts | uint32 | uint32 |
|
|
|
|
|
|
|
SVDiag_FilterSV_Cnt_M_s18p13[3] | n/a | FDD49 SineVoltageGenerationDiagnostics | LPF State Variable for each phase | M | N |
| -262136 | 262136 | 0.0001221 | 8.00E+00 | Counts | s18p13_T | s18p13_T |
|
|
|
|
|
|
|
SVDiag_HighResPhsReasDisable_M_u8 | HighResPhsReasDisable | FDD49 SineVoltageGenerationDiagnostics | Delay counter for HighRes Phase Reasonableness | M | N |
| 0 | 0 | 100 | 1 | 1 | Counts | uint8 |
|
|
|
|
|
|
|
SVDiag_LowResPhsReasDisable_M_u8 | LowResPhsReasDisable | FDD49 SineVoltageGenerationDiagnostics | Delay counter for LowRes Phase Reasonableness | M | N |
| 0 | 0 | 100 | 1 | 1 | Counts | uint8 |
|
|
|
|
|
|
|
PDActivateTest_Cnt_T_lgc | PDActivateTest | FDD49 SineVoltageGenerationDiagnostics |
| I | N |
| 0 | 0 | 1 | n/a |
| Counts | boolean |
|
|
|
|
|
|
|
SVDiag_LRPRHighLimit_Cnt_D_f32[3] | LRPRHighLimit | FDD49 SineVoltageGenerationDiagnostics |
| D | N |
| 0 | 0 | 160000 | single precision float | 1.00E+00 | Counts | float32 |
|
|
|
|
|
|
|
SVDiag_LRPRLowLimit_Cnt_D_f32[3] | LRPRLowLimit | FDD49 SineVoltageGenerationDiagnostics |
| D | N |
| 0 | 0 | 160000 | single precision float | 1.00E+00 | Counts | float32 |
|
|
|
|
|
|
|
SVDiag_MaxNrCommOffVltg_Cnt_M_f32 |
| FDD49 SineVoltageGenerationDiagnostics |
| M | N |
| 0 | 0 | 86400 | single precision float | 1.00E+00 | Counts | float32 |
|
|
|
|
|
|
|
LRPRCorrectedMtrPosCaptured_rev_u0p16 |
| FDD49 SineVoltageGenerationDiagnostics |
| I | N |
| 0 | 0 | 1 | 0.0000152587890625 |
| Rev | u0p16_T |
|
|
|
|
|
|
|
LRPRPhaseadvanceCaptured_Cnt_s16 |
| FDD49 SineVoltageGenerationDiagnostics |
| I | N |
| 0 | -1536 | 1536 | 1 |
| Counts | sint16 |
|
|
|
|
|
|
|
LRPRModulationIndexCaptured_Uls_f32 |
| FDD49 SineVoltageGenerationDiagnostics |
| I | N |
| 0 | -1 | 1 | 0.0000152587890625 |
| Uls | float32 |
|
|
|
|
|
|
|
SVDiag - Rev 9 |
|
|
| N |
Calibration Information | Achieved in Software Design |
|
|
|
| Y |
|
|
|
|
|
|
|
| Range |
|
|
|
|
|
| P |
Software Calibration Name | Standard Reference Name | FDD Reference | Description | Tuning Set | OEM | 1X, 1Y, 1Z, 1I, 1BS
2X, 2Y, 2Z, 2I, 2BS
etc
Graph Settings | Default Value | Min | Max | Units | Type | Memory Segment |
|
|
|
|
Calibrations |
| FDD49 SineVoltageGenerationDiagnostics |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
k_OnStateDiag_Cnt_str |
| FDD49 SineVoltageGenerationDiagnostics |
| N | N |
| {1500, 512, 1} |
|
|
| DiagSettings_Str |
|
|
|
|
|
k_OnStateDiag_Cnt_str.Threshold |
| FDD49 SineVoltageGenerationDiagnostics |
| N | N |
| 1500 | 0 | 65535 | Counts |
|
|
|
|
|
|
k_OnStateDiag_Cnt_str.PStep |
| FDD49 SineVoltageGenerationDiagnostics |
| N | N |
| 512 | 0 | 65535 | Counts |
|
|
|
|
|
|
k_OnStateDiag_Cnt_str.NStep |
| FDD49 SineVoltageGenerationDiagnostics |
| N | N |
| 1 | 0 | 65535 | Counts |
|
|
|
|
|
|
k_GateDriveDiag_Cnt_str |
| FDD49 SineVoltageGenerationDiagnostics |
| N | N |
| {1500, 512, 1} |
|
|
| DiagSettings_Str |
|
|
|
|
|
k_GateDriveDiag_Cnt_str.Threshold |
| FDD49 SineVoltageGenerationDiagnostics |
| N | N |
| 1500 | 0 | 65535 | Counts |
|
|
|
|
|
|
k_GateDriveDiag_Cnt_str.PStep |
| FDD49 SineVoltageGenerationDiagnostics |
| N | N |
| 512 | 0 | 65535 | Counts |
|
|
|
|
|
|
k_GateDriveDiag_Cnt_str.NStep |
| FDD49 SineVoltageGenerationDiagnostics |
| N | N |
| 1 | 0 | 65535 | Counts |
|
|
|
|
|
|
k_GenGateDrvFltThrsh_Cnt_u16 |
| FDD49 SineVoltageGenerationDiagnostics |
| N | N |
| 200 | 0 | 200 | Counts | uint16 |
|
|
|
|
|
k_GateDrvInitDwellTime_mS_u16p0 |
| FDD49 SineVoltageGenerationDiagnostics |
| N | N |
| 10 | 0 | 255 | mS | uint16 |
|
|
|
|
|
k_PhsReasErrorTerm_Cnt_s16 | k_PhsReasErrorTerm | FDD49 SineVoltageGenerationDiagnostics | Known divergence between measured and expected | N | N |
| 0 | -10000 | 10000 | Counts | sint16 |
|
|
|
|
|
k_ErrorFiltKn_Cnt_u16 | k_ErrorFiltKn | FDD49 SineVoltageGenerationDiagnostics | Tau of error filter | N | N |
| 1462 | 0 | 65535 | Counts | uint16 |
|
|
|
|
|
k_ErrorThresh_Cnt_u32 | k_ErrorThresh | FDD49 SineVoltageGenerationDiagnostics | Error Threshold (compared to absolute sum) | N | N |
| 14400 | 0 | 200000 | Counts | uint32 |
|
|
|
|
|
k_PhsReasEnableThresh_Cnt_u32 | k_PhsReasEnableThresh | FDD49 SineVoltageGenerationDiagnostics | Threshold below which the phase reasonableness diagnostic is enabled | N | N |
| 5760 | 0 | 200000 | Counts | uint32 |
|
|
|
|
|
k_PhsReasErrorTerm_Cnt_s16 | k_PhsReasErrorTerm | FDD49 SineVoltageGenerationDiagnostics | Known divergence between measured and expected | N | N |
| 0 | -10000 | 10000 | Counts | sint16 |
|
|
|
|
|
k_ErrorFiltKn_Cnt_u16 | k_ErrorFiltKn | FDD49 SineVoltageGenerationDiagnostics | Tau of error filter | N | N |
| 1462 | 0 | 65535 | Counts | uint16 |
|
|
|
|
|
k_ErrorThresh_Cnt_u32 | k_ErrorThresh | FDD49 SineVoltageGenerationDiagnostics | Error Threshold (compared to absolute sum) | N | N |
| 14400 | 0 | 200000 | Counts | uint32 |
|
|
|
|
|
k_PhsReasEnableThresh_Cnt_u32 | k_PhsReasEnableThresh | FDD49 SineVoltageGenerationDiagnostics | Threshold below which the phase reasonableness diagnostic is enabled | N | N |
| 5760 | 0 | 200000 | Counts | uint32 |
|
|
|
|
|
k_LowResPhsReas_Cnt_str |
| FDD49 SineVoltageGenerationDiagnostics | Fault Accumulation parameters | N | N |
| {100,1,500} |
|
|
| DiagSettings_Str |
|
|
|
|
|
k_LowResPhsReas_Cnt_str.Pstep | k_LowResPhsReas_Pstep | FDD49 SineVoltageGenerationDiagnostics | Fault Accumulation parameters | N | N |
| 100 | 0 | 1000 | Counts |
|
|
|
|
|
|
k_LowResPhsReas_Cnt_str.NStep | k_LowResPhsReas_Nstep | FDD49 SineVoltageGenerationDiagnostics | Fault Accumulation parameters | N | N |
| 1 | 0 | 1000 | Counts |
|
|
|
|
|
|
k_LowResPhsReas_Cnt_str.Threshold | k_LowResPhsReas_Threshold | FDD49 SineVoltageGenerationDiagnostics | Fault Accumulation parameters | N | N |
| 500 | 0 | 1000 | Counts |
|
|
|
|
|
|
k_LowResPhsReasMaxTol_Uls_f32 | k_LowResPhsReas_MaxTol | FDD49 SineVoltageGenerationDiagnostics | Maximum Tolerance factor | N | N |
| 1.2 | 0 | 2 | Uls | float32 |
|
|
|
|
|
k_LowResPhsReasMinTol_Uls_f32 | k_LowResPhsReas_MinTol | FDD49 SineVoltageGenerationDiagnostics | Min imum Tolrance factor | N | N |
| 0.4 | 0 | 2 | Uls | float32 |
|
|
|
|
|
k_LRPRMtrVelDiagEnable_MtrRadpS_T_f32 | k_LowResPhsReasMtrVelDiagEnable | FDD49 SineVoltageGenerationDiagnostics | Motor ve;locity required for disbale diagnostics | N | N |
| 300 | 0 | 1000 | MtrRadpS | float32 |
|
|
|
|
|
t_CommOffsetTblY_Cnt_u16[2] | t_CommOffsetTblY | FDD49 SineVoltageGenerationDiagnostics |
| N | N |
| {63,0} |
|
| Counts | uint16 |
|
|
|
|
|
k_LRPRCommOffsetMargin_Uls_f32 | k_LowResPhsReas_CommOffsetMargin | FDD49 SineVoltageGenerationDiagnostics |
| N | N |
| 1.05 | 0.8 | 1.2 | Uls | float32 |
|
|
|
|
|
SVDiag - Rev 9 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Variable Information (Global Variables Only) |
|
| Achieved in Software Design | Used in Module List |
|
|
|
|
| Layer 2 | Layer 3 | Layer 4 | Layer 5 |
Constant Name | Description | Uints | Type | Engineering Value | ADC | ADC Diagnostics | Data Memory Verification | DC Link Power Control | DSP Computational Integrity | DSP SPI driver | Event Manager Driver | External Memory Driver | Flash Programming Exec | GPIO | Illegal OpCode Handler | Interrupt Handler | Motor Current Driver | Motor Driver Diagnostics | Motor Position Driver | Phase Feedback Capture | Powerdown Control | Primary Shutdown Control | Program Flow | Program Memory Diagnostic | PWM Duty Cycle | Redundant Memory Check | Redundant Rapid Shutdown | Scheduler | Stack Monitor | State Dependent Task List | System Boot & Startup | System Control | Temperature Sensor Diagnostic | Unused Interrupt Handler | Utilization Monitor | Watchdog Dirver | Smith | Battery Voltage | Battery Voltage Diagnostics | Diagnostic CTC Manager | Diagnostic Manager | Diagnostics Application Services | EOL TorqueTest | Flash Boot Loader | Flight Recorder | Handwheel Position | Handwheel Torque | Motor Control Output Conversion | Motor Position Diagnostics | Motor Position Initialization | Motor Velocity | Motor Velocity Tachometer | Serial Communications I/O | Serial Communications Services | States and Modes | Tuning Select | Vehicle Power Mode | Vehicle Speed | Controller Polarity | Current Estimation | Handwheel Velocity | Inverse Motor Model | Motor Temperature Estimation | Motor Torque Limit | Output Reasonableness Dianostic | Parameter Estimation | Quadrant and rate Detection | Active Pull Compensation | Assist | Damping | Duty Cycle | Kinematic Integrity Diagnostic | Long Term Vehicle Speed Diagnostic | Max Assist Limit | Return | State Output Control | Torque Output |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2.2a | Data File: |
|
|
|
|
|
|
|
|
|
|
|
|
| Header: | extern <TYPE><TAB><NAME>; |
|
|
|
|
|
|
|
|
|
| Source: | #pragma DATA_SECTION(<ROOTNAME>, "<SEGMENT>"); <TYPE> <NAME>; |
|
|
|
|
|
|
|
|
|
| EOL Constants: |
|
|
|
|
|
|
|
|
|
|
|
|
| Header: | extern <TYPE><TAB><NAME>; |
|
|
|
|
|
|
|
|
|
| Source: | #pragma DATA_SECTION(<ROOTNAME>, "<SEGMENT>"); <TYPE> <NAME>; |
|
|
|
|
|
|
|
|
|
| Global (Embedded) Constants: |
|
|
|
|
|
|
|
|
|
|
|
|
| Header: | #define <NAME><COL40><VALUE> |
|
|
|
|
|
|
|
|
|
| A2L Name |
|
|
|
|
|
|
|
|
|
|
|
|
| Measurement: | rte_<SWC>_<NAME> |
|
|
|
|
|
|
|
|
|
| Calibration Constants: |
|
|
|
|
|
|
|
|
|
|
|
|
| Tuning ID: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| Tuning: | N | Index Range: |
|
|
|
|
|
|
|
|
|
|
| Header: | extern CONST(<AUTOSAR_TYPE>, CAL_CONST) <NAME>; |
|
|
|
|
|
|
|
|
|
| Source: | #pragma DATA_SECTION(<ROOTNAME>, ".<SEGMENT>"); CONST(<AUTOSAR_TYPE>, CAL_CONST) <NAME> = <VALUE>; |
|
|
|
|
|
|
|
|
|
| eCal: | <NAME> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| Tuning: | Y | Index Range: |
|
|
|
|
|
|
|
|
|
|
| Header: | <NONCRITICAL> #define <ROOTNAME><TAB>k_N_CalNC_Cnt_Str.<ROOTNAME> <NONCRITICAL> <SAFETYCRITICAL> #define <ROOTNAME><TAB>k_S_CalSC_Cnt_Str.<ROOTNAME> <SAFETYCRITICAL> |
|
|
|
|
|
|
|
|
|
| Source: |
|
|
|
|
|
|
|
|
|
|
| eCal: | <NONCRITICAL> k_N_CalNC_Cnt_Str.<ROOTNAME> <NONCRITICAL> <SAFETYCRITICAL> k_S_CalSC_Cnt_Str.<ROOTNAME> <SAFETYCRITICAL> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| Tuning: | P | Index Range: |
|
|
|
|
|
|
|
|
|
|
| Header: | <NONCRITICAL> #define <ROOTNAME><TAB>k_N_CalNC_Cnt_Str.Personality[L3_S_CalPersSelect_Cnt_G_u16].<ROOTNAME> <NONCRITICAL> <SAFETYCRITICAL> #define <ROOTNAME><TAB>k_S_CalSC_Cnt_Str.SC_Personality[L3_S_CalPersSelect_Cnt_G_u16].<ROOTNAME> <SAFETYCRITICAL> |
|
|
|
|
|
|
|
|
|
| Source: |
|
|
|
|
|
|
|
|
|
|
| eCal: | <NONCRITICAL> k_N_CalNC_Cnt_Str.Personality[L3_S_CalPersSelect_Cnt_G_u16].<ROOTNAME> <NONCRITICAL> <SAFETYCRITICAL> k_S_CalSC_Cnt_Str.SC_Personality[L3_S_CalPersSelect_Cnt_G_u16].<ROOTNAME> <SAFETYCRITICAL> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|