Kestrel Interface
Loading...
Searching...
No Matches
kest_resource.c
Go to the documentation of this file.
1#include <stdio.h>
2#include <math.h>
3#include <stdlib.h>
4#include <string.h>
5
6#include "kest_int.h"
7
8//#ifndef PRINTLINES_ALLOWED
9#define PRINTLINES_ALLOWED 1
10//#endif
11
12static const char *FNAME = "kest_resource.c";
13
15
18 .name = NULL,
19 .handle = 0,
20 .size = NULL,
21 .delay = NULL,
22 .data = NULL
23};
24
27 .name = NULL,
28 .handle = 1,
29 .size = NULL,
30 .delay = NULL,
31 .data = NULL
32};
33
35{
36 if (!res)
37 return ERR_NULL_PTR;
38
39 res->name = NULL;
41 res->size = NULL;
42 res->delay = NULL;
43 res->handle = 0;
44 res->data = NULL;
45 res->mem_size = 0;
46
47 return NO_ERROR;
48}
49
51{
52 if (!res)
53 return ERR_NULL_PTR;
54
55 res->name = NULL;
57 res->size = NULL;
58 res->delay = NULL;
59 res->handle = 0;
60 res->data = kest_filter_create(NULL);
61
62 if (!res->data)
63 return ERR_ALLOC_FAIL;
64
65 res->mem_size = 0;
66
67 return NO_ERROR;
68}
69
70int string_to_resource_type(const char *type_str)
71{
72 if ((strcmp(type_str, "delay_buffer") == 0) || (strcmp(type_str, "delay") == 0))
73 {
75 }
76 else if ((strcmp(type_str, "mem") == 0) || (strcmp(type_str, "memory") == 0))
77 {
79 }
80 else if ((strcmp(type_str, "filter") == 0) || (strcmp(type_str, "biquad") == 0))
81 {
83 }
84
86}
87
88int kest_resources_assign_handles(kest_dsp_resource_pll *list)
89{
90 int next_delay_handle = 0;
91 int next_mem_handle = 0;
92 int next_filter_handle = 0;
93
94 kest_dsp_resource_pll *current = list;
95
96 int i = 0;
97 while (current)
98 {
99 if (current->data)
100 {
101 switch (current->data->type)
102 {
104 KEST_PRINTF("Assigning \"%s\" handle %d...\n", current->data->name, next_delay_handle);
105 current->data->handle = next_delay_handle;
106 next_delay_handle += 1;
107 break;
108
110 current->data->handle = next_mem_handle;
111 next_mem_handle += current->data->mem_size;
112 break;
113
115 current->data->handle = next_filter_handle;
116 next_filter_handle += 1;
117 break;
118 }
119 }
120
121 current = current->next;
122 }
123
124 return NO_ERROR;
125}
126
128{
130
131 memset(&result, 0, sizeof(result));
132
133 return result;
134}
135
137{
138 if (!filter)
139 return ERR_NULL_PTR;
140
141 filter->feed_forward = 0;
142 filter->feed_back = 0;
143 filter->format = 0;
144
145 kest_expression_ptr_list_init(&filter->coefs);
146
147 return NO_ERROR;
148}
149
151{
152 kest_filter *filter = kest_allocator_alloc(alloc, sizeof(kest_filter));
153
154 if (!filter)
155 return NULL;
156
157 filter->feed_forward = 0;
158 filter->feed_back = 0;
159 filter->format = 0;
160
161 kest_expression_ptr_list_init_with_allocator(&filter->coefs, alloc);
162
163 return filter;
164}
165
167{
168 if (!a) return ERR_NULL_PTR;
169 if (!b) return ERR_BAD_ARGS;
170
171 KEST_PRINTF("kest_resource_report_integrate\n");
172
173 KEST_PRINTF("a->blocks = %d + %d = %d\n", a->blocks, b->blocks, a->blocks + b->blocks);
174 KEST_PRINTF("a->delays = %d + %d = %d\n", a->delays, b->delays, a->delays + b->delays);
175 KEST_PRINTF("a->memory = %d + %d = %d\n", a->memory, b->memory, a->memory + b->memory);
176 KEST_PRINTF("a->filters = %d + %d = %d\n", a->filters, b->filters, a->filters + b->filters);
177 a->blocks += b->blocks;
178 a->memory += b->memory;
179 a->delays += b->delays;
180 a->filters += b->filters;
181
182 return NO_ERROR;
183}
void * kest_allocator_alloc(kest_allocator *a, size_t n)
Definition kest_alloc.c:177
#define ERR_ALLOC_FAIL
#define ERR_BAD_ARGS
#define NO_ERROR
#define ERR_NULL_PTR
#define IMPLEMENT_LINKED_PTR_LIST(X)
#define KEST_PRINTF(...)
Definition kest_printf.h:10
int kest_filter_init(kest_filter *filter)
kest_eff_resource_report empty_m_eff_resource_report()
int kest_init_dsp_resource(kest_dsp_resource *res)
kest_dsp_resource sin_lut
int kest_resources_assign_handles(kest_dsp_resource_pll *list)
int kest_resource_report_integrate(kest_eff_resource_report *a, const kest_eff_resource_report *b)
kest_dsp_resource tanh_lut
kest_filter * kest_filter_create(kest_allocator *alloc)
int kest_dsp_resource_create_filter(kest_dsp_resource *res)
int string_to_resource_type(const char *type_str)
#define KEST_DSP_RESOURCE_MEM
#define KEST_DSP_RESOURCE_FILTER
#define KEST_DSP_RESOURCE_NOTHING
#define KEST_DSP_RESOURCE_DELAY
#define KEST_DSP_RESOURCE_LUT
struct kest_expression * size
struct kest_expression * delay
struct kest_expression_ptr_list coefs