forked from JMRI/EngineDriver
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathchangelog-and-todo-list.txt
920 lines (920 loc) · 50.6 KB
/
changelog-and-todo-list.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
**Version 2.38.192
* Update to Gradle 8.8.0
* Additional preference to override the bug fix for roster entries with no functions
**Version 2.38.190
* Bug fix for IPLS when linked to the F1 F2 DCC functions
* Added parnoid check for permissions that should be automatically granted
* Significant changes the to the Semi-Realistic Throttle, and in particualer the integration with decoders with assistance from John Geddes
* Significant re-write of the air brake system in the Semi-Realistic Throttle
* Bug fix for roster entries with no functions. Was previously not possible to have no functions show for a roster entry
* Increase DCC-EX Track Manager layout size
**Version 2.38.188
* Additional French Translations by Alain Carasso
* Support DCC-EX remote drop of a loco (FORGET)
* Fix for the change to the DCC-EX response/broadcast for AUTO Track Manager outputs
* Fix for the DCC-EX AUTO track change command. MAIN is sent first
* Bug fixes for the Consist Follow Functions feature
* Send heartbeat restart on reconnect
* Bug fix for 'No' option for the DCC-EX protocol option
* Linting
* New Semi-Realistic Throttle layout
* Additional Google translations
* Added ability to override the WiThrottle default Latching
* Support for new gamepad type - Auvisio Android-B
* Connect Screen - Disable the connect button if no IP/host name AND port
* Bug fix for the Close button on the Function Defaults screen
* Bug Fix for the Default theme on the Function Settings page
* Minor improvements on screen layouts when using German Langauge
* Update to Gradle 8.4.2
* Cleanup of the Power screen
* Cleanup of the translation files
* Return missing label on the Select Button. It was there but in background.
* Add missing sort-by-position (order received) for the roster
* Roster sort order remembered between selects
* Moved all the function button button scroll regions to include files
* Change to SDK 34 to support new READ_MEDIA_VISUAL_USER_SELECTED permission
* Google Japanese Translations
* New 'Neon Blue' theme
* Improvements to the Original and Colorful themes
* On Horizontal slider layouts, preference to auto show/hide the function buttons of the non-active (volume) throtttle
* Added up/down swipe options to change the selected loco (volume) to the next available
* Added shake action option for Emergency Stop
**Version 2.38.187
* Preference to always show the Throw and Close buttons for Turnouts/Points
* Improvement for non-roster locos saved to recents
* additional Google Translations
**Version 2.37.186
* change targetSDK from 33 to 34 per Google requirement by 8/30/2024
* deal with longInt being sent by the devel versions of DCC-EX
* Automatically reduce the font size of buttons if the first word is long or the total text length is long
**Version 2.37.184
* option to have the Throttle WebView on the top of the page
* fix bug where the keyboard would not show in throttle WebView
* Button to sort Turnouts/Points by Name, ID or server order
* Button to sort Routes by Name, ID or server order
* Added Loco Select lists sort buttons
* Preferences for the default sort order for Roster, Turnouts/Points and Routes
* Bug fix for the Automation button labels in DCC-EX
* Improvements to the log screen
* Cleanup of the connection screen
* New button to download the roster list to the Recents list
* Selecting a loco from Recent Loco that was originally selected from a roster will now attempt to reload the original function buttons, regardless to the server. Note with WiThrottle it cannot know the latching characteristics
* UI and performance improvements to the Consist Functions Edit screen
* General cleanup and linting of the select_loco code
* Added the DCC-EX toolbar button the the Routes and Turnouts/Points screens
* General cleanup and linting of the dcc_ex code
* Visual improvements to the 'about' message on the About screen and log
- split the TTS code and types into their own classes
- Added the DCC-EX toolbar button the the Routes and Turnouts/Points screens
- General cleanup and linting of the dcc_ex code
- Improve maintaining of unique IDs for devices (needed for WitThrottle) as a byproduct of not beong allowed to access the real Device IDs anymore
- Automatically reduce the font size of buttons if the first word is long or the total text length is long
**Version 2.37.182
* Add intro/setup wizard page for DCC-EX
* New WiThrottle CV PoM page
* Bug fix for <p 0|1> (space after p) - only seen in the JMRI DCC++ simulator
* Include any server with port 2560 as a DCC-EX server when connection preference set to 'Auto'
* Discovery for JMRI DCCppOverTCP Server, checks for the mDNS service "_dccppovertcpserver._tcp.local."
**Version 2.37.180
* fastclock fix
* reinstate mipmap icon
* change the owner filter preference default to false
**Version 2.37.178
* Support for 32 Function Roster entries
* bug fixes for the 'keyboard' gamepad type
* bug fix for the close button in function_defaults
* bug fix for Consist Light Editing
* Bug fix for DCC-EX default latching for non-roster locos
* UI improvements for the DCC-EX and function defaults pages
* New preference to allow for double back button presses to exit the app
* bug fix for initial Auto-Web preference change
* Toolbar/Action Bar UI improvements
* Change all toolbar/Action Bar icons to vectors for better scaling and reduce maintenance effort
* Change the original button styling to vectors - not identical to the original but close
* removal of duplicate icons
* Fix: @mipmap/icon not found (needs revisiting)
* lint removal
**Version 2.36.177
**Version 2.36.176
* Remove use of Settings.Secure.ANDROID_ID
**Version 2.36.174
* remove check for legacy files
* Permission changes to support API level 33
* For Android 10+ - option to retain all data on uninstall
* Added close buttons to the Consist Edit and Consist Light Edit screens
* Added preference to hide Instructional/Help toast popups
* Added support for DCC-EX EXRAIL commands: ROUTE_INACTIVE(id), ROUTE_ACTIVE(id), ROUTE_HIDDEN(id), ROUTE_CAPTION(id,"label")
* Added support for DCC-EX individual track/district power control
* Redesign of the connection screen list items
* Restructure of the source file locations into sub folders
* Significant reduction in the amount of lint.
* Removal of some of the deprecated code
* Added support for Auto selection of DCC-EX Native Protocol. (Server name must contain "DCCEX" or "DCC-EX".)
* remember the dropdown selection in the DCC-EX screen
* update to jmdns-3.5.8.jar
* Added support for additional DCC-EX Track Types: AUTO, EXT, BOOST
* new preference to have the pause button near the stop button
* cleanup of the function defaults screen
* add close button to function defaults screen
* hide 'save log' button after pressing. Show file name on the log screen.
* Additional French Translations by Alain Carasso
**Version 2.35.172
* Fix: allow 16 char for default function labels
* Fix: avoid crash on DCC-EX roster entry
* Additional option for the Consist Follow Function feature
* Fix: bug fix in the Consist Follow Function feature
* include uppercase MAC addresses in DCC-EX match
* Fix for DCC-EX locos being reversed in a consist
* Fix for DCC-EX consist light editing not working
* Fix for DCC-EX functions not being activated correctly when in a consist
* CV29 read in DCC-EX. Additional information provided
**Version 2.35.170
* allow external web view on CSs without web servers
* Better checks for limiting function numbers
* option to always use function labels from server
* For DCC-EX, allow overriding of the default latching behaviour of all/any functions
* Fix: Refresh Roster list after populating from DCC-EX
* Fix: Avoid several NPEs reported to Play Console
* Fix: improve throttle name uniqueness
* added DCC-EX Protocol indication to About page
**Version 2.35.168
* fixed regression with LnWi states
**Version 2.35.164
* New 'Tablet Vertical Left (1-6)' throttle screen layout
* Fix for when deleting servers from the recent list
* Improve Recent Turnouts state display and toggling
* Some fixes for DCC-EX
* Support for Modes A & C on the MagicSee R1 gamepads
**Version 2.34.162
* Fix activity transitions
* Use Backup by Google One to save/restore Preferences and settings.
* tolerate lack of PHONE permissions
* move a few Preferences to Advanced
* set "Web" menu to "DCC ESP" for DCCESP server
**Version 2.34.160
* Prevent some crashes reported to Play Store
**Version 2.34.156
* Better sorting of Turnout/Points list where numbers are in the names
* Fix Android Game mode for gamepads
* Support for USB volume dials as a Gamepad type
* Preference for setting what a second press of the Stop button on a gamepad does
* Prevent some crashes reported to Play Store
* Support for using the native DCC-EX commands instead of WiThrottle on an EX-Command Station
* Able to read and write CVs when using native DCC-EX commands
* Able to issue DCC-EX commands directly
* Able control the Track Manager feature of DCC-EX
* Correct a misalignment of the touches on all the vertical throttles.
* Add IoTT Stick to server list on About page
**Version 2.33.154
* Add link to Privacy Policy, per Google requirement
**Version 2.33.152
* 'Stop' button cancels 'Pause' if stationary
* Volume 'Pause' and 'Mute' hardware buttons stop then toggle direction
* Fix: gamepad buttons when some default function labels not set
* New: Option to specify only one gamepad, defaults to true
* Fix: manual turnout buttons not enabling
* add some padding to Port heading on Connect
* Show menu on Disconnect Screen
* Fix: tolerate FKeys > 28
* New: Preference to alter the Heartbeat Response Factor (percentage of the heartbeat period)
* New: Preference to have the App Icon and App Name act as an emergency stop
**Version 2.32.150
* Fix: soft keyboard stayed up after exit from Loco Select in some conditions
* Fix: roster icon url / location (broken in 148)
**Version 2.32.148
* TTS current speed option
* Hide the status and navigation bars on Lock&Dim screen.
* Check for "VN" not just "V" in version message
* add port to About page
* privatize a few variables
* comment out DownloadMetaData and GetJsonFromUrl, which use the now-removed apache.http.client
* fix issue with the gesture overlay on the routes screen
* option to speak the buttons in the gamepad test
* fix stop during pause on gamepad
* correct log file path shown, and include in log
**Version 2.32.146
* TTS speed bug fixes
* additional TTS options
* Option to link F1&F2 to the IPLS Bell and Horn
* Reset gamepads on start
**Version 2.32.144
* Fix: Show proper function keys for "Request LocoID" feature
* Fix: Several gamepad issues
* Fix: Engine Driver not appearing in recent apps list
* Fix: Reconnect screen created extra entry in the recents list on Samsung S5
**Version 2.32.142
* preserve the Web Activity status when switching screens
* Fix: avoid web page reload on navigate
* Option to show the Server Description on the Action bar
**Version 2.32.140
* Option for Haptic feedback on button presses
* Option to use a normal keyboard (bluetooth or USB) as a gamepad type
* Gamepads continue to function in most activities (excludes keyboards)
* Images for any selected loco is cached locally
* Option to select a local image for roster locos (For wiThrottle servers that don't support images)
* Web Screen maintains state when swiping, using the menus or auto-web
**Version 2.31.138
* Fix: Auto Server preference load
* 'Limit Speed' and 'Pause' added to the Horizontal Layouts
* Show roster lists from unknown servers
**Version 2.31.136
* Avoid NPEs in gesture handlers
* support for user-defined loco sounds
* Additional French Translations by Alain Carasso
* hide web view button and prefs when not available
**Version 2.30.134
* Cleanup of the Power Screen
* Dead Zone Preference Fix
* handle improved state labels (JMRI change)
* Rework Advanced Preferences feature
* icons for the preference categories
* basic 'in device' loco sounds preferences (loco 0 & 1 only)
* Move to Scoped Storage. (Enforced by Google for Android 11.) Engine Driver's data files are now stored in ../Android/data/jmri.enginedriver/files/
**Version 2.30.130
* shortened About string
* avoid crashes reported to Play Store
* FIX - Switching layouts sometimes not updating correctly for direction changes
* bump minSdkVersion from 15 to 16
* Cache roster images for selected locos
* Option to load local images for roster locos (primarily intended for DCC++EX but works for any server that does not support a web server)
**Version 2.30.128
* Add confirmation dialog to Clear Consists
* FIX - Locos selected from roster written to Recents without name
* FIX - Roster entry option did not show for earlier version of JMRI
* All connections logged to connections_log.txt
* hide "Server Roster" loco selection option if server doesn't support rosters
* ActionBar replaced with Toolbar. Activity labels repositioned over the app icon
* All button style menu actions will always fit on the toolbar
* Toolbar can be used for left and right swipes
* Option for Left and right swipes to only be allowed on the toolbar
* Toolbar buttons added to all screens
* compileSdkVersion 29 added
**Version 2.29.126
* Haptic feedback on sliders (optional)
* Support for Request Loco ID (DCC-EX-only)
* Additional French translations by Alain Carasso
* remove footer from select_loco
**Version 2.29.124
* enforce minimum spacing on most outgoing messages
* increase minimum message spacing for LnWi
* update regex to handle LnWi hex ids
* avoid IndexOutOfBoundsException, NPEs and IllegalArgumentException reported to Play Store
**Version 2.28.122
* Option to adjust the stop button spacing on the vertical throttles
* fix stop button not showing when slider is hidden
* avoid NPEs reported to Play Store
* removed commented-out code, reformatted and re-indented
**Version 2.27.120
* avoid NumberFormat and NPE crashes reported to Play Store
* update Readme
* additional French Translations by Alain Carasso
* adjusted button spacing on vertical throttles
**Version 2.27.118
* merge another speed and direction request message
* Avoid crashing when updating knob position if speed-steps changed
* new 'Special' consist function following option
* Hide "Swipe Through Routes" Preference if Routes not supported (e.g. MRC)
* change VN connect timeout to explicitly check for version
* New preference to disable the sound and vibrate on disconnect
* Preference to show the timestamp on the log entries
* Bug fixes for the 'Complex' string matching consist function following option
* Fix - show numeric keypad for Dead Zone preference
* Fix - Direction button labels if default entered on one only
* Change - Fix 'Loco:' label on the non-original throttle layouts
* Change - Hide 'Loco:' label once a loco is selected
**Version 2.26.116
* Option to display 1-4 functions on the 'Simple' Throttle layout
* set input type to numeric for server, port and loco address, prevent crashes
* add "discovered" server for DCC-EX access point, rewrite LnWi detection
* update ESU Mobile Control II support for newest devices
* add address and port to VN timeout message
**Version 2.26.114
* show server turnout list even if it arrives after activity started
* Use wifi connection unless Allow Mobile Data option selected
* set focus to address field if DCC Address selected
* fix for complex text matching functions
**Version 2.26.110
* add HTservertype and Htserverdescription to About page
* change targetSdkVersion from 28 to 29
* moved from ACCESS_COARSE_LOCATION to ACCESS_FINE_LOCATION due to SDK29
* don't allow web swipe when Auto-Web is on
* show "Server Defined", not "Defined" in Turnouts if no server type
* bypass "EACCES (Permission denied)" error due to SDK29
* removed unused Web Orientation option "Auto-Web"
* fix: web menu and swipe now remember URL and zoom
* remove save and restore of web view "scale", no longer needed
* send speed and direction request in one message
* some linting and commented-out-code removal
* change all timeout-related values to milliseconds and adjust by +/- 10% instead of 1 sec
* fix crashes reported to Play Store
**Version 2.26.108
* get server name for prefs using webserver
* Add Numeric/Text button on Connect soft keyboard
* Swipe down options same as swipe up
* include throttle web view when switching layouts
* additional background layout options
* Menu Button to show/hide the Throttle Web View
* Pref to add Web Activity to swipe list
* fix crashes reported to Play Store
* default to numeric keyboard for Server Address
* Suppress WiT message on exit unless connected
* Limiting speed change rate also applied to decreases in speed
* Optional Pause button for vertical throttles
* Pause and Limit Speed options for gamepads
* 'Different' acknowledgement sounds for Pause and Limit Speed options for gamepads
* multiple changes to Pause function
* increase delay before sending 'Q' to server
* removed redundant vertical throttle code
* reduced several heartbeat minimums to 1 second
* removed send of 'N' heartbeat when no speed/dir response from server (old JMRI only)
* disconnect if VN not received in 5 seconds
* only scroll Log View when at bottom
* improve connect screen when using very large fonts
* consists null debugging and fixes
* Support for Gamepad = Utopia 360 - Android - Mode C
* prevent recursive crash in Turnouts due to comparing truncated string
* fix incorrect toast on number of throttles
* debug advancedPreference name when not found
**Version 2.25.106
* fix crashes reported to Play Store
* several visual and organizational improvements to Preferences
* Optional Action Bar button to switch Throttle Screen layouts
* Add ED version to log
* More Catalan and Spanish translations by Luis Zamora
**Version 2.25.104
* New thumb image for switching throttle
* Clear web view cache at connect for more reliable loading
* Improve background mode, restarts and heartbeat
* Theme and throttle preference changes no longer restart the app
* Added option to use a background image on the throttle page
**Version 2.25.102
* new Switching/Shunting Throttle Screen types
* additional French Translations by Alain Carasso
* fix time zone offset issue
* add clearcache at connect for web views
* add slf4j-nop and switch to external jars
* add clearcache at connect for more reliable web view loading
* new longpress to reload web view
* eliminated erroneous background notifications when device is rotated
* invalid initial web page preference setting now handled gracefully by web view
**Version 2.25.100
* Swipe now works everywhere except active sliders
* Less likely to activate function button when scrolling or swiping
* Fix problem in 'drop before acquire' when re-selecting the same loco
* Play sound and vibrate when device disconnects
* Remember Recent Consists and restore them from the select loco screen
* Added close button and roster image to roster details dialog
* Rework of roster name usage when an address is entered
**Version 2.25.98
* change fastclock from websocket to withrottle PFT message
* add fastclock to other activities
* Remember Recent Turnouts/Points and allow selection from the turnouts/points screen
* Add View Log to Turnouts, Routes and Web
* prevent crash reported to Play Console
**Version 2.25.95
* Option to show a Shunting/Switching speed button (Vertical Throttle only)
* Fix problem in 'drop before acquire' when re-selecting the same loco
* Play sound and vibrate when device disconnects
* Remember Recent Consists and restore them from the select loco screen
* Added close button and roster image to roster details dialog
* Rework of roster name usage when an address is entered
* Distinguish manual loco address entry vs. roster selection
**Version 2.24.93
* prevent crash when removing recent loco
* enable clear text in webview
* prevent crashes reported to Play Console
**Version 2.24.89
* Option to show/hide advanced preferences. Advanced preferences are hidden by default
* Entering colon (":") into the host field changes focus to the port field
* Long press on an entry in the Recent Locos List removes it from the list
* Recent Locos List shows the icon from the roster if found
* Show tick marks on vertical sliders, with option to disable
* fix bug when returning from web view
* prevent several crashes reported to Play Console
* Change targetSDKversion to 28
**Version 2.23
* ESU MC2 support Gradle dependency
* Change target API to 26
* gamepad fns behave same as screen fns
* Support for the Flydigi Wee 2 gamepad controller
* Introduction and Initial Setup Screens (wizard)
* Recent Connections list - allow user to delete individual entries with long-press
* Option to import preferences from a URL
* Option to automatically import preferences from the JMRI Server on connect
* Add location permission prompt
* Add wifi & OS details to About screen for debugging
* change default for DirChangeWhileMoving and selLocoWhileMoving to false
* add some edits to Turnout# input
* show warnings when not using wifi network
* update jmdns from 3.5.4 to 3.5.5 to keep up with JMRI
* begin adding automated testing infrastructure, resumed tracking gradle*
* add View Log to Connect screen
* delete settings files on Reset Preferences
* fix alignment of multi-word functions
* add permissions bypass for SDK15
* avoid some crashes reported to Play Store
* remove some lint warnings
* rearrange some menus
* remove redundant tags from log view to improve readability
* merge -vll resources into default
* fix pref error message
* prioritize eStop button position
* fix some reported bugs and lint warnings
* Czech translation by Petr Šídlo
* French translation by Alain Carasso
* Two additional throttle page types
* begin work on Adaptive icons
* option to save log to file
* Web View and Auto-Web remember page and position on page
**Version 2.22
* New 'Big Button' throttle screen option. (Only one throttle with no slider.)
* New Colourful/Colorful theme
* Option to always treat F1 & F2 as sound for the Selective Lead Sounds option
* update project to Gradle build tools
* bump MinSDKVersion to 14 (from 7)
* replace JmDNS source with jar file
* prevent crashes reported to Play Store
* Spanish and Catalan translations by Luis Zamora
* disable Web View prefs on Simple and Big Button only
* Build ESU MC2 support via Gradle dependency rather than pre-built jar
* New option for ESU MC2 to allow knob to be disabled by on-screen button
**Version 2.21
* remove turnout hardware list, WiThrottle Server changed to also handle numeric-only
* changes to EngineDriver icon
* remove toast info messages for turnouts and routes
* fix issue with premature address confirmation
* no longer request unconfirmed locos on reconnect
* prevent crashes reported to Play Store
**Version 2.20
* Fix for Gamepad functions F10 and above
* monochrome icon for the notification bar
* handle MRC sending multiple VN messages
* add support for "HmXXXXX" info messages returned from server
* reduce 'Q'uit delay to avoid early socket close which doesn't clear WiThrottle list
* prevent crashes reported to Play Store
* ESU MC2 Stop button long-press behaviour modified to act on timeout rather than release
* ESU MC2 control knob now responds to external speed changes - fixes issue #292
**Version 2.19
* New flashlight button option for devices with on-board camera flash. Needs Camera permission for this.
* optional 'simple' throttle screen allowing up to six throttles with vertical speed sliders but no function buttons
* optional 'vertical' throttle screen allowing exactly two throttles with vertical speed sliders and function buttons
* option to filter the roster
* major throttle change from T/S/G to array
* require WiThrottle v2.0, also fixes issue where user connects to web port
* remove checks and coding for withrottle_version < 2.0
* standardize withrottle_send command formatting
* prevent several crashes reported to Play Store
* revised Select/Release screen design
* moved connect and socket timeout values to preferences
**Version 2.18.1
* option to change languages from the preferences screen
* no longer requires an accelerometer in the device to install from the Play Store (reported bug)
* option to change the long press delay for the direction buttons
**Version 2.18
* prevent some crashes reported to Google Play
* option to hide the demo server
* option for the volume keys to follow the last touched throttle
* fix issue with ESU Mobile Control II knob position not updating on EStop
* Import includes throttle name if on the same device that exported them
* multiple options for shaking the phone to perform an action
* separate preferences for Volume key and Gamepad speed increments
* fix issue with ESU Mobile Control II knob position updating speed even when screen locked
* option to speak some gamepad related events
* option to skip the gamepad test with just one 'decrease speed' button press
* Italian and Portugese translations from Roberto Falorni added
* New Dark theme option
* option to reset the Function Label defaults
* option to reduce the number of displayed default Function Labels
* only send release for throttles actually in use
* option for ESU Mobile Control II to disable direction change at zero end-stop position
* option for ESU Mobile Control II to disable on-device stop button short-press
* fixed mis-handling of WiThrottle-created consists
**Version 2.17
* Add support for ESU Mobile Control II throttle
* Add toast messages when ESU Mobile Control II in stop mode
* Add relevant British English translations
* Enable/disable speed buttons & seekbar when ESU Mobile Control II in stop mode
* Optional high contrast colour themes
* Improved the rounding error on scale speed calculations (The throttle will zero more reliably)
* Option for additional highlight of the Loco selected. Either via the Volume keys or Gamepad 1 or both
* Option to disable the hardware volume keys to control the throttle
* Enforce a test each time you use a gamepad, with an option to disable the test
* Some regionalisation for Australia and Great Britain
* prevent some crashes reported to Play Store
**Version 2.16
* Preference grouping
* new gamepad repeat handling and sound feedback
* Individually control lights in consist
* Handle multiple gamepads
* warning before clearing Recent Loco list
* user-selectable gamepad buttons
* use repeat Preference for volume as well
* Export/Import/Reset Shared Preferences
* fix screen issue when soft menu left open
* New swipe-up Prefs to dim and lock
* remove min android check for gamepad support
* prevent some NPEs reported to Play Store
**Version 2.15
* fix incorrect loco request on reconnect when loco is not in roster (found by Bob Grandle)
* prevent crash caused by empty JMRI consists
* prevent concurrentmodificationexceptions reported to Play Store
* prevent loop of Steal dialog
* hide turnout toggle button if system is LnWi
* Preserve throttle button states - Robin Becker
* Correct function button release handling for consists - Robin Becker
**Version 2.14.2
* swipe up on Throttle screen to hide Throttle Web view - Peter Akers
* add client support for Steal
* avoid several crashes reported to Play Store
* add spacing following acquire and release to give CS time to respond
* don't send unneeded request for velocity and direction on connect, WiT now sends anyway
**Version 2.14.1
* avoid some crashes reported to Play Store
* postpone sending of "Q"uit message until Throttle has a chance to send stops
* prevent entry of new lines in text fields (Throttle Name, initial web, etc.)
**Version 2.14
* request and show function labels for JMRI consists - mstevetodd
* show activeProfile on About page - mstevetodd
* Prevent direction change while moving - Peter Akers,
* Decrease Loco No. button Height - Peter Akers,
* Show loco address instead of names - Peter Akers,
* Increase web view size - Peter Akers,
* Immersive mode - Peter Akers,
* Stop on direction change while moving - Peter Akers,
* Always use default labels - Peter Akers.
* hide menu options and activities when not allowed or supported - mstevetodd
**Version 2.13
* allow app to be moved to SD card - mstevetodd
* Added selective sound routing preference for consists - Robin Becker
* eliminate crash when multicast not supported - Robin Becker
* support for MRC wifi hardware (1530) - mstevetodd
**Version 2.12
* only send estop for active throttles
* new prefs to include Routes and Turnouts in swipe list - Robin Becker
* new pref to hide turnouts/routes if no user name - Robin Becker
* fixed issue with Consist Edit list view on new OS
* only send Horn, Bell and Headlight functions to lead loco in Engine Driver consist - Robin Becker
* Stop button no longer moves the "v" - Robin Becker
**Version 2.11
* Avoid StringIndexOutOfBoundsException reported to Play Store
* when slider hidden, use -- and ++ instead of << and >>
* avoid ClassCastException on string conversion - Robin Becker
* new Reconnect logic and display - Robin Becker
* handle move of JMRI roster folder
* prevent npe in turnouts.java reported to Play Store
**Version 2.10
* Adjusted speed step handling to restore proper AUTO speed behavior - Robin Becker
* new pref to stop locos when phone goes off hook - Robin Becker
* new pref to hide speed slider, making a button-only throttle - mstevetodd
* send estop instead of stop when estop button pressed - mstevetodd
* prevent several npes reported to Market - mstevetodd
**Version 2.9
* fix issue with volume button changing wrong loco speed when unused throttle has the "v" - mstevetodd
* Catch additional exceptions when starting jmDNS listener (NoSuchMethodError reported to Store) - mstevetodd
* update system list for turnout prefixes - mstevetodd
* Modified handling of consists so that Locos are not visible unless WiT reports that they have been acquired (via the MT+ message). - Robin Becker
* Also TA does not pulse the outbound heartbeat for a throttle unless the lead loco has been acquired. - Robin Becker
* Adjusted the scaling of loco/consist on Throttle and SelectLoco screens to better utilize the actual textView size. - Robin Becker
* Widened the Throw, Close and Toggle buttons on the Turnouts screen so the label text does not wrap. - Robin Becker
* Adjusted size of the Power icon so it is square. - Robin Becker
* corrected number of default function buttons to 28 - mstevetodd
* added option to show JMRI fast-clock in title bar - Robin Becker
* fixed theme issue with pre-Holo devices - mstevetodd
* reduced click area of turnout and route lists to prevent inadvertent clicks when scrolling - mstevetodd
* reenable alpha input for turnouts and routes - mstevetodd
* add text hints for all entry fields - mstevetodd
* redo notifications to support reopening when clicking notification - mstevetodd
* converted jmri metadata retrieval from xmlio to json - mstevetodd
* restore last scroll position of turnout and route lists - mstevetodd
* added option to use speedsteps instead of percentage - Robin Becker
* show % or speedstep # in speed view - Robin Becker
* always show loco for pre-multithrottle, since no response will come - mstevetodd
* a few fixes to prevent crashes with pre-multithrottle - mstevetodd
* rearranged and reworded prefs to flow a bit better - mstevetodd
* changed default initial web pages to reflect recent web server changes - mstevetodd
* added specific speed step options - mstevetodd
* fixed slider height and thumb alignment issues, and improved button hiding - mstevetodd
* fixed issue with notification not working from throttle - mstevetodd
**Version 2.8.2
* restore functionality for very old JMRI (pre-multi-throttle)
* fix selection/display of roster entry when same address is used for multiple entries
* only show third throttle when supported by JMRI
* rearrange the third throttle code to lower chance of NPE reported to Play Store
* request heartbeat update on third throttle as well
* avoid NPE when heartbeat comes as loco removed (Robin Becker)
**Version 2.8.1
* fix default for "Drop Before Acquire" if never set, should be off
* add click sounds to function and direction buttons, to match other buttons
**Version 2.8 (mstevetodd)
* only show loco and release button for # of throttles allowed
**Version 2.8 (Robin Becker)
* New rotation option to auto-jump to web view in landscape mode.
* Quick list filter for turnouts and routes, with new preference for location delimiter.
* New consist editing dialog, for choosing lead loco and setting direction of each loco in consist.
* only show Ongoing Notification when ED is in background
* removed several warnings in JmDNS
**Version 2.8 (Jeffrey Machacek)
* User can display EStop Button in prefs.
* Changed display theme to Holo to display action bar.
* Estop can be visible in all screens.
* Estop stops all locos controlled by EngineDriver.
* All screens have action bar and menu.
* Lets user see and control Layout power with icon in menu bar in Throttle, Turnouts, and Routes screens.
* If Engine Driver is not allowed to control layout power, menu bar layout power icon not visible after first press.
* Pref to display layout Power icon or words depending on API version.
* Pref to set right and left padding of all throttle's speed slider.
* Pref to connect to first discovered JMRI WiThrottle Server.
* pref for throttle up/down speed buttons at ends of sliders, with setting for amount of change.
* Fixed nullPointException for new ConsistEdit, user can't consist with drop loco before acquire pref On.
* Can go to ConsistEdit screen from throttle menu when there is a consist for a throttle slot and can choose which throttle to edit.
* Can now clear recent connection and locos list with button.
* Added third throttle slot.
* User can select how many throttles to display (1 to 3).
* Fixed problem when sending the quit "Q" command to JMRI, now the throttle name is removed from JMRI WiFi Throttle list.
* Displays OnGoing Notification to user that Engine Driver is running.
**Version 2.7 (Robin Becker)
* prevent crash when going to About or Prefs prior to any connections
**Version 2.6 (all by Robin Becker unless noted)
* pref to "disable" on-the-fly consisting, and revert to dropping when a new one is added. - mstevetodd
* pref to only show one throttle
* web page history and zoom levels preserved through rotation, navigation and back button
* separate prefs for throttle and web view
* made menus consistent across activities
* orientation prefs used for all activities
* rewrote default function settings for performance
* send SHUTDOWN message after DISCONNECT plus a delay.
* Connect now uses worker thread (asynctask) to save connection list
* Throttle & Web pages: pause webView timers and stop CookieManager() in onPause, start them in onResume
* default preference values now use the associated DefaultValue strings
* moved calculation of speed slider top/bottom out of gesture Start() and into set_labels() so that the Top/Bottom calcs are only updated when the layout is updated.
* swipe now works over disabled sliders
* moved roster loading, now updates as roster arrives
* multiple changes to improve performance and shutdown properly
* multi-system turnout system names can be directly entered
* move system info from SelectLoco to About
* improvements to all direct text and numeric entry
* new webpage is loaded after changes in Prefs
* added Debug log viewer - mstevetodd
* new launcher icons
* new pref to limit number of recent locos
* prevent duplicate jmdns listener - mstevetodd
**Version 2.5
* return TargetSDKVersion to 10 to trigger "legacy overflow button" for menu (needed on ICS)
* keep screen on in web view (prevent screen blanking)
**Version 2.4
* update JmDNS to 3.4.2+
* fixed opaque "footer" in roster listview (seen when few items exist)
* catch error when loco address left blank
* allow entry of complete http* url for web views
* sort routes by user name
* sort turnouts by user name
* add pref for orientation of web screen
**Version 2.3
* lock orientation to portrait for most screens
* add Mfg to roster details (overlooked earlier)
* prevent "bounce" when slow server sends old speed. ED was sending it back as new request.
* increase server connection timeout values
* track individual addresses/rosterids for acquired locos
* process MT-xxx messages to remove loco from a throttle
* handle space char in roster id as %20, not +, for new jetty server
* increased caching of roster icon images
* prevent multiple requests of same image when opening roster (was due to resizing of view)
* pref to limit max throttle change, to prevent accidental speedup when trying to press reverse.
* ignore swipe on throttle sliders
* re-retrieve roster details when roster received
**Version 2.2
* use roster name when selecting loco, to handle multiples with same address
* show roster details (including comments) on long-press on roster entry in list
* determine full JMRI version using xmlio server (shown on roster page if available)
* use new roster icon urls if JMRI version > 2.99.4
* catch out of memory error when retrieving large images (seen when resize not available)
* ignore failed wifi lock attempt (error reported to Market)
**Version 2.1
* new user pref to select orientation on Throttle (default to portrait)
* stop javascript refresh on exit (by loading a "blank" page)
* rearranged prefs
**Version 2.0
* connect to discovered servers using IP instead of verifying name (avoids timeout on non-DNS network)
* change server list items to display system name and ip address
* move "web" menu item higher in list so it always shows in Throttle (instead of under More)
* only show/use ipv4 address
* implement serviceRemoved to remove ended servers from discovered list
* web page links now open inside ED instead of external browser
* added prefs for "Initial Web Page" and Web View Location
* initial version of web page on throttle page, Bottom only, 50%
* prevent ConcurrentModificationException crash (reported to market)
**Version 1.9
* encode icon filenames to handle special characters
* catch error when attempting to load very large image files
* send resizing parm with image retrieval (also added code to JMRI to take advantage of this)
* moved roster.xml loading to an async thread
* upgraded imagedownloader
* catch NPE in withrottle_send (reported to Market) - (rbecker)
* improved handling of connection loss, including reconnect (rbecker)
**Version 1.8
* Add try/catch for ScrollView.onTouchEvent, reported to dev console (rbecker)
* ignore malformed roster list, reported to dev console (mstevetodd)
* retrieve and display roster images, if mini web server running (lionel)
* show consist details unless name is > 4
* Removed unneeded host name lookups to speed connection on some networks, including 2 in jmDNS
* Turned off speed step handling (for now)
* Fixed crash (reported to dev console) in routes, turnouts and power when response was < 3 chars
* catch error "Thread already started" message (reported to dev console)
* reduce height of roster entries if icon not used
**Version 1.7
* Enabled "fling" between turnouts, throttle, routes (rbecker)
* Fixed the shutdown and back behavior (rbecker)
* added animations to all page transitions (rbecker)
* added menus to routes and turnouts activities (rbecker)
* fixed initial height on throttle (rbecker)
* show feedback on Stop button (rbecker)
* fixed intermittent failure to get functions from roster (rbecker)
* handle strange speeds sent by eStop and show message (rbecker)
* add prompt before disconnecting (rbecker)
* moved socket read and heartbeat into classes (rbecker)
* now checks for WiT even when no loco selected (rbecker)
* now shows correct page when returning from web (mstevetodd)
* added menu to web activity (mstevetodd)
* don't blank out manual entry after use (mstevetodd)
* always include jmri.mstevetodd.com in connections list (mstevetodd)
* new pref for max recent connections (mstevetodd)
* moved save of recent connections to follow start of throttle activity instead of precede
**Version 1.6
* Began adding Multithrottle support (serious rigged version, 2.0+ only)
* Mirror speed and direction from server (on heartbeat, 2.0+ only)
* Show warning on client if server goes away while loco selected
* Improved appearance of buttons
* Fixed incorrect heartbeat request when not enabled on server side
* Shrink the font for loco strings instead of growing the buttons
* Added background texture
* Added preference to hide recent loco list (more room for roster list)
* corrected display of Short addresses in Recent list
* prevented crash when MaxThrottle pref is blanked
* button "on" images work even when < 2.0 (also fixes the immed-after-press display)
* fixed slider height on low-dpi devices
* fixed height of selected locos lists on select_loco activity
* button text now shows up in eclipse graphical layout tool
* receive web server port#
* add menu option to browse mini web server home page
* started work on "flings" between turnouts, throttle, routes.
* added device IP to "cannot connect" message for better debugging
**Version 1.5
* sort roster entries by name
**Version 1.4
* uses JMRI images for power off/on/unknown instead of text (added by rbecker)
* fixed several potential crashes when reading misformatted settings files (mstevetodd)
* improved default throttle naming to prevent duplicate connections (mstevetodd)
* updated jmDNS again (mstevetodd)
* changed discovery code to take advantage of jmdns changes, works better with ubuntu (mstevetodd)
*Version 1.3
* suppressed popup soft keyboard on Turnout and Route panels until EditText view is touched (added by rbecker)
* fixed another NPE reported to market (mstevetodd)
* updated jmDNS again (mstevetodd)
*Version 1.2 - changes/additions by mstevetodd
* updated jmDNS again
* fixed a couple of NPEs reported to Market
* moved start of jmDNS to OnResume (to reconnect after lock/unlock of device)
* switch loco controlled by volume buttons (by tapping the speed label)
* added preference to increase height of throttle sliders
*Version 1.1 - changes/additions by mstevetodd
* create and delete jmdns as needed (should prevent lockup when wifi is toggled, and will "retry" if wifi state changes.(
*Version 1.0 - changes/additions by mstevetodd
* moved directory creation to connect message handler, removed writeable check altogether, and added toast messages on file read/writes
* moved read of connections_list.txt to onStart so it shows immediately
* use volume button for speed of first loco (only if selected)
* add existing consists to select list in select loco, formatting name as addr1+addr2+addr3, etc.
* improved handling of discovery listener, turn it off and on, and don't add duplicates
* get qualified name of server and use it in discovery list, (verify it resolves first)
* added preference to hide route system names
* update jmDNS to 3.2.2 to improve server discovery
* turn off multicast_lock when not used
*Version 0.9 - changes/additions by mstevetodd
* added roster list to select_loco screen (hidden if no entries)
* removed writeable check from read routines of settings and recent file loads (was causing it to randomly skip loading on Incredible)
* show long/short in recent locos list
* show roster names in throttle and selected loco
* always use function labels from roster entry (if set)
*Version 0.8 - changes/additions by mstevetodd
* added NCE to hardware system list (oversight)
* added preference to default Long/Short/Auto for loco address length
* leading 0 was treated as octal in select_loco, made it stop doing that
* show disabled Copy button in function settings
*Version 0.7 - changes/additions by mstevetodd
* prevent acquire with blank loco address (was crashing)
* new Turnouts display showing list of defined turnouts, current state, updated on change
* toggle turnout on list click
* direct entry of turnout address with toggle and throw/close buttons, disable controls on not allowed
* new Layout Power control activity
* new Route control activity (clone of Turnouts)
* enhanced titles on all activities
*Version 0.6 - changes/additions by mstevetodd
* added preference for Maximum Throttle, to set a maximum speed to be sent
* lowered minSDK from 7 to 4 (to allow use by Android 1.6 devices) had to copy drawables to drawable folder
*Version 0.5 - changes/additions by mstevetodd
* added select loco button to ed screen, call ed direct from connect
* added 29 function buttons for both throttles, using scrollers
* disable buttons and slider and shrink screen usage for unselected loco
* adjust function buttons to indicate current state from WiT server
* added release buttons to sl activity
*Version 0.3 - changes/additions by mstevetodd
* function labels for throttle, hiding unused
* separate rev-stop-fwd buttons
* read responses from withrottle and store in shared app variables
* forward responses to other activities, so they can update as needed
* advance screens only upon successful responses
* release loco when leaving throttle activity, with pref for stopping loco
* screen and messaging additions and edits to provide more feedback to user
* set short timeout on socket open and reads to prevent app from "hanging" on long timeout
* added heartbeat logic (when set on withrottle side)
* copy function labels from roster (note: they do not include sticky bit)
* send hardware address as HU<throttle-name> (prevents duplicates in WiThrottle server)
* changed process namespace from net.lnxgfx to jmri.enginedriver
* added html About page
*/
/*
* general/global
* TODO: change config files to use db instead of .txt files, turn off sd card permission
* TODO: toast messages on release of loco (even on Exit) and update of preferences
* TODO: split RESPONSE message into multiples, and remove string parsing from other activities
* TODO: rewrite procedural process_xxx functions into proper OO classes
* intro
* TODO: if saved preferences found, prompt for import and shortcircuit intro
* web
* TODO: allow user to specify initial zoom-level of each web view
* TODO: allow zoom out more than the page width
* routes
* TODO: shrink button text if longer than x
* TODO: determine why double-click needed sometimes
* turnouts
* TODO: add state-based color (maybe just for colorful theme?)
* TODO: support client entry/edit of username for servers without usernames
* TODO: combine loco control and turnout control in one page
* TODO: why don't manual MRC Turnout updates update the list?
* connection
* TODO: provide for adding/editing names of recent connections
* TODO: set limit on reconnect attempts?
* TODO: while reconnecting, make "Exit EngineDriver?" immediate, not wait for next timeout
* TODO: add "Check for Updates" link to first menu and to About page.
* TODO: Add option to choose which server to automatically connect to
* TODO: Add DCC-EX to "Auto-connect to first server?"
* threaded_application
* TODO: verify MRC fastclock messages
* TODO: when MT+ received, if the loco is in a consist, request the consist address also
* TODO: rewrite readTimer logic, to start back up rather than creating a new one
* TODO: check for error on send and do something with it
* throttle:
* TODO: If server returns Roster with empty function list, don't show the ED defaults, see MRC
* TODO: Tablet Switching Left (1-6) with direction buttons
* TODO: add random speed adjustments (to avoid monotonous sound)
* TODO: add voice control
* TODO: respect "Max Throttle %" from roster entry
* TODO: option to show the turnout view instead of the webview, including option for Recents
* TODO: option to use 'f' function commands for WiThrottle
* TODO: option/button to support DPU "unfenced" mode, relatively adjusting 2nd throttle from first
* TODO: retrieve and show icons for function buttons (if set)
* TODO: if nS is lead of ED consist, MT-nS loses track of "other" loco (test with a "partial steal")
* TODO: make Stop "sticky" and ignore slider unless direction is selected
* TODO: avoid dup sends when function is non-latching (get from WiT) e.g. HornSelect skips one
* TODO: add more info to Exit dialog, e.g. "2 locos will be stopped and released"
* TODO: re-arrangeable function buttons
* TODO: add preference to set throttles to zero when track power is turned off
* In Phone Loco Sounds (throttle):
* TODO: custom sound profiles to be able to specify/override the momentum delay
* TODO: work out when to play the engine shut down sounds
* TODO: link each loco address to a specific Sound Profile / remember Sound Profile used for each loco address
* TODO: load and play the intermediate step/notch engine sounds
* select_loco:
* TODO: allow user to specify which loco to get labels from
* TODO: manually create roster entries (function labels) and store on device
* TODO: handle roster entry names with forward slash
* TODO: check length of text to avoid overlapping images, slide images to right
* TODO: disconnect connections made by roster stuff
* TODO: simplify select_loco by removing handler
* TODO: for "auto" handle the Digitrax numbering, i.e. 1-128 is short
* TODO: edit/save/auto-restore 'local' function definitions for individual locos
* TODO: allow downloading of filtered roster list
* TODO: download the images when you download the full roster
* TODO: a) option to save and re-request selected locos, (6-throttle layout with the same locos)
* TODO: b) add preference for automatically loading locos on connection into multiple throttles
* consist edit:
* TODO: add swipe action or other action to change the lights and remove the Consist Lights edit page entirely
* TODO: let user explicitly choose the loco to pull function labels from
* DCC-EX screen
* TODO: the number of tracks/outputs is not refreshed when the app is closed, opened again, and connected to a CS that has a different number of outputs
* preferences:
* TODO: simplify accessing exported preferences file. Link?
* log_viewer:
* TODO: simplify accessing log file. Link?
*
* These require changes to WiThrottle Server
* add Light control page
* resend turnout and routes when items are added or removed, by adding listeners to WiT
* resend roster list when items are added or removed, by adding listeners to WiT
* WiT send MT-xxx when commands are received from a client for a loco that is not active. (to get ED up to date with server after connection loss)
* add "available" roster/address list to select_loco_activity (need "in use" indicator from WiT)
*
* These changes are likely to wait until ED3
* allow user to configure side-by-side panels for pads, etc.
* allow user to specify multiple web URLs
* change Connect to allow to be called from any Activity when needed
* */