Transport mode status

Jul 18, 2011 at 5:54 PM

Before saying anything else, allow me to say thanks for that nice plugin ! Great work.

I am trying to implement a transport mode status indicator (E.G. STOP, PLAY, PAUSE, FF1, REW1, etc.) but facing some hurdles:

STOP and PLAY pose no problem, as the "Play" tag toggles back to 0 when stopped. It does not toggle back to 0 if set on pause or any FF/REW modes. Besides, these special modes Tags themselves won't toggle back to 0 once disabled.

I think it would be nice if there was a tag with an integer or string reporting current mode. Or perhaps more simply resetting the other modes flags once a particular mode is engaged. Unless there is another way to implement this ?

In other words, for tags Stop, Play, Pause, FF1, FF2, FF3, Rewind1, Rewind2, Rewind3, only one of these should be set to 1 at any given time, with all the others set to 0.

Also, I would use a "AlbumName" tag. I can use another plugin to retrieve the info so not a problem, however it would be great to get all the tags from the same plugin.

Once again, I appreciate your work very much.

Charles

Coordinator
Jul 18, 2011 at 10:30 PM

Thanks for the kind words Charles. I think you should find what you need in change set 7367. Download it and copy the new dll to your plugins folder.

I've modified Function 1 to do somehing similar to your request but I've made the derived tags available so the tags are:

'Mode' returns the current tag name e.g. Play/Pause/Stop etc. when one of these is true the others are all set false.

The Album Name should be in the 'MediaName' tag but i'd be interested to know what other plugin you could use to retrieve that info?

Regards,

Dave

Jul 19, 2011 at 2:43 AM

My bad for not paying enough attention to what was happening in the MCE_tracer app, I was looking up a tag name, not the actual data. I (used to) use the wmp.dll plugin from http://jongrieve.net/software/wmp/ . It needs the WMP 9 Blogging Plug-in circa 2003 which I had to install using XP SP2 compatibility mode, but then the wmp.dll would do its purpose without coughing.

I just got back home, going to download the 7367 right now. I'll be sure to let you know my impressions.

On a side note, as I was setting the required software, I've read many comments about the TcpIpController not working on x86 Windows. On my own x86 Windows 7 setup, the Beta 2 release of the controller would not complete its installation, but the 46033 version did and the server runs fine.

Jul 19, 2011 at 6:16 AM

On the right path with the Mode tag, yet a few issues...

Track changes switches the Mode tag to Stop. Then I need to hit the play button twice so the tag reports the proper mode.

Also, I would take separate status counters as hitting a mode button triggers my brand new volume screen action.

Coordinator
Jul 19, 2011 at 8:08 PM

I've uploaded change set 7441 in which I've implemnted detection of next track etc. properly. Also added a new tag DisplayMode which can be used to show whether its next, stop etc. you should be able to use this.

Jul 20, 2011 at 5:30 PM

Much much better implementation in 7441, track skipping behaves properly now.

I have found a few errors however:

SessionStatus reports "Menu" when Media Center plays a DVD.

SessionStatus reports "Audio" when Media Center plays an audio CD. True, it's audio, but I think it should says "CD" instead.

On a single occurence, upon playing an audio CD, Mode would not change to "Stop" when stopped, but would stick to the previous value (Play or Pause). As I said, this happened only once in 4+ hours of testing. Unfortunately, I did not check is DisplayMode did the same.

These small glitches set aside, your plugin is magic !

- very easy to set up using the default screen.

- practically fully customizable display for those like me who prefer their own settings.

It's becoming hard to imagine more improvements. I'm thinking about fully customizable tags (for the ones that output strings) so one could implement another language perhaps or their own interpretation of tags (Let's say, Play could be PLAY or PL or Playback or an arrow symbol for instance).

Or a GUI allowing to design templates for replacement F1-F2-like replacement screens ?? That might be out of the scope of this project... Not a serious proposal.

Coordinator
Jul 20, 2011 at 11:12 PM

Thanks Charlie,

                  I've been working on this tonight. found the issue with DVD however I've had to make the playing of a CD come up with Music: same as MP3's since the command from 7MC appears to be the same. Couldn't find the CD Stop issue though.

I loved the idea of customisable tags and this was fairly simple to implement since the majority of the text displayed is held in a tag structure. I added tags for those that were not. This also allows tailoring to a foreign language as you say. Your last idea is a little beyond the time I have available though.

This version will also have the ability to show a customised character for the 'DisplayMode' value that can be accesed via the tag 'Icon' and will return the custom character definition and use as a single string so it just appears as a single character (like a play/pause etc. symbol on a video recorder). I've predefined the symbols but these can now be redefined using your idea for the customisable tags thanks.

I'll need to give this a bit more testing before I release it to the wild which will probably be in the next few evenings.

Thanks for your help and ideas, most appreciated, keep em coming.

Regards,

Dave

Jul 21, 2011 at 7:28 PM

Would it be possible, using custom tags or another mean, to have single digit numbers output with a leading 0 (01, 02, 03, ...) ?? This would make formatting easier.

Coordinator
Jul 22, 2011 at 2:41 PM

See change set 7578, have a ook at the release notes and the doc file. I've included the customisable tags, the icon display,width control and leading zeros for integers + a few other fixes and updates. I've spent about a day testing and fixing minor issues but I'd be more than please to hear how you get on. Now for some other ideas.....

Regards,

Dave

Jul 22, 2011 at 8:52 PM

Hi Dave, thanks for the new version, I'll give it a try over the week end.

I'm running into a small issue with my volume screen. Looks like Smartie has to finish the current screen before going to my volume screen. Something I did not notice before as I had only one other screen (F11-F12) with a 1 sec timeout. There must be a way to make the action take over immediately.

A possible way around this issue is to still use screens with 1 sec. delays, but then I'd need a plugin that would pause scrolling with a timeout, unless I make identical screens in sequence, let's say 3 x the same 1 sec. screen to make it show the same thing for 3 seconds, but this uses up too many screens.

 

Coordinator
Jul 22, 2011 at 10:47 PM

Charles, could you disable/enable screens using duplicate actions?

Jul 22, 2011 at 11:26 PM

You mean, using the action that goes to the volume screen to disable all other screens when it is on volume ??

Since the volume screen can be enabled from any other screen, I need a way to have it go back to where it was before once the delay is over. The way I went is to enable/disable different screens depending on the value of Mode and make all these screens part of the same theme, and use an action to go to this theme when counter is at 0. Therefore, it would display the right screen after the volume. Now if I use actions to disable all other screens but volume I fear it'll lock on the volume screen.

Unless I make these actions disabling screens only if StatusCounter>0 and make the actions that enable/disable proper screens depending on Mode value work only when StatusCounter=0 ??? I have just thought of this. Sounds like something to try...

At any rate, such annoyances make me want to take some time to familiarize myself more with LCD Smartie's workings. After all, two weeks ago I wasn't even aware this software existed !

Jul 24, 2011 at 6:44 AM

Cascading the output of a few F9 compares, I have made a single variable that outputs “Audio”, “Video”, “GameEx”, “XBMC” if Media Center is up to one of these explicitely named tasks, otherwise it will output “Default”. I then use these labels in actions to select either of five themes, using the default one for situations not otherwise covered by the four other.

It also has a StatusCounter-enabled Volume output, to enable volume screen and disable all others, triggering an immediate switch to the volume screen until StatusCounter=0. After, theme selection occurs again as per the actions list, logically going to the same theme as before, making it appear like the display went back to where it was after showing the volume screen.

It makes for a somewhat long and apparently complex variable, however I have made templates making it very easy to add other compares to it. It allows me to achieve screen selections with a somewhat limited set of actions, all with the same variable I can conveniently copy/paste instead of using tailored variables for specific events with the danger of errors and overlapping and likely hard to debug screen mess. My variable has no other possible outputs than those stated, so Smartie can never be lost. That’s very good.

I’m all in all quite satisfied with this configuration. I may add a few more themes for TV, perhaps also for recording which seems to be a special case which I haven’t looked at yet.

I have tried another approach for the volume display which would have been cool but it didn’t work. Using F9 to detect Volume, I would have made the bottom line of each and every screen either show my one-line volume screen (top line intact) or its regular content. The concept works as I could make a working test line displaying “Normal line” or “Volume line”. Replacing these with the actual data for what they are gave me a Param4 missing error. The line is most likely too long.

Now a few notes about 7578…

There is a new bug with SessionStatus. It outputs “Burning Disc” when it should be “Menu”. I have double-checked by swapping the previous MCE_dll and it did correctly output “Menu”.

It’s nice you implemented customizable tags, I simply have no idea which they are and how to set them. My attempt at simplifying things with making the Mute output from DisplayMode tag show up as Volume by setting a line that says Tag=Mute=Volume in the CFG file as I saw in the documentation did not work. I need more precise instructions !

From: dperrow [email removed]
Sent: Friday, July 22, 2011 5:48 PM
To: charjol@hotmail.com
Subject: Re: Transport mode status [MCEdll:265586]

From: dperrow

Charles, could you disable/enable screens using duplicate actions?

Coordinator
Jul 24, 2011 at 7:41 AM

Your screen set up sounds excellent, well done.

I think the SessionStatus 'Burning Disc' is a mistake in the display texts which you should be able to fix by putting Tag=Menu=Menu in the configuration file. The Tag=Mute=Volume works okay for me. Can you try it again ensuring there are no spaces in the line, It starts at the begining of a new line and that the character cases are exactly as you typed them i.e. Tag=Mute=Volume please. If this doesn't work then you could try switching on debug with Debug=1
NewLogFile=1 as two lines in the CFG file which will create a file mce_dll.log in the plugins directory and in it  you should be able to see something like:

07:34:46 24/07/11 putdisplay processing line Mute=Volume
07:34:46 24/07/11 putdisplay - tag found Volume

I wouldn't leave the Debug on all the time because I'm not sure what size the log file will get to.

Jul 28, 2011 at 8:24 PM

The single variable idea was only good as an idea. Adding more possible outputs made it grow big enough that Smartie simply stopped processing actions.

I am now trying to work around another issue. Impossible to fully stop a video in MC, unless you are using the default application. I use both "My Movies" and "Media Browswer". Once I'm done with what I'm watching through these programs, the "Now Playing" menu item remains available, therefore SessionStatus sticks to "Video". I have to fully exit then restart MC to restore my display. At first I was to report a new bug with session status but clearly the issue is with MC. I'm trying to work around this using other outputs.

Coordinator
Jul 28, 2011 at 8:46 PM

Yes, your right if a video/picture/music is stoped but still available in 'Now Playing' then the session is still open and MC does not send an EndSession message. In Function 1 I use the menu messages to override the sessionstatus. BTW you can use MCE_Tracer.exe to see exactly what MC is sending out (you can run this in parallel with Smartie/mce_dll.

If you want me to implement some combinations as a separate function to make life easier for the actions let me know.

Jul 28, 2011 at 10:52 PM

Please, if possible, make a "NavigationStatus" tag combining the FS_whatever tags.

I'd use it to switch screens instead of SessionStatus. Not as proper yet less ugly than having to restart MC because I played a video.

Jul 29, 2011 at 9:37 PM

Nothing is sent from the server when I switch to another status from Video, as the player is not able to quit properly. I think I'll leave it as it is. Instead I have added a reset button to my MC start menu so I can quickly kill/restart MC.

Coordinator
Jul 30, 2011 at 9:22 AM

7957 contains the tag NavStatus. I hope this is what you were looking for. If not let me know.

Aug 2, 2011 at 6:35 AM

It does exactly what I want and it's proven very useful. Thanks.

Aug 2, 2011 at 6:30 PM

Charles,

Could you paste your LCDSmartie.cfg file here or upload it somewhere?  I would love to see what you've done as an example to get me started.  I'm new to the LCD Smartie software as well, and it would be helpful to see some examples of how you are using the mce_dll plugin.

I currently have my display connected to my desktop PC for testing purposes and will soon be moving it to my HTPC.  It will be easier to configure once it's on a real HTPC with TV tuners, etc.

Also, Dave...  I read somewhere in your documentation that the plugin is limited to reporting up to 4 recordings.  Can you increase that to 8?  I don't necessarily need to see the names of the shows being recorded, but it would be nice if the number of concurrent recordings could be displayed.

Thanks,

Brian

Coordinator
Aug 2, 2011 at 7:58 PM

Brian,

     Changing the code to cope with 8 recordings is fairly easy to do and i'll update it when I do the next release. but can I just confirm that you really do have 8 tuners in your htpc? wow! impressive.

BTW did you know you can test on a machine without a display using the desktop display driver that comes with LCDsmartie?

The tag RecordingDepth will tell you the number of concurrent recordings.

You should be aware that the recording stuff is currently what i'd consider to be the flakiest bit of the code.

Dave

Aug 2, 2011 at 8:23 PM

Yes, I have 8 tuners.  The first tuner card has four CableCARD/ClearQAM tuners, The second tuner card has two ATSC/NTSC/ClearQAM hybrid tuners, The third tuner card has one ATSC/ClearQAM tuner, and one NTSC tuner.

I have three Media Center extenders, and will soon have four.  My wife, kids and I all schedule recordings and can watch them from the various extenders and from the PC itself, which is located in the living room (I believe the English call that the "lounge").  I have 4TB of storage space for the recordings.  We record a lot of programs!

Yes, I know that LCDSmartie can be connected without a display.  However, I wanted to test some things before moving it to the HTPC because the wife doesn't like it when I mess up the HTPC.  If I crash the HTPC, it affects everyone in the house and that really doesn't make me very popular.

Will RecordingDepth report up to 8 recordings with the current version, or will I need to wait for a new one?

I'm really only interested in the RecordingDepth on the display.  I think that displaying the names of the programs being recorded might be overkill.  Maybe if I had a 4-line display it wouldn't be so bad to scroll through that many recordings, but I only have a 20x2 display.

Do you think that the RecordingDepth is flaky, or only the other information about recordings?

I'm already using LEDSDriver from slicksolutions.eu and have three LED's in the front of my HTPC case that display status information.  The green LED comes on steady for PLAY, blinks for PAUSE, and blinks rapidly for ERROR.  The red LED blinks in different ways depending on how many recordings are going on.  The amber LED comes on when an extender is connected, and blinks when someone is connected via RDP.  I will continue to use LEDS Driver, but I would like this information displayed on the LCD as well.

The wife wants a clock... and I figured that my clock might as well display additional information to make it worth the effort and expense.  My plan is to display the time with large numbers (using a combination of bignum and sandr plugins), Media Center status,  CPU core temperatures and CPU busy percent for each core, tuner temperatures, and GPU temperature.  I'd like to display the clock between every other screen so that it will display:

  • BIG CLOCK
  • Media Center Status
  • BIG CLOCK
  • CPU info
  • BIG CLOCK
  • Tuner info
  • etcetera

The idea is that you'll never need to look at the display for more than a few seconds before you can see the time of day.

Aug 3, 2011 at 3:13 AM
Edited Aug 3, 2011 at 3:22 AM

Here's the [Screen xx] and [Actions] sections of my config.ini file…

  

[Screen 01]
Enabled=1
Theme=1
ShowTime=1
Sticky=0
Skip=0
InteractionTime=0
Interaction=0
Text01="$dll(mce_dll,9,$dll(mce_dll,20,ehshell.exe,MC_ON)#MC_ON,Windows Media Center#Windows 7 HTPC)"
Text02="$Time(dd/mm/yyyy)$Fill(15)$Time(hh)h$Time(nn)"
Text03=""
Text04=""
NoScroll01=1
NoScroll02=1
NoScroll03=1
NoScroll04=1
ContinueNextLine01=0
ContinueNextLine02=0
ContinueNextLine03=0
ContinueNextLine04=0
Center01=0
Center02=0
Center03=0
Center04=0

[Screen 02]
Enabled=1
Theme=2
ShowTime=4
Sticky=0
Skip=0
InteractionTime=0
Interaction=0
Text01="$dll(sandr.dll,1,$dll(mce_dll,4,TrackName,),c:\progra~1\lcdsma~1\plugins\sandr.ini)"
Text02="$dll(mce_dll,4,Mode,)$Fill(7)$dll(mce_dll,4,TrackNumberZ2,)$Fill(13)$dll(mce_dll,4,TrackTime,)"
Text03=""
Text04=""
NoScroll01=1
NoScroll02=1
NoScroll03=1
NoScroll04=1
ContinueNextLine01=0
ContinueNextLine02=0
ContinueNextLine03=0
ContinueNextLine04=0
Center01=0
Center02=0
Center03=1
Center04=1

[Screen 03]
Enabled=1
Theme=2
ShowTime=4
Sticky=0
Skip=0
InteractionTime=0
Interaction=0
Text01="$dll(enallax,2,$dll(sandr.dll,1,$dll(mce_dll,4,ArtistName,),c:\progra~1\lcdsma~1\plugins\sandr.ini),$dll(sandr.dll,1,$dll(mce_dll,4,MediaName,),c:\progra~1\lcdsma~1\plugins\sandr.ini))"
Text02="$dll(mce_dll,4,Mode,)$Fill(7)$dll(mce_dll,4,TrackNumberZ2,)$Fill(13)$dll(mce_dll,4,TrackTime,)"
Text03=""
Text04=""
NoScroll01=1
NoScroll02=1
NoScroll03=1
NoScroll04=1
ContinueNextLine01=0
ContinueNextLine02=0
ContinueNextLine03=0
ContinueNextLine04=0
Center01=0
Center02=0
Center03=0
Center04=0

[Screen 04]
Enabled=1
Theme=3
ShowTime=1
Sticky=0
Skip=0
InteractionTime=0
Interaction=0
Text01="$dll(sandr.dll,1,$dll(mce_dll,4,MediaName,),c:\progra~1\lcdsma~1\plugins\sandr.ini)"
Text02="$dll(mce_dll,4,Mode,)$Fill(6)$dll(mce_dll,9,$dll(mce_dll,4,SessionStatus,)#Video,video#$dll(mce_dll,9,$dll(mce_dll,4,SessionStatus,)#PVR, PVR#$dll(mce_dll,9,$dll(mce_dll,4,SessionStatus,)#DVD, DVD#-----)))$Fill(13)$dll(mce_dll,4,TrackTime,)"
Text03=""
Text04=""
NoScroll01=1
NoScroll02=1
NoScroll03=1
NoScroll04=1
ContinueNextLine01=0
ContinueNextLine02=0
ContinueNextLine03=0
ContinueNextLine04=0
Center01=0
Center02=0
Center03=0
Center04=0

[Screen 05]
Enabled=1
Theme=4
ShowTime=1
Sticky=0
Skip=0
InteractionTime=0
Interaction=0
Text01="GameEx $dll(GameEx.dll,2,2,0)"
Text02="$dll(GameEx.dll,2,3,0)"
Text03=""
Text04=""
NoScroll01=1
NoScroll02=1
NoScroll03=1
NoScroll04=1
ContinueNextLine01=0
ContinueNextLine02=0
ContinueNextLine03=0
ContinueNextLine04=0
Center01=0
Center02=0
Center03=0
Center04=0

[Screen 06]
Enabled=1
Theme=5
ShowTime=1
Sticky=0
Skip=0
InteractionTime=0
Interaction=0
Text01="$dll(mce_dll,9,$dll(xbmc.dll,2,,)#playing video,$dll(xbmc.dll,1,title,title) #$dll(mce_dll,9,$dll(xbmc.dll,2,,)#playing audio,$dll(xbmc.dll,1,title,title) #xbmc $dll(mce_dll,9,$dll(xbmc.dll,2,,)#on,media center#$dll(xbmc.dll,2,,))))"
Text02="$dll(mce_dll,9,$dll(xbmc.dll,2,,)#playing video,xbmc$Fill(6)video$Fill(15)$dll(xbmc.dll,1,time,time)#$dll(mce_dll,9,$dll(xbmc.dll,2,,)#playing audio,xbmc$Fill(6)audio$Fill(15)$dll(xbmc.dll,1,time,time)#$Time(dd/mm/yyyy)     $Time(hh)h$Time(nn)))"
Text03=""
Text04=""
NoScroll01=1
NoScroll02=1
NoScroll03=1
NoScroll04=1
ContinueNextLine01=0
ContinueNextLine02=0
ContinueNextLine03=0
ContinueNextLine04=0
Center01=0
Center02=0
Center03=0
Center04=0

[Screen 07]
Enabled=1
Theme=6
ShowTime=1
Sticky=0
Skip=0
InteractionTime=0
Interaction=0
Text01="$dll(sandr.dll,1,$dll(mce_dll,4,MediaName,),c:\progra~1\lcdsma~1\plugins\sandr.ini)"
Text02="ch $dll(mce_dll,4,TrackNumberZ2,)$Fill(6)$dll(mce_dll,4,ChannelName,)"
Text03=""
Text04=""
NoScroll01=1
NoScroll02=1
NoScroll03=1
NoScroll04=1
ContinueNextLine01=0
ContinueNextLine02=0
ContinueNextLine03=0
ContinueNextLine04=0
Center01=0
Center02=0
Center03=0
Center04=0

[Screen 08] to [Screen 19]
Enabled=0
Theme=9
ShowTime=1
Sticky=0
Skip=0
InteractionTime=0
Interaction=0
Text01=""
Text02=""
Text03=""
Text04=""
NoScroll01=1
NoScroll02=1
NoScroll03=1
NoScroll04=1
ContinueNextLine01=0
ContinueNextLine02=0
ContinueNextLine03=0
ContinueNextLine04=0
Center01=0
Center02=0
Center03=0
Center04=0

[Screen 20]
Enabled=0
Theme=10
ShowTime=1
Sticky=0
Skip=0
InteractionTime=0
Interaction=0
Text01="$dll(mce_dll,9,$dll(MCE_dll,4,Mutei,)#0,Volume $dll(MCE_dll,4,Volume,) $Fill(10)$Bar($dll(MCE_dll,4,Volume,),50,10)#Volume $dll(MCE_dll,4,Volume,) $Fill(10) * $Flash(MUTE$)$ * "
Text02=""
Text03=""
Text04=""
NoScroll01=0
NoScroll02=0
NoScroll03=0
NoScroll04=0
ContinueNextLine01=0
ContinueNextLine02=0
ContinueNextLine03=0
ContinueNextLine04=0
Center01=0
Center02=0
Center03=0
Center04=1

 

[Actions]
Action01Variable=$dll(mce_dll,9,$dll(mce_dll,9,$dll(mce_dll,4,StatusCounter,)#0,NotVolume#$dll(mce_dll,9,$dll(mce_dll,4,DisplayMode,)#Mute,Volume#$dll(mce_dll,4,DisplayMode,)))#Volume,Volume#$dll(mce_dll,9,$dll(mce_dll,4,NavStatusI,)#23,Menu#No_Menu))
Action01Condition=2
Action01ConditionValue=Menu
Action01Action=GotoTheme(1)
Action02Variable=$dll(mce_dll,9,$dll(mce_dll,9,$dll(mce_dll,4,StatusCounter,)#0,NotVolume#$dll(mce_dll,9,$dll(mce_dll,4,DisplayMode,)#Mute,Volume#$dll(mce_dll,4,DisplayMode,)))#Volume,Volume#$dll(mce_dll,9,$dll(mce_dll,4,SessionStatus,)#Audio,$dll(mce_dll,9,$dll(mce_dll,4,NavStatusI,)#23,No_Audio#Audio)#No_Audio))
Action02Condition=2
Action02ConditionValue=Audio
Action02Action=GotoTheme(2)
Action03Variable=$dll(mce_dll,9,$dll(mce_dll,9,$dll(mce_dll,4,StatusCounter,)#0,NotVolume#$dll(mce_dll,9,$dll(mce_dll,4,DisplayMode,)#Mute,Volume#$dll(mce_dll,4,DisplayMode,)))#Volume,Volume#$dll(mce_dll,9,$dll(mce_dll,4,SessionStatus,)#CD,$dll(mce_dll,9,$dll(mce_dll,4,NavStatusI,)#23,No_CD#CD)#No_CD))
Action03Condition=2
Action03ConditionValue=CD
Action03Action=GotoTheme(2)
Action04Variable=$dll(mce_dll,9,$dll(mce_dll,9,$dll(mce_dll,4,StatusCounter,)#0,NotVolume#$dll(mce_dll,9,$dll(mce_dll,4,DisplayMode,)#Mute,Volume#$dll(mce_dll,4,DisplayMode,)))#Volume,Volume#$dll(mce_dll,9,$dll(mce_dll,4,SessionStatus,)#Video,$dll(mce_dll,9,$dll(mce_dll,4,NavStatusI,)#23,No_Video#Video)#No_Video))
Action04Condition=2
Action04ConditionValue=Video
Action04Action=GotoTheme(3)
Action05Variable=$dll(mce_dll,9,$dll(mce_dll,9,$dll(mce_dll,4,StatusCounter,)#0,NotVolume#$dll(mce_dll,9,$dll(mce_dll,4,DisplayMode,)#Mute,Volume#$dll(mce_dll,4,DisplayMode,)))#Volume,Volume#$dll(mce_dll,9,$dll(mce_dll,4,SessionStatus,)#PVR,$dll(mce_dll,9,$dll(mce_dll,4,NavStatusI,)#23,No_PVR#PVR)#No_PVR))
Action05Condition=2
Action05ConditionValue=PVR
Action05Action=GotoTheme(3)
Action06Variable=$dll(mce_dll,9,$dll(mce_dll,9,$dll(mce_dll,4,StatusCounter,)#0,NotVolume#$dll(mce_dll,9,$dll(mce_dll,4,DisplayMode,)#Mute,Volume#$dll(mce_dll,4,DisplayMode,)))#Volume,Volume#$dll(mce_dll,9,$dll(mce_dll,4,SessionStatus,)#DVD,$dll(mce_dll,9,$dll(mce_dll,4,NavStatusI,)#23,No_DVD#DVD)#No_DVD))
Action06Condition=2
Action06ConditionValue=DVD
Action06Action=GotoTheme(3)
Action07Variable=$dll(mce_dll,9,$dll(mce_dll,9,$dll(mce_dll,4,StatusCounter,)#0,NotVolume#$dll(mce_dll,9,$dll(mce_dll,4,DisplayMode,)#Mute,Volume#$dll(mce_dll,4,DisplayMode,)))#Volume,Volume#$dll(mce_dll,9,$dll(mce_dll,20,GameEx.exe,GameEx)#GameEx,GameEx#No_GameEx))
Action07Condition=2
Action07ConditionValue=GameEx
Action07Action=GotoTheme(4)
Action08Variable=$dll(mce_dll,9,$dll(mce_dll,9,$dll(mce_dll,4,StatusCounter,)#0,NotVolume#$dll(mce_dll,9,$dll(mce_dll,4,DisplayMode,)#Mute,Volume#$dll(mce_dll,4,DisplayMode,)))#Volume,Volume#$dll(mce_dll,9,$dll(mce_dll,20,XBMC.exe,XBMC)#XBMC,XBMC#No_XBMC))
Action08Condition=2
Action08ConditionValue=XBMC
Action08Action=GotoTheme(5)
Action09Variable=$dll(mce_dll,9,$dll(mce_dll,9,$dll(mce_dll,4,StatusCounter,)#0,NotVolume#$dll(mce_dll,9,$dll(mce_dll,4,DisplayMode,)#Mute,Volume#$dll(mce_dll,4,DisplayMode,)))#Volume,Volume#$dll(mce_dll,9,$dll(mce_dll,4,SessionStatus,)#TVTuner,TVTuner#No_TVTuner))
Action09Condition=2
Action09ConditionValue=TVTuner
Action09Action=GotoTheme(6)
Action10Variable=$dll(mce_dll,9,$dll(mce_dll,4,StatusCounter,)#0,NotVolume#$dll(mce_dll,9,$dll(mce_dll,4,DisplayMode,)#Mute,Volume#$dll(mce_dll,4,DisplayMode,)))
Action10Condition=2
Action10ConditionValue=Volume
Action10Action=EnableScreen(20)
Action11Variable=$dll(mce_dll,9,$dll(mce_dll,4,StatusCounter,)#0,NotVolume#$dll(mce_dll,9,$dll(mce_dll,4,DisplayMode,)#Mute,Volume#$dll(mce_dll,4,DisplayMode,)))
Action11Condition=2
Action11ConditionValue=Volume
Action11Action=DisableScreen(1)
Action12Variable=$dll(mce_dll,9,$dll(mce_dll,4,StatusCounter,)#0,NotVolume#$dll(mce_dll,9,$dll(mce_dll,4,DisplayMode,)#Mute,Volume#$dll(mce_dll,4,DisplayMode,)))
Action12Condition=2
Action12ConditionValue=Volume
Action12Action=DisableScreen(2)
Action13Variable=$dll(mce_dll,9,$dll(mce_dll,4,StatusCounter,)#0,NotVolume#$dll(mce_dll,9,$dll(mce_dll,4,DisplayMode,)#Mute,Volume#$dll(mce_dll,4,DisplayMode,)))
Action13Condition=2
Action13ConditionValue=Volume
Action13Action=DisableScreen(3)
Action14Variable=$dll(mce_dll,9,$dll(mce_dll,4,StatusCounter,)#0,NotVolume#$dll(mce_dll,9,$dll(mce_dll,4,DisplayMode,)#Mute,Volume#$dll(mce_dll,4,DisplayMode,)))
Action14Condition=2
Action14ConditionValue=Volume
Action14Action=DisableScreen(4)
Action15Variable=$dll(mce_dll,9,$dll(mce_dll,4,StatusCounter,)#0,NotVolume#$dll(mce_dll,9,$dll(mce_dll,4,DisplayMode,)#Mute,Volume#$dll(mce_dll,4,DisplayMode,)))
Action15Condition=2
Action15ConditionValue=Volume
Action15Action=DisableScreen(5)
Action16Variable=$dll(mce_dll,9,$dll(mce_dll,4,StatusCounter,)#0,NotVolume#$dll(mce_dll,9,$dll(mce_dll,4,DisplayMode,)#Mute,Volume#$dll(mce_dll,4,DisplayMode,)))
Action16Condition=2
Action16ConditionValue=Volume
Action16Action=DisableScreen(6)
Action17Variable=$dll(mce_dll,9,$dll(mce_dll,4,StatusCounter,)#0,NotVolume#$dll(mce_dll,9,$dll(mce_dll,4,DisplayMode,)#Mute,Volume#$dll(mce_dll,4,DisplayMode,)))
Action17Condition=2
Action17ConditionValue=Volume
Action17Action=DisableScreen(7)

Aug 3, 2011 at 3:27 AM
Edited Aug 3, 2011 at 3:27 AM

Looks like you're as much of a geek as I am!  Care to share your sandr.ini file?

It looks like sandr only allows 8.3 names for the path and filename of the ini.  I was wondering if that was the problem with mine, but I haven't tried it yet.  Thanks!

Aug 4, 2011 at 4:29 AM

My sandr.ini simply replaces "?" with "e" because either MC or the vmccontroller sends accented letters as "?". Sometimes its not the right vowel getting replaced, still its less ugly reading "chaene" instead of "chaîne" than "T?l?vision" instead of "Télévision"

Now about the geekiness. If you look carefully, all these lines are is a cascade of comparisons, necessary because Smartie does not allow any depth in its actions. This is how it works using function 9:

First a comparison: IF (LookedUpTag1#WantedValue1,WantedOutput1#NextComparison) or in english "if LookedUpTag1 equals WantedValue1, say WantedOutput1, otherwise say NextComparison"

Where NextComparison is a similar line as the first: IF (LookedUpTag2#WantedValue2,WantedOutput2#NextComparison)

Which gives a line that looks like: IF (LookedUpTag1#WantedValue1,WantedOutput1#IF (LookedUpTag2#WantedValue2,WantedOutput2#NextComparison))

Add a couple more comparisons:  IF (LookedUpTag1#WantedValue1,WantedOutput1#IF (LookedUpTag2#WantedValue2,WantedOutput2#IF (LookedUpTag3#WantedValue3,WantedOutput3#IF (LookedUpTag4#WantedValue4,WantedOutput4#BetterLuckNextTime)))).  Edit with the correct syntax with further $dll calls to retrieve the tags you want, and that's how you end up with geeky looking lines...

Last but not least, I have no merit in figuring this out by myself. See a post from Dave on July 19 in the Volume display thread... That was a very valuable tip !

  

Aug 4, 2011 at 4:18 PM

Understood.  I use many nested functions in various software products.  Most people don't understand nesting.