mirror of
				https://github.com/house-of-abbey/GarminHomeAssistant.git
				synced 2025-10-31 07:48:13 +00:00 
			
		
		
		
	add PIN transcoding
This commit is contained in:
		| @@ -60,6 +60,7 @@ | ||||
|   <string id="SettingsPollDelay">Zusätzliche Abfrageverzögerung (in Sekunden). Fügt eine Verzögerung zwischen der Statusaktualisierung aller Menüelemente hinzu.</string> | ||||
|   <string id="SettingsConfirmTimeout">Nach dieser Zeit (in Sekunden) wird der Bestätigungsdialog einer Aktion geschlossen und die | ||||
|     Aktion abgebrochen. Auf 0 setzen, um den Timeout zu deaktivieren.</string> | ||||
|   <string id="SettingsPinMask">Schablone um die PIN aus der Dashboard Config zu transkodieren.</string> | ||||
|   <string id="SettingsTextAlign">Menüausrichtung links (aus) oder rechts (ein).</string> | ||||
|   <string id="LeftToRight">Links nach rechts</string> | ||||
|   <string id="RightToLeft">Rechts nach links</string> | ||||
|   | ||||
| @@ -65,6 +65,14 @@ | ||||
|   --> | ||||
|   <property id="confirm_timeout" type="number">3</property> | ||||
|  | ||||
|   <!-- | ||||
|     This mask transcodes the plain text PIN from the public dashboard config. | ||||
|     Every digit is used to increase the corresponding digit at this position | ||||
|     in the PIN by the value given, starting at 1 if a value bigger than 4 has  | ||||
|     been reached. | ||||
|   --> | ||||
|   <property id="pin_mask" type="string"></property> | ||||
|  | ||||
|   <!-- | ||||
|     Left to right or right to left text. Language dependent. | ||||
|   --> | ||||
|   | ||||
| @@ -79,6 +79,13 @@ | ||||
|     <settingConfig type="numeric" min="0" /> | ||||
|   </setting> | ||||
|  | ||||
|   <setting | ||||
|     propertyKey="@Properties.pin_mask" | ||||
|     title="@Strings.SettingsPinMask" | ||||
|   > | ||||
|     <settingConfig type="alphaNumeric" /> | ||||
|   </setting> | ||||
|  | ||||
|   <setting | ||||
|     propertyKey="@Properties.menu_alignment" | ||||
|     title="@Strings.SettingsTextAlign" | ||||
|   | ||||
| @@ -53,6 +53,7 @@ | ||||
|   <string id="SettingsAppTimeout">Timeout in seconds. Exit the application after this period of inactivity to save the device battery.</string> | ||||
|   <string id="SettingsPollDelay">Additional poll delay (in seconds). Adds a delay between the status update of all menu items.</string> | ||||
|   <string id="SettingsConfirmTimeout">After this time (in seconds), a confirmation dialog for an action is automatically closed and the action is cancelled. Set to 0 to disable the timeout.</string> | ||||
|   <string id="SettingsPinMask">Integer Mask to transcode the plain text PIN from the public dashboard config.</string> | ||||
|   <string id="SettingsTextAlign">Left (off) or Right (on) Menu Alignment.</string> | ||||
|   <string id="LeftToRight">Left to right</string> | ||||
|   <string id="RightToLeft">Right to Left</string> | ||||
|   | ||||
| @@ -118,10 +118,17 @@ class HomeAssistantPinConfirmationDelegate extends WatchUi.BehaviorDelegate { | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
|     function getTranscodedCurrentDigit() as Number { | ||||
|         var currentDigit = mPin[mCurrentIndex].toString().toNumber(); // this is ugly, but apparently the only way for char<->number comparisons | ||||
|         // TODO: Transcode digit using a pin mask for additional security | ||||
|         return currentDigit; | ||||
|     function getTranscodedCurrentDigit() as Number or Null { | ||||
|         var currentDigit = mPin[mCurrentIndex].toString().toNumber(); // this is ugly, but apparently the only way for char<->number conversions | ||||
|         if (currentDigit == null) { | ||||
|             return null; | ||||
|         } | ||||
|         var pinMask = Settings.getPinMask(); | ||||
|         var maskDigit = pinMask.substring(mCurrentIndex, mCurrentIndex+1).toNumber(); | ||||
|         if (maskDigit == null) { | ||||
|             return currentDigit; | ||||
|         } | ||||
|         return ((currentDigit + maskDigit - 1) % 4) + 1; | ||||
|     } | ||||
|  | ||||
|     function resetTimer() { | ||||
|   | ||||
| @@ -38,6 +38,7 @@ class Settings { | ||||
|     private static var mAppTimeout            as Lang.Number  = 0;  // seconds | ||||
|     private static var mPollDelay             as Lang.Number  = 0;  // seconds | ||||
|     private static var mConfirmTimeout        as Lang.Number  = 3;  // seconds | ||||
|     private static var mPinMask               as Lang.String  = ""; | ||||
|     private static var mMenuAlignment         as Lang.Number  = WatchUi.MenuItem.MENU_ITEM_LABEL_ALIGN_LEFT; | ||||
|     private static var mIsSensorsLevelEnabled as Lang.Boolean = false; | ||||
|     private static var mBatteryRefreshRate    as Lang.Number  = 15; // minutes | ||||
| @@ -59,6 +60,7 @@ class Settings { | ||||
|         mAppTimeout            = Properties.getValue("app_timeout"); | ||||
|         mPollDelay             = Properties.getValue("poll_delay_combined"); | ||||
|         mConfirmTimeout        = Properties.getValue("confirm_timeout"); | ||||
|         mPinMask               = Properties.getValue("pin_mask"); | ||||
|         mMenuAlignment         = Properties.getValue("menu_alignment"); | ||||
|         mIsSensorsLevelEnabled = Properties.getValue("enable_battery_level"); | ||||
|         mBatteryRefreshRate    = Properties.getValue("battery_level_refresh_rate"); | ||||
| @@ -164,6 +166,10 @@ class Settings { | ||||
|         return mConfirmTimeout * 1000; // Convert to milliseconds | ||||
|     } | ||||
|  | ||||
|     static function getPinMask() as Lang.String { | ||||
|         return mPinMask; | ||||
|     } | ||||
|  | ||||
|     static function getMenuAlignment() as Lang.Number { | ||||
|         return mMenuAlignment; // Either WatchUi.MenuItem.MENU_ITEM_LABEL_ALIGN_RIGHT or WatchUi.MenuItem.MENU_ITEM_LABEL_ALIGN_LEFT | ||||
|     } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user