daad
Dependencies: mbed TrapezoidControl QEI
Diff: System/Process/Process.cpp
- Revision:
- 0:669ef71cba68
- Child:
- 1:b1219d8ca117
diff -r 000000000000 -r 669ef71cba68 System/Process/Process.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/System/Process/Process.cpp Sat Sep 08 06:05:22 2018 +0000 @@ -0,0 +1,277 @@ +#include "mbed.h" +#include "Process.h" + +#include "../../Communication/RS485/ActuatorHub/ActuatorHub.h" +#include "../../Communication/Controller/Controller.h" +#include "../../Input/ExternalInt/ExternalInt.h" +#include "../../Input/Switch/Switch.h" +#include "../../Input/Potentiometer/Potentiometer.h" +#include "../../LED/LED.h" +#include "../../Safty/Safty.h" +#include "../Using.h" + +using namespace SWITCH; + +static CONTROLLER::ControllerData *controller; +ACTUATORHUB::MOTOR::MotorStatus motor[MOUNTING_MOTOR_NUM]; +ACTUATORHUB::SOLENOID::SolenoidStatus solenoid; + +static bool lock; +static bool processChangeComp; +static int current; + +static void AllActuatorReset(); + +#ifdef USE_SUBPROCESS +static void (*Process[USE_PROCESS_NUM])(void); +#endif + +#pragma region USER-DEFINED_VARIABLES_AND_PROTOTYPE + +/*Replace here with the definition code of your variables.*/ + +#pragma endregion USER-DEFINED_VARIABLES_AND_PROTOTYPE + +#ifdef USE_SUBPROCESS +#if USE_PROCESS_NUM>0 +static void Process0(void); +#endif +#if USE_PROCESS_NUM>1 +static void Process1(void); +#endif +#if USE_PROCESS_NUM>2 +static void Process2(void); +#endif +#if USE_PROCESS_NUM>3 +static void Process3(void); +#endif +#if USE_PROCESS_NUM>4 +static void Process4(void); +#endif +#if USE_PROCESS_NUM>5 +static void Process5(void); +#endif +#if USE_PROCESS_NUM>6 +static void Process6(void); +#endif +#if USE_PROCESS_NUM>7 +static void Process7(void); +#endif +#if USE_PROCESS_NUM>8 +static void Process8(void); +#endif +#if USE_PROCESS_NUM>9 +static void Process9(void); +#endif +#endif + +void SystemProcessInitialize() +{ + #pragma region USER-DEFINED_VARIABLE_INIT + + /*Replace here with the initialization code of your variables.*/ + + #pragma endregion USER-DEFINED_VARIABLE_INIT + + lock = true; + processChangeComp = true; + current = DEFAULT_PROCESS; + + #ifdef USE_SUBPROCESS + #if USE_PROCESS_NUM>0 + Process[0] = Process0; + #endif + #if USE_PROCESS_NUM>1 + Process[1] = Process1; + #endif + #if USE_PROCESS_NUM>2 + Process[2] = Process2; + #endif + #if USE_PROCESS_NUM>3 + Process[3] = Process3; + #endif + #if USE_PROCESS_NUM>4 + Process[4] = Process4; + #endif + #if USE_PROCESS_NUM>5 + Process[5] = Process5; + #endif + #if USE_PROCESS_NUM>6 + Process[6] = Process6; + #endif + #if USE_PROCESS_NUM>7 + Process[7] = Process7; + #endif + #if USE_PROCESS_NUM>8 + Process[8] = Process8; + #endif + #if USE_PROCESS_NUM>9 + Process[9] = Process9; + #endif + #endif +} + +static void SystemProcessUpdate() +{ + #ifdef USE_SUBPROCESS + if(controller->Button.HOME) lock = false; + + if(controller->Button.START && processChangeComp) + { + current++; + if (USE_PROCESS_NUM < current) current = USE_PROCESS_NUM; + processChangeComp = false; + } + else if(controller->Button.SELECT && processChangeComp) + { + current--; + if (current < 0) current = 0; + processChangeComp = false; + } + else if(!controller->Button.SELECT && !controller->Button.START) processChangeComp = true; + #endif + + #ifdef USE_MOTOR + ACTUATORHUB::MOTOR::Motor::Update(motor); + #endif + + #ifdef USE_SOLENOID + ACTUATORHUB::SOLENOID::Solenoid::Update(solenoid); + #endif + + #ifdef USE_RS485 + ACTUATORHUB::ActuatorHub::Update(); + #endif + +} + +void SystemProcess() +{ + SystemProcessInitialize(); + + while(1) + { + #ifdef USE_MU + controller = CONTROLLER::Controller::GetData(); + #endif + + #ifdef USE_ERRORCHECK + if(SAFTY::ErrorCheck::Check() & SAFTY::Error::ControllerLost) + { + CONTROLLER::Controller::DataReset(); + AllActuatorReset(); + lock = true; + } + else + #endif + { + + #ifdef USE_SUBPROCESS + if(!lock) + { + Process[current](); + } + else + #endif + { + //ロック時の処理 + } + } + + SystemProcessUpdate(); + } +} + +#pragma region PROCESS +#ifdef USE_SUBPROCESS +#if USE_PROCESS_NUM>0 +static void Process0() +{ + +} +#endif + +#if USE_PROCESS_NUM>1 +static void Process1() +{ + +} +#endif + +#if USE_PROCESS_NUM>2 +static void Process2() +{ + +} +#endif + +#if USE_PROCESS_NUM>3 +static void Process3() +{ + +} +#endif + +#if USE_PROCESS_NUM>4 +static void Process4() +{ + +} +#endif + +#if USE_PROCESS_NUM>5 +static void Process5() +{ + +} +#endif + +#if USE_PROCESS_NUM>6 +static void Process6() +{ + +} +#endif + +#if USE_PROCESS_NUM>7 +static void Process7() +{ + +} +#endif + +#if USE_PROCESS_NUM>8 +static void Process8() +{ + +} +#endif + +#if USE_PROCESS_NUM>9 +static void Process9() +{ + +} +#endif +#endif +#pragma endregion PROCESS + +static void AllActuatorReset() +{ + + #ifdef USE_SOLENOID + solenoid.all = ALL_SOLENOID_OFF; + #endif + + #ifdef USE_MOTOR + for (uint8_t i = 0; i < MOUNTING_MOTOR_NUM; i++) + { + motor[i].dir = FREE; + motor[i].pwm = 0; + } + #endif +} + +#pragma region USER-DEFINED-FUNCTIONS + +#pragma endregion