diff --git a/firmware/modularkbd/.settings/language.settings.xml b/firmware/modularkbd/.settings/language.settings.xml
index 93103e0e..500b64f7 100644
--- a/firmware/modularkbd/.settings/language.settings.xml
+++ b/firmware/modularkbd/.settings/language.settings.xml
@@ -5,7 +5,7 @@
-
+
@@ -16,7 +16,7 @@
-
+
diff --git a/firmware/modularkbd/Debug/Core/Src/main.cyclo b/firmware/modularkbd/Debug/Core/Src/main.cyclo
index 24e65e5d..b3b1be8d 100644
--- a/firmware/modularkbd/Debug/Core/Src/main.cyclo
+++ b/firmware/modularkbd/Debug/Core/Src/main.cyclo
@@ -2,8 +2,8 @@
../Core/Src/main.c:252:6:SystemClock_Config 3
../Core/Src/main.c:296:6:HAL_UART_RxCpltCallback 5
../Core/Src/main.c:316:6:findBestParent 4
-../Core/Src/main.c:337:6:handleUARTMessages 8
-../Core/Src/main.c:376:6:addUSBReport 3
-../Core/Src/main.c:384:6:matrixScan 4
-../Core/Src/main.c:397:6:resetReport 1
-../Core/Src/main.c:408:6:Error_Handler 1
+../Core/Src/main.c:337:6:handleUARTMessages 10
+../Core/Src/main.c:380:6:addUSBReport 3
+../Core/Src/main.c:388:6:matrixScan 4
+../Core/Src/main.c:401:6:resetReport 1
+../Core/Src/main.c:412:6:Error_Handler 1
diff --git a/firmware/modularkbd/Debug/Core/Src/main.o b/firmware/modularkbd/Debug/Core/Src/main.o
index 16e28b62..aecb7604 100644
Binary files a/firmware/modularkbd/Debug/Core/Src/main.o and b/firmware/modularkbd/Debug/Core/Src/main.o differ
diff --git a/firmware/modularkbd/Debug/Core/Src/main.su b/firmware/modularkbd/Debug/Core/Src/main.su
index 048f4bf2..90d1e4ad 100644
--- a/firmware/modularkbd/Debug/Core/Src/main.su
+++ b/firmware/modularkbd/Debug/Core/Src/main.su
@@ -3,7 +3,7 @@
../Core/Src/main.c:296:6:HAL_UART_RxCpltCallback 16 static
../Core/Src/main.c:316:6:findBestParent 24 static
../Core/Src/main.c:337:6:handleUARTMessages 48 static
-../Core/Src/main.c:376:6:addUSBReport 24 static
-../Core/Src/main.c:384:6:matrixScan 16 static
-../Core/Src/main.c:397:6:resetReport 8 static
-../Core/Src/main.c:408:6:Error_Handler 4 static,ignoring_inline_asm
+../Core/Src/main.c:380:6:addUSBReport 24 static
+../Core/Src/main.c:388:6:matrixScan 16 static
+../Core/Src/main.c:401:6:resetReport 8 static
+../Core/Src/main.c:412:6:Error_Handler 4 static,ignoring_inline_asm
diff --git a/firmware/modularkbd/Debug/modularkbd.elf b/firmware/modularkbd/Debug/modularkbd.elf
index 2a2404f9..57df4f9f 100755
Binary files a/firmware/modularkbd/Debug/modularkbd.elf and b/firmware/modularkbd/Debug/modularkbd.elf differ
diff --git a/firmware/modularkbd/Debug/modularkbd.list b/firmware/modularkbd/Debug/modularkbd.list
index 62624f43..a4fb30a4 100644
--- a/firmware/modularkbd/Debug/modularkbd.list
+++ b/firmware/modularkbd/Debug/modularkbd.list
@@ -5,25 +5,25 @@ Sections:
Idx Name Size VMA LMA File off Algn
0 .isr_vector 000001c4 08000000 08000000 00001000 2**0
CONTENTS, ALLOC, LOAD, READONLY, DATA
- 1 .text 0000a7f0 080001c4 080001c4 000011c4 2**2
+ 1 .text 0000a800 080001c4 080001c4 000011c4 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
- 2 .rodata 0000005c 0800a9b4 0800a9b4 0000b9b4 2**2
+ 2 .rodata 0000005c 0800a9c4 0800a9c4 0000b9c4 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
- 3 .ARM.extab 00000000 0800aa10 0800aa10 0000c1a0 2**0
+ 3 .ARM.extab 00000000 0800aa20 0800aa20 0000c1a0 2**0
CONTENTS, READONLY
- 4 .ARM 00000008 0800aa10 0800aa10 0000ba10 2**2
+ 4 .ARM 00000008 0800aa20 0800aa20 0000ba20 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
- 5 .preinit_array 00000000 0800aa18 0800aa18 0000c1a0 2**0
+ 5 .preinit_array 00000000 0800aa28 0800aa28 0000c1a0 2**0
CONTENTS, ALLOC, LOAD, DATA
- 6 .init_array 00000004 0800aa18 0800aa18 0000ba18 2**2
+ 6 .init_array 00000004 0800aa28 0800aa28 0000ba28 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
- 7 .fini_array 00000004 0800aa1c 0800aa1c 0000ba1c 2**2
+ 7 .fini_array 00000004 0800aa2c 0800aa2c 0000ba2c 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
- 8 .data 000001a0 20000000 0800aa20 0000c000 2**2
+ 8 .data 000001a0 20000000 0800aa30 0000c000 2**2
CONTENTS, ALLOC, LOAD, DATA
- 9 .bss 00000f58 200001a0 0800abc0 0000c1a0 2**2
+ 9 .bss 00000f58 200001a0 0800abd0 0000c1a0 2**2
ALLOC
- 10 ._user_heap_stack 00000600 200010f8 0800abc0 0000d0f8 2**0
+ 10 ._user_heap_stack 00000600 200010f8 0800abd0 0000d0f8 2**0
ALLOC
11 .ARM.attributes 00000030 00000000 00000000 0000c1a0 2**0
CONTENTS, READONLY
@@ -37,15 +37,15 @@ Idx Name Size VMA LMA File off Algn
CONTENTS, READONLY, DEBUGGING, OCTETS
16 .debug_macro 00026060 00000000 00000000 0002db57 2**0
CONTENTS, READONLY, DEBUGGING, OCTETS
- 17 .debug_line 0001e655 00000000 00000000 00053bb7 2**0
+ 17 .debug_line 0001e65d 00000000 00000000 00053bb7 2**0
CONTENTS, READONLY, DEBUGGING, OCTETS
- 18 .debug_str 000d7ebb 00000000 00000000 0007220c 2**0
+ 18 .debug_str 000d7ebb 00000000 00000000 00072214 2**0
CONTENTS, READONLY, DEBUGGING, OCTETS
- 19 .comment 00000043 00000000 00000000 0014a0c7 2**0
+ 19 .comment 00000043 00000000 00000000 0014a0cf 2**0
CONTENTS, READONLY
- 20 .debug_frame 000062c0 00000000 00000000 0014a10c 2**2
+ 20 .debug_frame 000062c0 00000000 00000000 0014a114 2**2
CONTENTS, READONLY, DEBUGGING, OCTETS
- 21 .debug_line_str 00000062 00000000 00000000 001503cc 2**0
+ 21 .debug_line_str 00000062 00000000 00000000 001503d4 2**0
CONTENTS, READONLY, DEBUGGING, OCTETS
Disassembly of section .text:
@@ -64,7 +64,7 @@ Disassembly of section .text:
80001da: bd10 pop {r4, pc}
80001dc: 200001a0 .word 0x200001a0
80001e0: 00000000 .word 0x00000000
- 80001e4: 0800a99c .word 0x0800a99c
+ 80001e4: 0800a9ac .word 0x0800a9ac
080001e8 :
80001e8: b508 push {r3, lr}
@@ -76,7 +76,7 @@ Disassembly of section .text:
80001f6: bd08 pop {r3, pc}
80001f8: 00000000 .word 0x00000000
80001fc: 200001a4 .word 0x200001a4
- 8000200: 0800a99c .word 0x0800a99c
+ 8000200: 0800a9ac .word 0x0800a9ac
08000204 <__aeabi_uldivmod>:
8000204: b953 cbnz r3, 800021c <__aeabi_uldivmod+0x18>
@@ -414,73 +414,73 @@ void MX_DMA_Init(void)
800056e: 2200 movs r2, #0
8000570: 2100 movs r1, #0
8000572: 200b movs r0, #11
- 8000574: f001 fb5b bl 8001c2e
+ 8000574: f001 fb63 bl 8001c3e
HAL_NVIC_EnableIRQ(DMA1_Stream0_IRQn);
8000578: 200b movs r0, #11
- 800057a: f001 fb74 bl 8001c66
+ 800057a: f001 fb7c bl 8001c76
/* DMA1_Stream2_IRQn interrupt configuration */
HAL_NVIC_SetPriority(DMA1_Stream2_IRQn, 0, 0);
800057e: 2200 movs r2, #0
8000580: 2100 movs r1, #0
8000582: 200d movs r0, #13
- 8000584: f001 fb53 bl 8001c2e
+ 8000584: f001 fb5b bl 8001c3e
HAL_NVIC_EnableIRQ(DMA1_Stream2_IRQn);
8000588: 200d movs r0, #13
- 800058a: f001 fb6c bl 8001c66
+ 800058a: f001 fb74 bl 8001c76
/* DMA1_Stream4_IRQn interrupt configuration */
HAL_NVIC_SetPriority(DMA1_Stream4_IRQn, 0, 0);
800058e: 2200 movs r2, #0
8000590: 2100 movs r1, #0
8000592: 200f movs r0, #15
- 8000594: f001 fb4b bl 8001c2e
+ 8000594: f001 fb53 bl 8001c3e
HAL_NVIC_EnableIRQ(DMA1_Stream4_IRQn);
8000598: 200f movs r0, #15
- 800059a: f001 fb64 bl 8001c66
+ 800059a: f001 fb6c bl 8001c76
/* DMA1_Stream5_IRQn interrupt configuration */
HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
800059e: 2200 movs r2, #0
80005a0: 2100 movs r1, #0
80005a2: 2010 movs r0, #16
- 80005a4: f001 fb43 bl 8001c2e
+ 80005a4: f001 fb4b bl 8001c3e
HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
80005a8: 2010 movs r0, #16
- 80005aa: f001 fb5c bl 8001c66
+ 80005aa: f001 fb64 bl 8001c76
/* DMA1_Stream6_IRQn interrupt configuration */
HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 0, 0);
80005ae: 2200 movs r2, #0
80005b0: 2100 movs r1, #0
80005b2: 2011 movs r0, #17
- 80005b4: f001 fb3b bl 8001c2e
+ 80005b4: f001 fb43 bl 8001c3e
HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
80005b8: 2011 movs r0, #17
- 80005ba: f001 fb54 bl 8001c66
+ 80005ba: f001 fb5c bl 8001c76
/* DMA1_Stream7_IRQn interrupt configuration */
HAL_NVIC_SetPriority(DMA1_Stream7_IRQn, 0, 0);
80005be: 2200 movs r2, #0
80005c0: 2100 movs r1, #0
80005c2: 202f movs r0, #47 @ 0x2f
- 80005c4: f001 fb33 bl 8001c2e
+ 80005c4: f001 fb3b bl 8001c3e
HAL_NVIC_EnableIRQ(DMA1_Stream7_IRQn);
80005c8: 202f movs r0, #47 @ 0x2f
- 80005ca: f001 fb4c bl 8001c66
+ 80005ca: f001 fb54 bl 8001c76
/* DMA2_Stream2_IRQn interrupt configuration */
HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
80005ce: 2200 movs r2, #0
80005d0: 2100 movs r1, #0
80005d2: 203a movs r0, #58 @ 0x3a
- 80005d4: f001 fb2b bl 8001c2e
+ 80005d4: f001 fb33 bl 8001c3e
HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
80005d8: 203a movs r0, #58 @ 0x3a
- 80005da: f001 fb44 bl 8001c66
+ 80005da: f001 fb4c bl 8001c76
/* DMA2_Stream7_IRQn interrupt configuration */
HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
80005de: 2200 movs r2, #0
80005e0: 2100 movs r1, #0
80005e2: 2046 movs r0, #70 @ 0x46
- 80005e4: f001 fb23 bl 8001c2e
+ 80005e4: f001 fb2b bl 8001c3e
HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
80005e8: 2046 movs r0, #70 @ 0x46
- 80005ea: f001 fb3c bl 8001c66
+ 80005ea: f001 fb44 bl 8001c76
}
80005ee: bf00 nop
@@ -582,14 +582,14 @@ void MX_GPIO_Init(void)
800069e: 2200 movs r2, #0
80006a0: f44f 7170 mov.w r1, #960 @ 0x3c0
80006a4: 4822 ldr r0, [pc, #136] @ (8000730 )
- 80006a6: f002 f8a7 bl 80027f8
+ 80006a6: f002 f8af bl 8002808
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_RESET);
80006aa: 2200 movs r2, #0
80006ac: f44f 7180 mov.w r1, #256 @ 0x100
80006b0: 4820 ldr r0, [pc, #128] @ (8000734 )
- 80006b2: f002 f8a1 bl 80027f8
+ 80006b2: f002 f8a9 bl 8002808
/*Configure GPIO pins : PC4 PC5 */
GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_5;
@@ -605,7 +605,7 @@ void MX_GPIO_Init(void)
80006c2: f107 0314 add.w r3, r7, #20
80006c6: 4619 mov r1, r3
80006c8: 4819 ldr r0, [pc, #100] @ (8000730 )
- 80006ca: f001 fee9 bl 80024a0
+ 80006ca: f001 fef1 bl 80024b0
/*Configure GPIO pins : PB0 PB1 PB2 PB10 */
GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_10;
@@ -621,7 +621,7 @@ void MX_GPIO_Init(void)
80006dc: f107 0314 add.w r3, r7, #20
80006e0: 4619 mov r1, r3
80006e2: 4815 ldr r0, [pc, #84] @ (8000738 )
- 80006e4: f001 fedc bl 80024a0
+ 80006e4: f001 fee4 bl 80024b0
/*Configure GPIO pins : PC6 PC7 PC8 PC9 */
GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9;
@@ -640,7 +640,7 @@ void MX_GPIO_Init(void)
80006fa: f107 0314 add.w r3, r7, #20
80006fe: 4619 mov r1, r3
8000700: 480b ldr r0, [pc, #44] @ (8000730 )
- 8000702: f001 fecd bl 80024a0
+ 8000702: f001 fed5 bl 80024b0
/*Configure GPIO pin : PA8 */
GPIO_InitStruct.Pin = GPIO_PIN_8;
@@ -659,7 +659,7 @@ void MX_GPIO_Init(void)
8000718: f107 0314 add.w r3, r7, #20
800071c: 4619 mov r1, r3
800071e: 4805 ldr r0, [pc, #20] @ (8000734 )
- 8000720: f001 febe bl 80024a0
+ 8000720: f001 fec6 bl 80024b0
}
8000724: bf00 nop
@@ -723,13 +723,13 @@ void MX_I2C1_Init(void)
8000776: 621a str r2, [r3, #32]
if (HAL_I2C_Init(&hi2c1) != HAL_OK)
8000778: 4804 ldr r0, [pc, #16] @ (800078c )
- 800077a: f002 f857 bl 800282c
+ 800077a: f002 f85f bl 800283c
800077e: 4603 mov r3, r0
8000780: 2b00 cmp r3, #0
8000782: d001 beq.n 8000788
{
Error_Handler();
- 8000784: f000 fb10 bl 8000da8
+ 8000784: f000 fb18 bl 8000db8
}
/* USER CODE BEGIN I2C1_Init 2 */
@@ -806,7 +806,7 @@ void HAL_I2C_MspInit(I2C_HandleTypeDef* i2cHandle)
80007ea: f107 0314 add.w r3, r7, #20
80007ee: 4619 mov r1, r3
80007f0: 480c ldr r0, [pc, #48] @ (8000824 )
- 80007f2: f001 fe55 bl 80024a0
+ 80007f2: f001 fe5d bl 80024b0
/* I2C1 clock enable */
__HAL_RCC_I2C1_CLK_ENABLE();
@@ -852,7 +852,7 @@ int main(void)
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
- 800082e: f001 f88d bl 800194c
+ 800082e: f001 f895 bl 800195c
/* USER CODE BEGIN Init */
/* USER CODE END Init */
@@ -870,21 +870,21 @@ int main(void)
MX_DMA_Init();
800083a: f7ff fe79 bl 8000530
MX_TIM2_Init();
- 800083e: f000 fba5 bl 8000f8c
+ 800083e: f000 fbad bl 8000f9c
MX_TIM3_Init();
- 8000842: f000 fbfb bl 800103c
+ 8000842: f000 fc03 bl 800104c
MX_UART4_Init();
- 8000846: f000 fced bl 8001224
+ 8000846: f000 fcf5 bl 8001234
MX_UART5_Init();
- 800084a: f000 fd15 bl 8001278
+ 800084a: f000 fd1d bl 8001288
MX_USART1_UART_Init();
- 800084e: f000 fd3d bl 80012cc
+ 800084e: f000 fd45 bl 80012dc
MX_USART2_UART_Init();
- 8000852: f000 fd65 bl 8001320
+ 8000852: f000 fd6d bl 8001330
MX_I2C1_Init();
8000856: f7ff ff71 bl 800073c
MX_USB_DEVICE_Init();
- 800085a: f009 fbb7 bl 8009fcc
+ 800085a: f009 fbbf bl 8009fdc
/* USER CODE BEGIN 2 */
//Enable UART RX DMA for all ports
@@ -892,22 +892,22 @@ int main(void)
800085e: 2210 movs r2, #16
8000860: 493f ldr r1, [pc, #252] @ (8000960 )
8000862: 4840 ldr r0, [pc, #256] @ (8000964 )
- 8000864: f005 f9ae bl 8005bc4
+ 8000864: f005 f9b6 bl 8005bd4
HAL_UART_Receive_DMA(&huart2, (uint8_t*)&RX2Msg, sizeof(UARTMessage));
8000868: 2210 movs r2, #16
800086a: 493f ldr r1, [pc, #252] @ (8000968 )
800086c: 483f ldr r0, [pc, #252] @ (800096c )
- 800086e: f005 f9a9 bl 8005bc4
+ 800086e: f005 f9b1 bl 8005bd4
HAL_UART_Receive_DMA(&huart4, (uint8_t*)&RX4Msg, sizeof(UARTMessage));
8000872: 2210 movs r2, #16
8000874: 493e ldr r1, [pc, #248] @ (8000970 )
8000876: 483f ldr r0, [pc, #252] @ (8000974 )
- 8000878: f005 f9a4 bl 8005bc4
+ 8000878: f005 f9ac bl 8005bd4
HAL_UART_Receive_DMA(&huart5, (uint8_t*)&RX5Msg, sizeof(UARTMessage));
800087c: 2210 movs r2, #16
800087e: 493e ldr r1, [pc, #248] @ (8000978 )
8000880: 483e ldr r0, [pc, #248] @ (800097c )
- 8000882: f005 f99f bl 8005bc4
+ 8000882: f005 f9a7 bl 8005bd4
/* Infinite loop */
/* USER CODE BEGIN WHILE */
@@ -933,9 +933,9 @@ int main(void)
break;
800089c: e05a b.n 8000954
resetReport();
- 800089e: f000 fa73 bl 8000d88
+ 800089e: f000 fa7b bl 8000d98
matrixScan();
- 80008a2: f000 fa17 bl 8000cd4
+ 80008a2: f000 fa1f bl 8000ce4
UARTREPORT.DEPTH = DEPTH;
80008a6: 4b37 ldr r3, [pc, #220] @ (8000984 )
80008a8: 881b ldrh r3, [r3, #0]
@@ -943,24 +943,25 @@ int main(void)
UARTREPORT.TYPE = 0xEE;
80008ac: 23ee movs r3, #238 @ 0xee
80008ae: 827b strh r3, [r7, #18]
- memset(UARTREPORT.KEYPRESS, 1, sizeof(UARTREPORT.KEYPRESS));
- 80008b0: f107 0310 add.w r3, r7, #16
- 80008b4: 3304 adds r3, #4
- 80008b6: 220c movs r2, #12
- 80008b8: 2101 movs r1, #1
- 80008ba: 4618 mov r0, r3
- 80008bc: f00a f834 bl 800a928
+ memcpy(UARTREPORT.KEYPRESS, REPORT.KEYPRESS, sizeof(UARTREPORT.KEYPRESS));
+ 80008b0: 4a35 ldr r2, [pc, #212] @ (8000988 )
+ 80008b2: f107 0314 add.w r3, r7, #20
+ 80008b6: 3202 adds r2, #2
+ 80008b8: 6810 ldr r0, [r2, #0]
+ 80008ba: 6851 ldr r1, [r2, #4]
+ 80008bc: 6892 ldr r2, [r2, #8]
+ 80008be: c307 stmia r3!, {r0, r1, r2}
HAL_UART_Transmit_DMA(PARENT, (uint8_t*)&UARTREPORT, sizeof(UARTREPORT));
- 80008c0: 4b31 ldr r3, [pc, #196] @ (8000988 )
+ 80008c0: 4b32 ldr r3, [pc, #200] @ (800098c )
80008c2: 681b ldr r3, [r3, #0]
80008c4: f107 0110 add.w r1, r7, #16
80008c8: 2210 movs r2, #16
80008ca: 4618 mov r0, r3
- 80008cc: f005 f8fe bl 8005acc
+ 80008cc: f005 f906 bl 8005adc
break;
80008d0: e041 b.n 8000956
if(hUsbDeviceFS.dev_state == USBD_STATE_CONFIGURED){
- 80008d2: 4b2e ldr r3, [pc, #184] @ (800098c )
+ 80008d2: 4b2f ldr r3, [pc, #188] @ (8000990 )
80008d4: f893 329c ldrb.w r3, [r3, #668] @ 0x29c
80008d8: b2db uxtb r3, r3
80008da: 2b03 cmp r3, #3
@@ -987,47 +988,47 @@ int main(void)
80008f8: 220c movs r2, #12
80008fa: 2100 movs r1, #0
80008fc: 4618 mov r0, r3
- 80008fe: f00a f813 bl 800a928
+ 80008fe: f00a f81b bl 800a938
HAL_UART_Transmit_DMA(&huart1, (uint8_t*)&REQ, sizeof(REQ));
8000902: 463b mov r3, r7
8000904: 2210 movs r2, #16
8000906: 4619 mov r1, r3
8000908: 4816 ldr r0, [pc, #88] @ (8000964 )
- 800090a: f005 f8df bl 8005acc
+ 800090a: f005 f8e7 bl 8005adc
HAL_UART_Transmit_DMA(&huart2, (uint8_t*)&REQ, sizeof(REQ));
800090e: 463b mov r3, r7
8000910: 2210 movs r2, #16
8000912: 4619 mov r1, r3
8000914: 4815 ldr r0, [pc, #84] @ (800096c )
- 8000916: f005 f8d9 bl 8005acc
+ 8000916: f005 f8e1 bl 8005adc
HAL_UART_Transmit_DMA(&huart4, (uint8_t*)&REQ, sizeof(REQ));
800091a: 463b mov r3, r7
800091c: 2210 movs r2, #16
800091e: 4619 mov r1, r3
8000920: 4814 ldr r0, [pc, #80] @ (8000974 )
- 8000922: f005 f8d3 bl 8005acc
+ 8000922: f005 f8db bl 8005adc
HAL_UART_Transmit_DMA(&huart5, (uint8_t*)&REQ, sizeof(REQ));
8000926: 463b mov r3, r7
8000928: 2210 movs r2, #16
800092a: 4619 mov r1, r3
800092c: 4813 ldr r0, [pc, #76] @ (800097c )
- 800092e: f005 f8cd bl 8005acc
+ 800092e: f005 f8d5 bl 8005adc
HAL_Delay(500);
8000932: f44f 70fa mov.w r0, #500 @ 0x1f4
- 8000936: f001 f87b bl 8001a30
+ 8000936: f001 f883 bl 8001a40
findBestParent(); //So true...
800093a: f000 f8f3 bl 8000b24
break;
800093e: e00a b.n 8000956
resetReport();
- 8000940: f000 fa22 bl 8000d88
+ 8000940: f000 fa2a bl 8000d98
matrixScan();
- 8000944: f000 f9c6 bl 8000cd4
+ 8000944: f000 f9ce bl 8000ce4
USBD_HID_SendReport(&hUsbDeviceFS, (uint8_t*)&REPORT, sizeof(REPORT));
8000948: 220e movs r2, #14
- 800094a: 4911 ldr r1, [pc, #68] @ (8000990 )
- 800094c: 480f ldr r0, [pc, #60] @ (800098c )
- 800094e: f007 ff71 bl 8008834
+ 800094a: 490f ldr r1, [pc, #60] @ (8000988 )
+ 800094c: 4810 ldr r0, [pc, #64] @ (8000990 )
+ 800094e: f007 ff79 bl 8008844
break;
8000952: e000 b.n 8000956
break;
@@ -1036,7 +1037,7 @@ int main(void)
HAL_Delay(50);
8000956: 2032 movs r0, #50 @ 0x32
- 8000958: f001 f86a bl 8001a30
+ 8000958: f001 f872 bl 8001a40
switch (MODE){
800095c: e793 b.n 8000886
800095e: bf00 nop
@@ -1050,9 +1051,9 @@ int main(void)
800097c: 20000344 .word 0x20000344
8000980: 20000268 .word 0x20000268
8000984: 20000260 .word 0x20000260
- 8000988: 20000264 .word 0x20000264
- 800098c: 20000724 .word 0x20000724
- 8000990: 20000210 .word 0x20000210
+ 8000988: 20000210 .word 0x20000210
+ 800098c: 20000264 .word 0x20000264
+ 8000990: 20000724 .word 0x20000724
08000994 :
/**
@@ -1069,7 +1070,7 @@ void SystemClock_Config(void)
800099e: 2234 movs r2, #52 @ 0x34
80009a0: 2100 movs r1, #0
80009a2: 4618 mov r0, r3
- 80009a4: f009 ffc0 bl 800a928
+ 80009a4: f009 ffc8 bl 800a938
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
80009a8: f107 0308 add.w r3, r7, #8
80009ac: 2200 movs r2, #0
@@ -1142,13 +1143,13 @@ void SystemClock_Config(void)
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
8000a1c: f107 031c add.w r3, r7, #28
8000a20: 4618 mov r0, r3
- 8000a22: f004 f941 bl 8004ca8
+ 8000a22: f004 f949 bl 8004cb8
8000a26: 4603 mov r3, r0
8000a28: 2b00 cmp r3, #0
8000a2a: d001 beq.n 8000a30
{
Error_Handler();
- 8000a2c: f000 f9bc bl 8000da8
+ 8000a2c: f000 f9c4 bl 8000db8
}
/** Initializes the CPU, AHB and APB buses clocks
@@ -1174,13 +1175,13 @@ void SystemClock_Config(void)
8000a46: f107 0308 add.w r3, r7, #8
8000a4a: 2101 movs r1, #1
8000a4c: 4618 mov r0, r3
- 8000a4e: f003 fab7 bl 8003fc0
+ 8000a4e: f003 fabf bl 8003fd0
8000a52: 4603 mov r3, r0
8000a54: 2b00 cmp r3, #0
8000a56: d001 beq.n 8000a5c
{
Error_Handler();
- 8000a58: f000 f9a6 bl 8000da8
+ 8000a58: f000 f9ae bl 8000db8
}
}
8000a5c: bf00 nop
@@ -1213,7 +1214,7 @@ void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {
8000a86: 2210 movs r2, #16
8000a88: 491c ldr r1, [pc, #112] @ (8000afc )
8000a8a: 481b ldr r0, [pc, #108] @ (8000af8 )
- 8000a8c: f005 f89a bl 8005bc4
+ 8000a8c: f005 f8a2 bl 8005bd4
}
else if (huart->Instance == UART5) {
handleUARTMessages((uint8_t*)&RX5Msg, &huart5);
@@ -1235,7 +1236,7 @@ void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {
8000aa4: 2210 movs r2, #16
8000aa6: 4918 ldr r1, [pc, #96] @ (8000b08 )
8000aa8: 4816 ldr r0, [pc, #88] @ (8000b04 )
- 8000aaa: f005 f88b bl 8005bc4
+ 8000aaa: f005 f893 bl 8005bd4
}
8000aae: e01c b.n 8000aea
else if (huart->Instance == UART4) {
@@ -1252,7 +1253,7 @@ void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {
8000ac2: 2210 movs r2, #16
8000ac4: 4913 ldr r1, [pc, #76] @ (8000b14 )
8000ac6: 4812 ldr r0, [pc, #72] @ (8000b10 )
- 8000ac8: f005 f87c bl 8005bc4
+ 8000ac8: f005 f884 bl 8005bd4
}
8000acc: e00d b.n 8000aea
else if (huart->Instance == UART5) {
@@ -1269,7 +1270,7 @@ void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {
8000ae0: 2210 movs r2, #16
8000ae2: 490f ldr r1, [pc, #60] @ (8000b20 )
8000ae4: 480d ldr r0, [pc, #52] @ (8000b1c )
- 8000ae6: f005 f86d bl 8005bc4
+ 8000ae6: f005 f875 bl 8005bd4
}
8000aea: bf00 nop
8000aec: 3708 adds r7, #8
@@ -1355,7 +1356,7 @@ void findBestParent(){
8000b80: 701a strb r2, [r3, #0]
HAL_Delay(500);
8000b82: f44f 70fa mov.w r0, #500 @ 0x1f4
- 8000b86: f000 ff53 bl 8001a30
+ 8000b86: f000 ff5b bl 8001a40
}
}
8000b8a: bf00 nop
@@ -1387,26984 +1388,26994 @@ void handleUARTMessages(uint8_t *data, UART_HandleTypeDef *sender) {
8000bb6: 2210 movs r2, #16
8000bb8: 6879 ldr r1, [r7, #4]
8000bba: 4618 mov r0, r3
- 8000bbc: f009 fee0 bl 800a980
+ 8000bbc: f009 fee8 bl 800a990
switch(msg.TYPE) {
8000bc0: 8b7b ldrh r3, [r7, #26]
- 8000bc2: 2baa cmp r3, #170 @ 0xaa
- 8000bc4: d002 beq.n 8000bcc
+ 8000bc2: 2bff cmp r3, #255 @ 0xff
+ 8000bc4: d026 beq.n 8000c14
8000bc6: 2bff cmp r3, #255 @ 0xff
- 8000bc8: d020 beq.n 8000c0c
- HAL_UART_Transmit_DMA(sender, (uint8_t*)&reply, sizeof(reply));
- }
- break;
+ 8000bc8: dc3e bgt.n 8000c48
+ 8000bca: 2baa cmp r3, #170 @ 0xaa
+ 8000bcc: d002 beq.n 8000bd4
+ 8000bce: 2bee cmp r3, #238 @ 0xee
+ 8000bd0: d03c beq.n 8000c4c
+ case 0xEE:
+ //TODO: Append message to the thingy
+ break;
default:
break;
- 8000bca: e03c b.n 8000c46
+ 8000bd2: e039 b.n 8000c48
if(sender == &huart5) {
- 8000bcc: 683b ldr r3, [r7, #0]
- 8000bce: 4a20 ldr r2, [pc, #128] @ (8000c50 )
- 8000bd0: 4293 cmp r3, r2
- 8000bd2: d103 bne.n 8000bdc
+ 8000bd4: 683b ldr r3, [r7, #0]
+ 8000bd6: 4a22 ldr r2, [pc, #136] @ (8000c60 )
+ 8000bd8: 4293 cmp r3, r2
+ 8000bda: d103 bne.n 8000be4
PORT_DEPTH[0] = msg.DEPTH;
- 8000bd4: 8b3a ldrh r2, [r7, #24]
- 8000bd6: 4b1f ldr r3, [pc, #124] @ (8000c54 )
- 8000bd8: 801a strh r2, [r3, #0]
+ 8000bdc: 8b3a ldrh r2, [r7, #24]
+ 8000bde: 4b21 ldr r3, [pc, #132] @ (8000c64 )
+ 8000be0: 801a strh r2, [r3, #0]
break;
- 8000bda: e031 b.n 8000c40
+ 8000be2: e035 b.n 8000c50
} else if(sender == &huart1) {
- 8000bdc: 683b ldr r3, [r7, #0]
- 8000bde: 4a1e ldr r2, [pc, #120] @ (8000c58 )
- 8000be0: 4293 cmp r3, r2
- 8000be2: d103 bne.n 8000bec
+ 8000be4: 683b ldr r3, [r7, #0]
+ 8000be6: 4a20 ldr r2, [pc, #128] @ (8000c68 )
+ 8000be8: 4293 cmp r3, r2
+ 8000bea: d103 bne.n 8000bf4
PORT_DEPTH[1] = msg.DEPTH;
- 8000be4: 8b3a ldrh r2, [r7, #24]
- 8000be6: 4b1b ldr r3, [pc, #108] @ (8000c54 )
- 8000be8: 805a strh r2, [r3, #2]
+ 8000bec: 8b3a ldrh r2, [r7, #24]
+ 8000bee: 4b1d ldr r3, [pc, #116] @ (8000c64 )
+ 8000bf0: 805a strh r2, [r3, #2]
break;
- 8000bea: e029 b.n 8000c40
+ 8000bf2: e02d b.n 8000c50
} else if(sender == &huart2) {
- 8000bec: 683b ldr r3, [r7, #0]
- 8000bee: 4a1b ldr r2, [pc, #108] @ (8000c5c )
- 8000bf0: 4293 cmp r3, r2
- 8000bf2: d103 bne.n 8000bfc
+ 8000bf4: 683b ldr r3, [r7, #0]
+ 8000bf6: 4a1d ldr r2, [pc, #116] @ (8000c6c )
+ 8000bf8: 4293 cmp r3, r2
+ 8000bfa: d103 bne.n 8000c04
PORT_DEPTH[2] = msg.DEPTH;
- 8000bf4: 8b3a ldrh r2, [r7, #24]
- 8000bf6: 4b17 ldr r3, [pc, #92] @ (8000c54 )
- 8000bf8: 809a strh r2, [r3, #4]
+ 8000bfc: 8b3a ldrh r2, [r7, #24]
+ 8000bfe: 4b19 ldr r3, [pc, #100] @ (8000c64 )
+ 8000c00: 809a strh r2, [r3, #4]
break;
- 8000bfa: e021 b.n 8000c40
+ 8000c02: e025 b.n 8000c50
} else if(sender == &huart4) {
- 8000bfc: 683b ldr r3, [r7, #0]
- 8000bfe: 4a18 ldr r2, [pc, #96] @ (8000c60 )
- 8000c00: 4293 cmp r3, r2
- 8000c02: d11d bne.n 8000c40
+ 8000c04: 683b ldr r3, [r7, #0]
+ 8000c06: 4a1a ldr r2, [pc, #104] @ (8000c70 )
+ 8000c08: 4293 cmp r3, r2
+ 8000c0a: d121 bne.n 8000c50
PORT_DEPTH[3] = msg.DEPTH;
- 8000c04: 8b3a ldrh r2, [r7, #24]
- 8000c06: 4b13 ldr r3, [pc, #76] @ (8000c54 )
- 8000c08: 80da strh r2, [r3, #6]
+ 8000c0c: 8b3a ldrh r2, [r7, #24]
+ 8000c0e: 4b15 ldr r3, [pc, #84] @ (8000c64 )
+ 8000c10: 80da strh r2, [r3, #6]
break;
- 8000c0a: e019 b.n 8000c40
+ 8000c12: e01d b.n 8000c50
if(MODE!=MODE_INACTIVE){
- 8000c0c: 4b15 ldr r3, [pc, #84] @ (8000c64 )
- 8000c0e: 781b ldrb r3, [r3, #0]
- 8000c10: b2db uxtb r3, r3
- 8000c12: 2b00 cmp r3, #0
- 8000c14: d016 beq.n 8000c44
+ 8000c14: 4b17 ldr r3, [pc, #92] @ (8000c74 )
+ 8000c16: 781b ldrb r3, [r3, #0]
+ 8000c18: b2db uxtb r3, r3
+ 8000c1a: 2b00 cmp r3, #0
+ 8000c1c: d01a beq.n 8000c54
reply.TYPE = 0xAA;
- 8000c16: 23aa movs r3, #170 @ 0xaa
- 8000c18: 817b strh r3, [r7, #10]
+ 8000c1e: 23aa movs r3, #170 @ 0xaa
+ 8000c20: 817b strh r3, [r7, #10]
reply.DEPTH = DEPTH; // use your local DEPTH
- 8000c1a: 4b13 ldr r3, [pc, #76] @ (8000c68 )
- 8000c1c: 881b ldrh r3, [r3, #0]
- 8000c1e: 813b strh r3, [r7, #8]
+ 8000c22: 4b15 ldr r3, [pc, #84] @ (8000c78 )
+ 8000c24: 881b ldrh r3, [r3, #0]
+ 8000c26: 813b strh r3, [r7, #8]
memset(reply.KEYPRESS, 0, sizeof(reply.KEYPRESS));
- 8000c20: f107 0308 add.w r3, r7, #8
- 8000c24: 3304 adds r3, #4
- 8000c26: 220c movs r2, #12
- 8000c28: 2100 movs r1, #0
- 8000c2a: 4618 mov r0, r3
- 8000c2c: f009 fe7c bl 800a928
+ 8000c28: f107 0308 add.w r3, r7, #8
+ 8000c2c: 3304 adds r3, #4
+ 8000c2e: 220c movs r2, #12
+ 8000c30: 2100 movs r1, #0
+ 8000c32: 4618 mov r0, r3
+ 8000c34: f009 fe80 bl 800a938
HAL_UART_Transmit_DMA(sender, (uint8_t*)&reply, sizeof(reply));
- 8000c30: f107 0308 add.w r3, r7, #8
- 8000c34: 2210 movs r2, #16
- 8000c36: 4619 mov r1, r3
- 8000c38: 6838 ldr r0, [r7, #0]
- 8000c3a: f004 ff47 bl 8005acc
+ 8000c38: f107 0308 add.w r3, r7, #8
+ 8000c3c: 2210 movs r2, #16
+ 8000c3e: 4619 mov r1, r3
+ 8000c40: 6838 ldr r0, [r7, #0]
+ 8000c42: f004 ff4b bl 8005adc
break;
- 8000c3e: e001 b.n 8000c44
+ 8000c46: e005 b.n 8000c54
+ break;
+ 8000c48: bf00 nop
+ 8000c4a: e004 b.n 8000c56
+ break;
+ 8000c4c: bf00 nop
+ 8000c4e: e002 b.n 8000c56
break;
- 8000c40: bf00 nop
- 8000c42: e000 b.n 8000c46
+ 8000c50: bf00 nop
+ 8000c52: e000 b.n 8000c56
break;
- 8000c44: bf00 nop
+ 8000c54: bf00 nop
}
}
- 8000c46: bf00 nop
- 8000c48: 3728 adds r7, #40 @ 0x28
- 8000c4a: 46bd mov sp, r7
- 8000c4c: bd80 pop {r7, pc}
- 8000c4e: bf00 nop
- 8000c50: 20000344 .word 0x20000344
- 8000c54: 20000078 .word 0x20000078
- 8000c58: 2000038c .word 0x2000038c
- 8000c5c: 200003d4 .word 0x200003d4
- 8000c60: 200002fc .word 0x200002fc
- 8000c64: 20000268 .word 0x20000268
- 8000c68: 20000260 .word 0x20000260
+ 8000c56: bf00 nop
+ 8000c58: 3728 adds r7, #40 @ 0x28
+ 8000c5a: 46bd mov sp, r7
+ 8000c5c: bd80 pop {r7, pc}
+ 8000c5e: bf00 nop
+ 8000c60: 20000344 .word 0x20000344
+ 8000c64: 20000078 .word 0x20000078
+ 8000c68: 2000038c .word 0x2000038c
+ 8000c6c: 200003d4 .word 0x200003d4
+ 8000c70: 200002fc .word 0x200002fc
+ 8000c74: 20000268 .word 0x20000268
+ 8000c78: 20000260 .word 0x20000260
-08000c6c :
+08000c7c :
void addUSBReport(uint8_t usageID){
- 8000c6c: b480 push {r7}
- 8000c6e: b085 sub sp, #20
- 8000c70: af00 add r7, sp, #0
- 8000c72: 4603 mov r3, r0
- 8000c74: 71fb strb r3, [r7, #7]
+ 8000c7c: b480 push {r7}
+ 8000c7e: b085 sub sp, #20
+ 8000c80: af00 add r7, sp, #0
+ 8000c82: 4603 mov r3, r0
+ 8000c84: 71fb strb r3, [r7, #7]
if(usageID < 0x04 || usageID > 0x73) return; //Usage ID is out of bounds
- 8000c76: 79fb ldrb r3, [r7, #7]
- 8000c78: 2b03 cmp r3, #3
- 8000c7a: d922 bls.n 8000cc2
- 8000c7c: 79fb ldrb r3, [r7, #7]
- 8000c7e: 2b73 cmp r3, #115 @ 0x73
- 8000c80: d81f bhi.n 8000cc2
+ 8000c86: 79fb ldrb r3, [r7, #7]
+ 8000c88: 2b03 cmp r3, #3
+ 8000c8a: d922 bls.n 8000cd2
+ 8000c8c: 79fb ldrb r3, [r7, #7]
+ 8000c8e: 2b73 cmp r3, #115 @ 0x73
+ 8000c90: d81f bhi.n 8000cd2
uint16_t bit_index = usageID - 0x04; //Offset, UsageID starts with 0x04. Gives us the actual value of the bit
- 8000c82: 79fb ldrb r3, [r7, #7]
- 8000c84: b29b uxth r3, r3
- 8000c86: 3b04 subs r3, #4
- 8000c88: 81fb strh r3, [r7, #14]
+ 8000c92: 79fb ldrb r3, [r7, #7]
+ 8000c94: b29b uxth r3, r3
+ 8000c96: 3b04 subs r3, #4
+ 8000c98: 81fb strh r3, [r7, #14]
uint8_t byte_index = bit_index/8; //Calculates which byte in the REPORT array
- 8000c8a: 89fb ldrh r3, [r7, #14]
- 8000c8c: 08db lsrs r3, r3, #3
- 8000c8e: b29b uxth r3, r3
- 8000c90: 737b strb r3, [r7, #13]
+ 8000c9a: 89fb ldrh r3, [r7, #14]
+ 8000c9c: 08db lsrs r3, r3, #3
+ 8000c9e: b29b uxth r3, r3
+ 8000ca0: 737b strb r3, [r7, #13]
uint8_t bit_offset = bit_index%8; //Calculates which bits in the REPORT[byte_index] should be set/unset
- 8000c92: 89fb ldrh r3, [r7, #14]
- 8000c94: b2db uxtb r3, r3
- 8000c96: f003 0307 and.w r3, r3, #7
- 8000c9a: 733b strb r3, [r7, #12]
+ 8000ca2: 89fb ldrh r3, [r7, #14]
+ 8000ca4: b2db uxtb r3, r3
+ 8000ca6: f003 0307 and.w r3, r3, #7
+ 8000caa: 733b strb r3, [r7, #12]
REPORT.KEYPRESS[byte_index] |= (1 << bit_offset);
- 8000c9c: 7b7b ldrb r3, [r7, #13]
- 8000c9e: 4a0c ldr r2, [pc, #48] @ (8000cd0 )
- 8000ca0: 4413 add r3, r2
- 8000ca2: 789b ldrb r3, [r3, #2]
- 8000ca4: b25a sxtb r2, r3
- 8000ca6: 7b3b ldrb r3, [r7, #12]
- 8000ca8: 2101 movs r1, #1
- 8000caa: fa01 f303 lsl.w r3, r1, r3
- 8000cae: b25b sxtb r3, r3
- 8000cb0: 4313 orrs r3, r2
- 8000cb2: b25a sxtb r2, r3
- 8000cb4: 7b7b ldrb r3, [r7, #13]
- 8000cb6: b2d1 uxtb r1, r2
- 8000cb8: 4a05 ldr r2, [pc, #20] @ (8000cd0 )
- 8000cba: 4413 add r3, r2
- 8000cbc: 460a mov r2, r1
- 8000cbe: 709a strb r2, [r3, #2]
- 8000cc0: e000 b.n 8000cc4
+ 8000cac: 7b7b ldrb r3, [r7, #13]
+ 8000cae: 4a0c ldr r2, [pc, #48] @ (8000ce0 )
+ 8000cb0: 4413 add r3, r2
+ 8000cb2: 789b ldrb r3, [r3, #2]
+ 8000cb4: b25a sxtb r2, r3
+ 8000cb6: 7b3b ldrb r3, [r7, #12]
+ 8000cb8: 2101 movs r1, #1
+ 8000cba: fa01 f303 lsl.w r3, r1, r3
+ 8000cbe: b25b sxtb r3, r3
+ 8000cc0: 4313 orrs r3, r2
+ 8000cc2: b25a sxtb r2, r3
+ 8000cc4: 7b7b ldrb r3, [r7, #13]
+ 8000cc6: b2d1 uxtb r1, r2
+ 8000cc8: 4a05 ldr r2, [pc, #20] @ (8000ce0 )
+ 8000cca: 4413 add r3, r2
+ 8000ccc: 460a mov r2, r1
+ 8000cce: 709a strb r2, [r3, #2]
+ 8000cd0: e000 b.n 8000cd4
if(usageID < 0x04 || usageID > 0x73) return; //Usage ID is out of bounds
- 8000cc2: bf00 nop
+ 8000cd2: bf00 nop
}
- 8000cc4: 3714 adds r7, #20
- 8000cc6: 46bd mov sp, r7
- 8000cc8: f85d 7b04 ldr.w r7, [sp], #4
- 8000ccc: 4770 bx lr
- 8000cce: bf00 nop
- 8000cd0: 20000210 .word 0x20000210
+ 8000cd4: 3714 adds r7, #20
+ 8000cd6: 46bd mov sp, r7
+ 8000cd8: f85d 7b04 ldr.w r7, [sp], #4
+ 8000cdc: 4770 bx lr
+ 8000cde: bf00 nop
+ 8000ce0: 20000210 .word 0x20000210
-08000cd4 :
+08000ce4 :
void matrixScan(void){
- 8000cd4: b580 push {r7, lr}
- 8000cd6: b082 sub sp, #8
- 8000cd8: af00 add r7, sp, #0
+ 8000ce4: b580 push {r7, lr}
+ 8000ce6: b082 sub sp, #8
+ 8000ce8: af00 add r7, sp, #0
for (uint8_t col = 0; col < COL; col++){
- 8000cda: 2300 movs r3, #0
- 8000cdc: 71fb strb r3, [r7, #7]
- 8000cde: e044 b.n 8000d6a
+ 8000cea: 2300 movs r3, #0
+ 8000cec: 71fb strb r3, [r7, #7]
+ 8000cee: e044 b.n 8000d7a
HAL_GPIO_WritePin(COLUMN_PINS[col].GPIOx, COLUMN_PINS[col].PIN, GPIO_PIN_SET);
- 8000ce0: 79fb ldrb r3, [r7, #7]
- 8000ce2: 4a26 ldr r2, [pc, #152] @ (8000d7c )
- 8000ce4: f852 0033 ldr.w r0, [r2, r3, lsl #3]
- 8000ce8: 79fb ldrb r3, [r7, #7]
- 8000cea: 4a24 ldr r2, [pc, #144] @ (8000d7c )
- 8000cec: 00db lsls r3, r3, #3
- 8000cee: 4413 add r3, r2
- 8000cf0: 889b ldrh r3, [r3, #4]
- 8000cf2: 2201 movs r2, #1
- 8000cf4: 4619 mov r1, r3
- 8000cf6: f001 fd7f bl 80027f8
+ 8000cf0: 79fb ldrb r3, [r7, #7]
+ 8000cf2: 4a26 ldr r2, [pc, #152] @ (8000d8c )
+ 8000cf4: f852 0033 ldr.w r0, [r2, r3, lsl #3]
+ 8000cf8: 79fb ldrb r3, [r7, #7]
+ 8000cfa: 4a24 ldr r2, [pc, #144] @ (8000d8c