ARM GAS  /tmp/ccpFu4qm.s 			page 1


   1              		.cpu cortex-m4
   2              		.eabi_attribute 27, 1
   3              		.eabi_attribute 28, 1
   4              		.eabi_attribute 23, 1
   5              		.eabi_attribute 24, 1
   6              		.eabi_attribute 25, 1
   7              		.eabi_attribute 26, 1
   8              		.eabi_attribute 30, 2
   9              		.eabi_attribute 34, 1
  10              		.eabi_attribute 18, 4
  11              		.file	"bassofono.c"
  12              		.text
  13              	.Ltext0:
  14              		.cfi_sections	.debug_frame
  15              		.global	__aeabi_ldivmod
  16              		.section	.text.set_nco1_freq,"ax",%progbits
  17              		.align	1
  18              		.p2align 2,,3
  19              		.global	set_nco1_freq
  20              		.syntax unified
  21              		.thumb
  22              		.thumb_func
  23              		.fpu fpv4-sp-d16
  25              	set_nco1_freq:
  26              	.LFB404:
  27              		.file 1 "Core/Src/bassofono.c"
   1:Core/Src/bassofono.c **** /*
   2:Core/Src/bassofono.c **** 	"THE CHINOTTO-WARE LICENSE" (Revision 42):
   3:Core/Src/bassofono.c **** 
   4:Core/Src/bassofono.c **** 	IZ4KLL a.k.a. cesco@ventuordici.org wrote this code.
   5:Core/Src/bassofono.c **** 
   6:Core/Src/bassofono.c **** 	As long as you retain this notice you can do whatever you want with this stuff.
   7:Core/Src/bassofono.c **** 	I reserve the right to do the absolute minimum provided by law, up to and including absolutely not
   8:Core/Src/bassofono.c **** 	If we meet some day, and you think this stuff is worth it, you can buy me a chinotto in return.
   9:Core/Src/bassofono.c **** */
  10:Core/Src/bassofono.c **** 
  11:Core/Src/bassofono.c **** #include <stdint.h>
  12:Core/Src/bassofono.c **** #include "bassofono.h"
  13:Core/Src/bassofono.c **** #include "tx.h"
  14:Core/Src/bassofono.c **** #include "rx.h"
  15:Core/Src/bassofono.c **** #include "interface.h"
  16:Core/Src/bassofono.c **** #include "main.h"
  17:Core/Src/bassofono.c **** #include "FIRFilterCode.h"
  18:Core/Src/bassofono.c **** #include <arm_math.h>
  19:Core/Src/bassofono.c **** #include <stm32g4xx_ll_cordic.h>
  20:Core/Src/bassofono.c **** 
  21:Core/Src/bassofono.c **** /*
  22:Core/Src/bassofono.c ****                   BASSOFONO         .-.
  23:Core/Src/bassofono.c **** 	(___________________________()6 `-,
  24:Core/Src/bassofono.c **** 	(   ______________________   /''"`
  25:Core/Src/bassofono.c **** 	//\\                      //\\
  26:Core/Src/bassofono.c **** 	"" ""                     "" ""
  27:Core/Src/bassofono.c **** 	~~~~ ricetrasmettitore basso ~~~~
  28:Core/Src/bassofono.c **** 
  29:Core/Src/bassofono.c **** 	Ricetrasmettittore multimodo per
  30:Core/Src/bassofono.c **** 	onde lunghe e lunghissime.
  31:Core/Src/bassofono.c **** */
ARM GAS  /tmp/ccpFu4qm.s 			page 2


  32:Core/Src/bassofono.c **** 
  33:Core/Src/bassofono.c **** // state
  34:Core/Src/bassofono.c **** uint8_t receive, transmit;
  35:Core/Src/bassofono.c **** uint32_t frequency;
  36:Core/Src/bassofono.c **** int32_t modulation;
  37:Core/Src/bassofono.c **** int32_t gain;
  38:Core/Src/bassofono.c **** int32_t peak, oldpeak, peakset;
  39:Core/Src/bassofono.c **** int32_t volume;
  40:Core/Src/bassofono.c **** int32_t squelch;
  41:Core/Src/bassofono.c **** int32_t mic_gain;
  42:Core/Src/bassofono.c **** int32_t scan;
  43:Core/Src/bassofono.c **** q31_t nco1_increment;
  44:Core/Src/bassofono.c **** uint32_t audio_filter_freq, audio_filter_bw, audio_filter_beta;
  45:Core/Src/bassofono.c **** 
  46:Core/Src/bassofono.c **** // maschera, ogni bit uno stato
  47:Core/Src/bassofono.c **** uint16_t state_changed;
  48:Core/Src/bassofono.c **** 
  49:Core/Src/bassofono.c **** // uart rx
  50:Core/Src/bassofono.c **** char uart_rx_buf[2], rx_cmd_rb[RX_CMD_RB_SIZE];
  51:Core/Src/bassofono.c **** uint8_t rx_cmd_rb_in_idx, rx_cmd_rb_out_idx;
  52:Core/Src/bassofono.c **** 
  53:Core/Src/bassofono.c **** // uart tx
  54:Core/Src/bassofono.c **** char uart_tx_buf[UART_TX_BUFFER_SIZE];
  55:Core/Src/bassofono.c **** uint16_t uart_tx_buf_in_idx;
  56:Core/Src/bassofono.c **** 
  57:Core/Src/bassofono.c **** // bufffah
  58:Core/Src/bassofono.c **** uint16_t adc_buffer[ADC_BUFFER_SIZE];
  59:Core/Src/bassofono.c **** 
  60:Core/Src/bassofono.c **** q31_t if_I[LF_BUFFER_SIZE];
  61:Core/Src/bassofono.c **** q31_t if_Q[LF_BUFFER_SIZE];
  62:Core/Src/bassofono.c **** 
  63:Core/Src/bassofono.c **** // RX
  64:Core/Src/bassofono.c **** uint8_t lf_buffer_toggle;
  65:Core/Src/bassofono.c **** q31_t prefilter_lf_buffer[LF_BUFFER_SIZE];
  66:Core/Src/bassofono.c **** q31_t lf_buffer[2][LF_BUFFER_SIZE];
  67:Core/Src/bassofono.c **** 
  68:Core/Src/bassofono.c **** // TX
  69:Core/Src/bassofono.c **** volatile uint8_t half_tx_dac_buffer_empty, tx_dac_buffer_toggle;
  70:Core/Src/bassofono.c **** q31_t tx_dac_buffer[2][TX_DAC_BUFFER_SIZE];
  71:Core/Src/bassofono.c **** 
  72:Core/Src/bassofono.c **** // ============
  73:Core/Src/bassofono.c **** 
  74:Core/Src/bassofono.c **** int32_t set_nco1_freq(int32_t freq){
  28              		.loc 1 74 0
  29              		.cfi_startproc
  30              		@ args = 0, pretend = 0, frame = 0
  31              		@ frame_needed = 0, uses_anonymous_args = 0
  32              	.LVL0:
  33 0000 08B5     		push	{r3, lr}
  34              	.LCFI0:
  35              		.cfi_def_cfa_offset 8
  36              		.cfi_offset 3, -8
  37              		.cfi_offset 14, -4
  75:Core/Src/bassofono.c **** 	int64_t tmp_increment;
  76:Core/Src/bassofono.c **** 	if(modulation == MOD_USB) freq += (NCO2_FREQUENCY);
  38              		.loc 1 76 0
  39 0002 094B     		ldr	r3, .L7
ARM GAS  /tmp/ccpFu4qm.s 			page 3


  40 0004 1B68     		ldr	r3, [r3]
  41 0006 022B     		cmp	r3, #2
  74:Core/Src/bassofono.c **** 	int64_t tmp_increment;
  42              		.loc 1 74 0
  43 0008 0146     		mov	r1, r0
  44              		.loc 1 76 0
  45 000a 09D0     		beq	.L6
  77:Core/Src/bassofono.c **** 	else if(modulation == MOD_LSB) freq -= (NCO2_FREQUENCY);
  46              		.loc 1 77 0
  47 000c 012B     		cmp	r3, #1
  48 000e 08BF     		it	eq
  49 0010 A0F21E71 		subweq	r1, r0, #1822
  50              	.LVL1:
  51              	.L3:
  78:Core/Src/bassofono.c **** 	tmp_increment = ((int64_t)freq * 0x100000000LL)/ADC_SAMPLE_RATE;
  52              		.loc 1 78 0
  53 0014 054A     		ldr	r2, .L7+4
  54 0016 0023     		movs	r3, #0
  55 0018 0020     		movs	r0, #0
  56 001a FFF7FEFF 		bl	__aeabi_ldivmod
  57              	.LVL2:
  79:Core/Src/bassofono.c **** 	return (int32_t)tmp_increment;
  80:Core/Src/bassofono.c **** }
  58              		.loc 1 80 0
  59 001e 08BD     		pop	{r3, pc}
  60              	.LVL3:
  61              	.L6:
  76:Core/Src/bassofono.c **** 	else if(modulation == MOD_LSB) freq -= (NCO2_FREQUENCY);
  62              		.loc 1 76 0 discriminator 1
  63 0020 00F21E71 		addw	r1, r0, #1822
  64              	.LVL4:
  65 0024 F6E7     		b	.L3
  66              	.L8:
  67 0026 00BF     		.align	2
  68              	.L7:
  69 0028 00000000 		.word	modulation
  70 002c 30570500 		.word	350000
  71              		.cfi_endproc
  72              	.LFE404:
  74              		.section	.text.ringbuf_increment,"ax",%progbits
  75              		.align	1
  76              		.p2align 2,,3
  77              		.global	ringbuf_increment
  78              		.syntax unified
  79              		.thumb
  80              		.thumb_func
  81              		.fpu fpv4-sp-d16
  83              	ringbuf_increment:
  84              	.LFB405:
  81:Core/Src/bassofono.c **** 
  82:Core/Src/bassofono.c **** inline uint16_t ringbuf_increment(uint8_t *index, uint8_t buff_size_mask) {
  85              		.loc 1 82 0
  86              		.cfi_startproc
  87              		@ args = 0, pretend = 0, frame = 0
  88              		@ frame_needed = 0, uses_anonymous_args = 0
  89              		@ link register save eliminated.
  90              	.LVL5:
ARM GAS  /tmp/ccpFu4qm.s 			page 4


  83:Core/Src/bassofono.c ****     (*index)++;
  91              		.loc 1 83 0
  92 0000 0378     		ldrb	r3, [r0]	@ zero_extendqisi2
  93 0002 0133     		adds	r3, r3, #1
  84:Core/Src/bassofono.c ****     *index &= buff_size_mask;
  94              		.loc 1 84 0
  95 0004 1940     		ands	r1, r1, r3
  96              	.LVL6:
  97 0006 0170     		strb	r1, [r0]
  85:Core/Src/bassofono.c ****     return *index;
  86:Core/Src/bassofono.c **** }
  98              		.loc 1 86 0
  99 0008 0846     		mov	r0, r1
 100              	.LVL7:
 101 000a 7047     		bx	lr
 102              		.cfi_endproc
 103              	.LFE405:
 105              		.section	.text.sat_mult_q31,"ax",%progbits
 106              		.align	1
 107              		.p2align 2,,3
 108              		.global	sat_mult_q31
 109              		.syntax unified
 110              		.thumb
 111              		.thumb_func
 112              		.fpu fpv4-sp-d16
 114              	sat_mult_q31:
 115              	.LFB406:
  87:Core/Src/bassofono.c **** 
  88:Core/Src/bassofono.c **** q31_t sat_mult_q31(q31_t a, q31_t b){
 116              		.loc 1 88 0
 117              		.cfi_startproc
 118              		@ args = 0, pretend = 0, frame = 0
 119              		@ frame_needed = 0, uses_anonymous_args = 0
 120              		@ link register save eliminated.
 121              	.LVL8:
  89:Core/Src/bassofono.c **** 	q31_t out;
  90:Core/Src/bassofono.c **** 	out = ((q63_t) a * b) >> 32;
 122              		.loc 1 90 0
 123 0000 80FB0101 		smull	r0, r1, r0, r1
 124              	.LVL9:
 125              	.LBB12:
  91:Core/Src/bassofono.c **** 	out = __SSAT(out, 31);
 126              		.loc 1 91 0
 127              		.syntax unified
 128              	@ 91 "Core/Src/bassofono.c" 1
 129 0004 01F31E00 		ssat r0, #31, r1
 130              	@ 0 "" 2
 131              	.LVL10:
 132              		.thumb
 133              		.syntax unified
 134              	.LBE12:
  92:Core/Src/bassofono.c **** 	return out << 1U;
  93:Core/Src/bassofono.c **** }
 135              		.loc 1 93 0
 136 0008 4000     		lsls	r0, r0, #1
 137              	.LVL11:
 138 000a 7047     		bx	lr
ARM GAS  /tmp/ccpFu4qm.s 			page 5


 139              		.cfi_endproc
 140              	.LFE406:
 142              		.section	.text.enqueue_cmd,"ax",%progbits
 143              		.align	1
 144              		.p2align 2,,3
 145              		.global	enqueue_cmd
 146              		.syntax unified
 147              		.thumb
 148              		.thumb_func
 149              		.fpu fpv4-sp-d16
 151              	enqueue_cmd:
 152              	.LFB407:
  94:Core/Src/bassofono.c **** 
  95:Core/Src/bassofono.c **** // uart
  96:Core/Src/bassofono.c **** 
  97:Core/Src/bassofono.c **** void enqueue_cmd(char in){
 153              		.loc 1 97 0
 154              		.cfi_startproc
 155              		@ args = 0, pretend = 0, frame = 0
 156              		@ frame_needed = 0, uses_anonymous_args = 0
 157              		@ link register save eliminated.
 158              	.LVL12:
 159 0000 10B4     		push	{r4}
 160              	.LCFI1:
 161              		.cfi_def_cfa_offset 4
 162              		.cfi_offset 4, -4
  98:Core/Src/bassofono.c **** 	rx_cmd_rb[rx_cmd_rb_in_idx] = in;
 163              		.loc 1 98 0
 164 0002 054A     		ldr	r2, .L13
 165 0004 054C     		ldr	r4, .L13+4
 166 0006 1178     		ldrb	r1, [r2]	@ zero_extendqisi2
 167              	.LBB13:
 168              	.LBB14:
  83:Core/Src/bassofono.c ****     *index &= buff_size_mask;
 169              		.loc 1 83 0
 170 0008 4B1C     		adds	r3, r1, #1
  84:Core/Src/bassofono.c ****     return *index;
 171              		.loc 1 84 0
 172 000a 03F01F03 		and	r3, r3, #31
 173 000e 1370     		strb	r3, [r2]
 174              	.LBE14:
 175              	.LBE13:
 176              		.loc 1 98 0
 177 0010 6054     		strb	r0, [r4, r1]
 178              	.LVL13:
  99:Core/Src/bassofono.c **** 	ringbuf_increment(&rx_cmd_rb_in_idx, RX_CMD_RB_SIZE_MASK);
 100:Core/Src/bassofono.c **** }
 179              		.loc 1 100 0
 180 0012 5DF8044B 		ldr	r4, [sp], #4
 181              	.LCFI2:
 182              		.cfi_restore 4
 183              		.cfi_def_cfa_offset 0
 184 0016 7047     		bx	lr
 185              	.L14:
 186              		.align	2
 187              	.L13:
 188 0018 00000000 		.word	rx_cmd_rb_in_idx
ARM GAS  /tmp/ccpFu4qm.s 			page 6


 189 001c 00000000 		.word	rx_cmd_rb
 190              		.cfi_endproc
 191              	.LFE407:
 193              		.section	.text.dequeue_cmd,"ax",%progbits
 194              		.align	1
 195              		.p2align 2,,3
 196              		.global	dequeue_cmd
 197              		.syntax unified
 198              		.thumb
 199              		.thumb_func
 200              		.fpu fpv4-sp-d16
 202              	dequeue_cmd:
 203              	.LFB408:
 101:Core/Src/bassofono.c **** 
 102:Core/Src/bassofono.c **** void dequeue_cmd(void){
 204              		.loc 1 102 0
 205              		.cfi_startproc
 206              		@ args = 0, pretend = 0, frame = 0
 207              		@ frame_needed = 0, uses_anonymous_args = 0
 208 0000 10B5     		push	{r4, lr}
 209              	.LCFI3:
 210              		.cfi_def_cfa_offset 8
 211              		.cfi_offset 4, -8
 212              		.cfi_offset 14, -4
 103:Core/Src/bassofono.c **** 	decode_cmd(rx_cmd_rb[rx_cmd_rb_out_idx]);
 213              		.loc 1 103 0
 214 0002 064C     		ldr	r4, .L17
 215 0004 064A     		ldr	r2, .L17+4
 216 0006 2378     		ldrb	r3, [r4]	@ zero_extendqisi2
 217 0008 D05C     		ldrb	r0, [r2, r3]	@ zero_extendqisi2
 218 000a FFF7FEFF 		bl	decode_cmd
 219              	.LVL14:
 220              	.LBB15:
 221              	.LBB16:
  83:Core/Src/bassofono.c ****     *index &= buff_size_mask;
 222              		.loc 1 83 0
 223 000e 2378     		ldrb	r3, [r4]	@ zero_extendqisi2
 224 0010 0133     		adds	r3, r3, #1
  84:Core/Src/bassofono.c ****     return *index;
 225              		.loc 1 84 0
 226 0012 03F01F03 		and	r3, r3, #31
 227 0016 2370     		strb	r3, [r4]
 228              	.LVL15:
 229              	.LBE16:
 230              	.LBE15:
 104:Core/Src/bassofono.c **** 	ringbuf_increment(&rx_cmd_rb_out_idx, RX_CMD_RB_SIZE_MASK);
 105:Core/Src/bassofono.c **** }
 231              		.loc 1 105 0
 232 0018 10BD     		pop	{r4, pc}
 233              	.L18:
 234 001a 00BF     		.align	2
 235              	.L17:
 236 001c 00000000 		.word	rx_cmd_rb_out_idx
 237 0020 00000000 		.word	rx_cmd_rb
 238              		.cfi_endproc
 239              	.LFE408:
 241              		.section	.text.enqueue_tx,"ax",%progbits
ARM GAS  /tmp/ccpFu4qm.s 			page 7


 242              		.align	1
 243              		.p2align 2,,3
 244              		.global	enqueue_tx
 245              		.syntax unified
 246              		.thumb
 247              		.thumb_func
 248              		.fpu fpv4-sp-d16
 250              	enqueue_tx:
 251              	.LFB409:
 106:Core/Src/bassofono.c **** 
 107:Core/Src/bassofono.c **** void enqueue_tx(char * data, uint16_t len){
 252              		.loc 1 107 0
 253              		.cfi_startproc
 254              		@ args = 0, pretend = 0, frame = 0
 255              		@ frame_needed = 0, uses_anonymous_args = 0
 256              		@ link register save eliminated.
 257              	.LVL16:
 258              	.LBB17:
 108:Core/Src/bassofono.c ****         for( uint8_t index = 0; index < len; index++){
 259              		.loc 1 108 0
 260 0000 E1B1     		cbz	r1, .L32
 261              	.LBE17:
 107:Core/Src/bassofono.c ****         for( uint8_t index = 0; index < len; index++){
 262              		.loc 1 107 0
 263 0002 F0B4     		push	{r4, r5, r6, r7}
 264              	.LCFI4:
 265              		.cfi_def_cfa_offset 16
 266              		.cfi_offset 4, -16
 267              		.cfi_offset 5, -12
 268              		.cfi_offset 6, -8
 269              		.cfi_offset 7, -4
 270              	.LBB18:
 109:Core/Src/bassofono.c ****         	uart_tx_buf[uart_tx_buf_in_idx] = data[index];
 271              		.loc 1 109 0
 272 0004 0E4E     		ldr	r6, .L35
 273 0006 0F4F     		ldr	r7, .L35+4
 274 0008 3288     		ldrh	r2, [r6]
 275 000a 0378     		ldrb	r3, [r0]	@ zero_extendqisi2
 276 000c BB54     		strb	r3, [r7, r2]
 110:Core/Src/bassofono.c ****         	uart_tx_buf_in_idx++;
 277              		.loc 1 110 0
 278 000e 0132     		adds	r2, r2, #1
 279 0010 92B2     		uxth	r2, r2
 111:Core/Src/bassofono.c ****         	if(uart_tx_buf_in_idx == UART_TX_BUFFER_SIZE) break;
 280              		.loc 1 111 0
 281 0012 B2F5007F 		cmp	r2, #512
 110:Core/Src/bassofono.c ****         	uart_tx_buf_in_idx++;
 282              		.loc 1 110 0
 283 0016 3280     		strh	r2, [r6]	@ movhi
 284              		.loc 1 111 0
 285 0018 0ED0     		beq	.L19
 108:Core/Src/bassofono.c ****         	uart_tx_buf[uart_tx_buf_in_idx] = data[index];
 286              		.loc 1 108 0
 287 001a 0023     		movs	r3, #0
 288 001c 06E0     		b	.L22
 289              	.LVL17:
 290              	.L23:
ARM GAS  /tmp/ccpFu4qm.s 			page 8


 109:Core/Src/bassofono.c ****         	uart_tx_buf_in_idx++;
 291              		.loc 1 109 0
 292 001e C55C     		ldrb	r5, [r0, r3]	@ zero_extendqisi2
 293 0020 BD54     		strb	r5, [r7, r2]
 110:Core/Src/bassofono.c ****         	if(uart_tx_buf_in_idx == UART_TX_BUFFER_SIZE) break;
 294              		.loc 1 110 0
 295 0022 A2B2     		uxth	r2, r4
 296              		.loc 1 111 0
 297 0024 B2F5007F 		cmp	r2, #512
 110:Core/Src/bassofono.c ****         	if(uart_tx_buf_in_idx == UART_TX_BUFFER_SIZE) break;
 298              		.loc 1 110 0
 299 0028 3280     		strh	r2, [r6]	@ movhi
 300              		.loc 1 111 0
 301 002a 05D0     		beq	.L19
 302              	.LVL18:
 303              	.L22:
 108:Core/Src/bassofono.c ****         	uart_tx_buf[uart_tx_buf_in_idx] = data[index];
 304              		.loc 1 108 0 discriminator 2
 305 002c 0133     		adds	r3, r3, #1
 306              	.LVL19:
 307 002e DBB2     		uxtb	r3, r3
 308              	.LVL20:
 309 0030 8B42     		cmp	r3, r1
 110:Core/Src/bassofono.c ****         	if(uart_tx_buf_in_idx == UART_TX_BUFFER_SIZE) break;
 310              		.loc 1 110 0 discriminator 2
 311 0032 02F10104 		add	r4, r2, #1
 108:Core/Src/bassofono.c ****         	uart_tx_buf[uart_tx_buf_in_idx] = data[index];
 312              		.loc 1 108 0 discriminator 2
 313 0036 F2D3     		bcc	.L23
 314              	.LVL21:
 315              	.L19:
 316              	.LBE18:
 112:Core/Src/bassofono.c ****         }
 113:Core/Src/bassofono.c **** }
 317              		.loc 1 113 0
 318 0038 F0BC     		pop	{r4, r5, r6, r7}
 319              	.LCFI5:
 320              		.cfi_restore 7
 321              		.cfi_restore 6
 322              		.cfi_restore 5
 323              		.cfi_restore 4
 324              		.cfi_def_cfa_offset 0
 325 003a 7047     		bx	lr
 326              	.LVL22:
 327              	.L32:
 328 003c 7047     		bx	lr
 329              	.L36:
 330 003e 00BF     		.align	2
 331              	.L35:
 332 0040 00000000 		.word	uart_tx_buf_in_idx
 333 0044 00000000 		.word	uart_tx_buf
 334              		.cfi_endproc
 335              	.LFE409:
 337              		.section	.text.set_frequency,"ax",%progbits
 338              		.align	1
 339              		.p2align 2,,3
 340              		.global	set_frequency
ARM GAS  /tmp/ccpFu4qm.s 			page 9


 341              		.syntax unified
 342              		.thumb
 343              		.thumb_func
 344              		.fpu fpv4-sp-d16
 346              	set_frequency:
 347              	.LFB410:
 114:Core/Src/bassofono.c **** 
 115:Core/Src/bassofono.c **** // state changes
 116:Core/Src/bassofono.c **** void set_frequency(void){
 348              		.loc 1 116 0
 349              		.cfi_startproc
 350              		@ args = 0, pretend = 0, frame = 0
 351              		@ frame_needed = 0, uses_anonymous_args = 0
 352 0000 08B5     		push	{r3, lr}
 353              	.LCFI6:
 354              		.cfi_def_cfa_offset 8
 355              		.cfi_offset 3, -8
 356              		.cfi_offset 14, -4
 357              	.LBB19:
 358              	.LBB20:
  76:Core/Src/bassofono.c **** 	else if(modulation == MOD_LSB) freq -= (NCO2_FREQUENCY);
 359              		.loc 1 76 0
 360 0002 0A4B     		ldr	r3, .L43
 361              	.LBE20:
 362              	.LBE19:
 117:Core/Src/bassofono.c **** 	nco1_increment = set_nco1_freq(frequency);
 363              		.loc 1 117 0
 364 0004 0A4A     		ldr	r2, .L43+4
 365              	.LBB25:
 366              	.LBB21:
  76:Core/Src/bassofono.c **** 	else if(modulation == MOD_LSB) freq -= (NCO2_FREQUENCY);
 367              		.loc 1 76 0
 368 0006 1B68     		ldr	r3, [r3]
 369              	.LBE21:
 370              	.LBE25:
 371              		.loc 1 117 0
 372 0008 1168     		ldr	r1, [r2]
 373              	.LVL23:
 374              	.LBB26:
 375              	.LBB22:
  76:Core/Src/bassofono.c **** 	else if(modulation == MOD_LSB) freq -= (NCO2_FREQUENCY);
 376              		.loc 1 76 0
 377 000a 022B     		cmp	r3, #2
 378 000c 0BD0     		beq	.L42
  77:Core/Src/bassofono.c **** 	tmp_increment = ((int64_t)freq * 0x100000000LL)/ADC_SAMPLE_RATE;
 379              		.loc 1 77 0
 380 000e 012B     		cmp	r3, #1
 381 0010 08BF     		it	eq
 382 0012 A1F21E71 		subweq	r1, r1, #1822
 383              	.LVL24:
 384              	.L39:
  78:Core/Src/bassofono.c **** 	return (int32_t)tmp_increment;
 385              		.loc 1 78 0
 386 0016 0023     		movs	r3, #0
 387 0018 064A     		ldr	r2, .L43+8
 388 001a 0020     		movs	r0, #0
 389 001c FFF7FEFF 		bl	__aeabi_ldivmod
ARM GAS  /tmp/ccpFu4qm.s 			page 10


 390              	.LVL25:
 391              	.LBE22:
 392              	.LBE26:
 393              		.loc 1 117 0
 394 0020 054B     		ldr	r3, .L43+12
 395              	.LBB27:
 396              	.LBB23:
  79:Core/Src/bassofono.c **** }
 397              		.loc 1 79 0
 398 0022 1860     		str	r0, [r3]
 399              	.LBE23:
 400              	.LBE27:
 118:Core/Src/bassofono.c **** }
 401              		.loc 1 118 0
 402 0024 08BD     		pop	{r3, pc}
 403              	.LVL26:
 404              	.L42:
 405              	.LBB28:
 406              	.LBB24:
  76:Core/Src/bassofono.c **** 	else if(modulation == MOD_LSB) freq -= (NCO2_FREQUENCY);
 407              		.loc 1 76 0
 408 0026 01F21E71 		addw	r1, r1, #1822
 409              	.LVL27:
 410 002a F4E7     		b	.L39
 411              	.L44:
 412              		.align	2
 413              	.L43:
 414 002c 00000000 		.word	modulation
 415 0030 00000000 		.word	frequency
 416 0034 30570500 		.word	350000
 417 0038 00000000 		.word	nco1_increment
 418              	.LBE24:
 419              	.LBE28:
 420              		.cfi_endproc
 421              	.LFE410:
 423              		.section	.text.set_filter,"ax",%progbits
 424              		.align	1
 425              		.p2align 2,,3
 426              		.global	set_filter
 427              		.syntax unified
 428              		.thumb
 429              		.thumb_func
 430              		.fpu fpv4-sp-d16
 432              	set_filter:
 433              	.LFB411:
 119:Core/Src/bassofono.c **** 
 120:Core/Src/bassofono.c **** void set_filter(void){
 434              		.loc 1 120 0
 435              		.cfi_startproc
 436              		@ args = 0, pretend = 0, frame = 0
 437              		@ frame_needed = 0, uses_anonymous_args = 0
 438              		@ link register save eliminated.
 121:Core/Src/bassofono.c ****         audio_filter_generate_coeffs(audio_filter_coeffs, audio_filter_freq, audio_filter_bw, audio
 439              		.loc 1 121 0
 440 0000 044B     		ldr	r3, .L46
 441 0002 054A     		ldr	r2, .L46+4
 442 0004 0549     		ldr	r1, .L46+8
ARM GAS  /tmp/ccpFu4qm.s 			page 11


 443 0006 1B78     		ldrb	r3, [r3]	@ zero_extendqisi2
 444 0008 1268     		ldr	r2, [r2]
 445 000a 0968     		ldr	r1, [r1]
 446 000c 0448     		ldr	r0, .L46+12
 447 000e FFF7FEBF 		b	audio_filter_generate_coeffs
 448              	.LVL28:
 449              	.L47:
 450 0012 00BF     		.align	2
 451              	.L46:
 452 0014 00000000 		.word	audio_filter_beta
 453 0018 00000000 		.word	audio_filter_bw
 454 001c 00000000 		.word	audio_filter_freq
 455 0020 00000000 		.word	audio_filter_coeffs
 456              		.cfi_endproc
 457              	.LFE411:
 459              		.section	.text.set_modulation,"ax",%progbits
 460              		.align	1
 461              		.p2align 2,,3
 462              		.global	set_modulation
 463              		.syntax unified
 464              		.thumb
 465              		.thumb_func
 466              		.fpu fpv4-sp-d16
 468              	set_modulation:
 469              	.LFB412:
 122:Core/Src/bassofono.c **** }
 123:Core/Src/bassofono.c **** 
 124:Core/Src/bassofono.c **** void set_modulation(void){
 470              		.loc 1 124 0
 471              		.cfi_startproc
 472              		@ args = 0, pretend = 0, frame = 0
 473              		@ frame_needed = 0, uses_anonymous_args = 0
 474 0000 08B5     		push	{r3, lr}
 475              	.LCFI7:
 476              		.cfi_def_cfa_offset 8
 477              		.cfi_offset 3, -8
 478              		.cfi_offset 14, -4
 125:Core/Src/bassofono.c **** 	st2_filter_init();
 479              		.loc 1 125 0
 480 0002 FFF7FEFF 		bl	st2_filter_init
 481              	.LVL29:
 482              	.LBB29:
 483              	.LBB30:
  76:Core/Src/bassofono.c **** 	else if(modulation == MOD_LSB) freq -= (NCO2_FREQUENCY);
 484              		.loc 1 76 0
 485 0006 0A4B     		ldr	r3, .L54
 486              	.LBE30:
 487              	.LBE29:
 126:Core/Src/bassofono.c **** 	// cambia offset
 127:Core/Src/bassofono.c **** 	nco1_increment = set_nco1_freq(frequency);
 488              		.loc 1 127 0
 489 0008 0A4A     		ldr	r2, .L54+4
 490              	.LBB35:
 491              	.LBB31:
  76:Core/Src/bassofono.c **** 	else if(modulation == MOD_LSB) freq -= (NCO2_FREQUENCY);
 492              		.loc 1 76 0
 493 000a 1B68     		ldr	r3, [r3]
ARM GAS  /tmp/ccpFu4qm.s 			page 12


 494              	.LBE31:
 495              	.LBE35:
 496              		.loc 1 127 0
 497 000c 1168     		ldr	r1, [r2]
 498              	.LVL30:
 499              	.LBB36:
 500              	.LBB32:
  76:Core/Src/bassofono.c **** 	else if(modulation == MOD_LSB) freq -= (NCO2_FREQUENCY);
 501              		.loc 1 76 0
 502 000e 022B     		cmp	r3, #2
 503 0010 0BD0     		beq	.L53
  77:Core/Src/bassofono.c **** 	tmp_increment = ((int64_t)freq * 0x100000000LL)/ADC_SAMPLE_RATE;
 504              		.loc 1 77 0
 505 0012 012B     		cmp	r3, #1
 506 0014 08BF     		it	eq
 507 0016 A1F21E71 		subweq	r1, r1, #1822
 508              	.LVL31:
 509              	.L50:
  78:Core/Src/bassofono.c **** 	return (int32_t)tmp_increment;
 510              		.loc 1 78 0
 511 001a 0023     		movs	r3, #0
 512 001c 064A     		ldr	r2, .L54+8
 513 001e 0020     		movs	r0, #0
 514 0020 FFF7FEFF 		bl	__aeabi_ldivmod
 515              	.LVL32:
 516              	.LBE32:
 517              	.LBE36:
 518              		.loc 1 127 0
 519 0024 054B     		ldr	r3, .L54+12
 520              	.LBB37:
 521              	.LBB33:
  79:Core/Src/bassofono.c **** }
 522              		.loc 1 79 0
 523 0026 1860     		str	r0, [r3]
 524              	.LBE33:
 525              	.LBE37:
 128:Core/Src/bassofono.c **** }
 526              		.loc 1 128 0
 527 0028 08BD     		pop	{r3, pc}
 528              	.LVL33:
 529              	.L53:
 530              	.LBB38:
 531              	.LBB34:
  76:Core/Src/bassofono.c **** 	else if(modulation == MOD_LSB) freq -= (NCO2_FREQUENCY);
 532              		.loc 1 76 0
 533 002a 01F21E71 		addw	r1, r1, #1822
 534              	.LVL34:
 535 002e F4E7     		b	.L50
 536              	.L55:
 537              		.align	2
 538              	.L54:
 539 0030 00000000 		.word	modulation
 540 0034 00000000 		.word	frequency
 541 0038 30570500 		.word	350000
 542 003c 00000000 		.word	nco1_increment
 543              	.LBE34:
 544              	.LBE38:
ARM GAS  /tmp/ccpFu4qm.s 			page 13


 545              		.cfi_endproc
 546              	.LFE412:
 548              		.section	.text.set_dummy,"ax",%progbits
 549              		.align	1
 550              		.p2align 2,,3
 551              		.global	set_dummy
 552              		.syntax unified
 553              		.thumb
 554              		.thumb_func
 555              		.fpu fpv4-sp-d16
 557              	set_dummy:
 558              	.LFB413:
 129:Core/Src/bassofono.c **** 
 130:Core/Src/bassofono.c **** void set_dummy(void){
 559              		.loc 1 130 0
 560              		.cfi_startproc
 561              		@ args = 0, pretend = 0, frame = 0
 562              		@ frame_needed = 0, uses_anonymous_args = 0
 563              		@ link register save eliminated.
 131:Core/Src/bassofono.c **** 	// non fare NULLAH
 132:Core/Src/bassofono.c **** }
 564              		.loc 1 132 0
 565 0000 7047     		bx	lr
 566              		.cfi_endproc
 567              	.LFE413:
 569 0002 00BF     		.section	.text.set_changed,"ax",%progbits
 570              		.align	1
 571              		.p2align 2,,3
 572              		.global	set_changed
 573              		.syntax unified
 574              		.thumb
 575              		.thumb_func
 576              		.fpu fpv4-sp-d16
 578              	set_changed:
 579              	.LFB414:
 133:Core/Src/bassofono.c **** 
 134:Core/Src/bassofono.c **** 
 135:Core/Src/bassofono.c **** void set_changed(uint8_t state){
 580              		.loc 1 135 0
 581              		.cfi_startproc
 582              		@ args = 0, pretend = 0, frame = 0
 583              		@ frame_needed = 0, uses_anonymous_args = 0
 584              		@ link register save eliminated.
 585              	.LVL35:
 136:Core/Src/bassofono.c **** 	state_changed |= (1U<<state);
 586              		.loc 1 136 0
 587 0000 034A     		ldr	r2, .L58
 588 0002 0123     		movs	r3, #1
 589 0004 1188     		ldrh	r1, [r2]
 590 0006 03FA00F0 		lsl	r0, r3, r0
 591              	.LVL36:
 592 000a 0843     		orrs	r0, r0, r1
 593 000c 1080     		strh	r0, [r2]	@ movhi
 137:Core/Src/bassofono.c **** }
 594              		.loc 1 137 0
 595 000e 7047     		bx	lr
 596              	.L59:
ARM GAS  /tmp/ccpFu4qm.s 			page 14


 597              		.align	2
 598              	.L58:
 599 0010 00000000 		.word	state_changed
 600              		.cfi_endproc
 601              	.LFE414:
 603              		.section	.text.reset_changed,"ax",%progbits
 604              		.align	1
 605              		.p2align 2,,3
 606              		.global	reset_changed
 607              		.syntax unified
 608              		.thumb
 609              		.thumb_func
 610              		.fpu fpv4-sp-d16
 612              	reset_changed:
 613              	.LFB415:
 138:Core/Src/bassofono.c **** 
 139:Core/Src/bassofono.c **** void reset_changed(uint8_t state){
 614              		.loc 1 139 0
 615              		.cfi_startproc
 616              		@ args = 0, pretend = 0, frame = 0
 617              		@ frame_needed = 0, uses_anonymous_args = 0
 618              		@ link register save eliminated.
 619              	.LVL37:
 140:Core/Src/bassofono.c **** 	state_changed &= ~(1U<<state);
 620              		.loc 1 140 0
 621 0000 0449     		ldr	r1, .L61
 622 0002 0122     		movs	r2, #1
 623 0004 0B88     		ldrh	r3, [r1]
 624 0006 02FA00F0 		lsl	r0, r2, r0
 625              	.LVL38:
 626 000a 23EA0003 		bic	r3, r3, r0
 627 000e 0B80     		strh	r3, [r1]	@ movhi
 141:Core/Src/bassofono.c **** }
 628              		.loc 1 141 0
 629 0010 7047     		bx	lr
 630              	.L62:
 631 0012 00BF     		.align	2
 632              	.L61:
 633 0014 00000000 		.word	state_changed
 634              		.cfi_endproc
 635              	.LFE415:
 637              		.section	.text.get_changed,"ax",%progbits
 638              		.align	1
 639              		.p2align 2,,3
 640              		.global	get_changed
 641              		.syntax unified
 642              		.thumb
 643              		.thumb_func
 644              		.fpu fpv4-sp-d16
 646              	get_changed:
 647              	.LFB416:
 142:Core/Src/bassofono.c **** 
 143:Core/Src/bassofono.c **** uint8_t get_changed(uint8_t state){
 648              		.loc 1 143 0
 649              		.cfi_startproc
 650              		@ args = 0, pretend = 0, frame = 0
 651              		@ frame_needed = 0, uses_anonymous_args = 0
ARM GAS  /tmp/ccpFu4qm.s 			page 15


 652              		@ link register save eliminated.
 653              	.LVL39:
 144:Core/Src/bassofono.c **** 	return (state_changed >> state) & 1U;
 654              		.loc 1 144 0
 655 0000 034B     		ldr	r3, .L64
 656 0002 1B88     		ldrh	r3, [r3]
 657 0004 43FA00F0 		asr	r0, r3, r0
 658              	.LVL40:
 145:Core/Src/bassofono.c **** }
 659              		.loc 1 145 0
 660 0008 00F00100 		and	r0, r0, #1
 661 000c 7047     		bx	lr
 662              	.L65:
 663 000e 00BF     		.align	2
 664              	.L64:
 665 0010 00000000 		.word	state_changed
 666              		.cfi_endproc
 667              	.LFE416:
 669              		.section	.text.state_set_default,"ax",%progbits
 670              		.align	1
 671              		.p2align 2,,3
 672              		.global	state_set_default
 673              		.syntax unified
 674              		.thumb
 675              		.thumb_func
 676              		.fpu fpv4-sp-d16
 678              	state_set_default:
 679              	.LFB417:
 146:Core/Src/bassofono.c **** 
 147:Core/Src/bassofono.c **** void state_set_default(void){
 680              		.loc 1 147 0
 681              		.cfi_startproc
 682              		@ args = 0, pretend = 0, frame = 0
 683              		@ frame_needed = 0, uses_anonymous_args = 0
 684 0000 F8B5     		push	{r3, r4, r5, r6, r7, lr}
 685              	.LCFI8:
 686              		.cfi_def_cfa_offset 24
 687              		.cfi_offset 3, -24
 688              		.cfi_offset 4, -20
 689              		.cfi_offset 5, -16
 690              		.cfi_offset 6, -12
 691              		.cfi_offset 7, -8
 692              		.cfi_offset 14, -4
 148:Core/Src/bassofono.c ****         modulation = MOD_USB;
 693              		.loc 1 148 0
 694 0002 114E     		ldr	r6, .L68
 149:Core/Src/bassofono.c ****         frequency = 98600;
 695              		.loc 1 149 0
 696 0004 114D     		ldr	r5, .L68+4
 150:Core/Src/bassofono.c ****         nco1_increment = set_nco1_freq(frequency);
 697              		.loc 1 150 0
 698 0006 124B     		ldr	r3, .L68+8
 151:Core/Src/bassofono.c ****         gain = 3;
 699              		.loc 1 151 0
 700 0008 124A     		ldr	r2, .L68+12
 152:Core/Src/bassofono.c ****         volume = 16;
 701              		.loc 1 152 0
ARM GAS  /tmp/ccpFu4qm.s 			page 16


 702 000a 134C     		ldr	r4, .L68+16
 153:Core/Src/bassofono.c ****         audio_filter_freq = AUDIO_FILTER_FREQ_DEF;
 154:Core/Src/bassofono.c ****         audio_filter_bw = AUDIO_FILTER_BW_DEF;
 155:Core/Src/bassofono.c ****         audio_filter_beta = AUDIO_FILTER_BETA_DEF;
 703              		.loc 1 155 0
 704 000c 1349     		ldr	r1, .L68+20
 153:Core/Src/bassofono.c ****         audio_filter_freq = AUDIO_FILTER_FREQ_DEF;
 705              		.loc 1 153 0
 706 000e 1448     		ldr	r0, .L68+24
 148:Core/Src/bassofono.c ****         frequency = 98600;
 707              		.loc 1 148 0
 708 0010 0227     		movs	r7, #2
 709 0012 3760     		str	r7, [r6]
 149:Core/Src/bassofono.c ****         nco1_increment = set_nco1_freq(frequency);
 710              		.loc 1 149 0
 711 0014 134E     		ldr	r6, .L68+28
 712 0016 2E60     		str	r6, [r5]
 150:Core/Src/bassofono.c ****         gain = 3;
 713              		.loc 1 150 0
 714 0018 134D     		ldr	r5, .L68+32
 715 001a 1D60     		str	r5, [r3]
 152:Core/Src/bassofono.c ****         audio_filter_freq = AUDIO_FILTER_FREQ_DEF;
 716              		.loc 1 152 0
 717 001c 1023     		movs	r3, #16
 151:Core/Src/bassofono.c ****         volume = 16;
 718              		.loc 1 151 0
 719 001e 0325     		movs	r5, #3
 720 0020 1560     		str	r5, [r2]
 152:Core/Src/bassofono.c ****         audio_filter_freq = AUDIO_FILTER_FREQ_DEF;
 721              		.loc 1 152 0
 722 0022 2360     		str	r3, [r4]
 153:Core/Src/bassofono.c ****         audio_filter_bw = AUDIO_FILTER_BW_DEF;
 723              		.loc 1 153 0
 724 0024 40F24652 		movw	r2, #1350
 154:Core/Src/bassofono.c ****         audio_filter_beta = AUDIO_FILTER_BETA_DEF;
 725              		.loc 1 154 0
 726 0028 4FF4FA64 		mov	r4, #2000
 727 002c 0F4D     		ldr	r5, .L68+36
 728              		.loc 1 155 0
 729 002e 0B60     		str	r3, [r1]
 153:Core/Src/bassofono.c ****         audio_filter_bw = AUDIO_FILTER_BW_DEF;
 730              		.loc 1 153 0
 731 0030 0260     		str	r2, [r0]
 156:Core/Src/bassofono.c ****         audio_filter_generate_coeffs(audio_filter_coeffs, audio_filter_freq, audio_filter_bw, audio
 732              		.loc 1 156 0
 733 0032 1146     		mov	r1, r2
 734 0034 0E48     		ldr	r0, .L68+40
 154:Core/Src/bassofono.c ****         audio_filter_beta = AUDIO_FILTER_BETA_DEF;
 735              		.loc 1 154 0
 736 0036 2C60     		str	r4, [r5]
 737              		.loc 1 156 0
 738 0038 2246     		mov	r2, r4
 739 003a FFF7FEFF 		bl	audio_filter_generate_coeffs
 740              	.LVL41:
 157:Core/Src/bassofono.c ****         state_changed = 0xFFFF;
 741              		.loc 1 157 0
 742 003e 0D4B     		ldr	r3, .L68+44
ARM GAS  /tmp/ccpFu4qm.s 			page 17


 743 0040 4FF6FF72 		movw	r2, #65535
 744 0044 1A80     		strh	r2, [r3]	@ movhi
 158:Core/Src/bassofono.c **** }
 745              		.loc 1 158 0
 746 0046 F8BD     		pop	{r3, r4, r5, r6, r7, pc}
 747              	.L69:
 748              		.align	2
 749              	.L68:
 750 0048 00000000 		.word	modulation
 751 004c 00000000 		.word	frequency
 752 0050 00000000 		.word	nco1_increment
 753 0054 00000000 		.word	gain
 754 0058 00000000 		.word	volume
 755 005c 00000000 		.word	audio_filter_beta
 756 0060 00000000 		.word	audio_filter_freq
 757 0064 28810100 		.word	98600
 758 0068 D0967349 		.word	1232312016
 759 006c 00000000 		.word	audio_filter_bw
 760 0070 00000000 		.word	audio_filter_coeffs
 761 0074 00000000 		.word	state_changed
 762              		.cfi_endproc
 763              	.LFE417:
 765              		.section	.text.diag,"ax",%progbits
 766              		.align	1
 767              		.p2align 2,,3
 768              		.global	diag
 769              		.syntax unified
 770              		.thumb
 771              		.thumb_func
 772              		.fpu fpv4-sp-d16
 774              	diag:
 775              	.LFB418:
 159:Core/Src/bassofono.c **** 
 160:Core/Src/bassofono.c **** // diag
 161:Core/Src/bassofono.c **** 
 162:Core/Src/bassofono.c **** void diag(void){
 776              		.loc 1 162 0
 777              		.cfi_startproc
 778              		@ args = 0, pretend = 0, frame = 0
 779              		@ frame_needed = 0, uses_anonymous_args = 0
 780 0000 70B5     		push	{r4, r5, r6, lr}
 781              	.LCFI9:
 782              		.cfi_def_cfa_offset 16
 783              		.cfi_offset 4, -16
 784              		.cfi_offset 5, -12
 785              		.cfi_offset 6, -8
 786              		.cfi_offset 14, -4
 163:Core/Src/bassofono.c **** 	uart_tx_buf_in_idx += sprintf(uart_tx_buf,"ADC sample rate: %d\nADC oversampling: %d\n", ADC_SAMPL
 787              		.loc 1 163 0
 788 0002 304D     		ldr	r5, .L72
 789 0004 304C     		ldr	r4, .L72+4
 790 0006 314A     		ldr	r2, .L72+8
 791 0008 3149     		ldr	r1, .L72+12
 792 000a 2846     		mov	r0, r5
 793 000c 0223     		movs	r3, #2
 794 000e FFF7FEFF 		bl	sprintf
 795              	.LVL42:
ARM GAS  /tmp/ccpFu4qm.s 			page 18


 796 0012 2688     		ldrh	r6, [r4]
 164:Core/Src/bassofono.c **** 	uart_tx_buf_in_idx += sprintf(uart_tx_buf,"ADC buffer size: %d\n1st decimation factor: %d\n", ADC_
 797              		.loc 1 164 0
 798 0014 2F49     		ldr	r1, .L72+16
 163:Core/Src/bassofono.c **** 	uart_tx_buf_in_idx += sprintf(uart_tx_buf,"ADC sample rate: %d\nADC oversampling: %d\n", ADC_SAMPL
 799              		.loc 1 163 0
 800 0016 2C36     		adds	r6, r6, #44
 801              		.loc 1 164 0
 802 0018 2846     		mov	r0, r5
 803 001a 0423     		movs	r3, #4
 804 001c 4FF48062 		mov	r2, #1024
 163:Core/Src/bassofono.c **** 	uart_tx_buf_in_idx += sprintf(uart_tx_buf,"ADC sample rate: %d\nADC oversampling: %d\n", ADC_SAMPL
 805              		.loc 1 163 0
 806 0020 2680     		strh	r6, [r4]	@ movhi
 807              		.loc 1 164 0
 808 0022 FFF7FEFF 		bl	sprintf
 809              	.LVL43:
 810 0026 2388     		ldrh	r3, [r4]
 165:Core/Src/bassofono.c **** 	uart_tx_buf_in_idx += sprintf(uart_tx_buf,"1st out sample rate: %d\n", ST1_OUT_SAMPLE_RATE);
 811              		.loc 1 165 0
 812 0028 2B4A     		ldr	r2, .L72+20
 813 002a 2C49     		ldr	r1, .L72+24
 164:Core/Src/bassofono.c **** 	uart_tx_buf_in_idx += sprintf(uart_tx_buf,"ADC buffer size: %d\n1st decimation factor: %d\n", ADC_
 814              		.loc 1 164 0
 815 002c 2F33     		adds	r3, r3, #47
 816              		.loc 1 165 0
 817 002e 2846     		mov	r0, r5
 164:Core/Src/bassofono.c **** 	uart_tx_buf_in_idx += sprintf(uart_tx_buf,"ADC buffer size: %d\n1st decimation factor: %d\n", ADC_
 818              		.loc 1 164 0
 819 0030 2380     		strh	r3, [r4]	@ movhi
 820              		.loc 1 165 0
 821 0032 FFF7FEFF 		bl	sprintf
 822              	.LVL44:
 823 0036 2688     		ldrh	r6, [r4]
 166:Core/Src/bassofono.c **** 	uart_tx_buf_in_idx += sprintf(uart_tx_buf,"2st buffer size: %d\n2st decimation factor: %d\n", ST2_
 824              		.loc 1 166 0
 825 0038 2949     		ldr	r1, .L72+28
 165:Core/Src/bassofono.c **** 	uart_tx_buf_in_idx += sprintf(uart_tx_buf,"1st out sample rate: %d\n", ST1_OUT_SAMPLE_RATE);
 826              		.loc 1 165 0
 827 003a 1B36     		adds	r6, r6, #27
 828              		.loc 1 166 0
 829 003c 2846     		mov	r0, r5
 830 003e 0823     		movs	r3, #8
 831 0040 4FF48072 		mov	r2, #256
 165:Core/Src/bassofono.c **** 	uart_tx_buf_in_idx += sprintf(uart_tx_buf,"1st out sample rate: %d\n", ST1_OUT_SAMPLE_RATE);
 832              		.loc 1 165 0
 833 0044 2680     		strh	r6, [r4]	@ movhi
 834              		.loc 1 166 0
 835 0046 FFF7FEFF 		bl	sprintf
 836              	.LVL45:
 837 004a 2388     		ldrh	r3, [r4]
 167:Core/Src/bassofono.c **** 	uart_tx_buf_in_idx += sprintf(uart_tx_buf,"2st out sample rate: %d\n", ST2_OUT_SAMPLE_RATE);
 838              		.loc 1 167 0
 839 004c 2549     		ldr	r1, .L72+32
 166:Core/Src/bassofono.c **** 	uart_tx_buf_in_idx += sprintf(uart_tx_buf,"2st buffer size: %d\n2st decimation factor: %d\n", ST2_
 840              		.loc 1 166 0
 841 004e 2E33     		adds	r3, r3, #46
ARM GAS  /tmp/ccpFu4qm.s 			page 19


 842              		.loc 1 167 0
 843 0050 2846     		mov	r0, r5
 844 0052 45F27352 		movw	r2, #21875
 166:Core/Src/bassofono.c **** 	uart_tx_buf_in_idx += sprintf(uart_tx_buf,"2st buffer size: %d\n2st decimation factor: %d\n", ST2_
 845              		.loc 1 166 0
 846 0056 2380     		strh	r3, [r4]	@ movhi
 847              		.loc 1 167 0
 848 0058 FFF7FEFF 		bl	sprintf
 849              	.LVL46:
 850 005c 2388     		ldrh	r3, [r4]
 168:Core/Src/bassofono.c ****         uart_tx_buf_in_idx += sprintf(uart_tx_buf,"in gain %d\n", gain);
 851              		.loc 1 168 0
 852 005e 224A     		ldr	r2, .L72+36
 853 0060 2249     		ldr	r1, .L72+40
 854 0062 1268     		ldr	r2, [r2]
 167:Core/Src/bassofono.c **** 	uart_tx_buf_in_idx += sprintf(uart_tx_buf,"2st out sample rate: %d\n", ST2_OUT_SAMPLE_RATE);
 855              		.loc 1 167 0
 856 0064 1B33     		adds	r3, r3, #27
 857              		.loc 1 168 0
 858 0066 2846     		mov	r0, r5
 167:Core/Src/bassofono.c **** 	uart_tx_buf_in_idx += sprintf(uart_tx_buf,"2st out sample rate: %d\n", ST2_OUT_SAMPLE_RATE);
 859              		.loc 1 167 0
 860 0068 2380     		strh	r3, [r4]	@ movhi
 861              		.loc 1 168 0
 862 006a FFF7FEFF 		bl	sprintf
 863              	.LVL47:
 864 006e 2388     		ldrh	r3, [r4]
 169:Core/Src/bassofono.c **** 	uart_tx_buf_in_idx += sprintf(uart_tx_buf,"af gain %d\n", volume);
 865              		.loc 1 169 0
 866 0070 1F4A     		ldr	r2, .L72+44
 867 0072 2049     		ldr	r1, .L72+48
 868 0074 1268     		ldr	r2, [r2]
 168:Core/Src/bassofono.c ****         uart_tx_buf_in_idx += sprintf(uart_tx_buf,"in gain %d\n", gain);
 869              		.loc 1 168 0
 870 0076 0344     		add	r3, r3, r0
 871              		.loc 1 169 0
 872 0078 2846     		mov	r0, r5
 168:Core/Src/bassofono.c ****         uart_tx_buf_in_idx += sprintf(uart_tx_buf,"in gain %d\n", gain);
 873              		.loc 1 168 0
 874 007a 2380     		strh	r3, [r4]	@ movhi
 875              		.loc 1 169 0
 876 007c FFF7FEFF 		bl	sprintf
 877              	.LVL48:
 878 0080 2388     		ldrh	r3, [r4]
 170:Core/Src/bassofono.c **** 	uart_tx_buf_in_idx += sprintf(uart_tx_buf,"nco1 inc %d\n", nco1_increment);
 879              		.loc 1 170 0
 880 0082 1D4A     		ldr	r2, .L72+52
 881 0084 1D49     		ldr	r1, .L72+56
 882 0086 1268     		ldr	r2, [r2]
 169:Core/Src/bassofono.c **** 	uart_tx_buf_in_idx += sprintf(uart_tx_buf,"af gain %d\n", volume);
 883              		.loc 1 169 0
 884 0088 0344     		add	r3, r3, r0
 885              		.loc 1 170 0
 886 008a 2846     		mov	r0, r5
 169:Core/Src/bassofono.c **** 	uart_tx_buf_in_idx += sprintf(uart_tx_buf,"af gain %d\n", volume);
 887              		.loc 1 169 0
 888 008c 2380     		strh	r3, [r4]	@ movhi
ARM GAS  /tmp/ccpFu4qm.s 			page 20


 889              		.loc 1 170 0
 890 008e FFF7FEFF 		bl	sprintf
 891              	.LVL49:
 892 0092 2388     		ldrh	r3, [r4]
 171:Core/Src/bassofono.c **** 	uart_tx_buf_in_idx += sprintf(uart_tx_buf,"nco2 inc %d\n", NCO2_INCREMENT);
 893              		.loc 1 171 0
 894 0094 1A4A     		ldr	r2, .L72+60
 895 0096 1B49     		ldr	r1, .L72+64
 170:Core/Src/bassofono.c **** 	uart_tx_buf_in_idx += sprintf(uart_tx_buf,"nco1 inc %d\n", nco1_increment);
 896              		.loc 1 170 0
 897 0098 0344     		add	r3, r3, r0
 898              		.loc 1 171 0
 899 009a 2846     		mov	r0, r5
 170:Core/Src/bassofono.c **** 	uart_tx_buf_in_idx += sprintf(uart_tx_buf,"nco1 inc %d\n", nco1_increment);
 900              		.loc 1 170 0
 901 009c 2380     		strh	r3, [r4]	@ movhi
 902              		.loc 1 171 0
 903 009e FFF7FEFF 		bl	sprintf
 904              	.LVL50:
 905 00a2 2688     		ldrh	r6, [r4]
 172:Core/Src/bassofono.c **** 	uart_tx_buf_in_idx += sprintf(uart_tx_buf,"audio filter f %d bw %d\n", audio_filter_freq, audio_fi
 906              		.loc 1 172 0
 907 00a4 184B     		ldr	r3, .L72+68
 908 00a6 194A     		ldr	r2, .L72+72
 909 00a8 1B68     		ldr	r3, [r3]
 910 00aa 1268     		ldr	r2, [r2]
 911 00ac 1849     		ldr	r1, .L72+76
 912 00ae 2846     		mov	r0, r5
 171:Core/Src/bassofono.c **** 	uart_tx_buf_in_idx += sprintf(uart_tx_buf,"nco2 inc %d\n", NCO2_INCREMENT);
 913              		.loc 1 171 0
 914 00b0 06F11305 		add	r5, r6, #19
 915 00b4 2580     		strh	r5, [r4]	@ movhi
 916              		.loc 1 172 0
 917 00b6 FFF7FEFF 		bl	sprintf
 918              	.LVL51:
 919 00ba 2388     		ldrh	r3, [r4]
 920 00bc 1844     		add	r0, r0, r3
 921 00be 2080     		strh	r0, [r4]	@ movhi
 173:Core/Src/bassofono.c **** }
 922              		.loc 1 173 0
 923 00c0 70BD     		pop	{r4, r5, r6, pc}
 924              	.L73:
 925 00c2 00BF     		.align	2
 926              	.L72:
 927 00c4 00000000 		.word	uart_tx_buf
 928 00c8 00000000 		.word	uart_tx_buf_in_idx
 929 00cc 30570500 		.word	350000
 930 00d0 00000000 		.word	.LC0
 931 00d4 2C000000 		.word	.LC1
 932 00d8 CC550100 		.word	87500
 933 00dc 5C000000 		.word	.LC2
 934 00e0 78000000 		.word	.LC3
 935 00e4 A8000000 		.word	.LC4
 936 00e8 00000000 		.word	gain
 937 00ec C4000000 		.word	.LC5
 938 00f0 00000000 		.word	volume
 939 00f4 D0000000 		.word	.LC6
ARM GAS  /tmp/ccpFu4qm.s 			page 21


 940 00f8 00000000 		.word	nco1_increment
 941 00fc DC000000 		.word	.LC7
 942 0100 47E17A14 		.word	343597383
 943 0104 EC000000 		.word	.LC8
 944 0108 00000000 		.word	audio_filter_bw
 945 010c 00000000 		.word	audio_filter_freq
 946 0110 FC000000 		.word	.LC9
 947              		.cfi_endproc
 948              	.LFE418:
 950              		.comm	tx_dac_buffer,8192,4
 951              		.comm	tx_dac_buffer_toggle,1,1
 952              		.comm	half_tx_dac_buffer_empty,1,1
 953              		.comm	lf_buffer,512,4
 954              		.comm	prefilter_lf_buffer,256,4
 955              		.comm	lf_buffer_toggle,1,1
 956              		.comm	if_Q,256,4
 957              		.comm	if_I,256,4
 958              		.comm	adc_buffer,2048,4
 959              		.comm	uart_tx_buf_in_idx,2,2
 960              		.comm	uart_tx_buf,512,4
 961              		.comm	rx_cmd_rb_out_idx,1,1
 962              		.comm	rx_cmd_rb_in_idx,1,1
 963              		.comm	rx_cmd_rb,32,4
 964              		.comm	uart_rx_buf,2,4
 965              		.comm	state_changed,2,2
 966              		.comm	audio_filter_beta,4,4
 967              		.comm	audio_filter_bw,4,4
 968              		.comm	audio_filter_freq,4,4
 969              		.comm	nco1_increment,4,4
 970              		.comm	scan,4,4
 971              		.comm	mic_gain,4,4
 972              		.comm	squelch,4,4
 973              		.comm	volume,4,4
 974              		.comm	peakset,4,4
 975              		.comm	oldpeak,4,4
 976              		.comm	peak,4,4
 977              		.comm	gain,4,4
 978              		.comm	modulation,4,4
 979              		.comm	frequency,4,4
 980              		.comm	transmit,1,1
 981              		.comm	receive,1,1
 982              		.section	.rodata.diag.str1.4,"aMS",%progbits,1
 983              		.align	2
 984              	.LC0:
 985 0000 41444320 		.ascii	"ADC sample rate: %d\012ADC oversampling: %d\012\000"
 985      73616D70 
 985      6C652072 
 985      6174653A 
 985      2025640A 
 986 002a 0000     		.space	2
 987              	.LC1:
 988 002c 41444320 		.ascii	"ADC buffer size: %d\0121st decimation factor: %d\012"
 988      62756666 
 988      65722073 
 988      697A653A 
 988      2025640A 
 989 005a 00       		.ascii	"\000"
ARM GAS  /tmp/ccpFu4qm.s 			page 22


 990 005b 00       		.space	1
 991              	.LC2:
 992 005c 31737420 		.ascii	"1st out sample rate: %d\012\000"
 992      6F757420 
 992      73616D70 
 992      6C652072 
 992      6174653A 
 993 0075 000000   		.space	3
 994              	.LC3:
 995 0078 32737420 		.ascii	"2st buffer size: %d\0122st decimation factor: %d\012"
 995      62756666 
 995      65722073 
 995      697A653A 
 995      2025640A 
 996 00a6 00       		.ascii	"\000"
 997 00a7 00       		.space	1
 998              	.LC4:
 999 00a8 32737420 		.ascii	"2st out sample rate: %d\012\000"
 999      6F757420 
 999      73616D70 
 999      6C652072 
 999      6174653A 
 1000 00c1 000000   		.space	3
 1001              	.LC5:
 1002 00c4 696E2067 		.ascii	"in gain %d\012\000"
 1002      61696E20 
 1002      25640A00 
 1003              	.LC6:
 1004 00d0 61662067 		.ascii	"af gain %d\012\000"
 1004      61696E20 
 1004      25640A00 
 1005              	.LC7:
 1006 00dc 6E636F31 		.ascii	"nco1 inc %d\012\000"
 1006      20696E63 
 1006      2025640A 
 1006      00
 1007 00e9 000000   		.space	3
 1008              	.LC8:
 1009 00ec 6E636F32 		.ascii	"nco2 inc %d\012\000"
 1009      20696E63 
 1009      2025640A 
 1009      00
 1010 00f9 000000   		.space	3
 1011              	.LC9:
 1012 00fc 61756469 		.ascii	"audio filter f %d bw %d\012\000"
 1012      6F206669 
 1012      6C746572 
 1012      20662025 
 1012      64206277 
 1013              		.text
 1014              	.Letext0:
 1015              		.file 2 "/usr/include/newlib/machine/_default_types.h"
 1016              		.file 3 "/usr/include/newlib/sys/_stdint.h"
 1017              		.file 4 "/usr/include/newlib/sys/lock.h"
 1018              		.file 5 "/usr/include/newlib/sys/_types.h"
 1019              		.file 6 "/usr/lib/gcc/arm-none-eabi/7.3.1/include/stddef.h"
 1020              		.file 7 "/usr/include/newlib/sys/reent.h"
ARM GAS  /tmp/ccpFu4qm.s 			page 23


 1021              		.file 8 "/usr/include/newlib/math.h"
 1022              		.file 9 "Middlewares/Third_Party/ARM_CMSIS/CMSIS/DSP/Include/arm_math.h"
 1023              		.file 10 "Drivers/CMSIS/Include/core_cm4.h"
 1024              		.file 11 "Drivers/CMSIS/Device/ST/STM32G4xx/Include/system_stm32g4xx.h"
 1025              		.file 12 "Drivers/CMSIS/Device/ST/STM32G4xx/Include/stm32g431xx.h"
 1026              		.file 13 "Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_def.h"
 1027              		.file 14 "Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_dma.h"
 1028              		.file 15 "Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_cordic.h"
 1029              		.file 16 "Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_flash.h"
 1030              		.file 17 "Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_uart.h"
 1031              		.file 18 "Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal.h"
 1032              		.file 19 "Core/Inc/rx.h"
 1033              		.file 20 "Core/Inc/tx.h"
 1034              		.file 21 "Core/Inc/bassofono.h"
 1035              		.file 22 "Core/Inc/interface.h"
 1036              		.file 23 "/usr/include/newlib/stdio.h"
ARM GAS  /tmp/ccpFu4qm.s 			page 24


DEFINED SYMBOLS
                            *ABS*:0000000000000000 bassofono.c
     /tmp/ccpFu4qm.s:17     .text.set_nco1_freq:0000000000000000 $t
     /tmp/ccpFu4qm.s:25     .text.set_nco1_freq:0000000000000000 set_nco1_freq
     /tmp/ccpFu4qm.s:69     .text.set_nco1_freq:0000000000000028 $d
                            *COM*:0000000000000004 modulation
     /tmp/ccpFu4qm.s:75     .text.ringbuf_increment:0000000000000000 $t
     /tmp/ccpFu4qm.s:83     .text.ringbuf_increment:0000000000000000 ringbuf_increment
     /tmp/ccpFu4qm.s:106    .text.sat_mult_q31:0000000000000000 $t
     /tmp/ccpFu4qm.s:114    .text.sat_mult_q31:0000000000000000 sat_mult_q31
     /tmp/ccpFu4qm.s:143    .text.enqueue_cmd:0000000000000000 $t
     /tmp/ccpFu4qm.s:151    .text.enqueue_cmd:0000000000000000 enqueue_cmd
     /tmp/ccpFu4qm.s:188    .text.enqueue_cmd:0000000000000018 $d
                            *COM*:0000000000000001 rx_cmd_rb_in_idx
                            *COM*:0000000000000020 rx_cmd_rb
     /tmp/ccpFu4qm.s:194    .text.dequeue_cmd:0000000000000000 $t
     /tmp/ccpFu4qm.s:202    .text.dequeue_cmd:0000000000000000 dequeue_cmd
     /tmp/ccpFu4qm.s:236    .text.dequeue_cmd:000000000000001c $d
                            *COM*:0000000000000001 rx_cmd_rb_out_idx
     /tmp/ccpFu4qm.s:242    .text.enqueue_tx:0000000000000000 $t
     /tmp/ccpFu4qm.s:250    .text.enqueue_tx:0000000000000000 enqueue_tx
     /tmp/ccpFu4qm.s:332    .text.enqueue_tx:0000000000000040 $d
                            *COM*:0000000000000002 uart_tx_buf_in_idx
                            *COM*:0000000000000200 uart_tx_buf
     /tmp/ccpFu4qm.s:338    .text.set_frequency:0000000000000000 $t
     /tmp/ccpFu4qm.s:346    .text.set_frequency:0000000000000000 set_frequency
     /tmp/ccpFu4qm.s:414    .text.set_frequency:000000000000002c $d
                            *COM*:0000000000000004 frequency
                            *COM*:0000000000000004 nco1_increment
     /tmp/ccpFu4qm.s:424    .text.set_filter:0000000000000000 $t
     /tmp/ccpFu4qm.s:432    .text.set_filter:0000000000000000 set_filter
     /tmp/ccpFu4qm.s:452    .text.set_filter:0000000000000014 $d
                            *COM*:0000000000000004 audio_filter_beta
                            *COM*:0000000000000004 audio_filter_bw
                            *COM*:0000000000000004 audio_filter_freq
     /tmp/ccpFu4qm.s:460    .text.set_modulation:0000000000000000 $t
     /tmp/ccpFu4qm.s:468    .text.set_modulation:0000000000000000 set_modulation
     /tmp/ccpFu4qm.s:539    .text.set_modulation:0000000000000030 $d
     /tmp/ccpFu4qm.s:549    .text.set_dummy:0000000000000000 $t
     /tmp/ccpFu4qm.s:557    .text.set_dummy:0000000000000000 set_dummy
     /tmp/ccpFu4qm.s:570    .text.set_changed:0000000000000000 $t
     /tmp/ccpFu4qm.s:578    .text.set_changed:0000000000000000 set_changed
     /tmp/ccpFu4qm.s:599    .text.set_changed:0000000000000010 $d
                            *COM*:0000000000000002 state_changed
     /tmp/ccpFu4qm.s:604    .text.reset_changed:0000000000000000 $t
     /tmp/ccpFu4qm.s:612    .text.reset_changed:0000000000000000 reset_changed
     /tmp/ccpFu4qm.s:633    .text.reset_changed:0000000000000014 $d
     /tmp/ccpFu4qm.s:638    .text.get_changed:0000000000000000 $t
     /tmp/ccpFu4qm.s:646    .text.get_changed:0000000000000000 get_changed
     /tmp/ccpFu4qm.s:665    .text.get_changed:0000000000000010 $d
     /tmp/ccpFu4qm.s:670    .text.state_set_default:0000000000000000 $t
     /tmp/ccpFu4qm.s:678    .text.state_set_default:0000000000000000 state_set_default
     /tmp/ccpFu4qm.s:750    .text.state_set_default:0000000000000048 $d
                            *COM*:0000000000000004 gain
                            *COM*:0000000000000004 volume
     /tmp/ccpFu4qm.s:766    .text.diag:0000000000000000 $t
     /tmp/ccpFu4qm.s:774    .text.diag:0000000000000000 diag
ARM GAS  /tmp/ccpFu4qm.s 			page 25


     /tmp/ccpFu4qm.s:927    .text.diag:00000000000000c4 $d
                            *COM*:0000000000002000 tx_dac_buffer
                            *COM*:0000000000000001 tx_dac_buffer_toggle
                            *COM*:0000000000000001 half_tx_dac_buffer_empty
                            *COM*:0000000000000200 lf_buffer
                            *COM*:0000000000000100 prefilter_lf_buffer
                            *COM*:0000000000000001 lf_buffer_toggle
                            *COM*:0000000000000100 if_Q
                            *COM*:0000000000000100 if_I
                            *COM*:0000000000000800 adc_buffer
                            *COM*:0000000000000002 uart_rx_buf
                            *COM*:0000000000000004 scan
                            *COM*:0000000000000004 mic_gain
                            *COM*:0000000000000004 squelch
                            *COM*:0000000000000004 peakset
                            *COM*:0000000000000004 oldpeak
                            *COM*:0000000000000004 peak
                            *COM*:0000000000000001 transmit
                            *COM*:0000000000000001 receive
     /tmp/ccpFu4qm.s:983    .rodata.diag.str1.4:0000000000000000 $d

UNDEFINED SYMBOLS
__aeabi_ldivmod
decode_cmd
audio_filter_generate_coeffs
audio_filter_coeffs
st2_filter_init
sprintf
