2017-12-20 12:42:20 +00:00
|
|
|
#ifndef _CONFIG_H
|
|
|
|
#define _CONFIG_H
|
|
|
|
|
|
|
|
|
2019-09-15 22:43:37 +00:00
|
|
|
#include "Configuration_prusa.h"
|
|
|
|
#include "pins.h"
|
|
|
|
|
2020-03-26 13:40:47 +00:00
|
|
|
#if (defined(VOLT_IR_PIN) && defined(IR_SENSOR))
|
2022-05-14 16:02:31 +00:00
|
|
|
// TODO: IR_SENSOR_ANALOG currently disabled as being incompatible with the new thermal regulation
|
|
|
|
// # define IR_SENSOR_ANALOG
|
2020-03-26 13:40:47 +00:00
|
|
|
#endif
|
2019-09-15 22:43:37 +00:00
|
|
|
|
2017-12-20 12:42:20 +00:00
|
|
|
//ADC configuration
|
2020-03-26 13:40:47 +00:00
|
|
|
#ifndef IR_SENSOR_ANALOG
|
2017-12-20 12:42:20 +00:00
|
|
|
#define ADC_CHAN_MSK 0b0000001001011111 //used AD channels bit mask (0,1,2,3,4,6,9)
|
2019-09-15 22:43:37 +00:00
|
|
|
#define ADC_DIDR_MSK 0b0000001001011111 //AD channels DIDR mask (1 ~ disabled digital input)
|
2017-12-20 12:42:20 +00:00
|
|
|
#define ADC_CHAN_CNT 7 //number of used channels)
|
2019-09-15 22:43:37 +00:00
|
|
|
#else //!IR_SENSOR_ANALOG
|
|
|
|
#define ADC_CHAN_MSK 0b0000001101011111 //used AD channels bit mask (0,1,2,3,4,6,8,9)
|
|
|
|
#define ADC_DIDR_MSK 0b0000001001011111 //AD channels DIDR mask (1 ~ disabled digital input)
|
|
|
|
#define ADC_CHAN_CNT 8 //number of used channels)
|
|
|
|
#endif //!IR_SENSOR_ANALOG
|
2017-12-20 12:42:20 +00:00
|
|
|
#define ADC_OVRSAMPL 16 //oversampling multiplier
|
2022-05-24 16:43:33 +00:00
|
|
|
#define ADC_CALLBACK adc_callback //callback function ()
|
2017-12-20 12:42:20 +00:00
|
|
|
|
2018-07-12 15:55:38 +00:00
|
|
|
//SWI2C configuration
|
|
|
|
//#define SWI2C_SDA 20 //SDA on P3
|
|
|
|
//#define SWI2C_SCL 21 //SCL on P3
|
|
|
|
#define SWI2C_A8
|
|
|
|
#define SWI2C_DEL 20 //2us clock delay
|
|
|
|
#define SWI2C_TMO 2048 //2048 cycles timeout
|
|
|
|
|
2018-07-12 16:11:07 +00:00
|
|
|
//PAT9125 configuration
|
2020-08-25 09:31:35 +00:00
|
|
|
//#define PAT9125_SWSPI // software SPI mode (incomplete)
|
2020-09-27 12:29:07 +00:00
|
|
|
#ifdef SWI2C_SCL
|
|
|
|
#define PAT9125_SWI2C // software I2C mode
|
|
|
|
#else
|
2020-08-25 09:31:35 +00:00
|
|
|
#define PAT9125_I2C // hardware I2C mode
|
2020-09-27 12:29:07 +00:00
|
|
|
#endif
|
2020-08-20 10:33:52 +00:00
|
|
|
|
2018-07-12 16:11:07 +00:00
|
|
|
#define PAT9125_I2C_ADDR 0x75 //ID=LO
|
|
|
|
//#define PAT9125_I2C_ADDR 0x79 //ID=HI
|
|
|
|
//#define PAT9125_I2C_ADDR 0x73 //ID=NC
|
|
|
|
#define PAT9125_XRES 0
|
2020-02-05 14:46:45 +00:00
|
|
|
#define PAT9125_YRES 240 // maximum resolution (5*X cpi)
|
|
|
|
#define PAT9124_YRES_MM (5*PAT9125_YRES/25.4) // counts per mm
|
2018-07-12 16:11:07 +00:00
|
|
|
|
2018-03-13 11:55:35 +00:00
|
|
|
//SM4 configuration
|
|
|
|
#define SM4_DEFDELAY 500 //default step delay [us]
|
|
|
|
|
2018-03-29 15:42:41 +00:00
|
|
|
//TMC2130 - Trinamic stepper driver
|
|
|
|
//pinout - hardcoded
|
|
|
|
//spi:
|
|
|
|
#define TMC2130_SPI_RATE 0 // fosc/4 = 4MHz
|
|
|
|
#define TMC2130_SPCR SPI_SPCR(TMC2130_SPI_RATE, 1, 1, 1, 0)
|
|
|
|
#define TMC2130_SPSR SPI_SPSR(TMC2130_SPI_RATE)
|
2017-12-20 12:42:20 +00:00
|
|
|
|
2018-05-22 01:20:03 +00:00
|
|
|
//LANG - Multi-language support
|
2020-03-02 18:07:23 +00:00
|
|
|
//#define LANG_MODE 0 // primary language only
|
2018-11-26 19:24:24 +00:00
|
|
|
#define LANG_MODE 1 // sec. language support
|
2019-04-30 10:42:18 +00:00
|
|
|
|
2022-09-13 12:53:12 +00:00
|
|
|
#define LANG_SIZE_RESERVED 0x3000 // reserved space for secondary language (12288 bytes).
|
2022-08-09 07:19:22 +00:00
|
|
|
// 0x3D00 Maximum 15616 bytes as it depends on xflash_layout.h
|
|
|
|
// 16 Languages max. per group including stock
|
2018-05-22 01:20:03 +00:00
|
|
|
|
New PO-based language translation support (#3471)
* lang: Add a PO language extractor with FW metadata support
Implement a straight-to-po language extractor which supports our custom
language requirements:
- _i/_I/ISTR for text string definitions
- _T for catalog translations (with back-reference support)
- //// EOL comments with:
- MSG_ catalog entry name identifiers
- c=X r=Y annotations for screen dimensioning checks
- Crude support for commented lines
All source locations are correctly referenced in the PO, with the
metadata colleted in the comment for further processing.
Several checks are implemented already during extraction:
- Correct catalog name assignment (no duplicates)
- Metadata checks for each entry
Further checks will be implemented by directly checking the translated PO file.
Requires "polib" and "regex" python modules.
* lang: Adapt lang-check to work directly on PO/POT files
* lang: Allow lang-extract to generate stable (pre-sorted) output directly
* lang: Further extend lang-extract consistency/error checking
- Do not parse inside preprocessor conditionals
- Distinguish between references and definitions
- Warn about missing references and definitions
* lang: lang-extract: warn about incorrect PROGMEM assignments
Check that ISTR is used along with PROGMEM_I1 in an attempt to spot
useless translated catalogs.
* lang: lang-extract: Improved handling of same-line translations
Correctly reference metadata on same-line translations.
* lang: lang-extract: Handle _O as a cat-ref
https://github.com/prusa3d/Prusa-Firmware/pull/3434
* lang: lang-extract: Warn about unused catalog definitions
* lang: lang-extract: Allow propagating translation comments via //
The definition:
code //// definition [// comment]
will check [definition] as before, but blindly accumulate // comment.
The comment is then re-appended back into the PO files for translators
with the form:
definition
comment
comment...
* lang: Fix incorrect display definitions
* lang: lang-extract: Check source encoding/charmap
* lang: Translate the degree symbol
* lang: Unbreak/cleanup DEBUG_SEC_LANG
* lang: Improve meaning of comment
* lang: Split charset conversions into an aux lib for future use
* lang: Implement lang-map.py to extract the translation symbol map
- Extracts the translatable symbol map for further use
- Computes a stable "language signature" from the map itself
- Optionally patches the binary update the symbols
* lang: Check for translation recoding problems
* lang: Implement a transliteration map to post-process translations
TRANS_CHARS is now used to replace unavailable symbols to the source
encoding, only while producing the language catalog.
* lang: Handle/check character replacements in lang-check
Filter the translation through TRANS_CHARS, so that the preview and
length check are performed correctly for expanding replacements such as
'ß' to 'ss'.
* lang: Implement lang-build.py to generate the final language catalog
* Cleanup .gitignore
* lang: Drop txt language files
* lang: Remove outdated translation scripts and obsolete docs
* lang: Update build scripts for new infrastructure
* lang: [no] Integrate accents from po/new/no.po
We now support accents natively
* lang: Remove redundant directory po/new/
* lang: Fix encoding of LCD characters in PO files
* lang: [hr] Fix wrapping in MSG_CRASH_DET_ONLY_IN_NORMAL
* lang: Sort and reformat PO files for further massaging
* lang: Switch to developer (dot) comments for PO metadata
* lang: Allow the IGNORE annotation to skip extraction
* lang: Fix missing/broken language metadata in sources
* lang: Add update-pot.sh and regenerate po/Firmware.pot
* lang: Add update-po.sh and refresh all PO files
* lang: Add summary documentation about the new translation workflow
* Add more ignored files
* CI: Add new required dependencies to travis
* lang: lang-build: Improve warning message
"referenced" was really meaning that data is being duplicated.
* lang: Respect the language order as defined in config.sh
This correctly splits normal and community-made entries during language
selection.
* lang: More typos in the documentation
* lang: Check for the maximum size of each language
Each table needs to fit within LANG_SIZE_RESERVED
* lang: Properly align _SEC_LANG to page boundaries
... instead of relying on _SEC_LANG_TABLE to calculate the offset
* lang: Build support for dual-language hex files
Detect the printer type by checking the current variant type.
On printers with no xflash (MK2*), generate one hex file for each
additional language file by patching the built-in secondary language
table during the build process
* lang: Mention lang-patchsec.py
* lang: Use color() instead of tput for clarity
* lang: Allow disabling terminal colors with NO_COLOR/TERM=dumb
* lang: Consistent use of redirection in config.sh
* lang: Stricter variant-type check for xflash support
* lang: Output size stats when building double-language hex files
* lang: Respect NO_COLOR in lang-check.py
* lang: Check for repeated/incorrect annotations
Catch errors such as "c=1 c=2"
* lang: Correct MSG_SLIGHT_SKEW/MSG_SEVERE_SKEW annotations
* lang: [it] Improve MSG_*_SKEW translation
* lang: Use INTLHEX instead of OUTHEX_P/S for configuration
We already have OUTHEX which is the compiled firmware.
Use INTLHEX for the final internationalized firmware, which is less
confusing. Also, assume it being a prefix for all generated hex
files, which reduces the number of variables set.
* lang: Move lang_map to lib.io for further use
* lang: lang-check: Accept a firmware map file to suppress unused string warnings
* lang: Use the map file to reduce useless warnings during fw-build
* lang: lang-check: Also suppress unused empty annotations
* lang: Fix MSG_MOVE_CARRIAGE_TO_THE_TOP_Z annotation
Refresh pot file
* lang: lang-check: Do not warn about same-word translations by default
Do not warn when one-word translations such as "No" result in "No" also
in other languages, since this is common in latin languages.
Allow to re-enable the warning with --warn-same
* lang: lang-build: Handle same-source/translation efficiently
* lang: [it] Explicitly add On/Off/Reset/Wizard to suppress warnings
Instead of displaying a warning, supress the warning and explicitly
translate each entry using english (which is the common/acceptable
word in these cases).
* lang: [it] Suppress more warnings
* lang: lang-check: Add intermediate "suggest" warning category
Warnings in the "suggest" category as shown as [S] as based on pure
speculation from the checking tool, such as the translation being
significantly shorter than the original.
As a result, they can be suppressed with --no-suggest
* lang: Return translation status from lang-check
- 0 if the translation only contains suggestions
- 1 if the translation contains warnings or errors
Check for the exit status in fw-build.sh, but do nothing at the moment
except printing a non-fatal error.
* lang: Remove "trim_trailing_whitespace=false" for po files
PO files got cleaned up/rewritten. We can now ensure they stay
consistent.
* lang: [sv] Re-integrate changes from 70c73cb
* lang: [no] Reintegrate changes from @pkg2000
2022-06-16 13:03:30 +00:00
|
|
|
#if (LANG_SIZE_RESERVED % 256)
|
|
|
|
#error "LANG_SIZE_RESERVED should be a multiple of a page size"
|
|
|
|
#endif
|
|
|
|
|
2021-03-01 07:22:43 +00:00
|
|
|
//Community language support
|
2021-12-20 16:32:35 +00:00
|
|
|
#define COMMUNITY_LANG_GROUP 1
|
2021-03-01 07:22:43 +00:00
|
|
|
|
2021-12-20 16:32:35 +00:00
|
|
|
#if (COMMUNITY_LANG_GROUP == 1)
|
|
|
|
#define COMMUNITY_LANG_GROUP1_NL // Community Dutch language
|
2022-02-03 06:05:59 +00:00
|
|
|
#define COMMUNITY_LANG_GROUP1_RO // Community Romanian language
|
2021-12-21 14:28:33 +00:00
|
|
|
#define COMMUNITY_LANG_GROUP1_HU // Community Hungarian language
|
2021-12-21 14:36:34 +00:00
|
|
|
#define COMMUNITY_LANG_GROUP1_HR // Community Croatian language
|
2022-02-11 12:31:43 +00:00
|
|
|
#define COMMUNITY_LANG_GROUP1_SK // Community Slovak language
|
2022-02-22 05:59:23 +00:00
|
|
|
#define COMMUNITY_LANG_GROUP1_SV // Community Swedish language
|
2022-02-22 10:56:01 +00:00
|
|
|
#define COMMUNITY_LANG_GROUP1_NO // Community Norwegian language
|
2022-02-03 06:05:59 +00:00
|
|
|
//#define COMMUNITY_LANG_GROUP1_DA // Community Danish language
|
|
|
|
//#define COMMUNITY_LANG_GROUP1_SL // Community Slovanian language
|
|
|
|
//#define COMMUNITY_LANG_GROUP1_LB // Community Luxembourgish language
|
2022-08-09 07:19:22 +00:00
|
|
|
#endif //COMMUNITY_LANG_GROUP 1
|
|
|
|
|
|
|
|
#if (COMMUNITY_LANG_GROUP == 2)
|
|
|
|
#define COMMUNITY_LANG_GROUP2_LT // Community Lithuanian language
|
2021-12-20 16:32:35 +00:00
|
|
|
//#define COMMUNITY_LANG_GROUP1_QR // Community new language //..use this as a template and replace 'QR'
|
2022-08-09 07:19:22 +00:00
|
|
|
#endif //COMMUNITY_LANG_GROUP 2
|
2018-05-22 01:20:03 +00:00
|
|
|
|
2021-12-20 16:32:35 +00:00
|
|
|
#if (COMMUNITY_LANG_GROUP >=1 )
|
|
|
|
#define COMMUNITY_LANGUAGE_SUPPORT
|
|
|
|
#endif
|
New PO-based language translation support (#3471)
* lang: Add a PO language extractor with FW metadata support
Implement a straight-to-po language extractor which supports our custom
language requirements:
- _i/_I/ISTR for text string definitions
- _T for catalog translations (with back-reference support)
- //// EOL comments with:
- MSG_ catalog entry name identifiers
- c=X r=Y annotations for screen dimensioning checks
- Crude support for commented lines
All source locations are correctly referenced in the PO, with the
metadata colleted in the comment for further processing.
Several checks are implemented already during extraction:
- Correct catalog name assignment (no duplicates)
- Metadata checks for each entry
Further checks will be implemented by directly checking the translated PO file.
Requires "polib" and "regex" python modules.
* lang: Adapt lang-check to work directly on PO/POT files
* lang: Allow lang-extract to generate stable (pre-sorted) output directly
* lang: Further extend lang-extract consistency/error checking
- Do not parse inside preprocessor conditionals
- Distinguish between references and definitions
- Warn about missing references and definitions
* lang: lang-extract: warn about incorrect PROGMEM assignments
Check that ISTR is used along with PROGMEM_I1 in an attempt to spot
useless translated catalogs.
* lang: lang-extract: Improved handling of same-line translations
Correctly reference metadata on same-line translations.
* lang: lang-extract: Handle _O as a cat-ref
https://github.com/prusa3d/Prusa-Firmware/pull/3434
* lang: lang-extract: Warn about unused catalog definitions
* lang: lang-extract: Allow propagating translation comments via //
The definition:
code //// definition [// comment]
will check [definition] as before, but blindly accumulate // comment.
The comment is then re-appended back into the PO files for translators
with the form:
definition
comment
comment...
* lang: Fix incorrect display definitions
* lang: lang-extract: Check source encoding/charmap
* lang: Translate the degree symbol
* lang: Unbreak/cleanup DEBUG_SEC_LANG
* lang: Improve meaning of comment
* lang: Split charset conversions into an aux lib for future use
* lang: Implement lang-map.py to extract the translation symbol map
- Extracts the translatable symbol map for further use
- Computes a stable "language signature" from the map itself
- Optionally patches the binary update the symbols
* lang: Check for translation recoding problems
* lang: Implement a transliteration map to post-process translations
TRANS_CHARS is now used to replace unavailable symbols to the source
encoding, only while producing the language catalog.
* lang: Handle/check character replacements in lang-check
Filter the translation through TRANS_CHARS, so that the preview and
length check are performed correctly for expanding replacements such as
'ß' to 'ss'.
* lang: Implement lang-build.py to generate the final language catalog
* Cleanup .gitignore
* lang: Drop txt language files
* lang: Remove outdated translation scripts and obsolete docs
* lang: Update build scripts for new infrastructure
* lang: [no] Integrate accents from po/new/no.po
We now support accents natively
* lang: Remove redundant directory po/new/
* lang: Fix encoding of LCD characters in PO files
* lang: [hr] Fix wrapping in MSG_CRASH_DET_ONLY_IN_NORMAL
* lang: Sort and reformat PO files for further massaging
* lang: Switch to developer (dot) comments for PO metadata
* lang: Allow the IGNORE annotation to skip extraction
* lang: Fix missing/broken language metadata in sources
* lang: Add update-pot.sh and regenerate po/Firmware.pot
* lang: Add update-po.sh and refresh all PO files
* lang: Add summary documentation about the new translation workflow
* Add more ignored files
* CI: Add new required dependencies to travis
* lang: lang-build: Improve warning message
"referenced" was really meaning that data is being duplicated.
* lang: Respect the language order as defined in config.sh
This correctly splits normal and community-made entries during language
selection.
* lang: More typos in the documentation
* lang: Check for the maximum size of each language
Each table needs to fit within LANG_SIZE_RESERVED
* lang: Properly align _SEC_LANG to page boundaries
... instead of relying on _SEC_LANG_TABLE to calculate the offset
* lang: Build support for dual-language hex files
Detect the printer type by checking the current variant type.
On printers with no xflash (MK2*), generate one hex file for each
additional language file by patching the built-in secondary language
table during the build process
* lang: Mention lang-patchsec.py
* lang: Use color() instead of tput for clarity
* lang: Allow disabling terminal colors with NO_COLOR/TERM=dumb
* lang: Consistent use of redirection in config.sh
* lang: Stricter variant-type check for xflash support
* lang: Output size stats when building double-language hex files
* lang: Respect NO_COLOR in lang-check.py
* lang: Check for repeated/incorrect annotations
Catch errors such as "c=1 c=2"
* lang: Correct MSG_SLIGHT_SKEW/MSG_SEVERE_SKEW annotations
* lang: [it] Improve MSG_*_SKEW translation
* lang: Use INTLHEX instead of OUTHEX_P/S for configuration
We already have OUTHEX which is the compiled firmware.
Use INTLHEX for the final internationalized firmware, which is less
confusing. Also, assume it being a prefix for all generated hex
files, which reduces the number of variables set.
* lang: Move lang_map to lib.io for further use
* lang: lang-check: Accept a firmware map file to suppress unused string warnings
* lang: Use the map file to reduce useless warnings during fw-build
* lang: lang-check: Also suppress unused empty annotations
* lang: Fix MSG_MOVE_CARRIAGE_TO_THE_TOP_Z annotation
Refresh pot file
* lang: lang-check: Do not warn about same-word translations by default
Do not warn when one-word translations such as "No" result in "No" also
in other languages, since this is common in latin languages.
Allow to re-enable the warning with --warn-same
* lang: lang-build: Handle same-source/translation efficiently
* lang: [it] Explicitly add On/Off/Reset/Wizard to suppress warnings
Instead of displaying a warning, supress the warning and explicitly
translate each entry using english (which is the common/acceptable
word in these cases).
* lang: [it] Suppress more warnings
* lang: lang-check: Add intermediate "suggest" warning category
Warnings in the "suggest" category as shown as [S] as based on pure
speculation from the checking tool, such as the translation being
significantly shorter than the original.
As a result, they can be suppressed with --no-suggest
* lang: Return translation status from lang-check
- 0 if the translation only contains suggestions
- 1 if the translation contains warnings or errors
Check for the exit status in fw-build.sh, but do nothing at the moment
except printing a non-fatal error.
* lang: Remove "trim_trailing_whitespace=false" for po files
PO files got cleaned up/rewritten. We can now ensure they stay
consistent.
* lang: [sv] Re-integrate changes from 70c73cb
* lang: [no] Reintegrate changes from @pkg2000
2022-06-16 13:03:30 +00:00
|
|
|
|
2021-06-08 15:32:14 +00:00
|
|
|
// Sanity checks for correct configuration of XFLASH_DUMP options
|
|
|
|
#if defined(XFLASH_DUMP) && !defined(XFLASH)
|
|
|
|
#error "XFLASH_DUMP requires XFLASH support"
|
|
|
|
#endif
|
|
|
|
#if (defined(MENU_DUMP) || defined(EMERGENCY_DUMP)) && !defined(XFLASH_DUMP)
|
|
|
|
#error "MENU_DUMP and EMERGENCY_DUMP require XFLASH_DUMP"
|
|
|
|
#endif
|
|
|
|
|
2021-06-12 11:37:20 +00:00
|
|
|
// Support for serial dumps is mutually exclusive with XFLASH_DUMP features
|
|
|
|
#if defined(EMERGENCY_DUMP) && defined(EMERGENCY_SERIAL_DUMP)
|
|
|
|
#error "EMERGENCY_DUMP and EMERGENCY_SERIAL_DUMP are mutually exclusive"
|
|
|
|
#endif
|
|
|
|
#if defined(MENU_DUMP) && defined(MENU_SERIAL_DUMP)
|
|
|
|
#error "MENU_DUMP and MENU_SERIAL_DUMP are mutually exclusive"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
// Reduce internal duplication
|
|
|
|
#if defined(EMERGENCY_DUMP) || defined(EMERGENCY_SERIAL_DUMP)
|
|
|
|
#define EMERGENCY_HANDLERS
|
|
|
|
#endif
|
|
|
|
|
2022-08-29 10:39:54 +00:00
|
|
|
//FARM_MODE
|
|
|
|
#if ( LANG_MODE == 0 ) && defined(XFLASH) //Save resources on EINSY and disable FARM_MODE on multi-language version
|
|
|
|
#define PRUSA_FARM
|
|
|
|
#endif //PRUSA_FARM only in english on EINSYs
|
|
|
|
#ifndef XFLASH //enable FARM_MODE on miniRAMBo boards
|
|
|
|
#define PRUSA_FARM
|
|
|
|
#endif
|
2017-12-20 12:42:20 +00:00
|
|
|
#endif //_CONFIG_H
|