Qt » biwak.diff
| CMakeLists.txt | ||
|---|---|---|
| 485 | 485 | 
    )  | 
| 486 | 486 | 
    endif()  | 
| 487 | 487 | |
| 488 | 
    target_compile_definitions(  | 
|
| 489 | 
       ${PROJECT_NAME}
   | 
|
| 490 | 
    PUBLIC  | 
|
| 491 | 
          -DBIWAK_PLATFORM=${MCU_PLATFORM}
   | 
|
| 492 | 
    )  | 
|
| 493 | ||
| 488 | 494 | 
    target_include_directories(  | 
| 489 | 495 | 
       ${PROJECT_NAME}
   | 
| 490 | 496 | 
    PRIVATE  | 
| include/biwak/biwak.h | ||
|---|---|---|
| 80 | 80 | |
| 81 | 81 | 
    //int getSystemTicker(void);  | 
| 82 | 82 | 
    int biwakInit();  | 
| 83 | 
       int biwakDeInit();
   | 
|
| 83 | 
    int biwakDeInit();  | 
|
| 84 | 84 | 
    int biwakEventLoop();  | 
| 85 | 
    int biwakExec();  | 
|
| 85 | 86 | |
| 86 | 87 | 
    class CFlash;  | 
| 87 | 88 | 
    class CTimer;  | 
| include/biwak/gpio.hpp | ||
|---|---|---|
| 193 | 193 | 
    public:  | 
| 194 | 194 | 
    CGpio( EGpioPeripheral eGpioPeripheral, EGpioPin eGpioPin  | 
| 195 | 195 | 
    , const SGpioMode &gpioMode=gpioModeInput, int altFunc=0);  | 
| 196 | 
    CGpio( EGpioPeripheral eGpioPeripheral, EGpioPin eGpioPin  | 
|
| 197 | 
    , const SGpioMode &gpioMode, int altFunc, const char* label);  | 
|
| 196 | 198 | 
    ~CGpio();  | 
| 197 | 199 | 
    static int init( EGpioPeripheral eGpioPeripheral, EGpioPin eGpioPin  | 
| 198 | 200 | 
    , const SGpioMode &gpioMode=gpioModeInput, int altFunc=0 );  | 
| include/biwak/led.hpp | ||
|---|---|---|
| 65 | 65 | 
    };  | 
| 66 | 66 | 
     | 
| 67 | 67 | 
    CLed(EGpioPeripheral _eGpioPeripheral, EGpioPin _eGpioPin);  | 
| 68 | 
    CLed(EGpioPeripheral _eGpioPeripheral, EGpioPin _eGpioPin, const char* label);  | 
|
| 68 | 69 | 
    ~CLed();  | 
| 69 | 70 | 
     | 
| 70 | 71 | 
    void eventLoop( );  | 
| include/biwak/linux/boardgui.h | ||
|---|---|---|
| 7 | 7 | 
    #include <QLabel>  | 
| 8 | 8 | 
    #include <QCheckBox>  | 
| 9 | 9 | 
    #include <QPushButton>  | 
| 10 | 
    #include <QTimer>  | 
|
| 11 | 
    #include <QEvent>  | 
|
| 10 | 12 | |
| 11 | 13 | 
    namespace Ui {
   | 
| 12 | 14 | 
    class CBoardGui;  | 
| ... | ... | |
| 28 | 30 | 
    // QPushButton **inPushArray;  | 
| 29 | 31 | 
    //SButtonGroup **buttonArray;  | 
| 30 | 32 | 
    QSpacerItem *verticalSpacerIn;  | 
| 33 | 
    QTimer m_eventTimer;  | 
|
| 31 | 34 | |
| 32 | 35 | 
    QPixmap *pixmapGraphicDisplay;  | 
| 33 | 36 | |
| ... | ... | |
| 59 | 62 | 
    //void slotInStateClicked(bool checked);  | 
| 60 | 63 | 
    void slotInStateReleased();  | 
| 61 | 64 | 
    void slotInStatePressed();  | 
| 65 | 
    void slotEventTimer();  | 
|
| 62 | 66 | |
| 63 | 67 | 
    signals:  | 
| 64 | 68 | 
    void signalInputChanged( int extiIndex, int state );  | 
| 65 | 69 | |
| 66 | 70 | 
    private:  | 
| 67 | 71 | 
    Ui::CBoardGui *ui;  | 
| 72 | 
    public:  | 
|
| 73 | ||
| 74 | 
    virtual bool event(QEvent *event) override  | 
|
| 75 | 
          {
   | 
|
| 76 | 
    // The quit event has to be catched to actually exit the main process.  | 
|
| 77 | 
    // Signal aboutToQuit() is not emitted when using  | 
|
| 78 | 
    // processEvents() in a loop instead of exit().  | 
|
| 79 | 
    if( event->type() == QEvent::WindowDeactivate )  | 
|
| 80 | 
             {
   | 
|
| 81 | 
    slotExited();  | 
|
| 82 | 
    }  | 
|
| 83 | 
    return( QMainWindow::event(event) );  | 
|
| 84 | 
    }  | 
|
| 85 | ||
| 68 | 86 | 
    };  | 
| 69 | 87 | |
| 70 | 88 | 
    //extern CBoardGui *pBoardGui;  | 
| include/biwak/output.hpp | ||
|---|---|---|
| 35 | 35 | |
| 36 | 36 | 
    public:  | 
| 37 | 37 | 
    COutput(EGpioPeripheral _eGpioPeripheral, EGpioPin _eGpioPin );  | 
| 38 | 
    COutput(EGpioPeripheral _eGpioPeripheral, EGpioPin _eGpioPin, const char* label );  | 
|
| 38 | 39 | 
    ~COutput();  | 
| 39 | 40 | 
     | 
| 40 | 41 | 
    void switchOn();  | 
| src/led.cpp | ||
|---|---|---|
| 31 | 31 | 
    }  | 
| 32 | 32 | |
| 33 | 33 | |
| 34 | 
    /// \brief Le contructeur  | 
|
| 35 | 
    ///  | 
|
| 36 | 
    CLed::CLed(EGpioPeripheral _eGpioPeripheral, EGpioPin _eGpioPin, const char* label)  | 
|
| 37 | 
    :COutput(_eGpioPeripheral, _eGpioPin, label) // gpioModeLed  | 
|
| 38 | 
    {
   | 
|
| 39 | 
    m_blinkMode=nullptr;  | 
|
| 40 | 
    }  | 
|
| 41 | ||
| 42 | ||
| 34 | 43 | 
    CLed::~CLed()  | 
| 35 | 44 | 
    {
   | 
| 36 | 45 | |
| 37 | 46 | 
    }  | 
| 38 | 47 | |
| 48 | ||
| 39 | 49 | 
    void CLed::setBlinkMode( SBlinkMode blinkMode )  | 
| 40 | 50 | 
    {
   | 
| 41 | 51 | 
    if( m_blinkMode == blinkMode )  | 
| ... | ... | |
| 65 | 75 | 
    setValue( m_blinkState );  | 
| 66 | 76 | 
    }  | 
| 67 | 77 | |
| 78 | ||
| 68 | 79 | 
    #if 0  | 
| 69 | 80 | 
    /// \brief Let the led blink  | 
| 70 | 81 | 
    ///  | 
| ... | ... | |
| 76 | 87 | 
    }  | 
| 77 | 88 | 
    #endif  | 
| 78 | 89 | |
| 90 | ||
| 79 | 91 | 
    /// \brief Handles the predefined blink modes  | 
| 80 | 92 | 
    ///  | 
| 81 | 93 | 
    /// Has to be called cyclic  | 
| src/linux/biwak.cpp | ||
|---|---|---|
| 59 | 59 | |
| 60 | 60 | 
    //qtplatform *pQtplatform=NULL;  | 
| 61 | 61 | 
    //QApplication a(param_argc, param_argv);  | 
| 62 | 
    QApplication* pApplication=NULL;  | 
|
| 63 | 
    #define a (*pApplication)  | 
|
| 62 | 
    QApplication* pApplication = nullptr;  | 
|
| 63 | 
    extern CBoardGui* pBoardGui;  | 
|
| 64 | 
    //#define a (*pApplication)  | 
|
| 64 | 65 | 
    /*  | 
| 65 | 66 | 
    void MainWindow::eventLoop()  | 
| 66 | 67 | 
    {
   | 
| ... | ... | |
| 92 | 93 | 
    };  | 
| 93 | 94 | 
    */  | 
| 94 | 95 | |
| 95 | 
    int biwakInit()  | 
|
| 96 | 
    static void cleanup_ptr()  | 
|
| 97 | 
     {
   | 
|
| 98 | 
        printf("Cleaning up\n");
   | 
|
| 99 | 
    }  | 
|
| 100 | ||
| 101 | 
    int biwakInit()  | 
|
| 96 | 102 | 
    {
   | 
| 97 | 
    /*  | 
|
| 103 | 
    printf( "\n" );  | 
|
| 104 | 
    printf( "0x%p\n", QApplication::instance());  | 
|
| 98 | 105 | 
    pApplication=new QApplication(param_argc, param_argv);  | 
| 106 | ||
| 99 | 107 | 
    pBoardGui=new CBoardGui;  | 
| 100 | 108 | 
    pBoardGui->show();  | 
| 109 | 
    pApplication->setQuitOnLastWindowClosed(true);  | 
|
| 101 | 110 | |
| 102 | 
    pArbiter=new CArbiter(pBoardGui);  | 
|
| 111 | 
    printf( "0x%p\n", QApplication::instance());  | 
|
| 112 | 
    printf( "0x%p\n", pApplication);  | 
|
| 113 | 
    qAddPostRoutine(cleanup_ptr);  | 
|
| 114 | 
    //if( qApp() != pApplication )  | 
|
| 115 | 
       //{
   | 
|
| 116 | 
    // exit(22);  | 
|
| 117 | 
    // }  | 
|
| 103 | 118 | |
| 104 | 
    QObject::connect(&a, SIGNAL(aboutToQuit()), pBoardGui, SLOT(slotExited()));  | 
|
| 119 | 
    /*  | 
|
| 120 | 
    pArbiter=new CArbiter(pBoardGui);  | 
|
| 105 | 121 | 
    */  | 
| 122 | 
    //QObject::connect(&pApplication, SIGNAL(aboutToQuit()), pBoardGui, SLOT(slotExited()));  | 
|
| 123 | ||
| 106 | 124 | 
    return(0);  | 
| 107 | 125 | 
    }  | 
| 108 | 126 | |
| 109 | 127 | |
| 110 | 128 | 
    int biwakEventLoop()  | 
| 111 | 129 | 
    {
   | 
| 112 | 
    /*  | 
|
| 113 | 
    if(a.hasPendingEvents())  | 
|
| 114 | 
    a.processEvents();  | 
|
| 130 | 
    QCoreApplication::processEvents();  | 
|
| 115 | 131 | |
| 116 | 
    if(qpf.doExit)  | 
|
| 132 | 
    // closingDown() is not working. Application has to indicate quit via  | 
|
| 133 | 
    // catching event.  | 
|
| 134 | 
    if( pApplication->closingDown() )  | 
|
| 117 | 135 | 
       {
   | 
| 118 | 136 | 
    //delete pApplication; // must not delete after quit  | 
| 137 | 
          printf("Closing down\n");
   | 
|
| 119 | 138 | 
    pApplication = NULL;  | 
| 120 | 
          return(1);
   | 
|
| 139 | 
          exit(1);
   | 
|
| 121 | 140 | 
    }  | 
| 122 | 
    */  | 
|
| 123 | 141 | |
| 124 | 142 | 
    logEventLoop();  | 
| 125 | 143 | 
    #if IS_ENABLED( BIWAK_LOG_HEARTBEAT )  | 
| 126 | 144 | 
    logHeartBeat( ELogCategory::Loop );  | 
| 127 | 145 | 
    #endif  | 
| 128 | 146 | |
| 147 | 
    //pApplication->exec();  | 
|
| 148 | 
    //exit(23);  | 
|
| 149 | ||
| 129 | 150 | 
    return(0);  | 
| 130 | 151 | 
    }  | 
| 131 | 152 | |
| 153 | 
    int biwakExec()  | 
|
| 154 | 
    {
   | 
|
| 155 | 
    return( pApplication->exec() );  | 
|
| 156 | 
    }  | 
|
| 132 | 157 | |
| 158 | 
    #if 0  | 
|
| 133 | 159 | 
    void checkBootLoader()  | 
| 134 | 160 | 
    {
   | 
| 135 | 161 | 
    return;  | 
| 136 | 162 | 
    }  | 
| 137 | ||
| 163 | 
    #endif  | 
|
| 138 | 164 | |
| 139 | 165 | 
    void setStdio(CIOStream *io)  | 
| 140 | 166 | 
    {
   | 
| 141 | 167 | 
    // Does not make much sense in linux? The printf should end up in a Qt widget  | 
| 142 | 168 | 
    };  | 
| 143 | 169 | |
| 144 | ||
| 145 | 170 | 
    #endif  | 
| 146 | 171 | |
| 147 | 172 | |
| src/linux/boardgui.cpp | ||
|---|---|---|
| 4 | 4 | 
    #include <QSpinBox>  | 
| 5 | 5 | 
    #include <QPushButton>  | 
| 6 | 6 | 
    #include <QLabel>  | 
| 7 | 
    #include <biwak/biwak.h>  | 
|
| 7 | 8 | |
| 8 | 9 | 
    #include <lepto/log.h>  | 
| 9 | 10 | |
| ... | ... | |
| 85 | 86 | 
    pixmapGraphicDisplay=new QPixmap( 128, 128);  | 
| 86 | 87 | 
    pixmapGraphicDisplay->fill( Qt::black );  | 
| 87 | 88 | 
    ui->graphicDisplay->setPixmap( *pixmapGraphicDisplay );  | 
| 89 | ||
| 90 | 
    connect(QApplication::instance(), SIGNAL(aboutToQuit()), this, SLOT(slotExited()));  | 
|
| 91 | 
    connect(&m_eventTimer, SIGNAL(timeout()), this, SLOT(slotEventTimer()));  | 
|
| 92 | 
    connect(this, SIGNAL( destroyed(QObject *obj)), this, SLOT(slotExited()));  | 
|
| 93 | ||
| 94 | 
    m_eventTimer.start(10);  | 
|
| 88 | 95 | 
    }  | 
| 89 | 96 | |
| 90 | 97 | |
| ... | ... | |
| 146 | 153 | |
| 147 | 154 | 
    void CBoardGui::slotExited()  | 
| 148 | 155 | 
    {
   | 
| 149 | 
       lInfo ( "doExit!" );
   | 
|
| 156 | 
       printf ( "CBoardGui::doExit!\n" );
   | 
|
| 150 | 157 | 
    doExit=true;  | 
| 151 | 158 | |
| 152 | 159 | 
    exit(0);  | 
| ... | ... | |
| 244 | 251 | 
    slotInStateChanged( false);  | 
| 245 | 252 | 
    }  | 
| 246 | 253 | |
| 254 | 
    void CBoardGui::slotEventTimer()  | 
|
| 255 | 
    {
   | 
|
| 256 | 
    // biwakEventLoop();  | 
|
| 257 | 
       // printf(".");
   | 
|
| 258 | 
    // fflush(stdout);  | 
|
| 259 | 
    }  | 
|
| 247 | 260 | |
| 248 | 261 | 
    QLabel *CBoardGui::getGraphicDispay()  | 
| 249 | 262 | 
    {
   | 
| src/linux/gpio.cpp | ||
|---|---|---|
| 42 | 42 | |
| 43 | 43 | 
    public:  | 
| 44 | 44 | 
    CGpioDimpl( EGpioPeripheral _eGpioPeripheral, EGpioPin _eGpioPin  | 
| 45 | 
    , const SGpioMode &gpioMode, int altFunc=0 )  | 
|
| 45 | 
                   , const SGpioMode &gpioMode, int altFunc=0, const char* label="?" )
   | 
|
| 46 | 46 | 
       {
   | 
| 47 | 47 | 
    Ui::CBoardGui *ui=CBoardGui::getInstanceUi();  | 
| 48 | 48 | |
| ... | ... | |
| 87 | 87 | 
    break;  | 
| 88 | 88 | 
    }  | 
| 89 | 89 | |
| 90 | 
             m_checkBox->setText( QString("%1%2").arg(type).arg(ioCounter) );
   | 
|
| 90 | 
             m_checkBox->setText( QString("%1%2 %3").arg(type).arg(ioCounter).arg(label) );
   | 
|
| 91 | 91 | 
    }  | 
| 92 | 92 | 
    ioCounter++;  | 
| 93 | 93 | 
    }  | 
| ... | ... | |
| 102 | 102 | |
| 103 | 103 | 
    CGpio::CGpio(EGpioPeripheral _eGpioPeripheral, EGpioPin _eGpioPin  | 
| 104 | 104 | 
    , const SGpioMode &gpioMode, int altFunc)  | 
| 105 | 
    :CGpio(_eGpioPeripheral, _eGpioPin, gpioMode, altFunc, "?")  | 
|
| 106 | 
    {
   | 
|
| 107 | ||
| 108 | 
    }  | 
|
| 109 | ||
| 110 | 
    CGpio::CGpio(EGpioPeripheral _eGpioPeripheral, EGpioPin _eGpioPin  | 
|
| 111 | 
    , const SGpioMode &gpioMode, int altFunc, const char* label)  | 
|
| 105 | 112 | 
    {
   | 
| 106 | 113 | 
    #if 1  | 
| 107 | 114 | 
    m_eGpioPeripheral=_eGpioPeripheral;  | 
| ... | ... | |
| 109 | 116 | |
| 110 | 117 | 
    m_value=false;  | 
| 111 | 118 | |
| 112 | 
    m_pDimpl=new CGpioDimpl(_eGpioPeripheral, _eGpioPin, gpioMode);  | 
|
| 119 | 
       m_pDimpl=new CGpioDimpl(_eGpioPeripheral, _eGpioPin, gpioMode, altFunc, label);
   | 
|
| 113 | 120 | 
    #endif  | 
| 114 | 121 | 
    return;  | 
| 115 | 122 | 
    };  | 
| src/output.cpp | ||
|---|---|---|
| 35 | 35 | 
    {
   | 
| 36 | 36 | 
    }  | 
| 37 | 37 | |
| 38 | 
    COutput::COutput( EGpioPeripheral _eGpioPeripheral, EGpioPin _eGpioPin, const char* label )  | 
|
| 39 | 
    :CGpio(_eGpioPeripheral, _eGpioPin, gpioModeOutput, 0, label)  | 
|
| 40 | 
    {
   | 
|
| 41 | 
    }  | 
|
| 42 | ||
| 38 | 43 | 
    COutput::~COutput()  | 
| 39 | 44 | 
    {
   | 
| 40 | 45 | |