summaryrefslogtreecommitdiff
path: root/hid-dials/build/usbd_midi_if.lst
diff options
context:
space:
mode:
Diffstat (limited to 'hid-dials/build/usbd_midi_if.lst')
-rw-r--r--hid-dials/build/usbd_midi_if.lst2246
1 files changed, 2246 insertions, 0 deletions
diff --git a/hid-dials/build/usbd_midi_if.lst b/hid-dials/build/usbd_midi_if.lst
new file mode 100644
index 0000000..c984379
--- /dev/null
+++ b/hid-dials/build/usbd_midi_if.lst
@@ -0,0 +1,2246 @@
+ARM GAS /tmp/ccxcefs2.s page 1
+
+
+ 1 .cpu cortex-m0
+ 2 .eabi_attribute 20, 1
+ 3 .eabi_attribute 21, 1
+ 4 .eabi_attribute 23, 3
+ 5 .eabi_attribute 24, 1
+ 6 .eabi_attribute 25, 1
+ 7 .eabi_attribute 26, 1
+ 8 .eabi_attribute 30, 1
+ 9 .eabi_attribute 34, 0
+ 10 .eabi_attribute 18, 4
+ 11 .file "usbd_midi_if.c"
+ 12 .text
+ 13 .Ltext0:
+ 14 .cfi_sections .debug_frame
+ 15 .section .text.MIDI_DataTx,"ax",%progbits
+ 16 .align 1
+ 17 .syntax unified
+ 18 .code 16
+ 19 .thumb_func
+ 20 .fpu softvfp
+ 22 MIDI_DataTx:
+ 23 .LFB52:
+ 24 .file 1 "Src/usbd_midi_if.c"
+ 1:Src/usbd_midi_if.c **** /**
+ 2:Src/usbd_midi_if.c **** ******************************************************************************
+ 3:Src/usbd_midi_if.c **** * @file : usbd_midi_if.c
+ 4:Src/usbd_midi_if.c **** * @brief :
+ 5:Src/usbd_midi_if.c **** ******************************************************************************
+ 6:Src/usbd_midi_if.c ****
+ 7:Src/usbd_midi_if.c **** (CC at)2016 by D.F.Mac. @TripArts Music
+ 8:Src/usbd_midi_if.c ****
+ 9:Src/usbd_midi_if.c **** ******************************************************************************
+ 10:Src/usbd_midi_if.c ****
+ 11:Src/usbd_midi_if.c **** Modified by keshikan (www.keshikan.net) 2018
+ 12:Src/usbd_midi_if.c **** The license is (CC BY 4.0), and takes over from original usbd_midi_if.h/c.
+ 13:Src/usbd_midi_if.c ****
+ 14:Src/usbd_midi_if.c **** See also original source code page.
+ 15:Src/usbd_midi_if.c **** https://github.com/mimuz/mimuz-tuch/blob/master/STM32/
+ 16:Src/usbd_midi_if.c ****
+ 17:Src/usbd_midi_if.c **** ******************************************************************************
+ 18:Src/usbd_midi_if.c **** */
+ 19:Src/usbd_midi_if.c ****
+ 20:Src/usbd_midi_if.c **** /* Includes ------------------------------------------------------------------*/
+ 21:Src/usbd_midi_if.c **** #include "usbd_midi_if.h"
+ 22:Src/usbd_midi_if.c **** #include "stm32f0xx_hal.h"
+ 23:Src/usbd_midi_if.c ****
+ 24:Src/usbd_midi_if.c ****
+ 25:Src/usbd_midi_if.c **** // basic midi rx/tx functions
+ 26:Src/usbd_midi_if.c **** static uint16_t MIDI_DataRx(uint8_t *msg, uint16_t length);
+ 27:Src/usbd_midi_if.c **** static uint16_t MIDI_DataTx(uint8_t *msg, uint16_t length);
+ 28:Src/usbd_midi_if.c ****
+ 29:Src/usbd_midi_if.c **** // for Cure Series
+ 30:Src/usbd_midi_if.c **** #define MIDI_BUFFER_SIZ (512)//FIFO buffer byte size for midi message buffer
+ 31:Src/usbd_midi_if.c ****
+ 32:Src/usbd_midi_if.c **** RingBufferU8 rbuf_usb_rx[MIDI_OUT_JACK_NUM]; //for input from USB
+ 33:Src/usbd_midi_if.c **** RingBufferU8 rbuf_jack_rx[MIDI_IN_JACK_NUM]; //for input from MIDI-IN jack
+ 34:Src/usbd_midi_if.c ****
+ ARM GAS /tmp/ccxcefs2.s page 2
+
+
+ 35:Src/usbd_midi_if.c **** //for receiving midi data from jack
+ 36:Src/usbd_midi_if.c **** MidiAnalysisStatus analyzed_status[MIDI_IN_JACK_NUM];
+ 37:Src/usbd_midi_if.c **** MIDIEvent midi_event[MIDI_IN_JACK_NUM]; //received midi data
+ 38:Src/usbd_midi_if.c ****
+ 39:Src/usbd_midi_if.c **** uint8_t rx_midi_msg[MIDI_IN_JACK_NUM];
+ 40:Src/usbd_midi_if.c ****
+ 41:Src/usbd_midi_if.c ****
+ 42:Src/usbd_midi_if.c **** FUNC_STATUS midiInit()
+ 43:Src/usbd_midi_if.c **** {
+ 44:Src/usbd_midi_if.c **** uint32_t i,j;
+ 45:Src/usbd_midi_if.c ****
+ 46:Src/usbd_midi_if.c **** for(i=0; i<MIDI_OUT_JACK_NUM; i++){
+ 47:Src/usbd_midi_if.c **** if(BUFFER_SUCCESS != cureRingBufferU8Init(&rbuf_usb_rx[i], MIDI_BUFFER_SIZ))
+ 48:Src/usbd_midi_if.c **** {
+ 49:Src/usbd_midi_if.c **** return FUNC_ERROR;
+ 50:Src/usbd_midi_if.c **** }
+ 51:Src/usbd_midi_if.c **** }
+ 52:Src/usbd_midi_if.c ****
+ 53:Src/usbd_midi_if.c **** for(i=0; i<MIDI_IN_JACK_NUM; i++){
+ 54:Src/usbd_midi_if.c **** if(BUFFER_SUCCESS != cureRingBufferU8Init(&rbuf_jack_rx[i], MIDI_BUFFER_SIZ))
+ 55:Src/usbd_midi_if.c **** {
+ 56:Src/usbd_midi_if.c **** return FUNC_ERROR;
+ 57:Src/usbd_midi_if.c **** }
+ 58:Src/usbd_midi_if.c **** }
+ 59:Src/usbd_midi_if.c ****
+ 60:Src/usbd_midi_if.c **** //Init RX
+ 61:Src/usbd_midi_if.c **** for(i=0; i<MIDI_IN_JACK_NUM; i++){
+ 62:Src/usbd_midi_if.c ****
+ 63:Src/usbd_midi_if.c **** rx_midi_msg[i] = 0x00;
+ 64:Src/usbd_midi_if.c **** analyzed_status[i].data_idx = 0;
+ 65:Src/usbd_midi_if.c **** midi_event[i].length = 0;
+ 66:Src/usbd_midi_if.c ****
+ 67:Src/usbd_midi_if.c **** for(j=0; j<MIDI_SENDDATA_MAX; j++){
+ 68:Src/usbd_midi_if.c **** midi_event[i].midi_byte[j] = 0x00;
+ 69:Src/usbd_midi_if.c **** }
+ 70:Src/usbd_midi_if.c **** }
+ 71:Src/usbd_midi_if.c ****
+ 72:Src/usbd_midi_if.c **** return FUNC_SUCCESS;
+ 73:Src/usbd_midi_if.c **** }
+ 74:Src/usbd_midi_if.c ****
+ 75:Src/usbd_midi_if.c **** FUNC_STATUS midiGetFromUsbRx(uint8_t cable_num, uint8_t* dat)
+ 76:Src/usbd_midi_if.c **** {
+ 77:Src/usbd_midi_if.c **** if(BUFFER_SUCCESS != cureRingBufferU8Dequeue(&rbuf_usb_rx[cable_num], dat))
+ 78:Src/usbd_midi_if.c **** {
+ 79:Src/usbd_midi_if.c **** return FUNC_ERROR;
+ 80:Src/usbd_midi_if.c **** }
+ 81:Src/usbd_midi_if.c ****
+ 82:Src/usbd_midi_if.c **** return FUNC_SUCCESS;
+ 83:Src/usbd_midi_if.c **** }
+ 84:Src/usbd_midi_if.c ****
+ 85:Src/usbd_midi_if.c **** FUNC_STATUS midiGetFromJackRx(uint8_t cable_num)
+ 86:Src/usbd_midi_if.c **** {
+ 87:Src/usbd_midi_if.c **** if(BUFFER_SUCCESS != cureRingBufferU8Dequeue(&rbuf_jack_rx[cable_num], &rx_midi_msg[cable_num]))
+ 88:Src/usbd_midi_if.c **** {
+ 89:Src/usbd_midi_if.c **** return FUNC_ERROR;
+ 90:Src/usbd_midi_if.c **** }
+ 91:Src/usbd_midi_if.c ****
+ ARM GAS /tmp/ccxcefs2.s page 3
+
+
+ 92:Src/usbd_midi_if.c **** return FUNC_SUCCESS;
+ 93:Src/usbd_midi_if.c **** }
+ 94:Src/usbd_midi_if.c ****
+ 95:Src/usbd_midi_if.c **** FUNC_STATUS midiSetFromJackRx(uint8_t cable_num, uint8_t* dat)
+ 96:Src/usbd_midi_if.c **** {
+ 97:Src/usbd_midi_if.c **** if(BUFFER_SUCCESS != cureRingBufferU8Enqueue(&rbuf_jack_rx[cable_num], dat))
+ 98:Src/usbd_midi_if.c **** {
+ 99:Src/usbd_midi_if.c **** return FUNC_ERROR;
+ 100:Src/usbd_midi_if.c **** }
+ 101:Src/usbd_midi_if.c ****
+ 102:Src/usbd_midi_if.c **** return FUNC_SUCCESS;
+ 103:Src/usbd_midi_if.c **** }
+ 104:Src/usbd_midi_if.c ****
+ 105:Src/usbd_midi_if.c ****
+ 106:Src/usbd_midi_if.c **** bool isUsbRxBufEmpty(uint8_t cable_num)
+ 107:Src/usbd_midi_if.c **** {
+ 108:Src/usbd_midi_if.c **** if( 0 != _cureRingBufferU8GetUsedSize(&rbuf_usb_rx[cable_num]) ){
+ 109:Src/usbd_midi_if.c **** return false;
+ 110:Src/usbd_midi_if.c **** }
+ 111:Src/usbd_midi_if.c ****
+ 112:Src/usbd_midi_if.c **** return true;
+ 113:Src/usbd_midi_if.c **** }
+ 114:Src/usbd_midi_if.c ****
+ 115:Src/usbd_midi_if.c **** bool isJackRxBufEmpty(uint8_t cable_num)
+ 116:Src/usbd_midi_if.c **** {
+ 117:Src/usbd_midi_if.c **** if( 0 != _cureRingBufferU8GetUsedSize(&rbuf_jack_rx[cable_num]) ){
+ 118:Src/usbd_midi_if.c **** return false;
+ 119:Src/usbd_midi_if.c **** }
+ 120:Src/usbd_midi_if.c ****
+ 121:Src/usbd_midi_if.c **** return true;
+ 122:Src/usbd_midi_if.c **** }
+ 123:Src/usbd_midi_if.c ****
+ 124:Src/usbd_midi_if.c **** bool isRxBufEmpty()
+ 125:Src/usbd_midi_if.c **** {
+ 126:Src/usbd_midi_if.c **** uint32_t i;
+ 127:Src/usbd_midi_if.c ****
+ 128:Src/usbd_midi_if.c **** for(i=0; i<MIDI_OUT_JACK_NUM; i++){
+ 129:Src/usbd_midi_if.c **** if(0 != _cureRingBufferU8GetUsedSize(&rbuf_usb_rx[i]))
+ 130:Src/usbd_midi_if.c **** {
+ 131:Src/usbd_midi_if.c **** return false;
+ 132:Src/usbd_midi_if.c **** }
+ 133:Src/usbd_midi_if.c **** }
+ 134:Src/usbd_midi_if.c ****
+ 135:Src/usbd_midi_if.c **** for(i=0; i<MIDI_IN_JACK_NUM; i++){
+ 136:Src/usbd_midi_if.c **** if(0 != _cureRingBufferU8GetUsedSize(&rbuf_jack_rx[i]))
+ 137:Src/usbd_midi_if.c **** {
+ 138:Src/usbd_midi_if.c **** return false;
+ 139:Src/usbd_midi_if.c **** }
+ 140:Src/usbd_midi_if.c **** }
+ 141:Src/usbd_midi_if.c **** return true;
+ 142:Src/usbd_midi_if.c **** }
+ 143:Src/usbd_midi_if.c ****
+ 144:Src/usbd_midi_if.c ****
+ 145:Src/usbd_midi_if.c **** USBD_MIDI_ItfTypeDef USBD_Interface_fops_FS =
+ 146:Src/usbd_midi_if.c **** {
+ 147:Src/usbd_midi_if.c **** MIDI_DataRx,
+ 148:Src/usbd_midi_if.c **** MIDI_DataTx
+ ARM GAS /tmp/ccxcefs2.s page 4
+
+
+ 149:Src/usbd_midi_if.c **** };
+ 150:Src/usbd_midi_if.c ****
+ 151:Src/usbd_midi_if.c ****
+ 152:Src/usbd_midi_if.c **** static uint16_t MIDI_DataRx(uint8_t *msg, uint16_t length){
+ 153:Src/usbd_midi_if.c **** uint16_t cnt;
+ 154:Src/usbd_midi_if.c **** uint16_t msgs = length / 4;
+ 155:Src/usbd_midi_if.c **** uint16_t chk = length % 4;
+ 156:Src/usbd_midi_if.c **** uint8_t u8b;
+ 157:Src/usbd_midi_if.c **** uint8_t midi_size;
+ 158:Src/usbd_midi_if.c ****
+ 159:Src/usbd_midi_if.c **** if(0 != chk)
+ 160:Src/usbd_midi_if.c **** {
+ 161:Src/usbd_midi_if.c **** return 0;
+ 162:Src/usbd_midi_if.c **** }
+ 163:Src/usbd_midi_if.c ****
+ 164:Src/usbd_midi_if.c **** for(uint32_t cnt_msgs = 0; cnt_msgs < msgs; cnt_msgs++){
+ 165:Src/usbd_midi_if.c ****
+ 166:Src/usbd_midi_if.c **** uint8_t cable_num = (msg[0 + 4*cnt_msgs] & 0xF0) >> 4;
+ 167:Src/usbd_midi_if.c **** uint8_t code_idx_num = msg[0 + 4*cnt_msgs] & 0x0F;
+ 168:Src/usbd_midi_if.c ****
+ 169:Src/usbd_midi_if.c **** switch (code_idx_num) {
+ 170:Src/usbd_midi_if.c ****
+ 171:Src/usbd_midi_if.c **** //not defined
+ 172:Src/usbd_midi_if.c **** case 0x0:
+ 173:Src/usbd_midi_if.c **** case 0x1:
+ 174:Src/usbd_midi_if.c **** midi_size = 0;
+ 175:Src/usbd_midi_if.c **** break;
+ 176:Src/usbd_midi_if.c ****
+ 177:Src/usbd_midi_if.c **** //1byte message
+ 178:Src/usbd_midi_if.c **** case 0x5:
+ 179:Src/usbd_midi_if.c **** case 0xF:
+ 180:Src/usbd_midi_if.c **** midi_size = 1;
+ 181:Src/usbd_midi_if.c **** break;
+ 182:Src/usbd_midi_if.c ****
+ 183:Src/usbd_midi_if.c **** //2byte message
+ 184:Src/usbd_midi_if.c **** case 0x2:
+ 185:Src/usbd_midi_if.c **** case 0x6:
+ 186:Src/usbd_midi_if.c **** case 0xC:
+ 187:Src/usbd_midi_if.c **** case 0xD:
+ 188:Src/usbd_midi_if.c **** midi_size = 2;
+ 189:Src/usbd_midi_if.c **** break;
+ 190:Src/usbd_midi_if.c ****
+ 191:Src/usbd_midi_if.c **** //3byte message
+ 192:Src/usbd_midi_if.c **** case 0x3:
+ 193:Src/usbd_midi_if.c **** case 0x4:
+ 194:Src/usbd_midi_if.c **** case 0x7:
+ 195:Src/usbd_midi_if.c **** case 0x8:
+ 196:Src/usbd_midi_if.c **** case 0x9:
+ 197:Src/usbd_midi_if.c **** case 0xA:
+ 198:Src/usbd_midi_if.c **** case 0xB:
+ 199:Src/usbd_midi_if.c **** case 0xE:
+ 200:Src/usbd_midi_if.c **** midi_size = 3;
+ 201:Src/usbd_midi_if.c **** break;
+ 202:Src/usbd_midi_if.c ****
+ 203:Src/usbd_midi_if.c **** default:
+ 204:Src/usbd_midi_if.c **** midi_size = 0;
+ 205:Src/usbd_midi_if.c **** break;
+ ARM GAS /tmp/ccxcefs2.s page 5
+
+
+ 206:Src/usbd_midi_if.c **** }
+ 207:Src/usbd_midi_if.c ****
+ 208:Src/usbd_midi_if.c **** for(cnt = 0;cnt < midi_size;cnt ++){
+ 209:Src/usbd_midi_if.c **** u8b = *(msg + 4*cnt_msgs + cnt + 1);
+ 210:Src/usbd_midi_if.c **** cureRingBufferU8Enqueue(&rbuf_usb_rx[cable_num], &u8b);
+ 211:Src/usbd_midi_if.c **** }
+ 212:Src/usbd_midi_if.c **** }
+ 213:Src/usbd_midi_if.c ****
+ 214:Src/usbd_midi_if.c **** return 0;
+ 215:Src/usbd_midi_if.c **** }
+ 216:Src/usbd_midi_if.c ****
+ 217:Src/usbd_midi_if.c **** void sendMidiMessage(uint8_t *msg, uint16_t size){
+ 218:Src/usbd_midi_if.c **** if(size == 4){
+ 219:Src/usbd_midi_if.c **** // APP_Rx_Buffer[0] = msg[0];
+ 220:Src/usbd_midi_if.c **** // APP_Rx_Buffer[1] = msg[1];
+ 221:Src/usbd_midi_if.c **** // APP_Rx_Buffer[2] = msg[2];
+ 222:Src/usbd_midi_if.c **** // APP_Rx_Buffer[3] = msg[3];
+ 223:Src/usbd_midi_if.c **** // USBD_MIDI_SendData(&hUsbDeviceFS, APP_Rx_Buffer, size);
+ 224:Src/usbd_midi_if.c **** MIDI_DataTx(msg, size);
+ 225:Src/usbd_midi_if.c **** }
+ 226:Src/usbd_midi_if.c **** }
+ 227:Src/usbd_midi_if.c ****
+ 228:Src/usbd_midi_if.c **** static uint16_t MIDI_DataTx(uint8_t *msg, uint16_t length){
+ 25 .loc 1 228 0
+ 26 .cfi_startproc
+ 27 @ args = 0, pretend = 0, frame = 0
+ 28 @ frame_needed = 0, uses_anonymous_args = 0
+ 29 .LVL0:
+ 30 0000 70B5 push {r4, r5, r6, lr}
+ 31 .LCFI0:
+ 32 .cfi_def_cfa_offset 16
+ 33 .cfi_offset 4, -16
+ 34 .cfi_offset 5, -12
+ 35 .cfi_offset 6, -8
+ 36 .cfi_offset 14, -4
+ 37 .LVL1:
+ 229:Src/usbd_midi_if.c **** uint32_t i = 0;
+ 38 .loc 1 229 0
+ 39 0002 0022 movs r2, #0
+ 40 .LVL2:
+ 41 .L2:
+ 230:Src/usbd_midi_if.c **** while (i < length) {
+ 42 .loc 1 230 0
+ 43 0004 9142 cmp r1, r2
+ 44 0006 0FD9 bls .L5
+ 231:Src/usbd_midi_if.c **** APP_Rx_Buffer[APP_Rx_ptr_in] = *(msg + i);
+ 45 .loc 1 231 0
+ 46 0008 084C ldr r4, .L6
+ 47 000a 2368 ldr r3, [r4]
+ 48 000c 865C ldrb r6, [r0, r2]
+ 49 000e 084D ldr r5, .L6+4
+ 50 0010 EE54 strb r6, [r5, r3]
+ 232:Src/usbd_midi_if.c **** APP_Rx_ptr_in++;
+ 51 .loc 1 232 0
+ 52 0012 0133 adds r3, r3, #1
+ 53 0014 2360 str r3, [r4]
+ 233:Src/usbd_midi_if.c **** i++;
+ ARM GAS /tmp/ccxcefs2.s page 6
+
+
+ 54 .loc 1 233 0
+ 55 0016 0132 adds r2, r2, #1
+ 56 .LVL3:
+ 234:Src/usbd_midi_if.c **** if (APP_Rx_ptr_in == APP_RX_DATA_SIZE) {
+ 57 .loc 1 234 0
+ 58 0018 8024 movs r4, #128
+ 59 001a 6400 lsls r4, r4, #1
+ 60 001c A342 cmp r3, r4
+ 61 001e F1D1 bne .L2
+ 235:Src/usbd_midi_if.c **** APP_Rx_ptr_in = 0;
+ 62 .loc 1 235 0
+ 63 0020 024B ldr r3, .L6
+ 64 0022 0024 movs r4, #0
+ 65 0024 1C60 str r4, [r3]
+ 66 0026 EDE7 b .L2
+ 67 .L5:
+ 236:Src/usbd_midi_if.c **** }
+ 237:Src/usbd_midi_if.c **** }
+ 238:Src/usbd_midi_if.c **** return USBD_OK;
+ 239:Src/usbd_midi_if.c **** }
+ 68 .loc 1 239 0
+ 69 0028 0020 movs r0, #0
+ 70 .LVL4:
+ 71 @ sp needed
+ 72 002a 70BD pop {r4, r5, r6, pc}
+ 73 .L7:
+ 74 .align 2
+ 75 .L6:
+ 76 002c 00000000 .word APP_Rx_ptr_in
+ 77 0030 00000000 .word APP_Rx_Buffer
+ 78 .cfi_endproc
+ 79 .LFE52:
+ 81 .section .text.MIDI_DataRx,"ax",%progbits
+ 82 .align 1
+ 83 .syntax unified
+ 84 .code 16
+ 85 .thumb_func
+ 86 .fpu softvfp
+ 88 MIDI_DataRx:
+ 89 .LFB50:
+ 152:Src/usbd_midi_if.c **** uint16_t cnt;
+ 90 .loc 1 152 0
+ 91 .cfi_startproc
+ 92 @ args = 0, pretend = 0, frame = 16
+ 93 @ frame_needed = 0, uses_anonymous_args = 0
+ 94 .LVL5:
+ 95 0000 F0B5 push {r4, r5, r6, r7, lr}
+ 96 .LCFI1:
+ 97 .cfi_def_cfa_offset 20
+ 98 .cfi_offset 4, -20
+ 99 .cfi_offset 5, -16
+ 100 .cfi_offset 6, -12
+ 101 .cfi_offset 7, -8
+ 102 .cfi_offset 14, -4
+ 103 0002 DE46 mov lr, fp
+ 104 0004 4746 mov r7, r8
+ 105 0006 80B5 push {r7, lr}
+ ARM GAS /tmp/ccxcefs2.s page 7
+
+
+ 106 .LCFI2:
+ 107 .cfi_def_cfa_offset 28
+ 108 .cfi_offset 8, -28
+ 109 .cfi_offset 11, -24
+ 110 0008 85B0 sub sp, sp, #20
+ 111 .LCFI3:
+ 112 .cfi_def_cfa_offset 48
+ 113 000a 0600 movs r6, r0
+ 154:Src/usbd_midi_if.c **** uint16_t chk = length % 4;
+ 114 .loc 1 154 0
+ 115 000c 8B08 lsrs r3, r1, #2
+ 116 000e 9B46 mov fp, r3
+ 117 .LVL6:
+ 155:Src/usbd_midi_if.c **** uint8_t u8b;
+ 118 .loc 1 155 0
+ 119 0010 0327 movs r7, #3
+ 120 0012 0F40 ands r7, r1
+ 121 0014 0197 str r7, [sp, #4]
+ 122 .LVL7:
+ 159:Src/usbd_midi_if.c **** {
+ 123 .loc 1 159 0
+ 124 0016 27D0 beq .L10
+ 125 .LVL8:
+ 126 .L9:
+ 215:Src/usbd_midi_if.c ****
+ 127 .loc 1 215 0
+ 128 0018 0020 movs r0, #0
+ 129 001a 05B0 add sp, sp, #20
+ 130 @ sp needed
+ 131 .LVL9:
+ 132 .LVL10:
+ 133 001c 0CBC pop {r2, r3}
+ 134 001e 9046 mov r8, r2
+ 135 0020 9B46 mov fp, r3
+ 136 0022 F0BD pop {r4, r5, r6, r7, pc}
+ 137 .LVL11:
+ 138 .L11:
+ 139 .LBB2:
+ 140 .LBB3:
+ 174:Src/usbd_midi_if.c **** break;
+ 141 .loc 1 174 0
+ 142 0024 0023 movs r3, #0
+ 143 0026 0093 str r3, [sp]
+ 144 .L15:
+ 145 .LVL12:
+ 208:Src/usbd_midi_if.c **** u8b = *(msg + 4*cnt_msgs + cnt + 1);
+ 146 .loc 1 208 0
+ 147 0028 019C ldr r4, [sp, #4]
+ 148 002a 18E0 b .L16
+ 149 .LVL13:
+ 150 .L12:
+ 188:Src/usbd_midi_if.c **** break;
+ 151 .loc 1 188 0
+ 152 002c 0223 movs r3, #2
+ 153 002e 0093 str r3, [sp]
+ 189:Src/usbd_midi_if.c ****
+ 154 .loc 1 189 0
+ ARM GAS /tmp/ccxcefs2.s page 8
+
+
+ 155 0030 FAE7 b .L15
+ 156 .LVL14:
+ 157 .L14:
+ 200:Src/usbd_midi_if.c **** break;
+ 158 .loc 1 200 0
+ 159 0032 0323 movs r3, #3
+ 160 0034 0093 str r3, [sp]
+ 201:Src/usbd_midi_if.c ****
+ 161 .loc 1 201 0
+ 162 0036 F7E7 b .L15
+ 163 .LVL15:
+ 164 .L19:
+ 180:Src/usbd_midi_if.c **** break;
+ 165 .loc 1 180 0
+ 166 0038 0123 movs r3, #1
+ 167 003a 0093 str r3, [sp]
+ 168 003c F4E7 b .L15
+ 169 .LVL16:
+ 170 .L17:
+ 209:Src/usbd_midi_if.c **** cureRingBufferU8Enqueue(&rbuf_usb_rx[cable_num], &u8b);
+ 171 .loc 1 209 0 discriminator 3
+ 172 003e 4346 mov r3, r8
+ 173 0040 E318 adds r3, r4, r3
+ 174 0042 0133 adds r3, r3, #1
+ 175 0044 F35C ldrb r3, [r6, r3]
+ 176 0046 02AA add r2, sp, #8
+ 177 0048 D11D adds r1, r2, #7
+ 178 004a 0B70 strb r3, [r1]
+ 210:Src/usbd_midi_if.c **** }
+ 179 .loc 1 210 0 discriminator 3
+ 180 004c 6B00 lsls r3, r5, #1
+ 181 004e 5B19 adds r3, r3, r5
+ 182 0050 9800 lsls r0, r3, #2
+ 183 0052 0B4B ldr r3, .L20
+ 184 0054 C018 adds r0, r0, r3
+ 185 0056 FFF7FEFF bl cureRingBufferU8Enqueue
+ 186 .LVL17:
+ 208:Src/usbd_midi_if.c **** u8b = *(msg + 4*cnt_msgs + cnt + 1);
+ 187 .loc 1 208 0 discriminator 3
+ 188 005a 0134 adds r4, r4, #1
+ 189 .LVL18:
+ 190 005c A4B2 uxth r4, r4
+ 191 .LVL19:
+ 192 .L16:
+ 208:Src/usbd_midi_if.c **** u8b = *(msg + 4*cnt_msgs + cnt + 1);
+ 193 .loc 1 208 0 is_stmt 0 discriminator 1
+ 194 005e 6B46 mov r3, sp
+ 195 0060 1B88 ldrh r3, [r3]
+ 196 0062 A342 cmp r3, r4
+ 197 0064 EBD8 bhi .L17
+ 198 .LBE3:
+ 164:Src/usbd_midi_if.c ****
+ 199 .loc 1 164 0 is_stmt 1 discriminator 2
+ 200 0066 0137 adds r7, r7, #1
+ 201 .LVL20:
+ 202 .L10:
+ 164:Src/usbd_midi_if.c ****
+ ARM GAS /tmp/ccxcefs2.s page 9
+
+
+ 203 .loc 1 164 0 is_stmt 0 discriminator 1
+ 204 0068 BB45 cmp fp, r7
+ 205 006a D5D9 bls .L9
+ 206 .LBB4:
+ 166:Src/usbd_midi_if.c **** uint8_t code_idx_num = msg[0 + 4*cnt_msgs] & 0x0F;
+ 207 .loc 1 166 0 is_stmt 1
+ 208 006c BB00 lsls r3, r7, #2
+ 209 006e 9846 mov r8, r3
+ 210 0070 F25C ldrb r2, [r6, r3]
+ 211 0072 1509 lsrs r5, r2, #4
+ 212 .LVL21:
+ 167:Src/usbd_midi_if.c ****
+ 213 .loc 1 167 0
+ 214 0074 0F23 movs r3, #15
+ 215 0076 1340 ands r3, r2
+ 216 .LVL22:
+ 169:Src/usbd_midi_if.c ****
+ 217 .loc 1 169 0
+ 218 0078 9B00 lsls r3, r3, #2
+ 219 .LVL23:
+ 220 007a 024A ldr r2, .L20+4
+ 221 .LVL24:
+ 222 007c D358 ldr r3, [r2, r3]
+ 223 007e 9F46 mov pc, r3
+ 224 .section .rodata.MIDI_DataRx,"a",%progbits
+ 225 .align 2
+ 226 .L13:
+ 227 0000 24000000 .word .L11
+ 228 0004 24000000 .word .L11
+ 229 0008 2C000000 .word .L12
+ 230 000c 32000000 .word .L14
+ 231 0010 32000000 .word .L14
+ 232 0014 38000000 .word .L19
+ 233 0018 2C000000 .word .L12
+ 234 001c 32000000 .word .L14
+ 235 0020 32000000 .word .L14
+ 236 0024 32000000 .word .L14
+ 237 0028 32000000 .word .L14
+ 238 002c 32000000 .word .L14
+ 239 0030 2C000000 .word .L12
+ 240 0034 2C000000 .word .L12
+ 241 0038 32000000 .word .L14
+ 242 003c 38000000 .word .L19
+ 243 .section .text.MIDI_DataRx
+ 244 .L21:
+ 245 .align 2
+ 246 .L20:
+ 247 0080 00000000 .word rbuf_usb_rx
+ 248 0084 00000000 .word .L13
+ 249 .LBE4:
+ 250 .LBE2:
+ 251 .cfi_endproc
+ 252 .LFE50:
+ 254 .section .text.midiInit,"ax",%progbits
+ 255 .align 1
+ 256 .global midiInit
+ 257 .syntax unified
+ ARM GAS /tmp/ccxcefs2.s page 10
+
+
+ 258 .code 16
+ 259 .thumb_func
+ 260 .fpu softvfp
+ 262 midiInit:
+ 263 .LFB43:
+ 43:Src/usbd_midi_if.c **** uint32_t i,j;
+ 264 .loc 1 43 0
+ 265 .cfi_startproc
+ 266 @ args = 0, pretend = 0, frame = 0
+ 267 @ frame_needed = 0, uses_anonymous_args = 0
+ 268 0000 10B5 push {r4, lr}
+ 269 .LCFI4:
+ 270 .cfi_def_cfa_offset 8
+ 271 .cfi_offset 4, -8
+ 272 .cfi_offset 14, -4
+ 273 .LVL25:
+ 46:Src/usbd_midi_if.c **** if(BUFFER_SUCCESS != cureRingBufferU8Init(&rbuf_usb_rx[i], MIDI_BUFFER_SIZ))
+ 274 .loc 1 46 0
+ 275 0002 0024 movs r4, #0
+ 276 .LVL26:
+ 277 .L23:
+ 46:Src/usbd_midi_if.c **** if(BUFFER_SUCCESS != cureRingBufferU8Init(&rbuf_usb_rx[i], MIDI_BUFFER_SIZ))
+ 278 .loc 1 46 0 is_stmt 0 discriminator 1
+ 279 0004 002C cmp r4, #0
+ 280 0006 01D0 beq .L25
+ 72:Src/usbd_midi_if.c **** }
+ 281 .loc 1 72 0 is_stmt 1
+ 282 0008 0120 movs r0, #1
+ 283 .L24:
+ 73:Src/usbd_midi_if.c ****
+ 284 .loc 1 73 0
+ 285 @ sp needed
+ 286 .LVL27:
+ 287 000a 10BD pop {r4, pc}
+ 288 .LVL28:
+ 289 .L25:
+ 47:Src/usbd_midi_if.c **** {
+ 290 .loc 1 47 0
+ 291 000c 8021 movs r1, #128
+ 292 000e 6300 lsls r3, r4, #1
+ 293 0010 1B19 adds r3, r3, r4
+ 294 0012 9800 lsls r0, r3, #2
+ 295 0014 054B ldr r3, .L27
+ 296 0016 C018 adds r0, r0, r3
+ 297 0018 8900 lsls r1, r1, #2
+ 298 001a FFF7FEFF bl cureRingBufferU8Init
+ 299 .LVL29:
+ 300 001e 0128 cmp r0, #1
+ 301 0020 01D1 bne .L26
+ 46:Src/usbd_midi_if.c **** if(BUFFER_SUCCESS != cureRingBufferU8Init(&rbuf_usb_rx[i], MIDI_BUFFER_SIZ))
+ 302 .loc 1 46 0 discriminator 2
+ 303 0022 0134 adds r4, r4, #1
+ 304 .LVL30:
+ 305 0024 EEE7 b .L23
+ 306 .L26:
+ 49:Src/usbd_midi_if.c **** }
+ 307 .loc 1 49 0
+ ARM GAS /tmp/ccxcefs2.s page 11
+
+
+ 308 0026 0020 movs r0, #0
+ 309 0028 EFE7 b .L24
+ 310 .L28:
+ 311 002a C046 .align 2
+ 312 .L27:
+ 313 002c 00000000 .word rbuf_usb_rx
+ 314 .cfi_endproc
+ 315 .LFE43:
+ 317 .section .text.midiGetFromUsbRx,"ax",%progbits
+ 318 .align 1
+ 319 .global midiGetFromUsbRx
+ 320 .syntax unified
+ 321 .code 16
+ 322 .thumb_func
+ 323 .fpu softvfp
+ 325 midiGetFromUsbRx:
+ 326 .LFB44:
+ 76:Src/usbd_midi_if.c **** if(BUFFER_SUCCESS != cureRingBufferU8Dequeue(&rbuf_usb_rx[cable_num], dat))
+ 327 .loc 1 76 0
+ 328 .cfi_startproc
+ 329 @ args = 0, pretend = 0, frame = 0
+ 330 @ frame_needed = 0, uses_anonymous_args = 0
+ 331 .LVL31:
+ 332 0000 10B5 push {r4, lr}
+ 333 .LCFI5:
+ 334 .cfi_def_cfa_offset 8
+ 335 .cfi_offset 4, -8
+ 336 .cfi_offset 14, -4
+ 77:Src/usbd_midi_if.c **** {
+ 337 .loc 1 77 0
+ 338 0002 4300 lsls r3, r0, #1
+ 339 0004 1818 adds r0, r3, r0
+ 340 .LVL32:
+ 341 0006 8300 lsls r3, r0, #2
+ 342 0008 0448 ldr r0, .L32
+ 343 000a 1818 adds r0, r3, r0
+ 344 000c FFF7FEFF bl cureRingBufferU8Dequeue
+ 345 .LVL33:
+ 346 0010 0128 cmp r0, #1
+ 347 0012 01D0 beq .L31
+ 79:Src/usbd_midi_if.c **** }
+ 348 .loc 1 79 0
+ 349 0014 0020 movs r0, #0
+ 350 .L30:
+ 83:Src/usbd_midi_if.c ****
+ 351 .loc 1 83 0
+ 352 @ sp needed
+ 353 0016 10BD pop {r4, pc}
+ 354 .L31:
+ 82:Src/usbd_midi_if.c **** }
+ 355 .loc 1 82 0
+ 356 0018 0120 movs r0, #1
+ 357 001a FCE7 b .L30
+ 358 .L33:
+ 359 .align 2
+ 360 .L32:
+ 361 001c 00000000 .word rbuf_usb_rx
+ ARM GAS /tmp/ccxcefs2.s page 12
+
+
+ 362 .cfi_endproc
+ 363 .LFE44:
+ 365 .section .text.midiGetFromJackRx,"ax",%progbits
+ 366 .align 1
+ 367 .global midiGetFromJackRx
+ 368 .syntax unified
+ 369 .code 16
+ 370 .thumb_func
+ 371 .fpu softvfp
+ 373 midiGetFromJackRx:
+ 374 .LFB45:
+ 86:Src/usbd_midi_if.c **** if(BUFFER_SUCCESS != cureRingBufferU8Dequeue(&rbuf_jack_rx[cable_num], &rx_midi_msg[cable_num]))
+ 375 .loc 1 86 0
+ 376 .cfi_startproc
+ 377 @ args = 0, pretend = 0, frame = 0
+ 378 @ frame_needed = 0, uses_anonymous_args = 0
+ 379 .LVL34:
+ 380 0000 10B5 push {r4, lr}
+ 381 .LCFI6:
+ 382 .cfi_def_cfa_offset 8
+ 383 .cfi_offset 4, -8
+ 384 .cfi_offset 14, -4
+ 87:Src/usbd_midi_if.c **** {
+ 385 .loc 1 87 0
+ 386 0002 0749 ldr r1, .L37
+ 387 0004 4118 adds r1, r0, r1
+ 388 0006 4300 lsls r3, r0, #1
+ 389 0008 1818 adds r0, r3, r0
+ 390 .LVL35:
+ 391 000a 8300 lsls r3, r0, #2
+ 392 000c 0548 ldr r0, .L37+4
+ 393 000e 1818 adds r0, r3, r0
+ 394 0010 FFF7FEFF bl cureRingBufferU8Dequeue
+ 395 .LVL36:
+ 396 0014 0128 cmp r0, #1
+ 397 0016 01D0 beq .L36
+ 89:Src/usbd_midi_if.c **** }
+ 398 .loc 1 89 0
+ 399 0018 0020 movs r0, #0
+ 400 .L35:
+ 93:Src/usbd_midi_if.c ****
+ 401 .loc 1 93 0
+ 402 @ sp needed
+ 403 001a 10BD pop {r4, pc}
+ 404 .L36:
+ 92:Src/usbd_midi_if.c **** }
+ 405 .loc 1 92 0
+ 406 001c 0120 movs r0, #1
+ 407 001e FCE7 b .L35
+ 408 .L38:
+ 409 .align 2
+ 410 .L37:
+ 411 0020 00000000 .word rx_midi_msg
+ 412 0024 00000000 .word rbuf_jack_rx
+ 413 .cfi_endproc
+ 414 .LFE45:
+ 416 .section .text.midiSetFromJackRx,"ax",%progbits
+ ARM GAS /tmp/ccxcefs2.s page 13
+
+
+ 417 .align 1
+ 418 .global midiSetFromJackRx
+ 419 .syntax unified
+ 420 .code 16
+ 421 .thumb_func
+ 422 .fpu softvfp
+ 424 midiSetFromJackRx:
+ 425 .LFB46:
+ 96:Src/usbd_midi_if.c **** if(BUFFER_SUCCESS != cureRingBufferU8Enqueue(&rbuf_jack_rx[cable_num], dat))
+ 426 .loc 1 96 0
+ 427 .cfi_startproc
+ 428 @ args = 0, pretend = 0, frame = 0
+ 429 @ frame_needed = 0, uses_anonymous_args = 0
+ 430 .LVL37:
+ 431 0000 10B5 push {r4, lr}
+ 432 .LCFI7:
+ 433 .cfi_def_cfa_offset 8
+ 434 .cfi_offset 4, -8
+ 435 .cfi_offset 14, -4
+ 97:Src/usbd_midi_if.c **** {
+ 436 .loc 1 97 0
+ 437 0002 4300 lsls r3, r0, #1
+ 438 0004 1818 adds r0, r3, r0
+ 439 .LVL38:
+ 440 0006 8300 lsls r3, r0, #2
+ 441 0008 0448 ldr r0, .L42
+ 442 000a 1818 adds r0, r3, r0
+ 443 000c FFF7FEFF bl cureRingBufferU8Enqueue
+ 444 .LVL39:
+ 445 0010 0128 cmp r0, #1
+ 446 0012 01D0 beq .L41
+ 99:Src/usbd_midi_if.c **** }
+ 447 .loc 1 99 0
+ 448 0014 0020 movs r0, #0
+ 449 .L40:
+ 103:Src/usbd_midi_if.c ****
+ 450 .loc 1 103 0
+ 451 @ sp needed
+ 452 0016 10BD pop {r4, pc}
+ 453 .L41:
+ 102:Src/usbd_midi_if.c **** }
+ 454 .loc 1 102 0
+ 455 0018 0120 movs r0, #1
+ 456 001a FCE7 b .L40
+ 457 .L43:
+ 458 .align 2
+ 459 .L42:
+ 460 001c 00000000 .word rbuf_jack_rx
+ 461 .cfi_endproc
+ 462 .LFE46:
+ 464 .section .text.isUsbRxBufEmpty,"ax",%progbits
+ 465 .align 1
+ 466 .global isUsbRxBufEmpty
+ 467 .syntax unified
+ 468 .code 16
+ 469 .thumb_func
+ 470 .fpu softvfp
+ ARM GAS /tmp/ccxcefs2.s page 14
+
+
+ 472 isUsbRxBufEmpty:
+ 473 .LFB47:
+ 107:Src/usbd_midi_if.c **** if( 0 != _cureRingBufferU8GetUsedSize(&rbuf_usb_rx[cable_num]) ){
+ 474 .loc 1 107 0
+ 475 .cfi_startproc
+ 476 @ args = 0, pretend = 0, frame = 0
+ 477 @ frame_needed = 0, uses_anonymous_args = 0
+ 478 .LVL40:
+ 479 0000 10B5 push {r4, lr}
+ 480 .LCFI8:
+ 481 .cfi_def_cfa_offset 8
+ 482 .cfi_offset 4, -8
+ 483 .cfi_offset 14, -4
+ 108:Src/usbd_midi_if.c **** return false;
+ 484 .loc 1 108 0
+ 485 0002 4300 lsls r3, r0, #1
+ 486 0004 1818 adds r0, r3, r0
+ 487 .LVL41:
+ 488 0006 8300 lsls r3, r0, #2
+ 489 0008 0448 ldr r0, .L48
+ 490 000a 1818 adds r0, r3, r0
+ 491 000c FFF7FEFF bl _cureRingBufferU8GetUsedSize
+ 492 .LVL42:
+ 493 0010 0028 cmp r0, #0
+ 494 0012 01D1 bne .L47
+ 112:Src/usbd_midi_if.c **** }
+ 495 .loc 1 112 0
+ 496 0014 0120 movs r0, #1
+ 497 .L45:
+ 113:Src/usbd_midi_if.c ****
+ 498 .loc 1 113 0
+ 499 @ sp needed
+ 500 0016 10BD pop {r4, pc}
+ 501 .L47:
+ 109:Src/usbd_midi_if.c **** }
+ 502 .loc 1 109 0
+ 503 0018 0020 movs r0, #0
+ 504 001a FCE7 b .L45
+ 505 .L49:
+ 506 .align 2
+ 507 .L48:
+ 508 001c 00000000 .word rbuf_usb_rx
+ 509 .cfi_endproc
+ 510 .LFE47:
+ 512 .section .text.isJackRxBufEmpty,"ax",%progbits
+ 513 .align 1
+ 514 .global isJackRxBufEmpty
+ 515 .syntax unified
+ 516 .code 16
+ 517 .thumb_func
+ 518 .fpu softvfp
+ 520 isJackRxBufEmpty:
+ 521 .LFB48:
+ 116:Src/usbd_midi_if.c **** if( 0 != _cureRingBufferU8GetUsedSize(&rbuf_jack_rx[cable_num]) ){
+ 522 .loc 1 116 0
+ 523 .cfi_startproc
+ 524 @ args = 0, pretend = 0, frame = 0
+ ARM GAS /tmp/ccxcefs2.s page 15
+
+
+ 525 @ frame_needed = 0, uses_anonymous_args = 0
+ 526 .LVL43:
+ 527 0000 10B5 push {r4, lr}
+ 528 .LCFI9:
+ 529 .cfi_def_cfa_offset 8
+ 530 .cfi_offset 4, -8
+ 531 .cfi_offset 14, -4
+ 117:Src/usbd_midi_if.c **** return false;
+ 532 .loc 1 117 0
+ 533 0002 4300 lsls r3, r0, #1
+ 534 0004 1818 adds r0, r3, r0
+ 535 .LVL44:
+ 536 0006 8300 lsls r3, r0, #2
+ 537 0008 0448 ldr r0, .L54
+ 538 000a 1818 adds r0, r3, r0
+ 539 000c FFF7FEFF bl _cureRingBufferU8GetUsedSize
+ 540 .LVL45:
+ 541 0010 0028 cmp r0, #0
+ 542 0012 01D1 bne .L53
+ 121:Src/usbd_midi_if.c **** }
+ 543 .loc 1 121 0
+ 544 0014 0120 movs r0, #1
+ 545 .L51:
+ 122:Src/usbd_midi_if.c ****
+ 546 .loc 1 122 0
+ 547 @ sp needed
+ 548 0016 10BD pop {r4, pc}
+ 549 .L53:
+ 118:Src/usbd_midi_if.c **** }
+ 550 .loc 1 118 0
+ 551 0018 0020 movs r0, #0
+ 552 001a FCE7 b .L51
+ 553 .L55:
+ 554 .align 2
+ 555 .L54:
+ 556 001c 00000000 .word rbuf_jack_rx
+ 557 .cfi_endproc
+ 558 .LFE48:
+ 560 .section .text.isRxBufEmpty,"ax",%progbits
+ 561 .align 1
+ 562 .global isRxBufEmpty
+ 563 .syntax unified
+ 564 .code 16
+ 565 .thumb_func
+ 566 .fpu softvfp
+ 568 isRxBufEmpty:
+ 569 .LFB49:
+ 125:Src/usbd_midi_if.c **** uint32_t i;
+ 570 .loc 1 125 0
+ 571 .cfi_startproc
+ 572 @ args = 0, pretend = 0, frame = 0
+ 573 @ frame_needed = 0, uses_anonymous_args = 0
+ 574 0000 10B5 push {r4, lr}
+ 575 .LCFI10:
+ 576 .cfi_def_cfa_offset 8
+ 577 .cfi_offset 4, -8
+ 578 .cfi_offset 14, -4
+ ARM GAS /tmp/ccxcefs2.s page 16
+
+
+ 579 .LVL46:
+ 128:Src/usbd_midi_if.c **** if(0 != _cureRingBufferU8GetUsedSize(&rbuf_usb_rx[i]))
+ 580 .loc 1 128 0
+ 581 0002 0024 movs r4, #0
+ 582 .LVL47:
+ 583 .L57:
+ 128:Src/usbd_midi_if.c **** if(0 != _cureRingBufferU8GetUsedSize(&rbuf_usb_rx[i]))
+ 584 .loc 1 128 0 is_stmt 0 discriminator 1
+ 585 0004 002C cmp r4, #0
+ 586 0006 01D0 beq .L59
+ 141:Src/usbd_midi_if.c **** }
+ 587 .loc 1 141 0 is_stmt 1
+ 588 0008 0120 movs r0, #1
+ 589 .L58:
+ 142:Src/usbd_midi_if.c ****
+ 590 .loc 1 142 0
+ 591 @ sp needed
+ 592 .LVL48:
+ 593 000a 10BD pop {r4, pc}
+ 594 .LVL49:
+ 595 .L59:
+ 129:Src/usbd_midi_if.c **** {
+ 596 .loc 1 129 0
+ 597 000c 6300 lsls r3, r4, #1
+ 598 000e 1B19 adds r3, r3, r4
+ 599 0010 9800 lsls r0, r3, #2
+ 600 0012 054B ldr r3, .L61
+ 601 0014 C018 adds r0, r0, r3
+ 602 0016 FFF7FEFF bl _cureRingBufferU8GetUsedSize
+ 603 .LVL50:
+ 604 001a 0028 cmp r0, #0
+ 605 001c 01D1 bne .L60
+ 128:Src/usbd_midi_if.c **** if(0 != _cureRingBufferU8GetUsedSize(&rbuf_usb_rx[i]))
+ 606 .loc 1 128 0 discriminator 2
+ 607 001e 0134 adds r4, r4, #1
+ 608 .LVL51:
+ 609 0020 F0E7 b .L57
+ 610 .L60:
+ 131:Src/usbd_midi_if.c **** }
+ 611 .loc 1 131 0
+ 612 0022 0020 movs r0, #0
+ 613 0024 F1E7 b .L58
+ 614 .L62:
+ 615 0026 C046 .align 2
+ 616 .L61:
+ 617 0028 00000000 .word rbuf_usb_rx
+ 618 .cfi_endproc
+ 619 .LFE49:
+ 621 .section .text.sendMidiMessage,"ax",%progbits
+ 622 .align 1
+ 623 .global sendMidiMessage
+ 624 .syntax unified
+ 625 .code 16
+ 626 .thumb_func
+ 627 .fpu softvfp
+ 629 sendMidiMessage:
+ 630 .LFB51:
+ ARM GAS /tmp/ccxcefs2.s page 17
+
+
+ 217:Src/usbd_midi_if.c **** if(size == 4){
+ 631 .loc 1 217 0
+ 632 .cfi_startproc
+ 633 @ args = 0, pretend = 0, frame = 0
+ 634 @ frame_needed = 0, uses_anonymous_args = 0
+ 635 .LVL52:
+ 636 0000 10B5 push {r4, lr}
+ 637 .LCFI11:
+ 638 .cfi_def_cfa_offset 8
+ 639 .cfi_offset 4, -8
+ 640 .cfi_offset 14, -4
+ 218:Src/usbd_midi_if.c **** // APP_Rx_Buffer[0] = msg[0];
+ 641 .loc 1 218 0
+ 642 0002 0429 cmp r1, #4
+ 643 0004 00D0 beq .L65
+ 644 .LVL53:
+ 645 .L63:
+ 226:Src/usbd_midi_if.c ****
+ 646 .loc 1 226 0
+ 647 @ sp needed
+ 648 0006 10BD pop {r4, pc}
+ 649 .LVL54:
+ 650 .L65:
+ 224:Src/usbd_midi_if.c **** }
+ 651 .loc 1 224 0
+ 652 0008 FFF7FEFF bl MIDI_DataTx
+ 653 .LVL55:
+ 226:Src/usbd_midi_if.c ****
+ 654 .loc 1 226 0
+ 655 000c FBE7 b .L63
+ 656 .cfi_endproc
+ 657 .LFE51:
+ 659 .section .text.midiEventIsGenerated,"ax",%progbits
+ 660 .align 1
+ 661 .global midiEventIsGenerated
+ 662 .syntax unified
+ 663 .code 16
+ 664 .thumb_func
+ 665 .fpu softvfp
+ 667 midiEventIsGenerated:
+ 668 .LFB53:
+ 240:Src/usbd_midi_if.c ****
+ 241:Src/usbd_midi_if.c **** bool midiEventIsGenerated(uint8_t cable_num)
+ 242:Src/usbd_midi_if.c **** {
+ 669 .loc 1 242 0
+ 670 .cfi_startproc
+ 671 @ args = 0, pretend = 0, frame = 0
+ 672 @ frame_needed = 0, uses_anonymous_args = 0
+ 673 .LVL56:
+ 674 0000 F0B5 push {r4, r5, r6, r7, lr}
+ 675 .LCFI12:
+ 676 .cfi_def_cfa_offset 20
+ 677 .cfi_offset 4, -20
+ 678 .cfi_offset 5, -16
+ 679 .cfi_offset 6, -12
+ 680 .cfi_offset 7, -8
+ 681 .cfi_offset 14, -4
+ ARM GAS /tmp/ccxcefs2.s page 18
+
+
+ 243:Src/usbd_midi_if.c **** uint8_t upper_half_byte= (rx_midi_msg[cable_num]) & 0xF0;
+ 682 .loc 1 243 0
+ 683 0002 8F4B ldr r3, .L102
+ 684 0004 1A5C ldrb r2, [r3, r0]
+ 685 0006 0F23 movs r3, #15
+ 686 0008 1100 movs r1, r2
+ 687 000a 9943 bics r1, r3
+ 688 000c 0B00 movs r3, r1
+ 689 .LVL57:
+ 244:Src/usbd_midi_if.c ****
+ 245:Src/usbd_midi_if.c **** if( upper_half_byte & 0x80 ){//0x80-0xFF:status byte
+ 690 .loc 1 245 0
+ 691 000e 49B2 sxtb r1, r1
+ 692 0010 0029 cmp r1, #0
+ 693 0012 24DB blt .L93
+ 246:Src/usbd_midi_if.c ****
+ 247:Src/usbd_midi_if.c **** switch(upper_half_byte){
+ 248:Src/usbd_midi_if.c ****
+ 249:Src/usbd_midi_if.c **** case 0xF0://0xF0-0xFF:system message
+ 250:Src/usbd_midi_if.c **** switch(rx_midi_msg[cable_num]){
+ 251:Src/usbd_midi_if.c ****
+ 252:Src/usbd_midi_if.c **** case 0xF0://SysEx Start
+ 253:Src/usbd_midi_if.c **** analyzed_status[cable_num].data_idx = 0;
+ 254:Src/usbd_midi_if.c **** midi_event[cable_num].midi_byte[ analyzed_status[cable_num].data_idx++ ] = rx_midi_msg[cable_
+ 255:Src/usbd_midi_if.c **** analyzed_status[cable_num].type = MSG_SYSEX;
+ 256:Src/usbd_midi_if.c **** analyzed_status[cable_num].stat = WAIT_SYSTEM_DATA;
+ 257:Src/usbd_midi_if.c **** break;
+ 258:Src/usbd_midi_if.c ****
+ 259:Src/usbd_midi_if.c **** case 0xF7://SysEx End
+ 260:Src/usbd_midi_if.c **** midi_event[cable_num].midi_byte[ analyzed_status[cable_num].data_idx++ ] = rx_midi_msg[cable_
+ 261:Src/usbd_midi_if.c **** midi_event[cable_num].length = analyzed_status[cable_num].data_idx;
+ 262:Src/usbd_midi_if.c **** analyzed_status[cable_num].stat = END_ANALYSIS;
+ 263:Src/usbd_midi_if.c **** break;
+ 264:Src/usbd_midi_if.c ****
+ 265:Src/usbd_midi_if.c **** case 0xF2://Song Position
+ 266:Src/usbd_midi_if.c **** midi_event[cable_num].midi_byte[0] = rx_midi_msg[cable_num];
+ 267:Src/usbd_midi_if.c **** analyzed_status[cable_num].type = MSG_THREE_BYTE;
+ 268:Src/usbd_midi_if.c **** analyzed_status[cable_num].stat = WAIT_DATA1;
+ 269:Src/usbd_midi_if.c **** break;
+ 270:Src/usbd_midi_if.c ****
+ 271:Src/usbd_midi_if.c **** case 0xF1://Time Code
+ 272:Src/usbd_midi_if.c **** case 0xF3://Song Select
+ 273:Src/usbd_midi_if.c **** midi_event[cable_num].midi_byte[0] = rx_midi_msg[cable_num];
+ 274:Src/usbd_midi_if.c **** analyzed_status[cable_num].type = MSG_TWO_BYTE;
+ 275:Src/usbd_midi_if.c **** analyzed_status[cable_num].stat = WAIT_DATA1;
+ 276:Src/usbd_midi_if.c **** break;
+ 277:Src/usbd_midi_if.c ****
+ 278:Src/usbd_midi_if.c **** case 0xF4://Undefined
+ 279:Src/usbd_midi_if.c **** case 0xF5://Undefined
+ 280:Src/usbd_midi_if.c **** case 0xF6://Tune request
+ 281:Src/usbd_midi_if.c **** case 0xF8://Timing clock
+ 282:Src/usbd_midi_if.c **** case 0xF9://Undefined
+ 283:Src/usbd_midi_if.c **** case 0xFA://Start
+ 284:Src/usbd_midi_if.c **** case 0xFB://Continue
+ 285:Src/usbd_midi_if.c **** case 0xFC://Stop
+ 286:Src/usbd_midi_if.c **** case 0xFD://Undefined
+ 287:Src/usbd_midi_if.c **** case 0xFE://Active Sensing
+ ARM GAS /tmp/ccxcefs2.s page 19
+
+
+ 288:Src/usbd_midi_if.c **** case 0xFF://Reset
+ 289:Src/usbd_midi_if.c **** midi_event[cable_num].midi_byte[0] = rx_midi_msg[cable_num];
+ 290:Src/usbd_midi_if.c **** midi_event[cable_num].length = 1;
+ 291:Src/usbd_midi_if.c **** analyzed_status[cable_num].type = MSG_ONE_BYTE;
+ 292:Src/usbd_midi_if.c **** analyzed_status[cable_num].stat = END_ANALYSIS;
+ 293:Src/usbd_midi_if.c **** break;
+ 294:Src/usbd_midi_if.c **** }
+ 295:Src/usbd_midi_if.c **** analyzed_status[cable_num].is_system_common = true;
+ 296:Src/usbd_midi_if.c **** break;
+ 297:Src/usbd_midi_if.c ****
+ 298:Src/usbd_midi_if.c **** case 0x80://Note Off
+ 299:Src/usbd_midi_if.c **** case 0x90://Note On
+ 300:Src/usbd_midi_if.c **** case 0xA0://Polyphonic key-pressure
+ 301:Src/usbd_midi_if.c **** case 0xB0://ControlChange
+ 302:Src/usbd_midi_if.c **** case 0xE0://PitchBend
+ 303:Src/usbd_midi_if.c **** midi_event[cable_num].midi_byte[0] = rx_midi_msg[cable_num];
+ 304:Src/usbd_midi_if.c **** analyzed_status[cable_num].type = MSG_THREE_BYTE;
+ 305:Src/usbd_midi_if.c **** analyzed_status[cable_num].stat = WAIT_DATA1;
+ 306:Src/usbd_midi_if.c **** analyzed_status[cable_num].is_system_common = false;
+ 307:Src/usbd_midi_if.c **** break;
+ 308:Src/usbd_midi_if.c ****
+ 309:Src/usbd_midi_if.c **** case 0xC0://Program Change
+ 310:Src/usbd_midi_if.c **** case 0xD0://Channel pressure
+ 311:Src/usbd_midi_if.c **** midi_event[cable_num].midi_byte[0] = rx_midi_msg[cable_num];
+ 312:Src/usbd_midi_if.c **** analyzed_status[cable_num].type = MSG_TWO_BYTE;
+ 313:Src/usbd_midi_if.c **** analyzed_status[cable_num].stat = WAIT_DATA1;
+ 314:Src/usbd_midi_if.c **** analyzed_status[cable_num].is_system_common = false;
+ 315:Src/usbd_midi_if.c **** break;
+ 316:Src/usbd_midi_if.c ****
+ 317:Src/usbd_midi_if.c **** default:
+ 318:Src/usbd_midi_if.c **** analyzed_status[cable_num].type = MSG_NOTHING;
+ 319:Src/usbd_midi_if.c **** analyzed_status[cable_num].stat = START_ANALYSIS;
+ 320:Src/usbd_midi_if.c **** analyzed_status[cable_num].is_system_common = false;
+ 321:Src/usbd_midi_if.c **** break;
+ 322:Src/usbd_midi_if.c **** }
+ 323:Src/usbd_midi_if.c ****
+ 324:Src/usbd_midi_if.c **** }else{//0x00-0x7F:data byte
+ 325:Src/usbd_midi_if.c ****
+ 326:Src/usbd_midi_if.c **** switch(analyzed_status[cable_num].stat){
+ 694 .loc 1 326 0
+ 695 0014 8300 lsls r3, r0, #2
+ 696 0016 8B49 ldr r1, .L102+4
+ 697 .LVL58:
+ 698 0018 5B5C ldrb r3, [r3, r1]
+ 699 001a 022B cmp r3, #2
+ 700 001c 00D1 bne .LCB626
+ 701 001e DCE0 b .L82 @long jump
+ 702 .LCB626:
+ 703 0020 00D8 bhi .LCB628
+ 704 0022 B7E0 b .L94 @long jump
+ 705 .LCB628:
+ 706 0024 032B cmp r3, #3
+ 707 0026 00D1 bne .LCB630
+ 708 0028 EEE0 b .L85 @long jump
+ 709 .LCB630:
+ 710 002a 042B cmp r3, #4
+ 711 002c 60D1 bne .L81
+ ARM GAS /tmp/ccxcefs2.s page 20
+
+
+ 327:Src/usbd_midi_if.c ****
+ 328:Src/usbd_midi_if.c **** case WAIT_DATA1:
+ 329:Src/usbd_midi_if.c **** midi_event[cable_num].midi_byte[1] = rx_midi_msg[cable_num];
+ 330:Src/usbd_midi_if.c ****
+ 331:Src/usbd_midi_if.c **** if(MSG_THREE_BYTE == analyzed_status[cable_num].type ){
+ 332:Src/usbd_midi_if.c **** analyzed_status[cable_num].stat = WAIT_DATA2;
+ 333:Src/usbd_midi_if.c **** }else if( MSG_TWO_BYTE == analyzed_status[cable_num].type ){
+ 334:Src/usbd_midi_if.c **** midi_event[cable_num].length = 2;
+ 335:Src/usbd_midi_if.c **** analyzed_status[cable_num].stat = END_ANALYSIS;
+ 336:Src/usbd_midi_if.c **** }else{
+ 337:Src/usbd_midi_if.c **** analyzed_status[cable_num].stat = START_ANALYSIS;
+ 338:Src/usbd_midi_if.c **** }
+ 339:Src/usbd_midi_if.c **** break;
+ 340:Src/usbd_midi_if.c ****
+ 341:Src/usbd_midi_if.c **** case WAIT_DATA2:
+ 342:Src/usbd_midi_if.c **** if(MSG_THREE_BYTE == analyzed_status[cable_num].type ){
+ 343:Src/usbd_midi_if.c **** midi_event[cable_num].midi_byte[2] = rx_midi_msg[cable_num];
+ 344:Src/usbd_midi_if.c **** midi_event[cable_num].length = 3;
+ 345:Src/usbd_midi_if.c **** analyzed_status[cable_num].stat = END_ANALYSIS;
+ 346:Src/usbd_midi_if.c **** }else{
+ 347:Src/usbd_midi_if.c **** analyzed_status[cable_num].stat = START_ANALYSIS;
+ 348:Src/usbd_midi_if.c **** }
+ 349:Src/usbd_midi_if.c **** break;
+ 350:Src/usbd_midi_if.c ****
+ 351:Src/usbd_midi_if.c **** case WAIT_SYSTEM_DATA:
+ 352:Src/usbd_midi_if.c **** midi_event[cable_num].midi_byte[ analyzed_status[cable_num].data_idx++ ] = rx_midi_msg[cable_nu
+ 353:Src/usbd_midi_if.c ****
+ 354:Src/usbd_midi_if.c **** if(analyzed_status[cable_num].data_idx > (MIDI_SENDDATA_MAX - 1) ){
+ 355:Src/usbd_midi_if.c **** analyzed_status[cable_num].stat = END_ANALYSIS;
+ 356:Src/usbd_midi_if.c **** }
+ 357:Src/usbd_midi_if.c **** break;
+ 358:Src/usbd_midi_if.c ****
+ 359:Src/usbd_midi_if.c **** case END_ANALYSIS://running status:When status byte is omitted.
+ 360:Src/usbd_midi_if.c **** midi_event[cable_num].midi_byte[1] = rx_midi_msg[cable_num];
+ 712 .loc 1 360 0
+ 713 002e 8101 lsls r1, r0, #6
+ 714 0030 0918 adds r1, r1, r0
+ 715 0032 854B ldr r3, .L102+8
+ 716 0034 5B18 adds r3, r3, r1
+ 717 0036 9A70 strb r2, [r3, #2]
+ 361:Src/usbd_midi_if.c **** if(MSG_THREE_BYTE == analyzed_status[cable_num].type){
+ 718 .loc 1 361 0
+ 719 0038 8200 lsls r2, r0, #2
+ 720 .LVL59:
+ 721 003a 824B ldr r3, .L102+4
+ 722 003c 9B18 adds r3, r3, r2
+ 723 003e 5B78 ldrb r3, [r3, #1]
+ 724 0040 042B cmp r3, #4
+ 725 0042 00D1 bne .LCB644
+ 726 0044 F5E0 b .L95 @long jump
+ 727 .LCB644:
+ 362:Src/usbd_midi_if.c **** analyzed_status[cable_num].stat = WAIT_DATA2;
+ 363:Src/usbd_midi_if.c **** }else if(MSG_TWO_BYTE == analyzed_status[cable_num].type){
+ 728 .loc 1 363 0
+ 729 0046 032B cmp r3, #3
+ 730 0048 52D1 bne .L81
+ 364:Src/usbd_midi_if.c **** midi_event[cable_num].length = 2;
+ ARM GAS /tmp/ccxcefs2.s page 21
+
+
+ 731 .loc 1 364 0
+ 732 004a 8301 lsls r3, r0, #6
+ 733 004c 1B18 adds r3, r3, r0
+ 734 004e 7E4A ldr r2, .L102+8
+ 735 0050 0221 movs r1, #2
+ 736 0052 9954 strb r1, [r3, r2]
+ 365:Src/usbd_midi_if.c **** analyzed_status[cable_num].stat = END_ANALYSIS;
+ 737 .loc 1 365 0
+ 738 0054 8300 lsls r3, r0, #2
+ 739 0056 7B4A ldr r2, .L102+4
+ 740 0058 0231 adds r1, r1, #2
+ 741 005a 9954 strb r1, [r3, r2]
+ 742 005c 48E0 b .L81
+ 743 .LVL60:
+ 744 .L93:
+ 247:Src/usbd_midi_if.c ****
+ 745 .loc 1 247 0
+ 746 005e B02B cmp r3, #176
+ 747 0060 00D1 bne .LCB662
+ 748 0062 88E0 b .L69 @long jump
+ 749 .LCB662:
+ 750 0064 10D9 bls .L96
+ 751 0066 D02B cmp r3, #208
+ 752 0068 21D0 beq .L71
+ 753 006a 1ED9 bls .L97
+ 754 006c E02B cmp r3, #224
+ 755 006e 00D1 bne .LCB670
+ 756 0070 81E0 b .L69 @long jump
+ 757 .LCB670:
+ 758 0072 F02B cmp r3, #240
+ 759 0074 11D1 bne .L68
+ 250:Src/usbd_midi_if.c ****
+ 760 .loc 1 250 0
+ 761 0076 1300 movs r3, r2
+ 762 0078 1033 adds r3, r3, #16
+ 763 007a D9B2 uxtb r1, r3
+ 764 .LVL61:
+ 765 007c 0F29 cmp r1, #15
+ 766 007e 32D8 bhi .L74
+ 767 0080 8B00 lsls r3, r1, #2
+ 768 0082 7249 ldr r1, .L102+12
+ 769 0084 CB58 ldr r3, [r1, r3]
+ 770 0086 9F46 mov pc, r3
+ 771 .section .rodata.midiEventIsGenerated,"a",%progbits
+ 772 .align 2
+ 773 .L76:
+ 774 0000 CC000000 .word .L75
+ 775 0004 3E010000 .word .L77
+ 776 0008 24010000 .word .L78
+ 777 000c 3E010000 .word .L77
+ 778 0010 58010000 .word .L79
+ 779 0014 58010000 .word .L79
+ 780 0018 58010000 .word .L79
+ 781 001c 00010000 .word .L80
+ 782 0020 58010000 .word .L79
+ 783 0024 58010000 .word .L79
+ 784 0028 58010000 .word .L79
+ ARM GAS /tmp/ccxcefs2.s page 22
+
+
+ 785 002c 58010000 .word .L79
+ 786 0030 58010000 .word .L79
+ 787 0034 58010000 .word .L79
+ 788 0038 58010000 .word .L79
+ 789 003c 58010000 .word .L79
+ 790 .section .text.midiEventIsGenerated
+ 791 .LVL62:
+ 792 .L96:
+ 247:Src/usbd_midi_if.c ****
+ 793 .loc 1 247 0
+ 794 0088 902B cmp r3, #144
+ 795 008a 00D1 bne .LCB692
+ 796 008c 73E0 b .L69 @long jump
+ 797 .LCB692:
+ 798 008e A02B cmp r3, #160
+ 799 0090 00D1 bne .LCB694
+ 800 0092 70E0 b .L69 @long jump
+ 801 .LCB694:
+ 802 0094 802B cmp r3, #128
+ 803 0096 00D1 bne .LCB696
+ 804 0098 6DE0 b .L69 @long jump
+ 805 .LCB696:
+ 806 .L68:
+ 318:Src/usbd_midi_if.c **** analyzed_status[cable_num].stat = START_ANALYSIS;
+ 807 .loc 1 318 0
+ 808 009a 6A49 ldr r1, .L102+4
+ 809 .LVL63:
+ 810 009c 8400 lsls r4, r0, #2
+ 811 009e 0A19 adds r2, r1, r4
+ 812 00a0 0023 movs r3, #0
+ 813 .LVL64:
+ 814 00a2 5370 strb r3, [r2, #1]
+ 319:Src/usbd_midi_if.c **** analyzed_status[cable_num].is_system_common = false;
+ 815 .loc 1 319 0
+ 816 00a4 6354 strb r3, [r4, r1]
+ 320:Src/usbd_midi_if.c **** break;
+ 817 .loc 1 320 0
+ 818 00a6 9370 strb r3, [r2, #2]
+ 321:Src/usbd_midi_if.c **** }
+ 819 .loc 1 321 0
+ 820 00a8 22E0 b .L81
+ 821 .LVL65:
+ 822 .L97:
+ 247:Src/usbd_midi_if.c ****
+ 823 .loc 1 247 0
+ 824 00aa C02B cmp r3, #192
+ 825 00ac F5D1 bne .L68
+ 826 .L71:
+ 311:Src/usbd_midi_if.c **** analyzed_status[cable_num].type = MSG_TWO_BYTE;
+ 827 .loc 1 311 0
+ 828 00ae 8101 lsls r1, r0, #6
+ 829 .LVL66:
+ 830 00b0 0918 adds r1, r1, r0
+ 831 00b2 654B ldr r3, .L102+8
+ 832 .LVL67:
+ 833 00b4 5B18 adds r3, r3, r1
+ 834 00b6 5A70 strb r2, [r3, #1]
+ ARM GAS /tmp/ccxcefs2.s page 23
+
+
+ 312:Src/usbd_midi_if.c **** analyzed_status[cable_num].stat = WAIT_DATA1;
+ 835 .loc 1 312 0
+ 836 00b8 624A ldr r2, .L102+4
+ 837 .LVL68:
+ 838 00ba 8100 lsls r1, r0, #2
+ 839 00bc 5318 adds r3, r2, r1
+ 840 00be 0324 movs r4, #3
+ 841 00c0 5C70 strb r4, [r3, #1]
+ 313:Src/usbd_midi_if.c **** analyzed_status[cable_num].is_system_common = false;
+ 842 .loc 1 313 0
+ 843 00c2 023C subs r4, r4, #2
+ 844 00c4 8C54 strb r4, [r1, r2]
+ 314:Src/usbd_midi_if.c **** break;
+ 845 .loc 1 314 0
+ 846 00c6 0022 movs r2, #0
+ 847 00c8 9A70 strb r2, [r3, #2]
+ 315:Src/usbd_midi_if.c ****
+ 848 .loc 1 315 0
+ 849 00ca 11E0 b .L81
+ 850 .LVL69:
+ 851 .L75:
+ 254:Src/usbd_midi_if.c **** analyzed_status[cable_num].type = MSG_SYSEX;
+ 852 .loc 1 254 0
+ 853 00cc 5D4C ldr r4, .L102+4
+ 854 00ce 8500 lsls r5, r0, #2
+ 855 00d0 6619 adds r6, r4, r5
+ 856 00d2 0127 movs r7, #1
+ 857 00d4 F770 strb r7, [r6, #3]
+ 858 00d6 8101 lsls r1, r0, #6
+ 859 00d8 0918 adds r1, r1, r0
+ 860 00da 5B4B ldr r3, .L102+8
+ 861 00dc 5B18 adds r3, r3, r1
+ 862 00de 5A70 strb r2, [r3, #1]
+ 255:Src/usbd_midi_if.c **** analyzed_status[cable_num].stat = WAIT_SYSTEM_DATA;
+ 863 .loc 1 255 0
+ 864 00e0 7770 strb r7, [r6, #1]
+ 256:Src/usbd_midi_if.c **** break;
+ 865 .loc 1 256 0
+ 866 00e2 0323 movs r3, #3
+ 867 00e4 2B55 strb r3, [r5, r4]
+ 868 .LVL70:
+ 869 .L74:
+ 295:Src/usbd_midi_if.c **** break;
+ 870 .loc 1 295 0
+ 871 00e6 8200 lsls r2, r0, #2
+ 872 00e8 564B ldr r3, .L102+4
+ 873 00ea 9B18 adds r3, r3, r2
+ 874 00ec 0122 movs r2, #1
+ 875 00ee 9A70 strb r2, [r3, #2]
+ 876 .L81:
+ 366:Src/usbd_midi_if.c **** }
+ 367:Src/usbd_midi_if.c **** break;
+ 368:Src/usbd_midi_if.c ****
+ 369:Src/usbd_midi_if.c **** case START_ANALYSIS:
+ 370:Src/usbd_midi_if.c **** break;
+ 371:Src/usbd_midi_if.c ****
+ 372:Src/usbd_midi_if.c **** default:
+ ARM GAS /tmp/ccxcefs2.s page 24
+
+
+ 373:Src/usbd_midi_if.c **** break;
+ 374:Src/usbd_midi_if.c **** }
+ 375:Src/usbd_midi_if.c **** }
+ 376:Src/usbd_midi_if.c ****
+ 377:Src/usbd_midi_if.c **** if(END_ANALYSIS == analyzed_status[cable_num].stat){
+ 877 .loc 1 377 0
+ 878 00f0 8000 lsls r0, r0, #2
+ 879 .LVL71:
+ 880 00f2 544B ldr r3, .L102+4
+ 881 00f4 C35C ldrb r3, [r0, r3]
+ 882 00f6 042B cmp r3, #4
+ 883 00f8 00D1 bne .LCB767
+ 884 00fa 9FE0 b .L98 @long jump
+ 885 .LCB767:
+ 378:Src/usbd_midi_if.c **** return true;
+ 379:Src/usbd_midi_if.c **** }else{
+ 380:Src/usbd_midi_if.c **** return false;
+ 886 .loc 1 380 0
+ 887 00fc 0020 movs r0, #0
+ 888 .L91:
+ 381:Src/usbd_midi_if.c **** }
+ 382:Src/usbd_midi_if.c ****
+ 383:Src/usbd_midi_if.c **** }
+ 889 .loc 1 383 0
+ 890 @ sp needed
+ 891 00fe F0BD pop {r4, r5, r6, r7, pc}
+ 892 .LVL72:
+ 893 .L80:
+ 260:Src/usbd_midi_if.c **** midi_event[cable_num].length = analyzed_status[cable_num].data_idx;
+ 894 .loc 1 260 0
+ 895 0100 504D ldr r5, .L102+4
+ 896 0102 8600 lsls r6, r0, #2
+ 897 0104 AB19 adds r3, r5, r6
+ 898 0106 D978 ldrb r1, [r3, #3]
+ 899 0108 8C46 mov ip, r1
+ 900 010a 0131 adds r1, r1, #1
+ 901 010c C9B2 uxtb r1, r1
+ 902 010e D970 strb r1, [r3, #3]
+ 903 0110 4D4F ldr r7, .L102+8
+ 904 0112 8301 lsls r3, r0, #6
+ 905 0114 1B18 adds r3, r3, r0
+ 906 0116 FC18 adds r4, r7, r3
+ 907 0118 6444 add r4, r4, ip
+ 908 011a 6270 strb r2, [r4, #1]
+ 261:Src/usbd_midi_if.c **** analyzed_status[cable_num].stat = END_ANALYSIS;
+ 909 .loc 1 261 0
+ 910 011c D955 strb r1, [r3, r7]
+ 262:Src/usbd_midi_if.c **** break;
+ 911 .loc 1 262 0
+ 912 011e 0423 movs r3, #4
+ 913 0120 7355 strb r3, [r6, r5]
+ 263:Src/usbd_midi_if.c ****
+ 914 .loc 1 263 0
+ 915 0122 E0E7 b .L74
+ 916 .L78:
+ 266:Src/usbd_midi_if.c **** analyzed_status[cable_num].type = MSG_THREE_BYTE;
+ 917 .loc 1 266 0
+ ARM GAS /tmp/ccxcefs2.s page 25
+
+
+ 918 0124 8101 lsls r1, r0, #6
+ 919 0126 0918 adds r1, r1, r0
+ 920 0128 474B ldr r3, .L102+8
+ 921 012a 5B18 adds r3, r3, r1
+ 922 012c 5A70 strb r2, [r3, #1]
+ 267:Src/usbd_midi_if.c **** analyzed_status[cable_num].stat = WAIT_DATA1;
+ 923 .loc 1 267 0
+ 924 012e 454B ldr r3, .L102+4
+ 925 0130 8200 lsls r2, r0, #2
+ 926 .LVL73:
+ 927 0132 9918 adds r1, r3, r2
+ 928 0134 0424 movs r4, #4
+ 929 0136 4C70 strb r4, [r1, #1]
+ 268:Src/usbd_midi_if.c **** break;
+ 930 .loc 1 268 0
+ 931 0138 0121 movs r1, #1
+ 932 013a D154 strb r1, [r2, r3]
+ 269:Src/usbd_midi_if.c ****
+ 933 .loc 1 269 0
+ 934 013c D3E7 b .L74
+ 935 .LVL74:
+ 936 .L77:
+ 273:Src/usbd_midi_if.c **** analyzed_status[cable_num].type = MSG_TWO_BYTE;
+ 937 .loc 1 273 0
+ 938 013e 8101 lsls r1, r0, #6
+ 939 0140 0918 adds r1, r1, r0
+ 940 0142 414B ldr r3, .L102+8
+ 941 0144 5B18 adds r3, r3, r1
+ 942 0146 5A70 strb r2, [r3, #1]
+ 274:Src/usbd_midi_if.c **** analyzed_status[cable_num].stat = WAIT_DATA1;
+ 943 .loc 1 274 0
+ 944 0148 3E4B ldr r3, .L102+4
+ 945 014a 8200 lsls r2, r0, #2
+ 946 .LVL75:
+ 947 014c 9918 adds r1, r3, r2
+ 948 014e 0324 movs r4, #3
+ 949 0150 4C70 strb r4, [r1, #1]
+ 275:Src/usbd_midi_if.c **** break;
+ 950 .loc 1 275 0
+ 951 0152 0121 movs r1, #1
+ 952 0154 D154 strb r1, [r2, r3]
+ 276:Src/usbd_midi_if.c ****
+ 953 .loc 1 276 0
+ 954 0156 C6E7 b .L74
+ 955 .LVL76:
+ 956 .L79:
+ 289:Src/usbd_midi_if.c **** midi_event[cable_num].length = 1;
+ 957 .loc 1 289 0
+ 958 0158 3B49 ldr r1, .L102+8
+ 959 015a 8301 lsls r3, r0, #6
+ 960 015c 1B18 adds r3, r3, r0
+ 961 015e CC18 adds r4, r1, r3
+ 962 0160 6270 strb r2, [r4, #1]
+ 290:Src/usbd_midi_if.c **** analyzed_status[cable_num].type = MSG_ONE_BYTE;
+ 963 .loc 1 290 0
+ 964 0162 0122 movs r2, #1
+ 965 .LVL77:
+ ARM GAS /tmp/ccxcefs2.s page 26
+
+
+ 966 0164 5A54 strb r2, [r3, r1]
+ 291:Src/usbd_midi_if.c **** analyzed_status[cable_num].stat = END_ANALYSIS;
+ 967 .loc 1 291 0
+ 968 0166 374B ldr r3, .L102+4
+ 969 0168 8200 lsls r2, r0, #2
+ 970 016a 9918 adds r1, r3, r2
+ 971 016c 0224 movs r4, #2
+ 972 016e 4C70 strb r4, [r1, #1]
+ 292:Src/usbd_midi_if.c **** break;
+ 973 .loc 1 292 0
+ 974 0170 0421 movs r1, #4
+ 975 0172 D154 strb r1, [r2, r3]
+ 293:Src/usbd_midi_if.c **** }
+ 976 .loc 1 293 0
+ 977 0174 B7E7 b .L74
+ 978 .LVL78:
+ 979 .L69:
+ 303:Src/usbd_midi_if.c **** analyzed_status[cable_num].type = MSG_THREE_BYTE;
+ 980 .loc 1 303 0
+ 981 0176 8101 lsls r1, r0, #6
+ 982 .LVL79:
+ 983 0178 0918 adds r1, r1, r0
+ 984 017a 334B ldr r3, .L102+8
+ 985 .LVL80:
+ 986 017c 5B18 adds r3, r3, r1
+ 987 017e 5A70 strb r2, [r3, #1]
+ 304:Src/usbd_midi_if.c **** analyzed_status[cable_num].stat = WAIT_DATA1;
+ 988 .loc 1 304 0
+ 989 0180 304A ldr r2, .L102+4
+ 990 .LVL81:
+ 991 0182 8100 lsls r1, r0, #2
+ 992 0184 5318 adds r3, r2, r1
+ 993 0186 0424 movs r4, #4
+ 994 0188 5C70 strb r4, [r3, #1]
+ 305:Src/usbd_midi_if.c **** analyzed_status[cable_num].is_system_common = false;
+ 995 .loc 1 305 0
+ 996 018a 033C subs r4, r4, #3
+ 997 018c 8C54 strb r4, [r1, r2]
+ 306:Src/usbd_midi_if.c **** break;
+ 998 .loc 1 306 0
+ 999 018e 0022 movs r2, #0
+ 1000 0190 9A70 strb r2, [r3, #2]
+ 307:Src/usbd_midi_if.c ****
+ 1001 .loc 1 307 0
+ 1002 0192 ADE7 b .L81
+ 1003 .LVL82:
+ 1004 .L94:
+ 326:Src/usbd_midi_if.c ****
+ 1005 .loc 1 326 0
+ 1006 0194 012B cmp r3, #1
+ 1007 0196 ABD1 bne .L81
+ 329:Src/usbd_midi_if.c ****
+ 1008 .loc 1 329 0
+ 1009 0198 8101 lsls r1, r0, #6
+ 1010 019a 0918 adds r1, r1, r0
+ 1011 019c 2A4B ldr r3, .L102+8
+ 1012 019e 5B18 adds r3, r3, r1
+ ARM GAS /tmp/ccxcefs2.s page 27
+
+
+ 1013 01a0 9A70 strb r2, [r3, #2]
+ 331:Src/usbd_midi_if.c **** analyzed_status[cable_num].stat = WAIT_DATA2;
+ 1014 .loc 1 331 0
+ 1015 01a2 8200 lsls r2, r0, #2
+ 1016 .LVL83:
+ 1017 01a4 274B ldr r3, .L102+4
+ 1018 01a6 9B18 adds r3, r3, r2
+ 1019 01a8 5B78 ldrb r3, [r3, #1]
+ 1020 01aa 042B cmp r3, #4
+ 1021 01ac 06D0 beq .L99
+ 333:Src/usbd_midi_if.c **** midi_event[cable_num].length = 2;
+ 1022 .loc 1 333 0
+ 1023 01ae 032B cmp r3, #3
+ 1024 01b0 09D0 beq .L100
+ 337:Src/usbd_midi_if.c **** }
+ 1025 .loc 1 337 0
+ 1026 01b2 8300 lsls r3, r0, #2
+ 1027 01b4 234A ldr r2, .L102+4
+ 1028 01b6 0021 movs r1, #0
+ 1029 01b8 9954 strb r1, [r3, r2]
+ 1030 01ba 99E7 b .L81
+ 1031 .L99:
+ 332:Src/usbd_midi_if.c **** }else if( MSG_TWO_BYTE == analyzed_status[cable_num].type ){
+ 1032 .loc 1 332 0
+ 1033 01bc 1300 movs r3, r2
+ 1034 01be 214A ldr r2, .L102+4
+ 1035 01c0 0221 movs r1, #2
+ 1036 01c2 9954 strb r1, [r3, r2]
+ 1037 01c4 94E7 b .L81
+ 1038 .L100:
+ 334:Src/usbd_midi_if.c **** analyzed_status[cable_num].stat = END_ANALYSIS;
+ 1039 .loc 1 334 0
+ 1040 01c6 8301 lsls r3, r0, #6
+ 1041 01c8 1B18 adds r3, r3, r0
+ 1042 01ca 1F4A ldr r2, .L102+8
+ 1043 01cc 0221 movs r1, #2
+ 1044 01ce 9954 strb r1, [r3, r2]
+ 335:Src/usbd_midi_if.c **** }else{
+ 1045 .loc 1 335 0
+ 1046 01d0 8300 lsls r3, r0, #2
+ 1047 01d2 1C4A ldr r2, .L102+4
+ 1048 01d4 0231 adds r1, r1, #2
+ 1049 01d6 9954 strb r1, [r3, r2]
+ 1050 01d8 8AE7 b .L81
+ 1051 .LVL84:
+ 1052 .L82:
+ 342:Src/usbd_midi_if.c **** midi_event[cable_num].midi_byte[2] = rx_midi_msg[cable_num];
+ 1053 .loc 1 342 0
+ 1054 01da 8100 lsls r1, r0, #2
+ 1055 01dc 194B ldr r3, .L102+4
+ 1056 01de 5B18 adds r3, r3, r1
+ 1057 01e0 5B78 ldrb r3, [r3, #1]
+ 1058 01e2 042B cmp r3, #4
+ 1059 01e4 04D0 beq .L101
+ 347:Src/usbd_midi_if.c **** }
+ 1060 .loc 1 347 0
+ 1061 01e6 8300 lsls r3, r0, #2
+ ARM GAS /tmp/ccxcefs2.s page 28
+
+
+ 1062 01e8 164A ldr r2, .L102+4
+ 1063 .LVL85:
+ 1064 01ea 0021 movs r1, #0
+ 1065 01ec 9954 strb r1, [r3, r2]
+ 1066 01ee 7FE7 b .L81
+ 1067 .LVL86:
+ 1068 .L101:
+ 343:Src/usbd_midi_if.c **** midi_event[cable_num].length = 3;
+ 1069 .loc 1 343 0
+ 1070 01f0 1549 ldr r1, .L102+8
+ 1071 01f2 8301 lsls r3, r0, #6
+ 1072 01f4 1B18 adds r3, r3, r0
+ 1073 01f6 CC18 adds r4, r1, r3
+ 1074 01f8 E270 strb r2, [r4, #3]
+ 344:Src/usbd_midi_if.c **** analyzed_status[cable_num].stat = END_ANALYSIS;
+ 1075 .loc 1 344 0
+ 1076 01fa 0322 movs r2, #3
+ 1077 .LVL87:
+ 1078 01fc 5A54 strb r2, [r3, r1]
+ 345:Src/usbd_midi_if.c **** }else{
+ 1079 .loc 1 345 0
+ 1080 01fe 8300 lsls r3, r0, #2
+ 1081 0200 104A ldr r2, .L102+4
+ 1082 0202 0421 movs r1, #4
+ 1083 0204 9954 strb r1, [r3, r2]
+ 1084 0206 73E7 b .L81
+ 1085 .LVL88:
+ 1086 .L85:
+ 352:Src/usbd_midi_if.c ****
+ 1087 .loc 1 352 0
+ 1088 0208 8300 lsls r3, r0, #2
+ 1089 020a 0E4C ldr r4, .L102+4
+ 1090 020c E418 adds r4, r4, r3
+ 1091 020e E578 ldrb r5, [r4, #3]
+ 1092 0210 691C adds r1, r5, #1
+ 1093 0212 C9B2 uxtb r1, r1
+ 1094 0214 E170 strb r1, [r4, #3]
+ 1095 0216 8401 lsls r4, r0, #6
+ 1096 0218 2418 adds r4, r4, r0
+ 1097 021a 0B4B ldr r3, .L102+8
+ 1098 021c 1B19 adds r3, r3, r4
+ 1099 021e 5B19 adds r3, r3, r5
+ 1100 0220 5A70 strb r2, [r3, #1]
+ 354:Src/usbd_midi_if.c **** analyzed_status[cable_num].stat = END_ANALYSIS;
+ 1101 .loc 1 354 0
+ 1102 0222 3F29 cmp r1, #63
+ 1103 0224 00D8 bhi .LCB977
+ 1104 0226 63E7 b .L81 @long jump
+ 1105 .LCB977:
+ 355:Src/usbd_midi_if.c **** }
+ 1106 .loc 1 355 0
+ 1107 0228 8300 lsls r3, r0, #2
+ 1108 022a 064A ldr r2, .L102+4
+ 1109 .LVL89:
+ 1110 022c 0421 movs r1, #4
+ 1111 022e 9954 strb r1, [r3, r2]
+ 1112 0230 5EE7 b .L81
+ ARM GAS /tmp/ccxcefs2.s page 29
+
+
+ 1113 .L95:
+ 362:Src/usbd_midi_if.c **** }else if(MSG_TWO_BYTE == analyzed_status[cable_num].type){
+ 1114 .loc 1 362 0
+ 1115 0232 1300 movs r3, r2
+ 1116 0234 034A ldr r2, .L102+4
+ 1117 0236 0221 movs r1, #2
+ 1118 0238 9954 strb r1, [r3, r2]
+ 1119 023a 59E7 b .L81
+ 1120 .LVL90:
+ 1121 .L98:
+ 378:Src/usbd_midi_if.c **** }else{
+ 1122 .loc 1 378 0
+ 1123 023c 0120 movs r0, #1
+ 1124 023e 5EE7 b .L91
+ 1125 .L103:
+ 1126 .align 2
+ 1127 .L102:
+ 1128 0240 00000000 .word rx_midi_msg
+ 1129 0244 00000000 .word analyzed_status
+ 1130 0248 00000000 .word midi_event
+ 1131 024c 00000000 .word .L76
+ 1132 .cfi_endproc
+ 1133 .LFE53:
+ 1135 .section .text.midiGenerateUsbPacket,"ax",%progbits
+ 1136 .align 1
+ 1137 .global midiGenerateUsbPacket
+ 1138 .syntax unified
+ 1139 .code 16
+ 1140 .thumb_func
+ 1141 .fpu softvfp
+ 1143 midiGenerateUsbPacket:
+ 1144 .LFB54:
+ 384:Src/usbd_midi_if.c ****
+ 385:Src/usbd_midi_if.c ****
+ 386:Src/usbd_midi_if.c **** void midiGenerateUsbPacket(uint8_t cable_num)
+ 387:Src/usbd_midi_if.c **** {
+ 1145 .loc 1 387 0
+ 1146 .cfi_startproc
+ 1147 @ args = 0, pretend = 0, frame = 8
+ 1148 @ frame_needed = 0, uses_anonymous_args = 0
+ 1149 .LVL91:
+ 1150 0000 F0B5 push {r4, r5, r6, r7, lr}
+ 1151 .LCFI13:
+ 1152 .cfi_def_cfa_offset 20
+ 1153 .cfi_offset 4, -20
+ 1154 .cfi_offset 5, -16
+ 1155 .cfi_offset 6, -12
+ 1156 .cfi_offset 7, -8
+ 1157 .cfi_offset 14, -4
+ 1158 0002 83B0 sub sp, sp, #12
+ 1159 .LCFI14:
+ 1160 .cfi_def_cfa_offset 32
+ 1161 0004 0700 movs r7, r0
+ 388:Src/usbd_midi_if.c **** uint8_t msg_buf[4] = {0x00,0x00,0x00,0x00};
+ 1162 .loc 1 388 0
+ 1163 0006 0023 movs r3, #0
+ 1164 0008 0193 str r3, [sp, #4]
+ ARM GAS /tmp/ccxcefs2.s page 30
+
+
+ 1165 .LVL92:
+ 389:Src/usbd_midi_if.c **** uint32_t cnt_remain=0, cnt_length;
+ 390:Src/usbd_midi_if.c ****
+ 391:Src/usbd_midi_if.c **** switch(analyzed_status[cable_num].type){
+ 1166 .loc 1 391 0
+ 1167 000a 0400 movs r4, r0
+ 1168 000c 8200 lsls r2, r0, #2
+ 1169 000e 504B ldr r3, .L126
+ 1170 0010 9B18 adds r3, r3, r2
+ 1171 0012 5B78 ldrb r3, [r3, #1]
+ 1172 0014 022B cmp r3, #2
+ 1173 0016 18D0 beq .L106
+ 1174 0018 04D8 bhi .L107
+ 1175 001a 012B cmp r3, #1
+ 1176 001c 23D1 bne .L105
+ 392:Src/usbd_midi_if.c ****
+ 393:Src/usbd_midi_if.c **** case MSG_ONE_BYTE:
+ 394:Src/usbd_midi_if.c **** //byte 0: cable number + code index number
+ 395:Src/usbd_midi_if.c **** msg_buf[0] = (cable_num << 4) + ((midi_event[cable_num].midi_byte[0] & 0xF0) >> 4);
+ 396:Src/usbd_midi_if.c ****
+ 397:Src/usbd_midi_if.c **** sendMidiMessage(msg_buf,4);
+ 398:Src/usbd_midi_if.c **** break;
+ 399:Src/usbd_midi_if.c ****
+ 400:Src/usbd_midi_if.c **** case MSG_TWO_BYTE:
+ 401:Src/usbd_midi_if.c **** case MSG_THREE_BYTE:
+ 402:Src/usbd_midi_if.c **** //byte 0: cable number + code index number
+ 403:Src/usbd_midi_if.c **** if(analyzed_status[cable_num].is_system_common){
+ 404:Src/usbd_midi_if.c **** msg_buf[0] = (cable_num << 4) + midi_event[cable_num].length;
+ 405:Src/usbd_midi_if.c **** }else{
+ 406:Src/usbd_midi_if.c **** msg_buf[0] = (cable_num << 4) + ((midi_event[cable_num].midi_byte[0] & 0xF0) >> 4);
+ 407:Src/usbd_midi_if.c **** }
+ 408:Src/usbd_midi_if.c ****
+ 409:Src/usbd_midi_if.c **** //byte 1-3
+ 410:Src/usbd_midi_if.c **** for(uint32_t i=0; i<midi_event[cable_num].length; i++){
+ 411:Src/usbd_midi_if.c **** msg_buf[i+1] = midi_event[cable_num].midi_byte[i];
+ 412:Src/usbd_midi_if.c **** }
+ 413:Src/usbd_midi_if.c ****
+ 414:Src/usbd_midi_if.c **** sendMidiMessage(msg_buf,4);
+ 415:Src/usbd_midi_if.c **** break;
+ 416:Src/usbd_midi_if.c ****
+ 417:Src/usbd_midi_if.c **** case MSG_SYSEX:
+ 418:Src/usbd_midi_if.c **** for(cnt_length = 0; cnt_length < midi_event[cable_num].length; cnt_length++){
+ 1177 .loc 1 418 0
+ 1178 001e 0026 movs r6, #0
+ 389:Src/usbd_midi_if.c **** uint32_t cnt_remain=0, cnt_length;
+ 1179 .loc 1 389 0
+ 1180 0020 0025 movs r5, #0
+ 1181 0022 7CE0 b .L108
+ 1182 .L107:
+ 391:Src/usbd_midi_if.c ****
+ 1183 .loc 1 391 0
+ 1184 0024 042B cmp r3, #4
+ 1185 0026 1ED8 bhi .L105
+ 403:Src/usbd_midi_if.c **** msg_buf[0] = (cable_num << 4) + midi_event[cable_num].length;
+ 1186 .loc 1 403 0
+ 1187 0028 8200 lsls r2, r0, #2
+ 1188 002a 494B ldr r3, .L126
+ ARM GAS /tmp/ccxcefs2.s page 31
+
+
+ 1189 002c 9B18 adds r3, r3, r2
+ 1190 002e 9B78 ldrb r3, [r3, #2]
+ 1191 0030 002B cmp r3, #0
+ 1192 0032 1CD0 beq .L110
+ 404:Src/usbd_midi_if.c **** }else{
+ 1193 .loc 1 404 0
+ 1194 0034 0301 lsls r3, r0, #4
+ 1195 0036 DBB2 uxtb r3, r3
+ 1196 0038 8201 lsls r2, r0, #6
+ 1197 003a 1718 adds r7, r2, r0
+ 1198 003c 454A ldr r2, .L126+4
+ 1199 003e BA5C ldrb r2, [r7, r2]
+ 1200 0040 9B18 adds r3, r3, r2
+ 1201 0042 01AA add r2, sp, #4
+ 1202 0044 1370 strb r3, [r2]
+ 1203 .L111:
+ 387:Src/usbd_midi_if.c **** uint8_t msg_buf[4] = {0x00,0x00,0x00,0x00};
+ 1204 .loc 1 387 0 discriminator 1
+ 1205 0046 0021 movs r1, #0
+ 1206 0048 27E0 b .L112
+ 1207 .L106:
+ 395:Src/usbd_midi_if.c ****
+ 1208 .loc 1 395 0
+ 1209 004a 0301 lsls r3, r0, #4
+ 1210 004c DBB2 uxtb r3, r3
+ 1211 004e 8201 lsls r2, r0, #6
+ 1212 0050 1218 adds r2, r2, r0
+ 1213 0052 404F ldr r7, .L126+4
+ 1214 0054 BF18 adds r7, r7, r2
+ 1215 0056 7A78 ldrb r2, [r7, #1]
+ 1216 0058 1209 lsrs r2, r2, #4
+ 1217 005a 9B18 adds r3, r3, r2
+ 1218 005c 01A8 add r0, sp, #4
+ 1219 .LVL93:
+ 1220 005e 0370 strb r3, [r0]
+ 397:Src/usbd_midi_if.c **** break;
+ 1221 .loc 1 397 0
+ 1222 0060 0421 movs r1, #4
+ 1223 0062 FFF7FEFF bl sendMidiMessage
+ 1224 .LVL94:
+ 1225 .L105:
+ 419:Src/usbd_midi_if.c **** if( 0xF7 !=midi_event[cable_num].midi_byte[cnt_length] ){
+ 420:Src/usbd_midi_if.c **** if(2 == cnt_remain){
+ 421:Src/usbd_midi_if.c **** msg_buf[3] = midi_event[cable_num].midi_byte[cnt_length];
+ 422:Src/usbd_midi_if.c **** msg_buf[0] = (cable_num << 4) + 0x4; //SysEx starts or continues
+ 423:Src/usbd_midi_if.c **** sendMidiMessage(msg_buf,4);
+ 424:Src/usbd_midi_if.c **** }else{
+ 425:Src/usbd_midi_if.c **** msg_buf[1 + cnt_remain] = midi_event[cable_num].midi_byte[cnt_length];
+ 426:Src/usbd_midi_if.c **** }
+ 427:Src/usbd_midi_if.c ****
+ 428:Src/usbd_midi_if.c ****
+ 429:Src/usbd_midi_if.c **** }else{
+ 430:Src/usbd_midi_if.c ****
+ 431:Src/usbd_midi_if.c **** switch (cnt_remain) {
+ 432:Src/usbd_midi_if.c **** case 0:
+ 433:Src/usbd_midi_if.c **** msg_buf[0] = (cable_num << 4) + 0x5; //SysEx ends with following single byte
+ 434:Src/usbd_midi_if.c **** msg_buf[1] = 0xF7;
+ ARM GAS /tmp/ccxcefs2.s page 32
+
+
+ 435:Src/usbd_midi_if.c **** msg_buf[2] = msg_buf[3] = 0x00;
+ 436:Src/usbd_midi_if.c **** sendMidiMessage(msg_buf,4);
+ 437:Src/usbd_midi_if.c **** break;
+ 438:Src/usbd_midi_if.c ****
+ 439:Src/usbd_midi_if.c **** case 1:
+ 440:Src/usbd_midi_if.c **** msg_buf[0] = (cable_num << 4) + 0x6; //SysEx ends with following two bytes.
+ 441:Src/usbd_midi_if.c **** msg_buf[2] = 0xF7;
+ 442:Src/usbd_midi_if.c **** msg_buf[3] = 0x00;
+ 443:Src/usbd_midi_if.c **** sendMidiMessage(msg_buf,4);
+ 444:Src/usbd_midi_if.c **** break;
+ 445:Src/usbd_midi_if.c ****
+ 446:Src/usbd_midi_if.c **** case 2:
+ 447:Src/usbd_midi_if.c **** msg_buf[0] = (cable_num << 4) + 0x7; //SysEx ends with following three bytes.
+ 448:Src/usbd_midi_if.c **** msg_buf[3] = 0xF7;
+ 449:Src/usbd_midi_if.c **** sendMidiMessage(msg_buf,4);
+ 450:Src/usbd_midi_if.c **** break;
+ 451:Src/usbd_midi_if.c **** default:
+ 452:Src/usbd_midi_if.c **** break;
+ 453:Src/usbd_midi_if.c **** }
+ 454:Src/usbd_midi_if.c **** }
+ 455:Src/usbd_midi_if.c ****
+ 456:Src/usbd_midi_if.c **** cnt_remain++;
+ 457:Src/usbd_midi_if.c **** if(cnt_remain >=3){
+ 458:Src/usbd_midi_if.c **** cnt_remain = 0;
+ 459:Src/usbd_midi_if.c **** }
+ 460:Src/usbd_midi_if.c **** }
+ 461:Src/usbd_midi_if.c **** break;
+ 462:Src/usbd_midi_if.c ****
+ 463:Src/usbd_midi_if.c **** default:
+ 464:Src/usbd_midi_if.c **** break;
+ 465:Src/usbd_midi_if.c **** }
+ 466:Src/usbd_midi_if.c **** USBD_MIDI_SendPacket();
+ 1226 .loc 1 466 0
+ 1227 0066 FFF7FEFF bl USBD_MIDI_SendPacket
+ 1228 .LVL95:
+ 467:Src/usbd_midi_if.c **** }
+ 1229 .loc 1 467 0
+ 1230 006a 03B0 add sp, sp, #12
+ 1231 @ sp needed
+ 1232 006c F0BD pop {r4, r5, r6, r7, pc}
+ 1233 .LVL96:
+ 1234 .L110:
+ 406:Src/usbd_midi_if.c **** }
+ 1235 .loc 1 406 0
+ 1236 006e 0301 lsls r3, r0, #4
+ 1237 0070 DBB2 uxtb r3, r3
+ 1238 0072 8201 lsls r2, r0, #6
+ 1239 0074 1218 adds r2, r2, r0
+ 1240 0076 374F ldr r7, .L126+4
+ 1241 0078 BF18 adds r7, r7, r2
+ 1242 007a 7A78 ldrb r2, [r7, #1]
+ 1243 007c 1209 lsrs r2, r2, #4
+ 1244 007e 9B18 adds r3, r3, r2
+ 1245 0080 01AA add r2, sp, #4
+ 1246 0082 1370 strb r3, [r2]
+ 1247 0084 DFE7 b .L111
+ 1248 .LVL97:
+ ARM GAS /tmp/ccxcefs2.s page 33
+
+
+ 1249 .L113:
+ 1250 .LBB5:
+ 411:Src/usbd_midi_if.c **** }
+ 1251 .loc 1 411 0 discriminator 3
+ 1252 0086 481C adds r0, r1, #1
+ 1253 0088 A201 lsls r2, r4, #6
+ 1254 008a 1219 adds r2, r2, r4
+ 1255 008c 314B ldr r3, .L126+4
+ 1256 008e 9B18 adds r3, r3, r2
+ 1257 0090 5B18 adds r3, r3, r1
+ 1258 0092 5A78 ldrb r2, [r3, #1]
+ 1259 0094 01AB add r3, sp, #4
+ 1260 0096 1A54 strb r2, [r3, r0]
+ 1261 .LVL98:
+ 410:Src/usbd_midi_if.c **** msg_buf[i+1] = midi_event[cable_num].midi_byte[i];
+ 1262 .loc 1 410 0 discriminator 3
+ 1263 0098 0100 movs r1, r0
+ 1264 .LVL99:
+ 1265 .L112:
+ 410:Src/usbd_midi_if.c **** msg_buf[i+1] = midi_event[cable_num].midi_byte[i];
+ 1266 .loc 1 410 0 is_stmt 0 discriminator 1
+ 1267 009a A201 lsls r2, r4, #6
+ 1268 009c 1219 adds r2, r2, r4
+ 1269 009e 2D4B ldr r3, .L126+4
+ 1270 00a0 D35C ldrb r3, [r2, r3]
+ 1271 00a2 8B42 cmp r3, r1
+ 1272 00a4 EFD8 bhi .L113
+ 1273 .LBE5:
+ 414:Src/usbd_midi_if.c **** break;
+ 1274 .loc 1 414 0 is_stmt 1
+ 1275 00a6 0421 movs r1, #4
+ 1276 .LVL100:
+ 1277 00a8 01A8 add r0, sp, #4
+ 1278 00aa FFF7FEFF bl sendMidiMessage
+ 1279 .LVL101:
+ 415:Src/usbd_midi_if.c ****
+ 1280 .loc 1 415 0
+ 1281 00ae DAE7 b .L105
+ 1282 .LVL102:
+ 1283 .L125:
+ 421:Src/usbd_midi_if.c **** msg_buf[0] = (cable_num << 4) + 0x4; //SysEx starts or continues
+ 1284 .loc 1 421 0
+ 1285 00b0 01A8 add r0, sp, #4
+ 1286 00b2 C370 strb r3, [r0, #3]
+ 422:Src/usbd_midi_if.c **** sendMidiMessage(msg_buf,4);
+ 1287 .loc 1 422 0
+ 1288 00b4 3B01 lsls r3, r7, #4
+ 1289 00b6 DBB2 uxtb r3, r3
+ 1290 00b8 0433 adds r3, r3, #4
+ 1291 00ba 0370 strb r3, [r0]
+ 423:Src/usbd_midi_if.c **** }else{
+ 1292 .loc 1 423 0
+ 1293 00bc 0421 movs r1, #4
+ 1294 00be FFF7FEFF bl sendMidiMessage
+ 1295 .LVL103:
+ 1296 00c2 3FE0 b .L116
+ 1297 .L114:
+ ARM GAS /tmp/ccxcefs2.s page 34
+
+
+ 431:Src/usbd_midi_if.c **** case 0:
+ 1298 .loc 1 431 0
+ 1299 00c4 012D cmp r5, #1
+ 1300 00c6 1CD0 beq .L117
+ 1301 00c8 002D cmp r5, #0
+ 1302 00ca 0CD0 beq .L118
+ 1303 00cc 022D cmp r5, #2
+ 1304 00ce 39D1 bne .L116
+ 447:Src/usbd_midi_if.c **** msg_buf[3] = 0xF7;
+ 1305 .loc 1 447 0
+ 1306 00d0 3B01 lsls r3, r7, #4
+ 1307 00d2 DBB2 uxtb r3, r3
+ 1308 00d4 0733 adds r3, r3, #7
+ 1309 00d6 01A8 add r0, sp, #4
+ 1310 00d8 0370 strb r3, [r0]
+ 448:Src/usbd_midi_if.c **** sendMidiMessage(msg_buf,4);
+ 1311 .loc 1 448 0
+ 1312 00da F723 movs r3, #247
+ 1313 00dc C370 strb r3, [r0, #3]
+ 449:Src/usbd_midi_if.c **** break;
+ 1314 .loc 1 449 0
+ 1315 00de 0421 movs r1, #4
+ 1316 00e0 FFF7FEFF bl sendMidiMessage
+ 1317 .LVL104:
+ 450:Src/usbd_midi_if.c **** default:
+ 1318 .loc 1 450 0
+ 1319 00e4 2EE0 b .L116
+ 1320 .L118:
+ 433:Src/usbd_midi_if.c **** msg_buf[1] = 0xF7;
+ 1321 .loc 1 433 0
+ 1322 00e6 3B01 lsls r3, r7, #4
+ 1323 00e8 DBB2 uxtb r3, r3
+ 1324 00ea 0533 adds r3, r3, #5
+ 1325 00ec 01A8 add r0, sp, #4
+ 1326 00ee 0370 strb r3, [r0]
+ 434:Src/usbd_midi_if.c **** msg_buf[2] = msg_buf[3] = 0x00;
+ 1327 .loc 1 434 0
+ 1328 00f0 F723 movs r3, #247
+ 1329 00f2 4370 strb r3, [r0, #1]
+ 435:Src/usbd_midi_if.c **** sendMidiMessage(msg_buf,4);
+ 1330 .loc 1 435 0
+ 1331 00f4 0023 movs r3, #0
+ 1332 00f6 C370 strb r3, [r0, #3]
+ 1333 00f8 8370 strb r3, [r0, #2]
+ 436:Src/usbd_midi_if.c **** break;
+ 1334 .loc 1 436 0
+ 1335 00fa 0421 movs r1, #4
+ 1336 00fc FFF7FEFF bl sendMidiMessage
+ 1337 .LVL105:
+ 437:Src/usbd_midi_if.c ****
+ 1338 .loc 1 437 0
+ 1339 0100 20E0 b .L116
+ 1340 .L117:
+ 440:Src/usbd_midi_if.c **** msg_buf[2] = 0xF7;
+ 1341 .loc 1 440 0
+ 1342 0102 3B01 lsls r3, r7, #4
+ 1343 0104 DBB2 uxtb r3, r3
+ ARM GAS /tmp/ccxcefs2.s page 35
+
+
+ 1344 0106 0633 adds r3, r3, #6
+ 1345 0108 01A8 add r0, sp, #4
+ 1346 010a 0370 strb r3, [r0]
+ 441:Src/usbd_midi_if.c **** msg_buf[3] = 0x00;
+ 1347 .loc 1 441 0
+ 1348 010c F723 movs r3, #247
+ 1349 010e 8370 strb r3, [r0, #2]
+ 442:Src/usbd_midi_if.c **** sendMidiMessage(msg_buf,4);
+ 1350 .loc 1 442 0
+ 1351 0110 0023 movs r3, #0
+ 1352 0112 C370 strb r3, [r0, #3]
+ 443:Src/usbd_midi_if.c **** break;
+ 1353 .loc 1 443 0
+ 1354 0114 0421 movs r1, #4
+ 1355 0116 FFF7FEFF bl sendMidiMessage
+ 1356 .LVL106:
+ 444:Src/usbd_midi_if.c ****
+ 1357 .loc 1 444 0
+ 1358 011a 13E0 b .L116
+ 1359 .LVL107:
+ 1360 .L120:
+ 418:Src/usbd_midi_if.c **** if( 0xF7 !=midi_event[cable_num].midi_byte[cnt_length] ){
+ 1361 .loc 1 418 0 discriminator 2
+ 1362 011c 0136 adds r6, r6, #1
+ 1363 .LVL108:
+ 1364 .L108:
+ 418:Src/usbd_midi_if.c **** if( 0xF7 !=midi_event[cable_num].midi_byte[cnt_length] ){
+ 1365 .loc 1 418 0 is_stmt 0 discriminator 1
+ 1366 011e A301 lsls r3, r4, #6
+ 1367 0120 1B19 adds r3, r3, r4
+ 1368 0122 0C4A ldr r2, .L126+4
+ 1369 0124 9B5C ldrb r3, [r3, r2]
+ 1370 0126 B342 cmp r3, r6
+ 1371 0128 9DD9 bls .L105
+ 419:Src/usbd_midi_if.c **** if(2 == cnt_remain){
+ 1372 .loc 1 419 0 is_stmt 1
+ 1373 012a A201 lsls r2, r4, #6
+ 1374 012c 1219 adds r2, r2, r4
+ 1375 012e 094B ldr r3, .L126+4
+ 1376 0130 9B18 adds r3, r3, r2
+ 1377 0132 9B19 adds r3, r3, r6
+ 1378 0134 5B78 ldrb r3, [r3, #1]
+ 1379 0136 F72B cmp r3, #247
+ 1380 0138 C4D0 beq .L114
+ 420:Src/usbd_midi_if.c **** msg_buf[3] = midi_event[cable_num].midi_byte[cnt_length];
+ 1381 .loc 1 420 0
+ 1382 013a 022D cmp r5, #2
+ 1383 013c B8D0 beq .L125
+ 425:Src/usbd_midi_if.c **** }
+ 1384 .loc 1 425 0
+ 1385 013e 6A1C adds r2, r5, #1
+ 1386 0140 01A9 add r1, sp, #4
+ 1387 0142 8B54 strb r3, [r1, r2]
+ 1388 .L116:
+ 456:Src/usbd_midi_if.c **** if(cnt_remain >=3){
+ 1389 .loc 1 456 0
+ 1390 0144 0135 adds r5, r5, #1
+ ARM GAS /tmp/ccxcefs2.s page 36
+
+
+ 1391 .LVL109:
+ 457:Src/usbd_midi_if.c **** cnt_remain = 0;
+ 1392 .loc 1 457 0
+ 1393 0146 022D cmp r5, #2
+ 1394 0148 E8D9 bls .L120
+ 458:Src/usbd_midi_if.c **** }
+ 1395 .loc 1 458 0
+ 1396 014a 0025 movs r5, #0
+ 1397 .LVL110:
+ 1398 014c E6E7 b .L120
+ 1399 .L127:
+ 1400 014e C046 .align 2
+ 1401 .L126:
+ 1402 0150 00000000 .word analyzed_status
+ 1403 0154 00000000 .word midi_event
+ 1404 .cfi_endproc
+ 1405 .LFE54:
+ 1407 .section .text.midiProcess,"ax",%progbits
+ 1408 .align 1
+ 1409 .global midiProcess
+ 1410 .syntax unified
+ 1411 .code 16
+ 1412 .thumb_func
+ 1413 .fpu softvfp
+ 1415 midiProcess:
+ 1416 .LFB55:
+ 468:Src/usbd_midi_if.c ****
+ 469:Src/usbd_midi_if.c **** void midiProcess(){
+ 1417 .loc 1 469 0
+ 1418 .cfi_startproc
+ 1419 @ args = 0, pretend = 0, frame = 0
+ 1420 @ frame_needed = 0, uses_anonymous_args = 0
+ 1421 @ link register save eliminated.
+ 1422 .LVL111:
+ 470:Src/usbd_midi_if.c ****
+ 471:Src/usbd_midi_if.c **** for(uint32_t cable_num=0; cable_num<MIDI_IN_JACK_NUM; cable_num++){
+ 472:Src/usbd_midi_if.c **** while( FUNC_SUCCESS == midiGetFromJackRx(cable_num) ){
+ 473:Src/usbd_midi_if.c **** if( midiEventIsGenerated(cable_num) ){// Generate MIDI event from UART buffer.
+ 474:Src/usbd_midi_if.c **** //Analyze MIDI Message.
+ 475:Src/usbd_midi_if.c **** midiGenerateUsbPacket(cable_num);
+ 476:Src/usbd_midi_if.c **** }
+ 477:Src/usbd_midi_if.c **** }
+ 478:Src/usbd_midi_if.c **** }
+ 479:Src/usbd_midi_if.c **** }
+ 1423 .loc 1 479 0
+ 1424 @ sp needed
+ 1425 0000 7047 bx lr
+ 1426 .cfi_endproc
+ 1427 .LFE55:
+ 1429 .global USBD_Interface_fops_FS
+ 1430 .comm rx_midi_msg,0,4
+ 1431 .comm midi_event,0,4
+ 1432 .comm analyzed_status,0,4
+ 1433 .comm rbuf_jack_rx,0,4
+ 1434 .comm rbuf_usb_rx,12,4
+ 1435 .section .data.USBD_Interface_fops_FS,"aw",%progbits
+ 1436 .align 2
+ ARM GAS /tmp/ccxcefs2.s page 37
+
+
+ 1439 USBD_Interface_fops_FS:
+ 1440 0000 00000000 .word MIDI_DataRx
+ 1441 0004 00000000 .word MIDI_DataTx
+ 1442 .text
+ 1443 .Letext0:
+ 1444 .file 2 "/home/janhenrik/programme/gcc-arm-none-eabi-7-2018-q2-update/arm-none-eabi/include/machin
+ 1445 .file 3 "/home/janhenrik/programme/gcc-arm-none-eabi-7-2018-q2-update/arm-none-eabi/include/sys/lo
+ 1446 .file 4 "/home/janhenrik/programme/gcc-arm-none-eabi-7-2018-q2-update/arm-none-eabi/include/sys/_t
+ 1447 .file 5 "/home/janhenrik/programme/gcc-arm-none-eabi-7-2018-q2-update/lib/gcc/arm-none-eabi/7.3.1/
+ 1448 .file 6 "/home/janhenrik/programme/gcc-arm-none-eabi-7-2018-q2-update/arm-none-eabi/include/sys/re
+ 1449 .file 7 "/home/janhenrik/programme/gcc-arm-none-eabi-7-2018-q2-update/arm-none-eabi/include/sys/_s
+ 1450 .file 8 "/home/janhenrik/programme/gcc-arm-none-eabi-7-2018-q2-update/arm-none-eabi/include/stdlib
+ 1451 .file 9 "Drivers/CMSIS/Device/ST/STM32F0xx/Include/system_stm32f0xx.h"
+ 1452 .file 10 "Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal.h"
+ 1453 .file 11 "Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h"
+ 1454 .file 12 "Middlewares/USBMIDI/Inc/usbd_midi.h"
+ 1455 .file 13 "Inc/usbd_desc.h"
+ 1456 .file 14 "Inc/curelib_inc/curemisc.h"
+ 1457 .file 15 "Inc/curelib_inc/curebuffer.h"
+ 1458 .file 16 "Inc/usbd_midi_if.h"
+ ARM GAS /tmp/ccxcefs2.s page 38
+
+
+DEFINED SYMBOLS
+ *ABS*:0000000000000000 usbd_midi_if.c
+ /tmp/ccxcefs2.s:16 .text.MIDI_DataTx:0000000000000000 $t
+ /tmp/ccxcefs2.s:22 .text.MIDI_DataTx:0000000000000000 MIDI_DataTx
+ /tmp/ccxcefs2.s:76 .text.MIDI_DataTx:000000000000002c $d
+ /tmp/ccxcefs2.s:82 .text.MIDI_DataRx:0000000000000000 $t
+ /tmp/ccxcefs2.s:88 .text.MIDI_DataRx:0000000000000000 MIDI_DataRx
+ /tmp/ccxcefs2.s:225 .rodata.MIDI_DataRx:0000000000000000 $d
+ /tmp/ccxcefs2.s:247 .text.MIDI_DataRx:0000000000000080 $d
+ *COM*:000000000000000c rbuf_usb_rx
+ /tmp/ccxcefs2.s:255 .text.midiInit:0000000000000000 $t
+ /tmp/ccxcefs2.s:262 .text.midiInit:0000000000000000 midiInit
+ /tmp/ccxcefs2.s:313 .text.midiInit:000000000000002c $d
+ /tmp/ccxcefs2.s:318 .text.midiGetFromUsbRx:0000000000000000 $t
+ /tmp/ccxcefs2.s:325 .text.midiGetFromUsbRx:0000000000000000 midiGetFromUsbRx
+ /tmp/ccxcefs2.s:361 .text.midiGetFromUsbRx:000000000000001c $d
+ /tmp/ccxcefs2.s:366 .text.midiGetFromJackRx:0000000000000000 $t
+ /tmp/ccxcefs2.s:373 .text.midiGetFromJackRx:0000000000000000 midiGetFromJackRx
+ /tmp/ccxcefs2.s:411 .text.midiGetFromJackRx:0000000000000020 $d
+ *COM*:0000000000000000 rx_midi_msg
+ *COM*:0000000000000000 rbuf_jack_rx
+ /tmp/ccxcefs2.s:417 .text.midiSetFromJackRx:0000000000000000 $t
+ /tmp/ccxcefs2.s:424 .text.midiSetFromJackRx:0000000000000000 midiSetFromJackRx
+ /tmp/ccxcefs2.s:460 .text.midiSetFromJackRx:000000000000001c $d
+ /tmp/ccxcefs2.s:465 .text.isUsbRxBufEmpty:0000000000000000 $t
+ /tmp/ccxcefs2.s:472 .text.isUsbRxBufEmpty:0000000000000000 isUsbRxBufEmpty
+ /tmp/ccxcefs2.s:508 .text.isUsbRxBufEmpty:000000000000001c $d
+ /tmp/ccxcefs2.s:513 .text.isJackRxBufEmpty:0000000000000000 $t
+ /tmp/ccxcefs2.s:520 .text.isJackRxBufEmpty:0000000000000000 isJackRxBufEmpty
+ /tmp/ccxcefs2.s:556 .text.isJackRxBufEmpty:000000000000001c $d
+ /tmp/ccxcefs2.s:561 .text.isRxBufEmpty:0000000000000000 $t
+ /tmp/ccxcefs2.s:568 .text.isRxBufEmpty:0000000000000000 isRxBufEmpty
+ /tmp/ccxcefs2.s:617 .text.isRxBufEmpty:0000000000000028 $d
+ /tmp/ccxcefs2.s:622 .text.sendMidiMessage:0000000000000000 $t
+ /tmp/ccxcefs2.s:629 .text.sendMidiMessage:0000000000000000 sendMidiMessage
+ /tmp/ccxcefs2.s:660 .text.midiEventIsGenerated:0000000000000000 $t
+ /tmp/ccxcefs2.s:667 .text.midiEventIsGenerated:0000000000000000 midiEventIsGenerated
+ /tmp/ccxcefs2.s:772 .rodata.midiEventIsGenerated:0000000000000000 $d
+ /tmp/ccxcefs2.s:1128 .text.midiEventIsGenerated:0000000000000240 $d
+ *COM*:0000000000000000 analyzed_status
+ *COM*:0000000000000000 midi_event
+ /tmp/ccxcefs2.s:1136 .text.midiGenerateUsbPacket:0000000000000000 $t
+ /tmp/ccxcefs2.s:1143 .text.midiGenerateUsbPacket:0000000000000000 midiGenerateUsbPacket
+ /tmp/ccxcefs2.s:1402 .text.midiGenerateUsbPacket:0000000000000150 $d
+ /tmp/ccxcefs2.s:1408 .text.midiProcess:0000000000000000 $t
+ /tmp/ccxcefs2.s:1415 .text.midiProcess:0000000000000000 midiProcess
+ /tmp/ccxcefs2.s:1439 .data.USBD_Interface_fops_FS:0000000000000000 USBD_Interface_fops_FS
+ /tmp/ccxcefs2.s:1436 .data.USBD_Interface_fops_FS:0000000000000000 $d
+
+UNDEFINED SYMBOLS
+APP_Rx_ptr_in
+APP_Rx_Buffer
+cureRingBufferU8Enqueue
+cureRingBufferU8Init
+cureRingBufferU8Dequeue
+_cureRingBufferU8GetUsedSize
+USBD_MIDI_SendPacket
+ ARM GAS /tmp/ccxcefs2.s page 39
+
+