**Version 2.43.228 **Version 2.43.226 * New Features * New Throttle layout - "Tablet Vertical Left - two function columns (1-6)". * Support for the new DCC-EX WiFi commands in the drop list. * Set web port to 80 for DCC-EX. (version and processor dependant) * Added preferences to customise the Thrown/Closed button labels for DCC-EX. * Removed need for READ_MEDIA_VISUAL_USER_SELECTED and READ_MEDIA_IMAGES Permissions. * Bug Fixes * Clock not displaying initially, and not updating consistently. * Layout swap button was not refreshing the screen. * EStop Action Bar button not always sending EStop. * Don't query the DCC-EX EStop Pause/Resume state unless the preference is set and the CS version is correct. * Recent Locos and Recent consists being duplicated. * Locos acquired by Address and Roster not being recorded separately in the Recents. * Keyboard commands for Forward/Reverse acted as a toggle rather than the specified direction. * Other * Reworking of the custom toast popup. * Reworking of most of the images in the intro/wizard * Disabled left/right swipes in the intro/wizard. * Change the preference checkboxes to switches. * Cleanup of the format of the different preference types. * More cleanup of some of the preferences. * Additional glyphs in the preferences. * Separate the CV19 button control for the DCC-EX In Command Station Consist button control. * Additional Google translations. * Disable the 'stop on phone call' preference if no sim card or don't have READ_PHONE_STATE permission. * Gradle upgrade to 9.2.0 * Continued renaming of some files for consistency. * Linting. * Rethink of the way ED requests the Consist (CV19) value after requesting the decoder address for DCC-EX. * Moved the prefBackgroundImage group to the device section of the preferences as it now impacts more than the throttle screen. **Version 2.43.224 * New Features * Added notching on the throttle sliders when using other than 126 or percent options. * Option to hide the additional button text on the Select Screen for tiny screens (e.g. the ESU MC Pro) * Bug fixes * Reconnect page was never closing. (Mistake made in the switch to Bundles.) * Throttle Web Page not loading if initial web page preference changed. * DCC-EX Fix for the Join button being permanently disabled. * Catch NPE and Index Out of Bounds crashes reported to the Play Store. * Radio buttons not showing if option to use the old style select loco method was chosen. * Other * Cleanup of the Edit Consist and Edit Light pages. * New button to "Return" to the Select Loco page from the Consist Edit page. * Theme tweaks. * Tweaking the toast messages on connect. Makes more extensive use of the customToast. * Continued the process of renaming elements for consistency. * Toast message on the IPLS page if the 'Ring' volume is set too low. * Cleanup of some of the preferences. * Additional glyphs in the preferences. * Changes to the preferences to, hopefully, make them easier to navigate. **Version 2.43.222 * New Features * New 'Neon Green' and 'Muted' themes ('Muted' appears as 'Paper' in the menu.) * Added 'Drop loco before Acquire' toggle button on the Select Loco screen. * Added support to DCC-EX MAIN_INV track type. * Bug fixes * Bug fix for muted IPLS sounds restarting when going to another screen * Bug fix for the 'simple' layout not showing the correct space for the optional function button area. * Bug fix for the 'original' and 'horizontal switching' layouts leaving a blank space at the bottom of the screen when three locos selected. * Add missing Stop button UI change when pressed. * Bug fix for the function button latching when using consists/MUs with DCC-EX. * Bug fix for retrieving the roster entry information from the JMRI web server. * Bug fix for recent consist loco directions. * Other * Major changes in the way that inter-activity communication works (now uses Bundles) Removed a number of unnecessary and/or repetitive calls to comm_handler. Removed a number of unnecessary broadcasts to all activities. Mostly isolated the incoming DCC-EX processing from the WiThrottle processing. DCC-EX and WiThrottle send and receive methods moved to separate classes. * Created a generic 'reusable' theme to make it easy to add new themes. * Altered the 'neon blue', 'colourful' and 'ultra' (Dark) themes so they use the generic 'reusable' theme, so can't be moved. * Partial move of the 'original', 'Outline' and 'Black' theme to use the generic 'reusable' theme. mainly toolbars, thumbs and preferences. The main buttons have a different style to the 'reusable' ones. * Removed some textViews in all the throttles (behind the fwd/rev buttons) that could never be seen. * Simplified part of all the throttles in all the views (related to the fwd/rev buttons). * Removed a number of unused drawables. * Renamed most of the drawables to make the names consistent. * Upgrade to Gradle 9.1.0 **Version 2.42.220 * Bug fixes * Bug fix for the Consist Edit and Consist Light Edit screens on early versions of Android * Don't send blank rosterName to WiThrottle (caused reconnect loop) * Other * Improve comms to the reconnect screen. Previously, many messages would not have been considered a successful reconnect **Version 2.42.218 * New Features * Added localisation files for English (Singapore) and English (India). Same as UK/Australia/NZ. * Added preference to 'Swap' the throw/close labels for all DCC-EX turnouts. * Rudimentary support for the new DCC-EX EStop Pause/Resume. * Support the new DCC-EX In-Command-Station Consists/MUs. The CV19 dialog is now dual use. * Added the missing menu items for gamepads 4-6. * Added support for turnouts/points from an attached keyboard U=Toggle I=Throw O=Close. Must be followed by three digits. * Added option to just show the Command Line only on the DCC-EX page (For small screens) and removed the command line from the other panels. * Background image now also applied to the commonly used activities. * Bug fixes * Bug fix for the auto-connect to address and port for DCC-EX. * Bug fix for the DCC-EX handoff dialog. Would not trigger unless you had previously moved a loco. * Bug fix for the showing and hiding of the number of throttles preference in some situations. Caused by the renaming of the preferences. * Bug fix for the 'additional' gamepad and volume indicators. This can't have worked properly for a long time. * Bug fix for multiple gamepads/keyboards. * Other * Linting. * Removed references to the ESU MobileControl II. No longer supported. * More Google Translations. * Full removal of the deprecated use of startActivityForResult(). Moved to the new Activity Result APIs. * Rename of some of the original variables to remove the confusing abbreviations. * Correction of typos in field and method names. * Significant cleanup of the display of the Overflow Menu and Action Bar items. * Added some additional checking for the DCC-EX commands that are likely to be truncated. * Altered the gamepad test page so that it only responds to the chosen gamepad. * Switched to using the more reliable deviceDescriptor instead of deviceId for the gamepads and keyboards. * Removed more redundant API checks. * Removed redundant v21/v35 styles/themes files. * Moved to a custom toast (popupWindow) message for the connection warnings. The normal toasts are too short and don't stay on screen long enough. **Version 2.42.216 * Code improvement or required changes * Full move to Android X libraries. Lowest supported version is now 5.0 (API 21) * Move to targetSdk 36 * Immersive mode fixes for targetSdk 36 - enforced edge-to-edge mode * Significant changes to the way the UI elements are referenced (now in resources in arrays) * Move the IPLS code to a separate class. Not a complete move as the variables are still largely in threaded_application. * Removed the swipe up/down option to temperately turn off immersive mode as it is not really necessary anymore and did not work properly anymore anyway * Remove redundant API checks * Change API level to numbers instead of the names which I difficult follow with the latest APIs * Moved the duplicated gamepad loading code to its own class * Moved most of the gamepad and keyboard checking code to separate classes that are only loaded if you attach a gamepad or keyboard * Reduced a fair amount of the duplicate code for gamepads and keyboards in throttles.java * Move the ESU MCII/Pro helper classes to separate files * Moved to the new way to deal with the Back Button * Partial replacement of the deprecated startActivityForResult() with startActivity() - where the result was not used. * Added the concept of 'Extended Logging'. Some Log.d()s will only be logged if a new preference is enabled. * Linting * Automatically rename the old preferences to the new format "pref.." * If the Extended Logging is enabled, the full preference list is printed in the log at start-up. * Bug fixes * Bug fix for non-immersive mode on earlier versions of Android <15 * Bug fix for gamepad calibration when using joystick like settings * Bug fix for gamepads with the IPLS. The tone generator for the beeps is not compatible with the IPLS. * Bug fix for F11 in the keyboard 'type' of gamepad * Some minor fixes for the TTS * Bug fix for the toolbar size when coming out of the Preferences sub folders * Bug fix for going into background from the connection screen * Bug fix for a children's timer problem, introduced by the menu item glyphs. * Bug fix for a timing issue for retrieving the preferences on a server * Bug fix for multiple gamepads/keyboards * New Features * Added back in the VRBoxB gamepad type and fixed it * Added XBox gamepad support * Add 'None' option for the gamepad buttons * Add options for action bar buttons to navigate between Throttle, Turnouts/Points, Routes and Web screens * Added toolbar buttons for preferences and the wizard on the connection screen. Can be turned off with the existing preference to hide instructional hints * Added option for medium size toolbar/action bar buttons. The 'auto' option will make screens >=139.7cm (5.5") will use the medium size buttons * Reinstated the log and file sharing capability * For DCC-EX automations, you are asked which loco to send on the automation. (Defaults to the currently selected loco.) There is a preference to disable if preferred. * Added preference to automatically connect to a specified IP and port, even if it is not discovered. * Added preference to start logging immediately after app startup. Resets itself after use. * Added preference to hide the Advanced Consist (CV19) action bar button on the select loco screen. * Preferences screen shows the current value of a list or text preference without opening it. * Other Changes * Improvements to the style of the buttons in the dialogs in the Preferences * More Google translations * Additional time options for the children's timer * Glyphs added to most menu items **Version 2.41.214 * Bug fix for everything that checks for DCC-EX version numbers. Calculation was wrong. **Version 2.41.212 * Added Preference to not beep on WiThrottle Alerts and Messages * Added Sort button for Recent Turnouts/Points **Version 2.41.210 * Last (production) version of Engine Driver to support Android 4.x * Bug Fix - If you try to close the Web screen if using anything other than the default throttle layout, ED will crash. * CV Bit Calculator added to the DCC-EX page + plus special support for CV29 * Bug Fix - for not closing the connection in the correct sequence * Experimental CV19 Consist tool * Better handle CV19 consists when reading a loco address - DCC-EX - requires EX-CS V5.5.46 or later * Additional Google translations * New preference to automatically connect to a named server if discovered * New preference for, on connection, automatically load the locos you had acquired in the previous session * New preference to use the WiThrottle 'd'ispatch command instead of the 'r'elease command when releasing a loco * New preference to add a 'd'ispatch button to the select loco screen * Moved the 'immersive mode' preference to the top level * Search feature added to Preferences. (Unable to customise the icon. Will leave that till later.) * Chinese translations by jsky8785 **Version 2.41.208 * Additional French translations by Alain Carasso * Additional Google translations * bug fix - log screen - save log button not visible * bug fix - notification going into background would not always show, particularly if ED had been restarted. * bug fix - unable to click on notification to reopen on later versions of android * remove no-longer-supported references to jcenter() repository * Upgrade to Gradle 8.13.0 **Version 2.41.206 * Removed ability to share files to ED's scoped storage. Incompatible with version Android 4.x * Additional buttons on the Reconnection Screen * Partial rewrite of the activity switch handling in WebActivity to make it consistent with the other activities. The rest will wait till Android 5 * Fix for missing function labels when selecting from recent locos or recent consists * bug fix - extra entry added to recent locos list for long addresses * bug bix - clearing recent locos and consists with a swipe left invalid entries * bug fix - selecting the same loco again would prepend the loco to the next selection **Version 2.41.204 * Fix for Switching Throttle layouts going back to the connection screen * Move to the AndroidX version of the Intro library. (Needed for edge-to-edge in sdk 36) * Upgrade to Gradle 8.12.1 * Added close button to the 'number of throttles' dialog * Rework the background notifications and restart process if the app is killed in background * Added preference for - EStop all loco(s) on all throttles(s) when Engine Driver is pushed to background * Improve the position of the glyphs on most of the buttons * Bug fix for the Power Screen when an EX-CS has one of the tracks set for AUTO **Version 2.40.202 * Corrected theming of the main power button on the power screen * More glyphs and cosmetic changes * Improve the updating of the toolbar power button on some screen when the app is first opened * Added button and dialog to share log file(s). * Added preference immediate action to share any file from ED scoped storage * Added ability to share files to ED's scoped storage **Version 2.40.200 * added a new separate check for when the app is in background * reduce the amount of static text related to log messages * wholesale cleanup of the code to 'finish' an activity * Additional log messages in select_loco * Move to AndroidX libraries * Added support for ESU MC Pro. Additional + removed + default options for the MC Pro * Bug fix for PoM programming of DCC addresses 1 and 2 * Preference to using large toolbar buttons. Defaults to large on screens larger than 6.7"/17cm. * Preference screen numeric input dialogs show the keypad not the full keyboard * ESU MC2/Pro fixes to support the SRT * Gradle upgrade * targetSDK raised to 35 - Had to go back to TargetSdk 35 from 36 to get around the edge-to-edge enforcement on Android 16 * Children's timer changes. Passwords changed to PINs (numeric). Some bug fixes. Added Kiosk mode option. Added Demo mode option. * Bug fix for the brake slider on the ESU MC Pro * Bug fix for NPE when changing to a throttle screen layout with more possible throttles than the previous one * Added Option for single throttle EStop on long press of 'stop' button * Cleaned up some commented out code (toast commands that have been replaced with safeToast()) **Version 2.40.198 * Tidy up of the AppIntro permissions * Change the location permission warnings to a toast message * Add option to the ED icon on the Action Bar, to return to the Throttle screen. This will be enabled by default on new installs * Prevent LOG_ENTRY_RECEIVED messages from being sent to all activities. Only needs to be sent to the logViewer. * New 'G' command for keyboard gamepad type to force a function even if it is momentary * Linting * Rearrange the Select Loco page for better fit of non-English text. (primarily German) * Rework of the Select Loco and DCC-EX screens to be more glyph based. Preference to go back to the old Select Loco format if desired. * Tweaking of the Original, Colourful and Dark themes to make the buttons more three dimensional * Bug fixes for the Semi-Realistic Throttle **Version 2.40.196 * Only redraw Route list if actually changed * Avoid a few crashes reported to Play Store * Bug fix for non-English 'Auto' protocol option * Improve non-English layout of the DCC-EX screen * Replace the deprecated functions in ImageDownloader, Throttle, ImportExportConnectionsList and LogViewerActivity * Replace the deprecated AsyncTask in LogViewer * Linting. Primarily in all the util classes and intro screens * Make the PHONE permission more clearly optional. Phone call preference is automatically disabled if rejected a few times * Separate warning when the 'Use Location' service is disabled (as different to no WiFi) * Rewrite of the App Intro permissions request screen to better re-ask for permissions that were not initally granted under Android 14+ * Don't forcibly ask for the location permissions in the Connection screen **Version 2.39.194 * Toast message when the Roster, Turnouts/Points & Routes each have finished loading for DCC-EX (can be disabled with the Informational Toast preference) * When you change throttle layouts, and the new layout supports a range of throttles, ask for the number. * Linting. Primarily the Horizontal Throttle layouts * Cleanup of the Horizontal Throttle layouts. Fixing some height issues * Preference to change the Layout Toggle button to cycle through all layouts * send additional resync requests after DCC-EX reconnect * Identify serverType IoTT and send * Bug fix for Immersive mode. Particularly the button to show/hide the throttle web view. * Some linting in comm_thread, disabled set_labels start logging * Removed leading zero from FKey id when sending * Added option to sequence the loading of items on DCC-EX **Version 2.38.192 * Update to Gradle 8.8.0 * Additional preference to override the bug fix for roster entries with no functions * Avoid a few crashes reported to Play Store * avoid crash when DCC-EX roster entry is invalid * avoid NPEs when selecting from recent locos and recent consists * Additional French Translations by Alain Carasso * fix bug where the bottom of the last function was chopped off in the scroll region * play a tone and vibrate when a system alert/message is received. * fix bug where DCC-EX Routes and Turnouts may not load if ED is not removed from memory by Android * attempt to address anomaly where JMRI sends the DCC-EX turnouts/points before they are actually requested **Version 2.38.190 * Bug fix for IPLS when linked to the F1 F2 DCC functions * Added paranoid check for permissions that should be automatically granted * Significant changes the to the Semi-Realistic Throttle, and in particular 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 * Japanese translations by Futoshi Yanagi * French Canadian translations by Yvéric Patry * 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 Language * 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) throttle * 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 being 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

(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 SelectLocoWhileMoving 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 (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 * TODO: Add toast messages on release of loco (even on Exit) and update of preferences * TODO: rewrite procedural process_xxx functions into proper OO classes * TODO: move some actions from onCreate() or onResume() to onStart() in activities to simplify and remove some repeated calls. * TODO: Improve the way it deals with multiple DCC-EX commands on single line. Really needs to be read char by char. * TODO: Continue converting the three old style themes/styles to the reusable format. * TODO: Move most, if not all, toasts to the new custom toast. Especially the longer ones. * intro * TODO: if saved preferences found, prompt for import and shortcircuit intro. This is unlikely as the folder is not created till the app runs the first time, so you can't pre load the saved preferences in the folder. * 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: add "Check for Updates" link to first menu and to About page. * TODO: Add DCC-EX to "Auto-connect to first server?" * TODO: Why does the first connection attempt fail sometimes? * disconnect/reconnect * TODO: set limit on reconnect attempts? * TODO: On reconnect, consider dropping all locos from the throttles and reacquiring them (like reloading saved locos) * at connection or close connection / exit app * TODO: add option to save and automatically load locos on connection to be server specific * 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: Add option to send a real eStop * TODO: If server returns Roster with empty function list, don't show the ED defaults, see MRC * TODO: add random speed adjustments (to avoid monotonous sound) * TODO: add voice control * TODO: respect "Max Throttle %" from roster entry. Requires changes to WiThrottle protocol. * 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: option to make Stop "sticky" and ignore slider unless direction is selected. (This is done for DCC-EX using the server feature.) * 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 * TODO: option to show roster images above each throttle * Gamepads (throttle): * TODO: move code to a separate class. This is now partly done. * TODO: support Routes on keyboards. * TODO: work out how to fully support the gamepads on the Turnouts and Routes pages. Android reports a different id for the device. * TODO: add the ability to support custom gamepad configs * TODO: add the ability for the keyboard type to send custom commands. e.g. everything between quotes(") is sent to the CS unaltered. * In Phone Loco Sounds (throttle): * TODO: move code to a separate class. This is now partly done, but the variables are still in t_a * 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 * TODO: change the arrays of sound files names to arrays of resource IDs * select_loco: * TODO: allow user to specify which loco to get labels from * TODO: manually create roster entries (function labels) and store on device - In Phone Roster * 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: add a 'back' button to allow users to continuing adding to the consist without returning to the throttle screen * TODO: add the ability (somehow) to deslect a loco but stay on the Select Loco screen * 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: Look into adding an 'Unjoin' button * 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: * * children's timer: * TODO: Alternate version. Allow the selection of locos, but only from the filtered roster. Unlimited time. Routes and Points would be available. * log_viewer: * * * These require changes to WiThrottle Server * 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 * */