@@ -60,14 +60,15 @@ Flasher::Flasher() :
6060 m_fileFirmware(std::make_unique<QFile>()),
6161 m_keysFile(std::make_shared<QFile>()),
6262 m_socketClient(std::make_unique<SocketClient>()),
63- m_state(FlasherStates::TRY_CONNECT ),
63+ m_state(FlasherStates::INIT ),
6464 m_firmwareSize(0 ),
6565 m_tryOpen(false ),
6666 m_isPortOpen(false ),
6767 m_isSecureBoot(true ),
6868 m_boardId(),
6969 m_boardKey(),
70- m_jsonObject()
70+ m_jsonObject(),
71+ m_isTryConnectStart(false )
7172{
7273 m_keysFile->setFileName (KEY_FILE_NAME );
7374 m_keysFile->open (QIODevice::ReadWrite);
@@ -106,7 +107,7 @@ void Flasher::deinit()
106107
107108void Flasher::openSerialPort ()
108109{
109- this ->setState (FlasherStates::PLUG_USB );
110+ this ->setState (FlasherStates::TRY_TO_CONNECT );
110111 m_tryOpen = true ;
111112}
112113
@@ -119,35 +120,61 @@ void Flasher::closeSerialPort()
119120void Flasher::loopHandler ()
120121{
121122 bool success;
122- bool manufacturer;
123123
124- switch (m_state)
125- {
124+ switch (m_state) {
126125
127126 case FlasherStates::IDLE :
128127 if (m_fileFirmware->isOpen () && m_serialPort->isOpen ()) {
129128 emit readyToFlashId ();
130129 }
131130 break ;
132131
133- case FlasherStates::TRY_CONNECT :
134- if (m_tryOpen) {
135- manufacturer = m_serialPort->tryOpenPort ();
132+ case FlasherStates::INIT :
136133
137- if (!manufacturer) {
138- this ->setState (FlasherStates::PLUG_USB );
134+ if (m_tryOpen) {
135+
136+ if (!(m_serialPort->tryOpenPort ())) {
137+ this ->setState (FlasherStates::TRY_TO_CONNECT );
139138 }
140139 }
141140
142141 break ;
143142
144- case FlasherStates::PLUG_USB :
145- emit connectUsbToPc ();
146- m_serialPort->tryOpenPort ();
147- if (m_serialPort->isOpen ()) {
148- this ->setState (FlasherStates::CONNECTED );
143+ case FlasherStates::TRY_TO_CONNECT :
144+ {
145+ bool isConnected = false ;
146+
147+ if (m_isTryConnectStart) {
148+
149+ if (m_serialPort->tryOpenPort ()) {
150+
151+ if (m_serialPort->isOpen ()) {
152+ this ->setState (FlasherStates::CONNECTED );
153+ m_isTryConnectStart = false ;
154+ isConnected = true ;
155+
156+ } else {
157+ emit connectUsbToPc (" Trying to connect!" );
158+ }
159+
160+ } else {
161+ emit connectUsbToPc (" Trying to connect!" );
162+ }
163+
164+ if ((!isConnected) && (m_timerTryConnect.hasExpired (TRY_TO_CONNECT_TIMEOUT_IN_MS ))) {
165+ emit failedToConnect ();
166+ this ->setState (FlasherStates::INIT );
167+ m_tryOpen = false ;
168+ m_isTryConnectStart = false ;
169+ }
170+
171+ } else {
172+ m_isTryConnectStart = true ;
173+ m_timerTryConnect.start ();
149174 }
175+
150176 break ;
177+ }
151178
152179 case FlasherStates::CONNECTED :
153180
@@ -166,6 +193,7 @@ void Flasher::loopHandler()
166193 break ;
167194
168195 case FlasherStates::DISCONNECTED :
196+ m_isTryConnectStart = false ;
169197 m_serialPort->closeConn ();
170198 if (!(m_serialPort->isOpen ())) {
171199 emit disconnectedSerialPort ();
@@ -180,7 +208,7 @@ void Flasher::loopHandler()
180208 this ->setState (FlasherStates::BOARD_CHECK_REGISTRATION );
181209 } else {
182210 emit textInBrowser (" Board ID Error. Unplug your board, press disconnect/connect, and plug your board again." );
183- this ->setState (FlasherStates::TRY_CONNECT );
211+ this ->setState (FlasherStates::INIT );
184212 }
185213
186214 break ;
0 commit comments