Motorcortex Core  version: 2.7.6
drive_cia402_fsm_base.h
1 /*
2  * Developer : Alexey Zakharov (alexey.zakharov@vectioneer.com)
3  * All rights reserved. Copyright (c) 2018 VECTIONEER.
4  */
5 
6 #ifndef MOTORCORTEX_CORE_DRIVE_CIA402_FSM_BASE_H
7 #define MOTORCORTEX_CORE_DRIVE_CIA402_FSM_BASE_H
8 
9 #include "sm_statemachine.h"
10 #include "drive_mode.h"
11 
12 namespace mcx {
13 
14 namespace drive {
15 
16 struct Cia402FsmData;
17 
18 class Cia402FsmBase : public state_machine::State<Cia402FsmBase> {
19 public:
20  explicit Cia402FsmBase(Cia402FsmData&);
21 
22  ~Cia402FsmBase() override = default;
23 
24  void registerUserEvents() override;
25 
26  virtual state_machine::EventStatus shutdown(int state_id);
27 
28  virtual state_machine::EventStatus switchOn(int state_id);
29 
30  virtual state_machine::EventStatus disableVoltage(int state_id);
31 
32  virtual state_machine::EventStatus quickStop(int state_id);
33 
34  virtual state_machine::EventStatus disableOperation(int state_id);
35 
36  virtual state_machine::EventStatus enableOperation(int state_id);
37 
38  virtual state_machine::EventStatus resetting(int state_id);
39 
40  virtual state_machine::EventStatus gotoOff();
41 
42  virtual state_machine::EventStatus gotoDisengage();
43 
44  virtual state_machine::EventStatus gotoEngage();
45 
46  virtual state_machine::EventStatus gotoQuickStop();
47 
48  virtual state_machine::EventStatus gotoModeAction();
49 
50  virtual state_machine::EventStatus faultAcknowledge();
51 
52  virtual state_machine::EventStatus switchMode(DriveMode drive_mode, const std::string& machine_name);
53 
54  state_machine::EventStatus warning_(const mcx::state_machine::Error& error) override;
55 
56  state_machine::EventStatus forcedDisengaged_(const mcx::state_machine::Error& error) override;
57 
58  state_machine::EventStatus shutdown_(const mcx::state_machine::Error& error) override;
59 
60  state_machine::EventStatus emergencyStop_(const mcx::state_machine::Error& error) override;
61 
62 protected:
63  Cia402FsmData& fsm_data_;
64  DriveMode drive_mode_{DriveMode::DRIVE_MODE_NOMODE};
65 };
66 
67 } // namespace drive
68 
69 } // namespace mcx
70 
71 #endif //MOTORCORTEX_CORE_DRIVE_CIA402_FSM_BASE_H
mcx::drive::Cia402FsmData
Definition: drive_cia402_fsm_data.h:68
mcx::drive::Cia402FsmBase
Definition: drive_cia402_fsm_base.h:18
mcx::signal_monitor::SignalId
Definition: sg_signalid.h:25
mcx::state_machine::State
Definition: sm_state.h:34