1 // SPDX-License-Identifier: GPL-2.0+ 2 /* 3 * Copyright (C) 2012 Samsung Electronics 4 * R. Chandrasekar <rcsekar@samsung.com> 5 */ 6 7 #include <common.h> 8 #include <log.h> 9 #include <sound.h> 10 sound_create_square_wave(uint sample_rate,unsigned short * data,int size,uint freq,uint channels)11void sound_create_square_wave(uint sample_rate, unsigned short *data, int size, 12 uint freq, uint channels) 13 { 14 const unsigned short amplitude = 16000; /* between 1 and 32767 */ 15 const int period = freq ? sample_rate / freq : 0; 16 const int half = period / 2; 17 18 assert(freq); 19 20 /* Make sure we don't overflow our buffer */ 21 if (size % 2) 22 size--; 23 24 while (size) { 25 int i, j; 26 27 for (i = 0; size && i < half; i++) { 28 size -= 2; 29 for (j = 0; j < channels; j++) 30 *data++ = amplitude; 31 } 32 for (i = 0; size && i < period - half; i++) { 33 size -= 2; 34 for (j = 0; j < channels; j++) 35 *data++ = -amplitude; 36 } 37 } 38 } 39