Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV :...

109
NetRemote et UMPC Table des matières Version.................................................................................................................................................................8 Introduction.........................................................................................................................................................8 Cahier des charges...............................................................................................................................................8 Schéma de principe.........................................................................................................................................8 Les activités à piloter......................................................................................................................................9 Matériel utilisé...................................................................................................................................................12 Umpc Asus R2E............................................................................................................................................12 Point d'accés NetGear WPN802...................................................................................................................12 Global Caché.................................................................................................................................................13 Logiciels utilisés................................................................................................................................................13 Sur l'UMPC...................................................................................................................................................13 Sur le PC.......................................................................................................................................................13 Paramètres Wi-Fi...............................................................................................................................................13 Paramètres du point d'accés NetGear WPN802............................................................................................13 Basic Settings...........................................................................................................................................13 Wireless Settings......................................................................................................................................13 Security.....................................................................................................................................................14 Paramètres sur le PC.....................................................................................................................................14 Paramètres sur l'UMPC.................................................................................................................................14 Paramètres sur le GC-100.............................................................................................................................14 Le réveil du PC par WOL..................................................................................................................................14 Dans le BIOS................................................................................................................................................15 Advanced..................................................................................................................................................15 Power........................................................................................................................................................15 Sous Windows...............................................................................................................................................15 Organisation de la télécommande......................................................................................................................16 Principe de base............................................................................................................................................16 Positionner les paramètres du client NetRemote..........................................................................................16 Les Templates...............................................................................................................................................16 Page master Template...................................................................................................................................17 Bandeau supérieur....................................................................................................................................17 Trois boutons mystère..............................................................................................................................17 Page master Template Overlay.....................................................................................................................17 La page de démarrage (HOME_P.Home)..........................................................................................................19 La page d'accueil (HOME_P.Accueil)...............................................................................................................20 La page principale TV (TV_P.Main).................................................................................................................23 La page principale SAT (SAT_P.Main).............................................................................................................25 La page BLURAY (BLURAY:P.Library)..........................................................................................................26 Page 1/109

Transcript of Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV :...

Page 1: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Table des matièresVersion.................................................................................................................................................................8Introduction.........................................................................................................................................................8Cahier des charges...............................................................................................................................................8

Schéma de principe.........................................................................................................................................8Les activités à piloter......................................................................................................................................9

Matériel utilisé...................................................................................................................................................12Umpc Asus R2E............................................................................................................................................12Point d'accés NetGear WPN802...................................................................................................................12Global Caché.................................................................................................................................................13

Logiciels utilisés................................................................................................................................................13Sur l'UMPC...................................................................................................................................................13Sur le PC.......................................................................................................................................................13

Paramètres Wi-Fi...............................................................................................................................................13Paramètres du point d'accés NetGear WPN802............................................................................................13

Basic Settings...........................................................................................................................................13Wireless Settings......................................................................................................................................13Security.....................................................................................................................................................14

Paramètres sur le PC.....................................................................................................................................14Paramètres sur l'UMPC.................................................................................................................................14Paramètres sur le GC-100.............................................................................................................................14

Le réveil du PC par WOL..................................................................................................................................14Dans le BIOS................................................................................................................................................15

Advanced..................................................................................................................................................15Power........................................................................................................................................................15

Sous Windows...............................................................................................................................................15Organisation de la télécommande......................................................................................................................16

Principe de base............................................................................................................................................16Positionner les paramètres du client NetRemote..........................................................................................16Les Templates...............................................................................................................................................16Page master Template...................................................................................................................................17

Bandeau supérieur....................................................................................................................................17Trois boutons mystère..............................................................................................................................17

Page master Template Overlay.....................................................................................................................17La page de démarrage (HOME_P.Home)..........................................................................................................19La page d'accueil (HOME_P.Accueil)...............................................................................................................20La page principale TV (TV_P.Main).................................................................................................................23La page principale SAT (SAT_P.Main).............................................................................................................25La page BLURAY (BLURAY:P.Library)..........................................................................................................26

Page 1/109

Page 2: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Bandeau inférieur.....................................................................................................................................27La page BLURAY (BLURAY:P.PlayingNow)..................................................................................................29Afficher et gérer les albums audio.....................................................................................................................31

MediaBridge.................................................................................................................................................31Paramétrage sur le PC..............................................................................................................................31Paramétrage sur le PDA...........................................................................................................................31Comment l'utiliser....................................................................................................................................31

GAC..............................................................................................................................................................33Initialiser GAC.........................................................................................................................................33Les requêtes..............................................................................................................................................33Variables résultantes.................................................................................................................................34Actions.....................................................................................................................................................34Navigation................................................................................................................................................35Information additionnelle.........................................................................................................................35

Afficher et gérer les DVD..................................................................................................................................35Mise en oeuvre..............................................................................................................................................35

Gestion de l'aide.................................................................................................................................................37Gestion de l'indicateur de connexion avec le PC...............................................................................................38Gestion du volume audio...................................................................................................................................38Fichier codes_IR.lua..........................................................................................................................................41

GetIRCode(device, cmd).....................................................................................................................41Fichier gc100.lua...............................................................................................................................................43

GetIRPort(device)................................................................................................................................43SendIRToGC100(IRCode)...................................................................................................................44

Fichier x10.lua...................................................................................................................................................45GetX10House(device).........................................................................................................................45GetX10Number(device)......................................................................................................................45GetX10Device(house, num)................................................................................................................46GetX10StatusVar(device)....................................................................................................................46SaveX10(param)..................................................................................................................................46UpdateX10Status()..............................................................................................................................47

Ficher telcos.lua.................................................................................................................................................48ResetAllPowerStatus()........................................................................................................................48GetPowerStatusVar(device).................................................................................................................48IsPowerON(device).............................................................................................................................49SetStatusPowerON(device).................................................................................................................49SetStatusPowerOFF(device)................................................................................................................49SelectTelco(telco)................................................................................................................................49Telco(telcoName, codeToSend)...........................................................................................................49SendIR(device, codeToSend)..............................................................................................................51

Fichier messages.lua..........................................................................................................................................52

Page 2/109

Page 3: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

IsMsgDisplayed()................................................................................................................................52OpenMsg(msgNum)............................................................................................................................52CloseMsg()..........................................................................................................................................52DisplayHelp(helpNum).......................................................................................................................52OpenHelpMenu().................................................................................................................................53OpenGlobalHelp()...............................................................................................................................53OpenHelp()..........................................................................................................................................53OpenVolumeHelp()..............................................................................................................................54OpenControlDVDHelp().....................................................................................................................54OpenHardkeysHelp()...........................................................................................................................54CloseHelp()..........................................................................................................................................54OpenSubMsg(msgNum)......................................................................................................................54CloseSubMsg()....................................................................................................................................54

Fichier virtual_keyboards.lua............................................................................................................................55InitKeyboard().....................................................................................................................................55OpenKeyboard(process)......................................................................................................................55UpdateStringInput(charInput).............................................................................................................55SupprLastChar()..................................................................................................................................56StringInputOk()...................................................................................................................................56

Fichier process.lua.............................................................................................................................................57SetProcessNotReady().........................................................................................................................57SetProcessReady()...............................................................................................................................57IsProcessReady().................................................................................................................................58InitProcess().........................................................................................................................................58FinishInitProcess()...............................................................................................................................58GetProcessName()...............................................................................................................................58SetProcessName(process)....................................................................................................................58

Animation de la barre de progression...........................................................................................................59AnimeProgressBar()............................................................................................................................59WaitDelayFinish()...............................................................................................................................61WaitProcessReady(submsg, delay)......................................................................................................61

Fichier wifi.lua...................................................................................................................................................63WifiON()..............................................................................................................................................63WifiOFF()............................................................................................................................................63

Gestion de l'icône animé Wi-Fi.....................................................................................................................63AnimeWifi (wifiTimer).......................................................................................................................63

Fichier global.lua...............................................................................................................................................65SwitchZeroAndOne(var).....................................................................................................................65IsObjectDisplayed().............................................................................................................................65SetObjectDisplayed()..........................................................................................................................65SetObjectNotDisplayed()....................................................................................................................65

Page 3/109

Page 4: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

GoToPage()..........................................................................................................................................66ScrollZoneOn()....................................................................................................................................66ScrollZoneOff()...................................................................................................................................66InitDisplayBatteryLevel()....................................................................................................................66DisplayBatteryLevel(batteryTimer)....................................................................................................67HideMouse()........................................................................................................................................67ShowMouse()......................................................................................................................................67ShowHideMouse()...............................................................................................................................68GoPageWhenReady(device, page)......................................................................................................68SendEvent(event)................................................................................................................................68SetSourceAV(source)...........................................................................................................................68GetSourceAV()....................................................................................................................................69SetAudioDiffuser(diffuser)..................................................................................................................69GetAudioDiffuser().............................................................................................................................69GetStatusOfGroup(theGroup, thePage)...............................................................................................70SetStatusOfGroup(theGroup, thePage, status)....................................................................................70SetCallFunction(fctID)........................................................................................................................71

Fichier tv.lua......................................................................................................................................................72TVGetChannel(media, channelName)................................................................................................72TVSetHertzChannels()........................................................................................................................73TVSetTNTChannels().........................................................................................................................73TVIsTNTChannel().............................................................................................................................73TVSelectChannel(channelName)........................................................................................................73TVSetChannel(channelName).............................................................................................................74TVPrevChannel()................................................................................................................................74TVNextChannel()................................................................................................................................74TVMenu()............................................................................................................................................75TVOptions()........................................................................................................................................75TVPowerOFF()....................................................................................................................................75TVPowerON().....................................................................................................................................76TVPowerONAllDevices()...................................................................................................................76TVPowerOFFAllDevices()..................................................................................................................76TVStartProcess().................................................................................................................................77TVStopProcess()..................................................................................................................................77

Fichier navigator.lua..........................................................................................................................................78OpenCloseMenuNavigator()...............................................................................................................78CloseMenuNavigator()........................................................................................................................78IsMenuNavigatorOpen()......................................................................................................................78LeftArrowNavigator().........................................................................................................................79UpArrowNavigator()...........................................................................................................................79RightArrowNavigator().......................................................................................................................79

Page 4/109

Page 5: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

DownArrowNavigator()......................................................................................................................79OKNavigator().....................................................................................................................................79

Fichier playerpannel.lua....................................................................................................................................80SkipBackward()...................................................................................................................................80FastBackward()....................................................................................................................................80Backward()..........................................................................................................................................80Stop()...................................................................................................................................................80Pause().................................................................................................................................................81Play()...................................................................................................................................................81FastForward()......................................................................................................................................81SkipForward()......................................................................................................................................81Eject()..................................................................................................................................................81

Fichier audio.lua................................................................................................................................................82GetVolMin(device)..............................................................................................................................82GetVolMax(device).............................................................................................................................83GetVolsDefault(device).......................................................................................................................83GetCoeffVol(device)............................................................................................................................83VolDeviceToVolTelco(device, vol)......................................................................................................83VolTelcoToVolDevice(device, vol)......................................................................................................84GetVol()...............................................................................................................................................84AdjustVolDevice(device, deltaVol).....................................................................................................84AdjustVol()..........................................................................................................................................85IncVol()................................................................................................................................................86DecVol()...............................................................................................................................................86SetVol(button, ctr)...............................................................................................................................86SwitchMute().......................................................................................................................................87ResetVolFromMute(volTimer)............................................................................................................87SetVolToZero()....................................................................................................................................87ResetVol()............................................................................................................................................88_ResetVol(volTimer)...........................................................................................................................88_DefaultVol(volTimer)........................................................................................................................89AudioOptions()....................................................................................................................................89

Fichier movies.lua..............................................................................................................................................90DisplayMoviesList()............................................................................................................................90DisplayGenreMoviesList()..................................................................................................................90ItemReady().........................................................................................................................................90ItemNotReady()...................................................................................................................................90IsItemReady()......................................................................................................................................91SelectItemFromVideoLibraryList(index)............................................................................................91DisplayDVDSelected()........................................................................................................................91SetDVDPlaying()................................................................................................................................92

Page 5/109

Page 6: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

SetDVDNotPlaying()..........................................................................................................................92DVDIsPlaying()...................................................................................................................................92SaveDVDSelected(index)....................................................................................................................92RestoreDVDSelected()........................................................................................................................92

Fichier albums.lua..............................................................................................................................................94DisplayAlbumList().............................................................................................................................94DisplayArtistList()...............................................................................................................................94DisplayGenreList()..............................................................................................................................94DisplayPlaylists()................................................................................................................................95SelectItemFromAudioLibraryList(index)............................................................................................95SelectItemFromAudioLibraryList(index)............................................................................................95

Fichier bluray.lua...............................................................................................................................................96BRPowerONAllDevices()...................................................................................................................96BRStartProcess().................................................................................................................................97BRPowerOFFAllDevices()..................................................................................................................98BRStopProcess()..................................................................................................................................99BRPowerOFF()....................................................................................................................................99BRPowerON().....................................................................................................................................99BRSkipBackward()..............................................................................................................................99BRFastBackward()..............................................................................................................................99BRBackward()...................................................................................................................................100BRStop()............................................................................................................................................100BRPause()..........................................................................................................................................100BRPlay()............................................................................................................................................100BRFastForward()...............................................................................................................................100BRSkipForward()..............................................................................................................................100BREject()...........................................................................................................................................100BRTopMenu()....................................................................................................................................100BRLeftArrow()..................................................................................................................................101BRUpArrow()....................................................................................................................................101BRRightArrow()................................................................................................................................101BRDownArrow()...............................................................................................................................101BROk()..............................................................................................................................................101BRAudio().........................................................................................................................................101BRDisplay().......................................................................................................................................101BRDisplayOnOffLangues()...............................................................................................................102BRDisplayOnOffSubtitles()..............................................................................................................102

Fichier preamp.lua...........................................................................................................................................103PREAMPPowerON()........................................................................................................................103PREAMPPowerOFF().......................................................................................................................103

Fichier switch.lua.............................................................................................................................................104

Page 6/109

Page 7: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

SWITCHPowerON().........................................................................................................................104SWITCHPowerOFF()........................................................................................................................104

Fichier amplis.lua............................................................................................................................................105AMPLISPowerON()..........................................................................................................................105AMPLISPowerOFF()........................................................................................................................105

Ficher display.lua.............................................................................................................................................106SetDisplayToTV().............................................................................................................................106SetDisplayToVP()..............................................................................................................................106SetDisplay(displayID, displayEvent)................................................................................................106GetDisplayName().............................................................................................................................106

Fichier vp.lua...................................................................................................................................................107VPPowerON()...................................................................................................................................107VPPowerOFF()..................................................................................................................................107

Fichier sat.lua...................................................................................................................................................108SATStartProcess()..............................................................................................................................108SATStopProcess()..............................................................................................................................108

Page 7/109

Page 8: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

VersionMaj du 21/09/09

IntroductionCe document décrit les étapes d'élaboration de ma télécommande à base d'un UMPCD'abord un grand merci à Stef (COUILLEROT) du forum Homecinena-fr pour la partie graphiqueLes pages affichées sont celles au moment où j'écris ce tutorial, elles ne correspondront peut-être plus à la version finale de ma télécommande, mais la logique restera la mêmeSeuls certains extraits de code du script lua sont décrits, on regardera le script pour avoir le code complet.Les fichiers ccf et lua sont disponibles ici : NetRemote_UMPC

Page 8/109

Page 9: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Cahier des chargesAvant de décrire la réalisation, il convient de préciser ce que l'on veut faire, pour cela je vais d'abord faire une présentation de l'organisation de mon système audio-vidéo.

Schéma de principe

Page 9/109

Page 10: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Le système est composé de deux sous-systèmes, l'un articulé autour d'un PC, l'autre articulé autour d'un Pré-ampli Audio/Vidéo (en réalité l'ampli audio-vidéo Yamaha DSP-Z7 dont seule la partie préampli est utilisée). C'est un choix redondant qui me permet de pouvoir toujours régarder un film ou écouter de la musique (à moins que les deux sous-systèmes tombent en panne en même temps).Ce choix s'est imposé quand je me suis rendu compte que je faisais régulièrement des tests et des évolutions sur le PC, ce qui le rendait par moment indisponible, et nous privait ainsi de pouvoir regarder un film.Le sous-système PC est orienté Hi-Fi (ce qui explique que la platine vinyle y soit connectée) et Home-Cinéma de haute qualité (possibilité de traitements logiciels), tandis que le sous-système articulé autour du préampli est un système dont l'utilisation est plus direct (ce qui ne veut pas dire que la qualité est absente).La majorité des appareils est pilotable par infra-rouge : afin de pouvoir utiliser l'umpc Asus comme télécommande, et comme il ne possède pas d'émetteur IR, les commandes IR sont envoyées par Wifi, relayées par le point d'accés vers le GC-100 qui émet effectivment le signal IR.Pour les appareils qui ne sont pas pilotables par infra-rouge, leur allumage-extinction se fait par l'intermédiaire de module X-10. Pour le lecteur multimédia Dune HD c'est un peu particulier, il est en effet pilotable par IR, mais sa mise en veille laisse en circuit certains éléments (disque dur, ventilateur), le module X-10 permet alors de le mettre complétement hors tension.Le commutateur audio-vidéo est le modèle MAS71 de chez Zektor, il permet une commutation de très haute qualité de l'audio et de la vidéo en HDMI, optique, coaxial et analogique (en 7.1)

Les activités à piloterAfin de pouvoir construire la logique de la télécommande, on va d'abord lister les différentes activités que l'on veut pouvoir piloter. J'ai donné un nom à chaque activité mis en évidence.

Source = Téléviseur– PROCESS_TV : le téléviseur est utilisé seul, il sert de source audio/vidéo et de diffuseur audio/vidéo

Source = Terminal satellite– PROCESS_SAT_TV : le terminal satellite est utilisé comme source audio/vidéo, le téléviseur comme

diffuseur audio/vidéo– PROCESS_SAT_VP : le terminal satellite est utilisé comme source audio/vidéo, le vidéoprojecteur

comme diffuseur vidéo, les enceintes comme diffuseur audio

Source = Tuner– PROCESS_TUNER : le tuner FM est utilisé comme source audio, les enceintes comme diffuseur audio

Source = Platine Blu-Ray– PROCESS_BR_TV : la platine Blu-Ray est utilisée comme source audio/vidéo, le téléviseur comme

diffuseur audio/vidéo– PROCESS_BR_VP_SPK : la platine Blu-Ray est utilisée comme source audio/vidéo, le vidéoprojecteur

comme diffuseur vidéo, les enceintes comme diffuseur audio– PROCESS_BR_VP_HDPH : la platine Blu-Ray est utilisée comme source audio/vidéo, le

vidéoprojecteur comme diffuseur vidéo, le casque comme diffuseur audio

Source = Lecteur Multimédia– PROCESS_MM_TV : le lecteur Multimédia est utilisé comme source audio/vidéo, le téléviseur comme

diffuseur audio/vidéo– PROCESS_MM_VP_SPK : le lecteur Multimédia est utilisé comme source audio/vidéo, le

vidéoprojecteur comme diffuseur vidéo, les enceintes comme diffuseur audio

Page 10/109

Page 11: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

– PROCESS_MM_VP_HDPH : le lecteur Multimédia est utilisé comme source audio/vidéo, le vidéoprojecteur comme diffuseur vidéo, le casque comme diffuseur audio

Source = PC– PROCESS_PC_HIFI : le PC est utilisé comme source de diffusion audio, la musique est lue à partir du

disque dur du PC, les enceintes comme diffuseur audio– PROCESS_PC_CD : le PC est utilisé comme source de diffusion audio, la musique est lue à partir du

lecteur physique du PC, les enceintes comme diffuseur audio– PROCESS_PC_SACD : le PC est utilisé comme source de diffusion audio, la musique est lue à partir du

lecteur physique du PC, on lit ici des disques SACD, les enceintes comme diffuseur audio– PROCESS_PC_VINYLE : le PC est utilisé comme source de diffusion audio, la musique est lue à partir

de la platine vinyle, les enceintes comme diffuseur audio– PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

du lecteur DVD du PC, le téléviseur est utilisé comme diffuseur audio/vidéo– PROCESS_PC_DVD_VP : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

du lecteur DVD du PC, le videoprojecteur est utilisé comme diffuseur vidéo, les enceintes comme diffuseur audio

– PROCESS_PC_HDDVD_VP : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir du lecteur HD-DVD du PC, le videoprojecteur est utilisé comme diffuseur vidéo, les enceintes comme diffuseur audio

– PROCESS_PC_BR_VP : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir du lecteur Blu-Ray du PC, le videoprojecteur est utilisé comme diffuseur vidéo, les enceintes comme diffuseur audio

– PROCESS_PC_SAT_TV : le PC est utilisé comme source de diffusion audio/vidéo, l'audio et la vidéo sont issus de la carte satellite intégrée au PC, le téléviseur est utilisé comme diffuseur audio/vidéo

– PROCESS_PC_SAT_VP : le PC est utilisé comme source de diffusion audio/vidéo, l'audio et la vidéo sont issus de la carte satellite intégrée au PC, le videoprojecteur est utilisé comme diffuseur vidéo, les enceintes comme diffuseur audio

J'ai établi ci-dessous le tableau qui met en évidence pour chaque activité, les appareils utilisés, pour des problèmes de place je n'ai pas indiqué PROCESS_ devant les noms des activités

Activité Source Diffuseuraudio

Diffuseurvidéo

SwitchA/V

PC Préampli Amplis Platinevinyle

PlatineBlu-Ray

Lecteur Multimédia

TerminalSatellite

TunerFM

TV VP

TV TV TV TV x

SAT_TV SAT TV TV x x x

SAT_VP SAT Enceintes VP x x x x x

TUNER TUNER Enceintes x x x x

BR_TV BR TV TV x x

BR_VP_SPK BR Enceintes VP x x x x x

BR_VP_HDPH BR casque VP x x x

MM_TV MM TV TV x x

MM_VP_SPK MM Enceintes VP x x x x x

MM_VP_HDPH MM casque VP x x x

Page 11/109

Page 12: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

PC_HIFI PC Enceintes x x x

PC_CD PC Enceintes x x x

PC_SACD PC Enceintes x x x

PC_VINYLE PC Enceintes x x x x

PC_DVD_TV PC TV TV x

PC_DVD_VP PC Enceintes VP x x x x

PC_HDDVD_VP PC Enceintes VP x x x x

PC_BR_VP PC Enceintes VP x x x x

PC_SAT_TV PC TV TV x

PC_SAT_VP PC Enceintes VP x x x x

A partir de ceci on va déduire la logique de programmation de la télécommande :

Page d'accueil|

VChoix de la source

TV, SAT, TUNER, BR, MM, PC|

VChoix du diffuseur audio

SPK, HDPH|

VChoix du diffuseur video

TV, VP

Page 12/109

Page 13: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Matériel utiliséUmpc Asus R2ELe client NetRemote est installé sur un UMPC Asus R2E

http://france.asus.com/products.aspx?l1=5&l2=25&l3=350&l4=0&model=1908&modelmenu=2Ce mini pc tourne est disponible sous Vista, avec 1Go de mémoire, un disque dur de 100Go, il comporte le Wifi, son écran de 7" a une résolution de 800x480, ce qui physiquement représente une dimension d'environ 154x92mmComme je n'apprécie pas Vista, ma première action a été de le remplacer par XP Tablet PC (tous les drivers XP sont disponibles sur le site d'Asus) et de l'alléger au maximum en supprimer certains composants et en désactivant certains services.

Point d'accés NetGear WPN802Toutes les commandes de la télécommande sont envoyées par l'intermédiaire du Wi-Fi. Pour cela j'utilise point d'accés NetGear WPN802

http://www.netgear.fr/produits/produit.php?prod=WPN802

Page 13/109

Page 14: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Global CachéNetRemote ne gérant pas l'envoi direct de codes IR (et l'Asus R2E ne disposant pas de port IR), afin de piloter les appareils quand le PC est éteint, l'envoi des codes IR à ces appareils se fait par l'intermédiaire de l'adaptateur réseau Global Caché GC-100-12 (le moyen)

http://www.globalcache.com/products/gc-index.htmlCet adaptateur reçoit les commandes de NetRemote par l'intermédiaire du réseau (relié au point d'accés wi-fi) et envoie les codes IR correspondant à l'appareil spécifié.

Logiciels utilisésSur l'UMPC– Système d'exploitation : Windows XP SP2 tablet PC– Client NetRemote– Mediabridge pour gérer la liste des films

Sur le PC– Système d'exploitation : Windows XP SP2– Mediabridge : pour gérer les lecteurs audio/vidéo– Girder : pour gérer les divers applications

Paramètres Wi-FiLe client NetRemote sur l'UMPC doit pouvoir converser avec le PC et l'adaptateur Global Caché, ceci via le point d'accés

Paramètres du point d'accés NetGear WPN802Basic SettingsIP : 172.16.0.231Mask : 255.255.255.0Passerelle : 172.16.0.254DNS : 172.16.0.254WINS : 172.16.0.254

Wireless SettingsSSID : WIFI_PCHCEnable SSID Broadcast : décochéOperating mode : Auto (11g/11b)Canal : 13

Page 14/109

Page 15: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

SecurityWEP/WPA Setings– Network Authentification : Open System– Data encryption : NoneAccess Control– Turn Access Control on : coché– J'ai ajouté les adresses mac du PC, du GC-100 et de l'UMPC pour limiter l'accés Wi-Fi uniquement à ces

deux appareils

Paramètres sur le PCNom : PCHCAdresse IP : 172.16.0.1Mask : 255.255.255.0Passerelle : 172.16.0.231MAC : 00:1a:92:7e:0c:d7

Paramètres sur l'UMPCAdresse IP : 172.16.0.2 (255.255.255.0)Mask : 255.255.255.0Passerelle : 172.16.0.231DNS : 172.16.0.231WINS : 172.16.0.231MAC : 00:1e:8c:7d:32:13

Paramètres sur le GC-100Adress IP : 172.16.0.3MAC : 00:0c:1e:01:b4:b0

Le réveil du PC par WOLComme NetRemote ne gère pas l'envoi direct de codes IR, pour réveiller mon PC j'utilise la technique WOL(Wake-On-Lan) qui permet d'activer le PC via la carte réseau. Pour cela il faut positionner quelques paramétresUne bonne explication du WOL : http://xlife.zuavra.net/index.php/60/#ig-4Et ici : http://www.depicus.com/wake-on-lan/what-is-wake-on-lan.aspxEt là : http://fr.wikipedia.org/wiki/Wake-on-LANLa technique WOL permet à un PC d'être allumé quand la carte réseau détecte une certaine activité sur le réseau.Pour cela il faut que la carte réseau utilisée ainsi que la carte mère supportent cette fonctionnalité (WOL est

Page 15/109

Page 16: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

quelque fois indiquée comme PME : Power Management Event). Depuis la version PCI 2.2, les cartes peuvent gérer le WOL directement par le connecteur (plus besoin d'un câble spécifique)Comme j'utilise la carte réseau intégrée, je sais qu'elle est compatible WOL puisque la carte mère l'estVoyons les paramètres à positionner

Dans le BIOSPour ma carte mère : Asus P5B PremiumJ'ai d'abord activé la carte réseau utilisée

Advanced– OnBoard Devices Configuration

– OnBoard PCIE Gbe LAN_1 :enabled– LAN Option ROM : enabled

Power– Suspend Mode : S3 Only– ACPI 2.0 Support : enabled– APM Configuration

– Power On By PCI Devices : enabled– Power On By PCIE Devices : enabled

Sous WindowsDans Gestionnaire de périphériques on sélectionne la carte réseau, puis Propriétés :– Avancé

– Wake Up Capabilities : Magic Packet

Page 16/109

Page 17: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Organisation de la télécommandeLorsque l'on démarre NetRemote avec le fichier ccf associé, le fichier associé lua est lu et un certain nombre de variables sont initialisées

Principe de baseIl est important que l'affichage du client sur le PDA soit toujours synchrone avec ce qui se passe sur le PC, pour cela Girder et MediaBridge sur le PC sont le coeur du système, ce sont eux qui vont renseigner à tout moment le client NetRemote sur ce qui se passe sur le PC afin de synchroniser UMPC et PC.

Positionner les paramètres du client NetRemoteDans le client NetRemote, File > Settings– Onglet General

– Start Fullscreen : coché– Date Format : dddd dd/MM/yy– Time Format : HH:mm:ss

– Onglet Plugins– Girder : créer une instance et clic-droit pour Set ID = -1, puis Properties

– Host : – Port : 20005– Password : girder– Mode : Girder 4

– Infrared : créer une instance et clic-droit pour Set ID = -3, puis Properties : (Ne pas créer si on utilise les sockets)

– Driver Mode : GlobalCache– Host : 192.168.0.3

Les TemplatesLes pages Templates permettent de définir ce qui est commun à toutes les pages, quand une page s'affiche, l'affichage des éléments se fait dans l'ordre suivant :

éléments de la page master Template -> éléments de la page en cours -> éléments de la page master Template Overlay

Ainsi les éléments de la page en cours s'affichent au-dessus des éléments de la page "master Template", et les éléments de la page "master Template Overlay" s'affichent au-dessus de tous les autres

Page 17/109

Page 18: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Page master TemplateElle contient tous les éléments communs à toutes les pages et qui sont constamment affichés, Certains boutons peuvent éventuellement être cachés lors de l'affichage de certaines pages

Bandeau supérieurDe gauche à droite on trouve :– Bouton [HELP] : affiche le menu d'aide (cf Gestion de l'aide)– Bouton [OPTIONS] : affiche la page des options globales de la télécommande (GLOBAL:P.Options)– Horloge : affiche la date et l'heure– Batterie : affiche le niveau de la batterie (cf Gestion de la batterie)– Girder status : indique si Girder est connecté (vert) ou non (rouge), (cf Gestion de l'indicateur de

connexion avec le PC)– Wi-Fi status : s'anime lors de l'envoi d'une commande par Wi-Fi (cf Gestion de l'icône Wi-Fi)– Bouton [EXIT] : quitte NetRemote

Trois boutons mystère– Bouton rouge :– Bouton vert : affiche la page des télécommandes– Bouton bleu :

Page master Template Overlay– Bouton rouge :

Cette page contient des éléments qui peuvent être communs à plusieurs pages et qui ne s'afficheront que

Page 18/109

Page 19: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

lorsque certaines conditions seront remplies : ainsi le menu d'aide qui s'affiche lorsque l'on appuie sur le bouton d'aide et qui peut s'afficher quelque soit la page en cours

Page 19/109

Page 20: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

La page de démarrage (HOME_P.Home)Elle s'affiche lors du démarrage de NetRemote

Un clic sur le logo DIALOU et on affiche la page d'accueil

Page 20/109

Page 21: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

La page d'accueil (HOME_P.Accueil)C'est à partir de cette page que l'on choisit une activité principale

Les boutons sur le panneau de gauche démarre une activité, de haut en bas :– Bouton [TV] : démarre l'activité PROCESS_TV, c'est-à_dire l'utilisation de la TV seule comme source et

diffuseur audio/vidéo.– Allumage de la TV– Sélection de la dernière chaîne utilisée– Initialisation du volume

– Bouton [SAT] : démarre une activité PROCESS_SAT, c'est-à-dire l'utilisation du terminal satellite comme source audio/vidéo, on précise si on utilise la TV comme diffuseur audio/vidéo ou le VP comme diffuseur vidéo associé au casque ou aux enceintes comme diffuseur audio.

– Bouton [BLURAY] : démarre une activité PROCESS_BR, c'est-à-dire la lecture d'un film sur le lecteur Blu-Ray comme source audio/vidéo, on précise si on utilise la TV comme diffuseur audio/vidéo ou le VP comme diffuseur vidéo associé au casque ou aux enceintes comme diffuseur audio

– PROCESS_BR_TV : lecture d'un DVD sur la TV– Allumage de la TV– Allumage du lecteur Blu-Ray– Initialisation du volume– Sélection de l'entrée EXT2 sur la TV

– Affichage d'un message précisant de sélectionner EXT2– Affiche du menu AV– Affichage du navigateur de menu

– PROCESS_BR_VP_HDPH : lecture d'un DVD sur le VP, audio au casque– Allumage du VP

Page 21/109

Page 22: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

– Allumage du lecteur Blu-Ray– Allumage du switch audio– Sélection de l'entrée 2 du switch– Sélection de l'entrée C1 sur le VP– Sélection du preset U-1

– PROCESS_BR_VP_SPK : lecture d'un DVD sur le VP, audio sur les enceintes– Allumage du VP– Allumage du lecteur Blu-Ray– Allumage du préampli– Allumage du switch audio– Sélection de l'entrée 2 du switch– Allumage des amplis– Sélection de l'entrée HDMI sur le VP– Sélection du preset U-2– Initialisation du volume

– Bouton [TUNER] : démarre l'activité PROCESS_TUNER, c'est-à-dire l'utilisation du Tuner FM comme source audio et les enceintes comme diffuseur audio

– Bouton [PC] : démarre une activité PROCESS_PC, c'est-à-dire l'utilisation du PC comme source audio/vidéo, on sélectionne dans la page principale de cette activité, quelle sous-activité sera sélectionnée

Le bouton [TV] contient le code :

SetSource("TV", "TV");

Quand il est sélectionné la page (TV:P.Main) s'affiche

Le bouton [BLURAY] contient le code :

OpenMsg('5');

Quand on choisit l'activité PROCESS_BR, le message suivant s'affiche (si l'activité n'est pas en cours) :

Il permet de choisir le diffuseur qui sera utilisé, ou d'annuler l'action

Le bouton [QUIT] contient le code :

Page 22/109

Page 23: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

CloseMsg();

Le bouton [TV] contient le code :

CloseMsg();

SetSource(GetSourceAV(), "TV");

Le bouton [VP] contient le code :

CloseMsg();

OpenMsg("17");

Le choix du vidéoprojecteur comme diffuseur vidéo entraîne l'affichage du message :

Ici on choisit le diffuseur audio : le casque ou les enceintesS'affiche alors les messages d'attente d'allumage des divers appareils utilisés

Quand tous les appareils sont allumés on affiche la page (BLURAY:P.Library)

Page 23/109

Page 24: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

La page principale TV (TV_P.Main)Cette page permet le démarrage de l'utilisation de la TV

Sur la panneau de gauche on a :– Logo TV : rappelle l'activité– Bouton [ANALOGIQUE] : affiche les chaînes Hertziennes– Bouton [TNT] : affiche les chaînes TNT– Bouton [MENU] : affiche le menu de la TV– Bouton [OPTIONS] : affiche des options de la TV– Bouton [POWER] : termine l'activité TVSur le panneau central s'affiche les boutons des chaînes

Page 24/109

Page 25: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

cf Gestion du volumeLe bouton [PROG-] positionne la chaîne précédente dans la listeLe bouton [PROG+] positionne la chaîne suivante dans la listeLes boutons des chaînes appellent la fonction TVSelectChannel("num") où num est l'index de la chaîneLe bouton [ANALOGIQUE] appelle la fonction TVSetHertzChannels()Le bouton [TNT] appelle la fonction TVSetTNTChannels()

Le bouton [POWER] affiche le message :

Le bouton [OK] contient le code :

CloseMsg();

TVStopProcess();

GoPageWhenReady("HOME", "P.Accueil");

Page 25/109

Page 26: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

La page principale SAT (SAT_P.Main)Cette page permet le démarrage de l'utilisation du terminal satellite

Page 26/109

Page 27: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

La page BLURAY (BLURAY:P.Library)Affiche la liste des films

La fonction BRStartProcess() appelée au moment de l'affichage de cette page, initialise la gestion des films et affiche les premiers films de la liste en appelant la fonction DisplayMoviesList()

Le bouton [FILMS] appelle la fonction DisplayMoviesList() qui réaffiche le début de la liste des films

Le bouton [GENRES] appelle la fonction DisplayGenreMoviesList() qui affiche les genres de films (au moment où j'écris ces lignes, cela ne fonctionne pas car NetRemote ne le gère pas)

Page 27/109

Page 28: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Le bouton [CLAVIER] appelle la fonction OpenKeyboard(), qui affiche un clavier qui va permettre de saisir les premières lettres d'un film à sélectionner

Les touches de clavier ont été initailisées par la fonction InitKeyboard()Chaque touche appelle la fonction UpdateStringInput(charInput) avec le caractère correspondant à la touche.La touche "SUPPR" appelle la fonction SupprLastChar(), elle supprime le dernier caractère saisi.La touche "Entrée" appelle la fonction StringInputOk(), elle valide la saisie

Le bouton [RESUME] affiche la page [BLURAY:P.PlayingNow] qui affiche entre autre le résumé du film sélectionné

Bandeau inférieurLes commandes des lecteurs audio/vidéo, il ne s'affiche que si une activité est en cours, de gauche à droite on trouve :– Bouton [SKIP BACKWARD] : saut arrière, recule au précédent chapître sur un DVD, recule à la

précédente piste en lecture audio– Bouton [FAST BACKWARD] : lecture arrière rapide, recule de x secondes– Bouton [BACKWARD] : lecture arrière– Bouton [STOP] : arrête la lecture en cours– Bouton [PAUSE] : met en pause– Bouton [PLAY] : démarre la lecture– Bouton [FAST FORWARD] : avance rapide, avance de x secondes– Bouton [SKIP FORWARD] : saut avant, avance au chapître suivant sur un DVD, avance à la piste

suivante en lecture audio– Bouton [EJECT] : éjecte le disque en cours du lecteur

Page 28/109

Page 29: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Page 29/109

Page 30: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

La page BLURAY (BLURAY:P.PlayingNow)

Le bouton [POWER] permet d'arrêter l'activité à tout moment

Si on valide avec OK :

Page 30/109

Page 31: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Une fois tous les appareils éteints on retourne à la page d'accueil

Page 31/109

Page 32: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Afficher et gérer les albums audioAfficher sur le PDA la liste des albums audio disponibles sur le PC, les organiser par titre, par artiste, par genre, sélectionner un album ou morceau pour le jouer, voilà ce que permet de faire NetRemote en conjonction avec MediaBridgeD'autre part on va utiliser la bibliothèque lua GAC pour manipuler les données fournies par MediaBridgeDe prime abord cela n'est pas simple à comprendre, je vais essayer d'éclaircir cela

MediaBridgeMediaBridge est une application client/serveur avec d'un côté le client sur le PDA (le plugin MediaBridge) et de l'autre le serveur sur le PC (MediaBridge Serveur lancé par l'application NetRemote MediaBridge)Elle permet de contrôler les actions du lecteur audio/viéo (si celui-ci est supporté)

Paramétrage sur le PCAu démarrage de l'application ou en double-cliquant sur l'icône dans la barre des tâches on a l'affichage de la fenêtre de MediaBridge

La premère fois il faut indique le lecteur que l'on va utiliser, ici j'utilise Winamp, puis cliquer sur le bouton afin que MediaBridge crée sa base de données des différents medias (audio et vidéo)

Paramétrage sur le PDAMenu Tools-Properties, onglet Default Host : on y précise le nom ou l'adresse IP du PC sur lequel tourne MediaBridgePuis on sélectionne l'onglet Plugins, on vérifie que l'instance du plugin MediaBridge a le même nom (adresse IP) pour le Host, et que le numéro de Port est le même que celui précisé dans Listen on port dans MediaBridge sur le PC

Comment l'utiliser– Avec un bouton en utilisant le paramètre Component (onglet Position/Advanced)

Page 32/109

Page 33: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

– Media Library Tree Component : il devient l'affichage d'un arbre de la bibliothèque des medias audio/vidéo et des playlists sauvegardées. Un clic-droit (l'équivalent sur le PDA) permet de sélectionner des options de lecture

– Playing Now List Component : il devient l'affichage d'une liste de la playlist en cours, il affiche le morceau, la durée, l'artiste et l'album des morceaux en attente d'être joués

– Search Result List Component : il devient l'affichage du résultat de la recherche courante, il affiche le morceau, la durée, l'artiste et l'album. Un clic-droit (l'équivalent sur le PDA) permet de sélectionner des options de lecture

– Avec un bouton en lui assignant une action du plugin MediaBridge. Je n'ai listé que les actions qui me semblaient les plus importantes

– Add selected media library node : ajoute l'élément sélectionné de l'arbre de la bibliothèque ou de la liste résultante de la recherche à la fin de la playlist courante

– Insert selected media library node : ajoute l'élément sélectionné de l'arbre de la bibliothèque ou de la liste résultante de la recherche au début de la playlist courante

– Play selected media library node : remplace la playlist courante avec l'élément sélectionné de l'arbre de la bibliothèque ou de la liste résultante de la recherche

– Play selected media library node next : insert l'élément sélectionné de l'arbre de la bibliothèque ou de la liste résultante de la recherche après l'élément en train d'être lu

– Set media library root : positionne la racine de l'arbre de la bibliothèque utilisée par le lecteur– Transport Controls : les boutons qui contrôlent la lecture du media, Play, Stop, Pause, Next

Track, Previous Track, Toggle Continuous, Toggle Play/Pause, Toggle Shuffle– Resend State Information : force le serveur MediaBridge à mettre à jour les variables NR relatives

à l'état de la lecture en cours. Ceci est normalement automatique– En utilisant dans la zone Element Name d'un bouton ou d'une frame, une variable MP.xxx entre {}. Je n'ai

listé que les variables qui me semblaient les plus importantes– MP.Album : nom de l'album du morceau en lecture– MP.AlbumsRoot : utilisé dans une requête GAC retourne la liste des albums disponibles dans la

bibliothèque du lecteur– MP.Album Artist (auto) : nom de l'artiste de l'album en cours– MP.Artist : nom de l'artiste du morceau en lecture– MP.ArtistsRoot : utilisé dans une requête GAC retourne la liste des artistes disponibles dans la

bibliothèque du lecteur– MP.Genre : nom du genre musical du morceau en lecture– MP.GenresRoot : utilisé dans une requête GAC retourne la liste des genres disponibles dans la

bibliothèque du lecteur– MP.LinkActive : "1" = connecté à MediaBridge, "0" = non connecté– MP.Media Type : "audio" ou "vidéo"– MP.PlayingNowCover : varaible image contenant la pochette de l'album en cours– MP.PlaylistLength : nombre de morceaux dans la playlist courante– MP.PlaylistPosition ou MP.Track # : numéro du morceau dans la playlist courante– MP.SearchResultCount : nombre d'éléments trouvés par la dernière recherche– MP.TotalDuration : durée totale de la playlist courante en heures, minutes et secondes– MP.Track : nom du morceau courant– MP.TrackLength : durée du morceau courant en minutes et secondes

Page 33/109

Page 34: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

– MP.TrackPosition : temps écoulé depuis le début du morceau courant en minutes et secondes– MP.TrackPositionPercentage : position relative dans le morceau courant (0 à 999)– MP.Year : année du morceau en cours de lecture

GACGAC (Get Album Covers) est une bibliothèque lua qui permet d'exécuter des requêtes au serveur MediaBridge du PC. On distingue GAC et GAC+ ce dernier étant une amélioration de GAC qui permet d'avoir plus de contrôle sur les requêtes GAC en spécifiant qules champs sont requis, si un compteur de sous-item doit être inclus et plus. J'ai utilisé de péférence GAC+ ce qui est recommandéUn objet GAC va récupérer les informations retournées par une requête via lua, les réponses étant affichées par l'intermédiaire de frames et de boutons

Initialiser GACIl faut que le fichier "GAC.lua" soit dans le répertoire lua de NetRemote (ou dans le sous-répertoire startup), et bien entendu un fichier portant le même nom que votre ccf, mais avec l'extension lua dans le même répertoire, dans lequel sera écrit votre code lua.Il faut créer un objet GAC pour chaque affichage que l'on veut utiliser, cela avec le codeGAC:new(spec);

ou spec est un tableau optionel qui peut inclure des paires nom=valeur telles que :– var : nom à utiliser pour cet objet GAC pour remplir les varaibles NetRemote associées qui

commenceront par MP.var.(GAC par défaut)– useGP : 1 pour GAC+, 0 pour l'ancien GAC (0 par défaut)– rootScheme : le point de départ pour la navigation dans la bibliothèque du lecteur. Les racines prédéfinies

sont fournies par les variables MP.AlbumsRoot, MP.ArtistsRoot et MP.GenresRoot (par défaut le contenu de MP.AlbumsRoot)

– scheme : c'est le noeud courant dont les enfants seront retrouvés par la requête. Les racines prédéfinies peuvent être utilisées (par défaut le contenu de MP.AlbumsRoot)

– clearOnChange : 1 = raz des variables NetRemote avant une nouvelle requête, 0=non (0 par défaut)– fields : noms des champs à retrouvés séparés par des virgules– field : le champ sur lequel se fera le tri du résultat– start : index du premier élément à récupérer (0 par défaut)– count : nombre maximum d'enfants à retrouver par requête (8 par défaut)– imageSize : 'N'=pas d'image, 'S'=petite image, 'M'=image moyenne, 'L'=grande image ('N' par défaut)– includeSubItemCount : 1=retrouve les sous-éléments, 0=non (0 par défaut)Il y aussi pour chaque paramètre une fonction Set correspondante (on remplace 'GAC' si l'on a précisé le paramètre var lors de la création de l'objet) :GAC:SetRootScheme(rootScheme)

GAC:SetScheme(scheme)

GAC:SetClearOnChange(clearOnChange)

GAC:SetFields(Fields)

GAC:SetSort(field)

GAC:SetStart(start)

GAC:SetCount(count)

GAC:SetImageSiez(imageSize)

GAC:SetIncludeSubItemCount(includeSubItemCount)

Les requêtes

Page 34/109

Page 35: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

On remplace éventuellement 'GAC' par le nom défini par var dans la création de l'objet– GAC:EnsureLoaded() : obtient les données pour la requête configurée seulement si elles n'ont pas déjà

été retrouvées depuis le dernier changement des paramètres de la requête– GAC:Request() : obtient les données sans condition– GAC:PageDown() : affiche la page suivante– GAC:PageUp() : affiche la page précédente– GAC:JumpToLetter(letter) : retrouve la page contenant le premier élément dont le nom commence par la

lettre letter spécifiée– GAC:GoScheme(scheme) : change le noeud racine et retrouve la première page correspondante– GAC:GoSearch(search) : recherche les éléments avec la chaîne search spécifiée

Variables résultantesLe résultat des requêtes sont retournées dans des variables NetRemote nommées MP.var.xxxx, où var est le nom défini par var dans la création de l'objet, et pour certaines on a un index n (qui part de 0 au nombre-1 d'éléments retournés), field est un des champs spécifiés à retourner– MP.var.Total : le nombre maximum d'éléments spécifiés dans la requête (count)– MP.var.Start : l'élément de départ spécifié dans la requête (start)– MP.var.CurrentPage : le numéro de la page courante du résultat de la requête– MP.var.Top : l'index du premier élément du résultat de la requête– MP.var.PageCount : le nombre de pages requises pour retourner l'ensemble du résultat de la requête avec

la valeur courante de "count"– MP.var.BlankFileImage : variable image à utiliser pour un élément simple (fichier) vierge– MP.var.FolderImage : variable image à utiliser pour les répertoires contenant des éléments– MP.var.CanOpenParent : 0 si Level=0, 1 s'il est plus grand– MP.var.Level : 0 est le niveau de départ, 1 est le premier niveau inclus (ex : pistes dans un album), ainsi

de suite– MP.var.LibraryPath : le chemin de la bibiothèque spécifiée dans la requête– MP.var.Items.Length : le nombre d'éléments retournés– MP.var.Items[n].Type : type d'élément, -1=vide, 0=répertoire, 1=élément simple (fichier)– MP.var.Items[n].Image : varaible image contenant la pochette de l'album (sauf si imageSize=N)– MP.var.Items[n].Name : nom de l'élément– MP.var.Items[n].field : les contenus d'un des champs spécifiés– MP.var.Items[n].SubItemCount : le nombre de sous-éléments de l'élément courant (seulement si

includeSubItemCount=1)

Actions– GAC:Action(index, action, param) : réalise une action spécifiée

– index : numéro de l'élément dans l'ensemble des éléments, sur lequel on exécute l'action– action : "ADD", "INSERT", "PLAYNEXT" ou "PLAY"– param : un nombre positif spécifie un index à l'intérieur de l'ensemble des éléments (par défaut =

-1, on utilise le noeud parent)– GAC:ActionAll(action, param) : action sur le noeud parent– GAC:DefaultAction(index) : exécute l'action par défaut, pour un morceau c'est de le jouer, pour un

album, un artist ou un genre, on ouvre son contenu (GAC:OpenChild)

Page 35/109

Page 36: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Navigation– GAC:OpenChild(index, togac) : navigation vers un élément enfant

– index : index de l'élément enfant dans le résultat de la requête– togac : objet GAC pour la navigation d'un élément enfant spécifié dans l'objet GAC courant

– GAC:OpenParent() : navigation vers le parent– GAC:GetChildPath(index) : retourne le chemin de l'élément enfant spécifié– GAC:GetScheme() : retourne le chemin de la navigation en cours de l'objet GAC– GAC:IsRootScheme () : retourne True si le chemin de la navigation en cours est la racine

Information additionnelle– GAC:GetInformation(index, var, includefile) : retourne les informations complémentaires de l'élément

précisé par son index dans le résultat de la requête– index : index de l'élément dans le résultat de la requête– var : le résultat sera dans des variables NetRemote nommées MP.var.field. Le véritable field

dépend des informations disponibles à partir du lecteur sélectionné– includefile : boolean (optionnel)

Afficher et gérer les DVDMediabridge permet également une certaine gestion des DVD

Mise en oeuvre1 – On installe DVD Profiler et Daemon-Tools si on veut lire des images ISO de DVD2 – On entre la liste des DVD dans DVD Profiler3 – On exporte la base de donnée dans DVD Profiler vers <répertoire au choix>\collection.xml4 – Paramétrage de MediaBridge :

Page 36/109

Page 37: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

On précise où trouver le fichier collection.xml ainsi que les images des pochettes des DVD5 – On crée le fichier playdvd.bat qui contient :

"C:\Program Files\DAEMON Tools\daemon.exe" -unmount 0

"C:\Program Files\DAEMON Tools\daemon.exe" -mount 0,%1

Ce fichier batch sert à monter l'image d'un DVD sur le device 0, il sera appelé par MediaBridgePour monter un DVD au format ISO à l'aide de MediaBridge il faut d'abord indiquer à DVD Profiler où se trouve le fichier .iso : on indique son chemin dans la zone Notes de l'onglet Informations personnelles sous la forme :

[filepath]c:\dvd\matrix.iso[/filepath]

On peut bien entendu utiliser tout format reconnu par Daemon ToolsEnsuite on utilise les mêmes fonctions que pour l'audio

Quand un DVD est sélectionné, les variables suivantes sont disponibles à partir de la fonction GetInformation(), la variable var étant définie dans la fonction :– MP.var.AlbumCover : pochette du DVD– MP.var.Cast : normalement les acteurs– MP.var.Duration : durée du DVD– MP.var.Genre : genre du DVD– MP.var.ParentalRating : niveau parental– MP.var.Rating : côte du DVD– MP.var.Studio : studio de production– MP.var.Synopsis : résumé– MP.var.Year : année de sortie– MP.var.Collection.Number : numéro du DVD– MP.var.Collection.Type : type de DVD (voir DVD Profiler)

Page 37/109

Page 38: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Gestion de l'aideL'aide peut être affiché à tout moment par le bouton [HELP] du bandeau supérieur : il affiche alors le menu d'aide en appelant la fonction OpenHelpMenu()

On choisit alors le type d'aide que l'on désire :– [AIDE GENERALE] : affiche une aide sur les éléments communs à toutes les pages, Le bouton appelle la

fonction OpenGlobalHelp()– [AIDE SUR LA PAGE AFFICHEE] : affiche une aide sur la page en cours, Le bouton appelle la fonction

OpenHelp()– [PANNEAU DE VOLUME] : affiche une aide sur les éléments liés à la gestion du volume– [PANNEAU DE CONTROLES DVD] : affiche une aide sur les éléments de contrôle des DVD– [BOUTONS MATERIELS] : affiche une aide sur l'utilisation des boutons matériels de la télécommande– [A PROPOS] : affiche des infos sur la télécommande

Page 38/109

Page 39: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Gestion de l'indicateur de connexion avec le PCCet indicateur peut être rouge ou vert suivant que la télécommande est non connectée ou connectée avec le PC. C'est une frame à deux états d'affichage :– Etat Default : affichage rouge (non connecté)– Etat State 1 : suivant que la règle définie par Rule est vraie ou fausse, la frame est affichée en vert

(connecté)Dans la fenêtre Properties de la frame on a :

Rule : Girder.LinkActive is 1

Girder.LinkActive est une variable interne à NetRemote définie par le plugin Girder, et qui passe à la valeur 1 quand la liaison entre NetRemote sur l'umpc et Girder sur le PC est établie

Gestion du volume audio

Le réglage audio est commun à toutes les activités, il doit pouvoir être accessible sur toutes les pages quand une activité est en cours. Je vais expliquer ici l'implémentation du curseur et du bouton [MUTE] qui sont liés puisqu'ils agissent sur le volume audioOn définit d'abord le comportement de chaque élément :– Bouton [MUTE] : agit comme un commutateur

– S'il n'est pas actif, et qu'on l'active, met le volume au minimum, le curseur se positonne au bas de son guide

– S'il est actif, on revient progressivement au volume que l'on avait au moment de son activation, le curseur revient progressivement à sa position

– Bouton [CURSEUR] : quand on le déplace, agit sur le volume, la valeur de celui-ci s'affiche en temps réel sur le curseur

Page 39/109

Page 40: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

– Bouton [UP] : augmente le volume d'une unité, le curseur se déplace en conséquence– Bouton [DOWN] : diminue le volume d'une unité, le curseur se déplace en conséquence– Bouton [OPTIONS] : affiche un panneau qui permet de modifier certains paramètres audio, ceci est

fonction de l'activité en cours

On peut agir sur le volume (donc sur la modification de la variable NR.Volume) de quatre façons :

– Bouton [UP] : appelle l'action NRBasic:Lua Event qui contient le code lua suivant :

function (button, ctr)

SetVol(button, ctr);

end;

Le comportement est le suivant : quand le bouton est pressé la fonction est appelée avec ctr = 0, si le bouton est pressé en continu la fonction est appelée au rythme de répétition défini par le système avec ctr qui s'incrémente de 1 à chaque exécution, il y a appel de la fonction SetVol() qui augmente d'une unité la variable NR.Volume jusqu'à atteindre la valeur maximale

– Bouton [DOWN] : appelle l'action NRBasic:Lua Event qui contient le code lua suivant :

function (button, ctr)

SetVol(button, ctr);

end;

Le comportement est similaire à celui du bouton [UP], hormis qu'il diminue d'une unité la variable NR.Volume jusqu'à atteindre la valeur minimale

– Bouton [CURSEUR] : c'est un bouton particulier, il doit d'abord être défini dans la frame qui constitue le guide du curseur (F.volumeSlider), cette frame va constituer les limites de déplacement du curseur, dans Properties du bouton, dans l'onglet Position le paramètre Component est positionné sur NRBasic:Slider Thumb Component, on clique alors sur Set Properties, dans VAR on indique NR.Volume et on renseigne les autres paramètres aux valeurs adéquates. Pour afficher en temps réel la valeur du volume dans le curseur il suffit de lui donner comme nom {NR.Volume}

Page 40/109

Page 41: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

– [MUTE] : il appelle l'action NRBasic:Execute lua code (OnRelease) qui appelle la fonction SwitchMute()

Page 41/109

Page 42: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Annexes

Fichier codes_IR.lua

Ce fichier définit les codes IR des différents appareils

Pour cela on a une table G_IR qui est structurée comme suit :– Pour chaque appareil on a :

– Le nom de l'appareil– le nombre de codes IR dans la table– pour chaque code IR on a:

– le nom du code IR– le code IR au format GC-100

G_IR = {

"TV",28

,"0","36000,1,1,96,31,16,32,16,16,16,16,48,46,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,725"

,"1","37000,1,1,96,32,16,31,16,15,16,15,16,31,32,16,16,15,16,15,16,15,16,15,16,15,16,15,16,15,16,15,16,15,16,15,16,15,16,15,16,15,16,15,32,732"

...

,"VP",16

,"POWER","38000,1,1,343,169,22,63,22,63,22,20,22,20,22,63,22,63,22,20,22,20,22,20,22,20,22,20,22,20,22,20,22,20,22,20,22,20,22,20,22,20,22,20,22,20,22,20,22,20,22,20,22,20,22,63,22,63,22,63,22,63,22,63,22,63,22,63,22,63,22,765"

,"MENU","38000,1,1,343,169,22,63,22,63,22,20,22,20,22,63,22,63,22,20,22,20,22,20,22,20,22,20,22,20,22,20,22,20,22,20,22,20,22,20,22,20,22,63,22,63,22,63,22,20,22,20,22,20,22,63,22,63,22,20,22,20,22,20,22,63,22,63,22,63,22,765"

...

,"X10",16

,"1","39000,1,1,165,150,46,254,142,150,142,150,46,254,46,254,142,150,46,254,46,254,142,150,142,150,450,150,165,150,46,254,142,150,142,150,46,254,46,254,142,150,46,254,46,254,142,150,142,150,450,3600"

,"2","39000,1,1,165,150,142,150,142,150,142,150,46,254,46,254,46,254,46,254,46,254,142,150,142,150,450,150,165,150,142,150,142,150,142,150,46,254,46,254,46,254,46,254,46,254,142,150,142,150,450,3600"

...

,"DIM","39000,1,1,165,150,46,254,142,150,46,254,46,254,142,150,142,150,46,254,142,150,142,150,46,254,450,3600"

};

GetIRCode(device, cmd)

--[[

retourne le code IR d'une commande

device : appareil dont on veut le code IR

cmd : commande

]]

function GetIRCode(device, cmd)

i = 1;

Page 42/109

Page 43: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

repeat

if (device == G_IR[i]) then

-- C'est l'appareil que l'on veut commander

-- nombre de codes

nbMax = G_IR[i+1];

for j = 1, nbMax, 1 do

if (cmd == G_IR[i + 2 + 2 * (j - 1)]) then

-- c'est la commande

-- retourne le code IR

return G_IR[i + 3 + 2 * (j - 1)];

end;

end;

else

-- appareil suivant

i = i + 2 * G_IR[i+1] + 2;

end;

until (false);

end;

Page 43/109

Page 44: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Fichier gc100.luaCe fichier contient les fonctions liées à l'envoi de données au Global Caché GC-100

Le code d'inirialisation du GC-100

-- Initialise le GC-100

G_GC100_IP = "172.16.0.3"; -- adresse IP du GC-100

G_GC100_PortIR = 4998; -- port utilisé par le GC-100 pour l'IR

G_sock = socket.tcp(); -- initialise la connexion

G_sock:connect(G_GC100_IP, G_GC100_PortIR); -- connexion au GC-100

G_GC100_ID = 0;

La table qui définit les ports IR de sorties où sont connectés les différents appareils

G_IRPort = {7

,"TV", "4:1"

,"VP", "4:1"

,"SAT", "4:1"

,"BLURAY", "4:1"

,"PREAMP", "4:1"

,"SWITCH", "4:1"

,"X10", "4:1"

};

GetIRPort(device)

--[[

retourne l'entête de la chaîne qui sera envoyée au GC-100 pour un appareil donné

device : appareil à commander

cette entête est constituée comme suit

"sendir,<port>,<id>,"

où <port> est récupéré de la table précédente et <id> est un compteur généré à partir de G_GC100_ID

]]

function GetIRPort(device)

nbMax = G_IRPort[1];

for i = 1, nbMax, 1 do

if (device == G_IRPort[2 + 2 * (i - 1)]) then

port = G_IRPort[3 + 2 * (i - 1)];

end;

end;

-- Identifieur pour la prochaine commande

G_GC100_ID = G_GC100_ID + 1;

-- On construit l'entête de la chaîne qui sera complétée avec le code IR

port = "sendir," .. port .. "," .. tostring(G_GC100_ID) .. ",";

return port;

end;

Page 44/109

Page 45: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

SendIRToGC100(IRCode)

-- envoi d'un code IR au GC-100

function SendIRToGC100(IRCode)

-- Pour animer le Wi-Fi

SendEvent("SEND_IR") -- fonction définie dans global.lua

G_sock:send(IRCode);

end;

Page 45/109

Page 46: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Fichier x10.lua

Ce fichier définit les fonctions liées à la gestion des appareils commandés par les prises X10

La table G_X10 contient les paramètres X10 de chaque appareil, elle est structurée comme suit :– Le premier élément contient le nombre d'appareils– Chaque paramètre X10 est définit comme suit :

– Le nom de l'appareil– Le code maison de l'appareil : A, B, C ou D– Le numéro de l'appareil : de 1 à 8– Le nom de la variable NetRemote d'état de l'appareil

GetX10House(device)

--[[

retourne le code maison d'un appareil

device : nom de l'appareil

]]

function GetX10House(device)

nbMax = G_X10[1];

for i = 1, nbMax, 1 do

if (device == G_X10[2 + 4 * (i - 1)]) then

return G_X10[3 + 4 * (i - 1)];

end;

end;

end;

GetX10Number(device)

--[[

retourne le numéro d'un appareil

device : nom de l'appareil

]]

function GetX10Number(device)

nbMax = G_X10[1];

for i = 1, nbMax, 1 do

if (device == G_X10[2 + 4 * (i - 1)]) then

return G_X10[4 + 4 * (i - 1)];

end;

end;

end;

Page 46/109

Page 47: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

GetX10Device(house, num)

--[[

retourne l'appareil spécifié par son code maison et son numéro

house : code maison de l'appareil

num : numéro de l'appareil

]]

function GetX10Device(house, num)

nbMax = G_X10[1];

for i = 1, nbMax, 1 do

if ((house == G_X10[3 + 4 * (i - 1)]) and (num == G_X10[4 + 4 * (i - 1)])) then

return G_X10[2 + 4 * (i - 1)];

end;

end;

end;

GetX10StatusVar(device)

--[[

retourne la variable NetRemote associée à l'appareil X10

device : nom de l'appareil

]]

function GetX10StatusVar(device)

nbMax = G_X10[1];

for i = 1, nbMax, 1 do

if (device == G_X10[2 + 4 * (i - 1)]) then

return G_X10[5 + 4 * (i - 1)];

end;

end;

end;

SaveX10(param)

-- table de sauvegarde des paramètres X10

G_saveX10 = {};

--[[

Sauve le paramètre X10

param : paramètre à sauvegarder

]]

function SaveX10(param)

if ((string.len(param) == 1) and param >= "A" and param <= "D") then

-- sauvegarde du code maison

G_saveX10["x10House"] = param;

elseif (param >= "1" and param <= "8") then

-- sauvegarde du numéro

G_saveX10["x10Num"] = param;

else

-- sauvegarde de la commande

G_saveX10["x10cmd"] = param;

end;

if ((param == "ON") or (param == "OFF") or (param == "BRIGHT") or (param == "DIM")) then

-- Met à jour les indicateurs d'état des appareils

Page 47/109

Page 48: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

UpdateX10Status();

end;

end;

UpdateX10Status()

-- Met à jour les indicateurs d'état des appareils

function UpdateX10Status()

-- appareil à mettre à jour

device = GetX10Device (G_saveX10["x10House"], G_saveX10["x10Num"]);

if ((G_saveX10["x10cmd"] == "ON") or (G_saveX10["x10cmd"] == "BRIGHT")) then

-- l'appareil est allumé

NetRemote.SetVariable(GetX10StatusVar(device), '1');

else

-- l'appareil est éteint

NetRemote.SetVariable(GetX10StatusVar(device), '0');

end;

end;

Page 48/109

Page 49: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Ficher telcos.lua

Ce fichier définit les fonctions liées aux télécommandes des appareils

On a une table qui définit pour chaque appareil son état

--[[

Table des variables d'état des appareils

- Premier élément : nombre d'appareils

- Pour chaque appareil on a :

- Nom de l'appareil

- Variable d'état

]]

G_DeviceStatus = {7

,"TV","NR.TVPowerON"

,"VP","NR.VPPowerON"

,"SAT","NR.SATPowerON"

,"BLURAY","NR.BRPowerON"

,"PREAMP","NR.PREAMPPowerON"

,"SWITCH","NR.SWITCHPowerON"

,"AMPLIS","NR.AMPLISPowerON"

};

ResetAllPowerStatus()

-- Initialise les variables d'état à OFF (0)

function ResetAllPowerStatus()

nbMax = G_DeviceStatus[1];

for i = 1, nbMax, 1 do

NetRemote.SetVariable(G_DeviceStatus[3 + 2 * (i - 1)], "0");

end;

end;

GetPowerStatusVar(device)

--[[

retourne la variable NetRemote associée à l'appareil

device : nom de l'appareil

]]

function GetPowerStatusVar(device)

nbMax = G_DeviceStatus[1];

for i = 1, nbMax, 1 do

if (device == G_DeviceStatus[2 + 2 * (i - 1)]) then

return G_DeviceStatus[3 + 2 * (i - 1)];

end;

end;

end;

Page 49/109

Page 50: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

IsPowerON(device)

-- retourne l'état de la variable d'état d'un appareil

function IsPowerON(device)

return (NetRemote.GetVariable(GetPowerStatusVar(device)) == "1");

end;

SetStatusPowerON(device)

function SetStatusPowerON(device)

NetRemote.SetVariable(GetPowerStatusVar(device), '1');

end;

SetStatusPowerOFF(device)

function SetStatusPowerOFF(device)

NetRemote.SetVariable(GetPowerStatusVar(device), '0');

end;

SelectTelco(telco)

-- Indique la télécommande affichée

NetRemote.SetVariable("NR.telco", "");

-- Sélectionne la télécommande

function SelectTelco(telco)

NetRemote.SetVariable("NR.telco", telco);

end;

Telco(telcoName, codeToSend)

--[[

télécommande générale

telcoName : nom de la télécommande

codeToSend : commande à envoyer

Pour les Amplis, elle se fait par l'intermédiaire d'un module X10 et se résume à ON ou OFF

]]

-- Pour le POWER de certains appareils on va alterner entre POWERON et POWEROFF

G_IRTVPower = "";

G_IRSATPower = "";

function Telco(telcoName, codeToSend)

if (telcoName == "AMPLIS") then

-- envoi du code maison des amplis

SendIR("X10", GetX10House("AMPLIS"));

-- envoi numéro des amplis

SendIR("X10", GetX10Number("AMPLIS"));

if (not IsPowerON("AMPLIS")) then

-- allume les amplis

Page 50/109

Page 51: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

SetStatusPowerON("AMPLIS");

telcoName = "X10";

codeToSend = "ON";

else

-- éteint les amplis

SetStatusPowerOFF("AMPLIS");

telcoName = "X10";

codeToSend = "OFF";

end;

elseif (telcoName == "TV") then

if (codeToSend == "POWER") then

-- On alterne entre POWERON, POWEROFF

if (G_IRTVPower == "POWERON") then

codeToSend = "POWEROFF";

G_IRTVPower = "POWEROFF";

else

codeToSend = "POWERON";

G_IRTVPower = "POWERON";

end;

-- allume/éteint la TV

SwitchZeroAndOne(GetPowerStatusVar("TV"));

end;

elseif (telcoName == "SAT") then

if (codeToSend == "POWER") then

-- On alterne entre POWERON, POWEROFF

if (G_IRSATPower == "POWERON") then

codeToSend = "POWEROFF";

G_IRSATPower = "POWEROFF";

else

codeToSend = "POWERON";

G_IRSATPower = "POWERON";

end;

-- allume/éteint le terminal satellite

SwitchZeroAndOne(GetPowerStatusVar("SAT"));

end;

elseif (telcoName == "PREAMP") then

if (codeToSend == "POWER") then

-- Allume le préampli

SetStatusPowerON("PREAMP");

elseif (codeToSend == "STANDBY") then

-- Eteint le préampli

SetStatusPowerOFF("PREAMP");

end;

elseif ((telcoName == "VP") or (telcoName == "BLURAY") or (telcoName == "SWITCH")) then

if (codeToSend == "POWER") then

-- allume/éteint le VP

SwitchZeroAndOne(GetPowerStatusVar(telcoName));

end;

end;

SendIR(telcoName, codeToSend);

end;

Page 51/109

Page 52: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

SendIR(device, codeToSend)

--[[

Envoi d'un code IR

device : appareil à commander

codeToSend : chaîne au format GC-100 correspondant au code IR à envoyer

]]

function SendIR(device, codeToSend)

-- positionne le port utilisé par le GC-100 pour l'appareil

IRCode = GetIRPort(device);

if (device == "X10") then

SaveX10(codeToSend);

end;

IRCode = IRCode .. GetIRCode(device, codeToSend) .. "\r";

SendIRToGC100(IRCode);

end;

Page 52/109

Page 53: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Fichier messages.lua

Ce fichier définit les fonctions qui gérent l'affichage des messages et des panneaux d'aide

-- Numéro du message à afficher

NetRemote.SetVariable('NR.F.msg', 0);

G_msg = 0;

IsMsgDisplayed()

-- Indique si un message est affiché

function IsMsgDisplayed()

return (tonumber(NetRemote.GetVariable('NR.F.msg')) > 0);

end;

OpenMsg(msgNum)

-- Affiche un message

function OpenMsg(msgNum)

if (not IsMsgDisplayed() and (not IsObjectDisplayed())) then

-- Désactive l'affichage des zones qui défilent

ScrollZoneOff();

-- Affiche le message

NetRemote.SetVariable('NR.F.msg', msgNum);

end;

end;

CloseMsg()

-- Ferme un message affiché

function CloseMsg()

-- Aucun message affiché

NetRemote.SetVariable('NR.F.msg', 0);

-- Réactive l'affichage des zones qui défilent

ScrollZoneOn();

end;

DisplayHelp(helpNum)

-- Affiche la page d'aide indiquée

function DisplayHelp(helpNum)

-- Pour interdire tout autre démarrage d'activité

InitProcess();

OpenMsg(helpNum);

end;

Page 53/109

Page 54: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

OpenHelpMenu()

-- Ouvre le menu d'affichage des aides

function OpenHelpMenu()

-- On affiche l'aide seulement si aucun démarrage d'activité n'est en cours

-- et si aucun message n'est affiché et si aucun élément n'est affiché

if (IsProcessReady() and (not IsMsgDisplayed()) and (not IsObjectDisplayed())) then

-- Ferme toute page d'aide ou de message affichée

DisplayHelp("1001");

end;

end;

OpenGlobalHelp()

-- Ouvre l'aide globale

function OpenGlobalHelp()

DisplayHelp("1003");

end;

OpenHelp()

-- Ouvre une page d'aide

function OpenHelp()

-- On affiche l'aide seulement si aucun démarrage d'activité n'est en cours

if (IsProcessReady()) then

-- Page affichée ?

local device = NetRemote.GetVariable('NR.DeviceName');

local panel = NetRemote.GetVariable('NR.PanelName');

if (device == 'HOME') then

if (panel == 'P.Accueil') then

DisplayHelp("1002");

end;

elseif (device == 'TV') then

if (panel == 'P.Main') then

DisplayHelp("1010");

end;

elseif (device == 'SAT') then

if (panel == 'P.Main') then

DisplayHelp("1020");

end;

elseif (device == 'BLURAY') then

if (panel == 'P.Library') then

DisplayHelp("1030");

elseif (panel == 'P.PlayingNow') then

DisplayHelp("1031");

end;

end;

end;

end;

Page 54/109

Page 55: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

OpenVolumeHelp()

-- Ouvre la page d'aide du volume

function OpenVolumeHelp()

end;

OpenControlDVDHelp()

-- Ouvre la page d'aide des contrôles de DVD

function OpenControlDVDHelp()

end;

OpenHardkeysHelp()

-- Ouvre la page d'aide Des boutons matériels de la télécommande

function OpenHardkeysHelp()

end;

CloseHelp()

-- Ferme la page d'aide en cours

function CloseHelp()

CloseMsg();

SetProcessReady();

end;

Un sous-message est un message affiché à l'intérieur d'un message

OpenSubMsg(msgNum)

-- affiche un sous-message

function OpenSubMsg(msgNum)

NetRemote.SetVariable('NR.F.submsg', msgNum);

end;

CloseSubMsg()

-- Ferme un sous-message affiché

function CloseSubMsg()

-- Aucun message affiché

NetRemote.SetVariable('NR.F.submsg', 0);

end;

Page 55/109

Page 56: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Fichier virtual_keyboards.lua

Ce fichier définit les fonctions liées aux claviers virtuels. Les claviers virtuels permettent de saisir une chaîne de caractères, une fois la chaîne validée elle est traitée par la fonction ProcessString(theString) dépendante de l'application qui l'utilise, elle doit être définie dans le fichier lua associé à l'application : elle prend comme argument la chaîne retournée par le clavier, d'autre part la variable NR.processUsingKeyboard contient le nom de l'activité qui utilise le clavier, elle est renseignée au moment de l'appel de la fonction OpenKeyboard(process)

InitKeyboard()

--Initialise les touches des claviers virtuels

function InitKeyboard()

local i = 0;

while(i < 36) do

if (i < 26) then

NetRemote.SetVariable('MP.Keyboard['..i..'].Value',string.char(65+i));

else

NetRemote.SetVariable('MP.Keyboard['..i..'].Value',string.char(48+i-26));

end;

i = i+1;

end;

end;

OpenKeyboard(process)

-- Contient le nom de l'activité qui utilise le clavier

NetRemote.SetVariable("NR.processUsingKeyboard", "");

-- Contient la chaîne saisie au clavier

NetRemote.SetVariable('MP.SearchString', '');

-- Affiche le clavier

-- process : chaîne nommant l'activité utilisant le clavier

function OpenKeyboard(process)

-- Sauvegarde l'activité qui utilise le clavier

NetRemote.SetVariable("NR.processUsingKeyboard", process);

-- Initialise la chaîne

NetRemote.SetVariable('MP.SearchString', "");

-- Affiche le clavier

OpenMsg("100");

end;

UpdateStringInput(charInput)

-- Met à jour la chaîne de saisie

-- charInput : caractère à ajouter à la chaîne en cours

function UpdateStringInput(charInput)

-- Contenu courant de la chaîne

currString = NetRemote.GetVariable('MP.SearchString');

-- On ajoute le caractère saisi

Page 56/109

Page 57: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

newString = currString .. charInput;

-- Maj de la chaîne

NetRemote.SetVariable('MP.SearchString', newString);

-- Traitement de la chaîne

ProcessString(newString);

end;

SupprLastChar()

-- On supprime le dernier caractère

function SupprLastChar()

-- Contenu courant de la chaîne

currString = NetRemote.GetVariable('MP.SearchString');

-- On supprime le dernier caractère

newString = string.sub(currString,1,string.len(currString)-1);

-- Maj de la chaîne

NetRemote.SetVariable('MP.SearchString', newString);

-- Traitement de la chaîne

ProcessString(newString);

end;

StringInputOk()

-- Valide la saisie

function StringInputOk()

-- Contenu de la chaîne

currString = NetRemote.GetVariable('MP.SearchString');

-- Traitement de la chaîne : la fonction ProcessString(currString) doit être définie

-- dans le module principal de l'application

ProcessString(currString);

-- Fermeture du clavier

CloseMsg();

end;

Page 57/109

Page 58: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Fichier process.lua

Ce fichier définit les fonctions liées à la gestion des processus

Dans son sens le plus général un processus est tout type d'activité qui nécessiteun certain temps pour s'initialiser. On va utiliser ces fonctions par exemple pour éviter d'ouvrir un message alors qu'une activité est en cours d'initialisation.Certaines activités sur le PC nécessitent l'initialisation et la configuration d'applications suivant le type d'activité, il est alors nécessaire de mettre en attente la télécommande afin de ne pas afficher immédiatement une page dont on utiliserait les boutons dont les évènements ne seraient pas traités par le PC, celui-ci n'étant pas prêtPour cela il faut donc que le PC (via Girder) avertisse NetRemote que l'activité sélectionnée est prête à recevoir les évènements correspondant : Girder dispose de l'action NetRemote:SetVariable pour laquelle on précise le nom d'une variable définie dans NetRemote et la valeur à donner à cette variableJ'ai définie dans le script lua la variable NR.processReady qui prend 2 valeurs :– 0 : activité non prête– 1 : activité prête

Pour cela toute fonction qui initialise une activité devra être structurée comme suit :

function ftc_name()

if (IsProcessReady()) then

InitProcess();

le code propre à la fonction

end;

end;

La dernière ligne de code correspondant à la fin de l'initialisation de l'activité devra être l'appel à la fonction FinishInitProcess(), soit dans fct_name, soit dans une fonction appelée par fct_name

-- Utilisée pour la barre de progression

G_waitTimer = nil;

SetProcessNotReady()

-- Indique si un process est prêt

NetRemote.SetVariable('NR.processReady', '1');

-- Précise que le process n'est pas prêt

function SetProcessNotReady()

NetRemote.SetVariable('NR.processReady', "0");

end;

SetProcessReady()

Page 58/109

Page 59: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

-- Précise que le process est prêt

function SetProcessReady()

NetRemote.SetVariable('NR.processReady', "1");

end;

IsProcessReady()

-- Retourne true quand le process est prêt

function IsProcessReady()

return (NetRemote.GetVariable('NR.processReady') == "1")

end;

InitProcess()

-- Initialise le démarrage d'un process

function InitProcess()

SetProcessNotReady();

end;

FinishInitProcess()

-- Termine l'initialisation d'un process

function FinishInitProcess()

-- Ferme tout message affiché

CloseMsg();

-- Process terminé

NetRemote.SetVariable('NR.F.progressWait', 0);

G_waitTimer:KillTimer();

SetProcessReady();

end;

GetProcessName()Retourne le nom de l'activité en cours

-- Nom de l'activité en cours

NetRemote.SetVariable('NR.processRunning', "");

-- Retourne le nom du process en cours

function GetProcessName()

return (NetRemote.GetVariable("NR.processRunning"));

end;

SetProcessName(process)Positionne le nom du process

-- Positionne le nom du process en cours

function SetProcessName(process)

Page 59/109

Page 60: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

NetRemote.SetVariable("NR.processRunning", process);

end;

Animation de la barre de progression

Anime une barre de progression d'attente de fin d'initialisation d'une activité.

AnimeProgressBar()

--[[

Anime la barre de progression d'attente de fin d'initialisation

d'une activité.

L'application doit définir une fonction appelée CallFunction() dont la

structure est comme suit :

function CallFunction()

if (IsProcessReady()) then

functionID = NetRemote.GetVariable("NR.functionID");

if (functionID == "FCT_ID1") then

function1();

elseif (functionID == "FCT_ID2") then

function2();

...

end;

end;

end;

La variable NR.functionID contient une chaîne de caractères qui représente

un identifiant de fonction FCT_ID1, FCT_ID2, ...

Ceci permet d'appeler une fonction une fois l'initialisation terminée

]]

-- Pour l'affichage de la barre de progression

NetRemote.SetVariable('NR.F.progressWait', 0);

function AnimeProgressBar()

-- Affiche la fenêtre de la barre de progression

local waitProgress = NetRemote.GetVariable('NR.F.progressWait');

if (IsProcessReady()) then

-- L'activité est prête

FinishInitProcess();

-- Appel de la fonction indiquée par NR.functionID

-- Elle doit être définie dans l'application principale

CallFunction();

elseif (waitProgress == "10") then

-- On recommence l'affichage de la barre à partir du début

NetRemote.SetVariable('NR.F.progressWait', 0);

else

-- On avance la barre de progression d'un cran

NetRemote.SetVariable('NR.F.progressWait', waitProgress + 1);

end;

end;

Son utilisation est la suivante : quand l'application démarre une activité elle appelle une fonction qui réalise

Page 60/109

Page 61: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

cette activité, cette fonction doit être structurée comme suit :

function ProcessName([param], ...)

... code de la fonction

NetRemote.SetVariable("NR.functionID", "FCT_ID");

-- Affiche la barre d'attente

G_waitTimer = NetRemote.SetTimer(500, AnimeProgressBar);

end;

Cette fonction peut ou non avoir des paramètres [param]C'est à partir de cette fonction que AnimeProgressBar() est appelée tous les 500ms grace au timer G_waitTimer. Cet appel se terminera lorsque la variable NR.processReady sera mise à 1 (IsProcessReady() retourne true) par un événement extérieur, ici par Girder sur le PC.La chaîne "FCT_ID" est un identifiant qui va permettre d'appeler une fonction quand l'activité prendra fin. Pour cela l'application doit définir une fonction appelée CallFunction() dont la structure est la suivante :

function CallFunction()

if (IsProcessReady()) then

functionID = NetRemote.GetVariable("NR.functionID");

if (functionID == "FCT_ID1") then

function1();

elseif (functionID == "FCT_ID2") then

function2();

...

end;

end;

end;

Cette fonction est appelée par la fonction AnimeProgressBar() quand l'activité en cours a signalé qu'elle a terminé. La variable NR.functionID contient une chaîne de caractères qui représente un identifiant de fonction FCT_ID1, FCT_ID2, ..., cet identifiant permet d'appeler une fonction une fois l'activité terminée

La barre de progression est constituée de 10 frames F.wait1 jusqu'à F.wait10 :

– F.wait1 :

– F.wait2 :

– F.wait3 : – ...

– F.wait9 :

– F.wait10 : Ces frames sont définies dans Templates:masterTemplate Overlay Chaque frame a deux états d'affichage :– Etat Default : la frame n'est pas visible– Etat State 1 : suivant que la règle définie par Rule est vraie ou fausse, la frame est visible ou cachéeAinsi pour la frame F.wait1, dans la fenêtre Properties de la frame on a :

Page 61/109

Page 62: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Rule : NR.F.progressWait is 1

La variable NR.F.progressWait est définie dans le script lua et peut prendre les valeurs suivantes :1 : la frame F.wait1 est affichée2 : la frame F.wait2 est affichée3 : la frame F.wait3 est affichée...9 : la frame F.wait9 est affichée10 : la frame F.wait10 est affichéeAinsi on voit que dans la fonction AnimeProgressBar(), chaque fois que celle-ci est appelée par le Timer, et que la function IsProcessReady() retourne false indiquant que l'activité sur le PC n'est pas encore prête, la variable NR.F.progressWait est incrémentée de 1 ce qui affiche la frame suivante, et ceci jusqu'à atteindre la valeur 10, la variable est alors remise à 0 pour réafficher la barre à partir du début. Quand l'activité sur le PC a fini de s'initialiser, Girder positionne la variable NR.processReady à 1, l'affichage de la barre de progression se termine alors et la fonction CallFunction() est appelée

WaitDelayFinish()

--[[

Fonction appelée jusqu'à ce que le delai indiqué par

G_waitDelay soit atteint

Pour cela on appelle cette fonction comme suit :

InitProcess();

G_waitDelay = n; n représente un multiple de 100ms

waitDelay = NetRemote.SetTimer(100, WaitDelayFinish);

]]

G_waitDelay = 0;

function WaitDelayFinish(waitDelay)

G_waitDelay = G_waitDelay - 1;

if (G_waitDelay == 0) then

waitDelay:KillTimer();

SetProcessReady();

end;

end;

WaitProcessReady(submsg, delay)

-- Attend un temps fixé qu'une activité soit prête

-- submsg : sous-message associé

-- delai d'attente pour l'allumage en secondes

function WaitProcessReady(submsg, delay)

InitProcess();

OpenSubMsg(submsg);

-- Affiche la barre de progression

G_waitTimer = NetRemote.SetTimer(200, AnimeProgressBar);

-- Délai d'attente de l'allumage de l'appareil en ms

Page 62/109

Page 63: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

G_waitDelay = 10 * delay;

waitDelay = NetRemote.SetTimer(100, WaitDelayFinish);

end;

Page 63/109

Page 64: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Fichier wifi.lua

Ce fichier définit les fonctions liées au Wi-Fi

WifiON()

-- Pour activer le WiFi

function WifiON()

local network = NetRemote.GetNetwork();

network:SetWirelessPower(true);

end

WifiOFF()

-- Pour désactiver le WiFi

function WifiOFF()

local network = NetRemote.GetNetwork();

network:SetWirelessPower(false);

end;

Gestion de l'icône animé Wi-Fi

On anime l'icône Wi-Fi à chaque envoi de commandes vers un appareil ou vers le PC

AnimeWifi (wifiTimer)

-- Pour l'affichage de l'animation de l'icône Wi-Fi

NetRemote.SetVariable('NR.F.wifi', 0);

--[[--------------------------

Gestion de l'icône du Wi-Fi

Pour animer l'cône Wi-Fi on utilise 5 images représentant l'animation

de l'icône, qui s'affiche en fonction de la valeur de la variable

NR.F.wifi. La fonction qui réalise cette animation AnimeWifi() est appelée

par l'intermédiaire d'un timer

------------------------------]]

-- Anime l'icône Wi-Fi

function AnimeWifi (wifiTimer)

local wifi = NetRemote.GetVariable('NR.F.wifi');

if (wifi == "5") then

NetRemote.SetVariable('NR.F.wifi', 0);

wifiTimer:KillTimer();

else

NetRemote.SetVariable('NR.F.wifi', wifi + 1);

end;

end;

Page 64/109

Page 65: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Pour animer l'icône il suffit d'insérer le code suivant :

wifiTimer = NetRemote.SetTimer(50, AnimeWifi);

Quand un message est envoyé , l'icône Wi-Fi est animé pour visualiser l'activité Wi-Fi.Pour réaliser cette animation, j'ai créé 5 Frames ( F.wifi1, ..., F.wifi4, F.wifi5) placées au même endroit qui vont réaliser l'animation :

Chaque frame possède deux états d'affichage :– Etat Default : la frame n'est pas affichée– Etat State 1 : suivant que la règle définie par Rule est vraie ou fausse, la frame est visible ou cachéeAinsi pour la frame F.wifi0, dans la fenêtre Properties de la frame on a :

Rule : NR.F.wifi is 0

La variable NR.F.wifi est définie dans le script lua et peut prendre les valeurs suivantes :0 : la frame F.wifi1 est affichée1 : la frame F.wifi2 est affichée2 : la frame F.wifi3 est affichée3 : la frame F.wifi4 est affichée4 : la frame F.wifi5 est affichéeElle est initialisée à 0 au démarrage de la télécommande pour affiche la frame F.wifi1 (pas de message envoyé)

Chaque fois que la fonction AnimeWifi est appelée par le timer, la variable NR.F.wifi est incrémentée de 1, ce qui affiche la frame suivante et cela jusqu'à l'affichage successif des 5 frames, où la variable est remise à 0.Pourquoi ne pas utiliser simplement l'action Delay associée à l'action NRBasic:Set variable to value pour réaliser cette animation ? Parce que tant que NetRemote exécute sa liste d'actions il ne redessine pas son interface, ceci ayant lieu quand ces actions sont terminées. Le passage par la fonction NetRemote.SetTimer permet de sortir de la liste (par l'intermédiaire de la fonction AnimeWifi()) et donc de redessiner cette interface

Page 65/109

Page 66: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Fichier global.luaCe fichier contient les fonctions lua générales utilisées pour construire la logique de la télécommande. Ce sont des fonctions relativement indépendante de l'application principale

SwitchZeroAndOne(var)

-- permute la valeur d'une variable NR entre 1 et 0

function SwitchZeroAndOne(var)

if (NetRemote.GetVariable(var) == "0") then

NetRemote.SetVariable(var, '1');

else

NetRemote.SetVariable(var, '0');

end;

end;

Les trois fonctions suivantes gèrent la présence d'un élément par dessus une page, comme par exemple le navigateur de menus.Utilisation : avant d'afficher l'élément on appelle la fonction SetObjectDisplayed(), une fois l'élément éffacé on appelle la fonction SetObjectNotDisplayed(). La fonction IsObjectDisplayed() permet de savoir si un élément est affiché

IsObjectDisplayed()

-- Variable générique positionnée à 1 si un élément est affiché par dessus la page en cours

-- Un élément est par exemple le navigateur de menus

NetRemote.SetVariable("NR.objectDisplayed", "0");

-- Indique si un élément est affiché

function IsObjectDisplayed()

return (tonumber(NetRemote.GetVariable("NR.objectDisplayed")) == 1);

end;

SetObjectDisplayed()

-- Indique un élément affiché

function SetObjectDisplayed()

NetRemote.SetVariable("NR.objectDisplayed", "1");

end;

SetObjectNotDisplayed()

-- Indique aucun élément affiché

function SetObjectNotDisplayed()

NetRemote.SetVariable("NR.objectDisplayed", "0");

end;

Page 66/109

Page 67: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

GoToPage()

-- Affiche la page précisée dans les variables NR.nextDevice et NR.nextPage

-- Groupe de la page à afficher

NetRemote.SetVariable('NR.nextDevice', "");

-- Page à afficher

NetRemote.SetVariable('NR.nextPage', "");

function GoToPage()

device = NetRemote.GetVariable('NR.nextDevice');

page = NetRemote.GetVariable('NR.nextPage');

if (device == "HOME") then

NetRemote.GoHome(page);

else

NetRemote.GoDevice(device, page);

end;

end;

Les deux fonctions suivantes permettent d'éviter certains problèmes d'affichage quand on veut afficher un élément par dessus une zone qui défile : quand une zone d'affichage défile et qu'une frame vient par dessus,la zone qui défile s'affiche en avant plan. Pour éviter cela, avant d'afficher l'élément on appelle la fonction ScrollZoneOff(), une fois que l'élément n'est plus affiché on appelle la fonction ScrollZoneOn()

ScrollZoneOn()

-- Pour afficher/cacher les zones de texte défilant

NetRemote.SetVariable("NR.scrollZone", "1");

-- Active l'affichage des zones qui défilent

function ScrollZoneOn()

NetRemote.SetVariable("NR.scrollZone", "1");

end;

ScrollZoneOff()

-- Désactive l'affichage des zones qui défilent

function ScrollZoneOff()

NetRemote.SetVariable("NR.scrollZone", "0");

end;

Les deux fonctions suivantes gérent l'affichage du niveau de la batterie

InitDisplayBatteryLevel()

-- Initialise l'affichage du niveau de la batterie

-- Cette fonction doit être appelée dès le début pour initialiser

-- la mise-à-jour de l'affichage du niveau de la batterei

function InitDisplayBatteryLevel()

batteryTimer = NetRemote.SetTimer(1000, DisplayBatteryLevel);

end;

Page 67/109

Page 68: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

L'initialisation permet l'affichage du niveau toutes les secondes

DisplayBatteryLevel(batteryTimer)

-- Pour l'affichage du niveau de la batterie

NetRemote.SetVariable('NR.batteryLevel', '0');

NetRemote.SetVariable('NR.batteryPercent', "0");

-- Affiche le niveau de la batterie

function DisplayBatteryLevel(batteryTimer)

batteryLevel = math.ceil(tonumber(((NetRemote.GetVariable("Power.BatteryLifePercent")) *100) / 255));

if (batteryLevel > 80) then

bLevel = 5;

elseif (batteryLevel > 60) then

bLevel = 4;

elseif (batteryLevel > 40) then

bLevel = 3;

elseif (batteryLevel > 20) then

bLevel = 2;

else

bLevel = 1;

end;

NetRemote.SetVariable('NR.batteryLevel', tostring(bLevel));

NetRemote.SetVariable('NR.batteryPercent', batteryLevel);

end;

HideMouse()

-- Etat de visibilité du curseur souris

NetRemote.SetVariable("NR.statusMouse", "1");

-- Cache le curseur souris

function HideMouse()

screen = NetRemote.GetScreen();

screen.ShowCursor(false);

NetRemote.SetVariable("NR.statusMouse", "0");

end;

ShowMouse()

-- Affiche le curseur souris

function ShowMouse()

screen = NetRemote.GetScreen();

screen.ShowCursor(true);

NetRemote.SetVariable("NR.statusMouse", "1");

end;

Page 68/109

Page 69: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

ShowHideMouse()

-- Affiche/Cache le curseur souris

function ShowHideMouse()

if NetRemote.GetVariable("NR.statusMouse")=="1" then

HideMouse();

else

ShowMouse();

end

end;

GoPageWhenReady(device, page)

-- Affiche la page d'une activité quand celle-ci est prête

-- device : nom du groupe

-- nom de la page

function GoPageWhenReady(device, page)

if (IsProcessReady()) then

NetRemote.SetVariable("NR.nextDevice", device);

NetRemote.SetVariable("NR.nextPage", page);

CloseMsg();

NetRemote.SetVariable("NR.functionID", "FCT_GOTOPAGE");

G_waitTimer = NetRemote.SetTimer(500, AnimeProgressBar);

end;

end;

SendEvent(event)

-- Envoie un événement

-- event : nom de l'évènement

function SendEvent(event)

--Anime l'icône Wi-Fi

wifiTimer = NetRemote.SetTimer(50, AnimeWifi);

if (NetRemote.GetVariable("Girder.LinkActive") == 1) then

--Envoie un évènement à Girder

G_instanceGirder:ExecuteAction(0, 1, event);

end;

end;

SetSourceAV(source)

-- Indique la source audio-vidéo

NetRemote.SetVariable("NR.sourceAV", "");

-- Sauvegarde la source audio-vidéo

function SetSourceAV(source)

if (IsProcessReady()) then

NetRemote.SetVariable("NR.sourceAV", source);

end;

end;

Page 69/109

Page 70: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

GetSourceAV()

-- retourne la source audio-vidéo

function GetSourceAV()

return (NetRemote.GetVariable("NR.sourceAV"));

end;

SetAudioDiffuser(diffuser)

-- Indique le diffuseur audio

NetRemote.SetVariable("NR.audioDiffuser", "");

-- Positionne le diffuseur audio

function SetAudioDiffuser(diffuser)

NetRemote.SetVariable("NR.audioDiffuser", diffuser);

end;

GetAudioDiffuser()

-- Retourne le diffuseur audio

function GetAudioDiffuser()

return (NetRemote.GetVariable("NR.audioDiffuser"));

end;

La table suivante définit l'état des pages des groupes, elle est constituée comme suit :– Pour chaque groupe on a :

– Le nom du groupe– Le nombre de pages dans le groupe– Pour chaque page on a :

– L'état de la page :– 0 : on n'est pas dans le groupe de la page– 1 : on est dans le groupe, on est passé une fois par la page

-- Table d'état des groupes

-- 0 : page non visitée

-- 1 : page visitée

G_statusOfGroup = {

"HOME",2

,"P.Home",0

,"P.Accueil",0

,"TV",1

,"P.Main",0

,"BLURAY",2

,"P.Library",0

,"P.PlayingNow",0

};

Page 70/109

Page 71: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

GetStatusOfGroup(theGroup, thePage)

-- retourne l'état de la page indiquée

-- theGroup : groupe de la page

-- thePage : page dont on veut l'état

function GetStatusOfGroup(theGroup, thePage)

i = 1;

repeat

if (theGroup == G_statusOfGroup[i]) then

-- C'est le groupe

-- nombre de pages

nbMax = G_statusOfGroup[i+1];

for j = 1, nbMax, 1 do

if (thePage == G_statusOfGroup[i + 2 + 2 * (j - 1)]) then

-- c'est la page

-- retourne l'état

return G_statusOfGroup[i + 3 + 2 * (j - 1)];

end;

end;

else

-- groupe suivant

i = i + 2 * G_statusOfGroup[i+1] + 2;

end;

until (false);

end;

SetStatusOfGroup(theGroup, thePage, status)

-- positionne l'état de la page indiquée

-- theGroup : groue de la page

-- thePage : page dont on veut l'état

-- status : état à positionner

function SetStatusOfGroup(theGroup, thePage, status)

i = 1;

repeat

if (theGroup == G_statusOfGroup[i]) then

-- C'est le groupe

-- nombre de pages

nbMax = G_statusOfGroup[i+1];

for j = 1, nbMax, 1 do

if (thePage == G_statusOfGroup[i + 2 + 2 * (j - 1)]) then

-- c'est la page

-- positionne l'état

G_statusOfGroup[i + 3 + 2 * (j - 1)] = status;

return;

end;

end;

else

-- groupe suivant

i = i + 2 * G_statusOfGroup[i+1] + 2;

end;

until (false);

end;

Page 71/109

Page 72: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

SetCallFunction(fctID)

-- ID de la fonction à exécuter

NetRemote.SetVariable('NR.functionID', "");

-- Positionne l'ID de la fonction à appeler par la fonction CallFunction()

-- fctID : chaîne qui représente l'ID de la fonction à appeler

function SetCallFunction(fctID)

NetRemote.SetVariable("NR.functionID", fctID);

end;

Page 72/109

Page 73: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Fichier tv.lua

Définit les fonctions liées à l'activité TV, c'est-à-dire à l'utilisation du téléviseur seul.Une table contient les canaux des chaînes analogiques et des chaînes TNT, elle est structurée comme suit :– Pour chaque media ("HERTZ" ou "TNT" on a :

– Le nom du media– le nombre de chaînes dans le medio– pour chaque chaîne on a:

– le nom de la chaîne– le canal de la chaîne

TVGetChannel(media, channelName)

-- Nom de la chaîne TV

NetRemote.SetVariable("NR.channelName", "TF1");

-- Index de la première chaîne hertzienne ou tnt

G_TVChannelFirstIndex = 0;

-- Index de la chaîne courante

G_TVChannelIndex = 0;

-- Nombre de chaînes hertziennes ou tnt

G_TVChannelsNumber = 0;

-- retourne le canal de la chaîne

-- media : hertzien ou tnt

-- channelName : nom de la chaîne

-- renseigne les variables G_TVChannelFirstIndex, G_TVChannelIndex et G_TVChannelsNumber

function TVGetChannel(media, channelName)

i = 1;

repeat

if (media == G_TVChannels[i]) then

-- on a déterminé si c'est une chaîne hertzienne ou tnt

-- nombre de chaînes

G_TVChannelsNumber = G_TVChannels[i+1];

-- Index de la premère chaîne hertzienne ou tnt

G_TVChannelFirstIndex = i + 2;

for j = 1, G_TVChannelsNumber, 1 do

if (channelName == G_TVChannels[i + 2 + 2 * (j - 1)]) then

-- c'est la chaîne

-- sauvegarde l'index de la chaîne

G_TVChannelIndex = i + 2 + 2 * (j - 1);

-- retourne le canal

return G_TVChannels[G_TVChannelIndex + 1];

end;

end;

else

-- media suivant

i = i + 2 * G_TVChannels[i+1] + 2;

end;

until (false);

end;

Page 73/109

Page 74: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

TVSetHertzChannels()

-- Précise si les chaînes TNT sont affichées

NetRemote.SetVariable("NR.TNTChannels", "0");

-- Affiche les chaînes hertziennes

function TVSetHertzChannels()

NetRemote.SetVariable("NR.TNTChannels", "0");

end;

TVSetTNTChannels()

-- Affiche les chaînes TNT

function TVSetTNTChannels()

NetRemote.SetVariable("NR.TNTChannels", "1");

end;

TVIsTNTChannel()

-- Retourne true si c'est une chaîne TNT

function TVIsTNTChannel()

return (NetRemote.GetVariable("NR.TNTChannels") == "1");

end;

TVSelectChannel(channelName)

-- Précise si on a sélectionné une chaîne TNT

G_TVTNTChannel = false;

-- Positionne une chaîne à partir d'un bouton

-- channelName : nom de la chaîne

function TVSelectChannel(channelName)

--Sauvegarde le nom de la chaîne

NetRemote.SetVariable("NR.channelName", channelName);

if (TVIsTNTChannel()) then

-- c'est une chaîne TNT

G_TVTNTChannel = true;

else

G_TVTNTChannel = false;

end;

TVSetChannel(channelName);

end;

Page 74/109

Page 75: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

TVSetChannel(channelName)

-- Positionne une chaîne

-- channelName : nom de la chaîne

function TVSetChannel(channelName)

--Sauvegarde le nom de la chaîne

NetRemote.SetVariable("NR.channelName", channelName);

-- Canal de la chaine

if (G_TVTNTChannel) then

-- c'est une chaîne TNT

realChannel = TVGetChannel("TNT",channelName);

else

-- c'est une chaîne hertzienne

realChannel = TVGetChannel("HERTZ",channelName);

end;

-- envoi du code IR de la chaîne

if (realChannel < 10) then

Telco("TV", tostring(realChannel));

else

-- Envoi le code de la dizaine

par10 = math.floor(realChannel/10);

Telco("TV", tostring(par10));

-- PEnvoie le code de l'unité

Telco("TV", tostring(realChannel - par10*10 + 1));

end;

end;

TVPrevChannel()

--Positionne la chaine précédente

--On cycle dans le theme en cours

function TVPrevChannel()

if (G_TVChannelIndex == G_TVChannelFirstIndex) then

-- on est sur la première chaîne, on sélectionne la dernière

TVSetChannel(G_TVChannels[G_TVChannelFirstIndex + 2 * (G_TVChannelsNumber - 1)]);

else

TVSetChannel(G_TVChannels[G_TVChannelIndex - 2]);

end;

end;

TVNextChannel()

--Positionne la chaine suivante

--On cycle dans le theme en cours

function TVNextChannel()

if (G_TVChannelIndex == G_TVChannelFirstIndex + 2 * (G_TVChannelsNumber - 1)) then

-- on est sur la dernière chaîne, on sélectionne la première

TVSetChannel(G_TVChannels[G_TVChannelFirstIndex]);

else

TVSetChannel(G_TVChannels[G_TVChannelIndex + 2]);

end;

end;

Page 75/109

Page 76: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

TVMenu()

-- Précisent si les pages Menu ou Options sont affichées

G_TVMenu = false;

G_TVOptions = false;

-- Affiche le menu

function TVMenu()

if (not IsMsgDisplayed()) then

-- On affiche si aucun message n'est affiché

if (GetProcessName() == "TV") then

G_TVOptions = false;

if (not IsMenuNavigatorOpen() or (G_TVMenu == true)) then

OpenCloseMenuNavigator();

end;

G_TVMenu = not G_TVMenu;

Telco("TV", "MENU");

end;

end;

end;

TVOptions()

-- Affiche les options

function TVOptions()

if (not G_TVMenu) then

if (not IsMsgDisplayed()) then

-- On affiche si aucun message n'est affiché

if (GetProcessName() == "TV") then

G_TVMenu = false;

if (not IsMenuNavigatorOpen() or (G_TVOptions == true)) then

OpenCloseMenuNavigator();

end;

G_TVOptions = not G_TVOptions;

Telco("TV", "OPTION");

end;

end;

end;

end;

TVPowerOFF()

-- Power OFF

function TVPowerOFF()

Telco("TV", "POWER");

end;

Page 76/109

Page 77: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

TVPowerON()

-- Power ON

function TVPowerON()

-- Allume la TV

Telco("TV", "POWER");

end;

TVPowerONAllDevices()

-- Allume les appareils utilisés dans l'activité

-- G_processLevel : niveau d'avancement dans l'allumage

function TVPowerONAllDevices()

-- Affiche le message d'attente

OpenMsg("20");

-- Pour appeler plusieurs fois la fonction jusqu'à l'allumage de tous les appareils

SetCallFunction("FCT_TVPOWERONALLDEVICES");

if (G_processLevel == 1) then

-- Allume la TV

TVPowerON();

-- On attend que l'allumage soit complet

WaitProcessReady("22", 16);

-- Pour passer au niveau suivant

G_processLevel = 2;

elseif (G_processLevel == 2) then

-- Tous les appareils sont allumés

CloseMsg();

-- Positionne la dernière chaîne utilisée

TVSetChannel(NetRemote.GetVariable("NR.channelName"));

TVStartProcess();

G_processLevel = 1;

end;

end;

TVPowerOFFAllDevices()

-- Eteint les appareils utilisés dans l'activité

function TVPowerOFFAllDevices()

-- Affiche le message d'attente

OpenMsg("20");

-- Pour appeler plusieurs fois la fonction jusqu'à l'allumage de tous les appareils

SetCallFunction("FCT_TVPOWEROFFALLDEVICES");

if (G_processLevel == 1) then

-- Arrête l'activité

TVStopProcess();

-- On attend que l'extinction soit complete

WaitProcessReady("29", 4);

-- Pour passer au niveau suivant

G_processLevel = 2;

elseif (G_processLevel == 2) then

-- Tous les appareils sont éteints

CloseMsg();

NetRemote.GoHome("P.Accueil");

Page 77/109

Page 78: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

G_processLevel = 1;

end;

end;

TVStartProcess()

-- Démarre une activité TV

function TVStartProcess()

SetProcessName("TV");

NetRemote.GoDevice("TV", "P.Main");

end;

TVStopProcess()

-- Arrête une activité TV

function TVStopProcess()

NetRemote.SetVariable("NR.TVMenu", "0");

NetRemote.SetVariable("NR.TVOptions", "0");

CloseMenuNavigator();

TVPowerOFF();

SetProcessName("");

end;

Page 78/109

Page 79: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Fichier navigator.lua

Définit les fonctions liées au navigateur de menus

OpenCloseMenuNavigator()

-- Affichage des contrôles de DVD

NetRemote.SetVariable('NR.F.controlsNavigator', '0');

-- Ouvre/Ferme le panneau pour le navigateur de menu

function OpenCloseMenuNavigator()

if (not IsMsgDisplayed()) then

if (NetRemote.GetVariable('NR.F.controlsNavigator') == "1") then

-- On cache le navigateur

CloseMenuNavigator();

-- aucun élément affiché

SetObjectNotDisplayed();

-- affiche les zones qui défilent

ScrollZoneOn();

elseif (not IsObjectDisplayed()) then

-- cache les zones qui défilent

ScrollZoneOff();

-- On affiche le navigateur

OpenMenuNavigator();

-- Un élément affiché

SetObjectDisplayed();

end;

end;

end;

CloseMenuNavigator()

-- Ferme le navigateur de menu

function CloseMenuNavigator()

NetRemote.SetVariable('NR.F.controlsNavigator', '0');

end;

IsMenuNavigatorOpen()

-- Retourne true si le navigateur de menu est affiché

function IsMenuNavigatorOpen()

return (NetRemote.GetVariable('NR.F.controlsNavigator') == "1");

end;

Page 79/109

Page 80: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

LeftArrowNavigator()

-- flêche gauche

function LeftArrowNavigator()

Telco(GetProcessName(), "LEFTARROW");

end;

UpArrowNavigator()

-- flêche haut

function UpArrowNavigator()

Telco(GetProcessName(), "UPARROW");

end;

RightArrowNavigator()

-- flêche droite

function RightArrowNavigator()

Telco(GetProcessName(), "RIGHTARROW");

end;

DownArrowNavigator()

-- Flêche bas

function DownArrowNavigator()

Telco(GetProcessName(), "DOWNARROW");

end;

OKNavigator()

-- OK

function OKNavigator()

Telco(GetProcessName(), "OK");

end;

Page 80/109

Page 81: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Fichier playerpannel.lua

Ce fichier contient les fonctions liées au panneau de lecture

SkipBackward()

function SkipBackward()

process = GetProcessName();

if (process == "TV") then

TVPrevChannel();

elseif (process == "BLURAY") then

BRSkipBackward();

end;

end;

FastBackward()

function FastBackward()

process = GetProcessName();

if (process == "BLURAY") then

BRFastForward();

end;

end;

Backward()

function Backward()

process = GetProcessName();

if (process == "BLURAY") then

BRBackward();

end;

end;

Stop()

function Stop()

process = GetProcessName();

if (process == "BLURAY") then

BRStop();

end;

end;

Page 81/109

Page 82: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Pause()

function Pause()

process = GetProcessName();

if (process == "BLURAY") then

BRPause();

end;

end;

Play()

function Play()

process = GetProcessName();

if (process == "BLURAY") then

BRPlay();

end;

end;

FastForward()

function FastForward()

process = GetProcessName();

if (process == "BLURAY") then

BRFastForward();

end;

end;

SkipForward()

function SkipForward()

process = GetProcessName();

if (process == "TV") then

TVNextChannel();

elseif (process == "BLURAY") then

BRSkipForward();

end;

end;

Eject()

function Eject()

process = GetProcessName();

if (process == "BLURAY") then

if (DVDIsPlaying()) then

OpenMsg("11");

else

BREject();

end;

end;

Page 82/109

Page 83: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

end;

Fichier audio.lua

Définit les fonctions liées à la gestion du volume

On dispose d'une table définissant pour chaque appareil ses volumes mini, max et par défaut

--[[

Table des volumes pour chaque appareil

Premier élément : nombre d'appareils

Pour chaque appareil

- Nom de l'appareil

- Volume mini

- Volume maxi

- Volume par défaut

]]

G_volDevices = {2

"TV",0,40,20

"PREAMP",-45,-5,-30

};

Les variables

-- Variables qui gérent le volume

NetRemote.SetVariable('NR.Volume', '0');

NetRemote.SetVariable('NR.mute', 0);

-- Variables qui gérent le volume

NetRemote.SetVariable('NR.Volume', '-1');

NetRemote.SetVariable('NR.mute', 0);

-- Variables du curseur de volume

G_volMin = 0;

G_volMax = 100;

G_volCurrent = G_volMin;

G_volMute = 0;

GetVolMin(device)

-- retourne le volume mini de l'appareil

-- device : nom de l'appareil

function GetVolMin(device)

nbMax = G_volDevices[1];

for i = 1, nbMax, 1 do

if (device == G_volDevices[2 + 4 * (i - 1)]) then

return G_volDevices[3 + 4 * (i - 1)];

end;

end;

end;

Page 83/109

Page 84: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

GetVolMax(device)

-- retourne le volume maxi de l'appareil

-- device : nom de l'appareil

function GetVolMax(device)

nbMax = G_volDevices[1];

for i = 1, nbMax, 1 do

if (device == G_volDevices[2 + 4 * (i - 1)]) then

return G_volDevices[4 + 4 * (i - 1)];

end;

end;

end;

GetVolsDefault(device)

-- retourne le volume par defaut de l'appareil

-- device : nom de l'appareil

function GetVolsDefault(device)

nbMax = G_volDevices[1];

for i = 1, nbMax, 1 do

if (device == G_volDevices[2 + 4 * (i - 1)]) then

return G_volDevices[5 + 4 * (i - 1)];

end;

end;

end;

GetCoeffVol(device)

-- selon l'appareil, retourne le coefficient pour ajuster

-- les limites min et max du volume de l'appareil

-- au limites du curseur de la télécommande

function GetCoeffVol(device)

return (G_volMax - G_volMin) / (GetVolMax(device) - GetVolMin(device));

end;

VolDeviceToVolTelco(device, vol)

--[[

calcule le volume affiché sur la télécommande

en fonction du volume réel sur l'appareil

-- device : nom de l'appareil

-- vol : volume réel de l'appareil

]]

function VolDeviceToVolTelco(device, vol)

return ((vol - GetVolMin(device)) * GetCoeffVol(device));

end;

Page 84/109

Page 85: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

VolTelcoToVolDevice(device, vol)

--[[

calcule le volume réel de l'appareil

en fonction du volume affiché sur la télécommande

-- device : nom de l'appareil

-- vol : volume affiché sur la télécommande

]]

function VolTelcoToVolDevice(device, vol)

return ((vol / GetCoeffVol(device)) + GetVolMin(device));

end;

GetVol()

-- Retourne le volume en cours de la télécommande

function GetVol()

return tonumber(NetRemote.GetVariable('NR.Volume'));

end;

AdjustVolDevice(device, deltaVol)

-- Ajuste le volume de l'appareil

-- device : nom de l'appareil

-- deltaVol : variation de volume

function AdjustVolDevice(device, deltaVol)

-- variation correspondante sur l'appareil

deltaVol = math.ceil(deltaVol / GetCoeffVol(device));

if (deltaVol > 0) then

while (deltaVol > 0) do

Telco(device, "INCVOL");

deltaVol = deltaVol - 1;

end;

else

while (deltaVol < 0) do

Telco(device, "DECVOL");

deltaVol = deltaVol + 1;

end;

end;

end;

Le coeur de la gestion du volume est la fonction AdjustVol() : cette fonction est appelée dès que la variable NR.Volume est modifiée soit par les boutons [FLECHE BAS] et [FLECHE HAUT], soit par le curseur

Ceci est possible grace à la ligne de code suivante :

-- On va surveiller la variable NR.Volume

G_watchVol = NetRemote.RegisterVariableWatch('NR.Volume', AdjustVol);

Cette ligne précise à NetRemote de surveiller cette variable, et d'appeler la fonction AdjustVol() si la variable

Page 85/109

Page 86: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

est modifiée

AdjustVol()

-- Ajuste le volume en fonction de la variable NR.Volume

function AdjustVol()

if (NetRemote.GetVariable('NR.mute') == '1') then

-- On était en mode mute, on ajuste le volume avec le curseur

SetVolToZero();

end;

-- volume positionné sur la telco avant la nouvelle valeur

previousVol = G_volCurrent;

-- nouvelle valeur du volume sur la telco

G_volCurrent = GetVol();

-- variation de volume de la telco

deltaVol = G_volCurrent - previousVol;

if (GetAudioDiffuser() == "TV") then

-- On ajuste le volume sur la TV

AdjustVolDevice("TV", deltaVol / GetCoeffVol("TV"));

else

-- On ajuste le volume sur le préampli

AdjustVolDevice("PREAMP", deltaVol / GetCoeffVol("PREAMP"));

end;

end;

Cette fonction appelle les fonctions correspondantes d'ajustement de volume suivant l'activité en cours : ainsi si le diffuseur est la TV on appelle la fonction AdjustVolDevice("TV", deltaVol) qui va ajuster le volume de la TV en plus ou en moins par rapport au volume actuel d'une valeur égale à deltaVol.

Dans le cas du PC c'est la ligne de code suivante qui va permettre l'ajustement du volume :

NetRemote.RegisterVariableWatch('NR.Volume', NetRemote.GetPlugin('Girder'));

Cette ligne va permettre de synchroniser la valeur du volume sur l'umpc (défini par la variable NR.Volume) et la valeur du volume défini par Girder sur le PC (et qui représente le volume réellement affecté).Pourquoi cette synchronisation est-elle nécessaire : on pourrait envisager que chaque fois que la variable NR.Volume augmente ou diminue on envoie un message à Girder lui disant d'augmenter ou de diminuer d'autant le volume. Tant que l'on utilise les flêches (augmentation/diminution d'une unité) cela marche, le problème c'est lors de l'utilisation du curseur : si on se déplace rapidement il n'y a pas autant d'évènements envoyés que de valeur du déplacement (exemple on passe de -60 à -40, donc augmentation de 20 unités, seuls une dizaine d'évènements seront envoyés), il y a donc désynchronisation entre le volume affiché sur l'umpc et le volume réellement positionné sur le PC.Il faut donc informer le PC (via Girder) de la valeur effective du volume que l'on a positionnée sur l'umpc : c'est ce que va faire la ligne de code indiquée, chaque fois que NR.Volume change de valeur un événement 'NR.Volume' est envoyé à Girder avec sa valeur.Du côté de Girder j'ai défini la variable VMC_wh qui représente l'handle de l'application Virtual Midi Controller (VMC) que j'utilise pour envoyer des commandes MIDI à Console qui gére tous mes réglages audio

VMC_wh = win.FindWindow("VIRTUALMIDICONTROLLER2004", nil)

Page 86/109

Page 87: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Cette variable est initialisée une fois que Girder a démarré VMCQuand Girder reçoit l'évènement 'NR.Volume', il exécute le script AdjustVol suivant :

NR_vol = math.abs(pld3 * 1.27 + 0.5);

while (currentVol ~= NR_vol) do

if (currentVol < NR_vol) then

gir.SendKeys(VMC_wh, 'h')

currentVol = currentVol + 1

else

gir.SendKeys(VMC_wh, 'i')

currentVol = currentVol - 1

end

end

Quand on entre dans ce script, Girder a positionné la variable interne pld3 avec la valeur de NR.VolumeLa formule pour calculer NR_vol permet de faire correspondre la plage 0..100 de NR.Volume à la plage 0..127 de NR_volOn entre alors dans une boucle qui va ajuster le volume du PC à la valeur de NR_vol (en plus ou en moins), pour cela on envoie à VMC un code clavier 'h' (pour augmenter le volume d'une unité) ou 'i' (pour diminuer le volume d'une unité), le script se termine quand le volume PC égale la valeur de NR_vol.

IncVol()

function IncVol()

G_volCurrent = GetVol();

if (G_volCurrent < G_volMax) then

-- NetRemote.SetVariable('NR.Volume', tostring(G_volCurrent + 1));

NetRemote.SetVariable('NR.Volume', tostring(G_volCurrent + GetCoeffVol(GetAudioDiffuser())));

end;

end;

DecVol()

function DecVol()

G_volCurrent = GetVol();

if (G_volCurrent > G_volMin) then

NetRemote.SetVariable('NR.Volume', tostring(G_volCurrent - GetCoeffVol(GetAudioDiffuser())));

end;

end;

SetVol(button, ctr)

-- Modifie le volume en plus ou en moins d'une unité

function SetVol(button, ctr)

local buttonName = button:GetName();

Page 87/109

Page 88: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

if ((ctr == 0) or (ctr > 3)) then

if (buttonName == "B.volumeUp") then

IncVol();

else

DecVol();

end;

end;

end;

Le paramètre button référence le bouton à l'origine de l'appel, le paramètre ctr est un entier qui vaut 0 au moment du premier appui sur le bouton, puis qui s'incrémente si on reste appuyé sur le bouton

SwitchMute()

-- Active/desactive le mute audio

function SwitchMute()

if (NetRemote.GetVariable('NR.mute') == '0') then

-- On passe en mode mute

-- Sauvegarde le volume en cours

G_volMute = GetVol();

-- Met le volume à sa valeur mini

NetRemote.SetVariable('NR.Volume', tostring(G_volMin));

-- Indique le mode mute

NetRemote.SetVariable('NR.mute', '1');

else

--On remet le volume progressivement à sa valeur avant le mute

volTimer = NetRemote.SetTimer(100, ResetVolFromMute);

end;

end;

ResetVolFromMute(volTimer)

-- Remet le volume à sa valeur avant le mute

function ResetVolFromMute(volTimer)

local vol = GetVol();

if (vol == G_volMute) then

volTimer:KillTimer();

-- On sort du mode mute

NetRemote.SetVariable('NR.mute', 0);

else

IncVol();

end;

end;

SetVolToZero()

-- Met le volume à zéro

function SetVolToZero()

-- On annule le mode mute

NetRemote.SetVariable('NR.mute', 0);

NetRemote.SetVariable('NR.Volume', "0");

Page 88/109

Page 89: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

end;

ResetVol()

G_volDefault = 0;

G_device = "";

-- Réinitialise le volume d'un appareil

-- On met d'abord le volume à 0 puis à sa valeur par défaut

function ResetVol()

if (IsProcessReady()) then

-- Indique un process en cours

if (GetAudioDiffuser() ~= "HEADPHONES") then

InitProcess();

-- Pour afficher le message d'attente

OpenMsg("20");

OpenSubMsg("28");

-- On va supposer que le volume est au maximum

G_vol = G_volMax;

-- Diffuseur audio

G_device = GetAudioDiffuser();

-- Correspondance sur la télécommande du volume par défaut du diffuseur audio

G_volDefault = VolDeviceToVolTelco(G_device, GetVolDefault(G_device));

-- l'attente finit on ne fait rien

SetCallFunction("NOTHING");

-- affiche la barre de progression

G_waitTimer = NetRemote.SetTimer(200, AnimeProgressBar);

-- réinitialise le volume

volTimer = NetRemote.SetTimer(100, _ResetVol);

end;

end;

end;

_ResetVol(volTimer)

--[[

Cette fonction est appelée cycliquement

jusqu'à ce que le volume soit égal à la valeur par défaut

en passant d'abord par zéro

]]

function _ResetVol(volTimer)

if (GetVol() > 0) then

-- On diminue le volume d'une unité sur l'appareil

DecVol();

G_vol = G_vol - GetCoeffVol(G_device);

else

if (G_vol > 0) then

-- Pour être sûr que le volume de l'appareil est à 0

AdjustVolDevice(G_device, -1);

G_vol = G_vol - GetCoeffVol(G_device);

else

-- pour arrêter l'appel à cette fonction

volTimer:KillTimer();

-- pour mettre le volume à sa valeur par défaut

volTimer = NetRemote.SetTimer(100, _DefaultVol);

Page 89/109

Page 90: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

end;

end;

end;

_DefaultVol(volTimer)

--[[

Cette fonction augmente le volume d'un appareil

jusqu'à sa valeur par défaut précisée dans G_volDefault

]]

function _DefaultVol(volTimer)

if (GetVol() < G_volDefault) then

-- On augmente le volume d'une unité

IncVol();

else

-- arrête l'appel à cette fonction

volTimer:KillTimer();

-- c'est fait

SetProcessReady();

end;

end;

AudioOptions()

--[[

Affiche la boîte des otions audio

]]

function AudioOptions()

if (G_audioOptions) then

-- on ferme la boîte

G_audioOptions = false;

CloseMsg();

else

if (IsProcessReady() and (not IsMsgDisplayed())) then

if (GetAudioDiffuser() == "PREAMP") then

G_audioOptions = true;

OpenMsg("16")

else

end;

end;

end;

end;

Page 90/109

Page 91: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Fichier movies.lua

On initialise d'abord un objet GAC pour les films :

local DVDCount = 11; -- Nombre d'albums retrouvés par requête

-- Pour afficher la liste des DVD

videoLibrary = GAC:new{var='videoLibrary',includeSubItemCount=0,imageSize='M',fields='',count= DVDCount, useGP=1 };

DisplayMoviesList()

-- Affiche la liste des films par ordre alphabétique

function DisplayMoviesList()

-- Indique un affichage par film

NetRemote.SetVariable('MP.MoviesListe', '1');

-- Récupère les infos du premier film

RestoreDVDSelected();

SelectItemFromVideoLibraryList(NetRemote.GetVariable('NR.selectedIndex'))

end;

DisplayGenreMoviesList()

-- Affiche la liste des films par genre

function DisplayGenreMoviesList()

-- Indique un affichage par genre

NetRemote.SetVariable('MP.MoviesListe', '2');

videoLibrary:SetRootScheme("DVDs");

videoLibrary:GoScheme(NetRemote.GetVariable('MP.GenresRoot'));

end;

ItemReady()

function ItemReady()

NetRemote.SetVariable("NR.itemReady","1");

end;

ItemNotReady()

function ItemNotReady()

NetRemote.SetVariable("NR.itemReady","0");

end;

Page 91/109

Page 92: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

IsItemReady()

function IsItemReady()

return (NetRemote.GetVariable("NR.itemReady") == "1");

end;

-- Utilisée par SelectItemFromVideoLibraryList(index)

SelectItemFromVideoLibraryList(index)

G_videoListIndex = 0; -- sauvegarde de l'index dans la liste

G_videoTimer = nil; -- timer pour l'affichage de l'image

G_videoCpt = 0;

-- Utilisée par SelectItemFromVideoLibraryList(index)

function _SelectItemFromVideoLibraryList()

-- On va laisser passer un certain temps avant d'afficher l'image pour être

-- certain que la liste a été mise à jour

if (G_videoCpt == 0) then

-- On peut obtenir les informations de la liste

-- Sauvegarde de l'élément sélectionné

SaveDVDSelected(G_videoListIndex);

videoLibrary:GetInformation(G_videoListIndex,'DVDI',true);

G_videoTimer:KillTimer();

ItemReady();

else

G_videoCpt = G_videoCpt - 1;

end;

end;

-- Récupère les informations de l'élément sélectionné

function SelectItemFromVideoLibraryList(index)

-- Cette écriture particulière est pour éviter le désynchronisme entre l'affichage de la liste

-- et celui de la pochette.

ItemNotReady();

while (true) do

-- On attends que l'affichage d'une image précédente soit terminée

if (G_videoCpt == 0) then

-- L'affichage précédent est terminé

-- Index de l'élément

G_videoListIndex = index;

-- Le timer sera appelé 5 fois

G_videoCpt = 5;

G_videoTimer = NetRemote.SetTimer(100, _SelectItemFromVideoLibraryList);

return ;

end;

end;

end;

DisplayDVDSelected()

-- Affiche les infos du DVD sélectionné

function DisplayDVDSelected()

Page 92/109

Page 93: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

if (not IsMsgDisplayed() and (not IsObjectDisplayed())) then

RestoreDVDSelected();

NetRemote.GoDevice("BLURAY", "P.PlayingNow");

end;

end;

SetDVDPlaying()

function SetDVDPlaying()

NetRemote.SetVariable('NR.DVDPlaying', '1');

end;

SetDVDNotPlaying()

function SetDVDNotPlaying()

NetRemote.SetVariable('NR.DVDPlaying', '0');

end;

DVDIsPlaying()

-- Return true si un DVD est en cours de lecture

function DVDIsPlaying()

return (NetRemote.GetVariable('NR.DVDPlaying') == "1");

end;

SaveDVDSelected(index)

-- Sauvegarde les infos du DVD sélectionné

function SaveDVDSelected(index)

NetRemote.SetVariable('NR.selectedStartIndex', NetRemote.GetVariable('MP.videoLibrary.Start'));

NetRemote.SetVariable('NR.selectedIndex', index);

NetRemote.SetVariable('NR.selectedTopIndex', NetRemote.GetVariable('MP.videoLibrary.Top'));

NetRemote.SetVariable('NR.selectedCurrentPage', NetRemote.GetVariable('MP.videoLibrary.CurrentPage'));

end;

RestoreDVDSelected()

-- Restore les infos du DVD sélectionné

function RestoreDVDSelected()

if (not IsMsgDisplayed() and (not IsObjectDisplayed())) then

NetRemote.SetVariable('MP.videoLibrary.Start', NetRemote.GetVariable('NR.selectedStartIndex'));

NetRemote.SetVariable('MP.videoLibrary.Top', NetRemote.GetVariable('NR.selectedTopIndex'));

NetRemote.SetVariable('MP.videoLibrary.CurrentPage', NetRemote.GetVariable('NR.selectedCurrentPage'));

videoLibrary:SetStart(NetRemote.GetVariable('NR.selectedStartIndex'));

videoLibrary:GetInformation(NetRemote.GetVariable('NR.selectedIndex'),'DVDI',true);

Page 93/109

Page 94: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

end;

end;

Page 94/109

Page 95: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Fichier albums.lua

Ce fichier contient les functions liées à la gestion des albums audio

On initialise d'abord un objet GAC pour les albums audio :

local albumCount = 12; -- Nombre d'albums retrouvés par requête

local trackCount = 11; -- Nombre de pistes retrouvées par requête

selectedItem_names = {};

-- Pour afficher la liste des albums

audioLibrary = GAC:new({var='audioLibrary', includeSubItemCount=0, imageSize='N',fields='',count=albumCount, useGP=1});

--Pour afficher la liste des pistes d'un album

myAlbum = GAC:new({var='myAlbum',includeSubItemCount=0,imageSize='S',fields='',count=trackCount, useGP=1});

DisplayAlbumList()

-- Affiche la liste des albums

function DisplayAlbumList()

-- Pour mettre à jour le titre de la liste

NetRemote.SetVariable('MP.ListeName', '1');

-- MP.AlbumsRoot contient le chemin de la racine de la liste des albums, on y positionne la navigation

-- et on récupère la première page correspondante

audioLibrary:GoScheme(NetRemote.GetVariable('MP.AlbumsRoot'));

end;

DisplayArtistList()

-- Affiche la liste des artistes

function DisplayArtistList()

-- Pour mettre à jour le titre de la liste

NetRemote.SetVariable('MP.ListeName', '2');

-- MP.ArtistsRoot contient le chemin de la racine de la liste des artistes, on y positionne la navigation

-- et on récupère la première page correspondante

audioLibrary:GoScheme(NetRemote.GetVariable('MP.ArtistsRoot'));

end;

DisplayGenreList()

-- Affiche la liste des genres

function DisplayGenreList()

-- Pour mettre à jour le titre de la liste

NetRemote.SetVariable('MP.ListeName', '3');

-- MP.GenresRoot contient le chemin de la racine de la liste des genres, on y positionne

Page 95/109

Page 96: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

la navigation

-- et on récupère la première page correspondante

audioLibrary:GoScheme(NetRemote.GetVariable('MP.GenresRoot'));

end;

DisplayPlaylists()

-- Affiche la liste des playlists

function DisplayPlaylists()

-- Pour mettre à jour le titre de la liste

NetRemote.SetVariable('MP.ListeName', '4');

-- Positionne la navigation sur les playlists et récupère la première page correspondante

audioLibrary:GoScheme('Playlists');

end;

SelectItemFromAudioLibraryList(index)

-- Récupère les albums correspondant à l'artiste ou au genre sélectionné, ou les pistes de l'album sélectionné

function SelectItemFromAudioLibraryList(index)

-- Table où l'on récupère les albums correspondant à l'artiste ou au genre sélectionné, ou les pistes de l'album sélectionné

selectedItem_names = {};

selectedItemName = NetRemote.GetVariable('MP.audioLibrary.Items[index].Name');

NetRemote.SetVariable('MP.SelectedItem.Name',selectedItemName);

audioLibrary:GetInformation(index,'SelectedItem',2);

audioLibrary:OpenChild(index,myAlbum);

NetRemote.GoDevice('PCPC','P.Album');

end;

SelectItemFromAudioLibraryList(index)

function SelectItemFromAudioLibraryList(index)

if (NetRemote.GetVariable('MP.myAlbum.Items[index].Type') == '0') then

cselectedItemName = NetRemote.GetVariable('MP.SelectedItem.Name');

table.insert(selectedItem_names, selectedItemName);

selectedItemName = NetRemote.GetVariable('MP.myAlbum.Items[index].Name');

NetRemote.SetVariable('MP.SelectedItem.Name',selectedItemName);

myAlbum:GetInformation(index,'SelectedItem',2);

myAlbum:DefaultAction(index);

else

NetRemote.SetVariable('MP.TrackInfo.SelectedTrackIndex','index');

myAlbum:GetInformation(index,'TrackInfo',true)

NetRemote.GoDevice('PCPC','P.Track');

end;

end;

Page 96/109

Page 97: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Fichier bluray.lua

BRPowerONAllDevices()

-- Allume les appareils utilisés dans l'activité

-- G_processLevel : niveau d'avancement dans l'allumage

function BRPowerONAllDevices()

OpenMsg("20");

-- Pour appeler plusieurs fois la fonction jusqu'à l'allumage de tous les appareils

SetCallFunction("FCT_BRPOWERONALLDEVICES");

if (G_processLevel == 1) then

if (GetDisplayName() == "VP") then

VPPowerON();

WaitProcessReady("21", 4);

else

TVPowerON();

WaitProcessReady("22", 4);

end;

-- Pour passer au niveau suivant

G_processLevel = 2;

elseif (G_processLevel == 2) then

BRPowerON();

WaitProcessReady("23", 25);

if (GetAudioDiffuser() == "HEADPHONES") then

-- Au casque, seul le lecteur et le VP sont utilisés

G_processLevel = 6;

elseif (GetAudioDiffuser() == "TV") then

-- Seuls la TV et le lecteur sont utilisés

G_processLevel = 8;

else

G_processLevel = 3;

end;

elseif (G_processLevel == 3) then

PREAMPPowerON();

WaitProcessReady("25", 4);

if (GetDisplayName() == "VP") then

G_processLevel = 4;

else

-- Pour la TV on n'allume rien de plus

G_processLevel = 8;

end;

elseif (G_processLevel == 4) then

-- On allume le switch

SWITCHPowerON();

-- On sélectionne l'entrée 2

Telco("SWITCH", "2");

WaitProcessReady("26", 2);

G_processLevel = 5;

elseif (G_processLevel == 5) then

AMPLISPowerON();

WaitProcessReady("27", 4);

G_processLevel = 6;

elseif (G_processLevel == 6) then

if (GetAudioDiffuser() == "HEADPHONES") then

Page 97/109

Page 98: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

-- En écoute sur le casque, le VP reçoit la video sur l'entrée C1

-- Sélection de l'entrée video C1

Telco("VP", "C1");

else

-- En écoute sur les enceintes, le VP reçoit la video sur l'entrée HDMI

-- Sélection de l'entrée vidéo HDMI

Telco("VP", "HDMI");

end;

WaitProcessReady("30", 2);

G_processLevel = 7;

elseif (G_processLevel == 7) then

if (GetAudioDiffuser() == "HEADPHONES") then

-- En écoute sur le casque, le VP reçoit la video sur l'entrée C1

-- Configuration image

Telco("VP", "U1");

else

-- En écoute sur les enceintes, le VP reçoit la video sur l'entrée HDMI

-- Configuration image

Telco("VP", "U2");

end;

WaitProcessReady("30", 2);

G_processLevel = 8;

elseif (G_processLevel == 8) then

-- Tous les appareils sont allumés

CloseMsg();

G_processLevel = 1;

BRStartProcess();

end;

end;

BRStartProcess()

-- Démarre une activité Blu-Ray

function BRStartProcess()

SetProcessName("BLURAY");

if (GetDisplayName() == "VP") then

-- Affichage sur le VP

if (GetAudioDiffuser() == "HEADPHONES") then

-- En écoute sur le casque, le VP reçoit la video sur l'entrée C1

-- Sélection de l'entrée video C1

Telco("VP", "C1");

-- Configuration image

Telco("VP", "U1");

else

-- En écoute sur les enceintes, le VP reçoit la video sur l'entrée HDMI

-- Sélection de l'entrée vidéo HDMI

Telco("VP", "HDMI");

-- Configuration image

Telco("VP", "U2");

end;

end;

-- On se positionne sur la liste des DVD

videoLibrary:GoScheme("DVDs");

NetRemote.GoDevice("BLURAY", "P.Library");

end;

Page 98/109

Page 99: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

BRPowerOFFAllDevices()

-- Eteint les appareils utilisés dans l'activité

function BRPowerOFFAllDevices()

-- Affiche le message d'attente

OpenMsg("20");

-- Pour appeler plusieurs fois la fonction jusqu'à l'allumage de tous les appareils

SetCallFunction("FCT_BRPOWEROFFALLDEVICES");

if (G_processLevel == 1) then

-- Arrête l'activité

BRStopProcess();

if (GetAudioDiffuser() == "PREAMP") then

-- Diffusion audio sur les amplis

-- Eteint les amplis

AMPLISPowerOFF();

-- On attend que l'extinction soit complete

WaitProcessReady("36", 2);

-- Pour passer au niveau suivant

G_processLevel = 2;

elseif (GetAudioDiffuser() == "HEADPHONES") then

-- Diffusion audio sur le casque

G_processLevel = 4;

-- Pour rappeler BRPowerOFFAllDevices()

CallFunction();

else

-- Diffusion audio et video sur la TV

G_processLevel = 4;

-- Pour rappeler BRPowerOFFAllDevices()

CallFunction();

end;

elseif (G_processLevel == 2) then

-- On éteint le switch audio

SWITCHPowerOFF();

WaitProcessReady("35", 2);

G_processLevel = 3;

elseif (G_processLevel == 3) then

-- On éteint le préampli

PREAMPPowerOFF();

WaitProcessReady("34", 2);

G_processLevel = 4;

elseif (G_processLevel == 4) then

-- On éteint le lecteur blu-ray

BRPowerOFF();

WaitProcessReady("32", 18);

G_processLevel = 5;

elseif (G_processLevel == 5) then

if (GetDisplayName() == "TV") then

-- On éteint la TV

TVPowerOFF();

WaitProcessReady("29", 4);

else

-- On éteint le VP

VPPowerOFF();

WaitProcessReady("31", 4);

end;

G_processLevel = 6;

elseif (G_processLevel == 6) then

Page 99/109

Page 100: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

-- Tous les appareils sont éteints

CloseMsg();

NetRemote.GoHome("P.Accueil");

G_processLevel = 1;

end;

end;

BRStopProcess()

-- Arrête une activité Blu-Ray

function BRStopProcess()

-- Pas de film en cours

NetRemote.SetVariable('NR.playingStartIndex', -1)

G_BRMenu = false;

CloseMenuNavigator();

SetProcessName("");

-- permet de réinitialiser le volume

SetStatusOfGroup("BLURAY", "P.Library", 0);

end;

BRPowerOFF()

-- Power OFF

function BRPowerOFF()

Telco("BLURAY", "POWER");

end;

BRPowerON()

-- Power ON

function BRPowerON()

-- Allume le lecteur

Telco("BLURAY", "POWER");

end;

BRSkipBackward()

-- Les boutons du panneau de lecture pour le lecteur Blu-Ray

function BRSkipBackward()

Telco("BLURAY", "SKIPBACKWARD");

end;

BRFastBackward()

function BRFastBackward()

Telco("BLURAY", "FASTBACKWARD");

end;

Page 100/109

Page 101: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

BRBackward()

function BRBackward()

Telco("BLURAY", "BACKWARD");

end;

BRStop()

function BRStop()

Telco("BLURAY", "STOP");

end;

BRPause()

function BRPause()

Telco("BLURAY", "PAUSE");

end;

BRPlay()

function BRPlay()

Telco("BLURAY", "PLAY");

end;

BRFastForward()

function BRFastForward()

Telco("BLURAY", "FASTFORWARD");

end;

BRSkipForward()

function BRSkipForward()

Telco("BLURAY", "SKIPFORWARD");

end;

BREject()

function BREject()

Telco("BLURAY", "EJECT");

SetDVDNotPlaying();

NetRemote.GoDevice("BLURAY", "P.Library");

end;

BRTopMenu()

Page 101/109

Page 102: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

-- Les autres

function BRTopMenu()

Telco("BLURAY", "TOPMENU");

end;

BRLeftArrow()

function BRLeftArrow()

Telco("BLURAY", "LEFTARROW");

end;

BRUpArrow()

function BRUpArrow()

Telco("BLURAY", "UPARROW");

end;

BRRightArrow()

function BRRightArrow()

Telco("BLURAY", "RIGHTARROW");

end;

BRDownArrow()

function BRDownArrow()

Telco("BLURAY", "DOWNARROW");

end;

BROk()

function BROk()

Telco("BLURAY", "OK");

end;

BRAudio()

function BRAudio()

Telco("BLURAY", "AUDIO");

end;

BRDisplay()

function BRDisplay()

Telco("BLURAY", "DISPLAY");

Page 102/109

Page 103: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

end;

BRDisplayOnOffLangues()

-- Affiche/cache les contrôles des langues DVD

function BRDisplayOnOffLangues()

if ((not IsMsgDisplayed()) and (NetRemote.GetVariable("NR.F.subtitlesDVD") == "0")) then

if ((NetRemote.GetVariable("NR.F.languesDVD") == "0") and (not IsObjectDisplayed())) then

SwitchZeroAndOne('NR.F.languesDVD')

BRAudio();

SetObjectDisplayed();

elseif (NetRemote.GetVariable("NR.F.languesDVD") == "1") then

SwitchZeroAndOne('NR.F.languesDVD')

SetObjectNotDisplayed();

end;

end;

end;

BRDisplayOnOffSubtitles()

-- Affiche/cache les contrôles des sous-titres DVD

function BRDisplayOnOffSubtitles()

if ((not IsMsgDisplayed()) and (NetRemote.GetVariable("NR.F.languesDVD") == "0")) then

if ((NetRemote.GetVariable("NR.F.subtitlesDVD") == "0") and (not IsObjectDisplayed())) then

SwitchZeroAndOne('NR.F.subtitlesDVD')

BRDisplay();

BRRightArrow();

BRDownArrow();

BRRightArrow();

SetObjectDisplayed();

elseif (NetRemote.GetVariable("NR.F.subtitlesDVD") == "1") then

SwitchZeroAndOne('NR.F.subtitlesDVD')

SetObjectNotDisplayed();

end;

end;

end;

Page 103/109

Page 104: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Fichier preamp.lua

PREAMPPowerON()

-- Power ON

function PREAMPPowerON()

Telco("PREAMP", "POWER");

end;

PREAMPPowerOFF()

-- Power OFF

function PREAMPPowerOFF()

Telco("PREAMP", "STANDBY");

end;

Page 104/109

Page 105: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Fichier switch.lua

SWITCHPowerON()

-- Power ON

function SWITCHPowerON()

Telco("SWITCH", "POWER");

end;

SWITCHPowerOFF()

-- Power OFF

function SWITCHPowerOFF()

Telco("SWITCH", "POWER");

end;

Page 105/109

Page 106: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Fichier amplis.lua

AMPLISPowerON()

-- Power ON

function AMPLISPowerON()

Telco("AMPLIS", "POWER");

end;

AMPLISPowerOFF()

-- Power OFF

function AMPLISPowerOFF()

Telco("AMPLIS", "POWER");

end;

Page 106/109

Page 107: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Ficher display.lua

Contient les fonctions liées au choix du dispositf d'affichage

SetDisplayToTV()

-- Positionne le poste TV comme diffuseur

function SetDisplayToTV()

SetDisplay("TV", "SET_TV");

end;

SetDisplayToVP()

-- Positionne le videoprojecteur comme diffuseur

function SetDisplayToVP()

SetDisplay("VP", "SET_VP");

end;

SetDisplay(displayID, displayEvent)

-- Positionne le diffuseur sélectionné

function SetDisplay(displayID, displayEvent)

-- Renseigne NetRemote

NetRemote.SetVariable('NR.diffuseur', displayID);

-- Et Girder

SendEvent(displayEvent);

-- Affiche la page sélectionnée

GoPageWhenReady("PC", "P.Main");

-- Process terminé

NoProcessInitializing();

end;

GetDisplayName()

-- Retourne le nom de l'afficheur en cours

function GetDisplayName()

return (NetRemote.GetVariable("NR.diffuseur"));

end;

Page 107/109

Page 108: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Fichier vp.lua

Contient les fonctions liées à la gestion du video-projecteur

VPPowerON()

-- Allume le VP

function VPPowerON()

Telco("VP", "POWER");

end;

VPPowerOFF()

-- Eteint le VP

function VPPowerOFF()

Telco("VP", "POWER");

Telco("VP", "POWER");

end;

Page 108/109

Page 109: Table des matières - Dialoudialou.fr/netremote/asus/MyRemote_umpc.pdf · – PROCESS_PC_DVD_TV : le PC est utilisé comme source de diffusion audio/vidéo, le film est lu à partir

NetRemote et UMPC

Fichier sat.lua

Contient les fonctions liées à la gestion du terminal satellite

SATStartProcess()

-- Démarre une activité SAT

function SATStartProcess()

CloseMsg();

SetProcessName("SAT");

SetProcessReady();

GoPageWhenReady("SAT", "P.Main");

end;

SATStopProcess()

-- Arrête une activité terminal atellite

function SATStopProcess()

CloseMsg();

G_SATMenu = false;

CloseMenuNavigator();

SetProcessName("");

GoPageWhenReady("HOME", "P.Accueil");

end;

Page 109/109