Compare commits

..

18 Commits

20 changed files with 253 additions and 170 deletions

8
.gitignore vendored
View File

@@ -53,3 +53,11 @@ compile_commands.json
*_qmlcache.qrc *_qmlcache.qrc
*.user *.user
test-bench/test1/ide-cubeide-test1-idf/Debug
test-bench/test5/ide-cubeide-test5-idf/.settings/language.settings.xml
test-bench/test1/ide-cubeide-test1-idf/.settings/language.settings.xml
test-bench/test2/ide-cubeide-test2-idf/.settings/language.settings.xml
test-bench/test2/ide-cubeide-test2-idf/Debug
test-bench/test4/ide-cubeide-test4-idf/.settings/language.settings.xml
test-bench/test3/ide-cubeide-test3-idf/.settings/language.settings.xml
.idea

BIN
UML/event.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

55
UML/event.puml Normal file
View File

@@ -0,0 +1,55 @@
@startuml
participant Behavior as b
participant Dispatcher as d
entity Event as e
participant EventQueue as eq
queue "EventQueue::queue_" as q
== Create an Event ==
|||
?->> b ++ : GEN
b -> e ** : new
b -> b --++ : pushEvent
e -> b : getBehavior
b --> e ++: setBehavior
e --> b --
b -> d ++ : getDispatcher
d --> b
b -> d -- : pushEvent
d ->? -- : push
|||
|||
== Push Event ==
|||
?->> d ++: pushEvent
d -> eq--++: push
eq -> q ++
q --> eq
eq -> q -- : pushEndQueue
|||
|||
== Dispatch ==
|||
?->> d ++: executeOnce
d -> q : getFront
q -> e ++
e --> q
q --> d : event
d -> q : pop
deactivate q
d -> d --++ : dispatchEvent
d -> b ++ : getBehavior
b --> d
d -> b -- : process
b -> b--: processEvent
destroy e
@enduml

BIN
UML/timeAlgorithme.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

27
UML/timeAlgorithme.puml Normal file
View File

@@ -0,0 +1,27 @@
@startuml
start
:newTime = 0
totalTime = 0
isEnd = it == list.end()
lastTime = 0;
#tomato:if (!isEnd) then (not end)
#tomato:totalTime += it.getRelTicks();
endif
while ( !isEnd && (totalTime <= newTime) ) is (goForward)
:isEnd = (++it == list.end());
:lastTime = totalTime;
#tomato:if (!isEnd) then (not end)
#tomato:totalTime += it.getRelTicks();
endif
endwhile
#tomato:if (!isEnd) then (not end)
#tomato:subRelTicks(newTime- lastTime);
endif
:it.setRelTicks(newTime - lastTime);
:insert(it, newTimeout);
@enduml

BIN
UML/timeout.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

62
UML/timeout.puml Normal file
View File

@@ -0,0 +1,62 @@
@startuml
participant "Behavior::StateMachine" as sm
participant Dispatcher as d
participant TimeoutManager as tm
entity "Event::Timeout" as t
queue "TimeoutManager::timeouts_" as timeouts
autoactivate off
|||
|||
== Schedule timeout ==
|||
sm -> sm++ : scheduleTimeout
sm -> d ++: getDispatcher
d --> sm --: dispatcher
sm -> d --++ : scheduleTimeout
d -> tm ++: getTimeoutManager
tm --> d --: timeoutManager
d -> tm --++ : scheduleTimeout
tm -> t ** : new
t --> tm
tm -> timeouts --++: insert
|||
|||
== Decrement timeout (and dispatch) ==
|||
loop every tickInterval
?->> tm ++: tick
tm -> timeouts : getFront
timeouts -> t ++
t --> timeouts
timeouts --> tm : timeout
tm -> t --: decrement
end
|||
note left t
When timeout is 0,
dispatch event
end note
t -> timeouts : pop
deactivate timeouts
t ->? --: pushEvent
|||
|||
== Unschedule timeout ==
|||
sm -> sm++ : unscheduleTimeout
sm -> d ++: getDispatcher
d --> sm --: dispatcher
sm -> d --++ : unscheduleTimeout
d -> tm ++: getTimeoutManager
tm --> d --: timeoutManager
d -> tm --++ : unscheduleTimeout
tm -> timeouts --: erase
timeouts -> t !!
@enduml

View File

@@ -7,15 +7,19 @@
- Demonstrate the right functioning of the XF by comparing and documenting the output created by the tests running on the *Embedded System* - Demonstrate the right functioning of the XF by comparing and documenting the output created by the tests running on the *Embedded System*
# Time Algorithm # Time Algorithm
``` mermaid
flowchart TD
A(Start)--> B[time = 0]
B --> C{time < desireTime}
C ---->|No| E[End]
C -->|Yes| D[End]
```
<img src="./UML/timeAlgorithme.png">
# Sequence Diagrams
## Timeout
<img src="./UML/timeout.png">
## Event
<img src="./UML/event.png">
# Tests # Tests
## Test 1 ## Test 1
This test launches an instance of the Task01Tm class and produces some output. Optionally, multiple instances of Task01Tm can be created to test the XF. This test launches an instance of the Task01Tm class and produces some output. Optionally, multiple instances of Task01Tm can be created to test the XF.
@@ -27,15 +31,15 @@ The Test Factory (TestFactory01) instantiates 2 objects:
<details> <details>
<summary>QT result ✅</summary> <summary>QT result ✅</summary>
![result.PNG](test-bench%2Ftest1%2Fide-qtcreator-test1-idf%2Fresult.PNG) <img src="./test-bench/test1/ide-qtcreator-test1-idf/result.PNG">
This test is successfully passed This test is successfully passed
</details> </details>
<details> <details>
<summary>STM result</summary> <summary>STM result</summary>
img <img src="./test-bench/test1/ide-cubeide-test1-idf/result.png">
</details> </details>
@@ -47,15 +51,15 @@ Weather or not the state machine should be deleted is handled with the 'deleteOn
<details> <details>
<summary>QT result ✅</summary> <summary>QT result ✅</summary>
![result.PNG](test-bench%2Ftest2%2Fide-qtcreator-test2-idf%2Fresult.PNG) <img src="./test-bench/test2/ide-qtcreator-test2-idf/result.PNG">
This test is successfully passed This test is successfully passed
</details> </details>
<details> <details>
<summary>STM result</summary> <summary>STM result</summary>
img <img src="./test-bench/test2/ide-cubeide-test2-idf/result.png">
</details> </details>
@@ -65,15 +69,15 @@ This test checks basic event handling in state machines. In this example the Sta
<details> <details>
<summary>QT result ✅</summary> <summary>QT result ✅</summary>
![result.PNG](test-bench%2Ftest3%2Fide-qtcreator-test3-idf%2Fresult.PNG) <img src="./test-bench/test3/ide-qtcreator-test3-idf/result.PNG">
This test is successfully passed This test is successfully passed
</details> </details>
<details> <details>
<summary>STM result</summary> <summary>STM result</summary>
img <img src="./test-bench/test3/ide-cubeide-test3-idf/result.png">
</details> </details>
@@ -83,15 +87,15 @@ Tests if timeouts are correctly cancelled. When leaving a state with a transitio
<details> <details>
<summary>QT result ✅</summary> <summary>QT result ✅</summary>
![result.PNG](test-bench%2Ftest4%2Fide-qtcreator-test4-idf%2Fresult.PNG) <img src="./test-bench/test4/ide-qtcreator-test4-idf/result.PNG">
This test is successfully passed This test is successfully passed
</details> </details>
<details> <details>
<summary>STM result</summary> <summary>STM result</summary>
img <img src="./test-bench/test4/ide-cubeide-test4-idf/result.png">
</details> </details>
@@ -101,15 +105,15 @@ With this test multiple timeouts are added to the XFTimeoutManager list at the s
<details> <details>
<summary>QT result ✅</summary> <summary>QT result ✅</summary>
![result.PNG](test-bench%2Ftest5%2Fide-qtcreator-test5-idf%2Fresult.PNG) <img src="./test-bench/test5/ide-qtcreator-test5-idf/result.PNG">
This test is successfully passed This test is successfully passed
</details> </details>
<details> <details>
<summary>STM result</summary> <summary>STM result</summary>
img <img src="./test-bench/test5/ide-cubeide-test5-idf/result.png">
</details> </details>

View File

@@ -16,6 +16,12 @@ void XFBehavior::startBehavior() {
GEN(XFInitialEvent()); GEN(XFInitialEvent());
} }
/**
* @brief Pushes the given event to the dispatcher.
*
* If the event has no behavior assigned, the behavior of this object is assigned.
* @param pEvent Event to push to the dispatcher.
*/
void XFBehavior::pushEvent(XFEvent *pEvent) { void XFBehavior::pushEvent(XFEvent *pEvent) {
if(pEvent->getBehavior()==nullptr) { if(pEvent->getBehavior()==nullptr) {
pEvent->setBehavior(this); pEvent->setBehavior(this);
@@ -39,6 +45,13 @@ interface::XFDispatcher *XFBehavior::getDispatcher() {
return interface::XFDispatcher::getInstance(); return interface::XFDispatcher::getInstance();
} }
/**
* @brief Returns a reference to the actually processed timeout.
*
* Will work only if the current event is of type IXFEvent::Timeout.
*
* @return Pointer to the currently processed timeout or nullptr if the current event is not a timeout.
*/
const XFTimeout *XFBehavior::getCurrentTimeout() { const XFTimeout *XFBehavior::getCurrentTimeout() {
if(pCurrentEvent_->getEventType() == XFEvent::Timeout) { if(pCurrentEvent_->getEventType() == XFEvent::Timeout) {
return (XFTimeout*) this->pCurrentEvent_; return (XFTimeout*) this->pCurrentEvent_;
@@ -51,13 +64,33 @@ void XFBehavior::setCurrentEvent(const XFEvent *pEvent) {
this->pCurrentEvent_ = pEvent; this->pCurrentEvent_ = pEvent;
} }
/**
* @brief Processes the given event.
*
* The dispatcher calls this method every time a new event
* or timeout arrives. The process method stores the actual
* event using the #_pCurrentEvent and then calls
* processEvent().
*
* In case you intend to call process() inside your state machine you
* are doing something wrong! Call GEN() or pushEvent() instead!
*
* @param pEvent Event to process
* @return if the behavior is terminated (basically a boolean)
*/
XFBehavior::TerminateBehavior XFBehavior::process(const XFEvent *pEvent) { XFBehavior::TerminateBehavior XFBehavior::process(const XFEvent *pEvent) {
this->setCurrentEvent(pEvent); this->setCurrentEvent(pEvent);
// Get status of the event processing
XFEventStatus status = XFEventStatus::Unknown; XFEventStatus status = XFEventStatus::Unknown;
status = this->processEvent(); status = this->processEvent();
// Check if event was consumed and if it should be deleted
if(status == XFEventStatus::Consumed && pEvent->deleteAfterConsume()) { if(status == XFEventStatus::Consumed && pEvent->deleteAfterConsume()) {
delete pEvent; delete pEvent;
} }
// Check if the behavior is terminated and return the result
XFBehavior::TerminateBehavior terminateBehavior = false; XFBehavior::TerminateBehavior terminateBehavior = false;
if(status == XFEventStatus::Terminate) { if(status == XFEventStatus::Terminate) {
terminateBehavior = true; terminateBehavior = true;

View File

@@ -34,8 +34,28 @@ XFTimeoutManager::~XFTimeoutManager() {
void XFTimeoutManager::addTimeout(XFTimeout *pNewTimeout) { void XFTimeoutManager::addTimeout(XFTimeout *pNewTimeout) {
const int newTime = pNewTimeout->getInterval();
int totalTime = 0;
bool isEnd = true;
int lastTime = 0;
this->pMutex_->lock(); this->pMutex_->lock();
this->timeouts_.push_back(pNewTimeout); TimeoutList::iterator it = this->timeouts_.begin();
isEnd = (it == this->timeouts_.end());
if(!isEnd) totalTime += (*it)->getRelTicks();
while(!isEnd && (totalTime <= newTime)) {
isEnd = (++it == this->timeouts_.end());
lastTime = totalTime;
if(!isEnd) totalTime += (*it)->getRelTicks();
}
if(!isEnd) (*it)->substractFromRelTicks(newTime-lastTime);
pNewTimeout->setRelTicks(newTime-lastTime);
this->timeouts_.insert(it, pNewTimeout);
this->pMutex_->unlock(); this->pMutex_->unlock();
} }
@@ -70,22 +90,31 @@ void XFTimeoutManager::unscheduleTimeout(int32_t timeoutId, interface::XFBehavio
} }
void XFTimeoutManager::tick() { void XFTimeoutManager::tick() {
//Trace::out("[DEBUG] - Tick");
if(!this->timeouts_.empty()) { bool isEmpty = this->timeouts_.empty();
TimeoutList::iterator it; int rTime;
if(!isEmpty) {
this->pMutex_->lock(); this->pMutex_->lock();
for(it=this->timeouts_.begin(); it != this->timeouts_.end(); it++) {
if((*it)->getRelTicks() > 0) { XFTimeout* timeout = this->timeouts_.front();
(*it)->substractFromRelTicks(this->tickInterval_); timeout->substractFromRelTicks(tickInterval_);
} else { rTime = timeout->getRelTicks();
XFEvent* ev = *(it);
XFDispatcher::getInstance()->pushEvent(ev); while (!isEmpty && (rTime <= 0) ) {
it = this->timeouts_.erase(it);
it--; XFDispatcher::getInstance()->pushEvent(timeout);
} this->timeouts_.pop_front();
timeout = this->timeouts_.front();
isEmpty = this->timeouts_.empty();
if(!isEmpty) rTime = timeout->getRelTicks();
} }
this->pMutex_->unlock(); this->pMutex_->unlock();
} }
} }

View File

@@ -1,27 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project>
<configuration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1635794078" name="Debug">
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider copy-of="extension" id="org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser"/>
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="-393503295883347514" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>
</extension>
</configuration>
<configuration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1441404980" name="Release">
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider copy-of="extension" id="org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser"/>
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="-393503295883347514" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>
</extension>
</configuration>
</project>

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

View File

@@ -1,27 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project>
<configuration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.160913188" name="Debug">
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider copy-of="extension" id="org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser"/>
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="-393503295883347514" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>
</extension>
</configuration>
<configuration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1470338518" name="Release">
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider copy-of="extension" id="org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser"/>
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="-393503295883347514" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>
</extension>
</configuration>
</project>

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View File

@@ -1,27 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project>
<configuration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.192308827" name="Debug">
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider copy-of="extension" id="org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser"/>
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="-393503295883347514" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>
</extension>
</configuration>
<configuration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1342829208" name="Release">
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider copy-of="extension" id="org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser"/>
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="-393503295883347514" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>
</extension>
</configuration>
</project>

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

View File

@@ -1,27 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project>
<configuration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.666965065" name="Debug">
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider copy-of="extension" id="org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser"/>
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="-393503295883347514" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>
</extension>
</configuration>
<configuration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.661535232" name="Release">
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider copy-of="extension" id="org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser"/>
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="-393503295883347514" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>
</extension>
</configuration>
</project>

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

View File

@@ -1,27 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project>
<configuration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.912685179" name="Debug">
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider copy-of="extension" id="org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser"/>
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="-393503295883347514" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>
</extension>
</configuration>
<configuration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.856286833" name="Release">
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider copy-of="extension" id="org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser"/>
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="-393503295883347514" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>
</extension>
</configuration>
</project>

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB