389 Commits (90c97c818577a3d3c245c06b7f25979741a008df)

Author SHA1 Message Date
Ruwan J Egoda Gamage 06555febdd Using SET_INPUT instead of pinMode 9 years ago
Ruwan J Egoda Gamage a64bcd53e9 reusing millis() 9 years ago
Ruwan J Egoda Gamage 83c4131ba3 Cleaning up, getting rid of the fake encoder count variable. 9 years ago
Ruwan J Egoda Gamage 5eeea2f611 Fixing Rigidbot LCD Panel Support 9 years ago
Scott Lahteine 60d5658da8 Revert nozzle_bed_fan_menu_items
For some reason that I cannot determine, using a sub-function causes
the Tune sub-menu to act strangely, yet replacing the function call
with its code content works perfectly.
9 years ago
AnHardt bb4efcf603 Handle temp callbacks when THERMAL_PROTECTION_HOTENDS is not defined
by alternate definition for the callback macros
9 years ago
AnHardt 96d0d04b8f Update LCD buttons less frequently
Move slow_buttons_update into the LCD_UPDATE_INTERVAL block
lcd_implementation_read_slow_buttons() will then be executed ~10 times a
second.
9 years ago
AnHardt c956b52c4a Babystep Multiplier
Analog to https://github.com/MarlinFirmware/MarlinDev/pull/250 by
@RicardoGA

Restore the Babystep Multiplicator functionality and now it's available
for X/Y/Z
9 years ago
AnHardt be7167ed97 Change XY formatting on LCD (PR#2740)
According to #123 negative values for XY at or below -100 are displaying incorrectly, dropping the first digit. Deltas can easily have XY values in this range. This PR adds a function to display floats/ints formatted like `_123`, `-123`, `_-12`, or `__-1` as appropriate and applies it to the XY coordinates on Hitachi displays. It also moves the Z value to the right to be consistent with the XY formatting.
9 years ago
Scott Lahteine 754b13d8fe Patch issue #2315 9 years ago
Scott Lahteine 0c7f7ebcfb Styling adjustments (PR#2668 & PR#2670)
Keep "astyled" reformatting
9 years ago
Richard Wackerbarth 03f0edb57e Fix high LCD status screen update frequency (PR#2655) 9 years ago
Scott Lahteine 5d65a36dee Give lcd_sd_status an UNKNOWN state (PR#180) 9 years ago
Scott Lahteine 7ac7ddbf20 Show nozzles, heaters, and extruders numbered 1-4 9 years ago
Scott Lahteine 5bc480fee8 Fix Move E menu items 9 years ago
Scott Lahteine fc882c34a3 Init lcd_sd_status as false to force lcd_update test
Replaces #145 which is way out of date
9 years ago
Scott Lahteine e27dd5c22d Conditionalize functions that rely on SDSUPPORT 9 years ago
Scott Lahteine 558665cd90 Constrain Tune > Nozzle/Flow menu items 9 years ago
Scott Lahteine f7f6b5faae Fix lcd_move_e compile error (PR#143)
Fix a compile error introduced in #98
9 years ago
Scott Lahteine 2b30e8ac99 Conditionals for ULTIPANEL without SDSUPPORT 9 years ago
Eric Kuzmenko b23d765991 Added Extrude From Multiple Extruders from LCD feature 9 years ago
Richard Wackerbarth 6292d9e815 Rename ENABLE_AUTO_BED_LEVELING
With the introduction of the #if ENABLED(…)

reads better than
9 years ago
Scott Lahteine 46453905d6 Apply remaining ENABLED/DISABLED conditionals 9 years ago
Scott Lahteine 270c766de2 SDCARDDETECT -> SD_DETECT, added docs
- `SD_DETECT_PIN` replaces `SDCARDDETECT`
- `SD_DETECT_INVERTED` replaces `SDCARDDETECTINVERTED`
- Revise the description of `SD_DETECT_INVERTED`
- Add a note about the override of `SD_DETECT_INVERTED` in
`Conditionals.h`
9 years ago
Scott Lahteine 8d3b74cc6e Rename SDCARDDETECT to SDCARDDETECT_PIN
- Rename the pin so it can be tested with `PIN_EXISTS`
- Fix some incorrect tests for `SDCARDDETECT`
9 years ago
Scott Lahteine 94a796c8cc Rename BEEPER to BEEPER_PIN
For consistency with other pins, allowing use of `PIN_EXISTS` macro.
9 years ago
Scott Lahteine 0d8989fc14 Overridable Options - Part 7 (PR#2559)
Apply `ENABLED` / `DISABLED` macros to LCD-related files.
9 years ago
Scott Lahteine c66955aaf9 Mark unchanging arrays as const (PR#2494)
The compiler may be able to optimize if it knows an array won’t be
changing.
9 years ago
Scott Lahteine 69b0490b77 Show minimal preheat options in menus (PR#2471) 9 years ago
AnHardt 722829b058 Move buzzing code to buzzr.h & buzzer.cpp (PR#2307)
at least the lcd independent part from Marlin_main.cpp.
10 years ago
Scott Lahteine a274769f4f Clean up spacing and comments
Also clean up some trailing spaces in a few other sources
10 years ago
AnHardt 6ab7b560af Rework buzzing (PR#2296)
by:
Moving HAS_LCD_BUZZ macro to Coditionals.h
Renaming HAS_LCD_BUZZ to HAS_BUZZER to make clear is has nothing to do with the lcd.
Removing the ULTRALCD condition.

Moving declaration of lcd_buzz() out of the ULTRA_LCD block in ultralcd.h
Moving definition of lcd_buzz() out of the ULTIPANEL block in ultralcd.cpp
Renaming lcd_buzz() to buzz() to make clear is has nothing to do with the lcd.

All buzzing code is now only dependent on the existence of a BEEPER-pin or the definition of a LCD_USE_I2C_BUZZER.

To do: Check the conditions for the BEEPER-pin in all pin-files.
10 years ago
Scott Lahteine 90f858aa85 Use translated strings for axis movement (PR#2280)
Suggest we use the translated strings here. They use (except for
German) the phrasing “Move X” instead of just the axis letter, but they
should fit the available space. The “Extruder” string would be the
same, except it will be translated.
10 years ago
wurstnase e7e964432b consistency name for multiplier
replace extruder_multiply with extruder_multiplier
like feedrate_multiplier or volumetric_multiplier
10 years ago
AnHardt f18f689c01 Replace MSG_F? with MSG_N?
To avoid double definitions.
I prefer to read N for Number not for Nozzle.
10 years ago
AnHardt bc0764894a Shift call of start_watching_heater() into setTargetHotend()
to warrant watching is set or reset.

Make setTargetBed() in _lcd_preheat() dependant of TEMP_SENSOR_BED.
Use disable_all_heaters() in lcd_cooldown() and abort_on_endstop_hit.
10 years ago
Ed Boston ca8d1756d5 Define fixes
Fixed a couple defines that were not changed or commented out.
10 years ago
Ed Boston a83bf18ee1 More functional seperation
Moved SDCARDDETECTINVERTED and SDSLOW to Conditionals.h.
Added U8GLIB_LM6059_AF to define display specific actions.
Added reminder to compile in u8glib
10 years ago
Ed Boston 047e688e93 Changed ADAFRUIT_ST7565 to ELB_FULL_GRAPHIC_CONTROLLER
Rename of define to avoid confusion between the controller and the
display which had similar names.
10 years ago
Ed Boston 41f8cdb3a6 ADAFRUIT_ST7565
Added support for new display type
10 years ago
Scott Lahteine fcfd99c1ae Add comments to lcd_control_temperature_menu 10 years ago
Scott Lahteine 9b3d4380d3 Only watch the heater that was set 10 years ago
Scott Lahteine 54deb9eea3 Enable WATCH_TEMP_PERIOD by default 10 years ago
brupje 8f8bf3a897 Make Marlin actually compile when #define REPRAPWORLD_KEYPAD is uncommented 10 years ago
Scott Lahteine d4c74b8f8c Don't apply M428 if an error occurs
- Also move audio feedback into the command
- Added shorthand for `lcd_buzz` availability
10 years ago
Scott Lahteine d065d37822 Add M428 to set home_offset logically 10 years ago
Scott Lahteine 0f687b5dda Merge branch 'Development' into eeprom_in_gcode
Latest upstream commits
10 years ago
Scott Lahteine 5b248757c7 Level Bed in Prepare submenu
- Add “Level Bed” menu item for auto bed leveling
- Hide the option if homing has not been done yet
- Arrange the Prepare submenu more logically (?)
- Add documentation comments, some white-space
- Apply some coding standards here and there
- Move old encoder multiplier debug option to `ultralcd.cpp`
10 years ago
Scott Lahteine 0fca084ea6 Make EEPROM reproducible in GCode
With these changes the output of `M503 S0` is all you need to restore
the EEPROM. Building on this it is straightforward to save and restore
the EEPROM state using the SD card or external GCode file.

- Added `M145` to set “heatup states” for the LCD menu
- Added `M420` to toggle Mesh Bed Leveling
- Added `M421` to set a single Mesh coordinate
- Extended `Config_PrintSettings` with added M codes
- Cleaned up some comments here and there
10 years ago
Scott Lahteine a22a228bcc Rename files to move them in the IDE 10 years ago
Scott Lahteine a932e7490f No noTone needed, but delay is 10 years ago
Scott Lahteine 9c5d14ea68 Fix BEEPER duration 10 years ago
Scott Lahteine c92b59952a Use millis_t for progress_bar_ms and expire_status_ms 10 years ago
Scott Lahteine 97dfa0365d Rename expireStatusMillis to expire_status_ms 10 years ago
Scott Lahteine ce142afdda G4 shows status message only if no message is set already
- Address issue raised in #1961
10 years ago
Scott Lahteine 2558c10c6c Use the slower feedrate for XY axes 10 years ago
Scott Lahteine 31932912dd Use AxisEnum instead of int for _lcd_move 10 years ago
Scott Lahteine c3560e0288 Include axis parameter to ultralcd's line_to_current 10 years ago
Scott Lahteine 3b97a7d446 Merge pull request #1944 from AnHardt/beep2
More Beeper clean up
10 years ago
AnHardt f2c94b3298 tone will end automaticly 10 years ago
AnHardt 064f2b37d0 More Beeper clean up.
Centralised beep code to lcd_buzz().
From gcode_M300() and lcd_quick_feedback().

Enforced max. duration for M300 to 5 seconds.

Corrected description in 'Configuration.h'

LCD_FEEDBACK_FREQUENCY_HZ 0 gives now a silent delay of
LCD_FEEDBACK_FREQUENCY_DURATION_MS.
10 years ago
Scott Lahteine 09d60e0128 Naming and code comments 10 years ago
Scott Lahteine ccddc280be Apply three more commits 10 years ago
Scott Lahteine 055b11814a Additional cleanup of ultralcd.cpp 10 years ago
Scott Lahteine 388dd0cfa5 Fix doubled lcd_quick_feedback
- MENU_ITEM causes lcd_quick_feedback to be called, so only those calls
to `lcd_goto_menu` outside of the `MENU_ITEM` macro need to set the
`feedback` flag when calling `lcd_goto_menu`.
10 years ago
Scott Lahteine 740152ee70 Merge branch 'Development' into cold_extrude
Latest upstream commits
10 years ago
Scott Lahteine 5914d9d7de Shuffling declarations.. 10 years ago
Scott Lahteine b328c6e6b6 Shuffling declarations. 10 years ago
Scott Lahteine fb4cefc91d Define lcd_move_[xyz] ahead of lcd_move_menu_axis 10 years ago
Scott Lahteine 9189cc66ab Fix moves for DELTA for MANUAL_BED_LEVELING
- Use `line_to_current` in place of `plan_buffer_line`
10 years ago
AnHardt df50523605 Made encoderPosition and quick_feedback dependant on NEWPANEL
where the hardware is available.
Fix for #1873
10 years ago
AnHardt bcc04192fc Remove Contrast Menu for U8GLIB_ST7920
The other two devices we use in u8glib have more than only dummy code.
Checked this in the library code.
10 years ago
Scott Lahteine 7431ef7e2d Merge branch 'Development' into dev_version
Latest upstream commits
10 years ago
Scott Lahteine 43773ff735 Formatting and lcd contrast masking 10 years ago
Scott Lahteine cf9b58452c Minimum delay in menu click feedback
Squished #1849
10 years ago
Edward Patel 002340f32c Merge branch 'Development-Marlin' into Development 10 years ago
AnHardt ac843fbf3b Fix lcd_status_message
Because we now can use utf8 with up to 3 bytes per symbol,
lcd_status_message[] must be 3*LCD_WIDTH wide.
Filling up the message, or cutting to length, are fixed to.

Fix for #1832 about at the end.
10 years ago
Edward Patel 0e6514e7bd Bug fix! Missed putting z value back in right slot after zigzag mod. 10 years ago
Edward Patel ea10601406 Merge branch 'Development-Marlin' into Development
Conflicts:
	Marlin/Configuration.h
	Marlin/Marlin_main.cpp
10 years ago
AnHardt 340d165a9c Reduce display updates for dogm displays
In 'if (encoderPastThreshold || LCD_CLICKED)' lcdDrawUpdate was not set.

'lcd_status_update_delay'-loop was not effective in  function
lcd_status_screen().
The loop prevented the update of the status screen but not the displays
update.
Shifted the loop into lcd_update().
10 years ago
AnHardt 418d22d7b3 Revert "Testloop cleanup"
This reverts commit 6361404b91.
10 years ago
AnHardt 6361404b91 Testloop cleanup
Shifted condition should still be in.
10 years ago
AnHardt 6d4b3f0d6a Move the condition before the loop
Result see: https://youtu.be/AEnBzdu9_tk
Dot is moving not so fast -> less executed loops.
10 years ago
AnHardt 4cb7dfc546 Move the 'alive dot' in every displayloop
Result see: https://www.youtube.com/watch?v=tdu7J0i-c4g
Loop is executed several times per display update.
10 years ago
Scott Lahteine 61f8394361 Compare indices instead of floats for probe actions 10 years ago
Edward Patel 6b91b7b411 Mesh bed leveling: Added G29 S3 + finer steps in manual probing.
* Use "G29 S3 Xn Yn Zn.nn" to modify bad probed point manually
* Changed manual Z steps from 0.05 to 0.025 and made brought it to Configuration.h
10 years ago
AnHardt 19b11dfdd7 Fix can't enter MENU_MULTIPLIER_ITEM 10 years ago
Scott Lahteine 571652c49b Fix LCD click
- Make the default LCD click sound more pleasant
- Fix warnings about bed temperature runaway
10 years ago
Scott Lahteine a117b6bff6 Merge pull request #1747 from thinkyhead/progress_bar_tweak
Fix up LCD_PROGRESS_BAR
10 years ago
Scott Lahteine 5519882eea Fix up LCD_PROGRESS_BAR
- Some messages should not expire with `PROGRESS_MSG_EXPIRE`.
- Simplify conditional for progress bar with sanity checks.
- Rename `messageTick` to `expireStatusMillis` and make it the expire
time.
10 years ago
Scott Lahteine 8c136a5ab5 Conditionals and comments for PS = 0 10 years ago
Scott Lahteine 2faed961ce Allow POWER_SUPPLY 0 for no power switch 10 years ago
AnHardt 50a732360a Replace extrudemultiply by extruder_multiply[active_extruder]
Fix for #1460.

Seems to work with only one extruder. Can't test this myself with more.
10 years ago
Scott Lahteine ba871e46bf Fix compiler warnings
- Patched up for most included configurations
10 years ago
Scott Lahteine bc2f249cc6 Merge pull request #1622 from AnHardt/tm-utf-minus-kanji
The big Language Pack
10 years ago
Scott Lahteine abfcbd793f Merge pull request #1693 from chris-bo/rework_lcd_beeper
use only one implementation for beeper feedback
10 years ago
Scott Lahteine 78090275a9 Fix probe range editing
- Increase the probe offset range to -20…20
- Apply the range limits to the menu item
10 years ago
AnHardt 20f909567a Merge https://github.com/MarlinFirmware/Marlin into tm-utf-minus-kanji
Conflicts:
	README.md
Solved
10 years ago
Christian Bohn eab5fad539 code formatting 10 years ago
Christian Bohn 4c3cbc0961 use only one implementation for beeper feedback 10 years ago
AnHardt 8848b7e9ef Add the missed {} to END_MENU in ultralcd.cpp
what caused an extra update of encoderLine most of the time.
10 years ago
AnHardt 9d589cbb2a Merge https://github.com/MarlinFirmware/Marlin into tm3-utf-minus-kanji
Conflicts:
	Marlin/example_configurations/delta/generic/Configuration.h
	Marlin/example_configurations/delta/kossel_mini/Configuration.h
	Marlin/language.h

Conflicts solved
10 years ago
Scott Lahteine 0d81abe1c9 Merge branch 'Development' into config_testing
Latest upstream commits
10 years ago
nicolas-rambaud 37cde8a191 Report changes from previous PR from old code base including :
I've updated the minimum values from the LCD.
It has been a while that i want to at least fix this.
I have an inductive probe and often i need to set my zOffset to something lower than 0.5.
With the current implementation, the default LCD value is set to 0.5 for some reason.
On my case i need to be able to set it down to 0.0 as my inductive probe can be lower than 0.5.
Before with the LCD we couldn't change this value below 0.5. We had to flash the firmware every time which was painful.
Now we are able to change this value down to 0.0 if needed.
I've also changed the minimum value for Z min acceleration.
In the default configuration it's set to 25 but on the LCD the minimum was 100 which is not coherent.
I've changes the minimum to 10. On this axis, depending on the mechanics/motor drivers we might require very low acceleration, so i guess 10 is somehow realistic.
10 years ago
Scott Lahteine 4fbb80567e Get upstream commits 10 years ago
Scott Lahteine 691e753cc3 Don't add home offsets in G29
- Address #1262 by leaving values as set
- Rename `add_homing` to `home_offset`
10 years ago
Scott Lahteine 15eb5d35a2 Merge branch 'Development' into config_testing
Latest upstream commits
10 years ago
Scott Lahteine 63abeaff38 Merge branch 'Development' into config_testing
Latest upstream commits
10 years ago
Edward Patel c516747847 Merge branch 'Development' into manual-bed-leveling+mesh-bed-level 10 years ago
AnHardt 64e3d33893 Fix shrinked menucode
by updating 'encoderPosition' in END_MENU() line 1.
10 years ago
AnHardt 6bfccaf99e Merge https://github.com/MarlinFirmware/Marlin into tm2-utf-minus-kanji
Conflicts:
	Marlin/dogm_lcd_implementation.h
	Marlin/ultralcd_implementation_hitachi_HD44780.h
Fixed conflicts 1
10 years ago
Scott Lahteine b6d381f863 Divide up Conditionals to get LCD items early 10 years ago
Scott Lahteine 670006b919 Remove invariant code from Configurations
- Add `Conditionals.h` with calculated configuration values
- Add `SanityCheck.h` with checks for configuration errors
- Remove equivalent code from all configurations
- Move error checks from some sources to `SanityCheck.h` also
- Fix initialization of count_direction in stepper.cpp
10 years ago
Edward Patel a61f679568 Merge branch 'Development' into manual-bed-leveling+mesh-bed-level 10 years ago
Scott Lahteine a547dc2148 Merge branch 'Development' into optimize_menu_code
Get upstream changes
10 years ago
alexborro e650d4044e Fix "Stop Print" function in the LCD menu
When one hit "Stop Print" option in LCD menu, the command buffer was not
cleared. The printer keep moving until the buffer has been emptied.
Actually I could not clear the command buffer as well.. I don't know
why, it doesnt work as expected.
I need to implement a routine inside Stepper ISR to handle such
situation.
10 years ago
AnHardt e917477fec Merge https://github.com/MarlinFirmware/Marlin into tm-utf-minus-kanji
Conflicts:
	Marlin/dogm_lcd_implementation.h
	Marlin/fonts/make_fonts.bat

Claerd conflicts with my own #1621. (His was easy. :-) )

corrected typo in fonts/README.fonts

Applied changes to the new delta-configurations
 and deletet there some extra whitespace at the line-endings.
10 years ago
Scott Lahteine 4ce79920e5 Merge pull request #1635 from AnHardt/warnings1
Negative times are unlikly
10 years ago
Scott Lahteine be3f2dc1d9 Merge pull request #1636 from AnHardt/warning2
lcd_control_retract_menu() is conditional.
10 years ago
AnHardt 5099b86ad4 lcd_autostart_sd() has two conditions.
got:
ultralcd.cpp:408: warning: 'void lcd_autostart_sd()' defined but not used
10 years ago
AnHardt 5d81c779cc lcd_control_retract_menu() is conditional.
Got:
ultralcd.cpp:64: warning: 'void lcd_control_retract_menu()' declared 'static' but never defined
10 years ago
AnHardt 450b89e63c Negative times are unlikly
While bunting an other bug I stumbled across:
ultralcd.cpp:1250: warning: comparison between signed and unsigned
integer expressions
Changed to the type of lcd_next_update_millis.
10 years ago
AnHardt 00b162a993 Merge remote-tracking branch 'origin/utf-kanji' into tm-utf-minus-kanji
Conflicts:
	Marlin/language.h
Conflict cleaned
10 years ago
Scott Lahteine 3405f85a6a Reduce size of menu code
- Get rid of _selected functions, passing selected state instead
10 years ago
Edward Patel 8005d22c81 Added menu option for bed leveling. 10 years ago
Scott Lahteine c37f7d15c9 - Rename WRITE_E_STEP for consistency
- Add BIT and TEST macros
- Add _APPLY_ macros to stepper.cpp to help with consolidation
- Consolidate code in stepper.cpp using macros
- Apply standards in stepper.cpp
- Use >= 0 instead of > -1 as a better semantic
- Replace DUAL_Y_CARRIAGE with Y_DUAL_STEPPER_DRIVERS
10 years ago
alexborro 9157cbd8f3 Add Travel Acceleration and change the M204 options
Added option to set Travel Acceleration (non printing moves).
The M204 options was a non sense (S for printing moves and T for retract
moves).

It has been changed to:
P = Printing moves
R = Retract only (no X, Y, Z) moves
T = Travel (non
printing) moves

I will add this info o G-Code wiki in reprap.org. I also advise to put
this info in Marlin next version changelog.
10 years ago
AnHardt 6fc2ccd568 Make use of new remenbering fontswitch. 10 years ago
Scott Lahteine f379edca78 Cleanup rotary encoder encrot* defines
The encrot values are used in only one place, and don’t vary, so remove
redundant references.
10 years ago
Scott Lahteine 2af559cca3 Shared function for menu_edit_* and menu_edit_callback_* 10 years ago
Scott Lahteine 517f411999 Spacing adjustment to menu_edit* macro 10 years ago
Scott Lahteine 4938ae5caf Add required backslash for macro expansion 10 years ago
Scott Lahteine e182cdebf9 Add required backslash for macro expansion 10 years ago
Scott Lahteine fa4c36df68 Fix menu callback issue wrt LCD_CLICKED 10 years ago
Scott Lahteine 3ba47ea277 Remove test/demo multi=line code menu items 10 years ago
Scott Lahteine 40ef472a25 Merge in encoder multiplier 10 years ago
Scott Lahteine 1c13cd604b Formatting in babysteps defines 10 years ago
Scott Lahteine 3a26804d80 Adapt to latest PID code and fix typos 10 years ago
Scott Lahteine 422582da71 Prep formatting for upcoming PR 10 years ago
Scott Lahteine 0d6a7a2df0 Merge with latest upstream changes 10 years ago
Scott Lahteine 57bc28b42c Cleanup and fix ultralcd.cpp
- Fix bug in lcd_control_temperature_menu
- Remove test menu-item left in from multi-line command feature
- Replace literals with translatable strings
- Reduce lcd_preheat code redundancy
- Reduce menu macro redundancy
- Clean up formatting
10 years ago
Scott Lahteine 4fcd4b444e Merge pull request #1519 from thinkyhead/fix_recent_issues
Fix implementation of PID menu items
10 years ago
Scott Lahteine 430c4b6538 Replace missing backslash 10 years ago
Scott Lahteine a8939eec28 Readability of MENU_MULTIPLIER_ITEM
Last commit before bed.
10 years ago
Scott Lahteine 09e09b308e Tweaky spacing adjustments 10 years ago
Scott Lahteine c610471b0c Add PID_PARAMS_PER_EXTRUDER conditional 10 years ago
Scott Lahteine 2d6fa9ce80 Proper implementation of PID menu items
- Make this work per #1344
10 years ago
wgm4321 b8e79dce89 Fix compilation errors when encoder multiplier is disabled 10 years ago
wgm4321 65e1fc71be Add encoder rate multiplier 10 years ago
AnHardt 6cdcd6c6d1 Fix iss#1492
Introduced lcd_strlen() and lcd_strlen_P().
Replaced the old functions where necessary.
Reworked language_ru.h.

Speeded up test for zero length string in cardreader.cpp
10 years ago