ARM GAS /tmp/cczfoKrY.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 "RegionEU868.c" 12 .text 13 .Ltext0: 14 .cfi_sections .debug_frame 15 .section .text.VerifyTxFreq,"ax",%progbits 16 .align 1 17 .syntax unified 18 .code 16 19 .thumb_func 20 .fpu softvfp 22 VerifyTxFreq: 23 .LFB88: 24 .file 1 "./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c" 1:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** /* 2:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** / _____) _ | | 3:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** ( (____ _____ ____ _| |_ _____ ____| |__ 4:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** \____ \| ___ | (_ _) ___ |/ ___) _ \ 5:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** _____) ) ____| | | || |_| ____( (___| | | | 6:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** (______/|_____)_|_|_| \__)_____)\____)_| |_| 7:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** (C)2013 Semtech 8:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** ___ _____ _ ___ _ _____ ___ ___ ___ ___ 9:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** / __|_ _/_\ / __| |/ / __/ _ \| _ \/ __| __| 10:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** \__ \ | |/ _ \ (__| ' <| _| (_) | / (__| _| 11:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** |___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___| 12:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** embedded.connectivity.solutions=============== 13:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 14:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** Description: LoRa MAC region EU868 implementation 15:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 16:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** License: Revised BSD License, see LICENSE.TXT file include in the project 17:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 18:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jaeckle ( STACKFORCE ) 19:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** */ 20:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** #include 21:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** #include 22:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** #include 23:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** #include 24:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 25:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** #include "radio.h" 26:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** #include "timer.h" 27:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** #include "LoRaMac.h" 28:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 29:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** #include "utilities.h" 30:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 31:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** #include "Region.h" 32:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** #include "RegionCommon.h" 33:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** #include "RegionEU868.h" 34:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** #include "debug.h" ARM GAS /tmp/cczfoKrY.s page 2 35:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 36:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Definitions 37:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** #define CHANNELS_MASK_SIZE 1 38:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 39:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Global attributes 40:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** /*! 41:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** * LoRaMAC channels 42:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** */ 43:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** static ChannelParams_t Channels[EU868_MAX_NB_CHANNELS]; 44:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 45:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** /*! 46:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** * LoRaMac bands 47:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** */ 48:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** static Band_t Bands[EU868_MAX_NB_BANDS] = 49:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 50:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** EU868_BAND0, 51:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** EU868_BAND1, 52:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** EU868_BAND2, 53:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** EU868_BAND3, 54:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** EU868_BAND4, 55:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** }; 56:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 57:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** /*! 58:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** * LoRaMac channels mask 59:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** */ 60:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** static uint16_t ChannelsMask[CHANNELS_MASK_SIZE]; 61:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 62:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** /*! 63:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** * LoRaMac channels default mask 64:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** */ 65:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** static uint16_t ChannelsDefaultMask[CHANNELS_MASK_SIZE]; 66:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 67:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Static functions 68:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** static int8_t GetNextLowerTxDr( int8_t dr, int8_t minDr ) 69:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 70:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** uint8_t nextLowerDr = 0; 71:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 72:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( dr == minDr ) 73:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 74:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** nextLowerDr = minDr; 75:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 76:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** else 77:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 78:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** nextLowerDr = dr - 1; 79:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 80:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return nextLowerDr; 81:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 82:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 83:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** static uint32_t GetBandwidth( uint32_t drIndex ) 84:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 85:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** switch( BandwidthsEU868[drIndex] ) 86:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 87:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** default: 88:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case 125000: 89:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return 0; 90:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case 250000: 91:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return 1; ARM GAS /tmp/cczfoKrY.s page 3 92:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case 500000: 93:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return 2; 94:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 95:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 96:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 97:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** static int8_t LimitTxPower( int8_t txPower, int8_t maxBandTxPower, int8_t datarate, uint16_t* chann 98:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 99:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** int8_t txPowerResult = txPower; 100:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 101:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Limit tx power to the band max 102:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** txPowerResult = MAX( txPower, maxBandTxPower ); 103:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 104:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return txPowerResult; 105:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 106:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 107:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** static bool VerifyTxFreq( uint32_t freq, uint8_t *band ) 108:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 25 .loc 1 108 0 26 .cfi_startproc 27 @ args = 0, pretend = 0, frame = 0 28 @ frame_needed = 0, uses_anonymous_args = 0 29 .LVL0: 30 0000 70B5 push {r4, r5, r6, lr} 31 .LCFI0: 32 .cfi_def_cfa_offset 16 33 .cfi_offset 4, -16 34 .cfi_offset 5, -12 35 .cfi_offset 6, -8 36 .cfi_offset 14, -4 37 0002 0400 movs r4, r0 38 0004 0D00 movs r5, r1 109:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Check radio driver support 110:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( Radio.CheckRfFrequency( freq ) == false ) 39 .loc 1 110 0 40 0006 1C4B ldr r3, .L14 41 0008 9B6A ldr r3, [r3, #40] 42 000a 9847 blx r3 43 .LVL1: 44 000c 0028 cmp r0, #0 45 000e 23D0 beq .L2 111:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 112:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return false; 113:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 114:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 115:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Check frequency bands 116:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( ( freq >= 863000000 ) && ( freq < 865000000 ) ) 46 .loc 1 116 0 47 0010 1A4A ldr r2, .L14+4 48 0012 1B4B ldr r3, .L14+8 49 0014 E318 adds r3, r4, r3 50 0016 9342 cmp r3, r2 51 0018 1CD9 bls .L9 117:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 118:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** *band = 2; 119:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 120:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** else if( ( freq >= 865000000 ) && ( freq <= 868000000 ) ) 52 .loc 1 120 0 ARM GAS /tmp/cczfoKrY.s page 4 53 001a 1A4A ldr r2, .L14+12 54 001c 1A4B ldr r3, .L14+16 55 001e E318 adds r3, r4, r3 56 0020 9342 cmp r3, r2 57 0022 1AD9 bls .L10 121:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 122:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** *band = 0; 123:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 124:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** else if( ( freq > 868000000 ) && ( freq <= 868600000 ) ) 58 .loc 1 124 0 59 0024 194A ldr r2, .L14+20 60 0026 1A4B ldr r3, .L14+24 61 0028 E318 adds r3, r4, r3 62 002a 9342 cmp r3, r2 63 002c 18D9 bls .L11 125:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 126:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** *band = 1; 127:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 128:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** else if( ( freq >= 868700000 ) && ( freq <= 869200000 ) ) 64 .loc 1 128 0 65 002e 194A ldr r2, .L14+28 66 0030 194B ldr r3, .L14+32 67 0032 E318 adds r3, r4, r3 68 0034 9342 cmp r3, r2 69 0036 16D9 bls .L12 129:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 130:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** *band = 2; 131:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 132:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** else if( ( freq >= 869400000 ) && ( freq <= 869650000 ) ) 70 .loc 1 132 0 71 0038 184A ldr r2, .L14+36 72 003a 194B ldr r3, .L14+40 73 003c E318 adds r3, r4, r3 74 003e 9342 cmp r3, r2 75 0040 14D9 bls .L13 133:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 134:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** *band = 3; 135:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 136:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** else if( ( freq >= 869700000 ) && ( freq <= 870000000 ) ) 76 .loc 1 136 0 77 0042 184B ldr r3, .L14+44 78 0044 9C46 mov ip, r3 79 0046 6444 add r4, r4, ip 80 .LVL2: 81 0048 174B ldr r3, .L14+48 82 004a 9C42 cmp r4, r3 83 004c 11D8 bhi .L8 137:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 138:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** *band = 4; 84 .loc 1 138 0 85 004e 0423 movs r3, #4 86 0050 2B70 strb r3, [r5] 87 0052 01E0 b .L2 88 .LVL3: 89 .L9: 118:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 90 .loc 1 118 0 ARM GAS /tmp/cczfoKrY.s page 5 91 0054 0223 movs r3, #2 92 0056 2B70 strb r3, [r5] 93 .LVL4: 94 .L2: 139:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 140:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** else 141:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 142:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return false; 143:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 144:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return true; 145:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 95 .loc 1 145 0 96 @ sp needed 97 .LVL5: 98 0058 70BD pop {r4, r5, r6, pc} 99 .LVL6: 100 .L10: 122:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 101 .loc 1 122 0 102 005a 0023 movs r3, #0 103 005c 2B70 strb r3, [r5] 104 005e FBE7 b .L2 105 .L11: 126:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 106 .loc 1 126 0 107 0060 0123 movs r3, #1 108 0062 2B70 strb r3, [r5] 109 0064 F8E7 b .L2 110 .L12: 130:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 111 .loc 1 130 0 112 0066 0223 movs r3, #2 113 0068 2B70 strb r3, [r5] 114 006a F5E7 b .L2 115 .L13: 134:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 116 .loc 1 134 0 117 006c 0323 movs r3, #3 118 006e 2B70 strb r3, [r5] 119 0070 F2E7 b .L2 120 .LVL7: 121 .L8: 142:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 122 .loc 1 142 0 123 0072 0020 movs r0, #0 124 0074 F0E7 b .L2 125 .L15: 126 0076 C046 .align 2 127 .L14: 128 0078 00000000 .word Radio 129 007c 7F841E00 .word 1999999 130 0080 40AA8FCC .word -863000000 131 0084 C0C62D00 .word 3000000 132 0088 C02571CC .word -865000000 133 008c BF270900 .word 599999 134 0090 FF5E43CC .word -868000001 135 0094 20A10700 .word 500000 ARM GAS /tmp/cczfoKrY.s page 6 136 0098 A0B038CC .word -868700000 137 009c 90D00300 .word 250000 138 00a0 40022ECC .word -869400000 139 00a4 606E29CC .word -869700000 140 00a8 E0930400 .word 300000 141 .cfi_endproc 142 .LFE88: 144 .section .text.RegionEU868GetPhyParam,"ax",%progbits 145 .align 1 146 .global RegionEU868GetPhyParam 147 .syntax unified 148 .code 16 149 .thumb_func 150 .fpu softvfp 152 RegionEU868GetPhyParam: 153 .LFB90: 146:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 147:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** static uint8_t CountNbOfEnabledChannels( bool joined, uint8_t datarate, uint16_t* channelsMask, Cha 148:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 149:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** uint8_t nbEnabledChannels = 0; 150:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** uint8_t delayTransmission = 0; 151:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 152:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** for( uint8_t i = 0, k = 0; i < EU868_MAX_NB_CHANNELS; i += 16, k++ ) 153:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 154:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** for( uint8_t j = 0; j < 16; j++ ) 155:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 156:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( ( channelsMask[k] & ( 1 << j ) ) != 0 ) 157:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 158:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( channels[i + j].Frequency == 0 ) 159:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { // Check if the channel is enabled 160:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** continue; 161:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 162:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( joined == false ) 163:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 164:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( ( EU868_JOIN_CHANNELS & ( 1 << j ) ) == 0 ) 165:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 166:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** continue; 167:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 168:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 169:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( RegionCommonValueInRange( datarate, channels[i + j].DrRange.Fields.Min, 170:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** channels[i + j].DrRange.Fields.Max ) == false ) 171:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { // Check if the current channel selection supports the given datarate 172:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** continue; 173:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 174:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( bands[channels[i + j].Band].TimeOff > 0 ) 175:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { // Check if the band is available for transmission 176:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** delayTransmission++; 177:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** continue; 178:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 179:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** enabledChannels[nbEnabledChannels++] = i + j; 180:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 181:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 182:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 183:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 184:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** *delayTx = delayTransmission; 185:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return nbEnabledChannels; 186:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } ARM GAS /tmp/cczfoKrY.s page 7 187:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 188:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** PhyParam_t RegionEU868GetPhyParam( GetPhyParams_t* getPhy ) 189:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 154 .loc 1 189 0 155 .cfi_startproc 156 @ args = 0, pretend = 0, frame = 0 157 @ frame_needed = 0, uses_anonymous_args = 0 158 .LVL8: 159 0000 10B5 push {r4, lr} 160 .LCFI1: 161 .cfi_def_cfa_offset 8 162 .cfi_offset 4, -8 163 .cfi_offset 14, -4 164 0002 0200 movs r2, r0 190:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** PhyParam_t phyParam = { 0 }; 165 .loc 1 190 0 166 0004 0020 movs r0, #0 167 .LVL9: 191:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 192:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** switch( getPhy->Attribute ) 168 .loc 1 192 0 169 0006 1378 ldrb r3, [r2] 170 0008 093B subs r3, r3, #9 171 000a D9B2 uxtb r1, r3 172 000c 1729 cmp r1, #23 173 000e 0BD8 bhi .L17 174 0010 8B00 lsls r3, r1, #2 175 0012 2249 ldr r1, .L40 176 0014 CB58 ldr r3, [r1, r3] 177 0016 9F46 mov pc, r3 178 .section .rodata.RegionEU868GetPhyParam,"a",%progbits 179 .align 2 180 .L19: 181 0000 2E000000 .word .L18 182 0004 38000000 .word .L20 183 0008 42000000 .word .L21 184 000c 46000000 .word .L22 185 0010 4A000000 .word .L23 186 0014 50000000 .word .L24 187 0018 56000000 .word .L25 188 001c 5A000000 .word .L26 189 0020 5E000000 .word .L27 190 0024 64000000 .word .L28 191 0028 28000000 .word .L17 192 002c 78000000 .word .L29 193 0030 28000000 .word .L17 194 0034 7C000000 .word .L30 195 0038 80000000 .word .L31 196 003c 84000000 .word .L32 197 0040 88000000 .word .L33 198 0044 28000000 .word .L17 199 0048 28000000 .word .L17 200 004c 8C000000 .word .L34 201 0050 92000000 .word .L35 202 0054 96000000 .word .L36 203 0058 96000000 .word .L36 204 005c 18000000 .word .L37 ARM GAS /tmp/cczfoKrY.s page 8 205 .section .text.RegionEU868GetPhyParam 206 .L37: 193:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 194:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case PHY_MIN_RX_DR: 195:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 196:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** phyParam.Value = EU868_RX_MIN_DATARATE; 197:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 198:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 199:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case PHY_MIN_TX_DR: 200:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 201:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** phyParam.Value = EU868_TX_MIN_DATARATE; 202:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 203:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 204:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case PHY_DEF_TX_DR: 205:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 206:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** phyParam.Value = EU868_DEFAULT_DATARATE; 207:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 208:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 209:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case PHY_NEXT_LOWER_TX_DR: 210:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 211:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** phyParam.Value = GetNextLowerTxDr( getPhy->Datarate, EU868_TX_MIN_DATARATE ); 207 .loc 1 211 0 208 0018 0120 movs r0, #1 209 001a 1056 ldrsb r0, [r2, r0] 210 .LVL10: 211 .LBB14: 212 .LBB15: 72:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 213 .loc 1 72 0 214 001c 0028 cmp r0, #0 215 001e 04D0 beq .L39 78:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 216 .loc 1 78 0 217 0020 C0B2 uxtb r0, r0 218 0022 0138 subs r0, r0, #1 219 .LVL11: 220 0024 C0B2 uxtb r0, r0 221 .LVL12: 222 .L38: 223 .LBE15: 224 .LBE14: 225 .loc 1 211 0 226 0026 40B2 sxtb r0, r0 227 .LVL13: 228 .L17: 212:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 213:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 214:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case PHY_DEF_TX_POWER: 215:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 216:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** phyParam.Value = EU868_DEFAULT_TX_POWER; 217:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 218:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 219:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case PHY_MAX_PAYLOAD: 220:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 221:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** phyParam.Value = MaxPayloadOfDatarateEU868[getPhy->Datarate]; 222:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 223:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } ARM GAS /tmp/cczfoKrY.s page 9 224:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case PHY_MAX_PAYLOAD_REPEATER: 225:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 226:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** phyParam.Value = MaxPayloadOfDatarateRepeaterEU868[getPhy->Datarate]; 227:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 228:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 229:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case PHY_DUTY_CYCLE: 230:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 231:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** phyParam.Value = EU868_DUTY_CYCLE_ENABLED; 232:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 233:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 234:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case PHY_MAX_RX_WINDOW: 235:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 236:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** phyParam.Value = EU868_MAX_RX_WINDOW; 237:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 238:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 239:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case PHY_RECEIVE_DELAY1: 240:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 241:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** phyParam.Value = EU868_RECEIVE_DELAY1; 242:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 243:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 244:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case PHY_RECEIVE_DELAY2: 245:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 246:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** phyParam.Value = EU868_RECEIVE_DELAY2; 247:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 248:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 249:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case PHY_JOIN_ACCEPT_DELAY1: 250:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 251:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** phyParam.Value = EU868_JOIN_ACCEPT_DELAY1; 252:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 253:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 254:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case PHY_JOIN_ACCEPT_DELAY2: 255:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 256:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** phyParam.Value = EU868_JOIN_ACCEPT_DELAY2; 257:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 258:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 259:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case PHY_MAX_FCNT_GAP: 260:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 261:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** phyParam.Value = EU868_MAX_FCNT_GAP; 262:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 263:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 264:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case PHY_ACK_TIMEOUT: 265:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 266:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** phyParam.Value = ( EU868_ACKTIMEOUT + randr( -EU868_ACK_TIMEOUT_RND, EU868_ACK_TIMEOUT_ 267:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 268:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 269:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case PHY_DEF_DR1_OFFSET: 270:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 271:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** phyParam.Value = EU868_DEFAULT_RX1_DR_OFFSET; 272:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 273:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 274:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case PHY_DEF_RX2_FREQUENCY: 275:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 276:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** phyParam.Value = EU868_RX_WND_2_FREQ; 277:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 278:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 279:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case PHY_DEF_RX2_DR: 280:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { ARM GAS /tmp/cczfoKrY.s page 10 281:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** phyParam.Value = EU868_RX_WND_2_DR; 282:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 283:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 284:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case PHY_CHANNELS_MASK: 285:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 286:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** phyParam.ChannelsMask = ChannelsMask; 287:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 288:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 289:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case PHY_CHANNELS_DEFAULT_MASK: 290:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 291:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** phyParam.ChannelsMask = ChannelsDefaultMask; 292:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 293:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 294:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case PHY_MAX_NB_CHANNELS: 295:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 296:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** phyParam.Value = EU868_MAX_NB_CHANNELS; 297:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 298:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 299:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case PHY_CHANNELS: 300:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 301:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** phyParam.Channels = Channels; 302:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 303:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 304:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case PHY_DEF_UPLINK_DWELL_TIME: 305:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case PHY_DEF_DOWNLINK_DWELL_TIME: 306:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 307:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** phyParam.Value = 0; 308:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 309:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 310:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case PHY_DEF_MAX_EIRP: 311:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 312:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** phyParam.fValue = EU868_DEFAULT_MAX_EIRP; 313:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 314:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 315:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case PHY_DEF_ANTENNA_GAIN: 316:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 317:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** phyParam.fValue = EU868_DEFAULT_ANTENNA_GAIN; 318:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 319:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 320:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case PHY_NB_JOIN_TRIALS: 321:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case PHY_DEF_NB_JOIN_TRIALS: 322:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 323:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** phyParam.Value = 48; 324:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 325:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 326:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** default: 327:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 328:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 329:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 330:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 331:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 332:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return phyParam; 333:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 229 .loc 1 333 0 230 @ sp needed 231 0028 10BD pop {r4, pc} 232 .LVL14: ARM GAS /tmp/cczfoKrY.s page 11 233 .L39: 234 .LBB17: 235 .LBB16: 74:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 236 .loc 1 74 0 237 002a 0020 movs r0, #0 238 .LVL15: 239 002c FBE7 b .L38 240 .LVL16: 241 .L18: 242 .LBE16: 243 .LBE17: 221:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 244 .loc 1 221 0 245 002e 0123 movs r3, #1 246 0030 D356 ldrsb r3, [r2, r3] 247 0032 1B4A ldr r2, .L40+4 248 .LVL17: 249 0034 D05C ldrb r0, [r2, r3] 222:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 250 .loc 1 222 0 251 0036 F7E7 b .L17 252 .LVL18: 253 .L20: 226:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 254 .loc 1 226 0 255 0038 0123 movs r3, #1 256 003a D356 ldrsb r3, [r2, r3] 257 003c 194A ldr r2, .L40+8 258 .LVL19: 259 003e D05C ldrb r0, [r2, r3] 227:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 260 .loc 1 227 0 261 0040 F2E7 b .L17 262 .LVL20: 263 .L21: 231:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 264 .loc 1 231 0 265 0042 0120 movs r0, #1 232:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 266 .loc 1 232 0 267 0044 F0E7 b .L17 268 .L22: 236:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 269 .loc 1 236 0 270 0046 1848 ldr r0, .L40+12 237:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 271 .loc 1 237 0 272 0048 EEE7 b .L17 273 .L23: 241:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 274 .loc 1 241 0 275 004a FA20 movs r0, #250 276 .LVL21: 277 004c 8000 lsls r0, r0, #2 278 .LVL22: 242:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } ARM GAS /tmp/cczfoKrY.s page 12 279 .loc 1 242 0 280 004e EBE7 b .L17 281 .L24: 246:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 282 .loc 1 246 0 283 0050 FA20 movs r0, #250 284 .LVL23: 285 0052 C000 lsls r0, r0, #3 286 .LVL24: 247:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 287 .loc 1 247 0 288 0054 E8E7 b .L17 289 .L25: 251:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 290 .loc 1 251 0 291 0056 1548 ldr r0, .L40+16 252:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 292 .loc 1 252 0 293 0058 E6E7 b .L17 294 .L26: 256:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 295 .loc 1 256 0 296 005a 1548 ldr r0, .L40+20 257:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 297 .loc 1 257 0 298 005c E4E7 b .L17 299 .L27: 261:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 300 .loc 1 261 0 301 005e 8020 movs r0, #128 302 .LVL25: 303 0060 C001 lsls r0, r0, #7 304 .LVL26: 262:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 305 .loc 1 262 0 306 0062 E1E7 b .L17 307 .L28: 266:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 308 .loc 1 266 0 309 0064 FA21 movs r1, #250 310 0066 8900 lsls r1, r1, #2 311 0068 1248 ldr r0, .L40+24 312 006a FFF7FEFF bl randr 313 .LVL27: 314 006e FA23 movs r3, #250 315 0070 DB00 lsls r3, r3, #3 316 0072 9C46 mov ip, r3 317 0074 6044 add r0, r0, ip 267:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 318 .loc 1 267 0 319 0076 D7E7 b .L17 320 .LVL28: 321 .L29: 276:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 322 .loc 1 276 0 323 0078 0F48 ldr r0, .L40+28 277:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } ARM GAS /tmp/cczfoKrY.s page 13 324 .loc 1 277 0 325 007a D5E7 b .L17 326 .L30: 286:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 327 .loc 1 286 0 328 007c 0F48 ldr r0, .L40+32 287:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 329 .loc 1 287 0 330 007e D3E7 b .L17 331 .L31: 291:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 332 .loc 1 291 0 333 0080 0F48 ldr r0, .L40+36 292:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 334 .loc 1 292 0 335 0082 D1E7 b .L17 336 .L32: 296:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 337 .loc 1 296 0 338 0084 1020 movs r0, #16 297:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 339 .loc 1 297 0 340 0086 CFE7 b .L17 341 .L33: 301:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 342 .loc 1 301 0 343 0088 0E48 ldr r0, .L40+40 302:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 344 .loc 1 302 0 345 008a CDE7 b .L17 346 .L34: 312:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 347 .loc 1 312 0 348 008c 8320 movs r0, #131 349 .LVL29: 350 008e C005 lsls r0, r0, #23 351 .LVL30: 313:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 352 .loc 1 313 0 353 0090 CAE7 b .L17 354 .L35: 317:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 355 .loc 1 317 0 356 0092 0D48 ldr r0, .L40+44 318:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 357 .loc 1 318 0 358 0094 C8E7 b .L17 359 .L36: 323:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 360 .loc 1 323 0 361 0096 3020 movs r0, #48 324:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 362 .loc 1 324 0 363 0098 C6E7 b .L17 364 .L41: 365 009a C046 .align 2 366 .L40: ARM GAS /tmp/cczfoKrY.s page 14 367 009c 00000000 .word .L19 368 00a0 00000000 .word .LANCHOR0 369 00a4 00000000 .word .LANCHOR1 370 00a8 B80B0000 .word 3000 371 00ac 88130000 .word 5000 372 00b0 70170000 .word 6000 373 00b4 18FCFFFF .word -1000 374 00b8 08E6D333 .word 869525000 375 00bc 00000000 .word .LANCHOR2 376 00c0 00000000 .word .LANCHOR3 377 00c4 00000000 .word Channels 378 00c8 9A990940 .word 1074370970 379 .cfi_endproc 380 .LFE90: 382 .section .text.RegionEU868SetBandTxDone,"ax",%progbits 383 .align 1 384 .global RegionEU868SetBandTxDone 385 .syntax unified 386 .code 16 387 .thumb_func 388 .fpu softvfp 390 RegionEU868SetBandTxDone: 391 .LFB91: 334:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 335:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** void RegionEU868SetBandTxDone( SetBandTxDoneParams_t* txDone ) 336:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 392 .loc 1 336 0 393 .cfi_startproc 394 @ args = 0, pretend = 0, frame = 0 395 @ frame_needed = 0, uses_anonymous_args = 0 396 .LVL31: 397 0000 10B5 push {r4, lr} 398 .LCFI2: 399 .cfi_def_cfa_offset 8 400 .cfi_offset 4, -8 401 .cfi_offset 14, -4 337:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** RegionCommonSetBandTxDone( txDone->Joined, &Bands[Channels[txDone->Channel].Band], txDone->Last 402 .loc 1 337 0 403 0002 0278 ldrb r2, [r0] 404 0004 5300 lsls r3, r2, #1 405 0006 9B18 adds r3, r3, r2 406 0008 9A00 lsls r2, r3, #2 407 000a 054B ldr r3, .L43 408 000c 9B18 adds r3, r3, r2 409 000e 5B7A ldrb r3, [r3, #9] 410 0010 4268 ldr r2, [r0, #4] 411 0012 1B01 lsls r3, r3, #4 412 0014 0349 ldr r1, .L43+4 413 0016 C918 adds r1, r1, r3 414 0018 4078 ldrb r0, [r0, #1] 415 .LVL32: 416 001a FFF7FEFF bl RegionCommonSetBandTxDone 417 .LVL33: 338:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 418 .loc 1 338 0 419 @ sp needed 420 001e 10BD pop {r4, pc} ARM GAS /tmp/cczfoKrY.s page 15 421 .L44: 422 .align 2 423 .L43: 424 0020 00000000 .word Channels 425 0024 00000000 .word .LANCHOR4 426 .cfi_endproc 427 .LFE91: 429 .section .text.RegionEU868InitDefaults,"ax",%progbits 430 .align 1 431 .global RegionEU868InitDefaults 432 .syntax unified 433 .code 16 434 .thumb_func 435 .fpu softvfp 437 RegionEU868InitDefaults: 438 .LFB92: 339:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 340:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** void RegionEU868InitDefaults( InitType_t type ) 341:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 439 .loc 1 341 0 440 .cfi_startproc 441 @ args = 0, pretend = 0, frame = 0 442 @ frame_needed = 0, uses_anonymous_args = 0 443 .LVL34: 444 0000 70B5 push {r4, r5, r6, lr} 445 .LCFI3: 446 .cfi_def_cfa_offset 16 447 .cfi_offset 4, -16 448 .cfi_offset 5, -12 449 .cfi_offset 6, -8 450 .cfi_offset 14, -4 342:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** switch( type ) 451 .loc 1 342 0 452 0002 0028 cmp r0, #0 453 0004 02D0 beq .L47 454 0006 0128 cmp r0, #1 455 0008 14D0 beq .L48 456 .LVL35: 457 .L45: 343:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 344:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case INIT_TYPE_INIT: 345:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 346:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Channels 347:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** Channels[0] = ( ChannelParams_t ) EU868_LC1; 348:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** Channels[1] = ( ChannelParams_t ) EU868_LC2; 349:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** Channels[2] = ( ChannelParams_t ) EU868_LC3; 350:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 351:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Initialize the channels default mask 352:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** ChannelsDefaultMask[0] = LC( 1 ) + LC( 2 ) + LC( 3 ); 353:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Update the channels mask 354:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** RegionCommonChanMaskCopy( ChannelsMask, ChannelsDefaultMask, 1 ); 355:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 356:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 357:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case INIT_TYPE_RESTORE: 358:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 359:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Restore channels default mask 360:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** ChannelsMask[0] |= ChannelsDefaultMask[0]; ARM GAS /tmp/cczfoKrY.s page 16 361:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 362:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 363:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** default: 364:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 365:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 366:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 367:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 368:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 458 .loc 1 368 0 459 @ sp needed 460 000a 70BD pop {r4, r5, r6, pc} 461 .LVL36: 462 .L47: 347:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** Channels[1] = ( ChannelParams_t ) EU868_LC2; 463 .loc 1 347 0 464 000c 0D4B ldr r3, .L49 465 000e 0E4A ldr r2, .L49+4 466 0010 1800 movs r0, r3 467 .LVL37: 468 0012 1100 movs r1, r2 469 0014 70C9 ldmia r1!, {r4, r5, r6} 470 0016 70C0 stmia r0!, {r4, r5, r6} 348:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** Channels[2] = ( ChannelParams_t ) EU868_LC3; 471 .loc 1 348 0 472 0018 70C9 ldmia r1!, {r4, r5, r6} 473 001a 70C0 stmia r0!, {r4, r5, r6} 349:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 474 .loc 1 349 0 475 001c 1833 adds r3, r3, #24 476 001e 1832 adds r2, r2, #24 477 0020 13CA ldmia r2!, {r0, r1, r4} 478 0022 13C3 stmia r3!, {r0, r1, r4} 352:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Update the channels mask 479 .loc 1 352 0 480 0024 0949 ldr r1, .L49+8 481 0026 0723 movs r3, #7 482 0028 0B80 strh r3, [r1] 354:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 483 .loc 1 354 0 484 002a 0122 movs r2, #1 485 002c 0848 ldr r0, .L49+12 486 002e FFF7FEFF bl RegionCommonChanMaskCopy 487 .LVL38: 355:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 488 .loc 1 355 0 489 0032 EAE7 b .L45 490 .LVL39: 491 .L48: 360:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 492 .loc 1 360 0 493 0034 054B ldr r3, .L49+8 494 0036 1B88 ldrh r3, [r3] 495 0038 054A ldr r2, .L49+12 496 003a 1188 ldrh r1, [r2] 497 003c 0B43 orrs r3, r1 498 003e 1380 strh r3, [r2] 499 .loc 1 368 0 ARM GAS /tmp/cczfoKrY.s page 17 500 0040 E3E7 b .L45 501 .L50: 502 0042 C046 .align 2 503 .L49: 504 0044 00000000 .word Channels 505 0048 00000000 .word .LANCHOR5 506 004c 00000000 .word .LANCHOR3 507 0050 00000000 .word .LANCHOR2 508 .cfi_endproc 509 .LFE92: 511 .section .text.RegionEU868Verify,"ax",%progbits 512 .align 1 513 .global RegionEU868Verify 514 .syntax unified 515 .code 16 516 .thumb_func 517 .fpu softvfp 519 RegionEU868Verify: 520 .LFB93: 369:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 370:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** bool RegionEU868Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ) 371:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 521 .loc 1 371 0 522 .cfi_startproc 523 @ args = 0, pretend = 0, frame = 0 524 @ frame_needed = 0, uses_anonymous_args = 0 525 .LVL40: 526 0000 10B5 push {r4, lr} 527 .LCFI4: 528 .cfi_def_cfa_offset 8 529 .cfi_offset 4, -8 530 .cfi_offset 14, -4 372:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** switch( phyAttribute ) 531 .loc 1 372 0 532 0002 0439 subs r1, r1, #4 533 .LVL41: 534 0004 CBB2 uxtb r3, r1 535 0006 1A2B cmp r3, #26 536 0008 34D8 bhi .L60 537 000a 9900 lsls r1, r3, #2 538 000c 1A4B ldr r3, .L63 539 000e 5B58 ldr r3, [r3, r1] 540 0010 9F46 mov pc, r3 541 .section .rodata.RegionEU868Verify,"a",%progbits 542 .align 2 543 .L54: 544 0000 16000000 .word .L53 545 0004 2A000000 .word .L55 546 0008 3E000000 .word .L56 547 000c 52000000 .word .L57 548 0010 52000000 .word .L57 549 0014 74000000 .word .L60 550 0018 74000000 .word .L60 551 001c 12000000 .word .L58 552 0020 74000000 .word .L60 553 0024 74000000 .word .L60 554 0028 74000000 .word .L60 ARM GAS /tmp/cczfoKrY.s page 18 555 002c 74000000 .word .L60 556 0030 74000000 .word .L60 557 0034 74000000 .word .L60 558 0038 74000000 .word .L60 559 003c 74000000 .word .L60 560 0040 74000000 .word .L60 561 0044 74000000 .word .L60 562 0048 74000000 .word .L60 563 004c 74000000 .word .L60 564 0050 74000000 .word .L60 565 0054 74000000 .word .L60 566 0058 74000000 .word .L60 567 005c 74000000 .word .L60 568 0060 74000000 .word .L60 569 0064 74000000 .word .L60 570 0068 66000000 .word .L59 571 .section .text.RegionEU868Verify 572 .L58: 373:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 374:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case PHY_TX_DR: 375:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 376:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return RegionCommonValueInRange( verify->DatarateParams.Datarate, EU868_TX_MIN_DATARATE 377:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 378:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case PHY_DEF_TX_DR: 379:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 380:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return RegionCommonValueInRange( verify->DatarateParams.Datarate, DR_0, DR_5 ); 381:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 382:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case PHY_RX_DR: 383:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 384:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return RegionCommonValueInRange( verify->DatarateParams.Datarate, EU868_RX_MIN_DATARATE 385:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 386:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case PHY_DEF_TX_POWER: 387:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case PHY_TX_POWER: 388:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 389:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Remark: switched min and max! 390:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return RegionCommonValueInRange( verify->TxPower, EU868_MAX_TX_POWER, EU868_MIN_TX_POWE 391:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 392:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case PHY_DUTY_CYCLE: 393:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 394:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return EU868_DUTY_CYCLE_ENABLED; 573 .loc 1 394 0 574 0012 0120 movs r0, #1 575 .LVL42: 576 .L52: 395:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 396:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case PHY_NB_JOIN_TRIALS: 397:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 398:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( verify->NbJoinTrials < 48 ) 399:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 400:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return false; 401:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 402:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 403:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 404:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** default: 405:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return false; 406:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 407:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return true; ARM GAS /tmp/cczfoKrY.s page 19 408:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 577 .loc 1 408 0 578 @ sp needed 579 0014 10BD pop {r4, pc} 580 .LVL43: 581 .L53: 376:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 582 .loc 1 376 0 583 0016 0078 ldrb r0, [r0] 584 .LVL44: 585 0018 40B2 sxtb r0, r0 586 001a 0722 movs r2, #7 587 001c 0021 movs r1, #0 588 001e FFF7FEFF bl RegionCommonValueInRange 589 .LVL45: 590 0022 431E subs r3, r0, #1 591 0024 9841 sbcs r0, r0, r3 592 0026 C0B2 uxtb r0, r0 593 0028 F4E7 b .L52 594 .LVL46: 595 .L55: 380:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 596 .loc 1 380 0 597 002a 0078 ldrb r0, [r0] 598 .LVL47: 599 002c 40B2 sxtb r0, r0 600 002e 0522 movs r2, #5 601 0030 0021 movs r1, #0 602 0032 FFF7FEFF bl RegionCommonValueInRange 603 .LVL48: 604 0036 431E subs r3, r0, #1 605 0038 9841 sbcs r0, r0, r3 606 003a C0B2 uxtb r0, r0 607 003c EAE7 b .L52 608 .LVL49: 609 .L56: 384:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 610 .loc 1 384 0 611 003e 0078 ldrb r0, [r0] 612 .LVL50: 613 0040 40B2 sxtb r0, r0 614 0042 0722 movs r2, #7 615 0044 0021 movs r1, #0 616 0046 FFF7FEFF bl RegionCommonValueInRange 617 .LVL51: 618 004a 431E subs r3, r0, #1 619 004c 9841 sbcs r0, r0, r3 620 004e C0B2 uxtb r0, r0 621 0050 E0E7 b .L52 622 .LVL52: 623 .L57: 390:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 624 .loc 1 390 0 625 0052 0078 ldrb r0, [r0] 626 .LVL53: 627 0054 40B2 sxtb r0, r0 628 0056 0722 movs r2, #7 ARM GAS /tmp/cczfoKrY.s page 20 629 0058 0021 movs r1, #0 630 005a FFF7FEFF bl RegionCommonValueInRange 631 .LVL54: 632 005e 431E subs r3, r0, #1 633 0060 9841 sbcs r0, r0, r3 634 0062 C0B2 uxtb r0, r0 635 0064 D6E7 b .L52 636 .LVL55: 637 .L59: 398:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 638 .loc 1 398 0 639 0066 0378 ldrb r3, [r0] 640 0068 2F2B cmp r3, #47 641 006a 01D9 bls .L62 407:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 642 .loc 1 407 0 643 006c 0120 movs r0, #1 644 .LVL56: 645 006e D1E7 b .L52 646 .LVL57: 647 .L62: 400:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 648 .loc 1 400 0 649 0070 0020 movs r0, #0 650 .LVL58: 651 0072 CFE7 b .L52 652 .LVL59: 653 .L60: 405:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 654 .loc 1 405 0 655 0074 0020 movs r0, #0 656 .LVL60: 657 0076 CDE7 b .L52 658 .L64: 659 .align 2 660 .L63: 661 0078 00000000 .word .L54 662 .cfi_endproc 663 .LFE93: 665 .section .text.RegionEU868ChanMaskSet,"ax",%progbits 666 .align 1 667 .global RegionEU868ChanMaskSet 668 .syntax unified 669 .code 16 670 .thumb_func 671 .fpu softvfp 673 RegionEU868ChanMaskSet: 674 .LFB95: 409:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 410:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** void RegionEU868ApplyCFList( ApplyCFListParams_t* applyCFList ) 411:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 412:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** ChannelParams_t newChannel; 413:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** ChannelAddParams_t channelAdd; 414:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** ChannelRemoveParams_t channelRemove; 415:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 416:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Setup default datarate range 417:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** newChannel.DrRange.Value = ( DR_5 << 4 ) | DR_0; ARM GAS /tmp/cczfoKrY.s page 21 418:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 419:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Size of the optional CF list 420:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( applyCFList->Size != 16 ) 421:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 422:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return; 423:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 424:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 425:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Last byte is RFU, don't take it into account 426:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** for( uint8_t i = 0, chanIdx = EU868_NUMB_DEFAULT_CHANNELS; chanIdx < EU868_MAX_NB_CHANNELS; i+= 427:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 428:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( chanIdx < ( EU868_NUMB_CHANNELS_CF_LIST + EU868_NUMB_DEFAULT_CHANNELS ) ) 429:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 430:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Channel frequency 431:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** newChannel.Frequency = (uint32_t) applyCFList->Payload[i]; 432:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 1] << 8 ); 433:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 2] << 16 ); 434:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** newChannel.Frequency *= 100; 435:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 436:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Initialize alternative frequency to 0 437:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** newChannel.Rx1Frequency = 0; 438:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 439:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** else 440:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 441:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** newChannel.Frequency = 0; 442:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** newChannel.DrRange.Value = 0; 443:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** newChannel.Rx1Frequency = 0; 444:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 445:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 446:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( newChannel.Frequency != 0 ) 447:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 448:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** channelAdd.NewChannel = &newChannel; 449:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** channelAdd.ChannelId = chanIdx; 450:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 451:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Try to add all channels 452:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** RegionEU868ChannelAdd( &channelAdd ); 453:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 454:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** else 455:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 456:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** channelRemove.ChannelId = chanIdx; 457:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 458:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** RegionEU868ChannelsRemove( &channelRemove ); 459:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 460:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 461:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 462:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 463:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** bool RegionEU868ChanMaskSet( ChanMaskSetParams_t* chanMaskSet ) 464:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 675 .loc 1 464 0 676 .cfi_startproc 677 @ args = 0, pretend = 0, frame = 0 678 @ frame_needed = 0, uses_anonymous_args = 0 679 .LVL61: 680 0000 10B5 push {r4, lr} 681 .LCFI5: 682 .cfi_def_cfa_offset 8 683 .cfi_offset 4, -8 684 .cfi_offset 14, -4 ARM GAS /tmp/cczfoKrY.s page 22 465:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** switch( chanMaskSet->ChannelsMaskType ) 685 .loc 1 465 0 686 0002 0379 ldrb r3, [r0, #4] 687 0004 002B cmp r3, #0 688 0006 03D0 beq .L67 689 0008 012B cmp r3, #1 690 000a 08D0 beq .L68 466:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 467:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case CHANNELS_MASK: 468:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 469:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** RegionCommonChanMaskCopy( ChannelsMask, chanMaskSet->ChannelsMaskIn, 1 ); 470:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 471:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 472:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case CHANNELS_DEFAULT_MASK: 473:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 474:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** RegionCommonChanMaskCopy( ChannelsDefaultMask, chanMaskSet->ChannelsMaskIn, 1 ); 475:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 476:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 477:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** default: 478:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return false; 691 .loc 1 478 0 692 000c 0020 movs r0, #0 693 .LVL62: 694 000e 05E0 b .L66 695 .LVL63: 696 .L67: 469:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 697 .loc 1 469 0 698 0010 0168 ldr r1, [r0] 699 0012 0122 movs r2, #1 700 0014 0548 ldr r0, .L71 701 .LVL64: 702 0016 FFF7FEFF bl RegionCommonChanMaskCopy 703 .LVL65: 479:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 480:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return true; 704 .loc 1 480 0 705 001a 0120 movs r0, #1 706 .L66: 481:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 707 .loc 1 481 0 708 @ sp needed 709 001c 10BD pop {r4, pc} 710 .LVL66: 711 .L68: 474:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 712 .loc 1 474 0 713 001e 0168 ldr r1, [r0] 714 0020 0122 movs r2, #1 715 0022 0348 ldr r0, .L71+4 716 .LVL67: 717 0024 FFF7FEFF bl RegionCommonChanMaskCopy 718 .LVL68: 480:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 719 .loc 1 480 0 720 0028 0120 movs r0, #1 475:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } ARM GAS /tmp/cczfoKrY.s page 23 721 .loc 1 475 0 722 002a F7E7 b .L66 723 .L72: 724 .align 2 725 .L71: 726 002c 00000000 .word .LANCHOR2 727 0030 00000000 .word .LANCHOR3 728 .cfi_endproc 729 .LFE95: 731 .section .text.RegionEU868AdrNext,"ax",%progbits 732 .align 1 733 .global RegionEU868AdrNext 734 .syntax unified 735 .code 16 736 .thumb_func 737 .fpu softvfp 739 RegionEU868AdrNext: 740 .LFB96: 482:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 483:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** bool RegionEU868AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowOut, uint32_t* adrAc 484:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 741 .loc 1 484 0 742 .cfi_startproc 743 @ args = 0, pretend = 0, frame = 8 744 @ frame_needed = 0, uses_anonymous_args = 0 745 .LVL69: 746 0000 F0B5 push {r4, r5, r6, r7, lr} 747 .LCFI6: 748 .cfi_def_cfa_offset 20 749 .cfi_offset 4, -20 750 .cfi_offset 5, -16 751 .cfi_offset 6, -12 752 .cfi_offset 7, -8 753 .cfi_offset 14, -4 754 0002 C646 mov lr, r8 755 0004 00B5 push {lr} 756 .LCFI7: 757 .cfi_def_cfa_offset 24 758 .cfi_offset 8, -24 759 0006 82B0 sub sp, sp, #8 760 .LCFI8: 761 .cfi_def_cfa_offset 32 762 0008 0400 movs r4, r0 763 000a 8846 mov r8, r1 764 000c 1700 movs r7, r2 765 .LVL70: 485:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** bool adrAckReq = false; 486:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** int8_t datarate = adrNext->Datarate; 766 .loc 1 486 0 767 000e 0822 movs r2, #8 768 .LVL71: 769 0010 8256 ldrsb r2, [r0, r2] 770 .LVL72: 487:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** int8_t txPower = adrNext->TxPower; 771 .loc 1 487 0 772 0012 0926 movs r6, #9 773 0014 8657 ldrsb r6, [r0, r6] ARM GAS /tmp/cczfoKrY.s page 24 774 .LVL73: 488:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** GetPhyParams_t getPhy; 489:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** PhyParam_t phyParam; 490:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 491:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Report back the adr ack counter 492:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** *adrAckCounter = adrNext->AdrAckCounter; 775 .loc 1 492 0 776 0016 4168 ldr r1, [r0, #4] 777 .LVL74: 778 0018 1960 str r1, [r3] 493:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 494:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( adrNext->AdrEnabled == true ) 779 .loc 1 494 0 780 001a 4578 ldrb r5, [r0, #1] 781 001c 002D cmp r5, #0 782 001e 23D0 beq .L74 495:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 496:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( datarate == EU868_TX_MIN_DATARATE ) 783 .loc 1 496 0 784 0020 002A cmp r2, #0 785 0022 1ED0 beq .L78 497:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 498:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** *adrAckCounter = 0; 499:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** adrAckReq = false; 500:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 501:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** else 502:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 503:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( adrNext->AdrAckCounter >= EU868_ADR_ACK_LIMIT ) 786 .loc 1 503 0 787 0024 4368 ldr r3, [r0, #4] 788 .LVL75: 789 0026 3F2B cmp r3, #63 790 0028 26D9 bls .L77 504:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 505:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** adrAckReq = true; 506:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** txPower = EU868_MAX_TX_POWER; 791 .loc 1 506 0 792 002a 0026 movs r6, #0 793 .LVL76: 794 .L76: 507:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 508:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** else 509:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 510:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** adrAckReq = false; 511:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 512:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( adrNext->AdrAckCounter >= ( EU868_ADR_ACK_LIMIT + EU868_ADR_ACK_DELAY ) ) 795 .loc 1 512 0 796 002c 5F2B cmp r3, #95 797 002e 1BD9 bls .L74 513:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 514:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( ( adrNext->AdrAckCounter % EU868_ADR_ACK_DELAY ) == 1 ) 798 .loc 1 514 0 799 0030 1F21 movs r1, #31 800 0032 0B40 ands r3, r1 801 0034 012B cmp r3, #1 802 0036 17D1 bne .L74 515:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { ARM GAS /tmp/cczfoKrY.s page 25 516:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Decrease the datarate 517:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** getPhy.Attribute = PHY_NEXT_LOWER_TX_DR; 803 .loc 1 517 0 804 0038 01A8 add r0, sp, #4 805 .LVL77: 806 003a 1F33 adds r3, r3, #31 807 003c 0370 strb r3, [r0] 518:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** getPhy.Datarate = datarate; 808 .loc 1 518 0 809 003e 4270 strb r2, [r0, #1] 519:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** getPhy.UplinkDwellTime = adrNext->UplinkDwellTime; 810 .loc 1 519 0 811 0040 A37A ldrb r3, [r4, #10] 812 0042 8370 strb r3, [r0, #2] 520:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** phyParam = RegionEU868GetPhyParam( &getPhy ); 813 .loc 1 520 0 814 0044 FFF7FEFF bl RegionEU868GetPhyParam 815 .LVL78: 521:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** datarate = phyParam.Value; 816 .loc 1 521 0 817 0048 42B2 sxtb r2, r0 818 .LVL79: 522:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 523:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( datarate == EU868_TX_MIN_DATARATE ) 819 .loc 1 523 0 820 004a 002A cmp r2, #0 821 004c 0CD1 bne .L74 822 .LVL80: 524:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 525:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // We must set adrAckReq to false as soon as we reach the lowest datarate 526:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** adrAckReq = false; 527:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( adrNext->UpdateChanMask == true ) 823 .loc 1 527 0 824 004e 2578 ldrb r5, [r4] 825 0050 002D cmp r5, #0 826 0052 09D0 beq .L74 528:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 529:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Re-enable default channels 530:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** ChannelsMask[0] |= LC( 1 ) + LC( 2 ) + LC( 3 ); 827 .loc 1 530 0 828 0054 0949 ldr r1, .L79 829 0056 0B88 ldrh r3, [r1] 830 0058 0720 movs r0, #7 831 005a 0343 orrs r3, r0 832 005c 0B80 strh r3, [r1] 526:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( adrNext->UpdateChanMask == true ) 833 .loc 1 526 0 834 005e 0025 movs r5, #0 835 0060 02E0 b .L74 836 .LVL81: 837 .L78: 498:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** adrAckReq = false; 838 .loc 1 498 0 839 0062 0021 movs r1, #0 840 0064 1960 str r1, [r3] 499:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 841 .loc 1 499 0 ARM GAS /tmp/cczfoKrY.s page 26 842 0066 0025 movs r5, #0 843 .LVL82: 844 .L74: 531:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 532:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 533:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 534:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 535:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 536:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 537:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 538:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** *drOut = datarate; 845 .loc 1 538 0 846 0068 4346 mov r3, r8 847 006a 1A70 strb r2, [r3] 539:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** *txPowOut = txPower; 848 .loc 1 539 0 849 006c 3E70 strb r6, [r7] 540:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return adrAckReq; 541:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 850 .loc 1 541 0 851 006e 2800 movs r0, r5 852 0070 02B0 add sp, sp, #8 853 @ sp needed 854 .LVL83: 855 .LVL84: 856 .LVL85: 857 .LVL86: 858 .LVL87: 859 0072 04BC pop {r2} 860 0074 9046 mov r8, r2 861 0076 F0BD pop {r4, r5, r6, r7, pc} 862 .LVL88: 863 .L77: 510:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 864 .loc 1 510 0 865 0078 0025 movs r5, #0 866 007a D7E7 b .L76 867 .L80: 868 .align 2 869 .L79: 870 007c 00000000 .word .LANCHOR2 871 .cfi_endproc 872 .LFE96: 874 .section .text.RegionEU868ComputeRxWindowParameters,"ax",%progbits 875 .align 1 876 .global RegionEU868ComputeRxWindowParameters 877 .syntax unified 878 .code 16 879 .thumb_func 880 .fpu softvfp 882 RegionEU868ComputeRxWindowParameters: 883 .LFB97: 542:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 543:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** void RegionEU868ComputeRxWindowParameters( int8_t datarate, uint8_t minRxSymbols, uint32_t rxError, 544:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 884 .loc 1 544 0 885 .cfi_startproc ARM GAS /tmp/cczfoKrY.s page 27 886 @ args = 0, pretend = 0, frame = 8 887 @ frame_needed = 0, uses_anonymous_args = 0 888 .LVL89: 889 0000 70B5 push {r4, r5, r6, lr} 890 .LCFI9: 891 .cfi_def_cfa_offset 16 892 .cfi_offset 4, -16 893 .cfi_offset 5, -12 894 .cfi_offset 6, -8 895 .cfi_offset 14, -4 896 0002 86B0 sub sp, sp, #24 897 .LCFI10: 898 .cfi_def_cfa_offset 40 899 0004 0C00 movs r4, r1 900 0006 1500 movs r5, r2 901 0008 1E00 movs r6, r3 902 .LVL90: 545:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** double tSymbol = 0.0; 546:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** uint32_t radioWakeUpTime; 547:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 548:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Get the datarate, perform a boundary check 549:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** rxConfigParams->Datarate = MIN( datarate, EU868_RX_MAX_DATARATE ); 903 .loc 1 549 0 904 000a 021C adds r2, r0, #0 905 .LVL91: 906 000c 0728 cmp r0, #7 907 000e 00DD ble .L82 908 0010 0722 movs r2, #7 909 .L82: 910 0012 53B2 sxtb r3, r2 911 .LVL92: 912 0014 7270 strb r2, [r6, #1] 913 .LVL93: 914 .LBB18: 915 .LBB19: 85:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 916 .loc 1 85 0 917 0016 9900 lsls r1, r3, #2 918 .LVL94: 919 0018 184A ldr r2, .L90 920 001a 8A58 ldr r2, [r1, r2] 921 001c 1849 ldr r1, .L90+4 922 001e 8A42 cmp r2, r1 923 0020 22D0 beq .L88 924 0022 1849 ldr r1, .L90+8 925 0024 8A42 cmp r2, r1 926 0026 1DD0 beq .L85 89:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case 250000: 927 .loc 1 89 0 928 0028 0022 movs r2, #0 929 .L84: 930 .LVL95: 931 .LBE19: 932 .LBE18: 550:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** rxConfigParams->Bandwidth = GetBandwidth( rxConfigParams->Datarate ); 933 .loc 1 550 0 934 002a B270 strb r2, [r6, #2] ARM GAS /tmp/cczfoKrY.s page 28 551:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 552:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( rxConfigParams->Datarate == DR_7 ) 935 .loc 1 552 0 936 002c 072B cmp r3, #7 937 002e 1DD0 beq .L89 553:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { // FSK 554:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** tSymbol = RegionCommonComputeSymbolTimeFsk( DataratesEU868[rxConfigParams->Datarate] ); 555:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 556:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** else 557:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { // LoRa 558:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** tSymbol = RegionCommonComputeSymbolTimeLoRa( DataratesEU868[rxConfigParams->Datarate], Band 938 .loc 1 558 0 939 0030 154A ldr r2, .L90+12 940 0032 D05C ldrb r0, [r2, r3] 941 .LVL96: 942 0034 9B00 lsls r3, r3, #2 943 0036 114A ldr r2, .L90 944 0038 9958 ldr r1, [r3, r2] 945 003a FFF7FEFF bl RegionCommonComputeSymbolTimeLoRa 946 .LVL97: 947 003e 0490 str r0, [sp, #16] 948 0040 0591 str r1, [sp, #20] 949 .LVL98: 950 .L87: 559:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 560:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 561:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** radioWakeUpTime = Radio.GetRadioWakeUpTime(); 951 .loc 1 561 0 952 0042 124B ldr r3, .L90+16 953 0044 5B6E ldr r3, [r3, #100] 954 0046 9847 blx r3 955 .LVL99: 562:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** RegionCommonComputeRxWindowParameters( tSymbol, minRxSymbols, rxError, radioWakeUpTime, &rxConf 956 .loc 1 562 0 957 0048 3300 movs r3, r6 958 004a 0C33 adds r3, r3, #12 959 004c 0293 str r3, [sp, #8] 960 004e 043B subs r3, r3, #4 961 0050 0193 str r3, [sp, #4] 962 0052 0090 str r0, [sp] 963 0054 2B00 movs r3, r5 964 0056 2200 movs r2, r4 965 0058 0498 ldr r0, [sp, #16] 966 005a 0599 ldr r1, [sp, #20] 967 .LVL100: 968 005c FFF7FEFF bl RegionCommonComputeRxWindowParameters 969 .LVL101: 563:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 970 .loc 1 563 0 971 0060 06B0 add sp, sp, #24 972 @ sp needed 973 .LVL102: 974 .LVL103: 975 0062 70BD pop {r4, r5, r6, pc} 976 .LVL104: 977 .L85: 978 .LBB21: ARM GAS /tmp/cczfoKrY.s page 29 979 .LBB20: 93:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 980 .loc 1 93 0 981 0064 0222 movs r2, #2 982 0066 E0E7 b .L84 983 .L88: 91:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case 500000: 984 .loc 1 91 0 985 0068 0122 movs r2, #1 986 006a DEE7 b .L84 987 .LVL105: 988 .L89: 989 .LBE20: 990 .LBE21: 554:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 991 .loc 1 554 0 992 006c 064A ldr r2, .L90+12 993 006e D05C ldrb r0, [r2, r3] 994 .LVL106: 995 0070 FFF7FEFF bl RegionCommonComputeSymbolTimeFsk 996 .LVL107: 997 0074 0490 str r0, [sp, #16] 998 0076 0591 str r1, [sp, #20] 999 .LVL108: 1000 0078 E3E7 b .L87 1001 .L91: 1002 007a C046 .align 2 1003 .L90: 1004 007c 00000000 .word .LANCHOR6 1005 0080 90D00300 .word 250000 1006 0084 20A10700 .word 500000 1007 0088 00000000 .word .LANCHOR7 1008 008c 00000000 .word Radio 1009 .cfi_endproc 1010 .LFE97: 1012 .section .text.RegionEU868RxConfig,"ax",%progbits 1013 .align 1 1014 .global RegionEU868RxConfig 1015 .syntax unified 1016 .code 16 1017 .thumb_func 1018 .fpu softvfp 1020 RegionEU868RxConfig: 1021 .LFB98: 564:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 565:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** bool RegionEU868RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) 566:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 1022 .loc 1 566 0 1023 .cfi_startproc 1024 @ args = 0, pretend = 0, frame = 8 1025 @ frame_needed = 0, uses_anonymous_args = 0 1026 .LVL109: 1027 0000 F0B5 push {r4, r5, r6, r7, lr} 1028 .LCFI11: 1029 .cfi_def_cfa_offset 20 1030 .cfi_offset 4, -20 1031 .cfi_offset 5, -16 ARM GAS /tmp/cczfoKrY.s page 30 1032 .cfi_offset 6, -12 1033 .cfi_offset 7, -8 1034 .cfi_offset 14, -4 1035 0002 8DB0 sub sp, sp, #52 1036 .LCFI12: 1037 .cfi_def_cfa_offset 72 1038 0004 0400 movs r4, r0 1039 0006 0B91 str r1, [sp, #44] 567:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** RadioModems_t modem; 568:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** int8_t dr = rxConfig->Datarate; 1040 .loc 1 568 0 1041 0008 0126 movs r6, #1 1042 000a 8657 ldrsb r6, [r0, r6] 1043 .LVL110: 569:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** uint8_t maxPayload = 0; 570:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** int8_t phyDr = 0; 571:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** uint32_t frequency = rxConfig->Frequency; 1044 .loc 1 571 0 1045 000c 4768 ldr r7, [r0, #4] 1046 .LVL111: 572:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 573:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( Radio.GetStatus( ) != RF_IDLE ) 1047 .loc 1 573 0 1048 000e 334B ldr r3, .L101 1049 0010 DB68 ldr r3, [r3, #12] 1050 0012 9847 blx r3 1051 .LVL112: 1052 0014 0028 cmp r0, #0 1053 0016 5ED1 bne .L99 574:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 575:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return false; 576:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 577:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 578:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( rxConfig->Window == 0 ) 1054 .loc 1 578 0 1055 0018 E37C ldrb r3, [r4, #19] 1056 001a 002B cmp r3, #0 1057 001c 0BD1 bne .L94 579:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 580:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Apply window 1 frequency 581:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** frequency = Channels[rxConfig->Channel].Frequency; 1058 .loc 1 581 0 1059 001e 2178 ldrb r1, [r4] 1060 0020 2F4A ldr r2, .L101+4 1061 0022 4B00 lsls r3, r1, #1 1062 0024 5F18 adds r7, r3, r1 1063 .LVL113: 1064 0026 B800 lsls r0, r7, #2 1065 0028 0700 movs r7, r0 1066 002a 8058 ldr r0, [r0, r2] 1067 .LVL114: 582:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Apply the alternative RX 1 window frequency, if it is available 583:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( Channels[rxConfig->Channel].Rx1Frequency != 0 ) 1068 .loc 1 583 0 1069 002c D219 adds r2, r2, r7 1070 002e 5768 ldr r7, [r2, #4] 1071 0030 002F cmp r7, #0 ARM GAS /tmp/cczfoKrY.s page 31 1072 0032 00D1 bne .L94 581:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Apply the alternative RX 1 window frequency, if it is available 1073 .loc 1 581 0 1074 0034 0700 movs r7, r0 1075 .LVL115: 1076 .L94: 584:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 585:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** frequency = Channels[rxConfig->Channel].Rx1Frequency; 586:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 587:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 588:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 589:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Read the physical datarate from the datarates table 590:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** phyDr = DataratesEU868[dr]; 1077 .loc 1 590 0 1078 0036 2B4B ldr r3, .L101+8 1079 0038 9D57 ldrsb r5, [r3, r6] 1080 .LVL116: 591:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 592:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** Radio.SetChannel( frequency ); 1081 .loc 1 592 0 1082 003a 284B ldr r3, .L101 1083 003c 5B69 ldr r3, [r3, #20] 1084 003e 3800 movs r0, r7 1085 0040 9847 blx r3 1086 .LVL117: 593:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 594:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Radio configuration 595:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( dr == DR_7 ) 1087 .loc 1 595 0 1088 0042 072E cmp r6, #7 1089 0044 26D0 beq .L100 1090 .LVL118: 596:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 597:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** modem = MODEM_FSK; 598:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** Radio.SetRxConfig( modem, 50000, phyDr * 1000, 0, 83333, 5, rxConfig->WindowTimeout, false, 599:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 600:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** else 601:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 602:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** modem = MODEM_LORA; 603:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** Radio.SetRxConfig( modem, rxConfig->Bandwidth, phyDr, 1, 0, 8, rxConfig->WindowTimeout, fal 1091 .loc 1 603 0 1092 0046 254B ldr r3, .L101 1093 0048 1F6A ldr r7, [r3, #32] 1094 .LVL119: 1095 004a A178 ldrb r1, [r4, #2] 1096 004c A37C ldrb r3, [r4, #18] 1097 004e 0993 str r3, [sp, #36] 1098 0050 0123 movs r3, #1 1099 0052 0893 str r3, [sp, #32] 1100 0054 0023 movs r3, #0 1101 0056 0793 str r3, [sp, #28] 1102 0058 0693 str r3, [sp, #24] 1103 005a 0593 str r3, [sp, #20] 1104 005c 0493 str r3, [sp, #16] 1105 005e 0393 str r3, [sp, #12] 1106 0060 A268 ldr r2, [r4, #8] 1107 0062 92B2 uxth r2, r2 ARM GAS /tmp/cczfoKrY.s page 32 1108 0064 0292 str r2, [sp, #8] 1109 0066 0822 movs r2, #8 1110 0068 0192 str r2, [sp, #4] 1111 006a 0093 str r3, [sp] 1112 006c 0133 adds r3, r3, #1 1113 006e 2A00 movs r2, r5 1114 0070 0120 movs r0, #1 1115 0072 B847 blx r7 1116 .LVL120: 602:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** Radio.SetRxConfig( modem, rxConfig->Bandwidth, phyDr, 1, 0, 8, rxConfig->WindowTimeout, fal 1117 .loc 1 602 0 1118 0074 0120 movs r0, #1 1119 .LVL121: 1120 .L96: 604:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 605:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 606:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( rxConfig->RepeaterSupport == true ) 1121 .loc 1 606 0 1122 0076 637C ldrb r3, [r4, #17] 1123 0078 002B cmp r3, #0 1124 007a 29D0 beq .L97 607:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 608:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** maxPayload = MaxPayloadOfDatarateRepeaterEU868[dr]; 1125 .loc 1 608 0 1126 007c 1A4B ldr r3, .L101+12 1127 007e 995D ldrb r1, [r3, r6] 1128 .LVL122: 1129 .L98: 609:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 610:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** else 611:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 612:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** maxPayload = MaxPayloadOfDatarateEU868[dr]; 613:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 614:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 615:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** Radio.SetMaxPayloadLength( modem, maxPayload + LORA_MAC_FRMPAYLOAD_OVERHEAD ); 1130 .loc 1 615 0 1131 0080 164B ldr r3, .L101 1132 0082 DB6D ldr r3, [r3, #92] 1133 0084 0D31 adds r1, r1, #13 1134 .LVL123: 1135 0086 C9B2 uxtb r1, r1 1136 0088 9847 blx r3 1137 .LVL124: 616:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** DBG_PRINTF( "RX on freq %d Hz at DR %d\n\r", frequency, dr ); 617:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 618:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** *datarate = (uint8_t) dr; 1138 .loc 1 618 0 1139 008a 0B9B ldr r3, [sp, #44] 1140 008c 1E70 strb r6, [r3] 619:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return true; 1141 .loc 1 619 0 1142 008e 0120 movs r0, #1 1143 .LVL125: 1144 .L93: 620:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 1145 .loc 1 620 0 1146 0090 0DB0 add sp, sp, #52 ARM GAS /tmp/cczfoKrY.s page 33 1147 @ sp needed 1148 .LVL126: 1149 .LVL127: 1150 0092 F0BD pop {r4, r5, r6, r7, pc} 1151 .LVL128: 1152 .L100: 598:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 1153 .loc 1 598 0 1154 0094 114B ldr r3, .L101 1155 0096 1F6A ldr r7, [r3, #32] 1156 .LVL129: 1157 0098 6B01 lsls r3, r5, #5 1158 009a 5B1B subs r3, r3, r5 1159 009c 9B00 lsls r3, r3, #2 1160 009e 5B19 adds r3, r3, r5 1161 00a0 DA00 lsls r2, r3, #3 1162 00a2 A37C ldrb r3, [r4, #18] 1163 00a4 0993 str r3, [sp, #36] 1164 00a6 0023 movs r3, #0 1165 00a8 0893 str r3, [sp, #32] 1166 00aa 0793 str r3, [sp, #28] 1167 00ac 0693 str r3, [sp, #24] 1168 00ae 0121 movs r1, #1 1169 00b0 0591 str r1, [sp, #20] 1170 00b2 0493 str r3, [sp, #16] 1171 00b4 0393 str r3, [sp, #12] 1172 00b6 A368 ldr r3, [r4, #8] 1173 00b8 9BB2 uxth r3, r3 1174 00ba 0293 str r3, [sp, #8] 1175 00bc 0523 movs r3, #5 1176 00be 0193 str r3, [sp, #4] 1177 00c0 0A4B ldr r3, .L101+16 1178 00c2 0093 str r3, [sp] 1179 00c4 0023 movs r3, #0 1180 00c6 0A49 ldr r1, .L101+20 1181 00c8 0020 movs r0, #0 1182 00ca B847 blx r7 1183 .LVL130: 597:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** Radio.SetRxConfig( modem, 50000, phyDr * 1000, 0, 83333, 5, rxConfig->WindowTimeout, false, 1184 .loc 1 597 0 1185 00cc 0020 movs r0, #0 1186 00ce D2E7 b .L96 1187 .LVL131: 1188 .L97: 612:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 1189 .loc 1 612 0 1190 00d0 084B ldr r3, .L101+24 1191 00d2 995D ldrb r1, [r3, r6] 1192 .LVL132: 1193 00d4 D4E7 b .L98 1194 .LVL133: 1195 .L99: 575:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 1196 .loc 1 575 0 1197 00d6 0020 movs r0, #0 1198 00d8 DAE7 b .L93 1199 .L102: ARM GAS /tmp/cczfoKrY.s page 34 1200 00da C046 .align 2 1201 .L101: 1202 00dc 00000000 .word Radio 1203 00e0 00000000 .word Channels 1204 00e4 00000000 .word .LANCHOR7 1205 00e8 00000000 .word .LANCHOR1 1206 00ec 85450100 .word 83333 1207 00f0 50C30000 .word 50000 1208 00f4 00000000 .word .LANCHOR0 1209 .cfi_endproc 1210 .LFE98: 1212 .section .text.RegionEU868TxConfig,"ax",%progbits 1213 .align 1 1214 .global RegionEU868TxConfig 1215 .syntax unified 1216 .code 16 1217 .thumb_func 1218 .fpu softvfp 1220 RegionEU868TxConfig: 1221 .LFB99: 621:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 622:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** bool RegionEU868TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime_t* txTimeOnAir ) 623:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 1222 .loc 1 623 0 1223 .cfi_startproc 1224 @ args = 0, pretend = 0, frame = 8 1225 @ frame_needed = 0, uses_anonymous_args = 0 1226 .LVL134: 1227 0000 F0B5 push {r4, r5, r6, r7, lr} 1228 .LCFI13: 1229 .cfi_def_cfa_offset 20 1230 .cfi_offset 4, -20 1231 .cfi_offset 5, -16 1232 .cfi_offset 6, -12 1233 .cfi_offset 7, -8 1234 .cfi_offset 14, -4 1235 0002 CE46 mov lr, r9 1236 0004 4746 mov r7, r8 1237 0006 80B5 push {r7, lr} 1238 .LCFI14: 1239 .cfi_def_cfa_offset 28 1240 .cfi_offset 8, -28 1241 .cfi_offset 9, -24 1242 0008 8DB0 sub sp, sp, #52 1243 .LCFI15: 1244 .cfi_def_cfa_offset 80 1245 000a 0400 movs r4, r0 1246 000c 8846 mov r8, r1 1247 000e 9146 mov r9, r2 624:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** RadioModems_t modem; 625:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** int8_t phyDr = DataratesEU868[txConfig->Datarate]; 1248 .loc 1 625 0 1249 0010 0123 movs r3, #1 1250 0012 C356 ldrsb r3, [r0, r3] 1251 0014 3D4A ldr r2, .L112 1252 .LVL135: 1253 0016 D756 ldrsb r7, [r2, r3] ARM GAS /tmp/cczfoKrY.s page 35 1254 .LVL136: 626:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** int8_t txPowerLimited = LimitTxPower( txConfig->TxPower, Bands[Channels[txConfig->Channel].Band 1255 .loc 1 626 0 1256 0018 0220 movs r0, #2 1257 .LVL137: 1258 001a 2056 ldrsb r0, [r4, r0] 1259 001c 2178 ldrb r1, [r4] 1260 .LVL138: 1261 001e 4A00 lsls r2, r1, #1 1262 0020 5218 adds r2, r2, r1 1263 0022 9100 lsls r1, r2, #2 1264 0024 3A4A ldr r2, .L112+4 1265 0026 5218 adds r2, r2, r1 1266 0028 517A ldrb r1, [r2, #9] 1267 002a 0901 lsls r1, r1, #4 1268 002c 394A ldr r2, .L112+8 1269 002e 5218 adds r2, r2, r1 1270 0030 9278 ldrb r2, [r2, #2] 1271 0032 52B2 sxtb r2, r2 1272 .LVL139: 1273 .LBB22: 1274 .LBB23: 102:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 1275 .loc 1 102 0 1276 0034 051C adds r5, r0, #0 1277 0036 9042 cmp r0, r2 1278 0038 00DA bge .L104 1279 003a 151C adds r5, r2, #0 1280 .L104: 1281 003c 6DB2 sxtb r5, r5 1282 .LVL140: 1283 .LBE23: 1284 .LBE22: 1285 .LBB24: 1286 .LBB25: 85:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 1287 .loc 1 85 0 1288 003e 9B00 lsls r3, r3, #2 1289 .LVL141: 1290 0040 354A ldr r2, .L112+12 1291 0042 9B58 ldr r3, [r3, r2] 1292 0044 354A ldr r2, .L112+16 1293 0046 9342 cmp r3, r2 1294 0048 42D0 beq .L110 1295 004a 354A ldr r2, .L112+20 1296 004c 9342 cmp r3, r2 1297 004e 3CD0 beq .L107 89:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case 250000: 1298 .loc 1 89 0 1299 0050 0023 movs r3, #0 1300 0052 0A93 str r3, [sp, #40] 1301 .LVL142: 1302 .L106: 1303 .LBE25: 1304 .LBE24: 627:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** uint32_t bandwidth = GetBandwidth( txConfig->Datarate ); 628:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** int8_t phyTxPower = 0; ARM GAS /tmp/cczfoKrY.s page 36 629:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 630:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Calculate physical TX power 631:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** phyTxPower = RegionCommonComputeTxPower( txPowerLimited, txConfig->MaxEirp, txConfig->AntennaGa 1305 .loc 1 631 0 1306 0054 A268 ldr r2, [r4, #8] 1307 0056 6168 ldr r1, [r4, #4] 1308 0058 2800 movs r0, r5 1309 005a FFF7FEFF bl RegionCommonComputeTxPower 1310 .LVL143: 1311 005e 0B90 str r0, [sp, #44] 1312 .LVL144: 632:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 633:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Setup the radio frequency 634:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** Radio.SetChannel( Channels[txConfig->Channel].Frequency ); 1313 .loc 1 634 0 1314 0060 304B ldr r3, .L112+24 1315 0062 5969 ldr r1, [r3, #20] 1316 0064 2278 ldrb r2, [r4] 1317 0066 5300 lsls r3, r2, #1 1318 0068 9B18 adds r3, r3, r2 1319 006a 9A00 lsls r2, r3, #2 1320 006c 284B ldr r3, .L112+4 1321 006e D058 ldr r0, [r2, r3] 1322 0070 8847 blx r1 1323 .LVL145: 635:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 636:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( txConfig->Datarate == DR_7 ) 1324 .loc 1 636 0 1325 0072 0123 movs r3, #1 1326 0074 E356 ldrsb r3, [r4, r3] 1327 0076 072B cmp r3, #7 1328 0078 2DD0 beq .L111 1329 .LVL146: 637:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { // High Speed FSK channel 638:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** modem = MODEM_FSK; 639:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** Radio.SetTxConfig( modem, phyTxPower, 25000, bandwidth, phyDr * 1000, 0, 5, false, true, 0, 640:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 641:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** else 642:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 643:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** modem = MODEM_LORA; 644:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** Radio.SetTxConfig( modem, phyTxPower, 0, bandwidth, phyDr, 1, 8, false, true, 0, 0, false, 1330 .loc 1 644 0 1331 007a 2A4B ldr r3, .L112+24 1332 007c 5E6A ldr r6, [r3, #36] 1333 007e 2A4B ldr r3, .L112+28 1334 0080 0893 str r3, [sp, #32] 1335 0082 0023 movs r3, #0 1336 0084 0793 str r3, [sp, #28] 1337 0086 0693 str r3, [sp, #24] 1338 0088 0593 str r3, [sp, #20] 1339 008a 0122 movs r2, #1 1340 008c 0492 str r2, [sp, #16] 1341 008e 0393 str r3, [sp, #12] 1342 0090 0833 adds r3, r3, #8 1343 0092 0293 str r3, [sp, #8] 1344 0094 0192 str r2, [sp, #4] 1345 0096 0097 str r7, [sp] ARM GAS /tmp/cczfoKrY.s page 37 1346 0098 0A9B ldr r3, [sp, #40] 1347 009a 0022 movs r2, #0 1348 009c 0B99 ldr r1, [sp, #44] 1349 009e 0120 movs r0, #1 1350 00a0 B047 blx r6 1351 .LVL147: 643:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** Radio.SetTxConfig( modem, phyTxPower, 0, bandwidth, phyDr, 1, 8, false, true, 0, 0, false, 1352 .loc 1 643 0 1353 00a2 0126 movs r6, #1 1354 .LVL148: 1355 .L109: 645:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 646:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** DBG_PRINTF( "TX on freq %d Hz at DR %d\n\r", Channels[txConfig->Channel].Frequency, txConfig->D 647:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 648:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Setup maximum payload lenght of the radio driver 649:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** Radio.SetMaxPayloadLength( modem, txConfig->PktLen ); 1356 .loc 1 649 0 1357 00a4 1F4F ldr r7, .L112+24 1358 .LVL149: 1359 00a6 217B ldrb r1, [r4, #12] 1360 00a8 3000 movs r0, r6 1361 00aa FB6D ldr r3, [r7, #92] 1362 00ac 9847 blx r3 1363 .LVL150: 650:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Get the time-on-air of the next tx frame 651:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** *txTimeOnAir = Radio.TimeOnAir( modem, txConfig->PktLen ); 1364 .loc 1 651 0 1365 00ae FB6A ldr r3, [r7, #44] 1366 00b0 217B ldrb r1, [r4, #12] 1367 00b2 3000 movs r0, r6 1368 00b4 9847 blx r3 1369 .LVL151: 1370 00b6 4B46 mov r3, r9 1371 00b8 1860 str r0, [r3] 652:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 653:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** *txPower = txPowerLimited; 1372 .loc 1 653 0 1373 00ba 4346 mov r3, r8 1374 00bc 1D70 strb r5, [r3] 654:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return true; 655:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 1375 .loc 1 655 0 1376 00be 0120 movs r0, #1 1377 00c0 0DB0 add sp, sp, #52 1378 @ sp needed 1379 .LVL152: 1380 .LVL153: 1381 .LVL154: 1382 .LVL155: 1383 00c2 0CBC pop {r2, r3} 1384 00c4 9046 mov r8, r2 1385 00c6 9946 mov r9, r3 1386 00c8 F0BD pop {r4, r5, r6, r7, pc} 1387 .LVL156: 1388 .L107: 1389 .LBB27: 1390 .LBB26: ARM GAS /tmp/cczfoKrY.s page 38 93:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 1391 .loc 1 93 0 1392 00ca 0223 movs r3, #2 1393 00cc 0A93 str r3, [sp, #40] 1394 .LVL157: 1395 00ce C1E7 b .L106 1396 .LVL158: 1397 .L110: 91:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case 500000: 1398 .loc 1 91 0 1399 00d0 0123 movs r3, #1 1400 .LVL159: 1401 00d2 0A93 str r3, [sp, #40] 1402 .LVL160: 1403 00d4 BEE7 b .L106 1404 .LVL161: 1405 .L111: 1406 .LBE26: 1407 .LBE27: 639:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 1408 .loc 1 639 0 1409 00d6 134B ldr r3, .L112+24 1410 00d8 5E6A ldr r6, [r3, #36] 1411 00da 7B01 lsls r3, r7, #5 1412 00dc DB1B subs r3, r3, r7 1413 00de 9B00 lsls r3, r3, #2 1414 00e0 DB19 adds r3, r3, r7 1415 00e2 DA00 lsls r2, r3, #3 1416 00e4 104B ldr r3, .L112+28 1417 00e6 0893 str r3, [sp, #32] 1418 00e8 0023 movs r3, #0 1419 00ea 0793 str r3, [sp, #28] 1420 00ec 0693 str r3, [sp, #24] 1421 00ee 0593 str r3, [sp, #20] 1422 00f0 0121 movs r1, #1 1423 00f2 0491 str r1, [sp, #16] 1424 00f4 0393 str r3, [sp, #12] 1425 00f6 0431 adds r1, r1, #4 1426 00f8 0291 str r1, [sp, #8] 1427 00fa 0193 str r3, [sp, #4] 1428 00fc 0092 str r2, [sp] 1429 00fe 0A9B ldr r3, [sp, #40] 1430 0100 0A4A ldr r2, .L112+32 1431 0102 0B99 ldr r1, [sp, #44] 1432 0104 0020 movs r0, #0 1433 0106 B047 blx r6 1434 .LVL162: 638:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** Radio.SetTxConfig( modem, phyTxPower, 25000, bandwidth, phyDr * 1000, 0, 5, false, true, 0, 1435 .loc 1 638 0 1436 0108 0026 movs r6, #0 1437 010a CBE7 b .L109 1438 .L113: 1439 .align 2 1440 .L112: 1441 010c 00000000 .word .LANCHOR7 1442 0110 00000000 .word Channels 1443 0114 00000000 .word .LANCHOR4 ARM GAS /tmp/cczfoKrY.s page 39 1444 0118 00000000 .word .LANCHOR6 1445 011c 90D00300 .word 250000 1446 0120 20A10700 .word 500000 1447 0124 00000000 .word Radio 1448 0128 B80B0000 .word 3000 1449 012c A8610000 .word 25000 1450 .cfi_endproc 1451 .LFE99: 1453 .section .text.RegionEU868LinkAdrReq,"ax",%progbits 1454 .align 1 1455 .global RegionEU868LinkAdrReq 1456 .syntax unified 1457 .code 16 1458 .thumb_func 1459 .fpu softvfp 1461 RegionEU868LinkAdrReq: 1462 .LFB100: 656:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 657:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** uint8_t RegionEU868LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, int8_t* txPowOut, uin 658:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 1463 .loc 1 658 0 1464 .cfi_startproc 1465 @ args = 4, pretend = 0, frame = 48 1466 @ frame_needed = 0, uses_anonymous_args = 0 1467 .LVL163: 1468 0000 F0B5 push {r4, r5, r6, r7, lr} 1469 .LCFI16: 1470 .cfi_def_cfa_offset 20 1471 .cfi_offset 4, -20 1472 .cfi_offset 5, -16 1473 .cfi_offset 6, -12 1474 .cfi_offset 7, -8 1475 .cfi_offset 14, -4 1476 0002 D646 mov lr, r10 1477 0004 4F46 mov r7, r9 1478 0006 4646 mov r6, r8 1479 0008 C0B5 push {r6, r7, lr} 1480 .LCFI17: 1481 .cfi_def_cfa_offset 32 1482 .cfi_offset 8, -32 1483 .cfi_offset 9, -28 1484 .cfi_offset 10, -24 1485 000a 8CB0 sub sp, sp, #48 1486 .LCFI18: 1487 .cfi_def_cfa_offset 80 1488 000c 0500 movs r5, r0 1489 000e 8946 mov r9, r1 1490 0010 9046 mov r8, r2 1491 0012 9A46 mov r10, r3 1492 .LVL164: 659:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** uint8_t status = 0x07; 660:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** RegionCommonLinkAdrParams_t linkAdrParams; 661:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** uint8_t nextIndex = 0; 662:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** uint8_t bytesProcessed = 0; 663:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** uint16_t chMask = 0; 1493 .loc 1 663 0 1494 0014 2623 movs r3, #38 ARM GAS /tmp/cczfoKrY.s page 40 1495 .LVL165: 1496 0016 6B44 add r3, r3, sp 1497 0018 0022 movs r2, #0 1498 .LVL166: 1499 001a 1A80 strh r2, [r3] 662:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** uint16_t chMask = 0; 1500 .loc 1 662 0 1501 001c 0024 movs r4, #0 659:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** uint8_t status = 0x07; 1502 .loc 1 659 0 1503 001e 0726 movs r6, #7 664:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** GetPhyParams_t getPhy; 665:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** PhyParam_t phyParam; 666:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** RegionCommonLinkAdrReqVerifyParams_t linkAdrVerifyParams; 667:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 668:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** while( bytesProcessed < linkAdrReq->PayloadSize ) 1504 .loc 1 668 0 1505 0020 29E0 b .L115 1506 .LVL167: 1507 .L152: 1508 .LBB33: 669:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 670:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Get ADR request parameters 671:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** nextIndex = RegionCommonParseLinkAdrReq( &( linkAdrReq->Payload[bytesProcessed] ), &linkAdr 672:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 673:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( nextIndex == 0 ) 674:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; // break loop, since no more request has been found 675:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 676:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Update bytes processed 677:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** bytesProcessed += nextIndex; 678:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 679:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Revert status, as we only check the last ADR request for the channel mask KO 680:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** status = 0x07; 681:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 682:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Setup temporary channels mask 683:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** chMask = linkAdrParams.ChMask; 684:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 685:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Verify channels mask 686:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( ( linkAdrParams.ChMaskCtrl == 0 ) && ( chMask == 0 ) ) 687:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 688:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** status &= 0xFE; // Channel mask KO 689:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 690:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** else if( ( ( linkAdrParams.ChMaskCtrl >= 1 ) && ( linkAdrParams.ChMaskCtrl <= 5 )) || 691:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** ( linkAdrParams.ChMaskCtrl >= 7 ) ) 692:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 693:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // RFU 694:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** status &= 0xFE; // Channel mask KO 695:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 696:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** else 697:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 698:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** for( uint8_t i = 0; i < EU868_MAX_NB_CHANNELS; i++ ) 1509 .loc 1 698 0 1510 0022 0023 movs r3, #0 1511 .LBE33: 680:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 1512 .loc 1 680 0 1513 0024 0726 movs r6, #7 ARM GAS /tmp/cczfoKrY.s page 41 1514 0026 0FE0 b .L119 1515 .LVL168: 1516 .L151: 1517 .LBB34: 699:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 700:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( linkAdrParams.ChMaskCtrl == 6 ) 701:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 702:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( Channels[i].Frequency != 0 ) 1518 .loc 1 702 0 1519 0028 5A00 lsls r2, r3, #1 1520 002a D218 adds r2, r2, r3 1521 002c 9000 lsls r0, r2, #2 1522 002e 444A ldr r2, .L154 1523 0030 8258 ldr r2, [r0, r2] 1524 0032 002A cmp r2, #0 1525 0034 06D0 beq .L121 703:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 704:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** chMask |= 1 << i; 1526 .loc 1 704 0 1527 0036 0127 movs r7, #1 1528 0038 9F40 lsls r7, r7, r3 1529 003a 2620 movs r0, #38 1530 003c 6844 add r0, r0, sp 1531 003e 0288 ldrh r2, [r0] 1532 0040 3A43 orrs r2, r7 1533 0042 0280 strh r2, [r0] 1534 .L121: 698:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 1535 .loc 1 698 0 discriminator 2 1536 0044 0133 adds r3, r3, #1 1537 .LVL169: 1538 0046 DBB2 uxtb r3, r3 1539 .LVL170: 1540 .L119: 698:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 1541 .loc 1 698 0 is_stmt 0 discriminator 1 1542 0048 0F2B cmp r3, #15 1543 004a 14D8 bhi .L115 700:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 1544 .loc 1 700 0 is_stmt 1 1545 004c 0629 cmp r1, #6 1546 004e EBD0 beq .L151 705:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 706:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 707:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** else 708:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 709:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( ( ( chMask & ( 1 << i ) ) != 0 ) && 1547 .loc 1 709 0 1548 0050 2622 movs r2, #38 1549 0052 6A44 add r2, r2, sp 1550 0054 1288 ldrh r2, [r2] 1551 0056 1A41 asrs r2, r2, r3 1552 0058 D207 lsls r2, r2, #31 1553 005a F3D5 bpl .L121 710:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** ( Channels[i].Frequency == 0 ) ) 1554 .loc 1 710 0 discriminator 1 1555 005c 5A00 lsls r2, r3, #1 ARM GAS /tmp/cczfoKrY.s page 42 1556 005e D218 adds r2, r2, r3 1557 0060 9000 lsls r0, r2, #2 1558 0062 374A ldr r2, .L154 1559 0064 8258 ldr r2, [r0, r2] 709:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** ( Channels[i].Frequency == 0 ) ) 1560 .loc 1 709 0 discriminator 1 1561 0066 002A cmp r2, #0 1562 0068 ECD1 bne .L121 711:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** {// Trying to enable an undefined channel 712:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** status &= 0xFE; // Channel mask KO 1563 .loc 1 712 0 1564 006a 0132 adds r2, r2, #1 1565 006c 9643 bics r6, r2 1566 .LVL171: 1567 006e E9E7 b .L121 1568 .LVL172: 1569 .L147: 1570 .LBE34: 688:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 1571 .loc 1 688 0 1572 0070 0626 movs r6, #6 1573 0072 00E0 b .L115 1574 .L148: 694:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 1575 .loc 1 694 0 1576 0074 0626 movs r6, #6 1577 .LVL173: 1578 .L115: 668:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 1579 .loc 1 668 0 1580 0076 2B79 ldrb r3, [r5, #4] 1581 0078 A342 cmp r3, r4 1582 007a 1AD9 bls .L116 671:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 1583 .loc 1 671 0 1584 007c 2B68 ldr r3, [r5] 1585 007e 1819 adds r0, r3, r4 1586 0080 0AA9 add r1, sp, #40 1587 0082 FFF7FEFF bl RegionCommonParseLinkAdrReq 1588 .LVL174: 673:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; // break loop, since no more request has been found 1589 .loc 1 673 0 1590 0086 0028 cmp r0, #0 1591 0088 13D0 beq .L116 677:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 1592 .loc 1 677 0 1593 008a 2418 adds r4, r4, r0 1594 .LVL175: 1595 008c E4B2 uxtb r4, r4 1596 .LVL176: 683:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 1597 .loc 1 683 0 1598 008e 0AAB add r3, sp, #40 1599 0090 9A88 ldrh r2, [r3, #4] 1600 0092 2621 movs r1, #38 1601 0094 6944 add r1, r1, sp 1602 0096 0A80 strh r2, [r1] ARM GAS /tmp/cczfoKrY.s page 43 686:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 1603 .loc 1 686 0 1604 0098 D978 ldrb r1, [r3, #3] 1605 009a 0029 cmp r1, #0 1606 009c 01D1 bne .L117 686:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 1607 .loc 1 686 0 is_stmt 0 discriminator 1 1608 009e 002A cmp r2, #0 1609 00a0 E6D0 beq .L147 1610 .L117: 690:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** ( linkAdrParams.ChMaskCtrl >= 7 ) ) 1611 .loc 1 690 0 is_stmt 1 1612 00a2 4B1E subs r3, r1, #1 1613 00a4 DBB2 uxtb r3, r3 1614 00a6 042B cmp r3, #4 1615 00a8 E4D9 bls .L148 690:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** ( linkAdrParams.ChMaskCtrl >= 7 ) ) 1616 .loc 1 690 0 is_stmt 0 discriminator 1 1617 00aa 0629 cmp r1, #6 1618 00ac B9D9 bls .L152 694:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 1619 .loc 1 694 0 is_stmt 1 1620 00ae 0626 movs r6, #6 1621 00b0 E1E7 b .L115 1622 .LVL177: 1623 .L116: 713:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 714:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 715:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 716:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 717:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 718:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 719:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Get the minimum possible datarate 720:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** getPhy.Attribute = PHY_MIN_TX_DR; 721:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** getPhy.UplinkDwellTime = linkAdrReq->UplinkDwellTime; 722:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** phyParam = RegionEU868GetPhyParam( &getPhy ); 723:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 724:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** linkAdrVerifyParams.Status = status; 1624 .loc 1 724 0 1625 00b2 01A8 add r0, sp, #4 1626 00b4 0670 strb r6, [r0] 725:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** linkAdrVerifyParams.AdrEnabled = linkAdrReq->AdrEnabled; 1627 .loc 1 725 0 1628 00b6 AB79 ldrb r3, [r5, #6] 1629 00b8 4370 strb r3, [r0, #1] 726:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** linkAdrVerifyParams.Datarate = linkAdrParams.Datarate; 1630 .loc 1 726 0 1631 00ba 0AAB add r3, sp, #40 1632 00bc 0122 movs r2, #1 1633 00be 9A56 ldrsb r2, [r3, r2] 1634 00c0 8270 strb r2, [r0, #2] 727:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** linkAdrVerifyParams.TxPower = linkAdrParams.TxPower; 1635 .loc 1 727 0 1636 00c2 0222 movs r2, #2 1637 00c4 9A56 ldrsb r2, [r3, r2] 1638 00c6 C270 strb r2, [r0, #3] 728:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** linkAdrVerifyParams.NbRep = linkAdrParams.NbRep; ARM GAS /tmp/cczfoKrY.s page 44 1639 .loc 1 728 0 1640 00c8 1A78 ldrb r2, [r3] 1641 00ca 0271 strb r2, [r0, #4] 729:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** linkAdrVerifyParams.CurrentDatarate = linkAdrReq->CurrentDatarate; 1642 .loc 1 729 0 1643 00cc 0722 movs r2, #7 1644 00ce AA56 ldrsb r2, [r5, r2] 1645 00d0 4271 strb r2, [r0, #5] 730:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** linkAdrVerifyParams.CurrentTxPower = linkAdrReq->CurrentTxPower; 1646 .loc 1 730 0 1647 00d2 0822 movs r2, #8 1648 00d4 AA56 ldrsb r2, [r5, r2] 1649 00d6 8271 strb r2, [r0, #6] 731:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** linkAdrVerifyParams.CurrentNbRep = linkAdrReq->CurrentNbRep; 1650 .loc 1 731 0 1651 00d8 0922 movs r2, #9 1652 00da AA56 ldrsb r2, [r5, r2] 1653 00dc C271 strb r2, [r0, #7] 732:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** linkAdrVerifyParams.NbChannels = EU868_MAX_NB_CHANNELS; 1654 .loc 1 732 0 1655 00de 1022 movs r2, #16 1656 00e0 0272 strb r2, [r0, #8] 733:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** linkAdrVerifyParams.ChannelsMask = &chMask; 1657 .loc 1 733 0 1658 00e2 1632 adds r2, r2, #22 1659 00e4 6A44 add r2, r2, sp 1660 00e6 C260 str r2, [r0, #12] 734:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** linkAdrVerifyParams.MinDatarate = ( int8_t )phyParam.Value; 1661 .loc 1 734 0 1662 00e8 0022 movs r2, #0 1663 00ea 0274 strb r2, [r0, #16] 735:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** linkAdrVerifyParams.MaxDatarate = EU868_TX_MAX_DATARATE; 1664 .loc 1 735 0 1665 00ec 0732 adds r2, r2, #7 1666 00ee 4274 strb r2, [r0, #17] 736:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** linkAdrVerifyParams.Channels = Channels; 1667 .loc 1 736 0 1668 00f0 1349 ldr r1, .L154 1669 00f2 4161 str r1, [r0, #20] 737:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** linkAdrVerifyParams.MinTxPower = EU868_MIN_TX_POWER; 1670 .loc 1 737 0 1671 00f4 0276 strb r2, [r0, #24] 738:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** linkAdrVerifyParams.MaxTxPower = EU868_MAX_TX_POWER; 1672 .loc 1 738 0 1673 00f6 0022 movs r2, #0 1674 00f8 4276 strb r2, [r0, #25] 739:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 740:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Verify the parameters and update, if necessary 741:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** status = RegionCommonLinkAdrReqVerifyParams( &linkAdrVerifyParams, &linkAdrParams.Datarate, &li 1675 .loc 1 741 0 1676 00fa 2A32 adds r2, r2, #42 1677 00fc 6A44 add r2, r2, sp 1678 00fe 2921 movs r1, #41 1679 0100 6944 add r1, r1, sp 1680 0102 FFF7FEFF bl RegionCommonLinkAdrReqVerifyParams 1681 .LVL178: 742:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** ARM GAS /tmp/cczfoKrY.s page 45 743:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Update channelsMask if everything is correct 744:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( status == 0x07 ) 1682 .loc 1 744 0 1683 0106 0728 cmp r0, #7 1684 0108 13D0 beq .L153 1685 .L146: 745:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 746:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Set the channels mask to a default value 747:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** memset( ChannelsMask, 0, sizeof( ChannelsMask ) ); 748:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Update the channels mask 749:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** ChannelsMask[0] = chMask; 750:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 751:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 752:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Update status variables 753:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** *drOut = linkAdrParams.Datarate; 1686 .loc 1 753 0 1687 010a 0AAB add r3, sp, #40 1688 010c 0122 movs r2, #1 1689 010e 9A56 ldrsb r2, [r3, r2] 1690 0110 4946 mov r1, r9 1691 0112 0A70 strb r2, [r1] 754:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** *txPowOut = linkAdrParams.TxPower; 1692 .loc 1 754 0 1693 0114 0222 movs r2, #2 1694 0116 9A56 ldrsb r2, [r3, r2] 1695 0118 4146 mov r1, r8 1696 011a 0A70 strb r2, [r1] 755:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** *nbRepOut = linkAdrParams.NbRep; 1697 .loc 1 755 0 1698 011c 1B78 ldrb r3, [r3] 1699 011e 5246 mov r2, r10 1700 0120 1370 strb r3, [r2] 756:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** *nbBytesParsed = bytesProcessed; 1701 .loc 1 756 0 1702 0122 149B ldr r3, [sp, #80] 1703 0124 1C70 strb r4, [r3] 757:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 758:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return status; 759:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 1704 .loc 1 759 0 1705 0126 0CB0 add sp, sp, #48 1706 @ sp needed 1707 .LVL179: 1708 .LVL180: 1709 .LVL181: 1710 .LVL182: 1711 .LVL183: 1712 0128 1CBC pop {r2, r3, r4} 1713 012a 9046 mov r8, r2 1714 012c 9946 mov r9, r3 1715 012e A246 mov r10, r4 1716 0130 F0BD pop {r4, r5, r6, r7, pc} 1717 .L126: 1718 .LVL184: 1719 .L153: 749:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 1720 .loc 1 749 0 ARM GAS /tmp/cczfoKrY.s page 46 1721 0132 2623 movs r3, #38 1722 0134 6B44 add r3, r3, sp 1723 0136 1A88 ldrh r2, [r3] 1724 0138 024B ldr r3, .L154+4 1725 013a 1A80 strh r2, [r3] 1726 013c E5E7 b .L146 1727 .L155: 1728 013e C046 .align 2 1729 .L154: 1730 0140 00000000 .word Channels 1731 0144 00000000 .word .LANCHOR2 1732 .cfi_endproc 1733 .LFE100: 1735 .section .text.RegionEU868RxParamSetupReq,"ax",%progbits 1736 .align 1 1737 .global RegionEU868RxParamSetupReq 1738 .syntax unified 1739 .code 16 1740 .thumb_func 1741 .fpu softvfp 1743 RegionEU868RxParamSetupReq: 1744 .LFB101: 760:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 761:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** uint8_t RegionEU868RxParamSetupReq( RxParamSetupReqParams_t* rxParamSetupReq ) 762:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 1745 .loc 1 762 0 1746 .cfi_startproc 1747 @ args = 0, pretend = 0, frame = 0 1748 @ frame_needed = 0, uses_anonymous_args = 0 1749 .LVL185: 1750 0000 70B5 push {r4, r5, r6, lr} 1751 .LCFI19: 1752 .cfi_def_cfa_offset 16 1753 .cfi_offset 4, -16 1754 .cfi_offset 5, -12 1755 .cfi_offset 6, -8 1756 .cfi_offset 14, -4 1757 0002 0500 movs r5, r0 1758 .LVL186: 763:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** uint8_t status = 0x07; 764:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 765:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Verify radio frequency 766:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( Radio.CheckRfFrequency( rxParamSetupReq->Frequency ) == false ) 1759 .loc 1 766 0 1760 0004 0F4B ldr r3, .L161 1761 0006 9B6A ldr r3, [r3, #40] 1762 0008 4068 ldr r0, [r0, #4] 1763 .LVL187: 1764 000a 9847 blx r3 1765 .LVL188: 1766 000c 0028 cmp r0, #0 1767 000e 16D0 beq .L160 763:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** uint8_t status = 0x07; 1768 .loc 1 763 0 1769 0010 0724 movs r4, #7 1770 .L157: 1771 .LVL189: ARM GAS /tmp/cczfoKrY.s page 47 767:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 768:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** status &= 0xFE; // Channel frequency KO 769:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 770:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 771:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Verify datarate 772:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( RegionCommonValueInRange( rxParamSetupReq->Datarate, EU868_RX_MIN_DATARATE, EU868_RX_MAX_DA 1772 .loc 1 772 0 1773 0012 0020 movs r0, #0 1774 0014 2856 ldrsb r0, [r5, r0] 1775 0016 0722 movs r2, #7 1776 0018 0021 movs r1, #0 1777 001a FFF7FEFF bl RegionCommonValueInRange 1778 .LVL190: 1779 001e 0028 cmp r0, #0 1780 0020 01D1 bne .L158 773:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 774:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** status &= 0xFD; // Datarate KO 1781 .loc 1 774 0 1782 0022 0223 movs r3, #2 1783 0024 9C43 bics r4, r3 1784 .LVL191: 1785 .L158: 775:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 776:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 777:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Verify datarate offset 778:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( RegionCommonValueInRange( rxParamSetupReq->DrOffset, EU868_MIN_RX1_DR_OFFSET, EU868_MAX_RX1 1786 .loc 1 778 0 1787 0026 0120 movs r0, #1 1788 0028 2856 ldrsb r0, [r5, r0] 1789 002a 0522 movs r2, #5 1790 002c 0021 movs r1, #0 1791 002e FFF7FEFF bl RegionCommonValueInRange 1792 .LVL192: 1793 0032 0028 cmp r0, #0 1794 0034 01D1 bne .L159 779:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 780:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** status &= 0xFB; // Rx1DrOffset range KO 1795 .loc 1 780 0 1796 0036 0423 movs r3, #4 1797 0038 9C43 bics r4, r3 1798 .LVL193: 1799 .L159: 781:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 782:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 783:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return status; 784:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 1800 .loc 1 784 0 1801 003a 2000 movs r0, r4 1802 @ sp needed 1803 .LVL194: 1804 .LVL195: 1805 003c 70BD pop {r4, r5, r6, pc} 1806 .LVL196: 1807 .L160: 768:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 1808 .loc 1 768 0 1809 003e 0624 movs r4, #6 ARM GAS /tmp/cczfoKrY.s page 48 1810 0040 E7E7 b .L157 1811 .L162: 1812 0042 C046 .align 2 1813 .L161: 1814 0044 00000000 .word Radio 1815 .cfi_endproc 1816 .LFE101: 1818 .section .text.RegionEU868TxParamSetupReq,"ax",%progbits 1819 .align 1 1820 .global RegionEU868TxParamSetupReq 1821 .syntax unified 1822 .code 16 1823 .thumb_func 1824 .fpu softvfp 1826 RegionEU868TxParamSetupReq: 1827 .LFB103: 785:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 786:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** uint8_t RegionEU868NewChannelReq( NewChannelReqParams_t* newChannelReq ) 787:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 788:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** uint8_t status = 0x03; 789:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** ChannelAddParams_t channelAdd; 790:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** ChannelRemoveParams_t channelRemove; 791:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 792:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( newChannelReq->NewChannel->Frequency == 0 ) 793:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 794:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** channelRemove.ChannelId = newChannelReq->ChannelId; 795:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 796:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Remove 797:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( RegionEU868ChannelsRemove( &channelRemove ) == false ) 798:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 799:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** status &= 0xFC; 800:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 801:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 802:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** else 803:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 804:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** channelAdd.NewChannel = newChannelReq->NewChannel; 805:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** channelAdd.ChannelId = newChannelReq->ChannelId; 806:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 807:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** switch( RegionEU868ChannelAdd( &channelAdd ) ) 808:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 809:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case LORAMAC_STATUS_OK: 810:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 811:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 812:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 813:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case LORAMAC_STATUS_FREQUENCY_INVALID: 814:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 815:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** status &= 0xFE; 816:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 817:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 818:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case LORAMAC_STATUS_DATARATE_INVALID: 819:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 820:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** status &= 0xFD; 821:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 822:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 823:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** case LORAMAC_STATUS_FREQ_AND_DR_INVALID: 824:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 825:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** status &= 0xFC; ARM GAS /tmp/cczfoKrY.s page 49 826:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 827:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 828:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** default: 829:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 830:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** status &= 0xFC; 831:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 832:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 833:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 834:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 835:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 836:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return status; 837:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 838:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 839:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** int8_t RegionEU868TxParamSetupReq( TxParamSetupReqParams_t* txParamSetupReq ) 840:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 1828 .loc 1 840 0 1829 .cfi_startproc 1830 @ args = 0, pretend = 0, frame = 0 1831 @ frame_needed = 0, uses_anonymous_args = 0 1832 @ link register save eliminated. 1833 .LVL197: 841:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return -1; 1834 .loc 1 841 0 1835 0000 0120 movs r0, #1 1836 .LVL198: 842:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 1837 .loc 1 842 0 1838 0002 4042 rsbs r0, r0, #0 1839 @ sp needed 1840 0004 7047 bx lr 1841 .cfi_endproc 1842 .LFE103: 1844 .section .text.RegionEU868DlChannelReq,"ax",%progbits 1845 .align 1 1846 .global RegionEU868DlChannelReq 1847 .syntax unified 1848 .code 16 1849 .thumb_func 1850 .fpu softvfp 1852 RegionEU868DlChannelReq: 1853 .LFB104: 843:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 844:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** uint8_t RegionEU868DlChannelReq( DlChannelReqParams_t* dlChannelReq ) 845:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 1854 .loc 1 845 0 1855 .cfi_startproc 1856 @ args = 0, pretend = 0, frame = 8 1857 @ frame_needed = 0, uses_anonymous_args = 0 1858 .LVL199: 1859 0000 10B5 push {r4, lr} 1860 .LCFI20: 1861 .cfi_def_cfa_offset 8 1862 .cfi_offset 4, -8 1863 .cfi_offset 14, -4 1864 0002 82B0 sub sp, sp, #8 1865 .LCFI21: 1866 .cfi_def_cfa_offset 16 ARM GAS /tmp/cczfoKrY.s page 50 1867 0004 0400 movs r4, r0 1868 .LVL200: 846:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** uint8_t status = 0x03; 847:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** uint8_t band = 0; 1869 .loc 1 847 0 1870 0006 6B46 mov r3, sp 1871 0008 D91D adds r1, r3, #7 1872 000a 0023 movs r3, #0 1873 000c 0B70 strb r3, [r1] 848:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 849:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Verify if the frequency is supported 850:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( VerifyTxFreq( dlChannelReq->Rx1Frequency, &band ) == false ) 1874 .loc 1 850 0 1875 000e 4068 ldr r0, [r0, #4] 1876 .LVL201: 1877 0010 FFF7FEFF bl VerifyTxFreq 1878 .LVL202: 1879 0014 0028 cmp r0, #0 1880 0016 0ED0 beq .L168 846:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** uint8_t status = 0x03; 1881 .loc 1 846 0 1882 0018 0320 movs r0, #3 1883 .L165: 1884 .LVL203: 851:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 852:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** status &= 0xFE; 853:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 854:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 855:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Verify if an uplink frequency exists 856:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( Channels[dlChannelReq->ChannelId].Frequency == 0 ) 1885 .loc 1 856 0 1886 001a 2278 ldrb r2, [r4] 1887 001c 5300 lsls r3, r2, #1 1888 001e 9B18 adds r3, r3, r2 1889 0020 9900 lsls r1, r3, #2 1890 0022 0A4B ldr r3, .L170 1891 0024 CB58 ldr r3, [r1, r3] 1892 0026 002B cmp r3, #0 1893 0028 01D1 bne .L166 857:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 858:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** status &= 0xFD; 1894 .loc 1 858 0 1895 002a 0233 adds r3, r3, #2 1896 002c 9843 bics r0, r3 1897 .LVL204: 1898 .L166: 859:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 860:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 861:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Apply Rx1 frequency, if the status is OK 862:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( status == 0x03 ) 1899 .loc 1 862 0 1900 002e 0328 cmp r0, #3 1901 0030 03D0 beq .L169 1902 .LVL205: 1903 .L167: 863:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 864:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** Channels[dlChannelReq->ChannelId].Rx1Frequency = dlChannelReq->Rx1Frequency; ARM GAS /tmp/cczfoKrY.s page 51 865:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 866:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 867:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return status; 868:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 1904 .loc 1 868 0 1905 0032 02B0 add sp, sp, #8 1906 @ sp needed 1907 0034 10BD pop {r4, pc} 1908 .LVL206: 1909 .L168: 852:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 1910 .loc 1 852 0 1911 0036 0220 movs r0, #2 1912 0038 EFE7 b .L165 1913 .LVL207: 1914 .L169: 864:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 1915 .loc 1 864 0 1916 003a 6468 ldr r4, [r4, #4] 1917 .LVL208: 1918 003c 5300 lsls r3, r2, #1 1919 003e 9A18 adds r2, r3, r2 1920 0040 9100 lsls r1, r2, #2 1921 0042 024B ldr r3, .L170 1922 0044 5B18 adds r3, r3, r1 1923 0046 5C60 str r4, [r3, #4] 1924 0048 F3E7 b .L167 1925 .L171: 1926 004a C046 .align 2 1927 .L170: 1928 004c 00000000 .word Channels 1929 .cfi_endproc 1930 .LFE104: 1932 .global __aeabi_uidivmod 1933 .section .text.RegionEU868AlternateDr,"ax",%progbits 1934 .align 1 1935 .global RegionEU868AlternateDr 1936 .syntax unified 1937 .code 16 1938 .thumb_func 1939 .fpu softvfp 1941 RegionEU868AlternateDr: 1942 .LFB105: 869:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 870:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** int8_t RegionEU868AlternateDr( AlternateDrParams_t* alternateDr ) 871:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 1943 .loc 1 871 0 1944 .cfi_startproc 1945 @ args = 0, pretend = 0, frame = 0 1946 @ frame_needed = 0, uses_anonymous_args = 0 1947 .LVL209: 1948 0000 10B5 push {r4, lr} 1949 .LCFI22: 1950 .cfi_def_cfa_offset 8 1951 .cfi_offset 4, -8 1952 .cfi_offset 14, -4 1953 .LVL210: ARM GAS /tmp/cczfoKrY.s page 52 872:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** int8_t datarate = 0; 873:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 874:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( ( alternateDr->NbTrials % 48 ) == 0 ) 1954 .loc 1 874 0 1955 0002 0488 ldrh r4, [r0] 1956 0004 3021 movs r1, #48 1957 0006 2000 movs r0, r4 1958 .LVL211: 1959 0008 FFF7FEFF bl __aeabi_uidivmod 1960 .LVL212: 1961 000c 89B2 uxth r1, r1 1962 000e 0029 cmp r1, #0 1963 0010 0ED0 beq .L174 875:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 876:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** datarate = DR_0; 877:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 878:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** else if( ( alternateDr->NbTrials % 32 ) == 0 ) 1964 .loc 1 878 0 1965 0012 E306 lsls r3, r4, #27 1966 0014 0ED0 beq .L175 879:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 880:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** datarate = DR_1; 881:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 882:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** else if( ( alternateDr->NbTrials % 24 ) == 0 ) 1967 .loc 1 882 0 1968 0016 1821 movs r1, #24 1969 0018 2000 movs r0, r4 1970 001a FFF7FEFF bl __aeabi_uidivmod 1971 .LVL213: 1972 001e 89B2 uxth r1, r1 1973 0020 0029 cmp r1, #0 1974 0022 09D0 beq .L176 883:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 884:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** datarate = DR_2; 885:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 886:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** else if( ( alternateDr->NbTrials % 16 ) == 0 ) 1975 .loc 1 886 0 1976 0024 2307 lsls r3, r4, #28 1977 0026 09D0 beq .L177 887:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 888:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** datarate = DR_3; 889:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 890:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** else if( ( alternateDr->NbTrials % 8 ) == 0 ) 1978 .loc 1 890 0 1979 0028 6307 lsls r3, r4, #29 1980 002a 09D1 bne .L178 891:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 892:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** datarate = DR_4; 1981 .loc 1 892 0 1982 002c 0420 movs r0, #4 1983 002e 00E0 b .L173 1984 .L174: 876:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 1985 .loc 1 876 0 1986 0030 0020 movs r0, #0 1987 .L173: 1988 .LVL214: ARM GAS /tmp/cczfoKrY.s page 53 893:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 894:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** else 895:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 896:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** datarate = DR_5; 897:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 898:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return datarate; 899:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 1989 .loc 1 899 0 1990 @ sp needed 1991 0032 10BD pop {r4, pc} 1992 .LVL215: 1993 .L175: 880:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 1994 .loc 1 880 0 1995 0034 0120 movs r0, #1 1996 0036 FCE7 b .L173 1997 .L176: 884:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 1998 .loc 1 884 0 1999 0038 0220 movs r0, #2 2000 003a FAE7 b .L173 2001 .L177: 888:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 2002 .loc 1 888 0 2003 003c 0320 movs r0, #3 2004 003e F8E7 b .L173 2005 .L178: 896:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 2006 .loc 1 896 0 2007 0040 0520 movs r0, #5 2008 0042 F6E7 b .L173 2009 .cfi_endproc 2010 .LFE105: 2012 .section .text.RegionEU868CalcBackOff,"ax",%progbits 2013 .align 1 2014 .global RegionEU868CalcBackOff 2015 .syntax unified 2016 .code 16 2017 .thumb_func 2018 .fpu softvfp 2020 RegionEU868CalcBackOff: 2021 .LFB106: 900:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 901:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** void RegionEU868CalcBackOff( CalcBackOffParams_t* calcBackOff ) 902:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 2022 .loc 1 902 0 2023 .cfi_startproc 2024 @ args = 0, pretend = 0, frame = 24 2025 @ frame_needed = 0, uses_anonymous_args = 0 2026 .LVL216: 2027 0000 00B5 push {lr} 2028 .LCFI23: 2029 .cfi_def_cfa_offset 4 2030 .cfi_offset 14, -4 2031 0002 87B0 sub sp, sp, #28 2032 .LCFI24: 2033 .cfi_def_cfa_offset 32 ARM GAS /tmp/cczfoKrY.s page 54 903:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** RegionCommonCalcBackOffParams_t calcBackOffParams; 904:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 905:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** calcBackOffParams.Channels = Channels; 2034 .loc 1 905 0 2035 0004 01AB add r3, sp, #4 2036 0006 0A4A ldr r2, .L180 2037 0008 0192 str r2, [sp, #4] 906:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** calcBackOffParams.Bands = Bands; 2038 .loc 1 906 0 2039 000a 0A4A ldr r2, .L180+4 2040 000c 0292 str r2, [sp, #8] 907:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** calcBackOffParams.LastTxIsJoinRequest = calcBackOff->LastTxIsJoinRequest; 2041 .loc 1 907 0 2042 000e 4278 ldrb r2, [r0, #1] 2043 0010 1A72 strb r2, [r3, #8] 908:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** calcBackOffParams.Joined = calcBackOff->Joined; 2044 .loc 1 908 0 2045 0012 0278 ldrb r2, [r0] 2046 0014 5A72 strb r2, [r3, #9] 909:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** calcBackOffParams.DutyCycleEnabled = calcBackOff->DutyCycleEnabled; 2047 .loc 1 909 0 2048 0016 8278 ldrb r2, [r0, #2] 2049 0018 9A72 strb r2, [r3, #10] 910:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** calcBackOffParams.Channel = calcBackOff->Channel; 2050 .loc 1 910 0 2051 001a C278 ldrb r2, [r0, #3] 2052 001c DA72 strb r2, [r3, #11] 911:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** calcBackOffParams.ElapsedTime = calcBackOff->ElapsedTime; 2053 .loc 1 911 0 2054 001e 4268 ldr r2, [r0, #4] 2055 0020 0492 str r2, [sp, #16] 912:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** calcBackOffParams.TxTimeOnAir = calcBackOff->TxTimeOnAir; 2056 .loc 1 912 0 2057 0022 8268 ldr r2, [r0, #8] 2058 0024 0592 str r2, [sp, #20] 913:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 914:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** RegionCommonCalcBackOff( &calcBackOffParams ); 2059 .loc 1 914 0 2060 0026 1800 movs r0, r3 2061 .LVL217: 2062 0028 FFF7FEFF bl RegionCommonCalcBackOff 2063 .LVL218: 915:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 2064 .loc 1 915 0 2065 002c 07B0 add sp, sp, #28 2066 @ sp needed 2067 002e 00BD pop {pc} 2068 .L181: 2069 .align 2 2070 .L180: 2071 0030 00000000 .word Channels 2072 0034 00000000 .word .LANCHOR4 2073 .cfi_endproc 2074 .LFE106: 2076 .section .text.RegionEU868NextChannel,"ax",%progbits 2077 .align 1 2078 .global RegionEU868NextChannel ARM GAS /tmp/cczfoKrY.s page 55 2079 .syntax unified 2080 .code 16 2081 .thumb_func 2082 .fpu softvfp 2084 RegionEU868NextChannel: 2085 .LFB107: 916:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 917:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** bool RegionEU868NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time, 918:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 2086 .loc 1 918 0 2087 .cfi_startproc 2088 @ args = 0, pretend = 0, frame = 32 2089 @ frame_needed = 0, uses_anonymous_args = 0 2090 .LVL219: 2091 0000 F0B5 push {r4, r5, r6, r7, lr} 2092 .LCFI25: 2093 .cfi_def_cfa_offset 20 2094 .cfi_offset 4, -20 2095 .cfi_offset 5, -16 2096 .cfi_offset 6, -12 2097 .cfi_offset 7, -8 2098 .cfi_offset 14, -4 2099 0002 DE46 mov lr, fp 2100 0004 5746 mov r7, r10 2101 0006 4E46 mov r6, r9 2102 0008 4546 mov r5, r8 2103 000a E0B5 push {r5, r6, r7, lr} 2104 .LCFI26: 2105 .cfi_def_cfa_offset 36 2106 .cfi_offset 8, -36 2107 .cfi_offset 9, -32 2108 .cfi_offset 10, -28 2109 .cfi_offset 11, -24 2110 000c 89B0 sub sp, sp, #36 2111 .LCFI27: 2112 .cfi_def_cfa_offset 72 2113 000e 0400 movs r4, r0 2114 0010 0391 str r1, [sp, #12] 2115 0012 9346 mov fp, r2 2116 0014 1E00 movs r6, r3 2117 .LVL220: 919:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** uint8_t nbEnabledChannels = 0; 920:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** uint8_t delayTx = 0; 921:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** uint8_t enabledChannels[EU868_MAX_NB_CHANNELS] = { 0 }; 2118 .loc 1 921 0 2119 0016 1022 movs r2, #16 2120 .LVL221: 2121 0018 0021 movs r1, #0 2122 .LVL222: 2123 001a 04A8 add r0, sp, #16 2124 .LVL223: 2125 001c FFF7FEFF bl memset 2126 .LVL224: 922:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** TimerTime_t nextTxDelay = 0; 923:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 924:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( RegionCommonCountChannels( ChannelsMask, 0, 1 ) == 0 ) 2127 .loc 1 924 0 ARM GAS /tmp/cczfoKrY.s page 56 2128 0020 0122 movs r2, #1 2129 0022 0021 movs r1, #0 2130 0024 4A48 ldr r0, .L199 2131 0026 FFF7FEFF bl RegionCommonCountChannels 2132 .LVL225: 2133 002a 0028 cmp r0, #0 2134 002c 04D1 bne .L183 925:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { // Reactivate default channels 926:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** ChannelsMask[0] |= LC( 1 ) + LC( 2 ) + LC( 3 ); 2135 .loc 1 926 0 2136 002e 484A ldr r2, .L199 2137 0030 1388 ldrh r3, [r2] 2138 0032 0721 movs r1, #7 2139 0034 0B43 orrs r3, r1 2140 0036 1380 strh r3, [r2] 2141 .L183: 927:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 928:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 929:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( nextChanParams->AggrTimeOff <= TimerGetElapsedTime( nextChanParams->LastAggrTx ) ) 2142 .loc 1 929 0 2143 0038 2568 ldr r5, [r4] 2144 003a 6068 ldr r0, [r4, #4] 2145 003c FFF7FEFF bl TimerGetElapsedTime 2146 .LVL226: 2147 0040 8542 cmp r5, r0 2148 0042 65D8 bhi .L184 930:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 931:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Reset Aggregated time off 932:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** *aggregatedTimeOff = 0; 2149 .loc 1 932 0 2150 0044 0023 movs r3, #0 2151 0046 3360 str r3, [r6] 933:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 934:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Update bands Time OFF 935:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** nextTxDelay = RegionCommonUpdateBandTimeOff( nextChanParams->Joined, nextChanParams->DutyCy 2152 .loc 1 935 0 2153 0048 607A ldrb r0, [r4, #9] 2154 004a A17A ldrb r1, [r4, #10] 2155 004c 0533 adds r3, r3, #5 2156 004e 414A ldr r2, .L199+4 2157 0050 FFF7FEFF bl RegionCommonUpdateBandTimeOff 2158 .LVL227: 2159 0054 0290 str r0, [sp, #8] 2160 .LVL228: 936:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 937:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Search how many channels are enabled 938:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** nbEnabledChannels = CountNbOfEnabledChannels( nextChanParams->Joined, nextChanParams->Datar 2161 .loc 1 938 0 2162 0056 637A ldrb r3, [r4, #9] 2163 0058 9A46 mov r10, r3 2164 005a 0823 movs r3, #8 2165 005c E356 ldrsb r3, [r4, r3] 2166 005e 0193 str r3, [sp, #4] 2167 .LVL229: 2168 .LBB39: 2169 .LBB40: 2170 .LBB41: ARM GAS /tmp/cczfoKrY.s page 57 152:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 2171 .loc 1 152 0 2172 0060 0026 movs r6, #0 2173 .LVL230: 2174 0062 0027 movs r7, #0 2175 .LBE41: 150:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 2176 .loc 1 150 0 2177 0064 0023 movs r3, #0 2178 0066 9946 mov r9, r3 149:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** uint8_t delayTransmission = 0; 2179 .loc 1 149 0 2180 0068 9846 mov r8, r3 2181 .LVL231: 2182 .L185: 2183 .LBB43: 152:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 2184 .loc 1 152 0 2185 006a 0F2F cmp r7, #15 2186 006c 49D9 bls .L195 2187 .LVL232: 2188 .LBE43: 2189 .LBE40: 2190 .LBE39: 939:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** ChannelsMask, Channels, 940:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** Bands, enabledChannels, &delayTx ); 941:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 942:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** else 943:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 944:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** delayTx++; 945:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** nextTxDelay = nextChanParams->AggrTimeOff - TimerGetElapsedTime( nextChanParams->LastAggrTx 946:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 947:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 948:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( nbEnabledChannels > 0 ) 2191 .loc 1 948 0 2192 006e 4346 mov r3, r8 2193 0070 002B cmp r3, #0 2194 0072 55D0 beq .L192 949:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 950:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // We found a valid channel 951:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** *channel = enabledChannels[randr( 0, nbEnabledChannels - 1 )]; 2195 .loc 1 951 0 2196 0074 4146 mov r1, r8 2197 0076 0139 subs r1, r1, #1 2198 0078 0020 movs r0, #0 2199 007a FFF7FEFF bl randr 2200 .LVL233: 2201 007e 04AB add r3, sp, #16 2202 0080 1B5C ldrb r3, [r3, r0] 2203 0082 039A ldr r2, [sp, #12] 2204 0084 1370 strb r3, [r2] 952:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 953:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** *time = 0; 2205 .loc 1 953 0 2206 0086 0023 movs r3, #0 2207 0088 5A46 mov r2, fp 2208 008a 1360 str r3, [r2] ARM GAS /tmp/cczfoKrY.s page 58 954:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return true; 2209 .loc 1 954 0 2210 008c 0120 movs r0, #1 2211 008e 53E0 b .L193 2212 .LVL234: 2213 .L197: 2214 .LBB46: 2215 .LBB45: 2216 .LBB44: 2217 .LBB42: 176:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** continue; 2218 .loc 1 176 0 2219 0090 4B46 mov r3, r9 2220 0092 0133 adds r3, r3, #1 2221 0094 DBB2 uxtb r3, r3 2222 0096 9946 mov r9, r3 2223 .LVL235: 2224 .L186: 154:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 2225 .loc 1 154 0 2226 0098 0134 adds r4, r4, #1 2227 .LVL236: 2228 009a E4B2 uxtb r4, r4 2229 .LVL237: 2230 .L190: 2231 009c 0F2C cmp r4, #15 2232 009e 32D8 bhi .L196 156:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 2233 .loc 1 156 0 2234 00a0 7300 lsls r3, r6, #1 2235 00a2 2B4A ldr r2, .L199 2236 00a4 9B5A ldrh r3, [r3, r2] 2237 00a6 2341 asrs r3, r3, r4 2238 00a8 DB07 lsls r3, r3, #31 2239 00aa F5D5 bpl .L186 158:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { // Check if the channel is enabled 2240 .loc 1 158 0 2241 00ac 3919 adds r1, r7, r4 2242 00ae 4B00 lsls r3, r1, #1 2243 00b0 5B18 adds r3, r3, r1 2244 00b2 9900 lsls r1, r3, #2 2245 00b4 284D ldr r5, .L199+8 2246 00b6 4D19 adds r5, r1, r5 2247 00b8 2B68 ldr r3, [r5] 2248 00ba 002B cmp r3, #0 2249 00bc ECD0 beq .L186 162:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 2250 .loc 1 162 0 2251 00be 5346 mov r3, r10 2252 00c0 002B cmp r3, #0 2253 00c2 03D1 bne .L187 164:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 2254 .loc 1 164 0 2255 00c4 0733 adds r3, r3, #7 2256 00c6 2341 asrs r3, r3, r4 2257 00c8 DB07 lsls r3, r3, #31 2258 00ca E5D5 bpl .L186 ARM GAS /tmp/cczfoKrY.s page 59 2259 .L187: 169:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** channels[i + j].DrRange.Fields.Max ) == false ) 2260 .loc 1 169 0 2261 00cc 2A7A ldrb r2, [r5, #8] 2262 00ce 1101 lsls r1, r2, #4 2263 00d0 49B2 sxtb r1, r1 2264 00d2 0911 asrs r1, r1, #4 170:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { // Check if the current channel selection supports the given datarate 2265 .loc 1 170 0 2266 00d4 52B2 sxtb r2, r2 2267 00d6 1211 asrs r2, r2, #4 169:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** channels[i + j].DrRange.Fields.Max ) == false ) 2268 .loc 1 169 0 2269 00d8 0198 ldr r0, [sp, #4] 2270 00da FFF7FEFF bl RegionCommonValueInRange 2271 .LVL238: 2272 00de 0028 cmp r0, #0 2273 00e0 DAD0 beq .L186 174:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { // Check if the band is available for transmission 2274 .loc 1 174 0 2275 00e2 6A7A ldrb r2, [r5, #9] 2276 00e4 1201 lsls r2, r2, #4 2277 00e6 1B4B ldr r3, .L199+4 2278 00e8 9B18 adds r3, r3, r2 2279 00ea DB68 ldr r3, [r3, #12] 2280 00ec 002B cmp r3, #0 2281 00ee CFD1 bne .L197 179:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 2282 .loc 1 179 0 2283 00f0 4346 mov r3, r8 2284 00f2 5A1C adds r2, r3, #1 2285 .LVL239: 2286 00f4 E319 adds r3, r4, r7 2287 00f6 04A9 add r1, sp, #16 2288 .LVL240: 2289 00f8 4046 mov r0, r8 2290 00fa 0B54 strb r3, [r1, r0] 2291 00fc D3B2 uxtb r3, r2 2292 00fe 9846 mov r8, r3 2293 0100 CAE7 b .L186 2294 .LVL241: 2295 .L195: 154:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 2296 .loc 1 154 0 2297 0102 0024 movs r4, #0 2298 0104 CAE7 b .L190 2299 .LVL242: 2300 .L196: 2301 .LBE42: 152:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 2302 .loc 1 152 0 2303 0106 1037 adds r7, r7, #16 2304 .LVL243: 2305 0108 FFB2 uxtb r7, r7 2306 .LVL244: 2307 010a 0136 adds r6, r6, #1 2308 .LVL245: ARM GAS /tmp/cczfoKrY.s page 60 2309 010c F6B2 uxtb r6, r6 2310 .LVL246: 2311 010e ACE7 b .L185 2312 .LVL247: 2313 .L184: 2314 .LBE44: 2315 .LBE45: 2316 .LBE46: 945:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 2317 .loc 1 945 0 2318 0110 2568 ldr r5, [r4] 2319 0112 6068 ldr r0, [r4, #4] 2320 0114 FFF7FEFF bl TimerGetElapsedTime 2321 .LVL248: 2322 0118 2B1A subs r3, r5, r0 2323 011a 0293 str r3, [sp, #8] 2324 .LVL249: 944:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** nextTxDelay = nextChanParams->AggrTimeOff - TimerGetElapsedTime( nextChanParams->LastAggrTx 2325 .loc 1 944 0 2326 011c 0123 movs r3, #1 2327 .LVL250: 2328 011e 9946 mov r9, r3 2329 .LVL251: 2330 .L192: 955:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 956:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** else 957:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 958:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( delayTx > 0 ) 2331 .loc 1 958 0 2332 0120 4B46 mov r3, r9 2333 0122 002B cmp r3, #0 2334 0124 0FD1 bne .L198 959:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 960:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Delay transmission due to AggregatedTimeOff or to a band time off 961:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** *time = nextTxDelay; 962:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return true; 963:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 964:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Datarate not supported by any channel, restore defaults 965:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** ChannelsMask[0] |= LC( 1 ) + LC( 2 ) + LC( 3 ); 2335 .loc 1 965 0 2336 0126 0A4A ldr r2, .L199 2337 0128 1388 ldrh r3, [r2] 2338 012a 0721 movs r1, #7 2339 012c 0B43 orrs r3, r1 2340 012e 1380 strh r3, [r2] 966:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** *time = 0; 2341 .loc 1 966 0 2342 0130 0023 movs r3, #0 2343 0132 5A46 mov r2, fp 2344 0134 1360 str r3, [r2] 967:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return false; 2345 .loc 1 967 0 2346 0136 0020 movs r0, #0 2347 .L193: 2348 .LVL252: 968:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 969:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } ARM GAS /tmp/cczfoKrY.s page 61 2349 .loc 1 969 0 2350 0138 09B0 add sp, sp, #36 2351 @ sp needed 2352 .LVL253: 2353 013a 3CBC pop {r2, r3, r4, r5} 2354 013c 9046 mov r8, r2 2355 013e 9946 mov r9, r3 2356 0140 A246 mov r10, r4 2357 0142 AB46 mov fp, r5 2358 0144 F0BD pop {r4, r5, r6, r7, pc} 2359 .LVL254: 2360 .L198: 961:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return true; 2361 .loc 1 961 0 2362 0146 5B46 mov r3, fp 2363 0148 029A ldr r2, [sp, #8] 2364 014a 1A60 str r2, [r3] 962:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 2365 .loc 1 962 0 2366 014c 0120 movs r0, #1 2367 014e F3E7 b .L193 2368 .L200: 2369 .align 2 2370 .L199: 2371 0150 00000000 .word .LANCHOR2 2372 0154 00000000 .word .LANCHOR4 2373 0158 00000000 .word Channels 2374 .cfi_endproc 2375 .LFE107: 2377 .section .text.RegionEU868ChannelAdd,"ax",%progbits 2378 .align 1 2379 .global RegionEU868ChannelAdd 2380 .syntax unified 2381 .code 16 2382 .thumb_func 2383 .fpu softvfp 2385 RegionEU868ChannelAdd: 2386 .LFB108: 970:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 971:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** LoRaMacStatus_t RegionEU868ChannelAdd( ChannelAddParams_t* channelAdd ) 972:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 2387 .loc 1 972 0 2388 .cfi_startproc 2389 @ args = 0, pretend = 0, frame = 8 2390 @ frame_needed = 0, uses_anonymous_args = 0 2391 .LVL255: 2392 0000 F0B5 push {r4, r5, r6, r7, lr} 2393 .LCFI28: 2394 .cfi_def_cfa_offset 20 2395 .cfi_offset 4, -20 2396 .cfi_offset 5, -16 2397 .cfi_offset 6, -12 2398 .cfi_offset 7, -8 2399 .cfi_offset 14, -4 2400 0002 83B0 sub sp, sp, #12 2401 .LCFI29: 2402 .cfi_def_cfa_offset 32 ARM GAS /tmp/cczfoKrY.s page 62 2403 0004 0400 movs r4, r0 973:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** uint8_t band = 0; 2404 .loc 1 973 0 2405 0006 6B46 mov r3, sp 2406 0008 0022 movs r2, #0 2407 000a DA71 strb r2, [r3, #7] 2408 .LVL256: 974:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** bool drInvalid = false; 975:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** bool freqInvalid = false; 976:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** uint8_t id = channelAdd->ChannelId; 2409 .loc 1 976 0 2410 000c 0579 ldrb r5, [r0, #4] 2411 .LVL257: 977:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 978:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( id >= EU868_MAX_NB_CHANNELS ) 2412 .loc 1 978 0 2413 000e 0F2D cmp r5, #15 2414 0010 66D8 bhi .L211 979:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 980:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return LORAMAC_STATUS_PARAMETER_INVALID; 981:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 982:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 983:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Validate the datarate range 984:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( RegionCommonValueInRange( channelAdd->NewChannel->DrRange.Fields.Min, EU868_TX_MIN_DATARATE 2415 .loc 1 984 0 2416 0012 0368 ldr r3, [r0] 2417 0014 187A ldrb r0, [r3, #8] 2418 .LVL258: 2419 0016 0001 lsls r0, r0, #4 2420 0018 40B2 sxtb r0, r0 2421 001a 0011 asrs r0, r0, #4 2422 001c 0732 adds r2, r2, #7 2423 001e 0021 movs r1, #0 2424 0020 FFF7FEFF bl RegionCommonValueInRange 2425 .LVL259: 2426 0024 0028 cmp r0, #0 2427 0026 2CD0 beq .L212 974:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** bool freqInvalid = false; 2428 .loc 1 974 0 2429 0028 0026 movs r6, #0 2430 .L203: 2431 .LVL260: 985:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 986:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** drInvalid = true; 987:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 988:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( RegionCommonValueInRange( channelAdd->NewChannel->DrRange.Fields.Max, EU868_TX_MIN_DATARATE 2432 .loc 1 988 0 2433 002a 2368 ldr r3, [r4] 2434 002c 0820 movs r0, #8 2435 002e 1856 ldrsb r0, [r3, r0] 2436 0030 0011 asrs r0, r0, #4 2437 0032 0722 movs r2, #7 2438 0034 0021 movs r1, #0 2439 0036 FFF7FEFF bl RegionCommonValueInRange 2440 .LVL261: 2441 003a 0028 cmp r0, #0 2442 003c 00D1 bne .L204 ARM GAS /tmp/cczfoKrY.s page 63 989:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 990:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** drInvalid = true; 2443 .loc 1 990 0 2444 003e 0126 movs r6, #1 2445 .LVL262: 2446 .L204: 991:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 992:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( channelAdd->NewChannel->DrRange.Fields.Min > channelAdd->NewChannel->DrRange.Fields.Max ) 2447 .loc 1 992 0 2448 0040 2368 ldr r3, [r4] 2449 0042 187A ldrb r0, [r3, #8] 2450 0044 0301 lsls r3, r0, #4 2451 0046 5BB2 sxtb r3, r3 2452 0048 1B11 asrs r3, r3, #4 2453 004a 40B2 sxtb r0, r0 2454 004c 0011 asrs r0, r0, #4 2455 004e 8342 cmp r3, r0 2456 0050 00DD ble .L205 993:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 994:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** drInvalid = true; 2457 .loc 1 994 0 2458 0052 0126 movs r6, #1 2459 .LVL263: 2460 .L205: 995:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 996:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 997:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Default channels don't accept all values 998:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( id < EU868_NUMB_DEFAULT_CHANNELS ) 2461 .loc 1 998 0 2462 0054 022D cmp r5, #2 2463 0056 18D8 bhi .L215 999:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 1000:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Validate the datarate range for min: must be DR_0 1001:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( channelAdd->NewChannel->DrRange.Fields.Min > DR_0 ) 2464 .loc 1 1001 0 2465 0058 002B cmp r3, #0 2466 005a 00DD ble .L207 1002:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 1003:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** drInvalid = true; 2467 .loc 1 1003 0 2468 005c 0126 movs r6, #1 2469 .LVL264: 2470 .L207: 1004:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 1005:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Validate the datarate range for max: must be DR_5 <= Max <= TX_MAX_DATARATE 1006:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( RegionCommonValueInRange( channelAdd->NewChannel->DrRange.Fields.Max, DR_5, EU868_TX_MA 2471 .loc 1 1006 0 2472 005e 0722 movs r2, #7 2473 0060 0521 movs r1, #5 2474 0062 FFF7FEFF bl RegionCommonValueInRange 2475 .LVL265: 2476 0066 0028 cmp r0, #0 2477 0068 00D1 bne .L208 1007:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 1008:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** drInvalid = true; 2478 .loc 1 1008 0 2479 006a 0126 movs r6, #1 ARM GAS /tmp/cczfoKrY.s page 64 2480 .LVL266: 2481 .L208: 1009:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 1010:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // We are not allowed to change the frequency 1011:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( channelAdd->NewChannel->Frequency != Channels[id].Frequency ) 2482 .loc 1 1011 0 2483 006c 2368 ldr r3, [r4] 2484 006e 1968 ldr r1, [r3] 2485 0070 6B00 lsls r3, r5, #1 2486 0072 5B19 adds r3, r3, r5 2487 0074 9A00 lsls r2, r3, #2 2488 0076 1F4B ldr r3, .L225 2489 0078 D358 ldr r3, [r2, r3] 2490 007a 9942 cmp r1, r3 2491 007c 03D0 beq .L223 1012:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 1013:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** freqInvalid = true; 2492 .loc 1 1013 0 2493 007e 0127 movs r7, #1 2494 0080 04E0 b .L206 2495 .LVL267: 2496 .L212: 986:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 2497 .loc 1 986 0 2498 0082 0126 movs r6, #1 2499 0084 D1E7 b .L203 2500 .LVL268: 2501 .L223: 975:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** uint8_t id = channelAdd->ChannelId; 2502 .loc 1 975 0 2503 0086 0027 movs r7, #0 2504 0088 00E0 b .L206 2505 .L215: 2506 008a 0027 movs r7, #0 2507 .L206: 2508 .LVL269: 1014:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 1015:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 1016:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 1017:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Check frequency 1018:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( freqInvalid == false ) 2509 .loc 1 1018 0 2510 008c 002F cmp r7, #0 2511 008e 1DD0 beq .L224 2512 .LVL270: 2513 .L209: 1019:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 1020:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( VerifyTxFreq( channelAdd->NewChannel->Frequency, &band ) == false ) 1021:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 1022:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** freqInvalid = true; 1023:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 1024:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 1025:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 1026:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Check status 1027:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( ( drInvalid == true ) && ( freqInvalid == true ) ) 2514 .loc 1 1027 0 2515 0090 002E cmp r6, #0 ARM GAS /tmp/cczfoKrY.s page 65 2516 0092 01D0 beq .L210 2517 .loc 1 1027 0 is_stmt 0 discriminator 1 2518 0094 002F cmp r7, #0 2519 0096 26D1 bne .L220 2520 .L210: 1028:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 1029:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return LORAMAC_STATUS_FREQ_AND_DR_INVALID; 1030:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 1031:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( drInvalid == true ) 2521 .loc 1 1031 0 is_stmt 1 2522 0098 002E cmp r6, #0 2523 009a 26D1 bne .L221 1032:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 1033:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return LORAMAC_STATUS_DATARATE_INVALID; 1034:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 1035:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( freqInvalid == true ) 2524 .loc 1 1035 0 2525 009c 002F cmp r7, #0 2526 009e 26D1 bne .L222 1036:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 1037:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return LORAMAC_STATUS_FREQUENCY_INVALID; 1038:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 1039:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 1040:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** memcpy( &(Channels[id]), channelAdd->NewChannel, sizeof( Channels[id] ) ); 2527 .loc 1 1040 0 2528 00a0 6B00 lsls r3, r5, #1 2529 00a2 5B19 adds r3, r3, r5 2530 00a4 9E00 lsls r6, r3, #2 2531 .LVL271: 2532 00a6 134B ldr r3, .L225 2533 00a8 F618 adds r6, r6, r3 2534 00aa 2168 ldr r1, [r4] 2535 00ac 0C22 movs r2, #12 2536 00ae 3000 movs r0, r6 2537 00b0 FFF7FEFF bl memcpy 2538 .LVL272: 1041:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** Channels[id].Band = band; 2539 .loc 1 1041 0 2540 00b4 6B46 mov r3, sp 2541 00b6 0733 adds r3, r3, #7 2542 00b8 1B78 ldrb r3, [r3] 2543 00ba 7372 strb r3, [r6, #9] 1042:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** ChannelsMask[0] |= ( 1 << id ); 2544 .loc 1 1042 0 2545 00bc 0122 movs r2, #1 2546 00be AA40 lsls r2, r2, r5 2547 00c0 0D49 ldr r1, .L225+4 2548 00c2 0B88 ldrh r3, [r1] 2549 00c4 1343 orrs r3, r2 2550 00c6 0B80 strh r3, [r1] 1043:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return LORAMAC_STATUS_OK; 2551 .loc 1 1043 0 2552 00c8 0020 movs r0, #0 2553 00ca 0AE0 b .L202 2554 .LVL273: 2555 .L224: 1020:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { ARM GAS /tmp/cczfoKrY.s page 66 2556 .loc 1 1020 0 2557 00cc 2368 ldr r3, [r4] 2558 00ce 1868 ldr r0, [r3] 2559 00d0 6B46 mov r3, sp 2560 00d2 D91D adds r1, r3, #7 2561 00d4 FFF7FEFF bl VerifyTxFreq 2562 .LVL274: 2563 00d8 0028 cmp r0, #0 2564 00da D9D1 bne .L209 1022:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 2565 .loc 1 1022 0 2566 00dc 0137 adds r7, r7, #1 2567 .LVL275: 2568 00de D7E7 b .L209 2569 .LVL276: 2570 .L211: 980:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 2571 .loc 1 980 0 2572 00e0 0320 movs r0, #3 2573 .LVL277: 2574 .L202: 1044:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 2575 .loc 1 1044 0 2576 00e2 03B0 add sp, sp, #12 2577 @ sp needed 2578 .LVL278: 2579 .LVL279: 2580 00e4 F0BD pop {r4, r5, r6, r7, pc} 2581 .LVL280: 2582 .L220: 1029:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 2583 .loc 1 1029 0 2584 00e6 0620 movs r0, #6 2585 00e8 FBE7 b .L202 2586 .L221: 1033:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 2587 .loc 1 1033 0 2588 00ea 0520 movs r0, #5 2589 00ec F9E7 b .L202 2590 .L222: 1037:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 2591 .loc 1 1037 0 2592 00ee 0420 movs r0, #4 2593 00f0 F7E7 b .L202 2594 .L226: 2595 00f2 C046 .align 2 2596 .L225: 2597 00f4 00000000 .word Channels 2598 00f8 00000000 .word .LANCHOR2 2599 .cfi_endproc 2600 .LFE108: 2602 .section .text.RegionEU868ChannelsRemove,"ax",%progbits 2603 .align 1 2604 .global RegionEU868ChannelsRemove 2605 .syntax unified 2606 .code 16 2607 .thumb_func ARM GAS /tmp/cczfoKrY.s page 67 2608 .fpu softvfp 2610 RegionEU868ChannelsRemove: 2611 .LFB109: 1045:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 1046:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** bool RegionEU868ChannelsRemove( ChannelRemoveParams_t* channelRemove ) 1047:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 2612 .loc 1 1047 0 2613 .cfi_startproc 2614 @ args = 0, pretend = 0, frame = 0 2615 @ frame_needed = 0, uses_anonymous_args = 0 2616 .LVL281: 2617 0000 10B5 push {r4, lr} 2618 .LCFI30: 2619 .cfi_def_cfa_offset 8 2620 .cfi_offset 4, -8 2621 .cfi_offset 14, -4 1048:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** uint8_t id = channelRemove->ChannelId; 2622 .loc 1 1048 0 2623 0002 0478 ldrb r4, [r0] 2624 .LVL282: 1049:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 1050:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( id < EU868_NUMB_DEFAULT_CHANNELS ) 2625 .loc 1 1050 0 2626 0004 022C cmp r4, #2 2627 0006 01D8 bhi .L230 1051:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 1052:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return false; 2628 .loc 1 1052 0 2629 0008 0020 movs r0, #0 2630 .LVL283: 2631 .L228: 1053:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 1054:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 1055:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Remove the channel from the list of channels 1056:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** Channels[id] = ( ChannelParams_t ){ 0, 0, { 0 }, 0 }; 1057:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 1058:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return RegionCommonChanDisable( ChannelsMask, id, EU868_MAX_NB_CHANNELS ); 1059:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 2632 .loc 1 1059 0 2633 @ sp needed 2634 .LVL284: 2635 000a 10BD pop {r4, pc} 2636 .LVL285: 2637 .L230: 1056:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 2638 .loc 1 1056 0 2639 000c 6300 lsls r3, r4, #1 2640 000e 1B19 adds r3, r3, r4 2641 0010 9A00 lsls r2, r3, #2 2642 0012 0648 ldr r0, .L231 2643 .LVL286: 2644 0014 8018 adds r0, r0, r2 2645 0016 0C22 movs r2, #12 2646 0018 0021 movs r1, #0 2647 001a FFF7FEFF bl memset 2648 .LVL287: 1058:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } ARM GAS /tmp/cczfoKrY.s page 68 2649 .loc 1 1058 0 2650 001e 1022 movs r2, #16 2651 0020 2100 movs r1, r4 2652 0022 0348 ldr r0, .L231+4 2653 0024 FFF7FEFF bl RegionCommonChanDisable 2654 .LVL288: 2655 0028 EFE7 b .L228 2656 .L232: 2657 002a C046 .align 2 2658 .L231: 2659 002c 00000000 .word Channels 2660 0030 00000000 .word .LANCHOR2 2661 .cfi_endproc 2662 .LFE109: 2664 .section .text.RegionEU868ApplyCFList,"ax",%progbits 2665 .align 1 2666 .global RegionEU868ApplyCFList 2667 .syntax unified 2668 .code 16 2669 .thumb_func 2670 .fpu softvfp 2672 RegionEU868ApplyCFList: 2673 .LFB94: 411:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** ChannelParams_t newChannel; 2674 .loc 1 411 0 2675 .cfi_startproc 2676 @ args = 0, pretend = 0, frame = 24 2677 @ frame_needed = 0, uses_anonymous_args = 0 2678 .LVL289: 2679 0000 70B5 push {r4, r5, r6, lr} 2680 .LCFI31: 2681 .cfi_def_cfa_offset 16 2682 .cfi_offset 4, -16 2683 .cfi_offset 5, -12 2684 .cfi_offset 6, -8 2685 .cfi_offset 14, -4 2686 0002 86B0 sub sp, sp, #24 2687 .LCFI32: 2688 .cfi_def_cfa_offset 40 2689 0004 0600 movs r6, r0 417:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 2690 .loc 1 417 0 2691 0006 03AB add r3, sp, #12 2692 0008 5022 movs r2, #80 2693 000a 1A72 strb r2, [r3, #8] 420:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 2694 .loc 1 420 0 2695 000c 0379 ldrb r3, [r0, #4] 2696 000e 102B cmp r3, #16 2697 0010 01D0 beq .L242 2698 .LVL290: 2699 .L233: 461:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 2700 .loc 1 461 0 2701 0012 06B0 add sp, sp, #24 2702 @ sp needed 2703 .LVL291: ARM GAS /tmp/cczfoKrY.s page 69 2704 0014 70BD pop {r4, r5, r6, pc} 2705 .LVL292: 2706 .L242: 2707 .LBB47: 426:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 2708 .loc 1 426 0 2709 0016 0324 movs r4, #3 2710 0018 0025 movs r5, #0 2711 001a 19E0 b .L235 2712 .LVL293: 2713 .L243: 431:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 1] << 8 ); 2714 .loc 1 431 0 2715 001c 3268 ldr r2, [r6] 2716 001e 535D ldrb r3, [r2, r5] 2717 0020 0393 str r3, [sp, #12] 432:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 2] << 16 ); 2718 .loc 1 432 0 2719 0022 5219 adds r2, r2, r5 2720 0024 5178 ldrb r1, [r2, #1] 2721 0026 0902 lsls r1, r1, #8 2722 0028 0B43 orrs r3, r1 2723 002a 0393 str r3, [sp, #12] 433:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** newChannel.Frequency *= 100; 2724 .loc 1 433 0 2725 002c 9278 ldrb r2, [r2, #2] 2726 002e 1204 lsls r2, r2, #16 2727 0030 1343 orrs r3, r2 434:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 2728 .loc 1 434 0 2729 0032 6422 movs r2, #100 2730 0034 5343 muls r3, r2 2731 0036 0393 str r3, [sp, #12] 437:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 2732 .loc 1 437 0 2733 0038 0023 movs r3, #0 2734 003a 0493 str r3, [sp, #16] 2735 003c 11E0 b .L237 2736 .L238: 456:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 2737 .loc 1 456 0 2738 003e 6B46 mov r3, sp 2739 0040 1C70 strb r4, [r3] 458:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 2740 .loc 1 458 0 2741 0042 6846 mov r0, sp 2742 0044 FFF7FEFF bl RegionEU868ChannelsRemove 2743 .LVL294: 2744 .L239: 426:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 2745 .loc 1 426 0 discriminator 2 2746 0048 0335 adds r5, r5, #3 2747 .LVL295: 2748 004a EDB2 uxtb r5, r5 2749 .LVL296: 2750 004c 0134 adds r4, r4, #1 2751 .LVL297: ARM GAS /tmp/cczfoKrY.s page 70 2752 004e E4B2 uxtb r4, r4 2753 .LVL298: 2754 .L235: 426:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 2755 .loc 1 426 0 is_stmt 0 discriminator 1 2756 0050 0F2C cmp r4, #15 2757 0052 DED8 bhi .L233 428:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 2758 .loc 1 428 0 is_stmt 1 2759 0054 072C cmp r4, #7 2760 0056 E1D9 bls .L243 441:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** newChannel.DrRange.Value = 0; 2761 .loc 1 441 0 2762 0058 03AA add r2, sp, #12 2763 005a 0023 movs r3, #0 2764 005c 0393 str r3, [sp, #12] 442:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** newChannel.Rx1Frequency = 0; 2765 .loc 1 442 0 2766 005e 1372 strb r3, [r2, #8] 443:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 2767 .loc 1 443 0 2768 0060 0493 str r3, [sp, #16] 2769 .L237: 446:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 2770 .loc 1 446 0 2771 0062 039B ldr r3, [sp, #12] 2772 0064 002B cmp r3, #0 2773 0066 EAD0 beq .L238 448:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** channelAdd.ChannelId = chanIdx; 2774 .loc 1 448 0 2775 0068 01A8 add r0, sp, #4 2776 006a 03AB add r3, sp, #12 2777 006c 0193 str r3, [sp, #4] 449:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 2778 .loc 1 449 0 2779 006e 0471 strb r4, [r0, #4] 452:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 2780 .loc 1 452 0 2781 0070 FFF7FEFF bl RegionEU868ChannelAdd 2782 .LVL299: 2783 0074 E8E7 b .L239 2784 .LBE47: 2785 .cfi_endproc 2786 .LFE94: 2788 .section .text.RegionEU868NewChannelReq,"ax",%progbits 2789 .align 1 2790 .global RegionEU868NewChannelReq 2791 .syntax unified 2792 .code 16 2793 .thumb_func 2794 .fpu softvfp 2796 RegionEU868NewChannelReq: 2797 .LFB102: 787:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** uint8_t status = 0x03; 2798 .loc 1 787 0 2799 .cfi_startproc 2800 @ args = 0, pretend = 0, frame = 16 ARM GAS /tmp/cczfoKrY.s page 71 2801 @ frame_needed = 0, uses_anonymous_args = 0 2802 .LVL300: 2803 0000 00B5 push {lr} 2804 .LCFI33: 2805 .cfi_def_cfa_offset 4 2806 .cfi_offset 14, -4 2807 0002 85B0 sub sp, sp, #20 2808 .LCFI34: 2809 .cfi_def_cfa_offset 24 2810 .LVL301: 792:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 2811 .loc 1 792 0 2812 0004 0368 ldr r3, [r0] 2813 0006 1A68 ldr r2, [r3] 2814 0008 002A cmp r2, #0 2815 000a 0BD1 bne .L245 794:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 2816 .loc 1 794 0 2817 000c 0379 ldrb r3, [r0, #4] 2818 000e 01A8 add r0, sp, #4 2819 .LVL302: 2820 0010 0370 strb r3, [r0] 797:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 2821 .loc 1 797 0 2822 0012 FFF7FEFF bl RegionEU868ChannelsRemove 2823 .LVL303: 2824 0016 0028 cmp r0, #0 2825 0018 02D1 bne .L254 799:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 2826 .loc 1 799 0 2827 001a 0020 movs r0, #0 2828 .LVL304: 2829 .L246: 837:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 2830 .loc 1 837 0 2831 001c 05B0 add sp, sp, #20 2832 @ sp needed 2833 001e 00BD pop {pc} 2834 .LVL305: 2835 .L254: 788:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** ChannelAddParams_t channelAdd; 2836 .loc 1 788 0 2837 0020 0320 movs r0, #3 2838 0022 FBE7 b .L246 2839 .LVL306: 2840 .L245: 804:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** channelAdd.ChannelId = newChannelReq->ChannelId; 2841 .loc 1 804 0 2842 0024 02AA add r2, sp, #8 2843 0026 0293 str r3, [sp, #8] 805:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 2844 .loc 1 805 0 2845 0028 0379 ldrb r3, [r0, #4] 2846 002a 1371 strb r3, [r2, #4] 807:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 2847 .loc 1 807 0 2848 002c 1000 movs r0, r2 ARM GAS /tmp/cczfoKrY.s page 72 2849 .LVL307: 2850 002e FFF7FEFF bl RegionEU868ChannelAdd 2851 .LVL308: 2852 0032 0428 cmp r0, #4 2853 0034 0ED0 beq .L253 2854 0036 05D9 bls .L255 2855 0038 0528 cmp r0, #5 2856 003a 07D0 beq .L250 2857 003c 0628 cmp r0, #6 2858 003e 07D1 bne .L247 2859 .LVL309: 825:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 2860 .loc 1 825 0 2861 0040 0020 movs r0, #0 826:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 2862 .loc 1 826 0 2863 0042 EBE7 b .L246 2864 .LVL310: 2865 .L255: 807:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 2866 .loc 1 807 0 2867 0044 0028 cmp r0, #0 2868 0046 03D1 bne .L247 788:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** ChannelAddParams_t channelAdd; 2869 .loc 1 788 0 2870 0048 0320 movs r0, #3 2871 004a E7E7 b .L246 2872 .L250: 2873 .LVL311: 820:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 2874 .loc 1 820 0 2875 004c 0120 movs r0, #1 821:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 2876 .loc 1 821 0 2877 004e E5E7 b .L246 2878 .LVL312: 2879 .L247: 830:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 2880 .loc 1 830 0 2881 0050 0020 movs r0, #0 831:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 2882 .loc 1 831 0 2883 0052 E3E7 b .L246 2884 .LVL313: 2885 .L253: 815:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** break; 2886 .loc 1 815 0 2887 0054 0220 movs r0, #2 2888 0056 E1E7 b .L246 2889 .cfi_endproc 2890 .LFE102: 2892 .section .text.RegionEU868SetContinuousWave,"ax",%progbits 2893 .align 1 2894 .global RegionEU868SetContinuousWave 2895 .syntax unified 2896 .code 16 2897 .thumb_func ARM GAS /tmp/cczfoKrY.s page 73 2898 .fpu softvfp 2900 RegionEU868SetContinuousWave: 2901 .LFB110: 1060:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 1061:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** void RegionEU868SetContinuousWave( ContinuousWaveParams_t* continuousWave ) 1062:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 2902 .loc 1 1062 0 2903 .cfi_startproc 2904 @ args = 0, pretend = 0, frame = 0 2905 @ frame_needed = 0, uses_anonymous_args = 0 2906 .LVL314: 2907 0000 70B5 push {r4, r5, r6, lr} 2908 .LCFI35: 2909 .cfi_def_cfa_offset 16 2910 .cfi_offset 4, -16 2911 .cfi_offset 5, -12 2912 .cfi_offset 6, -8 2913 .cfi_offset 14, -4 2914 0002 0400 movs r4, r0 1063:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** int8_t txPowerLimited = LimitTxPower( continuousWave->TxPower, Bands[Channels[continuousWave->C 2915 .loc 1 1063 0 2916 0004 0225 movs r5, #2 2917 0006 4557 ldrsb r5, [r0, r5] 2918 0008 0278 ldrb r2, [r0] 2919 000a 5300 lsls r3, r2, #1 2920 000c 9B18 adds r3, r3, r2 2921 000e 9900 lsls r1, r3, #2 2922 0010 0E4B ldr r3, .L258 2923 0012 5B18 adds r3, r3, r1 2924 0014 597A ldrb r1, [r3, #9] 2925 0016 0901 lsls r1, r1, #4 2926 0018 0D4B ldr r3, .L258+4 2927 001a 5B18 adds r3, r3, r1 2928 001c 9B78 ldrb r3, [r3, #2] 2929 001e 5BB2 sxtb r3, r3 2930 .LVL315: 2931 .LBB48: 2932 .LBB49: 102:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 2933 .loc 1 102 0 2934 0020 281C adds r0, r5, #0 2935 .LVL316: 2936 0022 9D42 cmp r5, r3 2937 0024 00DA bge .L257 2938 0026 181C adds r0, r3, #0 2939 .L257: 2940 0028 40B2 sxtb r0, r0 2941 .LVL317: 2942 .LBE49: 2943 .LBE48: 1064:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** int8_t phyTxPower = 0; 1065:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** uint32_t frequency = Channels[continuousWave->Channel].Frequency; 2944 .loc 1 1065 0 2945 002a 5300 lsls r3, r2, #1 2946 002c 9B18 adds r3, r3, r2 2947 002e 9A00 lsls r2, r3, #2 2948 0030 064B ldr r3, .L258 ARM GAS /tmp/cczfoKrY.s page 74 2949 0032 D558 ldr r5, [r2, r3] 2950 .LVL318: 1066:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 1067:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** // Calculate physical TX power 1068:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** phyTxPower = RegionCommonComputeTxPower( txPowerLimited, continuousWave->MaxEirp, continuousWav 2951 .loc 1 1068 0 2952 0034 A268 ldr r2, [r4, #8] 2953 0036 6168 ldr r1, [r4, #4] 2954 0038 FFF7FEFF bl RegionCommonComputeTxPower 2955 .LVL319: 2956 003c 0100 movs r1, r0 2957 .LVL320: 1069:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 1070:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** Radio.SetTxContinuousWave( frequency, phyTxPower, continuousWave->Timeout ); 2958 .loc 1 1070 0 2959 003e 054B ldr r3, .L258+8 2960 0040 5B6C ldr r3, [r3, #68] 2961 0042 A289 ldrh r2, [r4, #12] 2962 0044 2800 movs r0, r5 2963 0046 9847 blx r3 2964 .LVL321: 1071:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 2965 .loc 1 1071 0 2966 @ sp needed 2967 .LVL322: 2968 .LVL323: 2969 0048 70BD pop {r4, r5, r6, pc} 2970 .L259: 2971 004a C046 .align 2 2972 .L258: 2973 004c 00000000 .word Channels 2974 0050 00000000 .word .LANCHOR4 2975 0054 00000000 .word Radio 2976 .cfi_endproc 2977 .LFE110: 2979 .section .text.RegionEU868ApplyDrOffset,"ax",%progbits 2980 .align 1 2981 .global RegionEU868ApplyDrOffset 2982 .syntax unified 2983 .code 16 2984 .thumb_func 2985 .fpu softvfp 2987 RegionEU868ApplyDrOffset: 2988 .LFB111: 1072:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 1073:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** uint8_t RegionEU868ApplyDrOffset( uint8_t downlinkDwellTime, int8_t dr, int8_t drOffset ) 1074:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 2989 .loc 1 1074 0 2990 .cfi_startproc 2991 @ args = 0, pretend = 0, frame = 0 2992 @ frame_needed = 0, uses_anonymous_args = 0 2993 @ link register save eliminated. 2994 .LVL324: 1075:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** int8_t datarate = dr - drOffset; 2995 .loc 1 1075 0 2996 0000 881A subs r0, r1, r2 2997 .LVL325: ARM GAS /tmp/cczfoKrY.s page 75 2998 0002 40B2 sxtb r0, r0 2999 .LVL326: 1076:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** 1077:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** if( datarate < 0 ) 3000 .loc 1 1077 0 3001 0004 0028 cmp r0, #0 3002 0006 01DB blt .L263 3003 .LVL327: 3004 .L261: 1078:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** { 1079:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** datarate = DR_0; 1080:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 1081:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** return datarate; 3005 .loc 1 1081 0 3006 0008 C0B2 uxtb r0, r0 1082:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 3007 .loc 1 1082 0 3008 @ sp needed 3009 000a 7047 bx lr 3010 .L263: 1079:./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.c **** } 3011 .loc 1 1079 0 3012 000c 0020 movs r0, #0 3013 .LVL328: 3014 000e FBE7 b .L261 3015 .cfi_endproc 3016 .LFE111: 3018 .section .rodata 3019 .align 2 3020 .set .LANCHOR5,. + 0 3021 .LC0: 3022 0000 A027BE33 .word 868100000 3023 0004 00000000 .word 0 3024 0008 50 .byte 80 3025 0009 01 .byte 1 3026 000a 0000 .space 2 3027 .LC1: 3028 000c E034C133 .word 868300000 3029 0010 00000000 .word 0 3030 0014 50 .byte 80 3031 0015 01 .byte 1 3032 0016 0000 .space 2 3033 .LC2: 3034 0018 2042C433 .word 868500000 3035 001c 00000000 .word 0 3036 0020 50 .byte 80 3037 0021 01 .byte 1 3038 0022 0000 .space 2 3039 .section .bss.Channels,"aw",%nobits 3040 .align 2 3043 Channels: 3044 0000 00000000 .space 192 3044 00000000 3044 00000000 3044 00000000 3044 00000000 3045 .section .bss.ChannelsDefaultMask,"aw",%nobits ARM GAS /tmp/cczfoKrY.s page 76 3046 .align 2 3047 .set .LANCHOR3,. + 0 3050 ChannelsDefaultMask: 3051 0000 0000 .space 2 3052 .section .bss.ChannelsMask,"aw",%nobits 3053 .align 2 3054 .set .LANCHOR2,. + 0 3057 ChannelsMask: 3058 0000 0000 .space 2 3059 .section .data.Bands,"aw",%progbits 3060 .align 2 3061 .set .LANCHOR4,. + 0 3064 Bands: 3065 0000 6400 .short 100 3066 0002 00 .byte 0 3067 0003 00 .space 1 3068 0004 00000000 .word 0 3069 0008 00000000 .word 0 3070 000c 00000000 .space 4 3071 0010 6400 .short 100 3072 0012 00 .byte 0 3073 0013 00 .space 1 3074 0014 00000000 .word 0 3075 0018 00000000 .word 0 3076 001c 00000000 .space 4 3077 0020 E803 .short 1000 3078 0022 00 .byte 0 3079 0023 00 .space 1 3080 0024 00000000 .word 0 3081 0028 00000000 .word 0 3082 002c 00000000 .space 4 3083 0030 0A00 .short 10 3084 0032 00 .byte 0 3085 0033 00 .space 1 3086 0034 00000000 .word 0 3087 0038 00000000 .word 0 3088 003c 00000000 .space 4 3089 0040 6400 .short 100 3090 0042 00 .byte 0 3091 0043 00 .space 1 3092 0044 00000000 .word 0 3093 0048 00000000 .word 0 3094 004c 00000000 .space 4 3095 .section .rodata.BandwidthsEU868,"a",%progbits 3096 .align 2 3097 .set .LANCHOR6,. + 0 3100 BandwidthsEU868: 3101 0000 48E80100 .word 125000 3102 0004 48E80100 .word 125000 3103 0008 48E80100 .word 125000 3104 000c 48E80100 .word 125000 3105 0010 48E80100 .word 125000 3106 0014 48E80100 .word 125000 3107 0018 90D00300 .word 250000 3108 001c 00000000 .word 0 3109 .section .rodata.DataratesEU868,"a",%progbits 3110 .align 2 ARM GAS /tmp/cczfoKrY.s page 77 3111 .set .LANCHOR7,. + 0 3114 DataratesEU868: 3115 0000 0C .byte 12 3116 0001 0B .byte 11 3117 0002 0A .byte 10 3118 0003 09 .byte 9 3119 0004 08 .byte 8 3120 0005 07 .byte 7 3121 0006 07 .byte 7 3122 0007 32 .byte 50 3123 .section .rodata.MaxPayloadOfDatarateEU868,"a",%progbits 3124 .align 2 3125 .set .LANCHOR0,. + 0 3128 MaxPayloadOfDatarateEU868: 3129 0000 33 .byte 51 3130 0001 33 .byte 51 3131 0002 33 .byte 51 3132 0003 73 .byte 115 3133 0004 F2 .byte -14 3134 0005 F2 .byte -14 3135 0006 F2 .byte -14 3136 0007 F2 .byte -14 3137 .section .rodata.MaxPayloadOfDatarateRepeaterEU868,"a",%progbits 3138 .align 2 3139 .set .LANCHOR1,. + 0 3142 MaxPayloadOfDatarateRepeaterEU868: 3143 0000 33 .byte 51 3144 0001 33 .byte 51 3145 0002 33 .byte 51 3146 0003 73 .byte 115 3147 0004 DE .byte -34 3148 0005 DE .byte -34 3149 0006 DE .byte -34 3150 0007 DE .byte -34 3151 .text 3152 .Letext0: 3153 .file 2 "/usr/arm-none-eabi/include/machine/_default_types.h" 3154 .file 3 "/usr/arm-none-eabi/include/sys/lock.h" 3155 .file 4 "/usr/arm-none-eabi/include/sys/_types.h" 3156 .file 5 "/usr/lib/gcc/arm-none-eabi/7.2.0/include/stddef.h" 3157 .file 6 "/usr/arm-none-eabi/include/sys/reent.h" 3158 .file 7 "/usr/arm-none-eabi/include/sys/_stdint.h" 3159 .file 8 "/usr/arm-none-eabi/include/math.h" 3160 .file 9 "Middlewares/Third_Party/Lora/Phy/radio.h" 3161 .file 10 "Middlewares/Third_Party/Lora/Utilities/utilities.h" 3162 .file 11 "Middlewares/Third_Party/Lora/Mac/LoRaMac.h" 3163 .file 12 "./Middlewares/Third_Party/Lora/Mac/region/Region.h" 3164 .file 13 "./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.h" 3165 .file 14 "./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.h" 3166 .file 15 "" 3167 .file 16 "Middlewares/Third_Party/Lora/Utilities/timeServer.h" ARM GAS /tmp/cczfoKrY.s page 78 DEFINED SYMBOLS *ABS*:0000000000000000 RegionEU868.c /tmp/cczfoKrY.s:16 .text.VerifyTxFreq:0000000000000000 $t /tmp/cczfoKrY.s:22 .text.VerifyTxFreq:0000000000000000 VerifyTxFreq /tmp/cczfoKrY.s:128 .text.VerifyTxFreq:0000000000000078 $d /tmp/cczfoKrY.s:145 .text.RegionEU868GetPhyParam:0000000000000000 $t /tmp/cczfoKrY.s:152 .text.RegionEU868GetPhyParam:0000000000000000 RegionEU868GetPhyParam /tmp/cczfoKrY.s:179 .rodata.RegionEU868GetPhyParam:0000000000000000 $d /tmp/cczfoKrY.s:367 .text.RegionEU868GetPhyParam:000000000000009c $d /tmp/cczfoKrY.s:3043 .bss.Channels:0000000000000000 Channels /tmp/cczfoKrY.s:383 .text.RegionEU868SetBandTxDone:0000000000000000 $t /tmp/cczfoKrY.s:390 .text.RegionEU868SetBandTxDone:0000000000000000 RegionEU868SetBandTxDone /tmp/cczfoKrY.s:424 .text.RegionEU868SetBandTxDone:0000000000000020 $d /tmp/cczfoKrY.s:430 .text.RegionEU868InitDefaults:0000000000000000 $t /tmp/cczfoKrY.s:437 .text.RegionEU868InitDefaults:0000000000000000 RegionEU868InitDefaults /tmp/cczfoKrY.s:504 .text.RegionEU868InitDefaults:0000000000000044 $d /tmp/cczfoKrY.s:512 .text.RegionEU868Verify:0000000000000000 $t /tmp/cczfoKrY.s:519 .text.RegionEU868Verify:0000000000000000 RegionEU868Verify /tmp/cczfoKrY.s:542 .rodata.RegionEU868Verify:0000000000000000 $d /tmp/cczfoKrY.s:661 .text.RegionEU868Verify:0000000000000078 $d /tmp/cczfoKrY.s:666 .text.RegionEU868ChanMaskSet:0000000000000000 $t /tmp/cczfoKrY.s:673 .text.RegionEU868ChanMaskSet:0000000000000000 RegionEU868ChanMaskSet /tmp/cczfoKrY.s:726 .text.RegionEU868ChanMaskSet:000000000000002c $d /tmp/cczfoKrY.s:732 .text.RegionEU868AdrNext:0000000000000000 $t /tmp/cczfoKrY.s:739 .text.RegionEU868AdrNext:0000000000000000 RegionEU868AdrNext /tmp/cczfoKrY.s:870 .text.RegionEU868AdrNext:000000000000007c $d /tmp/cczfoKrY.s:875 .text.RegionEU868ComputeRxWindowParameters:0000000000000000 $t /tmp/cczfoKrY.s:882 .text.RegionEU868ComputeRxWindowParameters:0000000000000000 RegionEU868ComputeRxWindowParameters /tmp/cczfoKrY.s:1004 .text.RegionEU868ComputeRxWindowParameters:000000000000007c $d /tmp/cczfoKrY.s:1013 .text.RegionEU868RxConfig:0000000000000000 $t /tmp/cczfoKrY.s:1020 .text.RegionEU868RxConfig:0000000000000000 RegionEU868RxConfig /tmp/cczfoKrY.s:1202 .text.RegionEU868RxConfig:00000000000000dc $d /tmp/cczfoKrY.s:1213 .text.RegionEU868TxConfig:0000000000000000 $t /tmp/cczfoKrY.s:1220 .text.RegionEU868TxConfig:0000000000000000 RegionEU868TxConfig /tmp/cczfoKrY.s:1441 .text.RegionEU868TxConfig:000000000000010c $d /tmp/cczfoKrY.s:1454 .text.RegionEU868LinkAdrReq:0000000000000000 $t /tmp/cczfoKrY.s:1461 .text.RegionEU868LinkAdrReq:0000000000000000 RegionEU868LinkAdrReq /tmp/cczfoKrY.s:1730 .text.RegionEU868LinkAdrReq:0000000000000140 $d /tmp/cczfoKrY.s:1736 .text.RegionEU868RxParamSetupReq:0000000000000000 $t /tmp/cczfoKrY.s:1743 .text.RegionEU868RxParamSetupReq:0000000000000000 RegionEU868RxParamSetupReq /tmp/cczfoKrY.s:1814 .text.RegionEU868RxParamSetupReq:0000000000000044 $d /tmp/cczfoKrY.s:1819 .text.RegionEU868TxParamSetupReq:0000000000000000 $t /tmp/cczfoKrY.s:1826 .text.RegionEU868TxParamSetupReq:0000000000000000 RegionEU868TxParamSetupReq /tmp/cczfoKrY.s:1845 .text.RegionEU868DlChannelReq:0000000000000000 $t /tmp/cczfoKrY.s:1852 .text.RegionEU868DlChannelReq:0000000000000000 RegionEU868DlChannelReq /tmp/cczfoKrY.s:1928 .text.RegionEU868DlChannelReq:000000000000004c $d /tmp/cczfoKrY.s:1934 .text.RegionEU868AlternateDr:0000000000000000 $t /tmp/cczfoKrY.s:1941 .text.RegionEU868AlternateDr:0000000000000000 RegionEU868AlternateDr /tmp/cczfoKrY.s:2013 .text.RegionEU868CalcBackOff:0000000000000000 $t /tmp/cczfoKrY.s:2020 .text.RegionEU868CalcBackOff:0000000000000000 RegionEU868CalcBackOff /tmp/cczfoKrY.s:2071 .text.RegionEU868CalcBackOff:0000000000000030 $d /tmp/cczfoKrY.s:2077 .text.RegionEU868NextChannel:0000000000000000 $t /tmp/cczfoKrY.s:2084 .text.RegionEU868NextChannel:0000000000000000 RegionEU868NextChannel /tmp/cczfoKrY.s:2371 .text.RegionEU868NextChannel:0000000000000150 $d /tmp/cczfoKrY.s:2378 .text.RegionEU868ChannelAdd:0000000000000000 $t /tmp/cczfoKrY.s:2385 .text.RegionEU868ChannelAdd:0000000000000000 RegionEU868ChannelAdd /tmp/cczfoKrY.s:2597 .text.RegionEU868ChannelAdd:00000000000000f4 $d ARM GAS /tmp/cczfoKrY.s page 79 /tmp/cczfoKrY.s:2603 .text.RegionEU868ChannelsRemove:0000000000000000 $t /tmp/cczfoKrY.s:2610 .text.RegionEU868ChannelsRemove:0000000000000000 RegionEU868ChannelsRemove /tmp/cczfoKrY.s:2659 .text.RegionEU868ChannelsRemove:000000000000002c $d /tmp/cczfoKrY.s:2665 .text.RegionEU868ApplyCFList:0000000000000000 $t /tmp/cczfoKrY.s:2672 .text.RegionEU868ApplyCFList:0000000000000000 RegionEU868ApplyCFList /tmp/cczfoKrY.s:2789 .text.RegionEU868NewChannelReq:0000000000000000 $t /tmp/cczfoKrY.s:2796 .text.RegionEU868NewChannelReq:0000000000000000 RegionEU868NewChannelReq /tmp/cczfoKrY.s:2893 .text.RegionEU868SetContinuousWave:0000000000000000 $t /tmp/cczfoKrY.s:2900 .text.RegionEU868SetContinuousWave:0000000000000000 RegionEU868SetContinuousWave /tmp/cczfoKrY.s:2973 .text.RegionEU868SetContinuousWave:000000000000004c $d /tmp/cczfoKrY.s:2980 .text.RegionEU868ApplyDrOffset:0000000000000000 $t /tmp/cczfoKrY.s:2987 .text.RegionEU868ApplyDrOffset:0000000000000000 RegionEU868ApplyDrOffset /tmp/cczfoKrY.s:3019 .rodata:0000000000000000 $d /tmp/cczfoKrY.s:3040 .bss.Channels:0000000000000000 $d /tmp/cczfoKrY.s:3046 .bss.ChannelsDefaultMask:0000000000000000 $d /tmp/cczfoKrY.s:3050 .bss.ChannelsDefaultMask:0000000000000000 ChannelsDefaultMask /tmp/cczfoKrY.s:3053 .bss.ChannelsMask:0000000000000000 $d /tmp/cczfoKrY.s:3057 .bss.ChannelsMask:0000000000000000 ChannelsMask /tmp/cczfoKrY.s:3060 .data.Bands:0000000000000000 $d /tmp/cczfoKrY.s:3064 .data.Bands:0000000000000000 Bands /tmp/cczfoKrY.s:3096 .rodata.BandwidthsEU868:0000000000000000 $d /tmp/cczfoKrY.s:3100 .rodata.BandwidthsEU868:0000000000000000 BandwidthsEU868 /tmp/cczfoKrY.s:3110 .rodata.DataratesEU868:0000000000000000 $d /tmp/cczfoKrY.s:3114 .rodata.DataratesEU868:0000000000000000 DataratesEU868 /tmp/cczfoKrY.s:3124 .rodata.MaxPayloadOfDatarateEU868:0000000000000000 $d /tmp/cczfoKrY.s:3128 .rodata.MaxPayloadOfDatarateEU868:0000000000000000 MaxPayloadOfDatarateEU868 /tmp/cczfoKrY.s:3138 .rodata.MaxPayloadOfDatarateRepeaterEU868:0000000000000000 $d /tmp/cczfoKrY.s:3142 .rodata.MaxPayloadOfDatarateRepeaterEU868:0000000000000000 MaxPayloadOfDatarateRepeaterEU868 .debug_frame:0000000000000010 $d UNDEFINED SYMBOLS Radio randr RegionCommonSetBandTxDone RegionCommonChanMaskCopy RegionCommonValueInRange RegionCommonComputeSymbolTimeLoRa RegionCommonComputeRxWindowParameters RegionCommonComputeSymbolTimeFsk RegionCommonComputeTxPower RegionCommonParseLinkAdrReq RegionCommonLinkAdrReqVerifyParams __aeabi_uidivmod RegionCommonCalcBackOff memset RegionCommonCountChannels TimerGetElapsedTime RegionCommonUpdateBandTimeOff memcpy RegionCommonChanDisable