Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of MainBoard2018_Auto_Master_A by
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
