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

Method write

effect_delay_ext.cpp:205–252  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

203}
204
205void AudioEffectDelayExternal::write(uint32_t offset, uint32_t count, const int16_t *data)
206{
207 uint32_t addr = memory_begin + offset;
208
209#ifdef INTERNAL_TEST
210 while (count) { testmem[addr++] = *data++; count--; } // testing only
211#else
212 if (memory_type == AUDIO_MEMORY_23LC1024) {
213 addr *= 2;
214 SPI.beginTransaction(SPISETTING);
215 digitalWriteFast(SPIRAM_CS_PIN, LOW);
216 SPI.transfer16((0x02 << 8) | (addr >> 16));
217 SPI.transfer16(addr & 0xFFFF);
218 while (count) {
219 int16_t w = 0;
220 if (data) w = *data++;
221 SPI.transfer16(w);
222 count--;
223 }
224 digitalWriteFast(SPIRAM_CS_PIN, HIGH);
225 SPI.endTransaction();
226 } else if (memory_type == AUDIO_MEMORY_MEMORYBOARD) {
227 SPI.beginTransaction(SPISETTING);
228 while (count) {
229 uint32_t chip = (addr >> 16) + 1;
230 digitalWriteFast(MEMBOARD_CS0_PIN, chip & 1);
231 digitalWriteFast(MEMBOARD_CS1_PIN, chip & 2);
232 digitalWriteFast(MEMBOARD_CS2_PIN, chip & 4);
233 uint32_t chipaddr = (addr & 0xFFFF) << 1;
234 SPI.transfer16((0x02 << 8) | (chipaddr >> 16));
235 SPI.transfer16(chipaddr & 0xFFFF);
236 uint32_t num = 0x10000 - (addr & 0xFFFF);
237 if (num > count) num = count;
238 count -= num;
239 addr += num;
240 do {
241 int16_t w = 0;
242 if (data) w = *data++;
243 SPI.transfer16(w);
244 } while (--num > 0);
245 }
246 digitalWriteFast(MEMBOARD_CS0_PIN, LOW);
247 digitalWriteFast(MEMBOARD_CS1_PIN, LOW);
248 digitalWriteFast(MEMBOARD_CS2_PIN, LOW);
249 SPI.endTransaction();
250 }
251#endif
252}
253
254
255

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected