|
6 | 6 |
|
7 | 7 | from .const import ( |
8 | 8 | BMSState, |
9 | | - #BuckleStatus, |
10 | 9 | CabinOverheatProtectionModeState, |
11 | 10 | CableType, |
12 | 11 | CarType, |
13 | 12 | ChargePort, |
14 | 13 | ChargePortLatch, |
15 | 14 | ChargeState, |
16 | 15 | ChargeUnitPreference, |
17 | | - #ChargeUnitPreference, |
18 | 16 | ClimateKeeperModeState, |
19 | 17 | ClimateOverheatProtectionTempLimit, |
20 | 18 | DefrostModeState, |
21 | 19 | DetailedChargeState, |
22 | 20 | DisplayState, |
23 | 21 | DistanceUnit, |
24 | | - #DistanceUnit, |
25 | 22 | DriveInverterState, |
26 | 23 | FastCharger, |
27 | 24 | FollowDistance, |
|
35 | 32 | PowershareStopReasonStatus, |
36 | 33 | PowershareTypeStatus, |
37 | 34 | PressureUnit, |
38 | | - #PressureUnit, |
39 | 35 | ScheduledChargingMode, |
40 | | - #SeatFoldPosition, |
41 | 36 | SentryModeState, |
42 | 37 | ShiftState, |
43 | 38 | Signal, |
| 39 | + SunroofInstalledState, |
44 | 40 | TemperatureUnit, |
45 | | - #SpeedAssistLevel, |
46 | | - #TemperatureUnit, |
47 | 41 | TeslaLocation, |
48 | | - #TonneauPositionState, |
49 | | - #TonneauTentModeState, |
50 | | - #TractorAirStatus, |
51 | | - #TrailerAirStatus, |
52 | 42 | WindowState, |
| 43 | + MediaStatus |
53 | 44 | ) |
54 | 45 |
|
55 | 46 | if TYPE_CHECKING: |
@@ -1874,6 +1865,150 @@ def listen_WiperHeatEnabled(self, callback: Callable[[bool | None], None]) -> Ca |
1874 | 1865 | {"vin":self.vin, "data": {Signal.WIPER_HEAT_ENABLED: None}} |
1875 | 1866 | ) |
1876 | 1867 |
|
| 1868 | + def listen_LightsHazardsActive(self, callback: Callable[[bool | None], None]) -> Callable[[],None]: |
| 1869 | + """Listen for Lights Hazards Active.""" |
| 1870 | + self._enable_field(Signal.LIGHTS_HAZARDS_ACTIVE) |
| 1871 | + return self.stream.async_add_listener( |
| 1872 | + make_bool(Signal.LIGHTS_HAZARDS_ACTIVE, callback), |
| 1873 | + {"vin":self.vin, "data": {Signal.LIGHTS_HAZARDS_ACTIVE: None}} |
| 1874 | + ) |
| 1875 | + |
| 1876 | + def listen_LightsTurnSignal(self, callback: Callable[[str | None], None]) -> Callable[[],None]: |
| 1877 | + """Listen for Lights Turn Signal.""" |
| 1878 | + self._enable_field(Signal.LIGHTS_TURN_SIGNAL) |
| 1879 | + return self.stream.async_add_listener( |
| 1880 | + lambda x: callback(TurnSignalState.get(x['data'][Signal.LIGHTS_TURN_SIGNAL])), |
| 1881 | + {"vin":self.vin, "data": {Signal.LIGHTS_TURN_SIGNAL: None}} |
| 1882 | + ) |
| 1883 | + |
| 1884 | + def listen_LightsHighBeams(self, callback: Callable[[bool | None], None]) -> Callable[[],None]: |
| 1885 | + """Listen for Lights High Beams.""" |
| 1886 | + self._enable_field(Signal.LIGHTS_HIGH_BEAMS) |
| 1887 | + return self.stream.async_add_listener( |
| 1888 | + make_bool(Signal.LIGHTS_HIGH_BEAMS, callback), |
| 1889 | + {"vin":self.vin, "data": {Signal.LIGHTS_HIGH_BEAMS: None}} |
| 1890 | + ) |
| 1891 | + |
| 1892 | + def listen_MediaPlaybackStatus(self, callback: Callable[[str | None], None]) -> Callable[[],None]: |
| 1893 | + """Listen for Media Playback Status.""" |
| 1894 | + self._enable_field(Signal.MEDIA_PLAYBACK_STATUS) |
| 1895 | + return self.stream.async_add_listener( |
| 1896 | + lambda x: callback(MediaStatus.get(x['data'][Signal.MEDIA_PLAYBACK_STATUS])), |
| 1897 | + {"vin":self.vin, "data": {Signal.MEDIA_PLAYBACK_STATUS: None}} |
| 1898 | + ) |
| 1899 | + |
| 1900 | + def listen_MediaPlaybackSource(self, callback: Callable[[str | None], None]) -> Callable[[],None]: |
| 1901 | + """Listen for Media Playback Source.""" |
| 1902 | + self._enable_field(Signal.MEDIA_PLAYBACK_SOURCE) |
| 1903 | + return self.stream.async_add_listener( |
| 1904 | + lambda x: callback(x['data'][Signal.MEDIA_PLAYBACK_SOURCE]), |
| 1905 | + {"vin":self.vin, "data": {Signal.MEDIA_PLAYBACK_SOURCE: None}} |
| 1906 | + ) |
| 1907 | + |
| 1908 | + def listen_MediaAudioVolume(self, callback: Callable[[float | None], None]) -> Callable[[],None]: |
| 1909 | + """Listen for Media Audio Volume.""" |
| 1910 | + self._enable_field(Signal.MEDIA_AUDIO_VOLUME) |
| 1911 | + return self.stream.async_add_listener( |
| 1912 | + make_float(Signal.MEDIA_AUDIO_VOLUME, callback), |
| 1913 | + {"vin":self.vin, "data": {Signal.MEDIA_AUDIO_VOLUME: None}} |
| 1914 | + ) |
| 1915 | + |
| 1916 | + def listen_MediaNowPlayingDuration(self, callback: Callable[[int | None], None]) -> Callable[[],None]: |
| 1917 | + """Listen for Media Now Playing Duration.""" |
| 1918 | + self._enable_field(Signal.MEDIA_NOW_PLAYING_DURATION) |
| 1919 | + return self.stream.async_add_listener( |
| 1920 | + make_int(Signal.MEDIA_NOW_PLAYING_DURATION, callback), |
| 1921 | + {"vin":self.vin, "data": {Signal.MEDIA_NOW_PLAYING_DURATION: None}} |
| 1922 | + ) |
| 1923 | + |
| 1924 | + def listen_MediaNowPlayingElapsed(self, callback: Callable[[int | None], None]) -> Callable[[],None]: |
| 1925 | + """Listen for Media Now Playing Elapsed.""" |
| 1926 | + self._enable_field(Signal.MEDIA_NOW_PLAYING_ELAPSED) |
| 1927 | + return self.stream.async_add_listener( |
| 1928 | + make_int(Signal.MEDIA_NOW_PLAYING_ELAPSED, callback), |
| 1929 | + {"vin":self.vin, "data": {Signal.MEDIA_NOW_PLAYING_ELAPSED: None}} |
| 1930 | + ) |
| 1931 | + |
| 1932 | + def listen_MediaNowPlayingArtist(self, callback: Callable[[str | None], None]) -> Callable[[],None]: |
| 1933 | + """Listen for Media Now Playing Artist.""" |
| 1934 | + self._enable_field(Signal.MEDIA_NOW_PLAYING_ARTIST) |
| 1935 | + return self.stream.async_add_listener( |
| 1936 | + lambda x: callback(x['data'][Signal.MEDIA_NOW_PLAYING_ARTIST]), |
| 1937 | + {"vin":self.vin, "data": {Signal.MEDIA_NOW_PLAYING_ARTIST: None}} |
| 1938 | + ) |
| 1939 | + |
| 1940 | + def listen_MediaNowPlayingTitle(self, callback: Callable[[str | None], None]) -> Callable[[],None]: |
| 1941 | + """Listen for Media Now Playing Title.""" |
| 1942 | + self._enable_field(Signal.MEDIA_NOW_PLAYING_TITLE) |
| 1943 | + return self.stream.async_add_listener( |
| 1944 | + lambda x: callback(x['data'][Signal.MEDIA_NOW_PLAYING_TITLE]), |
| 1945 | + {"vin":self.vin, "data": {Signal.MEDIA_NOW_PLAYING_TITLE: None}} |
| 1946 | + ) |
| 1947 | + |
| 1948 | + def listen_MediaNowPlayingAlbum(self, callback: Callable[[str | None], None]) -> Callable[[],None]: |
| 1949 | + """Listen for Media Now Playing Album.""" |
| 1950 | + self._enable_field(Signal.MEDIA_NOW_PLAYING_ALBUM) |
| 1951 | + return self.stream.async_add_listener( |
| 1952 | + lambda x: callback(x['data'][Signal.MEDIA_NOW_PLAYING_ALBUM]), |
| 1953 | + {"vin":self.vin, "data": {Signal.MEDIA_NOW_PLAYING_ALBUM: None}} |
| 1954 | + ) |
| 1955 | + |
| 1956 | + def listen_MediaNowPlayingStation(self, callback: Callable[[str | None], None]) -> Callable[[],None]: |
| 1957 | + """Listen for Media Now Playing Station.""" |
| 1958 | + self._enable_field(Signal.MEDIA_NOW_PLAYING_STATION) |
| 1959 | + return self.stream.async_add_listener( |
| 1960 | + lambda x: callback(x['data'][Signal.MEDIA_NOW_PLAYING_STATION]), |
| 1961 | + {"vin":self.vin, "data": {Signal.MEDIA_NOW_PLAYING_STATION: None}} |
| 1962 | + ) |
| 1963 | + |
| 1964 | + def listen_MediaAudioVolumeIncrement(self, callback: Callable[[float | None], None]) -> Callable[[],None]: |
| 1965 | + """Listen for Media Audio Volume Increment.""" |
| 1966 | + self._enable_field(Signal.MEDIA_AUDIO_VOLUME_INCREMENT) |
| 1967 | + return self.stream.async_add_listener( |
| 1968 | + make_float(Signal.MEDIA_AUDIO_VOLUME_INCREMENT, callback), |
| 1969 | + {"vin":self.vin, "data": {Signal.MEDIA_AUDIO_VOLUME_INCREMENT: None}} |
| 1970 | + ) |
| 1971 | + |
| 1972 | + def listen_MediaAudioVolumeMax(self, callback: Callable[[float | None], None]) -> Callable[[],None]: |
| 1973 | + """Listen for Media Audio Volume Maximum.""" |
| 1974 | + self._enable_field(Signal.MEDIA_AUDIO_VOLUME_MAX) |
| 1975 | + return self.stream.async_add_listener( |
| 1976 | + make_float(Signal.MEDIA_AUDIO_VOLUME_MAX, callback), |
| 1977 | + {"vin":self.vin, "data": {Signal.MEDIA_AUDIO_VOLUME_MAX: None}} |
| 1978 | + ) |
| 1979 | + |
| 1980 | + def listen_SunroofInstalled(self, callback: Callable[[str | None], None]) -> Callable[[],None]: |
| 1981 | + """Listen for Sunroof Installed.""" |
| 1982 | + self._enable_field(Signal.SUNROOF_INSTALLED) |
| 1983 | + return self.stream.async_add_listener( |
| 1984 | + lambda x: callback(SunroofInstalledState.get(x['data'][Signal.SUNROOF_INSTALLED])), |
| 1985 | + {"vin":self.vin, "data": {Signal.SUNROOF_INSTALLED: None}} |
| 1986 | + ) |
| 1987 | + |
| 1988 | + def listen_SeatVentEnabled(self, callback: Callable[[bool | None], None]) -> Callable[[],None]: |
| 1989 | + """Listen for Seat Vent Enabled.""" |
| 1990 | + self._enable_field(Signal.SEAT_VENT_ENABLED) |
| 1991 | + return self.stream.async_add_listener( |
| 1992 | + make_bool(Signal.SEAT_VENT_ENABLED, callback), |
| 1993 | + {"vin":self.vin, "data": {Signal.SEAT_VENT_ENABLED: None}} |
| 1994 | + ) |
| 1995 | + |
| 1996 | + def listen_RearDefrostEnabled(self, callback: Callable[[bool | None], None]) -> Callable[[],None]: |
| 1997 | + """Listen for Rear Defrost Enabled.""" |
| 1998 | + self._enable_field(Signal.REAR_DEFROST_ENABLED) |
| 1999 | + return self.stream.async_add_listener( |
| 2000 | + make_bool(Signal.REAR_DEFROST_ENABLED, callback), |
| 2001 | + {"vin":self.vin, "data": {Signal.REAR_DEFROST_ENABLED: None}} |
| 2002 | + ) |
| 2003 | + |
| 2004 | + def listen_ChargeRateMilePerHour(self, callback: Callable[[float | None], None]) -> Callable[[],None]: |
| 2005 | + """Listen for Charge Rate Mile Per Hour.""" |
| 2006 | + self._enable_field(Signal.CHARGE_RATE_MILE_PER_HOUR) |
| 2007 | + return self.stream.async_add_listener( |
| 2008 | + make_float(Signal.CHARGE_RATE_MILE_PER_HOUR, callback), |
| 2009 | + {"vin":self.vin, "data": {Signal.CHARGE_RATE_MILE_PER_HOUR: None}} |
| 2010 | + ) |
| 2011 | + |
1877 | 2012 |
|
1878 | 2013 | def make_int(signal: Signal, callback: Callable[[int | None], None]) -> Callable[[dict], None]: |
1879 | 2014 | """Listener factory""" |
|
0 commit comments