1
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
25
30
31
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
58
59
60
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
115
122
123
126
128
129
132
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
224
225
226
227
228
/* ... */
#pragma once
#include <stdint.h>
#include "esp_err.h"
#include "hal/rmt_types.h"
#include "driver/rmt_types.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct rmt_encoder_t rmt_encoder_t;
/* ... */
typedef enum {
RMT_ENCODING_RESET = 0,
RMT_ENCODING_COMPLETE = (1 << 0),
RMT_ENCODING_MEM_FULL = (1 << 1),
}{ ... } rmt_encode_state_t;
/* ... */
struct rmt_encoder_t {
/* ... */
size_t (*encode)(rmt_encoder_t *encoder, rmt_channel_handle_t tx_channel, const void *primary_data, size_t data_size, rmt_encode_state_t *ret_state);
/* ... */
esp_err_t (*reset)(rmt_encoder_t *encoder);
/* ... */
esp_err_t (*del)(rmt_encoder_t *encoder);
}{ ... };
/* ... */
typedef size_t (*rmt_encode_simple_cb_t)(const void *data, size_t data_size,
size_t symbols_written, size_t symbols_free,
rmt_symbol_word_t *symbols, bool *done, void *arg);
/* ... */
typedef struct {
rmt_symbol_word_t bit0;
rmt_symbol_word_t bit1;
struct {
uint32_t msb_first: 1;
}{ ... } flags;
}{ ... } rmt_bytes_encoder_config_t;
/* ... */
typedef struct {
}{ ... } rmt_copy_encoder_config_t;
/* ... */
typedef struct {
rmt_encode_simple_cb_t callback;
void *arg;
size_t min_chunk_size;
/* ... */
}{ ... } rmt_simple_encoder_config_t;
/* ... */
esp_err_t rmt_new_bytes_encoder(const rmt_bytes_encoder_config_t *config, rmt_encoder_handle_t *ret_encoder);
/* ... */
esp_err_t rmt_bytes_encoder_update_config(rmt_encoder_handle_t bytes_encoder, const rmt_bytes_encoder_config_t *config);
/* ... */
esp_err_t rmt_new_copy_encoder(const rmt_copy_encoder_config_t *config, rmt_encoder_handle_t *ret_encoder);
/* ... */
esp_err_t rmt_new_simple_encoder(const rmt_simple_encoder_config_t *config, rmt_encoder_handle_t *ret_encoder);
/* ... */
esp_err_t rmt_del_encoder(rmt_encoder_handle_t encoder);
/* ... */
esp_err_t rmt_encoder_reset(rmt_encoder_handle_t encoder);
/* ... */
void* rmt_alloc_encoder_mem(size_t size);
#ifdef __cplusplus
}{...}
#endif