##// END OF EJS Templates
New Plugin Manager and interface to remove all the previous crap!...
New Plugin Manager and interface to remove all the previous crap! Let's use Qt plugin API and make it much simpler.

File last commit:

r107:c459540a6dbd merge 0.6
r118:de85e8465e67 tip 1.0
Show More
socexplorerplugin.h
182 lines | 8.7 KiB | text/x-c | CLexer
Jeandet Alexis
First init of SocExplorer Repository.
r0 /*------------------------------------------------------------------------------
███████╗ ██████╗ ██████╗ ███████╗██╗ ██╗██████╗ ██╗ ██████╗ ██████╗ ███████╗██████╗
██╔════╝██╔═══██╗██╔════╝ ██╔════╝╚██╗██╔╝██╔══██╗██║ ██╔═══██╗██╔══██╗██╔════╝██╔══██╗
███████╗██║ ██║██║ █████╗ ╚███╔╝ ██████╔╝██║ ██║ ██║██████╔╝█████╗ ██████╔╝
╚════██║██║ ██║██║ ██╔══╝ ██╔██╗ ██╔═══╝ ██║ ██║ ██║██╔══██╗██╔══╝ ██╔══██╗
███████║╚██████╔╝╚██████╗ ███████╗██╔╝ ██╗██║ ███████╗╚██████╔╝██║ ██║███████╗██║ ██║
╚══════╝ ╚═════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚══════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
-- This file is a part of the SOC Explorer Software
Jeandet Alexis
Updated lab name!
r13 -- Copyright (C) 2011, Plasma Physics Laboratory - CNRS
Jeandet Alexis
First init of SocExplorer Repository.
r0 --
-- This program is free software; you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation; either version 2 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program; if not, write to the Free Software
-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-------------------------------------------------------------------------------*/
/*-- Author : Alexis Jeandet
-- Mail : alexis.jeandet@lpp.polytechnique.fr
----------------------------------------------------------------------------*/
#ifndef SOCEXPLORERPLUGIN_H
#define SOCEXPLORERPLUGIN_H
#include <QWidget>
#include <QAction>
#include <QDockWidget>
#include <QMainWindow>
#include <QList>
#include <QMenu>
#include <socexplorer.h>
#include <QObject>
#include <QVariant>
#include <QVariantList>
#include <malloc.h>
#include <QFile>
#include <stdint.h>
#include <QTextStream>
Added bool loadfile(abstractBinFile* file)...
r71 #include <abstractbinfile.h>
Jeandet Alexis
First init of SocExplorer Repository.
r0 #ifndef driver_Name
#define driver_Name "Plugin"
#endif
#ifndef driver_Author
#define driver_Author "No Author"
#endif
#ifndef driver_Version
#define driver_Version "0.0.0"
#endif
#ifndef driver_Description
#define driver_Description "No description."
#endif
#ifndef driver_can_be_root
#define driver_can_be_root 0
#endif
#ifndef driver_can_be_child
#define driver_can_be_child 0
#endif
#ifndef driver_VID
#define driver_VID 0
#endif
#ifndef driver_PID
#define driver_PID 0
#endif
#if defined(SOCEXPLORER_SDK_BUILD)
# define SOCEXPLORER_SDK_EXPORT Q_DECL_EXPORT
#else
# define SOCEXPLORER_SDK_EXPORT Q_DECL_IMPORT
#endif
//! socexplorerplugin is the base class for any SocExplorer plugin, it gives a standard interface to communicate
//! between each plugins and to interact with SocExplorer software.
class SOCEXPLORER_SDK_EXPORT socexplorerplugin : public QDockWidget
{
Q_OBJECT
public:
Cleaning complete ready for testing.
r80 //! Default plugin constructor, any plugin should call this constructor.
Some cleaning.
r10 socexplorerplugin(QWidget *parent = 0,bool createPyObject=true):QDockWidget(parent)
Jeandet Alexis
First init of SocExplorer Repository.
r0 {
Jeandet Alexis
Session manager almost complete.
r94 Q_UNUSED(createPyObject)
Some cleaning.
r10 closeAction=NULL;
menu=NULL;
ChildsMenu=NULL;
Jeandet Alexis
First init of SocExplorer Repository.
r0 this->Connected = false;
this->setFeatures(QDockWidget::DockWidgetMovable|QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetVerticalTitleBar);
_Name = new QString(driver_Name);
_Author = new QString(driver_Author);
_Version = new QString(driver_Version);
_Description = new QString(driver_Description);
_canBeChild = driver_can_be_child;
_canBeRoot = driver_can_be_root;
_VID = driver_VID;
_PID = driver_PID;
}
//! Tells if the plugin is connected, it is used to enable or disable all childrens interfaces.
virtual int isConnected();
//! Gives the associated Vendor IDentifier, usefull to automatically associate plugins with found
//! hardware while board enumeration.
virtual int VID(){return _PID;}
//! Gives the associated Product IDentifier, usefull to automatically associate plugins with found
//! hardware while board enumeration.
virtual int PID(){return _VID;}
//! Gives the plugin's base name, usefull to automatically generate instance name.
virtual QString baseName();
//! Gives the base address of the current instance, for example if your plugin is supposed to drive
//! an UART it will correspond to the address of it's first register. This address have at least to
//! be set by SocExplorer and it can be user accessible if you want.
virtual int baseAddress();
//! Sets the base address of the current instance, for example if your plugin is supposed to drive
//! an UART it will correspond to the address of it's first register. This address have at least to
added binary file loader, improved elf and srec loaders
r47 //! be set by SocExplorer and it can be user accessible if you want.
Jeandet Alexis
First init of SocExplorer Repository.
r0 virtual void setBaseAddress(unsigned int baseAddress);
QList<socexplorerplugin*> childs;
socexplorerplugin* parent;
QAction* closeAction;
Some cleaning.
r10 QString instanceName();
New register explorer WIP...
r79 QString instance(){return instanceName();}
Jeandet Alexis
First init of SocExplorer Repository.
r0 QMenu* menu;
QMenu* ChildsMenu;
signals:
//! Signal emited each time the plugin is about to be closed.
void closePlugin(socexplorerplugin* driver);
void activateSig(bool flag);
void registerObject(QObject* object,const QString& instanceName);
public slots:
virtual int registermenu(QMenu* menu);
virtual void postInstantiationTrigger();
//! Write slot this is the way your children plugins ask you for writing data.
//! If your plugin is supposed to have childern drivers you should implement this methode.
//! By default this methode forward the write request to the parent plugin.
//! \param Value Pointer the data buffer.
//! \param count Number of 32 bits words you should to write.
//! \param address Address from where you should to start to write.
//! \return Quantity of 32 bits words writtens.
virtual unsigned int Write(unsigned int* Value, unsigned int count,unsigned int address);
//! Read slot this is the way your children plugins ask you for reading data.
//! If your plugin is supposed to have childern drivers you should implement this methode.
//! By default this methode forward the write request to the parent plugin.
//! \param Value Pointer the data buffer.
//! \param count Number of 32 bits words you should to read.
//! \param address Address from where you should to start to read.
//! \return Quantity of 32 bits words read.
virtual unsigned int Read(unsigned int* Value, unsigned int count,unsigned int address);
virtual void closeMe();
virtual void activate(bool flag);
virtual void setInstanceName(const QString& newName);
Added bool loadfile(abstractBinFile* file)...
r71
virtual bool dumpMemory(unsigned int address,unsigned int count,QString file);
Jeandet Alexis
Fixed some cli bugs....
r98 virtual bool dumpMemory(unsigned int address,unsigned int count,QString file,const QString& format);
Added bool loadfile(abstractBinFile* file)...
r71 virtual bool memSet(unsigned int address,int value, unsigned int count);
virtual bool loadbin(unsigned int address,QString file);
virtual bool loadfile(abstractBinFile* file);
New register explorer WIP...
r79 QVariantList Read(unsigned int address, unsigned int count);
void Write(unsigned int address, QList<QVariant> dataList);
Some fixes on python plugin interface.
r85 socexplorerplugin* parentPlugin(){return this->parent;}
socexplorerplugin* toPlugin(){return (socexplorerplugin*)this;}
Jeandet Alexis
First init of SocExplorer Repository.
r0 protected:
int BaseAddress;
bool Connected;
QString* _Name;
QString* _Author;
QString* _Version;
QString* _Description;
Some cleaning.
r10 QString _instanceName;
Jeandet Alexis
First init of SocExplorer Repository.
r0 int _canBeChild;
int _canBeRoot;
int _VID;
int _PID;
};
#endif // SOCEXPLORERPLUGIN_H