GIU\ZF

Dependencies:   MCP23017 WattBob_TextLCD mbed-rtos mbed

Fork of rtos_basic by mbed official

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?

UserRevisionLine numberNew 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 }