PER Firmware
Loading...
Searching...
No Matches
amk.h
Go to the documentation of this file.
1
10#ifndef AMK_H
11#define AMK_H
12
13#include "can_library/generated/MCAN.h"
14#include <stdint.h>
15
16typedef struct {
17 // Flush functions
18 // ! must not be an inline function
19 void (*set_function)(void);
20
21 // Direct pointers to CAN library data structures
22 // ! cast all motor objects to INVA
23 INVA_SET_data_t *set;
24 INVA_CRIT_data_t *crit;
25 INVA_INFO_data_t *info;
26 INVA_TEMPS_data_t *temps;
27 INVA_ERR_1_data_t *err1;
28 INVA_ERR_2_data_t *err2;
29
30 // Internal state
31 AMK_state_t state;
32 AMK_state_t next_state;
33 bool *precharge_ptr; // owned pointer to precharge status from car module
34} AMK_t;
35
36void AMK_init(
37 AMK_t *amk,
38 void (*set_func)(void),
39 INVA_SET_data_t *set,
40 INVA_CRIT_data_t *crit,
41 INVA_INFO_data_t *info,
42 INVA_TEMPS_data_t *temps,
43 INVA_ERR_1_data_t *err1,
44 INVA_ERR_2_data_t *err2,
45 bool *precharge_ptr
46);
47
48void AMK_reset(AMK_t* amk);
49void AMK_set_torque(AMK_t* amk, int16_t torque_percent);
50void AMK_periodic(AMK_t* amk);
51
52#endif // AMK_H
Definition amk.h:16