Honza T. / Mbed 2 deprecated EXAMPLE_Nucleo_mbed_RTOS_test_code

Dependencies:   DS1620_improved TextLCD_improved mbed-rtos mbed

Committer:
Jan Tetour
Date:
Fri Dec 18 20:00:56 2015 +0100
Revision:
18:be0130c42925
Parent:
17:94c385ff2641
Minor formatting changes.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jan Tetour 18:be0130c42925 1 /*
Jan Tetour 18:be0130c42925 2 * TSK_MAIN.CPP
Jan Tetour 18:be0130c42925 3 */
dzoni 9:645f0e517017 4 #include "mbed.h"
dzoni 9:645f0e517017 5 #include "rtos.h"
dzoni 9:645f0e517017 6
dzoni 9:645f0e517017 7 #include "tsk_button.h"
dzoni 9:645f0e517017 8 #include "tsk_display.h"
dzoni 9:645f0e517017 9 #include "tsk_dist.h"
dzoni 9:645f0e517017 10 #include "tsk_led.h"
dzoni 9:645f0e517017 11 #include "tsk_temp.h"
dzoni 17:94c385ff2641 12 #include "tsk_inttemp.h"
dzoni 11:e89f89c0920b 13
dzoni 11:e89f89c0920b 14 #define TASKS_NUMBER (sizeof(taskList)/sizeof(taskList[0]))
dzoni 11:e89f89c0920b 15
dzoni 9:645f0e517017 16 uint32_t uiCnt = 0;
dzoni 17:94c385ff2641 17 Mutex mutexDist;
dzoni 17:94c385ff2641 18 Mutex mutexTemp;
dzoni 17:94c385ff2641 19 Mutex mutexIntTemp;
dzoni 13:f62b10a6e1c5 20
dzoni 11:e89f89c0920b 21 struct task_definition_struct {
dzoni 11:e89f89c0920b 22 void(*task)(void const *args);
dzoni 15:a627638edd9c 23 uint32_t(*init)(void const *args); // Result: 1 = OK, 0 = FAIL
dzoni 11:e89f89c0920b 24 void *task_args; // NULL For DEFAULT (NULL)
dzoni 11:e89f89c0920b 25 void *init_args; // NULL For DEFAULT (NULL)
dzoni 11:e89f89c0920b 26 osPriority priority;
dzoni 11:e89f89c0920b 27 // uint32_t stack_size; // 0 for DEFAULT (DEFAULT_STACK_SIZE)
dzoni 11:e89f89c0920b 28 // unsigned char *stack_pointer; // NULL for DEFAULT (NULL)
dzoni 11:e89f89c0920b 29 uint32_t delay; // Delay on start from previous task
dzoni 11:e89f89c0920b 30 Thread *thread; // To be filled in during runtime
dzoni 11:e89f89c0920b 31 uint32_t retVal; // Return Value - to be filled in during runtime
dzoni 11:e89f89c0920b 32 };
dzoni 11:e89f89c0920b 33
dzoni 11:e89f89c0920b 34 static struct task_definition_struct taskList[] = {
dzoni 17:94c385ff2641 35 // { dist_thread, &initDist, NULL, NULL, osPriorityNormal, 100, NULL, 0 },
dzoni 17:94c385ff2641 36 { temp_thread, &initDS1620Temp, NULL, NULL, osPriorityNormal, 100, NULL, 0 },
dzoni 17:94c385ff2641 37 { inttemp_thread, &initIntTemp, NULL, NULL, osPriorityNormal, 100, NULL, 0 },
dzoni 17:94c385ff2641 38 // { button_thread, NULL, NULL, NULL, osPriorityNormal, 0, NULL, 0 },
dzoni 17:94c385ff2641 39 { led_thread, &initLed, NULL, NULL, osPriorityNormal, 100, NULL, 0 },
dzoni 17:94c385ff2641 40 { disp_thread, &initDisplay, NULL, NULL, osPriorityNormal, 100, NULL, 0 },
dzoni 11:e89f89c0920b 41 };
dzoni 11:e89f89c0920b 42
dzoni 11:e89f89c0920b 43 static uint32_t initTasks(void) {
dzoni 12:1de8b271e292 44 uint32_t i;
dzoni 12:1de8b271e292 45 uint32_t retval = 1;
dzoni 11:e89f89c0920b 46
dzoni 11:e89f89c0920b 47 for (i = 0; i < TASKS_NUMBER; i++) {
dzoni 12:1de8b271e292 48 if (taskList[i].init != NULL) {
dzoni 12:1de8b271e292 49 if ((taskList[i].retVal = ((*taskList[i].init)(taskList[i].init_args))) == 0)
dzoni 12:1de8b271e292 50 retval = 0;
dzoni 13:f62b10a6e1c5 51 } else {
dzoni 13:f62b10a6e1c5 52 taskList[i].retVal = 1;
dzoni 11:e89f89c0920b 53 }
dzoni 11:e89f89c0920b 54 }
dzoni 11:e89f89c0920b 55
dzoni 11:e89f89c0920b 56 for (i = 0; i < TASKS_NUMBER; i++) {
dzoni 11:e89f89c0920b 57 Thread::wait(taskList[i].delay);
dzoni 11:e89f89c0920b 58
dzoni 11:e89f89c0920b 59 if (taskList[i].retVal == 1) {
dzoni 11:e89f89c0920b 60 taskList[i].thread = new Thread(taskList[i].task, taskList[i].task_args, taskList[i].priority );
dzoni 11:e89f89c0920b 61 }
dzoni 11:e89f89c0920b 62 }
dzoni 11:e89f89c0920b 63
dzoni 12:1de8b271e292 64 return retval;
dzoni 11:e89f89c0920b 65 }
dzoni 11:e89f89c0920b 66
dzoni 11:e89f89c0920b 67
dzoni 9:645f0e517017 68 int main() {
dzoni 9:645f0e517017 69
dzoni 13:f62b10a6e1c5 70 initTasks();
dzoni 9:645f0e517017 71
dzoni 9:645f0e517017 72 Thread::wait(osWaitForever);
dzoni 13:f62b10a6e1c5 73
dzoni 13:f62b10a6e1c5 74 disposeDisplay(NULL);
dzoni 9:645f0e517017 75 }
Jan Tetour 18:be0130c42925 76