thread-manager: create on heap
Add a simple queue-manager test
This commit is contained in:
parent
4a553e3093
commit
ad4a100989
@ -11,7 +11,7 @@ int main(void)
|
|||||||
{
|
{
|
||||||
SystemCoreClockUpdate();
|
SystemCoreClockUpdate();
|
||||||
Board_Init();
|
Board_Init();
|
||||||
ThreadCommon::ThreadManager manager;
|
ThreadCommon::ThreadManager* manager = new ThreadCommon::ThreadManager;
|
||||||
ThreadCommon::QueueManager* qmanager = new ThreadCommon::QueueManager;
|
ThreadCommon::QueueManager* qmanager = new ThreadCommon::QueueManager;
|
||||||
//Creating queues
|
//Creating queues
|
||||||
qmanager->createQueue(100,
|
qmanager->createQueue(100,
|
||||||
@ -19,13 +19,13 @@ int main(void)
|
|||||||
ThreadCommon::QueueManager::master_event_all);
|
ThreadCommon::QueueManager::master_event_all);
|
||||||
|
|
||||||
//Creating tasks
|
//Creating tasks
|
||||||
manager.createTask(master_thread, "master",
|
manager->createTask(master_thread, "master",
|
||||||
configMINIMAL_STACK_SIZE * 10,tskIDLE_PRIORITY + 1UL,
|
configMINIMAL_STACK_SIZE * 10,tskIDLE_PRIORITY + 1UL,
|
||||||
static_cast<void*>(qmanager));
|
static_cast<void*>(qmanager));
|
||||||
|
|
||||||
//<Queue_test>
|
//<Queue_test>
|
||||||
QueueHandle_t master_event_all_q = qmanager->getQueue(ThreadCommon::QueueManager::master_event_all);
|
QueueHandle_t master_event_all_q = qmanager->getQueue(ThreadCommon::QueueManager::master_event_all);
|
||||||
ThreadCommon::Event* e = new ThreadCommon::Event(ThreadCommon::Null, 0);
|
ThreadCommon::Event* e = new ThreadCommon::Event(ThreadCommon::Rotary, 1);
|
||||||
|
|
||||||
qmanager->send<ThreadCommon::Event>(ThreadCommon::QueueManager::master_event_all, e, 1000);
|
qmanager->send<ThreadCommon::Event>(ThreadCommon::QueueManager::master_event_all, e, 1000);
|
||||||
//</Queue_test>
|
//</Queue_test>
|
||||||
|
|||||||
@ -18,13 +18,9 @@ void Master::taskFunction() {
|
|||||||
bool LedState = true;
|
bool LedState = true;
|
||||||
for (;;) {
|
for (;;) {
|
||||||
_qm->receive<ThreadCommon::Event>(ThreadCommon::QueueManager::master_event_all, &data, portMAX_DELAY);
|
_qm->receive<ThreadCommon::Event>(ThreadCommon::QueueManager::master_event_all, &data, portMAX_DELAY);
|
||||||
Board_LED_Set(led, LedState);
|
if(data.getData() == 1 && data.getType() == ThreadCommon::EventType::Rotary){
|
||||||
LedState = (bool) !LedState;
|
Board_LED_Set(led, LedState);
|
||||||
led++;
|
|
||||||
if(led > 2){
|
|
||||||
led = 0;
|
|
||||||
}
|
}
|
||||||
vTaskDelay(1000);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user