MBED experiment.

Committer:
citolin
Date:
Sun Sep 16 17:28:48 2018 +0000
Revision:
2:d1c24eae74d5
Parent:
1:cca3a4e419dd
Added a mutex in the state memory space. Also added a example for power supply station.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
citolin 0:40a00c231fbd 1 #include "mbed.h"
citolin 0:40a00c231fbd 2
citolin 0:40a00c231fbd 3 // Our libraries
citolin 0:40a00c231fbd 4 #include "Connectivity.h"
citolin 0:40a00c231fbd 5 #include "Digitalio.h"
citolin 0:40a00c231fbd 6 #include <iostream>
citolin 0:40a00c231fbd 7 #include <sstream>
citolin 0:40a00c231fbd 8
citolin 0:40a00c231fbd 9 #include <vector>
citolin 0:40a00c231fbd 10 using namespace std;
citolin 0:40a00c231fbd 11
citolin 0:40a00c231fbd 12 #ifndef AUTOLINE_AUTOLINE_H_
citolin 0:40a00c231fbd 13 #define AUTOLINE_AUTOLINE_H_
citolin 0:40a00c231fbd 14
citolin 0:40a00c231fbd 15 #define MAX_SIZE_OF_CMMD 5
citolin 0:40a00c231fbd 16
citolin 1:cca3a4e419dd 17
citolin 1:cca3a4e419dd 18 // General states
citolin 1:cca3a4e419dd 19 #define MAINTENANCE_MODE 0
citolin 1:cca3a4e419dd 20 #define AUTOMATIC_MODE 1
citolin 1:cca3a4e419dd 21 #define EMERGENCY_MODE 2
citolin 1:cca3a4e419dd 22 #define PAUSED_MODE 3
citolin 1:cca3a4e419dd 23
citolin 1:cca3a4e419dd 24
citolin 1:cca3a4e419dd 25 // Autoline's network protocol
citolin 0:40a00c231fbd 26 #define CMMD_1 '1' // Read I/Os 0-79 Sensors - {1}
citolin 0:40a00c231fbd 27 #define CMMD_2 '2' // Activate actuator - {2 XX Y} XX - Actuator ADDR || Y = 1 or 0 (on or off)
citolin 0:40a00c231fbd 28 //#define CMMD_3 '3' // Start test (CLP never receives it)
citolin 0:40a00c231fbd 29 #define CMMD_4 '4' // Read I/Os 80-179 Actuators - {4}
citolin 0:40a00c231fbd 30 #define CMMD_5 '5' // Enter MAINTENANCE MODE - {5}
citolin 0:40a00c231fbd 31 #define CMMD_6 '6' // Enter AUTOMATIC MODE - {6}
citolin 0:40a00c231fbd 32 #define CMMD_7 '7' // Test finished - {7 X} X - Station where test has finished (B being the release button on power station)
citolin 0:40a00c231fbd 33 #define CMMD_S 'S' // Configure SKIP - {S X X X X} X - 1 or 0 (1 to do the test, 0 to skip it)
citolin 0:40a00c231fbd 34 #define CMMD_P 'P' // Safe pause - {P X} x - 1 or 0 (1 to pause, 0 to leave pause)
citolin 0:40a00c231fbd 35 #define CMMD_E 'E' // Emergency command - {E} - IHM Asks if its on emergency mode or not
citolin 0:40a00c231fbd 36
citolin 0:40a00c231fbd 37 class Autoline {
citolin 0:40a00c231fbd 38 public:
citolin 0:40a00c231fbd 39 Autoline();
citolin 0:40a00c231fbd 40 virtual ~Autoline();
citolin 0:40a00c231fbd 41
citolin 0:40a00c231fbd 42
citolin 0:40a00c231fbd 43 void run();
citolin 0:40a00c231fbd 44 void parser(char *cmmd, int size);
citolin 0:40a00c231fbd 45
citolin 0:40a00c231fbd 46 private:
citolin 0:40a00c231fbd 47 // Attributes
citolin 0:40a00c231fbd 48
citolin 0:40a00c231fbd 49 Connectivity connection;
citolin 0:40a00c231fbd 50 DigitalIO dio;
citolin 0:40a00c231fbd 51 Serial pc;
citolin 0:40a00c231fbd 52
citolin 1:cca3a4e419dd 53 short int state; // It could be a char for less memory usage
citolin 1:cca3a4e419dd 54
citolin 0:40a00c231fbd 55
citolin 0:40a00c231fbd 56 vector<char*> queue;
citolin 0:40a00c231fbd 57
citolin 0:40a00c231fbd 58 void protocoler(char *receivedFromEth, int size);
citolin 0:40a00c231fbd 59 void print_queue();
citolin 0:40a00c231fbd 60
citolin 0:40a00c231fbd 61 std::string read_ios_in_range(int start, int end);
citolin 0:40a00c231fbd 62
citolin 2:d1c24eae74d5 63 // General functions
citolin 2:d1c24eae74d5 64 void set_state(short int newState);
citolin 2:d1c24eae74d5 65
citolin 0:40a00c231fbd 66 // CMMD's functions
citolin 0:40a00c231fbd 67 void read_sensors();
citolin 0:40a00c231fbd 68
citolin 0:40a00c231fbd 69 // Stations
citolin 0:40a00c231fbd 70 void input_elevator();
citolin 0:40a00c231fbd 71 void supply_station();
citolin 0:40a00c231fbd 72 void hipot_wait_station();
citolin 0:40a00c231fbd 73 void hipot_station();
citolin 0:40a00c231fbd 74 void pf_station();
citolin 0:40a00c231fbd 75 void ate_wait_station();
citolin 0:40a00c231fbd 76 void ate1_station();
citolin 0:40a00c231fbd 77 void ate2_station();
citolin 0:40a00c231fbd 78 void eprom_station();
citolin 0:40a00c231fbd 79 void remove_station();
citolin 0:40a00c231fbd 80 void output_elevator();
citolin 2:d1c24eae74d5 81
citolin 2:d1c24eae74d5 82 Mutex _mutex;
citolin 0:40a00c231fbd 83 };
citolin 0:40a00c231fbd 84
citolin 0:40a00c231fbd 85
citolin 0:40a00c231fbd 86 #endif