GIU\ZF

Dependencies:   MCP23017 WattBob_TextLCD mbed-rtos mbed

Fork of rtos_basic by mbed official

Committer:
ihexx
Date:
Wed Mar 28 14:34:34 2018 +0000
Revision:
20:202e0046527e
Parent:
19:2044bb5d7f29
LAST MINUTE CHJECKS

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 19:2044bb5d7f29 11 #define DEBUG_MODE 0
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 20:202e0046527e 22 #define PORT_REDBOX_LED2 p30
ihexx 12:90b5d8eae5ec 23
ihexx 20:202e0046527e 24 #define PORT_SIDE_LIGHTS LED1
ihexx 20:202e0046527e 25 #define IGNITION_LED LED4
ihexx 20:202e0046527e 26 #define PORT_TURN_SIGNAL_LED_LEFT LED2
ihexx 20:202e0046527e 27 #define PORT_TURN_SIGNAL_LED_RIGHT LED2
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 void runTask();
ihexx 15:524de2b2ef8e 56 }
ihexx 15:524de2b2ef8e 57 namespace task_group_2{
ihexx 15:524de2b2ef8e 58 //Read Accel/Brake, carSimulator
ihexx 12:90b5d8eae5ec 59 extern Thread thread;
ihexx 12:90b5d8eae5ec 60 void runTask();
ihexx 12:90b5d8eae5ec 61 }
ihexx 12:90b5d8eae5ec 62
ihexx 12:90b5d8eae5ec 63 namespace mailData{
ihexx 12:90b5d8eae5ec 64 typedef struct{
ihexx 12:90b5d8eae5ec 65 float speed;
ihexx 12:90b5d8eae5ec 66 float accel;
ihexx 12:90b5d8eae5ec 67 float brake;
ihexx 12:90b5d8eae5ec 68 } mail_t;
ihexx 12:90b5d8eae5ec 69 extern Mail<mail_t, 100> mailBox;
ihexx 12:90b5d8eae5ec 70 }
ihexx 12:90b5d8eae5ec 71
ihexx 13:ab52f46c98ab 72 namespace enqueueMail{
ihexx 13:ab52f46c98ab 73 //Send speed, accelerometer and brake values to a 100 element
ihexx 13:ab52f46c98ab 74 //MAIL queue
ihexx 13:ab52f46c98ab 75 extern Thread thread;
ihexx 13:ab52f46c98ab 76 void runTask();
ihexx 13:ab52f46c98ab 77 }
ihexx 13:ab52f46c98ab 78 namespace dequeueMail{
ihexx 12:90b5d8eae5ec 79 //Send speed, accelerometer and brake values to a 100 element
ihexx 12:90b5d8eae5ec 80 //MAIL queue
ihexx 12:90b5d8eae5ec 81 extern Thread thread;
ihexx 12:90b5d8eae5ec 82 extern const float freq;
ihexx 12:90b5d8eae5ec 83 void runTask();
ihexx 12:90b5d8eae5ec 84 }
ihexx 12:90b5d8eae5ec 85
ihexx 12:90b5d8eae5ec 86
ihexx 12:90b5d8eae5ec 87 template <typename T>
ihexx 12:90b5d8eae5ec 88 static inline std::string to_string(T value)
ihexx 12:90b5d8eae5ec 89 {
ihexx 12:90b5d8eae5ec 90 std::ostringstream os ;
ihexx 12:90b5d8eae5ec 91 os << value ;
ihexx 12:90b5d8eae5ec 92 return os.str() ;
ihexx 12:90b5d8eae5ec 93 }