Paparazzi UAS  v5.15_devel-230-gc96ce27
Paparazzi is a free software Unmanned Aircraft System.
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
actuators_esc32.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2014 Freek van Tienen <freek.v.tienen@gmail.com>
3  *
4  * This file is part of paparazzi.
5  *
6  * paparazzi is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2, or (at your option)
9  * any later version.
10  *
11  * paparazzi is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with paparazzi; see the file COPYING. If not, write to
18  * the Free Software Foundation, 59 Temple Place - Suite 330,
19  * Boston, MA 02111-1307, USA.
20  */
21 
26 #ifndef ACTUATORS_ESC32_H
27 #define ACTUATORS_ESC32_H
28 
29 #include "std.h"
30 #include "generated/airframe.h"
31 
32 #define ESC32_RESPONSE_CNT 12
33 
34 // Logical Communications Channel
35 // 2 bits [28:27]
36 #define ESC32_CAN_LCC_MASK ((uint32_t)0x3<<30)
37 #define ESC32_CAN_LCC_EXCEPTION ((uint32_t)0x0<<30)
38 #define ESC32_CAN_LCC_HIGH ((uint32_t)0x1<<30)
39 #define ESC32_CAN_LCC_NORMAL ((uint32_t)0x2<<30)
40 #define ESC32_CAN_LCC_INFO ((uint32_t)0x3<<30)
41 
42 // Target Type
43 // 1 bit [26:26]
44 #define ESC32_CAN_TT_MASK ((uint32_t)0x1<<29)
45 #define ESC32_CAN_TT_GROUP ((uint32_t)0x0<<29)
46 #define ESC32_CAN_TT_NODE ((uint32_t)0x1<<29)
47 
48 // Function ID
49 // 4 bits [25:22]
50 #define ESC32_CAN_FID_MASK ((uint32_t)0xf<<25)
51 #define ESC32_CAN_FID_RESET_BUS ((uint32_t)0x0<<25)
52 #define ESC32_CAN_FID_ACK ((uint32_t)0x1<<25)
53 #define ESC32_CAN_FID_NACK ((uint32_t)0x2<<25)
54 #define ESC32_CAN_FID_CMD ((uint32_t)0x3<<25)
55 #define ESC32_CAN_FID_GET ((uint32_t)0x4<<25)
56 #define ESC32_CAN_FID_SET ((uint32_t)0x5<<25)
57 #define ESC32_CAN_FID_REPLY ((uint32_t)0x6<<25)
58 #define ESC32_CAN_FID_REQ_ADDR ((uint32_t)0x7<<25)
59 #define ESC32_CAN_FID_GRANT_ADDR ((uint32_t)0x8<<25)
60 #define ESC32_CAN_FID_ERROR ((uint32_t)0x9<<25)
61 #define ESC32_CAN_FID_PING ((uint32_t)0xa<<25)
62 #define ESC32_CAN_FID_TELEM ((uint32_t)0xb<<25)
63 
64 // Data Object Code
65 // 6 bits [21:16]
66 #define ESC32_CAN_DOC_MASK ((uint32_t)0x3f<<19)
67 
68 // Source ID
69 // 5 bits [15:11]
70 #define ESC32_CAN_SID_MASK ((uint32_t)0x1f<<14)
71 
72 // Target ID
73 // 5 bits [10:6]
74 #define ESC32_CAN_TID_MASK ((uint32_t)0x1f<<9)
75 
76 // Sequence ID
77 // 6 bits [5:0]
78 #define ESC32_CAN_SEQ_MASK ((uint32_t)0x3f<<3)
79 
80 // types
81 enum {
90 };
91 
92 // commands
93 enum {
114 };
115 
116 // data types
117 enum {
130 };
131 
132 // telemetry values
133 enum {
144 };
145 
149 };
150 
151 // ESCs status
156 };
157 
158 struct ESC32_com {
164 };
165 
166 // ESC status
172 };
173 
174 // ESC status
180 };
181 
182 struct ESC32 {
185 
188 
189  struct ESC32_com escs[SERVOS_ESC32_NB];
190  uint8_t escs_sorted[SERVOS_ESC32_NB];
191  uint16_t cmds[SERVOS_ESC32_NB];
192 
195 };
196 
197 
198 extern struct ESC32 actuators_esc32;
199 
200 extern void actuators_esc32_init(void);
201 extern void actuators_esc32_commit(void);
202 extern void actuators_esc32_set(uint8_t i, uint16_t v);
203 extern void actuators_esc32_config_cmd(uint8_t i);
204 
205 #define ActuatorESC32Set(_i, _v) { actuators_esc32_set(_i, _v); }
206 #define ActuatorsESC32Init() actuators_esc32_init()
207 #define ActuatorsESC32Commit() actuators_esc32_commit()
208 
209 
210 #endif /* ACTUATORS_ESC32_H */
unsigned short uint16_t
Definition: types.h:16
void actuators_esc32_config_cmd(uint8_t i)
When receiving a configuration setting command.
struct ESC32_response responses[ESC32_RESPONSE_CNT]
Responses of CAN messages.
uint8_t data[8]
The data of the response.
ESC32_config_cmd
struct ESC32_com escs[SERVOS_ESC32_NB]
The ESCs connected via CAN.
uint8_t config_idx
Selected ESC.
enum ESC32_status status
The current status of all actuators.
struct ESC32 actuators_esc32
uint8_t fid
The FID of the response.
uint8_t network_id
Index in the array +1.
ESC32_status
uint32_t uuid
The UUID of the ESC.
unsigned long uint32_t
Definition: types.h:18
enum ESC32_esc_status status
The current status of the esc.
void actuators_esc32_commit(void)
Commits the commands and sends them to the ESCs.
void actuators_esc32_init(void)
Initializes the ESCs.
void actuators_esc32_set(uint8_t i, uint16_t v)
Set the commands (either RPM or duty cycle)
uint8_t escs_sorted[SERVOS_ESC32_NB]
The ESCs sorted by uuid.
#define ESC32_RESPONSE_CNT
unsigned char uint8_t
Definition: types.h:14
ESC32_esc_status
uint8_t can_id
The CAN identifier.
uint8_t can_seq_idx
CAN seq ID used for communicating.
uint8_t type
The type of ESC.
uint16_t cmds[SERVOS_ESC32_NB]
Commands which need to be committed.
enum ESC32_config_cmd config_cmd
The command.
uint32_t melody_status
The status of the melody.