**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

(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 (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 * */