Advertisement
le_coq16

STATE_MACHINE

May 21st, 2018
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.32 KB | None | 0 0
  1. void Protocol::process(int code) {
  2.     qDebug()<<"process"<<code;
  3.     switch ( STATE ) {
  4.        qDebug()<<"PROCESS "<<code;
  5.        case STATES::INIT:
  6.             qDebug()<<"INIT";
  7.             emit signal_state( QString("INIT") );
  8.             mCommander->rezerve();
  9.  
  10.             STATE = STATES::REZERVE_SEND;
  11.             emit signal_state ( QString("REZERVE_SEND") );
  12.             break;
  13.  
  14.         case STATES::REZERVE_SEND:
  15.             if (code == 42) {
  16.                 STATE = STATES::PREPARED_OK;
  17.                 emit signal_state(QString("PREPARED_OK"));
  18.                 process();
  19.             }
  20.             else {
  21.                 emit signal_state(QString("PREPARED_FAILED"));
  22.                 STATE = STATES::PREPARED_FAILED;
  23.             }
  24.             break;
  25.  
  26.         case STATES::PREPARED_OK:
  27.             mCommander->sendRaw();
  28.             STATE = STATES::RAW_SENT;
  29.             emit signal_state( QString("RAW_SENT") );
  30.             //process();
  31.             break;
  32.  
  33.         case STATES::PREPARED_FAILED:
  34.             break;
  35.  
  36.         case STATES::RAW_SENT:
  37.            if (code == 88) {
  38.                STATE = STATES::RAW_CONFIRMED;
  39.                emit signal_state(QString("RAW_CONFIRMED"));
  40.  
  41.                process();
  42.            }
  43.            else {
  44.                qDebug()<<"RAW_SENT -> RAW_NOT_CONFIRMED "<<code;
  45.                STATE = STATES::RAW_NOT_CONFIRMED;
  46.                emit signal_state(QString("RAW_NOT_CONFIRMED"));
  47.  
  48.            }
  49.            break;
  50.  
  51.         case STATES::RAW_CONFIRMED:
  52.             mCommander->sendFile();
  53.             STATE = STATES::FILE_SENT;
  54.             emit signal_state(QString("FILE_SENT_CMD"));
  55.             break;
  56.  
  57.         case STATES::FILE_SENT:
  58.             if (code == 77) {
  59.                 emit signal_state(QString("FILE_SENT_CONFIRMED"));
  60.                 STATE = STATES::FILE_SENT_CONFIRMED;
  61.                 process();
  62.             }
  63.             else {
  64.                 emit signal_state(QString("FILE_SENT_NOT_CONFIRMED"));
  65.                 STATE = STATES::FILE_SENT_NOT_CONFIRMED;
  66.             }
  67.             break;
  68.  
  69.         case STATES::FILE_SENT_CONFIRMED:
  70.             STATE = STATES::FINAL;
  71.             emit signal_state(QString("FINAL"));
  72.             emit confirmed();
  73.             break;
  74.  
  75.        case STATES::FINAL:
  76.             break;
  77.  
  78.    }
  79.    return;
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement