GIU\ZF
Dependencies: MCP23017 WattBob_TextLCD mbed-rtos mbed
Fork of rtos_basic by
tasks/core.h@17:a29ce6fc667c, 2018-03-28 (annotated)
- Committer:
- ihexx
- Date:
- Wed Mar 28 00:26:55 2018 +0000
- Revision:
- 17:a29ce6fc667c
- Parent:
- 16:0ada6cbd41e2
- Child:
- 19:2044bb5d7f29
Fixed deadlock bug on debug framework
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ihexx | 12:90b5d8eae5ec | 1 | #pragma once |
ihexx | 12:90b5d8eae5ec | 2 | |
ihexx | 12:90b5d8eae5ec | 3 | #include "mbed.h" |
ihexx | 12:90b5d8eae5ec | 4 | #include "rtos.h" |
ihexx | 12:90b5d8eae5ec | 5 | #include "MCP23017.h" |
ihexx | 12:90b5d8eae5ec | 6 | #include "WattBob_TextLCD.h" |
ihexx | 12:90b5d8eae5ec | 7 | #include <string> |
ihexx | 12:90b5d8eae5ec | 8 | #include <sstream> |
ihexx | 12:90b5d8eae5ec | 9 | |
ihexx | 12:90b5d8eae5ec | 10 | //Compile Flags |
ihexx | 12:90b5d8eae5ec | 11 | #define DEBUG_MODE 1 |
ihexx | 12:90b5d8eae5ec | 12 | |
ihexx | 12:90b5d8eae5ec | 13 | //Inputs------------------------- |
ihexx | 15:524de2b2ef8e | 14 | #define PORT_TURN_SIGNAL_SWITCH_RIGHT p17 |
ihexx | 15:524de2b2ef8e | 15 | #define PORT_TURN_SIGNAL_SWITCH_LEFT p18 |
ihexx | 15:524de2b2ef8e | 16 | #define PORT_ACCEL p19 |
ihexx | 12:90b5d8eae5ec | 17 | #define PORT_BRAKE p20 |
ihexx | 12:90b5d8eae5ec | 18 | #define PORT_IGNITION p21 |
ihexx | 15:524de2b2ef8e | 19 | |
ihexx | 12:90b5d8eae5ec | 20 | //Outputs ---------------- |
ihexx | 12:90b5d8eae5ec | 21 | #define PORT_REDBOX_LED1 p22 |
ihexx | 12:90b5d8eae5ec | 22 | #define PORT_REDBOX_LED2 p23 |
ihexx | 12:90b5d8eae5ec | 23 | |
ihexx | 12:90b5d8eae5ec | 24 | #define PORT_SIDE_LIGHTS p5 |
ihexx | 12:90b5d8eae5ec | 25 | #define IGNITION_LED p6 |
ihexx | 12:90b5d8eae5ec | 26 | #define PORT_TURN_SIGNAL_LED_LEFT p25 |
ihexx | 12:90b5d8eae5ec | 27 | #define PORT_TURN_SIGNAL_LED_RIGHT p26 |
ihexx | 12:90b5d8eae5ec | 28 | |
ihexx | 12:90b5d8eae5ec | 29 | //#define PORT_SIDE_LIGHTS LED1 |
ihexx | 12:90b5d8eae5ec | 30 | //#define IGNITION_LED LED4 |
ihexx | 12:90b5d8eae5ec | 31 | //#define PORT_TURN_SIGNAL_LED_LEFT LED2 |
ihexx | 12:90b5d8eae5ec | 32 | //#define PORT_TURN_SIGNAL_LED_RIGHT LED3 |
ihexx | 12:90b5d8eae5ec | 33 | |
ihexx | 12:90b5d8eae5ec | 34 | namespace runTimeParams{ |
ihexx | 12:90b5d8eae5ec | 35 | extern Mutex liveAccess; |
ihexx | 12:90b5d8eae5ec | 36 | extern float brakeForce; |
ihexx | 12:90b5d8eae5ec | 37 | extern float accelForce; |
ihexx | 12:90b5d8eae5ec | 38 | extern float avgSpeed; |
ihexx | 12:90b5d8eae5ec | 39 | extern float odometer; |
ihexx | 17:a29ce6fc667c | 40 | extern float speed[3]; |
ihexx | 12:90b5d8eae5ec | 41 | #if DEBUG_MODE |
ihexx | 17:a29ce6fc667c | 42 | extern Mutex debugAccess; |
ihexx | 17:a29ce6fc667c | 43 | extern string debugLogBuffer1; |
ihexx | 17:a29ce6fc667c | 44 | extern string debugLogBuffer2 ; |
ihexx | 17:a29ce6fc667c | 45 | extern string * debugLog ; |
ihexx | 12:90b5d8eae5ec | 46 | #endif |
ihexx | 12:90b5d8eae5ec | 47 | } |
ihexx | 15:524de2b2ef8e | 48 | |
ihexx | 15:524de2b2ef8e | 49 | |
ihexx | 15:524de2b2ef8e | 50 | |
ihexx | 12:90b5d8eae5ec | 51 | |
ihexx | 15:524de2b2ef8e | 52 | namespace task_group_1{ |
ihexx | 15:524de2b2ef8e | 53 | //Display, |
ihexx | 15:524de2b2ef8e | 54 | extern Thread thread; |
ihexx | 15:524de2b2ef8e | 55 | extern const float freq; //hz |
ihexx | 15:524de2b2ef8e | 56 | |
ihexx | 15:524de2b2ef8e | 57 | void runTask(); |
ihexx | 15:524de2b2ef8e | 58 | } |
ihexx | 15:524de2b2ef8e | 59 | namespace task_group_2{ |
ihexx | 15:524de2b2ef8e | 60 | //Read Accel/Brake, carSimulator |
ihexx | 12:90b5d8eae5ec | 61 | extern Thread thread; |
ihexx | 12:90b5d8eae5ec | 62 | extern const float freq; |
ihexx | 12:90b5d8eae5ec | 63 | void runTask(); |
ihexx | 12:90b5d8eae5ec | 64 | } |
ihexx | 12:90b5d8eae5ec | 65 | |
ihexx | 12:90b5d8eae5ec | 66 | namespace mailData{ |
ihexx | 12:90b5d8eae5ec | 67 | typedef struct{ |
ihexx | 12:90b5d8eae5ec | 68 | float speed; |
ihexx | 12:90b5d8eae5ec | 69 | float accel; |
ihexx | 12:90b5d8eae5ec | 70 | float brake; |
ihexx | 12:90b5d8eae5ec | 71 | } mail_t; |
ihexx | 12:90b5d8eae5ec | 72 | extern Mail<mail_t, 100> mailBox; |
ihexx | 12:90b5d8eae5ec | 73 | } |
ihexx | 12:90b5d8eae5ec | 74 | |
ihexx | 13:ab52f46c98ab | 75 | namespace enqueueMail{ |
ihexx | 13:ab52f46c98ab | 76 | //Send speed, accelerometer and brake values to a 100 element |
ihexx | 13:ab52f46c98ab | 77 | //MAIL queue |
ihexx | 13:ab52f46c98ab | 78 | extern Thread thread; |
ihexx | 13:ab52f46c98ab | 79 | extern const float freq; |
ihexx | 13:ab52f46c98ab | 80 | void runTask(); |
ihexx | 13:ab52f46c98ab | 81 | } |
ihexx | 13:ab52f46c98ab | 82 | namespace dequeueMail{ |
ihexx | 12:90b5d8eae5ec | 83 | //Send speed, accelerometer and brake values to a 100 element |
ihexx | 12:90b5d8eae5ec | 84 | //MAIL queue |
ihexx | 12:90b5d8eae5ec | 85 | extern Thread thread; |
ihexx | 12:90b5d8eae5ec | 86 | extern const float freq; |
ihexx | 12:90b5d8eae5ec | 87 | void runTask(); |
ihexx | 12:90b5d8eae5ec | 88 | } |
ihexx | 12:90b5d8eae5ec | 89 | |
ihexx | 12:90b5d8eae5ec | 90 | |
ihexx | 12:90b5d8eae5ec | 91 | template <typename T> |
ihexx | 12:90b5d8eae5ec | 92 | static inline std::string to_string(T value) |
ihexx | 12:90b5d8eae5ec | 93 | { |
ihexx | 12:90b5d8eae5ec | 94 | std::ostringstream os ; |
ihexx | 12:90b5d8eae5ec | 95 | os << value ; |
ihexx | 12:90b5d8eae5ec | 96 | return os.str() ; |
ihexx | 12:90b5d8eae5ec | 97 | } |