ARM GAS /tmp/ccAkEbCV.s page 1 1 .cpu cortex-m0plus 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 "RegionCommon.c" 12 .text 13 .Ltext0: 14 .cfi_sections .debug_frame 15 .section .text.RegionCommonGetJoinDc,"ax",%progbits 16 .align 1 17 .global RegionCommonGetJoinDc 18 .syntax unified 19 .code 16 20 .thumb_func 21 .fpu softvfp 23 RegionCommonGetJoinDc: 24 .LFB83: 25 .file 1 "./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c" 1:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** /* 2:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** / _____) _ | | 3:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** ( (____ _____ ____ _| |_ _____ ____| |__ 4:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** \____ \| ___ | (_ _) ___ |/ ___) _ \ 5:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** _____) ) ____| | | || |_| ____( (___| | | | 6:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** (______/|_____)_|_|_| \__)_____)\____)_| |_| 7:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** (C)2013 Semtech 8:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** ___ _____ _ ___ _ _____ ___ ___ ___ ___ 9:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** / __|_ _/_\ / __| |/ / __/ _ \| _ \/ __| __| 10:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** \__ \ | |/ _ \ (__| ' <| _| (_) | / (__| _| 11:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** |___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___| 12:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** embedded.connectivity.solutions=============== 13:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 14:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** Description: LoRa MAC common region implementation 15:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 16:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** License: Revised BSD License, see LICENSE.TXT file include in the project 17:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 18:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jaeckle ( STACKFORCE ) 19:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** */ 20:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 21:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** #include 22:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** #include 23:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** #include 24:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** #include 25:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 26:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** #include "timer.h" 27:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** #include "utilities.h" 28:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** #include "LoRaMac.h" 29:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** #include "RegionCommon.h" 30:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 31:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 32:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 33:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** #define BACKOFF_DC_1_HOUR 100 ARM GAS /tmp/ccAkEbCV.s page 2 34:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** #define BACKOFF_DC_10_HOURS 1000 35:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** #define BACKOFF_DC_24_HOURS 10000 36:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 37:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 38:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 39:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** static uint8_t CountChannels( uint16_t mask, uint8_t nbBits ) 40:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 41:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** uint8_t nbActiveBits = 0; 42:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 43:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** for( uint8_t j = 0; j < nbBits; j++ ) 44:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 45:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** if( ( mask & ( 1 << j ) ) == ( 1 << j ) ) 46:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 47:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** nbActiveBits++; 48:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 49:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 50:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** return nbActiveBits; 51:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 52:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 53:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 54:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 55:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** uint16_t RegionCommonGetJoinDc( TimerTime_t elapsedTime ) 56:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 26 .loc 1 56 0 27 .cfi_startproc 28 @ args = 0, pretend = 0, frame = 0 29 @ frame_needed = 0, uses_anonymous_args = 0 30 @ link register save eliminated. 31 .LVL0: 57:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** uint16_t dutyCycle = 0; 58:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 59:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** if( elapsedTime < 3600000 ) 32 .loc 1 59 0 33 0000 064B ldr r3, .L6 34 0002 9842 cmp r0, r3 35 0004 07D9 bls .L3 60:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 61:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** dutyCycle = BACKOFF_DC_1_HOUR; 62:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 63:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** else if( elapsedTime < ( 3600000 + 36000000 ) ) 36 .loc 1 63 0 37 0006 064B ldr r3, .L6+4 38 0008 9842 cmp r0, r3 39 000a 01D9 bls .L5 64:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 65:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** dutyCycle = BACKOFF_DC_10_HOURS; 66:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 67:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** else 68:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 69:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** dutyCycle = BACKOFF_DC_24_HOURS; 40 .loc 1 69 0 41 000c 0548 ldr r0, .L6+8 42 .LVL1: 43 000e 03E0 b .L2 44 .LVL2: 45 .L5: 65:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } ARM GAS /tmp/ccAkEbCV.s page 3 46 .loc 1 65 0 47 0010 FA20 movs r0, #250 48 .LVL3: 49 0012 8000 lsls r0, r0, #2 50 0014 00E0 b .L2 51 .LVL4: 52 .L3: 61:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 53 .loc 1 61 0 54 0016 6420 movs r0, #100 55 .LVL5: 56 .L2: 70:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 71:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** return dutyCycle; 72:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 57 .loc 1 72 0 58 @ sp needed 59 0018 7047 bx lr 60 .L7: 61 001a C046 .align 2 62 .L6: 63 001c 7FEE3600 .word 3599999 64 0020 7F3F5C02 .word 39599999 65 0024 10270000 .word 10000 66 .cfi_endproc 67 .LFE83: 69 .section .text.RegionCommonChanVerifyDr,"ax",%progbits 70 .align 1 71 .global RegionCommonChanVerifyDr 72 .syntax unified 73 .code 16 74 .thumb_func 75 .fpu softvfp 77 RegionCommonChanVerifyDr: 78 .LFB84: 73:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 74:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** bool RegionCommonChanVerifyDr( uint8_t nbChannels, uint16_t* channelsMask, int8_t dr, int8_t minDr, 75:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 79 .loc 1 75 0 80 .cfi_startproc 81 @ args = 8, pretend = 0, frame = 0 82 @ frame_needed = 0, uses_anonymous_args = 0 83 .LVL6: 84 0000 F0B5 push {r4, r5, r6, r7, lr} 85 .LCFI0: 86 .cfi_def_cfa_offset 20 87 .cfi_offset 4, -20 88 .cfi_offset 5, -16 89 .cfi_offset 6, -12 90 .cfi_offset 7, -8 91 .cfi_offset 14, -4 92 0002 CE46 mov lr, r9 93 0004 4746 mov r7, r8 94 0006 80B5 push {r7, lr} 95 .LCFI1: 96 .cfi_def_cfa_offset 28 97 .cfi_offset 8, -28 ARM GAS /tmp/ccAkEbCV.s page 4 98 .cfi_offset 9, -24 99 0008 8046 mov r8, r0 100 000a 07AC add r4, sp, #28 101 .LVL7: 102 000c 2478 ldrb r4, [r4] 103 .LVL8: 104 000e 64B2 sxtb r4, r4 105 0010 0898 ldr r0, [sp, #32] 106 .LVL9: 107 0012 8146 mov r9, r0 108 .LVL10: 109 .LBB16: 110 .LBB17: 76:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** if( RegionCommonValueInRange( dr, minDr, maxDr ) == 0 ) 77:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 78:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** return false; 79:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 80:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 81:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** for( uint8_t i = 0, k = 0; i < nbChannels; i += 16, k++ ) 82:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 83:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** for( uint8_t j = 0; j < 16; j++ ) 84:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 85:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** if( ( ( channelsMask[k] & ( 1 << j ) ) != 0 ) ) 86:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** {// Check datarate validity for enabled channels 87:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** if( RegionCommonValueInRange( dr, ( channels[i + j].DrRange.Fields.Min & 0x0F ), 88:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** ( channels[i + j].DrRange.Fields.Max & 0x0F ) ) = 89:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 90:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** // At least 1 channel has been found we can return OK. 91:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** return true; 92:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 93:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 94:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 95:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 96:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** return false; 97:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 98:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 99:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** uint8_t RegionCommonValueInRange( int8_t value, int8_t min, int8_t max ) 100:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 101:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** if( ( value >= min ) && ( value <= max ) ) 111 .loc 1 101 0 112 0014 9A42 cmp r2, r3 113 0016 2DDB blt .L14 114 0018 A242 cmp r2, r4 115 001a 02DC bgt .L18 116 .LBE17: 117 .LBE16: 118 .LBB18: 81:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 119 .loc 1 81 0 120 001c 0025 movs r5, #0 121 001e 0026 movs r6, #0 122 0020 22E0 b .L10 123 .L18: 124 .LBE18: 78:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 125 .loc 1 78 0 126 0022 0020 movs r0, #0 ARM GAS /tmp/ccAkEbCV.s page 5 127 0024 27E0 b .L9 128 .LVL11: 129 .L11: 130 .LBB23: 131 .LBB19: 83:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 132 .loc 1 83 0 discriminator 2 133 0026 0133 adds r3, r3, #1 134 .LVL12: 135 0028 DBB2 uxtb r3, r3 136 .LVL13: 137 .L13: 83:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 138 .loc 1 83 0 is_stmt 0 discriminator 1 139 002a 0F2B cmp r3, #15 140 002c 18D8 bhi .L19 85:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** {// Check datarate validity for enabled channels 141 .loc 1 85 0 is_stmt 1 142 002e 6C00 lsls r4, r5, #1 143 0030 645A ldrh r4, [r4, r1] 144 0032 1C41 asrs r4, r4, r3 145 0034 E007 lsls r0, r4, #31 146 0036 F6D5 bpl .L11 87:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** ( channels[i + j].DrRange.Fields.Max & 0x0F ) ) = 147 .loc 1 87 0 148 0038 F018 adds r0, r6, r3 149 003a 4400 lsls r4, r0, #1 150 003c 2018 adds r0, r4, r0 151 003e 8400 lsls r4, r0, #2 152 0040 4C44 add r4, r4, r9 153 0042 277A ldrb r7, [r4, #8] 154 0044 3C01 lsls r4, r7, #4 155 0046 64B2 sxtb r4, r4 156 0048 2411 asrs r4, r4, #4 157 004a 0F20 movs r0, #15 158 004c 0440 ands r4, r0 88:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 159 .loc 1 88 0 160 004e 7FB2 sxtb r7, r7 161 0050 3F11 asrs r7, r7, #4 87:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** ( channels[i + j].DrRange.Fields.Max & 0x0F ) ) = 162 .loc 1 87 0 163 0052 0740 ands r7, r0 164 .LVL14: 165 .LBB20: 166 .LBB21: 167 .loc 1 101 0 168 0054 9442 cmp r4, r2 169 0056 E6DC bgt .L11 170 0058 9742 cmp r7, r2 171 005a E4DB blt .L11 172 .LBE21: 173 .LBE20: 91:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 174 .loc 1 91 0 175 005c 0120 movs r0, #1 176 005e 0AE0 b .L9 ARM GAS /tmp/ccAkEbCV.s page 6 177 .LVL15: 178 .L19: 179 .LBE19: 81:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 180 .loc 1 81 0 discriminator 2 181 0060 1036 adds r6, r6, #16 182 .LVL16: 183 0062 F6B2 uxtb r6, r6 184 .LVL17: 185 0064 0135 adds r5, r5, #1 186 .LVL18: 187 0066 EDB2 uxtb r5, r5 188 .LVL19: 189 .L10: 81:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 190 .loc 1 81 0 is_stmt 0 discriminator 1 191 0068 4645 cmp r6, r8 192 006a 01D2 bcs .L20 193 .LBB22: 83:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 194 .loc 1 83 0 is_stmt 1 195 006c 0023 movs r3, #0 196 006e DCE7 b .L13 197 .L20: 198 .LBE22: 199 .LBE23: 96:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 200 .loc 1 96 0 201 0070 0020 movs r0, #0 202 .LBB24: 203 0072 00E0 b .L9 204 .LVL20: 205 .L14: 206 .LBE24: 78:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 207 .loc 1 78 0 208 0074 0020 movs r0, #0 209 .LVL21: 210 .L9: 97:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 211 .loc 1 97 0 212 @ sp needed 213 0076 0CBC pop {r2, r3} 214 0078 9046 mov r8, r2 215 007a 9946 mov r9, r3 216 007c F0BD pop {r4, r5, r6, r7, pc} 217 .cfi_endproc 218 .LFE84: 220 .section .text.RegionCommonValueInRange,"ax",%progbits 221 .align 1 222 .global RegionCommonValueInRange 223 .syntax unified 224 .code 16 225 .thumb_func 226 .fpu softvfp 228 RegionCommonValueInRange: 229 .LFB85: ARM GAS /tmp/ccAkEbCV.s page 7 100:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** if( ( value >= min ) && ( value <= max ) ) 230 .loc 1 100 0 231 .cfi_startproc 232 @ args = 0, pretend = 0, frame = 0 233 @ frame_needed = 0, uses_anonymous_args = 0 234 @ link register save eliminated. 235 .LVL22: 236 .loc 1 101 0 237 0000 8842 cmp r0, r1 238 0002 03DB blt .L23 239 .loc 1 101 0 is_stmt 0 discriminator 1 240 0004 9042 cmp r0, r2 241 0006 03DD ble .L24 102:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 103:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** return 1; 104:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 105:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** return 0; 242 .loc 1 105 0 is_stmt 1 243 0008 0020 movs r0, #0 244 .LVL23: 245 000a 00E0 b .L22 246 .LVL24: 247 .L23: 248 000c 0020 movs r0, #0 249 .LVL25: 250 .L22: 106:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 251 .loc 1 106 0 252 @ sp needed 253 000e 7047 bx lr 254 .LVL26: 255 .L24: 103:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 256 .loc 1 103 0 257 0010 0120 movs r0, #1 258 .LVL27: 259 0012 FCE7 b .L22 260 .cfi_endproc 261 .LFE85: 263 .section .text.RegionCommonChanDisable,"ax",%progbits 264 .align 1 265 .global RegionCommonChanDisable 266 .syntax unified 267 .code 16 268 .thumb_func 269 .fpu softvfp 271 RegionCommonChanDisable: 272 .LFB86: 107:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 108:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** bool RegionCommonChanDisable( uint16_t* channelsMask, uint8_t id, uint8_t maxChannels ) 109:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 273 .loc 1 109 0 274 .cfi_startproc 275 @ args = 0, pretend = 0, frame = 0 276 @ frame_needed = 0, uses_anonymous_args = 0 277 .LVL28: 278 0000 10B5 push {r4, lr} ARM GAS /tmp/ccAkEbCV.s page 8 279 .LCFI2: 280 .cfi_def_cfa_offset 8 281 .cfi_offset 4, -8 282 .cfi_offset 14, -4 110:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** uint8_t index = id / 16; 283 .loc 1 110 0 284 0002 0B09 lsrs r3, r1, #4 285 .LVL29: 111:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 112:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** if( ( index > ( maxChannels / 16 ) ) || ( id >= maxChannels ) ) 286 .loc 1 112 0 287 0004 1409 lsrs r4, r2, #4 288 0006 9C42 cmp r4, r3 289 0008 0CD3 bcc .L27 290 .loc 1 112 0 is_stmt 0 discriminator 1 291 000a 9142 cmp r1, r2 292 000c 0CD2 bcs .L28 113:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 114:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** return false; 115:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 116:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 117:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** // Deactivate channel 118:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** channelsMask[index] &= ~( 1 << ( id % 16 ) ); 293 .loc 1 118 0 is_stmt 1 294 000e 5B00 lsls r3, r3, #1 295 .LVL30: 296 0010 C318 adds r3, r0, r3 297 0012 0F22 movs r2, #15 298 .LVL31: 299 0014 0A40 ands r2, r1 300 0016 0121 movs r1, #1 301 .LVL32: 302 0018 9140 lsls r1, r1, r2 303 001a 1A88 ldrh r2, [r3] 304 001c 8A43 bics r2, r1 305 001e 1A80 strh r2, [r3] 119:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 120:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** return true; 306 .loc 1 120 0 307 0020 0120 movs r0, #1 308 .LVL33: 309 0022 00E0 b .L26 310 .LVL34: 311 .L27: 114:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 312 .loc 1 114 0 313 0024 0020 movs r0, #0 314 .LVL35: 315 .L26: 121:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 316 .loc 1 121 0 317 @ sp needed 318 0026 10BD pop {r4, pc} 319 .LVL36: 320 .L28: 114:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 321 .loc 1 114 0 ARM GAS /tmp/ccAkEbCV.s page 9 322 0028 0020 movs r0, #0 323 .LVL37: 324 002a FCE7 b .L26 325 .cfi_endproc 326 .LFE86: 328 .section .text.RegionCommonCountChannels,"ax",%progbits 329 .align 1 330 .global RegionCommonCountChannels 331 .syntax unified 332 .code 16 333 .thumb_func 334 .fpu softvfp 336 RegionCommonCountChannels: 337 .LFB87: 122:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 123:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** uint8_t RegionCommonCountChannels( uint16_t* channelsMask, uint8_t startIdx, uint8_t stopIdx ) 124:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 338 .loc 1 124 0 339 .cfi_startproc 340 @ args = 0, pretend = 0, frame = 0 341 @ frame_needed = 0, uses_anonymous_args = 0 342 .LVL38: 343 0000 F0B5 push {r4, r5, r6, r7, lr} 344 .LCFI3: 345 .cfi_def_cfa_offset 20 346 .cfi_offset 4, -20 347 .cfi_offset 5, -16 348 .cfi_offset 6, -12 349 .cfi_offset 7, -8 350 .cfi_offset 14, -4 351 0002 9446 mov ip, r2 352 .LVL39: 125:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** uint8_t nbChannels = 0; 126:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 127:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** if( channelsMask == NULL ) 353 .loc 1 127 0 354 0004 0028 cmp r0, #0 355 0006 19D0 beq .L36 125:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** uint8_t nbChannels = 0; 356 .loc 1 125 0 357 0008 0022 movs r2, #0 358 .LVL40: 359 000a 10E0 b .L31 360 .LVL41: 361 .L33: 362 .LBB25: 363 .LBB26: 364 .LBB27: 365 .LBB28: 43:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 366 .loc 1 43 0 367 000c 0133 adds r3, r3, #1 368 .LVL42: 369 000e DBB2 uxtb r3, r3 370 .LVL43: 371 .L32: 372 0010 0F2B cmp r3, #15 ARM GAS /tmp/ccAkEbCV.s page 10 373 0012 08D8 bhi .L37 45:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 374 .loc 1 45 0 375 0014 0124 movs r4, #1 376 0016 9C40 lsls r4, r4, r3 377 0018 2500 movs r5, r4 378 001a 3D40 ands r5, r7 379 001c AC42 cmp r4, r5 380 001e F5D1 bne .L33 47:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 381 .loc 1 47 0 382 0020 0136 adds r6, r6, #1 383 .LVL44: 384 0022 F6B2 uxtb r6, r6 385 .LVL45: 386 0024 F2E7 b .L33 387 .L37: 388 .LVL46: 389 .LBE28: 390 .LBE27: 391 .LBE26: 128:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 129:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** return 0; 130:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 131:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 132:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** for( uint8_t i = startIdx; i < stopIdx; i++ ) 133:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 134:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** nbChannels += CountChannels( channelsMask[i], 16 ); 392 .loc 1 134 0 393 0026 9219 adds r2, r2, r6 394 .LVL47: 395 0028 D2B2 uxtb r2, r2 396 .LVL48: 132:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 397 .loc 1 132 0 398 002a 0131 adds r1, r1, #1 399 .LVL49: 400 002c C9B2 uxtb r1, r1 401 .LVL50: 402 .L31: 132:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 403 .loc 1 132 0 is_stmt 0 discriminator 1 404 002e 6145 cmp r1, ip 405 0030 05D2 bcs .L30 406 .loc 1 134 0 is_stmt 1 discriminator 3 407 0032 4B00 lsls r3, r1, #1 408 0034 C75A ldrh r7, [r0, r3] 409 .LVL51: 410 .LBB31: 411 .LBB30: 412 .LBB29: 43:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 413 .loc 1 43 0 discriminator 3 414 0036 0023 movs r3, #0 415 .LBE29: 41:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 416 .loc 1 41 0 discriminator 3 ARM GAS /tmp/ccAkEbCV.s page 11 417 0038 0026 movs r6, #0 418 003a E9E7 b .L32 419 .LVL52: 420 .L36: 421 .LBE30: 422 .LBE31: 423 .LBE25: 129:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 424 .loc 1 129 0 425 003c 0022 movs r2, #0 426 .LVL53: 427 .L30: 135:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 136:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 137:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** return nbChannels; 138:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 428 .loc 1 138 0 429 003e 1000 movs r0, r2 430 .LVL54: 431 @ sp needed 432 0040 F0BD pop {r4, r5, r6, r7, pc} 433 .cfi_endproc 434 .LFE87: 436 .section .text.RegionCommonChanMaskCopy,"ax",%progbits 437 .align 1 438 .global RegionCommonChanMaskCopy 439 .syntax unified 440 .code 16 441 .thumb_func 442 .fpu softvfp 444 RegionCommonChanMaskCopy: 445 .LFB88: 139:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 140:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** void RegionCommonChanMaskCopy( uint16_t* channelsMaskDest, uint16_t* channelsMaskSrc, uint8_t len ) 141:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 446 .loc 1 141 0 447 .cfi_startproc 448 @ args = 0, pretend = 0, frame = 0 449 @ frame_needed = 0, uses_anonymous_args = 0 450 .LVL55: 451 0000 30B5 push {r4, r5, lr} 452 .LCFI4: 453 .cfi_def_cfa_offset 12 454 .cfi_offset 4, -12 455 .cfi_offset 5, -8 456 .cfi_offset 14, -4 142:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** if( ( channelsMaskDest != NULL ) && ( channelsMaskSrc != NULL ) ) 457 .loc 1 142 0 458 0002 0028 cmp r0, #0 459 0004 0AD0 beq .L38 460 .loc 1 142 0 is_stmt 0 discriminator 1 461 0006 0029 cmp r1, #0 462 0008 08D0 beq .L38 463 .LBB32: 143:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 144:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** for( uint8_t i = 0; i < len; i++ ) 464 .loc 1 144 0 is_stmt 1 ARM GAS /tmp/ccAkEbCV.s page 12 465 000a 0023 movs r3, #0 466 000c 04E0 b .L40 467 .LVL56: 468 .L41: 145:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 146:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** channelsMaskDest[i] = channelsMaskSrc[i]; 469 .loc 1 146 0 discriminator 3 470 000e 5C00 lsls r4, r3, #1 471 0010 0D5B ldrh r5, [r1, r4] 472 0012 0553 strh r5, [r0, r4] 144:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 473 .loc 1 144 0 discriminator 3 474 0014 0133 adds r3, r3, #1 475 .LVL57: 476 0016 DBB2 uxtb r3, r3 477 .LVL58: 478 .L40: 144:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 479 .loc 1 144 0 is_stmt 0 discriminator 1 480 0018 9342 cmp r3, r2 481 001a F8D3 bcc .L41 482 .LVL59: 483 .L38: 484 .LBE32: 147:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 148:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 149:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 485 .loc 1 149 0 is_stmt 1 486 @ sp needed 487 001c 30BD pop {r4, r5, pc} 488 .cfi_endproc 489 .LFE88: 491 .section .text.RegionCommonSetBandTxDone,"ax",%progbits 492 .align 1 493 .global RegionCommonSetBandTxDone 494 .syntax unified 495 .code 16 496 .thumb_func 497 .fpu softvfp 499 RegionCommonSetBandTxDone: 500 .LFB89: 150:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 151:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** void RegionCommonSetBandTxDone( bool joined, Band_t* band, TimerTime_t lastTxDone ) 152:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 501 .loc 1 152 0 502 .cfi_startproc 503 @ args = 0, pretend = 0, frame = 0 504 @ frame_needed = 0, uses_anonymous_args = 0 505 @ link register save eliminated. 506 .LVL60: 153:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** if( joined == true ) 507 .loc 1 153 0 508 0000 0028 cmp r0, #0 509 0002 02D1 bne .L46 154:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 155:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** band->LastTxDoneTime = lastTxDone; 156:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } ARM GAS /tmp/ccAkEbCV.s page 13 157:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** else 158:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 159:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** band->LastTxDoneTime = lastTxDone; 510 .loc 1 159 0 511 0004 8A60 str r2, [r1, #8] 160:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** band->LastJoinTxDoneTime = lastTxDone; 512 .loc 1 160 0 513 0006 4A60 str r2, [r1, #4] 514 .L43: 161:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 162:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 515 .loc 1 162 0 516 @ sp needed 517 0008 7047 bx lr 518 .L46: 155:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 519 .loc 1 155 0 520 000a 8A60 str r2, [r1, #8] 521 000c FCE7 b .L43 522 .cfi_endproc 523 .LFE89: 525 .section .text.RegionCommonUpdateBandTimeOff,"ax",%progbits 526 .align 1 527 .global RegionCommonUpdateBandTimeOff 528 .syntax unified 529 .code 16 530 .thumb_func 531 .fpu softvfp 533 RegionCommonUpdateBandTimeOff: 534 .LFB90: 163:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 164:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** TimerTime_t RegionCommonUpdateBandTimeOff( bool joined, bool dutyCycle, Band_t* bands, uint8_t nbBa 165:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 535 .loc 1 165 0 536 .cfi_startproc 537 @ args = 0, pretend = 0, frame = 0 538 @ frame_needed = 0, uses_anonymous_args = 0 539 .LVL61: 540 0000 F8B5 push {r3, r4, r5, r6, r7, lr} 541 .LCFI5: 542 .cfi_def_cfa_offset 24 543 .cfi_offset 3, -24 544 .cfi_offset 4, -20 545 .cfi_offset 5, -16 546 .cfi_offset 6, -12 547 .cfi_offset 7, -8 548 .cfi_offset 14, -4 549 0002 DE46 mov lr, fp 550 0004 5746 mov r7, r10 551 0006 4E46 mov r6, r9 552 0008 4546 mov r5, r8 553 000a E0B5 push {r5, r6, r7, lr} 554 .LCFI6: 555 .cfi_def_cfa_offset 40 556 .cfi_offset 8, -40 557 .cfi_offset 9, -36 558 .cfi_offset 10, -32 ARM GAS /tmp/ccAkEbCV.s page 14 559 .cfi_offset 11, -28 560 000c 8046 mov r8, r0 561 000e 0E00 movs r6, r1 562 0010 9146 mov r9, r2 563 0012 1F00 movs r7, r3 564 .LVL62: 565 .LBB33: 166:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** TimerTime_t nextTxDelay = ( TimerTime_t )( -1 ); 167:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 168:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** // Update bands Time OFF 169:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** for( uint8_t i = 0; i < nbBands; i++ ) 566 .loc 1 169 0 567 0014 0024 movs r4, #0 568 .LBE33: 166:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** TimerTime_t nextTxDelay = ( TimerTime_t )( -1 ); 569 .loc 1 166 0 570 0016 0123 movs r3, #1 571 .LVL63: 572 0018 5B42 rsbs r3, r3, #0 573 001a 9A46 mov r10, r3 574 .LBB35: 575 .loc 1 169 0 576 001c 37E0 b .L48 577 .LVL64: 578 .L66: 579 .LBB34: 170:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 171:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** if( joined == false ) 172:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 173:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** uint32_t txDoneTime = MAX( TimerGetElapsedTime( bands[i].LastJoinTxDoneTime ), 580 .loc 1 173 0 581 001e 2501 lsls r5, r4, #4 582 0020 4D44 add r5, r5, r9 583 0022 6868 ldr r0, [r5, #4] 584 0024 FFF7FEFF bl TimerGetElapsedTime 585 .LVL65: 586 0028 8346 mov fp, r0 587 002a 002E cmp r6, #0 588 002c 12D1 bne .L61 589 002e 0020 movs r0, #0 590 .L50: 591 .loc 1 173 0 is_stmt 0 discriminator 4 592 0030 8345 cmp fp, r0 593 0032 13D8 bhi .L62 594 .loc 1 173 0 discriminator 6 595 0034 002E cmp r6, #0 596 0036 15D1 bne .L63 597 .loc 1 173 0 598 0038 0020 movs r0, #0 599 .L52: 600 .LVL66: 174:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** ( dutyCycle == true ) ? TimerGetElapsedTime( bands[i].LastT 175:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 176:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** if( bands[i].TimeOff <= txDoneTime ) 601 .loc 1 176 0 is_stmt 1 discriminator 12 602 003a EB68 ldr r3, [r5, #12] 603 003c 8342 cmp r3, r0 ARM GAS /tmp/ccAkEbCV.s page 15 604 003e 01D8 bhi .L53 177:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 178:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** bands[i].TimeOff = 0; 605 .loc 1 178 0 606 0040 0023 movs r3, #0 607 0042 EB60 str r3, [r5, #12] 608 .L53: 179:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 180:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** if( bands[i].TimeOff != 0 ) 609 .loc 1 180 0 610 0044 EB68 ldr r3, [r5, #12] 611 0046 002B cmp r3, #0 612 0048 1FD0 beq .L54 181:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 182:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** nextTxDelay = MIN( bands[i].TimeOff - txDoneTime, nextTxDelay ); 613 .loc 1 182 0 614 004a 1B1A subs r3, r3, r0 615 004c 9A45 cmp r10, r3 616 004e 1CD9 bls .L54 617 0050 9A46 mov r10, r3 618 .LVL67: 619 0052 1AE0 b .L54 620 .LVL68: 621 .L61: 173:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** ( dutyCycle == true ) ? TimerGetElapsedTime( bands[i].LastT 622 .loc 1 173 0 discriminator 1 623 0054 A868 ldr r0, [r5, #8] 624 0056 FFF7FEFF bl TimerGetElapsedTime 625 .LVL69: 626 005a E9E7 b .L50 627 .L62: 173:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** ( dutyCycle == true ) ? TimerGetElapsedTime( bands[i].LastT 628 .loc 1 173 0 is_stmt 0 discriminator 5 629 005c 6868 ldr r0, [r5, #4] 630 005e FFF7FEFF bl TimerGetElapsedTime 631 .LVL70: 632 0062 EAE7 b .L52 633 .L63: 173:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** ( dutyCycle == true ) ? TimerGetElapsedTime( bands[i].LastT 634 .loc 1 173 0 discriminator 8 635 0064 A868 ldr r0, [r5, #8] 636 0066 FFF7FEFF bl TimerGetElapsedTime 637 .LVL71: 638 006a E6E7 b .L52 639 .L67: 640 .LBE34: 183:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 184:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 185:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** else 186:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 187:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** if( dutyCycle == true ) 188:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 189:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** if( bands[i].TimeOff <= TimerGetElapsedTime( bands[i].LastTxDoneTime ) ) 641 .loc 1 189 0 is_stmt 1 642 006c 2501 lsls r5, r4, #4 643 006e 4D44 add r5, r5, r9 644 0070 EB68 ldr r3, [r5, #12] ARM GAS /tmp/ccAkEbCV.s page 16 645 0072 9B46 mov fp, r3 646 0074 A868 ldr r0, [r5, #8] 647 0076 FFF7FEFF bl TimerGetElapsedTime 648 .LVL72: 649 007a 8345 cmp fp, r0 650 007c 01D8 bhi .L57 190:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 191:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** bands[i].TimeOff = 0; 651 .loc 1 191 0 652 007e 0023 movs r3, #0 653 0080 EB60 str r3, [r5, #12] 654 .L57: 192:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 193:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** if( bands[i].TimeOff != 0 ) 655 .loc 1 193 0 656 0082 EB68 ldr r3, [r5, #12] 657 0084 9B46 mov fp, r3 658 0086 002B cmp r3, #0 659 0088 0FD1 bne .L64 660 .LVL73: 661 .L54: 169:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 662 .loc 1 169 0 discriminator 2 663 008a 0134 adds r4, r4, #1 664 .LVL74: 665 008c E4B2 uxtb r4, r4 666 .LVL75: 667 .L48: 169:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 668 .loc 1 169 0 is_stmt 0 discriminator 1 669 008e BC42 cmp r4, r7 670 0090 1BD2 bcs .L65 171:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 671 .loc 1 171 0 is_stmt 1 672 0092 4346 mov r3, r8 673 0094 002B cmp r3, #0 674 0096 C2D0 beq .L66 187:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 675 .loc 1 187 0 676 0098 002E cmp r6, #0 677 009a E7D1 bne .L67 678 .LVL76: 194:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 195:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** nextTxDelay = MIN( bands[i].TimeOff - TimerGetElapsedTime( bands[i].LastTxDoneT 196:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** nextTxDelay ); 197:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 198:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 199:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** else 200:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 201:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** nextTxDelay = 0; 202:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** bands[i].TimeOff = 0; 679 .loc 1 202 0 680 009c 2301 lsls r3, r4, #4 681 009e 4B44 add r3, r3, r9 682 00a0 0022 movs r2, #0 683 00a2 DA60 str r2, [r3, #12] 201:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** bands[i].TimeOff = 0; ARM GAS /tmp/ccAkEbCV.s page 17 684 .loc 1 201 0 685 00a4 0023 movs r3, #0 686 00a6 9A46 mov r10, r3 687 00a8 EFE7 b .L54 688 .LVL77: 689 .L64: 195:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** nextTxDelay ); 690 .loc 1 195 0 691 00aa A868 ldr r0, [r5, #8] 692 00ac FFF7FEFF bl TimerGetElapsedTime 693 .LVL78: 694 00b0 5B46 mov r3, fp 695 00b2 181A subs r0, r3, r0 696 00b4 5045 cmp r0, r10 697 00b6 E8D2 bcs .L54 195:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** nextTxDelay ); 698 .loc 1 195 0 is_stmt 0 discriminator 1 699 00b8 EB68 ldr r3, [r5, #12] 700 00ba 9A46 mov r10, r3 701 .LVL79: 702 00bc A868 ldr r0, [r5, #8] 703 00be FFF7FEFF bl TimerGetElapsedTime 704 .LVL80: 705 00c2 5346 mov r3, r10 706 00c4 1B1A subs r3, r3, r0 707 00c6 9A46 mov r10, r3 708 00c8 DFE7 b .L54 709 .LVL81: 710 .L65: 711 .LBE35: 203:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 204:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 205:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 206:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** return nextTxDelay; 207:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 712 .loc 1 207 0 is_stmt 1 713 00ca 5046 mov r0, r10 714 @ sp needed 715 .LVL82: 716 .LVL83: 717 .LVL84: 718 00cc 3CBC pop {r2, r3, r4, r5} 719 00ce 9046 mov r8, r2 720 00d0 9946 mov r9, r3 721 00d2 A246 mov r10, r4 722 00d4 AB46 mov fp, r5 723 00d6 F8BD pop {r3, r4, r5, r6, r7, pc} 724 .cfi_endproc 725 .LFE90: 727 .section .text.RegionCommonParseLinkAdrReq,"ax",%progbits 728 .align 1 729 .global RegionCommonParseLinkAdrReq 730 .syntax unified 731 .code 16 732 .thumb_func 733 .fpu softvfp 735 RegionCommonParseLinkAdrReq: ARM GAS /tmp/ccAkEbCV.s page 18 736 .LFB91: 208:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 209:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** uint8_t RegionCommonParseLinkAdrReq( uint8_t* payload, RegionCommonLinkAdrParams_t* linkAdrParams ) 210:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 737 .loc 1 210 0 738 .cfi_startproc 739 @ args = 0, pretend = 0, frame = 0 740 @ frame_needed = 0, uses_anonymous_args = 0 741 .LVL85: 742 0000 10B5 push {r4, lr} 743 .LCFI7: 744 .cfi_def_cfa_offset 8 745 .cfi_offset 4, -8 746 .cfi_offset 14, -4 747 .LVL86: 211:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** uint8_t retIndex = 0; 212:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 213:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** if( payload[0] == SRV_MAC_LINK_ADR_REQ ) 748 .loc 1 213 0 749 0002 0378 ldrb r3, [r0] 750 0004 032B cmp r3, #3 751 0006 01D0 beq .L71 211:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** uint8_t retIndex = 0; 752 .loc 1 211 0 753 0008 0020 movs r0, #0 754 .LVL87: 755 .L69: 214:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 215:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** // Parse datarate and tx power 216:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** linkAdrParams->Datarate = payload[1]; 217:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** linkAdrParams->TxPower = linkAdrParams->Datarate & 0x0F; 218:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** linkAdrParams->Datarate = ( linkAdrParams->Datarate >> 4 ) & 0x0F; 219:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** // Parse ChMask 220:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** linkAdrParams->ChMask = ( uint16_t )payload[2]; 221:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** linkAdrParams->ChMask |= ( uint16_t )payload[3] << 8; 222:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** // Parse ChMaskCtrl and nbRep 223:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** linkAdrParams->NbRep = payload[4]; 224:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** linkAdrParams->ChMaskCtrl = ( linkAdrParams->NbRep >> 4 ) & 0x07; 225:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** linkAdrParams->NbRep &= 0x0F; 226:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 227:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** // LinkAdrReq has 4 bytes length + 1 byte CMD 228:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** retIndex = 5; 229:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 230:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** return retIndex; 231:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 756 .loc 1 231 0 757 @ sp needed 758 000a 10BD pop {r4, pc} 759 .LVL88: 760 .L71: 216:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** linkAdrParams->TxPower = linkAdrParams->Datarate & 0x0F; 761 .loc 1 216 0 762 000c 4278 ldrb r2, [r0, #1] 763 000e 54B2 sxtb r4, r2 217:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** linkAdrParams->Datarate = ( linkAdrParams->Datarate >> 4 ) & 0x0F; 764 .loc 1 217 0 765 0010 0C33 adds r3, r3, #12 ARM GAS /tmp/ccAkEbCV.s page 19 766 0012 1C40 ands r4, r3 767 0014 8C70 strb r4, [r1, #2] 218:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** // Parse ChMask 768 .loc 1 218 0 769 0016 1209 lsrs r2, r2, #4 770 0018 4A70 strb r2, [r1, #1] 220:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** linkAdrParams->ChMask |= ( uint16_t )payload[3] << 8; 771 .loc 1 220 0 772 001a 8278 ldrb r2, [r0, #2] 773 001c 8A80 strh r2, [r1, #4] 221:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** // Parse ChMaskCtrl and nbRep 774 .loc 1 221 0 775 001e C478 ldrb r4, [r0, #3] 776 0020 2402 lsls r4, r4, #8 777 0022 2243 orrs r2, r4 778 0024 8A80 strh r2, [r1, #4] 223:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** linkAdrParams->ChMaskCtrl = ( linkAdrParams->NbRep >> 4 ) & 0x07; 779 .loc 1 223 0 780 0026 0079 ldrb r0, [r0, #4] 781 .LVL89: 224:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** linkAdrParams->NbRep &= 0x0F; 782 .loc 1 224 0 783 0028 0409 lsrs r4, r0, #4 784 002a 0722 movs r2, #7 785 002c 2240 ands r2, r4 786 002e CA70 strb r2, [r1, #3] 225:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 787 .loc 1 225 0 788 0030 0340 ands r3, r0 789 0032 0B70 strb r3, [r1] 790 .LVL90: 228:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 791 .loc 1 228 0 792 0034 0520 movs r0, #5 793 0036 E8E7 b .L69 794 .cfi_endproc 795 .LFE91: 797 .section .text.RegionCommonLinkAdrReqVerifyParams,"ax",%progbits 798 .align 1 799 .global RegionCommonLinkAdrReqVerifyParams 800 .syntax unified 801 .code 16 802 .thumb_func 803 .fpu softvfp 805 RegionCommonLinkAdrReqVerifyParams: 806 .LFB92: 232:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 233:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** uint8_t RegionCommonLinkAdrReqVerifyParams( RegionCommonLinkAdrReqVerifyParams_t* verifyParams, int 234:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 807 .loc 1 234 0 808 .cfi_startproc 809 @ args = 0, pretend = 0, frame = 0 810 @ frame_needed = 0, uses_anonymous_args = 0 811 .LVL91: 812 0000 F0B5 push {r4, r5, r6, r7, lr} 813 .LCFI8: 814 .cfi_def_cfa_offset 20 ARM GAS /tmp/ccAkEbCV.s page 20 815 .cfi_offset 4, -20 816 .cfi_offset 5, -16 817 .cfi_offset 6, -12 818 .cfi_offset 7, -8 819 .cfi_offset 14, -4 820 0002 DE46 mov lr, fp 821 0004 5746 mov r7, r10 822 0006 4E46 mov r6, r9 823 0008 4546 mov r5, r8 824 000a E0B5 push {r5, r6, r7, lr} 825 .LCFI9: 826 .cfi_def_cfa_offset 36 827 .cfi_offset 8, -36 828 .cfi_offset 9, -32 829 .cfi_offset 10, -28 830 .cfi_offset 11, -24 831 000c 83B0 sub sp, sp, #12 832 .LCFI10: 833 .cfi_def_cfa_offset 48 834 000e 0400 movs r4, r0 835 0010 8B46 mov fp, r1 836 0012 9246 mov r10, r2 837 0014 9946 mov r9, r3 235:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** uint8_t status = verifyParams->Status; 838 .loc 1 235 0 839 0016 0578 ldrb r5, [r0] 840 .LVL92: 236:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** int8_t datarate = verifyParams->Datarate; 841 .loc 1 236 0 842 0018 0223 movs r3, #2 843 .LVL93: 844 001a C356 ldrsb r3, [r0, r3] 845 001c 9846 mov r8, r3 846 .LVL94: 237:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** int8_t txPower = verifyParams->TxPower; 847 .loc 1 237 0 848 001e 0326 movs r6, #3 849 0020 8657 ldrsb r6, [r0, r6] 850 .LVL95: 238:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** int8_t nbRepetitions = verifyParams->NbRep; 851 .loc 1 238 0 852 0022 0427 movs r7, #4 853 0024 C757 ldrsb r7, [r0, r7] 854 .LVL96: 239:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 240:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** // Handle the case when ADR is off. 241:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** if( verifyParams->AdrEnabled == false ) 855 .loc 1 241 0 856 0026 4378 ldrb r3, [r0, #1] 857 0028 002B cmp r3, #0 858 002a 0CD1 bne .L73 242:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 243:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** // When ADR is off, we are allowed to change the channels mask and the NbRep, 244:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** // if the datarate and the TX power of the LinkAdrReq are set to 0x0F. 245:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** if( ( verifyParams->Datarate != 0x0F ) || ( verifyParams->TxPower != 0x0F ) ) 859 .loc 1 245 0 860 002c 0223 movs r3, #2 ARM GAS /tmp/ccAkEbCV.s page 21 861 002e C25E ldrsh r2, [r0, r3] 862 .LVL97: 863 0030 204B ldr r3, .L82 864 0032 9A42 cmp r2, r3 865 0034 02D0 beq .L74 866 .LVL98: 246:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 247:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** status = 0; 248:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** nbRepetitions = verifyParams->CurrentNbRep; 867 .loc 1 248 0 868 0036 0727 movs r7, #7 869 .LVL99: 870 0038 C757 ldrsb r7, [r0, r7] 871 .LVL100: 247:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** nbRepetitions = verifyParams->CurrentNbRep; 872 .loc 1 247 0 873 003a 0025 movs r5, #0 874 .LVL101: 875 .L74: 249:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 250:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** // Get the current datarate and tx power 251:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** datarate = verifyParams->CurrentDatarate; 876 .loc 1 251 0 877 003c 0523 movs r3, #5 878 003e E356 ldrsb r3, [r4, r3] 879 0040 9846 mov r8, r3 880 .LVL102: 252:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** txPower = verifyParams->CurrentTxPower; 881 .loc 1 252 0 882 0042 0626 movs r6, #6 883 .LVL103: 884 0044 A657 ldrsb r6, [r4, r6] 885 .LVL104: 886 .L73: 253:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 254:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 255:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** if( status != 0 ) 887 .loc 1 255 0 888 0046 002D cmp r5, #0 889 0048 10D1 bne .L80 890 .LVL105: 891 .L75: 256:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 257:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** // Verify datarate. The variable phyParam. Value contains the minimum allowed datarate. 258:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** if( RegionCommonChanVerifyDr( verifyParams->NbChannels, verifyParams->ChannelsMask, datarat 259:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** verifyParams->MinDatarate, verifyParams->MaxDatarate, verifyP 260:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 261:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** status &= 0xFD; // Datarate KO 262:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 263:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 264:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** // Verify tx power 265:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** if( RegionCommonValueInRange( txPower, verifyParams->MaxTxPower, verifyParams->MinTxPower ) 266:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 267:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** // Verify if the maximum TX power is exceeded 268:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** if( verifyParams->MaxTxPower > txPower ) 269:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { // Apply maximum TX power. Accept TX power. 270:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** txPower = verifyParams->MaxTxPower; ARM GAS /tmp/ccAkEbCV.s page 22 271:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 272:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** else 273:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 274:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** status &= 0xFB; // TxPower KO 275:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 276:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 277:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 278:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 279:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** // If the status is ok, verify the NbRep 280:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** if( status == 0x07 ) 892 .loc 1 280 0 893 004a 072D cmp r5, #7 894 004c 2DD0 beq .L81 895 .L78: 281:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 282:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** if( nbRepetitions == 0 ) 283:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { // Keep the current one 284:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** nbRepetitions = verifyParams->CurrentNbRep; 285:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 286:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 287:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 288:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** // Apply changes 289:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** *dr = datarate; 896 .loc 1 289 0 897 004e 5B46 mov r3, fp 898 0050 4246 mov r2, r8 899 0052 1A70 strb r2, [r3] 290:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** *txPow = txPower; 900 .loc 1 290 0 901 0054 5346 mov r3, r10 902 0056 1E70 strb r6, [r3] 291:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** *nbRep = nbRepetitions; 903 .loc 1 291 0 904 0058 4B46 mov r3, r9 905 005a 1F70 strb r7, [r3] 292:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 293:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** return status; 294:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 906 .loc 1 294 0 907 005c 2800 movs r0, r5 908 005e 03B0 add sp, sp, #12 909 @ sp needed 910 .LVL106: 911 .LVL107: 912 .LVL108: 913 .LVL109: 914 .LVL110: 915 .LVL111: 916 .LVL112: 917 .LVL113: 918 0060 3CBC pop {r2, r3, r4, r5} 919 0062 9046 mov r8, r2 920 0064 9946 mov r9, r3 921 0066 A246 mov r10, r4 922 0068 AB46 mov fp, r5 923 006a F0BD pop {r4, r5, r6, r7, pc} 924 .LVL114: ARM GAS /tmp/ccAkEbCV.s page 23 925 .L80: 258:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** verifyParams->MinDatarate, verifyParams->MaxDatarate, verifyP 926 .loc 1 258 0 927 006c 1023 movs r3, #16 928 006e E356 ldrsb r3, [r4, r3] 929 0070 207A ldrb r0, [r4, #8] 930 .LVL115: 931 0072 6269 ldr r2, [r4, #20] 932 0074 0192 str r2, [sp, #4] 933 0076 1122 movs r2, #17 934 0078 A256 ldrsb r2, [r4, r2] 935 007a 0092 str r2, [sp] 936 007c 4246 mov r2, r8 937 007e E168 ldr r1, [r4, #12] 938 .LVL116: 939 0080 FFF7FEFF bl RegionCommonChanVerifyDr 940 .LVL117: 941 0084 0028 cmp r0, #0 942 0086 01D1 bne .L76 261:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 943 .loc 1 261 0 944 0088 0223 movs r3, #2 945 008a 9D43 bics r5, r3 946 .LVL118: 947 .L76: 265:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 948 .loc 1 265 0 949 008c 1923 movs r3, #25 950 008e E356 ldrsb r3, [r4, r3] 951 0090 1822 movs r2, #24 952 0092 A256 ldrsb r2, [r4, r2] 953 .LVL119: 954 .LBB36: 955 .LBB37: 101:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 956 .loc 1 101 0 957 0094 B342 cmp r3, r6 958 0096 01DC bgt .L77 959 0098 B242 cmp r2, r6 960 009a D6DA bge .L75 961 .L77: 962 .LVL120: 963 .LBE37: 964 .LBE36: 268:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { // Apply maximum TX power. Accept TX power. 965 .loc 1 268 0 966 009c B342 cmp r3, r6 967 009e 02DC bgt .L79 274:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 968 .loc 1 274 0 969 00a0 0423 movs r3, #4 970 00a2 9D43 bics r5, r3 971 .LVL121: 972 00a4 D1E7 b .L75 973 .L79: 270:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 974 .loc 1 270 0 ARM GAS /tmp/ccAkEbCV.s page 24 975 00a6 1E00 movs r6, r3 976 .LVL122: 977 00a8 CFE7 b .L75 978 .LVL123: 979 .L81: 282:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { // Keep the current one 980 .loc 1 282 0 981 00aa 002F cmp r7, #0 982 00ac CFD1 bne .L78 284:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 983 .loc 1 284 0 984 00ae 0727 movs r7, #7 985 .LVL124: 986 00b0 E757 ldrsb r7, [r4, r7] 987 .LVL125: 988 00b2 CCE7 b .L78 989 .L83: 990 .align 2 991 .L82: 992 00b4 0F0F0000 .word 3855 993 .cfi_endproc 994 .LFE92: 996 .global __aeabi_i2d 997 .global __aeabi_ui2d 998 .global __aeabi_ddiv 999 .global __aeabi_dmul 1000 .section .text.RegionCommonComputeSymbolTimeLoRa,"ax",%progbits 1001 .align 1 1002 .global RegionCommonComputeSymbolTimeLoRa 1003 .syntax unified 1004 .code 16 1005 .thumb_func 1006 .fpu softvfp 1008 RegionCommonComputeSymbolTimeLoRa: 1009 .LFB93: 295:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 296:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** double RegionCommonComputeSymbolTimeLoRa( uint8_t phyDr, uint32_t bandwidth ) 297:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 1010 .loc 1 297 0 1011 .cfi_startproc 1012 @ args = 0, pretend = 0, frame = 0 1013 @ frame_needed = 0, uses_anonymous_args = 0 1014 .LVL126: 1015 0000 D0B5 push {r4, r6, r7, lr} 1016 .LCFI11: 1017 .cfi_def_cfa_offset 16 1018 .cfi_offset 4, -16 1019 .cfi_offset 6, -12 1020 .cfi_offset 7, -8 1021 .cfi_offset 14, -4 1022 0002 0C00 movs r4, r1 298:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** return ( ( double )( 1 << phyDr ) / ( double )bandwidth ) * 1000; 1023 .loc 1 298 0 1024 0004 0123 movs r3, #1 1025 0006 8340 lsls r3, r3, r0 1026 0008 1800 movs r0, r3 1027 .LVL127: ARM GAS /tmp/ccAkEbCV.s page 25 1028 000a FFF7FEFF bl __aeabi_i2d 1029 .LVL128: 1030 000e 0600 movs r6, r0 1031 0010 0F00 movs r7, r1 1032 0012 2000 movs r0, r4 1033 0014 FFF7FEFF bl __aeabi_ui2d 1034 .LVL129: 1035 0018 0200 movs r2, r0 1036 001a 0B00 movs r3, r1 1037 001c 3000 movs r0, r6 1038 001e 3900 movs r1, r7 1039 0020 FFF7FEFF bl __aeabi_ddiv 1040 .LVL130: 1041 0024 0022 movs r2, #0 1042 0026 024B ldr r3, .L85 1043 0028 FFF7FEFF bl __aeabi_dmul 1044 .LVL131: 299:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 1045 .loc 1 299 0 1046 @ sp needed 1047 .LVL132: 1048 002c D0BD pop {r4, r6, r7, pc} 1049 .L86: 1050 002e C046 .align 2 1051 .L85: 1052 0030 00408F40 .word 1083129856 1053 .cfi_endproc 1054 .LFE93: 1056 .section .text.RegionCommonComputeSymbolTimeFsk,"ax",%progbits 1057 .align 1 1058 .global RegionCommonComputeSymbolTimeFsk 1059 .syntax unified 1060 .code 16 1061 .thumb_func 1062 .fpu softvfp 1064 RegionCommonComputeSymbolTimeFsk: 1065 .LFB94: 300:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 301:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** double RegionCommonComputeSymbolTimeFsk( uint8_t phyDr ) 302:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 1066 .loc 1 302 0 1067 .cfi_startproc 1068 @ args = 0, pretend = 0, frame = 0 1069 @ frame_needed = 0, uses_anonymous_args = 0 1070 .LVL133: 1071 0000 10B5 push {r4, lr} 1072 .LCFI12: 1073 .cfi_def_cfa_offset 8 1074 .cfi_offset 4, -8 1075 .cfi_offset 14, -4 303:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** return ( 8.0 / ( double )phyDr ); // 1 symbol equals 1 byte 1076 .loc 1 303 0 1077 0002 FFF7FEFF bl __aeabi_ui2d 1078 .LVL134: 1079 0006 0200 movs r2, r0 1080 0008 0B00 movs r3, r1 1081 000a 0020 movs r0, #0 ARM GAS /tmp/ccAkEbCV.s page 26 1082 000c 0149 ldr r1, .L88 1083 000e FFF7FEFF bl __aeabi_ddiv 1084 .LVL135: 304:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 1085 .loc 1 304 0 1086 @ sp needed 1087 0012 10BD pop {r4, pc} 1088 .L89: 1089 .align 2 1090 .L88: 1091 0014 00002040 .word 1075838976 1092 .cfi_endproc 1093 .LFE94: 1095 .global __aeabi_dadd 1096 .global __aeabi_d2uiz 1097 .global __aeabi_dsub 1098 .global __aeabi_d2iz 1099 .section .text.RegionCommonComputeRxWindowParameters,"ax",%progbits 1100 .align 1 1101 .global RegionCommonComputeRxWindowParameters 1102 .syntax unified 1103 .code 16 1104 .thumb_func 1105 .fpu softvfp 1107 RegionCommonComputeRxWindowParameters: 1108 .LFB95: 305:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 306:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** void RegionCommonComputeRxWindowParameters( double tSymbol, uint8_t minRxSymbols, uint32_t rxError, 307:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 1109 .loc 1 307 0 1110 .cfi_startproc 1111 @ args = 12, pretend = 0, frame = 8 1112 @ frame_needed = 0, uses_anonymous_args = 0 1113 .LVL136: 1114 0000 F0B5 push {r4, r5, r6, r7, lr} 1115 .LCFI13: 1116 .cfi_def_cfa_offset 20 1117 .cfi_offset 4, -20 1118 .cfi_offset 5, -16 1119 .cfi_offset 6, -12 1120 .cfi_offset 7, -8 1121 .cfi_offset 14, -4 1122 0002 83B0 sub sp, sp, #12 1123 .LCFI14: 1124 .cfi_def_cfa_offset 32 1125 0004 0400 movs r4, r0 1126 0006 0D00 movs r5, r1 1127 0008 1600 movs r6, r2 1128 000a 1F00 movs r7, r3 308:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** *windowTimeout = MAX( ( uint32_t )ceil( ( ( 2 * minRxSymbols - 8 ) * tSymbol + 2 * rxError ) / 1129 .loc 1 308 0 1130 000c 101F subs r0, r2, #4 1131 .LVL137: 1132 000e 4000 lsls r0, r0, #1 1133 0010 FFF7FEFF bl __aeabi_i2d 1134 .LVL138: 1135 0014 2200 movs r2, r4 ARM GAS /tmp/ccAkEbCV.s page 27 1136 0016 2B00 movs r3, r5 1137 0018 FFF7FEFF bl __aeabi_dmul 1138 .LVL139: 1139 001c 0090 str r0, [sp] 1140 001e 0191 str r1, [sp, #4] 1141 0020 7800 lsls r0, r7, #1 1142 0022 FFF7FEFF bl __aeabi_ui2d 1143 .LVL140: 1144 0026 009A ldr r2, [sp] 1145 0028 019B ldr r3, [sp, #4] 1146 002a FFF7FEFF bl __aeabi_dadd 1147 .LVL141: 1148 002e 2200 movs r2, r4 1149 0030 2B00 movs r3, r5 1150 0032 FFF7FEFF bl __aeabi_ddiv 1151 .LVL142: 1152 0036 FFF7FEFF bl ceil 1153 .LVL143: 1154 003a FFF7FEFF bl __aeabi_d2uiz 1155 .LVL144: 1156 003e 8642 cmp r6, r0 1157 0040 00D2 bcs .L91 1158 0042 0600 movs r6, r0 1159 .L91: 1160 0044 099B ldr r3, [sp, #36] 1161 0046 1E60 str r6, [r3] 309:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** *windowOffset = ( int32_t )ceil( ( 4.0 * tSymbol ) - ( ( *windowTimeout * tSymbol ) / 2.0 ) - w 1162 .loc 1 309 0 1163 0048 0022 movs r2, #0 1164 004a 154B ldr r3, .L92 1165 004c 2000 movs r0, r4 1166 004e 2900 movs r1, r5 1167 0050 FFF7FEFF bl __aeabi_dmul 1168 .LVL145: 1169 0054 0090 str r0, [sp] 1170 0056 0191 str r1, [sp, #4] 1171 0058 3000 movs r0, r6 1172 005a FFF7FEFF bl __aeabi_ui2d 1173 .LVL146: 1174 005e 2200 movs r2, r4 1175 0060 2B00 movs r3, r5 1176 0062 FFF7FEFF bl __aeabi_dmul 1177 .LVL147: 1178 0066 0022 movs r2, #0 1179 0068 0E4B ldr r3, .L92+4 1180 006a FFF7FEFF bl __aeabi_dmul 1181 .LVL148: 1182 006e 0200 movs r2, r0 1183 0070 0B00 movs r3, r1 1184 0072 0098 ldr r0, [sp] 1185 0074 0199 ldr r1, [sp, #4] 1186 0076 FFF7FEFF bl __aeabi_dsub 1187 .LVL149: 1188 007a 0400 movs r4, r0 1189 007c 0D00 movs r5, r1 1190 007e 0898 ldr r0, [sp, #32] 1191 0080 FFF7FEFF bl __aeabi_ui2d ARM GAS /tmp/ccAkEbCV.s page 28 1192 .LVL150: 1193 0084 0200 movs r2, r0 1194 0086 0B00 movs r3, r1 1195 0088 2000 movs r0, r4 1196 008a 2900 movs r1, r5 1197 008c FFF7FEFF bl __aeabi_dsub 1198 .LVL151: 1199 0090 FFF7FEFF bl ceil 1200 .LVL152: 1201 0094 FFF7FEFF bl __aeabi_d2iz 1202 .LVL153: 1203 0098 0A9B ldr r3, [sp, #40] 1204 009a 1860 str r0, [r3] 310:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 1205 .loc 1 310 0 1206 009c 03B0 add sp, sp, #12 1207 @ sp needed 1208 .LVL154: 1209 009e F0BD pop {r4, r5, r6, r7, pc} 1210 .L93: 1211 .align 2 1212 .L92: 1213 00a0 00001040 .word 1074790400 1214 00a4 0000E03F .word 1071644672 1215 .cfi_endproc 1216 .LFE95: 1218 .global __aeabi_ui2f 1219 .global __aeabi_fsub 1220 .global __aeabi_f2d 1221 .section .text.RegionCommonComputeTxPower,"ax",%progbits 1222 .align 1 1223 .global RegionCommonComputeTxPower 1224 .syntax unified 1225 .code 16 1226 .thumb_func 1227 .fpu softvfp 1229 RegionCommonComputeTxPower: 1230 .LFB96: 311:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 312:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** int8_t RegionCommonComputeTxPower( int8_t txPowerIndex, float maxEirp, float antennaGain ) 313:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 1231 .loc 1 313 0 1232 .cfi_startproc 1233 @ args = 0, pretend = 0, frame = 0 1234 @ frame_needed = 0, uses_anonymous_args = 0 1235 .LVL155: 1236 0000 70B5 push {r4, r5, r6, lr} 1237 .LCFI15: 1238 .cfi_def_cfa_offset 16 1239 .cfi_offset 4, -16 1240 .cfi_offset 5, -12 1241 .cfi_offset 6, -8 1242 .cfi_offset 14, -4 1243 0002 0D1C adds r5, r1, #0 1244 0004 141C adds r4, r2, #0 1245 .LVL156: 314:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** int8_t phyTxPower = 0; ARM GAS /tmp/ccAkEbCV.s page 29 315:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 316:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** phyTxPower = ( int8_t )floor( ( maxEirp - ( txPowerIndex * 2U ) ) - antennaGain ); 1246 .loc 1 316 0 1247 0006 4000 lsls r0, r0, #1 1248 .LVL157: 1249 0008 FFF7FEFF bl __aeabi_ui2f 1250 .LVL158: 1251 000c 011C adds r1, r0, #0 1252 000e 281C adds r0, r5, #0 1253 0010 FFF7FEFF bl __aeabi_fsub 1254 .LVL159: 1255 0014 211C adds r1, r4, #0 1256 0016 FFF7FEFF bl __aeabi_fsub 1257 .LVL160: 1258 001a FFF7FEFF bl __aeabi_f2d 1259 .LVL161: 1260 001e FFF7FEFF bl floor 1261 .LVL162: 1262 0022 FFF7FEFF bl __aeabi_d2iz 1263 .LVL163: 1264 0026 40B2 sxtb r0, r0 1265 .LVL164: 317:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 318:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** return phyTxPower; 319:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 1266 .loc 1 319 0 1267 @ sp needed 1268 .LVL165: 1269 .LVL166: 1270 0028 70BD pop {r4, r5, r6, pc} 1271 .cfi_endproc 1272 .LFE96: 1274 .section .text.RegionCommonCalcBackOff,"ax",%progbits 1275 .align 1 1276 .global RegionCommonCalcBackOff 1277 .syntax unified 1278 .code 16 1279 .thumb_func 1280 .fpu softvfp 1282 RegionCommonCalcBackOff: 1283 .LFB97: 320:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 321:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** void RegionCommonCalcBackOff( RegionCommonCalcBackOffParams_t* calcBackOffParams ) 322:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 1284 .loc 1 322 0 1285 .cfi_startproc 1286 @ args = 0, pretend = 0, frame = 0 1287 @ frame_needed = 0, uses_anonymous_args = 0 1288 .LVL167: 1289 0000 10B5 push {r4, lr} 1290 .LCFI16: 1291 .cfi_def_cfa_offset 8 1292 .cfi_offset 4, -8 1293 .cfi_offset 14, -4 323:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** uint8_t bandIdx = calcBackOffParams->Channels[calcBackOffParams->Channel].Band; 1294 .loc 1 323 0 1295 0002 C27A ldrb r2, [r0, #11] ARM GAS /tmp/ccAkEbCV.s page 30 1296 0004 5300 lsls r3, r2, #1 1297 0006 9B18 adds r3, r3, r2 1298 0008 9A00 lsls r2, r3, #2 1299 000a 0368 ldr r3, [r0] 1300 000c 9C46 mov ip, r3 1301 000e 6244 add r2, r2, ip 1302 0010 537A ldrb r3, [r2, #9] 1303 .LVL168: 324:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** uint16_t dutyCycle = calcBackOffParams->Bands[bandIdx].DCycle; 1304 .loc 1 324 0 1305 0012 1B01 lsls r3, r3, #4 1306 .LVL169: 1307 0014 4268 ldr r2, [r0, #4] 1308 .LVL170: 1309 0016 D218 adds r2, r2, r3 1310 0018 1188 ldrh r1, [r2] 1311 .LVL171: 325:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** uint16_t joinDutyCycle = 0; 326:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 327:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** // Reset time-off to initial value. 328:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** calcBackOffParams->Bands[bandIdx].TimeOff = 0; 1312 .loc 1 328 0 1313 001a 0024 movs r4, #0 1314 001c D460 str r4, [r2, #12] 1315 .LVL172: 329:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** 330:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** if( calcBackOffParams->Joined == false ) 1316 .loc 1 330 0 1317 001e 427A ldrb r2, [r0, #9] 1318 0020 002A cmp r2, #0 1319 0022 23D1 bne .L96 331:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 332:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** // Get the join duty cycle 333:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** joinDutyCycle = RegionCommonGetJoinDc( calcBackOffParams->ElapsedTime ); 1320 .loc 1 333 0 1321 0024 C268 ldr r2, [r0, #12] 1322 .LVL173: 1323 .LBB38: 1324 .LBB39: 59:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 1325 .loc 1 59 0 1326 0026 194C ldr r4, .L105 1327 0028 A242 cmp r2, r4 1328 002a 05D9 bls .L102 63:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 1329 .loc 1 63 0 1330 002c 184C ldr r4, .L105+4 1331 002e A242 cmp r2, r4 1332 0030 13D8 bhi .L103 65:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 1333 .loc 1 65 0 1334 0032 FA24 movs r4, #250 1335 0034 A400 lsls r4, r4, #2 1336 0036 00E0 b .L97 1337 .L102: 61:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 1338 .loc 1 61 0 ARM GAS /tmp/ccAkEbCV.s page 31 1339 0038 6424 movs r4, #100 1340 .L97: 1341 .LVL174: 1342 .LBE39: 1343 .LBE38: 334:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** // Apply the most restricting duty cycle 335:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** dutyCycle = MAX( dutyCycle, joinDutyCycle ); 1344 .loc 1 335 0 1345 003a 0A1C adds r2, r1, #0 1346 003c A142 cmp r1, r4 1347 003e 00D2 bcs .L98 1348 0040 221C adds r2, r4, #0 1349 .L98: 1350 0042 92B2 uxth r2, r2 1351 .LVL175: 336:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** // Reset the timeoff if the last frame was not a join request and when the duty cycle is no 337:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** if( ( calcBackOffParams->DutyCycleEnabled == false ) && ( calcBackOffParams->LastTxIsJoinRe 1352 .loc 1 337 0 1353 0044 817A ldrb r1, [r0, #10] 1354 0046 0029 cmp r1, #0 1355 0048 09D1 bne .L99 1356 .loc 1 337 0 is_stmt 0 discriminator 1 1357 004a 017A ldrb r1, [r0, #8] 1358 004c 0029 cmp r1, #0 1359 004e 06D1 bne .L99 338:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 339:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** // This is the case when the duty cycle is off and the last uplink frame was not a join 340:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** // This could happen in case of a rejoin, e.g. in compliance test mode. 341:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** // In this special case we have to set the time off to 0, since the join duty cycle sha 342:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** // be applied after the first join request. 343:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** calcBackOffParams->Bands[bandIdx].TimeOff = 0; 1360 .loc 1 343 0 is_stmt 1 1361 0050 4268 ldr r2, [r0, #4] 1362 .LVL176: 1363 0052 D318 adds r3, r2, r3 1364 0054 0022 movs r2, #0 1365 0056 DA60 str r2, [r3, #12] 1366 0058 07E0 b .L95 1367 .LVL177: 1368 .L103: 1369 .LBB41: 1370 .LBB40: 69:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 1371 .loc 1 69 0 1372 005a 0E4C ldr r4, .L105+8 1373 005c EDE7 b .L97 1374 .LVL178: 1375 .L99: 1376 .LBE40: 1377 .LBE41: 344:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 345:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** else 346:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 347:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** // Apply band time-off. 348:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** calcBackOffParams->Bands[bandIdx].TimeOff = calcBackOffParams->TxTimeOnAir * dutyCycle 1378 .loc 1 348 0 1379 005e 0469 ldr r4, [r0, #16] ARM GAS /tmp/ccAkEbCV.s page 32 1380 0060 4168 ldr r1, [r0, #4] 1381 0062 CB18 adds r3, r1, r3 1382 0064 013A subs r2, r2, #1 1383 .LVL179: 1384 0066 6243 muls r2, r4 1385 .LVL180: 1386 0068 DA60 str r2, [r3, #12] 1387 .L95: 349:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 350:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 351:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** else 352:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 353:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** if( calcBackOffParams->DutyCycleEnabled == true ) 354:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 355:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** calcBackOffParams->Bands[bandIdx].TimeOff = calcBackOffParams->TxTimeOnAir * dutyCycle 356:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 357:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** else 358:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 359:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** calcBackOffParams->Bands[bandIdx].TimeOff = 0; 360:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 361:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 362:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 1388 .loc 1 362 0 1389 @ sp needed 1390 006a 10BD pop {r4, pc} 1391 .LVL181: 1392 .L96: 353:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** { 1393 .loc 1 353 0 1394 006c 827A ldrb r2, [r0, #10] 1395 006e 002A cmp r2, #0 1396 0070 04D1 bne .L104 359:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 1397 .loc 1 359 0 1398 0072 4268 ldr r2, [r0, #4] 1399 0074 D318 adds r3, r2, r3 1400 0076 0022 movs r2, #0 1401 0078 DA60 str r2, [r3, #12] 1402 .loc 1 362 0 1403 007a F6E7 b .L95 1404 .L104: 355:./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.c **** } 1405 .loc 1 355 0 1406 007c 0469 ldr r4, [r0, #16] 1407 007e 4268 ldr r2, [r0, #4] 1408 0080 D318 adds r3, r2, r3 1409 0082 0139 subs r1, r1, #1 1410 .LVL182: 1411 0084 6143 muls r1, r4 1412 .LVL183: 1413 0086 D960 str r1, [r3, #12] 1414 0088 EFE7 b .L95 1415 .L106: 1416 008a C046 .align 2 1417 .L105: 1418 008c 7FEE3600 .word 3599999 1419 0090 7F3F5C02 .word 39599999 ARM GAS /tmp/ccAkEbCV.s page 33 1420 0094 10270000 .word 10000 1421 .cfi_endproc 1422 .LFE97: 1424 .text 1425 .Letext0: 1426 .file 2 "/usr/arm-none-eabi/include/machine/_default_types.h" 1427 .file 3 "/usr/arm-none-eabi/include/sys/lock.h" 1428 .file 4 "/usr/arm-none-eabi/include/sys/_types.h" 1429 .file 5 "/usr/lib/gcc/arm-none-eabi/7.2.0/include/stddef.h" 1430 .file 6 "/usr/arm-none-eabi/include/sys/reent.h" 1431 .file 7 "/usr/arm-none-eabi/include/sys/_stdint.h" 1432 .file 8 "/usr/arm-none-eabi/include/math.h" 1433 .file 9 "Middlewares/Third_Party/Lora/Utilities/utilities.h" 1434 .file 10 "Middlewares/Third_Party/Lora/Mac/LoRaMac.h" 1435 .file 11 "./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.h" 1436 .file 12 "Middlewares/Third_Party/Lora/Utilities/timeServer.h" ARM GAS /tmp/ccAkEbCV.s page 34 DEFINED SYMBOLS *ABS*:0000000000000000 RegionCommon.c /tmp/ccAkEbCV.s:16 .text.RegionCommonGetJoinDc:0000000000000000 $t /tmp/ccAkEbCV.s:23 .text.RegionCommonGetJoinDc:0000000000000000 RegionCommonGetJoinDc /tmp/ccAkEbCV.s:63 .text.RegionCommonGetJoinDc:000000000000001c $d /tmp/ccAkEbCV.s:70 .text.RegionCommonChanVerifyDr:0000000000000000 $t /tmp/ccAkEbCV.s:77 .text.RegionCommonChanVerifyDr:0000000000000000 RegionCommonChanVerifyDr /tmp/ccAkEbCV.s:221 .text.RegionCommonValueInRange:0000000000000000 $t /tmp/ccAkEbCV.s:228 .text.RegionCommonValueInRange:0000000000000000 RegionCommonValueInRange /tmp/ccAkEbCV.s:264 .text.RegionCommonChanDisable:0000000000000000 $t /tmp/ccAkEbCV.s:271 .text.RegionCommonChanDisable:0000000000000000 RegionCommonChanDisable /tmp/ccAkEbCV.s:329 .text.RegionCommonCountChannels:0000000000000000 $t /tmp/ccAkEbCV.s:336 .text.RegionCommonCountChannels:0000000000000000 RegionCommonCountChannels /tmp/ccAkEbCV.s:437 .text.RegionCommonChanMaskCopy:0000000000000000 $t /tmp/ccAkEbCV.s:444 .text.RegionCommonChanMaskCopy:0000000000000000 RegionCommonChanMaskCopy /tmp/ccAkEbCV.s:492 .text.RegionCommonSetBandTxDone:0000000000000000 $t /tmp/ccAkEbCV.s:499 .text.RegionCommonSetBandTxDone:0000000000000000 RegionCommonSetBandTxDone /tmp/ccAkEbCV.s:526 .text.RegionCommonUpdateBandTimeOff:0000000000000000 $t /tmp/ccAkEbCV.s:533 .text.RegionCommonUpdateBandTimeOff:0000000000000000 RegionCommonUpdateBandTimeOff /tmp/ccAkEbCV.s:728 .text.RegionCommonParseLinkAdrReq:0000000000000000 $t /tmp/ccAkEbCV.s:735 .text.RegionCommonParseLinkAdrReq:0000000000000000 RegionCommonParseLinkAdrReq /tmp/ccAkEbCV.s:798 .text.RegionCommonLinkAdrReqVerifyParams:0000000000000000 $t /tmp/ccAkEbCV.s:805 .text.RegionCommonLinkAdrReqVerifyParams:0000000000000000 RegionCommonLinkAdrReqVerifyParams /tmp/ccAkEbCV.s:992 .text.RegionCommonLinkAdrReqVerifyParams:00000000000000b4 $d /tmp/ccAkEbCV.s:1001 .text.RegionCommonComputeSymbolTimeLoRa:0000000000000000 $t /tmp/ccAkEbCV.s:1008 .text.RegionCommonComputeSymbolTimeLoRa:0000000000000000 RegionCommonComputeSymbolTimeLoRa /tmp/ccAkEbCV.s:1052 .text.RegionCommonComputeSymbolTimeLoRa:0000000000000030 $d /tmp/ccAkEbCV.s:1057 .text.RegionCommonComputeSymbolTimeFsk:0000000000000000 $t /tmp/ccAkEbCV.s:1064 .text.RegionCommonComputeSymbolTimeFsk:0000000000000000 RegionCommonComputeSymbolTimeFsk /tmp/ccAkEbCV.s:1091 .text.RegionCommonComputeSymbolTimeFsk:0000000000000014 $d /tmp/ccAkEbCV.s:1100 .text.RegionCommonComputeRxWindowParameters:0000000000000000 $t /tmp/ccAkEbCV.s:1107 .text.RegionCommonComputeRxWindowParameters:0000000000000000 RegionCommonComputeRxWindowParameters /tmp/ccAkEbCV.s:1213 .text.RegionCommonComputeRxWindowParameters:00000000000000a0 $d /tmp/ccAkEbCV.s:1222 .text.RegionCommonComputeTxPower:0000000000000000 $t /tmp/ccAkEbCV.s:1229 .text.RegionCommonComputeTxPower:0000000000000000 RegionCommonComputeTxPower /tmp/ccAkEbCV.s:1275 .text.RegionCommonCalcBackOff:0000000000000000 $t /tmp/ccAkEbCV.s:1282 .text.RegionCommonCalcBackOff:0000000000000000 RegionCommonCalcBackOff /tmp/ccAkEbCV.s:1418 .text.RegionCommonCalcBackOff:000000000000008c $d .debug_frame:0000000000000010 $d UNDEFINED SYMBOLS TimerGetElapsedTime __aeabi_i2d __aeabi_ui2d __aeabi_ddiv __aeabi_dmul __aeabi_dadd __aeabi_d2uiz __aeabi_dsub __aeabi_d2iz ceil __aeabi_ui2f __aeabi_fsub __aeabi_f2d floor