My final year project

Dependencies:   BSP_DISCO_F746NG F746_GUI LCD_DISCO_F746NG SDFileSystem TS_DISCO_F746NG ResistiveTouchController Map CYS8218Controller MedianFilter

main.cpp

Committer:
Generic
Date:
2016-10-01
Revision:
9:355a59fd962b
Parent:
7:1a6e18b818a5
Child:
12:650ae2f4c7df

File content as of revision 9:355a59fd962b:

#include "mbed.h"
#include "Screens.hpp"


void GUIThread();
void Init();

void ZeroPlate();

int currentScreen = 0;
int nextScreen = 0;
Thread guiThread;
Screen *activeScreen = NULL;

float zeroAlpha;

float zeroBeta;

bool saved;

Serial pc(USBTX,USBRX);

int main()
{
  Init();

  while(1)
  {
    switch (currentScreen)
    {
      case Screen::ZERO_PLATE_SCREEN :
        ZeroPlate();
        break;
    }
  }
}

void GUIThread()
{
  while(1)
  {
    if( nextScreen != currentScreen )
    {
      pc.printf("%d\n\r",nextScreen);
      
      if( activeScreen != NULL)
        delete activeScreen;

      switch (nextScreen)
      {
        case Screen::MAIN_MENU_SCREEN :
          activeScreen = new MainMenuScreen(&nextScreen);
          break;
        case Screen::MAIN_SETTINGS_SCREEN :
          activeScreen = new MainSettingsScreen(&nextScreen);
          break;
        case Screen::ZERO_PLATE_SCREEN :
          activeScreen = new ZeroPlateScreen(&nextScreen, &zeroAlpha, &zeroBeta, &saved);
          break;
      }

      activeScreen->Draw();
      currentScreen = nextScreen;
      Thread::wait(200);
    }

    activeScreen->Process();

    Thread::wait(20);
  }
}

void Init()
{
  pc.baud(57600);
  saved = false;
  nextScreen = Screen::MAIN_MENU_SCREEN;
  guiThread.start(GUIThread);
}

void ZeroPlate()
{
  if( saved)
  {
    // TODO Save zero position on servos and fix screen not changing    
    nextScreen = Screen::MAIN_SETTINGS_SCREEN;
    saved = false;
  }
  
  Thread::wait(20);
}