Le forum français des radios FrSKY

Debogage des scripts LUA - quid d'un émulateur

Voir le sujet précédent Voir le sujet suivant Aller en bas

Debogage des scripts LUA - quid d'un émulateur

Message par Sacre100 le Ven 2 Jan 2015 - 19:59

Première idée que j'ai eu cette année : développer un émulateur qui permettent de déboguer les scripts LUA dans une IDE traditionnel.

J'utilise de plus en plus ZeroBraneStudio qui me permet déjà d'avoir un contrôle syntaxique, ce qui est déjà pas mal. Mais je suis demandé s'il était possible d'aller un peu plus loin et d'essayer de développer une solution pour pouvoir déboguer pas à pas les scripts pour OpenTx.

N'ayant pas grande expérience de LUA, j'ai tout à découvrir, entre autre toute la partie graphique mais ça n'a pas l'air trop compliqué si l'on reste dans quelque chose de simple. Voici le résultat après deux soirées d'exploration.



Pour l'instant, à part cet affichage, rien ne marche mais je vais essayer sans garantie de faire quelque-chose d'utilisable.

Si l'envie vous prend d'y contribuer, c'est bien volontiers, plus y'aura de bonnes idées, plus ça ira vite et ce sera bien.

En attendant, voici le bout de source sur lequel je travaille, n'hésitez pas, tous vos commentaires gentils ou pas seront les bienvenus.

Code:

-----------------------------------------------------------------------------
-- Name:        taranis.lua
-- Purpose:     OpenTx Taranis LUA emulator
-- Author:      Marco Ricci
-- Modified by:
-- Created:     01-Jan-2015
-- Copyright:   (c) 2015 Marco Ricci. All rights reserved.
-- Licence:     ???
-----------------------------------------------------------------------------

-- Load the wxLua module, does nothing if running from wxLua, wxLuaFreeze, or wxLuaEdit
package.cpath = package.cpath..";./?.dll;./?.so;../lib/?.so;../lib/vc_dll/?.dll;../lib/bcc_dll/?.dll;../lib/mingw_dll/?.dll;"
require("wx")

local frame, panel, bitmap = nil, nil, nil
local brush, pen
local mdc = wx.wxMemoryDC()
local lcd_width, lcd_height = 212, 64
local lcd_ratio, lcd_color = 2, "Blue"
local lcd_lock = false

local MENU_BUTTON_ID = 1
local PAGE_BUTTON_ID = 2
local EXIT_BUTTON_ID = 3
local PLUS_BUTTON_ID = 4
local MINUS_BUTTON_ID = 5
local ENT_BUTTON_ID = 6

lcd = {
  lock = function ()
    lcd_lock = true
  end,
  
  clear = function ()
    brush = wx.wxBrush("Blue", wx.wxSOLID )
    pen = wx.wxPen("Blue", wx.wxSOLID, 1)
    mdc:SelectObject(bitmap)
    mdc:SetBrush(brush)
    mdc:SetPen(pen)
    mdc:DrawRectangle(0, 0, 1 + lcd_width, 1 + lcd_height);
    mdc:SelectObject(wx.wxNullBitmap)
    brush:delete()
    pen:delete()
  end,
  
  drawPoint = function (x, y)
  end,

  drawLine = function (x1, y1, x2, y2, path, flags)
  end,

  drawRectangle = function (x, y, width, height)
  end,

  drawText = function (x, y, text, att)
  end,

  drawSwitch = function (x, y, switch, att)
  end,

  drawPixmap = function (x, y, path)
  end,

  drawScreenTitle = function (title, idx, cnt)
  end,

  drawGauge = function (x1, y1, w, h, fill, maxfill)
  end,

  drawChannel = function (x, y, source, att)
  end,

  drawNumber = function (x, y, number ,att)
  end,

  drawTimer = function (x, y, value, att)
  end,

  getLastPos = function()
  end,

  drawFilledRectangle = function (x, y, w, h, flags)
  end,

  drawSource = function (x, y, source, att)
  end,

  drawCombobox = function (x, y, w, list, idx, flags)
  end
}


-- paint event handler for the frame that's called by wxEVT_PAINT
local function OnPaint(event)
  -- must always create a wxPaintDC in a wxEVT_PAINT handler
  local dc = wx.wxPaintDC(panel)
  local wrk_image = bitmap:ConvertToImage()
  wrk_image:Rescale(lcd_ratio * lcd_width, lcd_ratio * lcd_height, wx.wxIMAGE_QUALITY_NORMAL)
  local wrk_bitmap = wx.wxBitmap(wrk_image)
  dc:DrawBitmap(wrk_bitmap, 100, 5, true)
  wrk_image:delete()
  wrk_bitmap:delete()
  dc:delete() -- always delete any wxDCs created when done
end

-- Create a function to encapulate the code, not necessary, but it makes it
--  easier to debug in some cases.
local function main()

    -- create the wxFrame window
    local size = wx.wxSize(640, 220)
    frame = wx.wxFrame( wx.NULL,            -- no parent for toplevel windows
                        wx.wxID_ANY,          -- don't need a wxWindow ID
                        "OpenTx Taranis LUA emulator", -- caption on the frame
                        wx.wxDefaultPosition, -- let system place the frame
                        size,  -- set the size of the frame
                        wx.wxDEFAULT_FRAME_STYLE ) -- use default frame styles
    size:delete()

    -- create a simple file menu
    local fileMenu = wx.wxMenu()
    fileMenu:Append(wx.wxID_EXIT, "E&xit", "Quit the program")

    -- create a simple help menu
    local helpMenu = wx.wxMenu()
    helpMenu:Append(wx.wxID_ABOUT, "&About", "About the OpenTx Taranis LUA emulator")

    -- create a menu bar and append the file and help menus
    local menuBar = wx.wxMenuBar()
    menuBar:Append(fileMenu, "&File")
    menuBar:Append(helpMenu, "&Help")

    -- attach the menu bar into the frame
    frame:SetMenuBar(menuBar)

    -- create a single child window, wxWidgets will set the size to fill frame
    panel = wx.wxPanel(frame, wx.wxID_ANY)
    
    -- create MENU, PAGE and EXIT button
    local position = wx.wxPoint()
    local button
    position.x = 5
    position.y =20
    button = wx.wxButton( panel, MENU_BUTTON_ID, "MENU", position)
    position.y = 56
    button = wx.wxButton( panel, PAGE_BUTTON_ID, "PAGE", position)
    position.y = 92
    button = wx.wxButton( panel, EXIT_BUTTON_ID, "EXIT", position)
    
    -- create and clear bitmap
    bitmap = wx.wxBitmap(lcd_width, lcd_height)
    lcd.clear()
    
    -- create PLUS, MINUS and ENT button
    position.x = 530
    position.y =20
    button = wx.wxButton( panel, PLUS_BUTTON_ID, "+", position)
    position.y = 56
    button = wx.wxButton( panel, MINUS_BUTTON_ID, "-", position)
    position.y = 92
    button = wx.wxButton( panel, ENT_BUTTON_ID, "ENT", position)
    position:delete()
    
    -- connect the paint event handler function with the paint event
    panel:Connect(wx.wxEVT_PAINT, OnPaint)

    -- create a simple status bar
    frame:CreateStatusBar(1)
    frame:SetStatusText("Welcome to Taranis LUA emulator.")

    -- connect the selection event of the exit menu item to an
    -- event handler that closes the window
    frame:Connect(wx.wxID_EXIT, wx.wxEVT_COMMAND_MENU_SELECTED,
                  function (event) frame:Close(true) end )

    -- connect the selection event of the about menu item
    frame:Connect(wx.wxID_ABOUT, wx.wxEVT_COMMAND_MENU_SELECTED,
        function (event)
            wx.wxMessageBox('OpenTx Taranis LUA emulator V0.1\n'..
                            'Copyright 2015 - Marco Ricci',
                            "About OpenTx Taranis LUA emulator",
                            wx.wxOK + wx.wxICON_INFORMATION,
                            frame)
        end )
  
    -- center and show the frame window
    frame:Center()
    frame:Show(true)
end

main()

-- Call wx.wxGetApp():MainLoop() last to start the wxWidgets event loop,
-- otherwise the wxLua program will exit immediately.
-- Does nothing if running from wxLua, wxLuaFreeze, or wxLuaEdit since the
-- MainLoop is already running or will be started by the C++ program.
wx.wxGetApp():MainLoop()
avatar
Sacre100

Messages : 1888
Date d'inscription : 30/11/2013
Age : 60
Localisation : Blonay - Suisse

Revenir en haut Aller en bas

Re: Debogage des scripts LUA - quid d'un émulateur

Message par blonblon le Ven 2 Jan 2015 - 20:33

Bonsoir Sacre100

Peut tu detailler ce que tu pense faire, ainsi que ce que tu attend du code que tu a poste.

Avant de se lancer dans la programmation tout azimuts je pense qu'il faut poser un plan de travail, les outils et programme que l'on va utiliser pour que tous ceux qui vont s'investir travaillent sur les memes choses.
avatar
blonblon

Messages : 220
Date d'inscription : 25/03/2014
Age : 66
Localisation : pres d'Uzes (Gard)

Revenir en haut Aller en bas

Re: Debogage des scripts LUA - quid d'un émulateur

Message par djsyl le Ven 2 Jan 2015 - 21:04

Très bonne idée je vais suivre ce post avec attention

dans les chose a ajouter

un écran avec des capteurs virtuels sur les quels on peut simuler de valeur

et quelque chose de sympa pour positionner text et image

Merci
avatar
djsyl

Messages : 1322
Date d'inscription : 11/12/2014
Age : 58
Localisation : Yerres (91330)

http://club-aquilon.fr

Revenir en haut Aller en bas

Re: Debogage des scripts LUA - quid d'un émulateur

Message par Sacre100 le Ven 2 Jan 2015 - 21:17

blonblon a écrit:Bonsoir Sacre100

Peut tu detailler ce que tu pense faire, ainsi que ce que tu attend du code que tu a poste.

Avant de se lancer dans la programmation tout azimuts je pense qu'il faut poser un plan de travail, les outils et programme que l'on va utiliser pour que tous ceux qui vont s'investir travaillent sur les memes choses.

Tu as raison, faut que je précise l'intention derrière tout ça.

Dans les grandes lignes, c'est d'écrire un module qui émule les fonctions d'OpenTx pour LUA :
- toutes les fonctions de base (getValue, getVersion, etc ...)
- toutes les fonctions lcd (lcd.drawPoint, lcd.drawText, etc..)
- et toutes les fonctions model (model.getInfos, model.setInfos, etc...)
et émule les appels que fait OpenTx :
- init()
- background()
- run(...)

De plus, il faudra définir une convention pour activer ce module lorsque le script n'est pas exécuté sur la radio ou dans le simulateur. Je pense à quelque chose comme cà en début et en fin de script :
Code:

    if not lcd then require "emulator" end
    ...
    ...
    ...
    if emulator then
       emulator.start({init=..., run=..., background=..., input=..., output=...})
    else
       return {init=..., run=..., background=..., input=..., output=...}
    end

L'idée c'est que lorsque l'on tourne avec l'émulateur dans un IDE comme ZeroBraneStudio, on puisse mettre des points d'arrêt, consulter des valeurs ou mettre de print(...) pour aider au débogage d'un script.

En dehors de la mécanique de base pour émuler le fonctionnement d'openTx, y'a une cinquantaine de fonction à développer.

En gros, voilà mes idées.
avatar
Sacre100

Messages : 1888
Date d'inscription : 30/11/2013
Age : 60
Localisation : Blonay - Suisse

Revenir en haut Aller en bas

Re: Debogage des scripts LUA - quid d'un émulateur

Message par blonblon le Ven 2 Jan 2015 - 21:26

Au niveau language a quoi pense tu.

D'apres ce que j'ai vue sur le net et si je ne me suis pas trompe ZeroBraneStudio est payant.

Lua est fourni avec wxLuaEditor donc gratuit peut on l'utiliser.

Lua peut s'interfacer avec un language C ou C++ est-ce utile
avatar
blonblon

Messages : 220
Date d'inscription : 25/03/2014
Age : 66
Localisation : pres d'Uzes (Gard)

Revenir en haut Aller en bas

Re: Debogage des scripts LUA - quid d'un émulateur

Message par Sacre100 le Ven 2 Jan 2015 - 21:27

djsyl a écrit:Très bonne idée je vais suivre ce post avec attention

dans les chose a ajouter

un écran avec des capteurs virtuels sur les quels on peut simuler de valeur

et quelque chose de sympa pour positionner text et image

Merci

Très bonne idée, surement pas facile à réaliser mais à retenir.

Une idée que j'avais, c'était l'exploitation des logs de la Taranis pour simuler un vol, il y a la télémétrie et les entrées, c'est déjà beaucoup.
avatar
Sacre100

Messages : 1888
Date d'inscription : 30/11/2013
Age : 60
Localisation : Blonay - Suisse

Revenir en haut Aller en bas

Re: Debogage des scripts LUA - quid d'un émulateur

Message par Sacre100 le Ven 2 Jan 2015 - 21:52

blonblon a écrit:Au niveau language a quoi pense tu.

D'apres ce que j'ai vue sur le net et si je ne me suis pas trompe ZeroBraneStudio est payant.

Lua est fourni avec wxLuaEditor donc gratuit peut on l'utiliser.

Lua peut s'interfacer avec un language C ou C++ est-ce utile

Je préfère de loin un langage de script comme LUA (ou REBOL) car je ne suis pas du tout un fan des make qui me donnent des boutons.

ZeroBraneStudio est aussi gratuit si en échange on supporte le projet (en lui faisant de la pub, en participant au forum ou à la documentation, etc...).

Par contre, pour s'assurer que ce que l'on fait est compatible avec plusieurs IDE, c'est excellent si quelque-uns développent avec wxLuaEditor et d'autres avec ZeroBraneStudio ou un autre IDE.
avatar
Sacre100

Messages : 1888
Date d'inscription : 30/11/2013
Age : 60
Localisation : Blonay - Suisse

Revenir en haut Aller en bas

Re: Debogage des scripts LUA - quid d'un émulateur

Message par CoyotteDundee le Ven 2 Jan 2015 - 22:55

Hello Sacre,

Excellente idée... Par contre, comme le propose Blonblon, il serait peut-être  bon de poser le clavier et de réfléchir un peu à ce que tu veux obtenir.
Les scripts LUA interagissent +- intimement avec la Taranis (selon le type de script).
Pour pouvoir tester un script il va donc falloir fournir un environnement de fonctionnement qui va simuler la Taranis ce qui ne va pas être une mince affaire, sans compter qu'il va falloir adapter cela au fur et à mesure qu'OpenTx évolue.
De plus, comme l'indique

Hors, il existe déjà un émulateur de Taranis, fonctionnel et maintenu par l'équipe d'OpenTx qui se trouve dans Companion ...
Dès lors, une piste de réflexion pourrait être de voir dans quelle mesure il n'est pas possible d'utiliser ce qui existe déjà à ce niveau et implémenter le débuggeur dans Companion, ce qui pourrait représenter moins de travail que d'émuler un environnement complet...
Mais ce n'est qu'une piste, bien évidemment...

Bons vols,

Coyotte
avatar
CoyotteDundee

Messages : 1748
Date d'inscription : 03/03/2014
Age : 53
Localisation : Montegnée (Liège)

http://blog.baily-fouss.be/

Revenir en haut Aller en bas

Re: Debogage des scripts LUA - quid d'un émulateur

Message par blonblon le Ven 2 Jan 2015 - 23:07

Je pense comme toi CoyotteDundee, cependant l'émulateur Taranis ne possede pas de debugger et LUA est interfacé avec un language C ou C++, ce qui n'est pas simple meme avec les sources.

L'idée de Sacre100 est plutot de faire un programme indépendant de compagnon qui utilise le debugger d'un editeur LUA, cependant il faut je pense réecrire les fonctions de gestion Taranis pas simple non plus.
avatar
blonblon

Messages : 220
Date d'inscription : 25/03/2014
Age : 66
Localisation : pres d'Uzes (Gard)

Revenir en haut Aller en bas

Re: Debogage des scripts LUA - quid d'un émulateur

Message par djsyl le Ven 2 Jan 2015 - 23:08

si ça peut aider
[Vous devez être inscrit et connecté pour voir ce lien]
avatar
djsyl

Messages : 1322
Date d'inscription : 11/12/2014
Age : 58
Localisation : Yerres (91330)

http://club-aquilon.fr

Revenir en haut Aller en bas

Re: Debogage des scripts LUA - quid d'un émulateur

Message par CoyotteDundee le Ven 2 Jan 2015 - 23:50

Après quelques recherches sur le net, il appert que LUA dispose d'une interface de débogage (Un moyen de retrouver de l'info lors d'une exécution, pas un IDE !) qui devrait permettre d'être notifié lorsque certains évènements se produisent...
(Appel de fonction, retour de fonction, ...)
Le "problème" va être de "figer" le fonctionnement de la radio lorsque l'IDE attends une instruction pour poursuivre l'exécution d'un script...
Pas simple...
De plus il faut trouver le moyen de simuler les paramètres d'entrée autres que les manches et les interrupteurs ( GPS, Vitesse, tenson de batterie, ...)
A ce titre, "rejouer" un fichier de log en tant que paramètres d'entrée (cf idée de Sacre ) serait une belle approche globale, indépendamment d'un débugger.

Coyotte
avatar
CoyotteDundee

Messages : 1748
Date d'inscription : 03/03/2014
Age : 53
Localisation : Montegnée (Liège)

http://blog.baily-fouss.be/

Revenir en haut Aller en bas

Re: Debogage des scripts LUA - quid d'un émulateur

Message par Sacre100 le Sam 3 Jan 2015 - 10:33

Vous mettez le doigt sur un point tout à fait pertinent :
- soit travailler sur le simulateur d'OpenTx pour y ajouter l'édition et le débogage des scripts
- soit développer une solution indépendante en s'appuyant sur les éditeurs existant.

Honnêtement, je ne sais pas ce qui est mieux, d'un côté, il faut comprendre dans les sources en C/C++ le fonctionnement du simulateur, de l'autre, il faut réinventer (partiellement) la roue.

Même si cela fait plus de 30 ans que j'écris occasionnellement des programmes en C, ce n'est pas ma tasse de thé et je préfère de loin LUA ou un autre langage de script.

Ce qui est bien en tout cas, c'est que cela fait émerger des idées, ça c'est bien.
avatar
Sacre100

Messages : 1888
Date d'inscription : 30/11/2013
Age : 60
Localisation : Blonay - Suisse

Revenir en haut Aller en bas

Re: Debogage des scripts LUA - quid d'un émulateur

Message par Belov le Sam 3 Jan 2015 - 11:39

Idée à creuser

Si je comprends bien, tu parles de faire un simulateur, le debugger LUA étant déjà présent dans l'IDE (que ce soit ZeroBrane Studio ou wxLUA)

Pour ma part, j'utilise le debugger de l'IDE pour faire les vérifications syntaxiques et le débogage de base en construisant des jeux de données spécifiques (soit sous forme de fonctions spécifiques, soit en chargeant des fichiers externes)

Ensuite, j'utilise le simulateur d'OpenTX en sortant quelques variables pour vérification.

Vouloir refaire le simulateur d'OpenTX va être très compliqué.

Une piste à creuser : la Taranis se connecte au PC comme une manette sur port USB. Est ce que le boulot ne consiste pas à créer une bibliothèque (API) qui reprend les paramètres de cette "manette" ?

EDIT :
Je n'ai pas encore toucher aux pages d'affichage via LUA, alors je parle peut être dans le vide absolu.
Est ce qu'il n'y a pas matière à faire une bibliothèque de composants plus simple à utiliser, du genre Afficher_Tension(x,y) qui dessine dans le rectangle, positionne en x,y, aligne à droite, etc. ?
avatar
Belov

Messages : 415
Date d'inscription : 01/01/2014
Age : 48
Localisation : Rennes

Revenir en haut Aller en bas

Re: Debogage des scripts LUA - quid d'un émulateur

Message par Sacre100 le Sam 3 Jan 2015 - 11:50

Refaire un simulateur, non, non, en tout cas pas, je ne me vois pas écrire la lecture d'un fichier EEPE ni simuler toutes les phases, entrées, mixages, etc...

Par contre, si on pouvait déjà émuler toute la partie lcd, ça faciliterait la mise au point des écrans (telemetry, wizzard et function script) et ça serait déjà pas mal.

Récupérer l'entrée manette USB de la Taranis, ça c'est aussi une bonne idée à retenir.
avatar
Sacre100

Messages : 1888
Date d'inscription : 30/11/2013
Age : 60
Localisation : Blonay - Suisse

Revenir en haut Aller en bas

Re: Debogage des scripts LUA - quid d'un émulateur

Message par Sacre100 le Sam 3 Jan 2015 - 12:07

Belov a écrit:
EDIT :
Je n'ai pas encore toucher aux pages d'affichage via LUA, alors je parle peut être dans le vide absolu.
Est ce qu'il n'y a pas matière à faire une bibliothèque de composants plus simple à utiliser, du genre Afficher_Tension(x,y) qui dessine dans le rectangle, positionne en x,y, aligne à droite, etc. ?

Malheureusement, la gestion des bibliothèques n'est pas activée dans OpenTx et l'usage du require provoque une erreur. J'aurais bien aimé avoir ça quand j'ai écrit predimrc.lua car l'expérience acquise à ce moment aurait pû être facilement réutilisé par la suite. Bon, c'est compréhensible vu le peu de mémoire disponible dans la Taranis mais c'est quand même dommage.
avatar
Sacre100

Messages : 1888
Date d'inscription : 30/11/2013
Age : 60
Localisation : Blonay - Suisse

Revenir en haut Aller en bas

Re: Debogage des scripts LUA - quid d'un émulateur

Message par blonblon le Sam 3 Jan 2015 - 12:30

Pour ce qui est de récupèrer les infos via le port usb c'est tout a fait possible mais il faut utiliser un langage je l'ai fait avec une librairie " rawinput ".

A partir des sources du simulateur PC OpenTx je ne sais pas si cela est faisable assez facilement.
avatar
blonblon

Messages : 220
Date d'inscription : 25/03/2014
Age : 66
Localisation : pres d'Uzes (Gard)

Revenir en haut Aller en bas

Re: Debogage des scripts LUA - quid d'un émulateur

Message par Sacre100 le Dim 4 Jan 2015 - 23:15

Content de ces quatre soirées car j'obtiens un premier résultat qui me plait bien.

C'est ici : [Vous devez être inscrit et connecté pour voir ce lien]

Pour ZeroBraneStudio, il faut :
- décompresser le .zip dans le répertoire myprograms
- s'assurer que le "Project Directory" soit bien le répertoire OpenTxEmulator

Pour tester, il faut lancer le script telem1.lua
On peut mettre des points d'arrêt, surveiller des variables ou afficher le stack, c'est pas mal.
J'ai vérifié, il marche aussi dans le simulateur ce qui montre que le protocole d'appel semble correct.
Par contre, je n'ai pas vérifié si les print(...) boguent sur la radio, c'est encore à contrôler.
Parfois, ça bogue lors de la fermeture de la fenêtre, c'est aléatoire et je n'ai pas encore compris pourquoi.

Pour wxLua, je ne sais pas, je n'ai pas testé.
avatar
Sacre100

Messages : 1888
Date d'inscription : 30/11/2013
Age : 60
Localisation : Blonay - Suisse

Revenir en haut Aller en bas

Re: Debogage des scripts LUA - quid d'un émulateur

Message par djsyl le Lun 5 Jan 2015 - 9:32

Bravo excellent début !

Vivement la suite Wink
avatar
djsyl

Messages : 1322
Date d'inscription : 11/12/2014
Age : 58
Localisation : Yerres (91330)

http://club-aquilon.fr

Revenir en haut Aller en bas

Re: Debogage des scripts LUA - quid d'un émulateur

Message par CoyotteDundee le Lun 5 Jan 2015 - 13:01

Hello !
Les grands esprits se rencontrent :

Lu sur le RC groups "Discussion LUA scripting - Technical discussion" :

First version of Companion with debug output is available at [Vous devez être inscrit et connecté pour voir ce lien]

Il ne s'agit que d'une première version et il reste peut-être des soucis à résoudre...
Mais c'est un (bon) début...

Bons vols,

Coyotte
avatar
CoyotteDundee

Messages : 1748
Date d'inscription : 03/03/2014
Age : 53
Localisation : Montegnée (Liège)

http://blog.baily-fouss.be/

Revenir en haut Aller en bas

Re: Debogage des scripts LUA - quid d'un émulateur

Message par Sacre100 le Lun 5 Jan 2015 - 13:51

Je suis aussi tombé dessus hier soir, c'est très positif, ça va bien aider à déboguer les script. Je n'ai pas testé mais si la 14 ne sort pas dans quelque temps, je ferai un essais.
avatar
Sacre100

Messages : 1888
Date d'inscription : 30/11/2013
Age : 60
Localisation : Blonay - Suisse

Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum