Lucas Citolin
/
Autoline
MBED experiment.
Autoline/Autoline.h@2:d1c24eae74d5, 2018-09-16 (annotated)
- 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?
User | Revision | Line number | New 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 |