Motorcortex Core  version: 2.7.6
drive_diagnostics.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_DIAGNOSTICS_H
7 #define MOTORCORTEX_CORE_DRIVE_DIAGNOSTICS_H
8 
9 #include "ct_module.h"
10 
11 namespace mcx {
12 
13 namespace drive {
14 
16 public:
17 
18  Diagnostics() = delete;
19 
20  explicit Diagnostics(unsigned int number_of_axis = 1, unsigned int number_of_diagnostic_codes = 3);
21 
22  ~Diagnostics() override;
23 
24 protected:
25 
26  void create_(const char* name, parameter_server::Parameter* parameter_server, uint64_t dt_micro_s) override;
27 
28  bool initPhase1_() override;
29 
30  bool initPhase2_() override;
31 
32  bool startOp_() override;
33 
34  bool stopOp_() override;
35 
36  bool iterateOp_(const container::TaskTime& system_time, container::UserTime* user_time) override;
37 
38 private:
39 
40  struct DiagnosticCodeList {
41  unsigned int length;
42  unsigned int* code;
43  };
44 
45  struct DiagnosticCodeTable {
46  unsigned int length;
47  unsigned int* number_of_codes;
48  DiagnosticCodeList* code_list;
49  };
50 
51  DiagnosticCodeTable diag_code_table_{};
52 
53  bool update_{false};
54  bool reset_{false};
55  parameter_server::ParamHandle update_handle_;
56  parameter_server::ParamHandle update_code_list_handle_;
57  parameter_server::ParamHandle reset_handle_;
58  parameter_server::ParamHandle reset_code_list_handle_;
59 
60 };
61 
62 } // namespace drive
63 
64 } // namespace mcx
65 
66 #endif //MOTORCORTEX_CORE_DRIVE_DIAGNOSTICS_H
mcx::drive::Diagnostics::stopOp_
bool stopOp_() override
User-defined callback before to stop Operation mode.
Definition: drive_diagnostics.cpp:77
mcx::drive::Diagnostics::startOp_
bool startOp_() override
User-defined callback before entering Operation mode.
Definition: drive_diagnostics.cpp:73
mcx::drive::Diagnostics::initPhase1_
bool initPhase1_() override
User-defined callback to register parameters in the tree.
Definition: drive_diagnostics.cpp:38
mcx::parameter_server::Parameter
Definition: ps_parameter.h:45
mcx::container::TaskTime
Internal time source.
Definition: ct_time.h:25
mcx::drive::Diagnostics::create_
void create_(const char *name, parameter_server::Parameter *parameter_server, uint64_t dt_micro_s) override
User-defined callback, which is executed during 'Create' phase.
Definition: drive_diagnostics.cpp:35
mcx::drive::Diagnostics
Definition: drive_diagnostics.h:15
mcx::drive::Diagnostics::iterateOp_
bool iterateOp_(const container::TaskTime &system_time, container::UserTime *user_time) override
User-defined callback which is called during Operation mode.
Definition: drive_diagnostics.cpp:81
mcx::container::UserTime
External time source.
Definition: ct_time.h:40
mcx::container::Module
A building block of the Motorcortex components.
Definition: ct_module.h:64
mcx::drive::Diagnostics::initPhase2_
bool initPhase2_() override
User-defined callback after the parameter tree is ready.
Definition: drive_diagnostics.cpp:69
mcx::parameter_server::ParamHandle
Definition: ps_handlers.h:43