MCPcopy Create free account
hub / github.com/PaulStoffregen/Audio / read

Method read

effect_delay_ext.cpp:160–203  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

158#define SPISETTING SPISettings(20000000, MSBFIRST, SPI_MODE0)
159
160void AudioEffectDelayExternal::read(uint32_t offset, uint32_t count, int16_t *data)
161{
162 uint32_t addr = memory_begin + offset;
163
164#ifdef INTERNAL_TEST
165 while (count) { *data++ = testmem[addr++]; count--; } // testing only
166#else
167 if (memory_type == AUDIO_MEMORY_23LC1024) {
168 addr *= 2;
169 SPI.beginTransaction(SPISETTING);
170 digitalWriteFast(SPIRAM_CS_PIN, LOW);
171 SPI.transfer16((0x03 << 8) | (addr >> 16));
172 SPI.transfer16(addr & 0xFFFF);
173 while (count) {
174 *data++ = (int16_t)(SPI.transfer16(0));
175 count--;
176 }
177 digitalWriteFast(SPIRAM_CS_PIN, HIGH);
178 SPI.endTransaction();
179 } else if (memory_type == AUDIO_MEMORY_MEMORYBOARD) {
180 SPI.beginTransaction(SPISETTING);
181 while (count) {
182 uint32_t chip = (addr >> 16) + 1;
183 digitalWriteFast(MEMBOARD_CS0_PIN, chip & 1);
184 digitalWriteFast(MEMBOARD_CS1_PIN, chip & 2);
185 digitalWriteFast(MEMBOARD_CS2_PIN, chip & 4);
186 uint32_t chipaddr = (addr & 0xFFFF) << 1;
187 SPI.transfer16((0x03 << 8) | (chipaddr >> 16));
188 SPI.transfer16(chipaddr & 0xFFFF);
189 uint32_t num = 0x10000 - (addr & 0xFFFF);
190 if (num > count) num = count;
191 count -= num;
192 addr += num;
193 do {
194 *data++ = (int16_t)(SPI.transfer16(0));
195 } while (--num > 0);
196 }
197 digitalWriteFast(MEMBOARD_CS0_PIN, LOW);
198 digitalWriteFast(MEMBOARD_CS1_PIN, LOW);
199 digitalWriteFast(MEMBOARD_CS2_PIN, LOW);
200 SPI.endTransaction();
201 }
202#endif
203}
204
205void AudioEffectDelayExternal::write(uint32_t offset, uint32_t count, const int16_t *data)
206{

Callers 3

updateMethod · 0.45
updateMethod · 0.45
updateMethod · 0.45

Calls

no outgoing calls

Tested by

no test coverage detected