B3M38SPD seminar project - beehive monitor with LoRa reporting
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
spd-lorabees/build/timeServer.lst

1695 lines
91 KiB

ARM GAS /tmp/cciA02i6.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 "timeServer.c"
12 .text
13 .Ltext0:
14 .cfi_sections .debug_frame
15 .section .text.TimerSetTimeout,"ax",%progbits
16 .align 1
17 .syntax unified
18 .code 16
19 .thumb_func
20 .fpu softvfp
22 TimerSetTimeout:
23 .LFB107:
24 .file 1 "./Middlewares/Third_Party/Lora/Utilities/timeServer.c"
1:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** /*
2:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** / _____) _ | |
3:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** ( (____ _____ ____ _| |_ _____ ____| |__
4:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** \____ \| ___ | (_ _) ___ |/ ___) _ \
5:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** _____) ) ____| | | || |_| ____( (___| | | |
6:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** (______/|_____)_|_|_| \__)_____)\____)_| |_|
7:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** (C)2013 Semtech
8:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
9:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** Description: Generic lora driver implementation
10:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
11:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** License: Revised BSD License, see LICENSE.TXT file include in the project
12:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
13:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** Maintainer: Miguel Luis, Gregory Cristian and Wael Guibene
14:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** */
15:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** /******************************************************************************
16:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * @file timeserver.c
17:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * @author MCD Application Team
18:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * @version V1.1.2
19:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * @date 08-September-2017
20:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * @brief Time server infrastructure
21:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** ******************************************************************************
22:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * @attention
23:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** *
24:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics International N.V.
25:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * All rights reserved.</center></h2>
26:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** *
27:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * Redistribution and use in source and binary forms, with or without
28:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * modification, are permitted, provided that the following conditions are met:
29:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** *
30:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * 1. Redistribution of source code must retain the above copyright notice,
31:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * this list of conditions and the following disclaimer.
32:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * 2. Redistributions in binary form must reproduce the above copyright notice,
33:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * this list of conditions and the following disclaimer in the documentation
34:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * and/or other materials provided with the distribution.
ARM GAS /tmp/cciA02i6.s page 2
35:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * 3. Neither the name of STMicroelectronics nor the names of other
36:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * contributors to this software may be used to endorse or promote products
37:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * derived from this software without specific written permission.
38:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * 4. This software, including modifications and/or derivative works of this
39:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * software, must execute solely and exclusively on microcontroller or
40:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * microprocessor devices manufactured by or for STMicroelectronics.
41:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * 5. Redistribution and use of this software other than as permitted under
42:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * this license is void and will automatically terminate your rights under
43:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * this license.
44:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** *
45:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * THIS SOFTWARE IS PROVIDED BY STMICROELECTRONICS AND CONTRIBUTORS "AS IS"
46:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * AND ANY EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT
47:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
48:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * PARTICULAR PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY
49:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * RIGHTS ARE DISCLAIMED TO THE FULLEST EXTENT PERMITTED BY LAW. IN NO EVENT
50:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * SHALL STMICROELECTRONICS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
51:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
52:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
53:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
54:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
55:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
56:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
57:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** *
58:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** ******************************************************************************
59:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** */
60:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
61:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** /* Includes ------------------------------------------------------------------*/
62:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** #include <time.h>
63:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** #include "hw.h"
64:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** #include "timeServer.h"
65:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** //#include "low_power.h"
66:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
67:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
68:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** /*!
69:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * safely execute call back
70:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** */
71:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** #define exec_cb( _callback_ ) \
72:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** do { \
73:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** if( _callback_ == NULL ) \
74:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** { \
75:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** while(1); \
76:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** } \
77:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** else \
78:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** { \
79:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** _callback_( ); \
80:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** } \
81:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** } while(0);
82:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
83:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
84:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
85:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** /*!
86:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * Timers list head pointer
87:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** */
88:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** static TimerEvent_t *TimerListHead = NULL;
89:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
90:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** /*!
91:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * \brief Adds or replace the head timer of the list.
ARM GAS /tmp/cciA02i6.s page 3
92:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** *
93:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * \remark The list is automatically sorted. The list head always contains the
94:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * next timer to expire.
95:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** *
96:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * \param [IN] obj Timer object to be become the new head
97:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * \param [IN] remainingTime Remaining time of the previous head to be replaced
98:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** */
99:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** static void TimerInsertNewHeadTimer( TimerEvent_t *obj );
100:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
101:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** /*!
102:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * \brief Adds a timer to the list.
103:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** *
104:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * \remark The list is automatically sorted. The list head always contains the
105:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * next timer to expire.
106:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** *
107:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * \param [IN] obj Timer object to be added to the list
108:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * \param [IN] remainingTime Remaining time of the running head after which the object may be adde
109:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** */
110:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** static void TimerInsertTimer( TimerEvent_t *obj );
111:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
112:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** /*!
113:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * \brief Sets a timeout with the duration "timestamp"
114:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** *
115:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * \param [IN] timestamp Delay duration
116:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** */
117:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** static void TimerSetTimeout( TimerEvent_t *obj );
118:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
119:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** /*!
120:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * \brief Check if the Object to be added is not already in the list
121:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** *
122:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * \param [IN] timestamp Delay duration
123:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** * \retval true (the object is already in the list) or false
124:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** */
125:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** static bool TimerExists( TimerEvent_t *obj );
126:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
127:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
128:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
129:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** void TimerInit( TimerEvent_t *obj, void ( *callback )( void ) )
130:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
131:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** obj->Timestamp = 0;
132:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** obj->ReloadValue = 0;
133:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** obj->IsRunning = false;
134:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** obj->Callback = callback;
135:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** obj->Next = NULL;
136:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
137:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
138:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** void TimerStart( TimerEvent_t *obj )
139:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
140:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** uint32_t elapsedTime = 0;
141:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
142:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** BACKUP_PRIMASK();
143:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
144:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** DISABLE_IRQ( );
145:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
146:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
147:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** if( ( obj == NULL ) || ( TimerExists( obj ) == true ) )
148:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
ARM GAS /tmp/cciA02i6.s page 4
149:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** RESTORE_PRIMASK( );
150:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** return;
151:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
152:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** obj->Timestamp = obj->ReloadValue;
153:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** obj->IsRunning = false;
154:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
155:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** if( TimerListHead == NULL )
156:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
157:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** HW_RTC_SetTimerContext( );
158:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerInsertNewHeadTimer( obj ); // insert a timeout at now+obj->Timestamp
159:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
160:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** else
161:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
162:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** elapsedTime = HW_RTC_GetTimerElapsedTime( );
163:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** obj->Timestamp += elapsedTime;
164:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
165:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** if( obj->Timestamp < TimerListHead->Timestamp )
166:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
167:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerInsertNewHeadTimer( obj);
168:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
169:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** else
170:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
171:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerInsertTimer( obj);
172:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
173:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
174:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** RESTORE_PRIMASK( );
175:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
176:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
177:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** static void TimerInsertTimer( TimerEvent_t *obj)
178:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
179:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerEvent_t* cur = TimerListHead;
180:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerEvent_t* next = TimerListHead->Next;
181:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
182:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** while (cur->Next != NULL )
183:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
184:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** if( obj->Timestamp > next->Timestamp )
185:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
186:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** cur = next;
187:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** next = next->Next;
188:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
189:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** else
190:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
191:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** cur->Next = obj;
192:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** obj->Next = next;
193:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** return;
194:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
195:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
196:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
197:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** cur->Next = obj;
198:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** obj->Next = NULL;
199:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
200:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
201:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** static void TimerInsertNewHeadTimer( TimerEvent_t *obj )
202:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
203:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerEvent_t* cur = TimerListHead;
204:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
205:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** if( cur != NULL )
ARM GAS /tmp/cciA02i6.s page 5
206:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
207:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** cur->IsRunning = false;
208:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
209:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
210:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** obj->Next = cur;
211:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerListHead = obj;
212:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerSetTimeout( TimerListHead );
213:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
214:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
215:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** void TimerIrqHandler( void )
216:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
217:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerEvent_t* cur;
218:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerEvent_t* next;
219:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
220:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
221:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
222:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** uint32_t old = HW_RTC_GetTimerContext( );
223:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** uint32_t now = HW_RTC_SetTimerContext( );
224:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** uint32_t DeltaContext = now - old; //intentionnal wrap around
225:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
226:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** /* update timeStamp based upon new Time Reference*/
227:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** /* beacuse delta context should never exceed 2^32*/
228:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** if ( TimerListHead != NULL )
229:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
230:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** for (cur=TimerListHead; cur->Next != NULL; cur= cur->Next)
231:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
232:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** next =cur->Next;
233:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** if (next->Timestamp > DeltaContext)
234:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
235:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** next->Timestamp -= DeltaContext;
236:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
237:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** else
238:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
239:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** next->Timestamp = 0 ;
240:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
241:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
242:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
243:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
244:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** /* execute imediately the alarm callback */
245:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** if ( TimerListHead != NULL )
246:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
247:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** cur = TimerListHead;
248:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerListHead = TimerListHead->Next;
249:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** exec_cb( cur->Callback );
250:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
251:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
252:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
253:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** // remove all the expired object from the list
254:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** while( ( TimerListHead != NULL ) && ( TimerListHead->Timestamp < HW_RTC_GetTimerElapsedTime( )
255:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
256:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** cur = TimerListHead;
257:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerListHead = TimerListHead->Next;
258:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** exec_cb( cur->Callback );
259:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
260:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
261:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** /* start the next TimerListHead if it exists AND NOT running */
262:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** if(( TimerListHead != NULL ) && (TimerListHead->IsRunning == false))
ARM GAS /tmp/cciA02i6.s page 6
263:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
264:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerSetTimeout( TimerListHead );
265:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
266:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
267:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
268:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** void TimerStop( TimerEvent_t *obj )
269:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
270:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** BACKUP_PRIMASK();
271:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
272:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** DISABLE_IRQ( );
273:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
274:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerEvent_t* prev = TimerListHead;
275:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerEvent_t* cur = TimerListHead;
276:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
277:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** // List is empty or the Obj to stop does not exist
278:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** if( ( TimerListHead == NULL ) || ( obj == NULL ) )
279:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
280:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** RESTORE_PRIMASK( );
281:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** return;
282:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
283:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
284:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** if( TimerListHead == obj ) // Stop the Head
285:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
286:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** if( TimerListHead->IsRunning == true ) // The head is already running
287:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
288:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** if( TimerListHead->Next != NULL )
289:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
290:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerListHead->IsRunning = false;
291:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerListHead = TimerListHead->Next;
292:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerSetTimeout( TimerListHead );
293:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
294:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** else
295:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
296:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** HW_RTC_StopAlarm( );
297:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerListHead = NULL;
298:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
299:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
300:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** else // Stop the head before it is started
301:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
302:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** if( TimerListHead->Next != NULL )
303:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
304:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerListHead = TimerListHead->Next;
305:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
306:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** else
307:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
308:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerListHead = NULL;
309:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
310:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
311:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
312:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** else // Stop an object within the list
313:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
314:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** while( cur != NULL )
315:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
316:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** if( cur == obj )
317:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
318:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** if( cur->Next != NULL )
319:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
ARM GAS /tmp/cciA02i6.s page 7
320:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** cur = cur->Next;
321:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** prev->Next = cur;
322:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
323:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** else
324:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
325:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** cur = NULL;
326:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** prev->Next = cur;
327:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
328:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** break;
329:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
330:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** else
331:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
332:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** prev = cur;
333:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** cur = cur->Next;
334:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
335:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
336:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
337:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
338:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** RESTORE_PRIMASK( );
339:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
340:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
341:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** static bool TimerExists( TimerEvent_t *obj )
342:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
343:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerEvent_t* cur = TimerListHead;
344:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
345:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** while( cur != NULL )
346:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
347:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** if( cur == obj )
348:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
349:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** return true;
350:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
351:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** cur = cur->Next;
352:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
353:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** return false;
354:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
355:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
356:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** void TimerReset( TimerEvent_t *obj )
357:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
358:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerStop( obj );
359:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerStart( obj );
360:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
361:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
362:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** void TimerSetValue( TimerEvent_t *obj, uint32_t value )
363:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
364:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** uint32_t minValue = 0;
365:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** uint32_t ticks = HW_RTC_ms2Tick( value );
366:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
367:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerStop( obj );
368:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
369:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** minValue = HW_RTC_GetMinimumTimeout( );
370:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
371:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** if( ticks < minValue )
372:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
373:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** ticks = minValue;
374:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
375:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
376:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** obj->Timestamp = ticks;
ARM GAS /tmp/cciA02i6.s page 8
377:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** obj->ReloadValue = ticks;
378:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
379:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
380:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerTime_t TimerGetCurrentTime( void )
381:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
382:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** uint32_t now = HW_RTC_GetTimerValue( );
383:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** return HW_RTC_Tick2ms(now);
384:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
385:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
386:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerTime_t TimerGetElapsedTime( TimerTime_t past )
387:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
388:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** uint32_t nowInTicks = HW_RTC_GetTimerValue( );
389:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** uint32_t pastInTicks = HW_RTC_ms2Tick( past );
390:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** /* intentional wrap around. Works Ok if tick duation below 1ms */
391:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** return HW_RTC_Tick2ms( nowInTicks- pastInTicks );
392:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
393:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
394:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** static void TimerSetTimeout( TimerEvent_t *obj )
395:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
25 .loc 1 395 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
396:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** int32_t minTicks= HW_RTC_GetMinimumTimeout( );
38 .loc 1 396 0
39 0004 FFF7FEFF bl HW_RTC_GetMinimumTimeout
40 .LVL1:
41 0008 0500 movs r5, r0
42 .LVL2:
397:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** obj->IsRunning = true;
43 .loc 1 397 0
44 000a 0123 movs r3, #1
45 000c 2372 strb r3, [r4, #8]
398:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
399:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** //in case deadline too soon
400:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** if(obj->Timestamp < (HW_RTC_GetTimerElapsedTime( ) + minTicks) )
46 .loc 1 400 0
47 000e 2668 ldr r6, [r4]
48 0010 FFF7FEFF bl HW_RTC_GetTimerElapsedTime
49 .LVL3:
50 0014 2818 adds r0, r5, r0
51 0016 8642 cmp r6, r0
52 0018 03D3 bcc .L3
53 .LVL4:
54 .L2:
401:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
402:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** obj->Timestamp = HW_RTC_GetTimerElapsedTime( ) + minTicks;
403:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
ARM GAS /tmp/cciA02i6.s page 9
404:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** HW_RTC_SetAlarm( obj->Timestamp );
55 .loc 1 404 0
56 001a 2068 ldr r0, [r4]
57 001c FFF7FEFF bl HW_RTC_SetAlarm
58 .LVL5:
405:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
59 .loc 1 405 0
60 @ sp needed
61 .LVL6:
62 0020 70BD pop {r4, r5, r6, pc}
63 .LVL7:
64 .L3:
402:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
65 .loc 1 402 0
66 0022 FFF7FEFF bl HW_RTC_GetTimerElapsedTime
67 .LVL8:
68 0026 2D18 adds r5, r5, r0
69 .LVL9:
70 0028 2560 str r5, [r4]
71 002a F6E7 b .L2
72 .cfi_endproc
73 .LFE107:
75 .section .text.TimerInit,"ax",%progbits
76 .align 1
77 .global TimerInit
78 .syntax unified
79 .code 16
80 .thumb_func
81 .fpu softvfp
83 TimerInit:
84 .LFB96:
130:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** obj->Timestamp = 0;
85 .loc 1 130 0
86 .cfi_startproc
87 @ args = 0, pretend = 0, frame = 0
88 @ frame_needed = 0, uses_anonymous_args = 0
89 @ link register save eliminated.
90 .LVL10:
131:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** obj->ReloadValue = 0;
91 .loc 1 131 0
92 0000 0023 movs r3, #0
93 0002 0360 str r3, [r0]
132:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** obj->IsRunning = false;
94 .loc 1 132 0
95 0004 4360 str r3, [r0, #4]
133:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** obj->Callback = callback;
96 .loc 1 133 0
97 0006 0372 strb r3, [r0, #8]
134:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** obj->Next = NULL;
98 .loc 1 134 0
99 0008 C160 str r1, [r0, #12]
135:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
100 .loc 1 135 0
101 000a 0361 str r3, [r0, #16]
136:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
102 .loc 1 136 0
103 @ sp needed
ARM GAS /tmp/cciA02i6.s page 10
104 000c 7047 bx lr
105 .cfi_endproc
106 .LFE96:
108 .section .text.TimerStart,"ax",%progbits
109 .align 1
110 .global TimerStart
111 .syntax unified
112 .code 16
113 .thumb_func
114 .fpu softvfp
116 TimerStart:
117 .LFB97:
139:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** uint32_t elapsedTime = 0;
118 .loc 1 139 0
119 .cfi_startproc
120 @ args = 0, pretend = 0, frame = 0
121 @ frame_needed = 0, uses_anonymous_args = 0
122 .LVL11:
123 0000 70B5 push {r4, r5, r6, lr}
124 .LCFI1:
125 .cfi_def_cfa_offset 16
126 .cfi_offset 4, -16
127 .cfi_offset 5, -12
128 .cfi_offset 6, -8
129 .cfi_offset 14, -4
130 0002 0400 movs r4, r0
131 .LVL12:
132 .LBB34:
133 .LBB35:
134 .file 2 "Drivers/CMSIS/Include/cmsis_gcc.h"
1:Drivers/CMSIS/Include/cmsis_gcc.h **** /**************************************************************************//**
2:Drivers/CMSIS/Include/cmsis_gcc.h **** * @file cmsis_gcc.h
3:Drivers/CMSIS/Include/cmsis_gcc.h **** * @brief CMSIS Cortex-M Core Function/Instruction Header File
4:Drivers/CMSIS/Include/cmsis_gcc.h **** * @version V4.30
5:Drivers/CMSIS/Include/cmsis_gcc.h **** * @date 20. October 2015
6:Drivers/CMSIS/Include/cmsis_gcc.h **** ******************************************************************************/
7:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Copyright (c) 2009 - 2015 ARM LIMITED
8:Drivers/CMSIS/Include/cmsis_gcc.h ****
9:Drivers/CMSIS/Include/cmsis_gcc.h **** All rights reserved.
10:Drivers/CMSIS/Include/cmsis_gcc.h **** Redistribution and use in source and binary forms, with or without
11:Drivers/CMSIS/Include/cmsis_gcc.h **** modification, are permitted provided that the following conditions are met:
12:Drivers/CMSIS/Include/cmsis_gcc.h **** - Redistributions of source code must retain the above copyright
13:Drivers/CMSIS/Include/cmsis_gcc.h **** notice, this list of conditions and the following disclaimer.
14:Drivers/CMSIS/Include/cmsis_gcc.h **** - Redistributions in binary form must reproduce the above copyright
15:Drivers/CMSIS/Include/cmsis_gcc.h **** notice, this list of conditions and the following disclaimer in the
16:Drivers/CMSIS/Include/cmsis_gcc.h **** documentation and/or other materials provided with the distribution.
17:Drivers/CMSIS/Include/cmsis_gcc.h **** - Neither the name of ARM nor the names of its contributors may be used
18:Drivers/CMSIS/Include/cmsis_gcc.h **** to endorse or promote products derived from this software without
19:Drivers/CMSIS/Include/cmsis_gcc.h **** specific prior written permission.
20:Drivers/CMSIS/Include/cmsis_gcc.h **** *
21:Drivers/CMSIS/Include/cmsis_gcc.h **** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22:Drivers/CMSIS/Include/cmsis_gcc.h **** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23:Drivers/CMSIS/Include/cmsis_gcc.h **** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24:Drivers/CMSIS/Include/cmsis_gcc.h **** ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
25:Drivers/CMSIS/Include/cmsis_gcc.h **** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26:Drivers/CMSIS/Include/cmsis_gcc.h **** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27:Drivers/CMSIS/Include/cmsis_gcc.h **** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
ARM GAS /tmp/cciA02i6.s page 11
28:Drivers/CMSIS/Include/cmsis_gcc.h **** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29:Drivers/CMSIS/Include/cmsis_gcc.h **** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30:Drivers/CMSIS/Include/cmsis_gcc.h **** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31:Drivers/CMSIS/Include/cmsis_gcc.h **** POSSIBILITY OF SUCH DAMAGE.
32:Drivers/CMSIS/Include/cmsis_gcc.h **** ---------------------------------------------------------------------------*/
33:Drivers/CMSIS/Include/cmsis_gcc.h ****
34:Drivers/CMSIS/Include/cmsis_gcc.h ****
35:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __CMSIS_GCC_H
36:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_H
37:Drivers/CMSIS/Include/cmsis_gcc.h ****
38:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ignore some GCC warnings */
39:Drivers/CMSIS/Include/cmsis_gcc.h **** #if defined ( __GNUC__ )
40:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push
41:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wsign-conversion"
42:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wconversion"
43:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wunused-parameter"
44:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
45:Drivers/CMSIS/Include/cmsis_gcc.h ****
46:Drivers/CMSIS/Include/cmsis_gcc.h ****
47:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ########################### Core Function Access ########################### */
48:Drivers/CMSIS/Include/cmsis_gcc.h **** /** \ingroup CMSIS_Core_FunctionInterface
49:Drivers/CMSIS/Include/cmsis_gcc.h **** \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions
50:Drivers/CMSIS/Include/cmsis_gcc.h **** @{
51:Drivers/CMSIS/Include/cmsis_gcc.h **** */
52:Drivers/CMSIS/Include/cmsis_gcc.h ****
53:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
54:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Enable IRQ Interrupts
55:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Enables IRQ interrupts by clearing the I-bit in the CPSR.
56:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes.
57:Drivers/CMSIS/Include/cmsis_gcc.h **** */
58:Drivers/CMSIS/Include/cmsis_gcc.h **** __attribute__( ( always_inline ) ) __STATIC_INLINE void __enable_irq(void)
59:Drivers/CMSIS/Include/cmsis_gcc.h **** {
60:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsie i" : : : "memory");
61:Drivers/CMSIS/Include/cmsis_gcc.h **** }
62:Drivers/CMSIS/Include/cmsis_gcc.h ****
63:Drivers/CMSIS/Include/cmsis_gcc.h ****
64:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
65:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Disable IRQ Interrupts
66:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Disables IRQ interrupts by setting the I-bit in the CPSR.
67:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes.
68:Drivers/CMSIS/Include/cmsis_gcc.h **** */
69:Drivers/CMSIS/Include/cmsis_gcc.h **** __attribute__( ( always_inline ) ) __STATIC_INLINE void __disable_irq(void)
70:Drivers/CMSIS/Include/cmsis_gcc.h **** {
71:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsid i" : : : "memory");
72:Drivers/CMSIS/Include/cmsis_gcc.h **** }
73:Drivers/CMSIS/Include/cmsis_gcc.h ****
74:Drivers/CMSIS/Include/cmsis_gcc.h ****
75:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
76:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Control Register
77:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the Control Register.
78:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Control Register value
79:Drivers/CMSIS/Include/cmsis_gcc.h **** */
80:Drivers/CMSIS/Include/cmsis_gcc.h **** __attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_CONTROL(void)
81:Drivers/CMSIS/Include/cmsis_gcc.h **** {
82:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
83:Drivers/CMSIS/Include/cmsis_gcc.h ****
84:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, control" : "=r" (result) );
ARM GAS /tmp/cciA02i6.s page 12
85:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
86:Drivers/CMSIS/Include/cmsis_gcc.h **** }
87:Drivers/CMSIS/Include/cmsis_gcc.h ****
88:Drivers/CMSIS/Include/cmsis_gcc.h ****
89:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
90:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Control Register
91:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Writes the given value to the Control Register.
92:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] control Control Register value to set
93:Drivers/CMSIS/Include/cmsis_gcc.h **** */
94:Drivers/CMSIS/Include/cmsis_gcc.h **** __attribute__( ( always_inline ) ) __STATIC_INLINE void __set_CONTROL(uint32_t control)
95:Drivers/CMSIS/Include/cmsis_gcc.h **** {
96:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR control, %0" : : "r" (control) : "memory");
97:Drivers/CMSIS/Include/cmsis_gcc.h **** }
98:Drivers/CMSIS/Include/cmsis_gcc.h ****
99:Drivers/CMSIS/Include/cmsis_gcc.h ****
100:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
101:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get IPSR Register
102:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the IPSR Register.
103:Drivers/CMSIS/Include/cmsis_gcc.h **** \return IPSR Register value
104:Drivers/CMSIS/Include/cmsis_gcc.h **** */
105:Drivers/CMSIS/Include/cmsis_gcc.h **** __attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_IPSR(void)
106:Drivers/CMSIS/Include/cmsis_gcc.h **** {
107:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
108:Drivers/CMSIS/Include/cmsis_gcc.h ****
109:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, ipsr" : "=r" (result) );
110:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
111:Drivers/CMSIS/Include/cmsis_gcc.h **** }
112:Drivers/CMSIS/Include/cmsis_gcc.h ****
113:Drivers/CMSIS/Include/cmsis_gcc.h ****
114:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
115:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get APSR Register
116:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the APSR Register.
117:Drivers/CMSIS/Include/cmsis_gcc.h **** \return APSR Register value
118:Drivers/CMSIS/Include/cmsis_gcc.h **** */
119:Drivers/CMSIS/Include/cmsis_gcc.h **** __attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_APSR(void)
120:Drivers/CMSIS/Include/cmsis_gcc.h **** {
121:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
122:Drivers/CMSIS/Include/cmsis_gcc.h ****
123:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, apsr" : "=r" (result) );
124:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
125:Drivers/CMSIS/Include/cmsis_gcc.h **** }
126:Drivers/CMSIS/Include/cmsis_gcc.h ****
127:Drivers/CMSIS/Include/cmsis_gcc.h ****
128:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
129:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get xPSR Register
130:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the xPSR Register.
131:Drivers/CMSIS/Include/cmsis_gcc.h ****
132:Drivers/CMSIS/Include/cmsis_gcc.h **** \return xPSR Register value
133:Drivers/CMSIS/Include/cmsis_gcc.h **** */
134:Drivers/CMSIS/Include/cmsis_gcc.h **** __attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_xPSR(void)
135:Drivers/CMSIS/Include/cmsis_gcc.h **** {
136:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
137:Drivers/CMSIS/Include/cmsis_gcc.h ****
138:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, xpsr" : "=r" (result) );
139:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
140:Drivers/CMSIS/Include/cmsis_gcc.h **** }
141:Drivers/CMSIS/Include/cmsis_gcc.h ****
ARM GAS /tmp/cciA02i6.s page 13
142:Drivers/CMSIS/Include/cmsis_gcc.h ****
143:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
144:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer
145:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Process Stack Pointer (PSP).
146:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSP Register value
147:Drivers/CMSIS/Include/cmsis_gcc.h **** */
148:Drivers/CMSIS/Include/cmsis_gcc.h **** __attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_PSP(void)
149:Drivers/CMSIS/Include/cmsis_gcc.h **** {
150:Drivers/CMSIS/Include/cmsis_gcc.h **** register uint32_t result;
151:Drivers/CMSIS/Include/cmsis_gcc.h ****
152:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psp\n" : "=r" (result) );
153:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
154:Drivers/CMSIS/Include/cmsis_gcc.h **** }
155:Drivers/CMSIS/Include/cmsis_gcc.h ****
156:Drivers/CMSIS/Include/cmsis_gcc.h ****
157:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
158:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer
159:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Process Stack Pointer (PSP).
160:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfProcStack Process Stack Pointer value to set
161:Drivers/CMSIS/Include/cmsis_gcc.h **** */
162:Drivers/CMSIS/Include/cmsis_gcc.h **** __attribute__( ( always_inline ) ) __STATIC_INLINE void __set_PSP(uint32_t topOfProcStack)
163:Drivers/CMSIS/Include/cmsis_gcc.h **** {
164:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psp, %0\n" : : "r" (topOfProcStack) : "sp");
165:Drivers/CMSIS/Include/cmsis_gcc.h **** }
166:Drivers/CMSIS/Include/cmsis_gcc.h ****
167:Drivers/CMSIS/Include/cmsis_gcc.h ****
168:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
169:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer
170:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Main Stack Pointer (MSP).
171:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSP Register value
172:Drivers/CMSIS/Include/cmsis_gcc.h **** */
173:Drivers/CMSIS/Include/cmsis_gcc.h **** __attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_MSP(void)
174:Drivers/CMSIS/Include/cmsis_gcc.h **** {
175:Drivers/CMSIS/Include/cmsis_gcc.h **** register uint32_t result;
176:Drivers/CMSIS/Include/cmsis_gcc.h ****
177:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msp\n" : "=r" (result) );
178:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
179:Drivers/CMSIS/Include/cmsis_gcc.h **** }
180:Drivers/CMSIS/Include/cmsis_gcc.h ****
181:Drivers/CMSIS/Include/cmsis_gcc.h ****
182:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
183:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer
184:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Main Stack Pointer (MSP).
185:Drivers/CMSIS/Include/cmsis_gcc.h ****
186:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfMainStack Main Stack Pointer value to set
187:Drivers/CMSIS/Include/cmsis_gcc.h **** */
188:Drivers/CMSIS/Include/cmsis_gcc.h **** __attribute__( ( always_inline ) ) __STATIC_INLINE void __set_MSP(uint32_t topOfMainStack)
189:Drivers/CMSIS/Include/cmsis_gcc.h **** {
190:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msp, %0\n" : : "r" (topOfMainStack) : "sp");
191:Drivers/CMSIS/Include/cmsis_gcc.h **** }
192:Drivers/CMSIS/Include/cmsis_gcc.h ****
193:Drivers/CMSIS/Include/cmsis_gcc.h ****
194:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
195:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Priority Mask
196:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current state of the priority mask bit from the Priority Mask Register.
197:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Priority Mask value
198:Drivers/CMSIS/Include/cmsis_gcc.h **** */
ARM GAS /tmp/cciA02i6.s page 14
199:Drivers/CMSIS/Include/cmsis_gcc.h **** __attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_PRIMASK(void)
200:Drivers/CMSIS/Include/cmsis_gcc.h **** {
201:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
202:Drivers/CMSIS/Include/cmsis_gcc.h ****
203:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, primask" : "=r" (result) );
135 .loc 2 203 0
136 .syntax divided
137 @ 203 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
138 0004 EFF31085 MRS r5, primask
139 @ 0 "" 2
140 .thumb
141 .syntax unified
142 .LBE35:
143 .LBE34:
144 .LBB36:
145 .LBB37:
71:Drivers/CMSIS/Include/cmsis_gcc.h **** }
146 .loc 2 71 0
147 .syntax divided
148 @ 71 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
149 0008 72B6 cpsid i
150 @ 0 "" 2
151 .thumb
152 .syntax unified
153 .LBE37:
154 .LBE36:
147:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
155 .loc 1 147 0
156 000a 0028 cmp r0, #0
157 000c 29D0 beq .L6
158 .LVL13:
159 .LBB38:
160 .LBB39:
343:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
161 .loc 1 343 0
162 000e 264B ldr r3, .L23
163 0010 1A68 ldr r2, [r3]
164 .LVL14:
165 0012 1300 movs r3, r2
166 .LVL15:
167 .L7:
345:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
168 .loc 1 345 0
169 0014 002B cmp r3, #0
170 0016 04D0 beq .L8
347:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
171 .loc 1 347 0
172 0018 9C42 cmp r4, r3
173 001a 01D0 beq .L20
351:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
174 .loc 1 351 0
175 001c 1B69 ldr r3, [r3, #16]
176 .LVL16:
177 001e F9E7 b .L7
178 .L20:
349:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
179 .loc 1 349 0
ARM GAS /tmp/cciA02i6.s page 15
180 0020 0123 movs r3, #1
181 .LVL17:
182 .L8:
183 .LBE39:
184 .LBE38:
147:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
185 .loc 1 147 0
186 0022 002B cmp r3, #0
187 0024 1DD1 bne .L6
152:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** obj->IsRunning = false;
188 .loc 1 152 0
189 0026 6368 ldr r3, [r4, #4]
190 0028 2360 str r3, [r4]
153:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
191 .loc 1 153 0
192 002a 0023 movs r3, #0
193 002c 2372 strb r3, [r4, #8]
155:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
194 .loc 1 155 0
195 002e 002A cmp r2, #0
196 0030 1AD0 beq .L21
162:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** obj->Timestamp += elapsedTime;
197 .loc 1 162 0
198 0032 FFF7FEFF bl HW_RTC_GetTimerElapsedTime
199 .LVL18:
163:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
200 .loc 1 163 0
201 0036 2368 ldr r3, [r4]
202 0038 9C46 mov ip, r3
203 003a 6044 add r0, r0, ip
204 .LVL19:
205 003c 2060 str r0, [r4]
165:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
206 .loc 1 165 0
207 003e 1A4B ldr r3, .L23
208 0040 1A68 ldr r2, [r3]
209 0042 1368 ldr r3, [r2]
210 0044 9842 cmp r0, r3
211 0046 1ED2 bcs .L15
212 .LVL20:
213 .LBB40:
214 .LBB41:
205:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
215 .loc 1 205 0
216 0048 002A cmp r2, #0
217 004a 01D0 beq .L16
207:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
218 .loc 1 207 0
219 004c 0023 movs r3, #0
220 004e 1372 strb r3, [r2, #8]
221 .L16:
210:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerListHead = obj;
222 .loc 1 210 0
223 0050 2261 str r2, [r4, #16]
211:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerSetTimeout( TimerListHead );
224 .loc 1 211 0
225 0052 154B ldr r3, .L23
ARM GAS /tmp/cciA02i6.s page 16
226 0054 1C60 str r4, [r3]
212:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
227 .loc 1 212 0
228 0056 2000 movs r0, r4
229 0058 FFF7FEFF bl TimerSetTimeout
230 .LVL21:
231 .L14:
232 .LBE41:
233 .LBE40:
234 .LBB42:
235 .LBB43:
204:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
205:Drivers/CMSIS/Include/cmsis_gcc.h **** }
206:Drivers/CMSIS/Include/cmsis_gcc.h ****
207:Drivers/CMSIS/Include/cmsis_gcc.h ****
208:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
209:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Priority Mask
210:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Priority Mask Register.
211:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] priMask Priority Mask
212:Drivers/CMSIS/Include/cmsis_gcc.h **** */
213:Drivers/CMSIS/Include/cmsis_gcc.h **** __attribute__( ( always_inline ) ) __STATIC_INLINE void __set_PRIMASK(uint32_t priMask)
214:Drivers/CMSIS/Include/cmsis_gcc.h **** {
215:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory");
236 .loc 2 215 0
237 .syntax divided
238 @ 215 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
239 005c 85F31088 MSR primask, r5
240 @ 0 "" 2
241 .thumb
242 .syntax unified
243 0060 01E0 b .L5
244 .LVL22:
245 .L6:
246 .LBE43:
247 .LBE42:
248 .LBB44:
249 .LBB45:
250 .syntax divided
251 @ 215 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
252 0062 85F31088 MSR primask, r5
253 @ 0 "" 2
254 .LVL23:
255 .thumb
256 .syntax unified
257 .L5:
258 .LBE45:
259 .LBE44:
175:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
260 .loc 1 175 0
261 @ sp needed
262 .LVL24:
263 0066 70BD pop {r4, r5, r6, pc}
264 .LVL25:
265 .L21:
157:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerInsertNewHeadTimer( obj ); // insert a timeout at now+obj->Timestamp
266 .loc 1 157 0
267 0068 FFF7FEFF bl HW_RTC_SetTimerContext
ARM GAS /tmp/cciA02i6.s page 17
268 .LVL26:
269 .LBB46:
270 .LBB47:
203:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
271 .loc 1 203 0
272 006c 0E4B ldr r3, .L23
273 006e 1B68 ldr r3, [r3]
274 .LVL27:
205:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
275 .loc 1 205 0
276 0070 002B cmp r3, #0
277 0072 01D0 beq .L13
207:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
278 .loc 1 207 0
279 0074 0022 movs r2, #0
280 0076 1A72 strb r2, [r3, #8]
281 .L13:
210:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerListHead = obj;
282 .loc 1 210 0
283 0078 2361 str r3, [r4, #16]
211:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerSetTimeout( TimerListHead );
284 .loc 1 211 0
285 007a 0B4B ldr r3, .L23
286 .LVL28:
287 007c 1C60 str r4, [r3]
288 .LVL29:
212:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
289 .loc 1 212 0
290 007e 2000 movs r0, r4
291 0080 FFF7FEFF bl TimerSetTimeout
292 .LVL30:
293 0084 EAE7 b .L14
294 .LVL31:
295 .L15:
296 .LBE47:
297 .LBE46:
298 .LBB48:
299 .LBB49:
180:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
300 .loc 1 180 0
301 0086 1369 ldr r3, [r2, #16]
302 .LVL32:
303 .L17:
182:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
304 .loc 1 182 0
305 0088 1169 ldr r1, [r2, #16]
306 008a 0029 cmp r1, #0
307 008c 08D0 beq .L22
184:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
308 .loc 1 184 0
309 008e 1968 ldr r1, [r3]
310 0090 8842 cmp r0, r1
311 0092 02D9 bls .L18
312 .LVL33:
186:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** next = next->Next;
313 .loc 1 186 0
314 0094 1A00 movs r2, r3
ARM GAS /tmp/cciA02i6.s page 18
187:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
315 .loc 1 187 0
316 0096 1B69 ldr r3, [r3, #16]
317 .LVL34:
318 0098 F6E7 b .L17
319 .L18:
191:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** obj->Next = next;
320 .loc 1 191 0
321 009a 1461 str r4, [r2, #16]
192:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** return;
322 .loc 1 192 0
323 009c 2361 str r3, [r4, #16]
324 009e DDE7 b .L14
325 .L22:
197:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** obj->Next = NULL;
326 .loc 1 197 0
327 00a0 1461 str r4, [r2, #16]
198:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
328 .loc 1 198 0
329 00a2 0023 movs r3, #0
330 .LVL35:
331 00a4 2361 str r3, [r4, #16]
332 00a6 D9E7 b .L14
333 .L24:
334 .align 2
335 .L23:
336 00a8 00000000 .word .LANCHOR0
337 .LBE49:
338 .LBE48:
339 .cfi_endproc
340 .LFE97:
342 .section .text.TimerIrqHandler,"ax",%progbits
343 .align 1
344 .global TimerIrqHandler
345 .syntax unified
346 .code 16
347 .thumb_func
348 .fpu softvfp
350 TimerIrqHandler:
351 .LFB100:
216:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerEvent_t* cur;
352 .loc 1 216 0
353 .cfi_startproc
354 @ args = 0, pretend = 0, frame = 0
355 @ frame_needed = 0, uses_anonymous_args = 0
356 0000 10B5 push {r4, lr}
357 .LCFI2:
358 .cfi_def_cfa_offset 8
359 .cfi_offset 4, -8
360 .cfi_offset 14, -4
222:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** uint32_t now = HW_RTC_SetTimerContext( );
361 .loc 1 222 0
362 0002 FFF7FEFF bl HW_RTC_GetTimerContext
363 .LVL36:
364 0006 0400 movs r4, r0
365 .LVL37:
223:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** uint32_t DeltaContext = now - old; //intentionnal wrap around
ARM GAS /tmp/cciA02i6.s page 19
366 .loc 1 223 0
367 0008 FFF7FEFF bl HW_RTC_SetTimerContext
368 .LVL38:
224:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
369 .loc 1 224 0
370 000c 001B subs r0, r0, r4
371 .LVL39:
228:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
372 .loc 1 228 0
373 000e 1C4B ldr r3, .L41
374 0010 1B68 ldr r3, [r3]
375 0012 002B cmp r3, #0
376 0014 0DD0 beq .L27
230:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
377 .loc 1 230 0
378 0016 1C00 movs r4, r3
379 .LVL40:
380 0018 02E0 b .L26
381 .LVL41:
382 .L28:
239:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
383 .loc 1 239 0
384 001a 0021 movs r1, #0
385 001c 1160 str r1, [r2]
386 .L29:
230:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
387 .loc 1 230 0 discriminator 2
388 001e 2469 ldr r4, [r4, #16]
389 .LVL42:
390 .L26:
230:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
391 .loc 1 230 0 is_stmt 0 discriminator 1
392 0020 2269 ldr r2, [r4, #16]
393 0022 002A cmp r2, #0
394 0024 05D0 beq .L27
395 .LVL43:
233:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
396 .loc 1 233 0 is_stmt 1
397 0026 1168 ldr r1, [r2]
398 0028 8142 cmp r1, r0
399 002a F6D9 bls .L28
235:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
400 .loc 1 235 0
401 002c 091A subs r1, r1, r0
402 002e 1160 str r1, [r2]
403 0030 F5E7 b .L29
404 .LVL44:
405 .L27:
245:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
406 .loc 1 245 0
407 0032 002B cmp r3, #0
408 0034 06D0 beq .L36
409 .LVL45:
248:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** exec_cb( cur->Callback );
410 .loc 1 248 0
411 0036 124A ldr r2, .L41
412 0038 1969 ldr r1, [r3, #16]
ARM GAS /tmp/cciA02i6.s page 20
413 003a 1160 str r1, [r2]
249:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
414 .loc 1 249 0
415 003c DB68 ldr r3, [r3, #12]
416 .LVL46:
417 003e 002B cmp r3, #0
418 0040 12D0 beq .L33
249:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
419 .loc 1 249 0 is_stmt 0 discriminator 1
420 0042 9847 blx r3
421 .LVL47:
422 .L36:
254:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
423 .loc 1 254 0 is_stmt 1
424 0044 0E4B ldr r3, .L41
425 0046 1B68 ldr r3, [r3]
426 0048 002B cmp r3, #0
427 004a 0FD0 beq .L37
254:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
428 .loc 1 254 0 is_stmt 0 discriminator 1
429 004c 1C68 ldr r4, [r3]
430 004e FFF7FEFF bl HW_RTC_GetTimerElapsedTime
431 .LVL48:
432 0052 8442 cmp r4, r0
433 0054 0AD2 bcs .L37
256:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerListHead = TimerListHead->Next;
434 .loc 1 256 0 is_stmt 1
435 0056 0A4A ldr r2, .L41
436 0058 1368 ldr r3, [r2]
437 .LVL49:
257:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** exec_cb( cur->Callback );
438 .loc 1 257 0
439 005a 1969 ldr r1, [r3, #16]
440 005c 1160 str r1, [r2]
258:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
441 .loc 1 258 0
442 005e DB68 ldr r3, [r3, #12]
443 .LVL50:
444 0060 002B cmp r3, #0
445 0062 02D0 beq .L35
258:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
446 .loc 1 258 0 is_stmt 0 discriminator 1
447 0064 9847 blx r3
448 .LVL51:
449 0066 EDE7 b .L36
450 .LVL52:
451 .L33:
452 0068 FEE7 b .L33
453 .LVL53:
454 .L35:
455 006a FEE7 b .L35
456 .L37:
262:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
457 .loc 1 262 0 is_stmt 1
458 006c 044B ldr r3, .L41
459 006e 1868 ldr r0, [r3]
460 0070 0028 cmp r0, #0
ARM GAS /tmp/cciA02i6.s page 21
461 0072 04D0 beq .L25
262:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
462 .loc 1 262 0 is_stmt 0 discriminator 1
463 0074 037A ldrb r3, [r0, #8]
464 0076 002B cmp r3, #0
465 0078 01D1 bne .L25
264:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
466 .loc 1 264 0 is_stmt 1
467 007a FFF7FEFF bl TimerSetTimeout
468 .LVL54:
469 .L25:
266:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
470 .loc 1 266 0
471 @ sp needed
472 007e 10BD pop {r4, pc}
473 .L42:
474 .align 2
475 .L41:
476 0080 00000000 .word .LANCHOR0
477 .cfi_endproc
478 .LFE100:
480 .section .text.TimerStop,"ax",%progbits
481 .align 1
482 .global TimerStop
483 .syntax unified
484 .code 16
485 .thumb_func
486 .fpu softvfp
488 TimerStop:
489 .LFB101:
269:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** BACKUP_PRIMASK();
490 .loc 1 269 0
491 .cfi_startproc
492 @ args = 0, pretend = 0, frame = 0
493 @ frame_needed = 0, uses_anonymous_args = 0
494 .LVL55:
495 0000 10B5 push {r4, lr}
496 .LCFI3:
497 .cfi_def_cfa_offset 8
498 .cfi_offset 4, -8
499 .cfi_offset 14, -4
500 .LBB50:
501 .LBB51:
203:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
502 .loc 2 203 0
503 .syntax divided
504 @ 203 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
505 0002 EFF31084 MRS r4, primask
506 @ 0 "" 2
507 .thumb
508 .syntax unified
509 .LBE51:
510 .LBE50:
511 .LBB52:
512 .LBB53:
71:Drivers/CMSIS/Include/cmsis_gcc.h **** }
513 .loc 2 71 0
ARM GAS /tmp/cciA02i6.s page 22
514 .syntax divided
515 @ 71 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
516 0006 72B6 cpsid i
517 @ 0 "" 2
518 .thumb
519 .syntax unified
520 .LBE53:
521 .LBE52:
274:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerEvent_t* cur = TimerListHead;
522 .loc 1 274 0
523 0008 1C4B ldr r3, .L58
524 000a 1A68 ldr r2, [r3]
525 .LVL56:
278:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
526 .loc 1 278 0
527 000c 002A cmp r2, #0
528 000e 0BD0 beq .L44
278:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
529 .loc 1 278 0 is_stmt 0 discriminator 1
530 0010 0028 cmp r0, #0
531 0012 09D0 beq .L44
284:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
532 .loc 1 284 0 is_stmt 1
533 0014 8242 cmp r2, r0
534 0016 0AD0 beq .L56
275:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
535 .loc 1 275 0
536 0018 1300 movs r3, r2
537 .LVL57:
538 .L47:
314:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
539 .loc 1 314 0
540 001a 002B cmp r3, #0
541 001c 28D0 beq .L50
316:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
542 .loc 1 316 0
543 001e 8342 cmp r3, r0
544 0020 22D0 beq .L57
545 .LVL58:
332:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** cur = cur->Next;
546 .loc 1 332 0
547 0022 1A00 movs r2, r3
333:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
548 .loc 1 333 0
549 0024 1B69 ldr r3, [r3, #16]
550 .LVL59:
551 0026 F8E7 b .L47
552 .LVL60:
553 .L44:
554 .LBB54:
555 .LBB55:
556 .loc 2 215 0
557 .syntax divided
558 @ 215 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
559 0028 84F31088 MSR primask, r4
560 @ 0 "" 2
561 .thumb
ARM GAS /tmp/cciA02i6.s page 23
562 .syntax unified
563 002c 22E0 b .L43
564 .LVL61:
565 .L56:
566 .LBE55:
567 .LBE54:
286:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
568 .loc 1 286 0
569 002e 137A ldrb r3, [r2, #8]
570 0030 002B cmp r3, #0
571 0032 0FD0 beq .L48
288:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
572 .loc 1 288 0
573 0034 1069 ldr r0, [r2, #16]
574 .LVL62:
575 0036 0028 cmp r0, #0
576 0038 06D0 beq .L49
290:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerListHead = TimerListHead->Next;
577 .loc 1 290 0
578 003a 0023 movs r3, #0
579 003c 1372 strb r3, [r2, #8]
291:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerSetTimeout( TimerListHead );
580 .loc 1 291 0
581 003e 0F4B ldr r3, .L58
582 0040 1860 str r0, [r3]
292:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
583 .loc 1 292 0
584 0042 FFF7FEFF bl TimerSetTimeout
585 .LVL63:
586 0046 13E0 b .L50
587 .LVL64:
588 .L49:
296:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerListHead = NULL;
589 .loc 1 296 0
590 0048 FFF7FEFF bl HW_RTC_StopAlarm
591 .LVL65:
297:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
592 .loc 1 297 0
593 004c 0B4B ldr r3, .L58
594 004e 0022 movs r2, #0
595 0050 1A60 str r2, [r3]
596 0052 0DE0 b .L50
597 .LVL66:
598 .L48:
302:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
599 .loc 1 302 0
600 0054 1369 ldr r3, [r2, #16]
601 0056 002B cmp r3, #0
602 0058 02D0 beq .L51
304:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
603 .loc 1 304 0
604 005a 084A ldr r2, .L58
605 .LVL67:
606 005c 1360 str r3, [r2]
607 .LVL68:
608 005e 07E0 b .L50
609 .LVL69:
ARM GAS /tmp/cciA02i6.s page 24
610 .L51:
308:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
611 .loc 1 308 0
612 0060 064B ldr r3, .L58
613 0062 0022 movs r2, #0
614 .LVL70:
615 0064 1A60 str r2, [r3]
616 .LVL71:
617 0066 03E0 b .L50
618 .LVL72:
619 .L57:
318:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
620 .loc 1 318 0
621 0068 1B69 ldr r3, [r3, #16]
622 .LVL73:
623 006a 002B cmp r3, #0
624 006c 03D0 beq .L53
625 .LVL74:
321:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
626 .loc 1 321 0
627 006e 1361 str r3, [r2, #16]
628 .LVL75:
629 .L50:
630 .LBB56:
631 .LBB57:
632 .loc 2 215 0
633 .syntax divided
634 @ 215 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
635 0070 84F31088 MSR primask, r4
636 @ 0 "" 2
637 .LVL76:
638 .thumb
639 .syntax unified
640 .L43:
641 .LBE57:
642 .LBE56:
339:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
643 .loc 1 339 0
644 @ sp needed
645 0074 10BD pop {r4, pc}
646 .LVL77:
647 .L53:
326:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
648 .loc 1 326 0
649 0076 0023 movs r3, #0
650 0078 1361 str r3, [r2, #16]
651 007a F9E7 b .L50
652 .L59:
653 .align 2
654 .L58:
655 007c 00000000 .word .LANCHOR0
656 .cfi_endproc
657 .LFE101:
659 .section .text.TimerReset,"ax",%progbits
660 .align 1
661 .global TimerReset
662 .syntax unified
ARM GAS /tmp/cciA02i6.s page 25
663 .code 16
664 .thumb_func
665 .fpu softvfp
667 TimerReset:
668 .LFB103:
357:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerStop( obj );
669 .loc 1 357 0
670 .cfi_startproc
671 @ args = 0, pretend = 0, frame = 0
672 @ frame_needed = 0, uses_anonymous_args = 0
673 .LVL78:
674 0000 10B5 push {r4, lr}
675 .LCFI4:
676 .cfi_def_cfa_offset 8
677 .cfi_offset 4, -8
678 .cfi_offset 14, -4
679 0002 0400 movs r4, r0
358:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** TimerStart( obj );
680 .loc 1 358 0
681 0004 FFF7FEFF bl TimerStop
682 .LVL79:
359:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
683 .loc 1 359 0
684 0008 2000 movs r0, r4
685 000a FFF7FEFF bl TimerStart
686 .LVL80:
360:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
687 .loc 1 360 0
688 @ sp needed
689 .LVL81:
690 000e 10BD pop {r4, pc}
691 .cfi_endproc
692 .LFE103:
694 .section .text.TimerSetValue,"ax",%progbits
695 .align 1
696 .global TimerSetValue
697 .syntax unified
698 .code 16
699 .thumb_func
700 .fpu softvfp
702 TimerSetValue:
703 .LFB104:
363:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** uint32_t minValue = 0;
704 .loc 1 363 0
705 .cfi_startproc
706 @ args = 0, pretend = 0, frame = 0
707 @ frame_needed = 0, uses_anonymous_args = 0
708 .LVL82:
709 0000 70B5 push {r4, r5, r6, lr}
710 .LCFI5:
711 .cfi_def_cfa_offset 16
712 .cfi_offset 4, -16
713 .cfi_offset 5, -12
714 .cfi_offset 6, -8
715 .cfi_offset 14, -4
716 0002 0400 movs r4, r0
717 .LVL83:
ARM GAS /tmp/cciA02i6.s page 26
365:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
718 .loc 1 365 0
719 0004 0800 movs r0, r1
720 .LVL84:
721 0006 FFF7FEFF bl HW_RTC_ms2Tick
722 .LVL85:
723 000a 0500 movs r5, r0
724 .LVL86:
367:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
725 .loc 1 367 0
726 000c 2000 movs r0, r4
727 .LVL87:
728 000e FFF7FEFF bl TimerStop
729 .LVL88:
369:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
730 .loc 1 369 0
731 0012 FFF7FEFF bl HW_RTC_GetMinimumTimeout
732 .LVL89:
371:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** {
733 .loc 1 371 0
734 0016 8542 cmp r5, r0
735 0018 02D2 bcs .L63
736 .LVL90:
737 .L62:
376:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** obj->ReloadValue = ticks;
738 .loc 1 376 0
739 001a 2060 str r0, [r4]
377:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
740 .loc 1 377 0
741 001c 6060 str r0, [r4, #4]
378:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
742 .loc 1 378 0
743 @ sp needed
744 .LVL91:
745 001e 70BD pop {r4, r5, r6, pc}
746 .LVL92:
747 .L63:
365:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
748 .loc 1 365 0
749 0020 2800 movs r0, r5
750 .LVL93:
751 0022 FAE7 b .L62
752 .cfi_endproc
753 .LFE104:
755 .section .text.TimerGetCurrentTime,"ax",%progbits
756 .align 1
757 .global TimerGetCurrentTime
758 .syntax unified
759 .code 16
760 .thumb_func
761 .fpu softvfp
763 TimerGetCurrentTime:
764 .LFB105:
381:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** uint32_t now = HW_RTC_GetTimerValue( );
765 .loc 1 381 0
766 .cfi_startproc
767 @ args = 0, pretend = 0, frame = 0
ARM GAS /tmp/cciA02i6.s page 27
768 @ frame_needed = 0, uses_anonymous_args = 0
769 0000 10B5 push {r4, lr}
770 .LCFI6:
771 .cfi_def_cfa_offset 8
772 .cfi_offset 4, -8
773 .cfi_offset 14, -4
382:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** return HW_RTC_Tick2ms(now);
774 .loc 1 382 0
775 0002 FFF7FEFF bl HW_RTC_GetTimerValue
776 .LVL94:
383:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
777 .loc 1 383 0
778 0006 FFF7FEFF bl HW_RTC_Tick2ms
779 .LVL95:
384:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
780 .loc 1 384 0
781 @ sp needed
782 000a 10BD pop {r4, pc}
783 .cfi_endproc
784 .LFE105:
786 .section .text.TimerGetElapsedTime,"ax",%progbits
787 .align 1
788 .global TimerGetElapsedTime
789 .syntax unified
790 .code 16
791 .thumb_func
792 .fpu softvfp
794 TimerGetElapsedTime:
795 .LFB106:
387:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** uint32_t nowInTicks = HW_RTC_GetTimerValue( );
796 .loc 1 387 0
797 .cfi_startproc
798 @ args = 0, pretend = 0, frame = 0
799 @ frame_needed = 0, uses_anonymous_args = 0
800 .LVL96:
801 0000 70B5 push {r4, r5, r6, lr}
802 .LCFI7:
803 .cfi_def_cfa_offset 16
804 .cfi_offset 4, -16
805 .cfi_offset 5, -12
806 .cfi_offset 6, -8
807 .cfi_offset 14, -4
808 0002 0500 movs r5, r0
388:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** uint32_t pastInTicks = HW_RTC_ms2Tick( past );
809 .loc 1 388 0
810 0004 FFF7FEFF bl HW_RTC_GetTimerValue
811 .LVL97:
812 0008 0400 movs r4, r0
813 .LVL98:
389:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** /* intentional wrap around. Works Ok if tick duation below 1ms */
814 .loc 1 389 0
815 000a 2800 movs r0, r5
816 .LVL99:
817 000c FFF7FEFF bl HW_RTC_ms2Tick
818 .LVL100:
391:./Middlewares/Third_Party/Lora/Utilities/timeServer.c **** }
819 .loc 1 391 0
ARM GAS /tmp/cciA02i6.s page 28
820 0010 201A subs r0, r4, r0
821 .LVL101:
822 0012 FFF7FEFF bl HW_RTC_Tick2ms
823 .LVL102:
392:./Middlewares/Third_Party/Lora/Utilities/timeServer.c ****
824 .loc 1 392 0
825 @ sp needed
826 .LVL103:
827 .LVL104:
828 0016 70BD pop {r4, r5, r6, pc}
829 .cfi_endproc
830 .LFE106:
832 .section .bss.TimerListHead,"aw",%nobits
833 .align 2
834 .set .LANCHOR0,. + 0
837 TimerListHead:
838 0000 00000000 .space 4
839 .text
840 .Letext0:
841 .file 3 "/usr/arm-none-eabi/include/machine/_default_types.h"
842 .file 4 "/usr/arm-none-eabi/include/sys/lock.h"
843 .file 5 "/usr/arm-none-eabi/include/sys/_types.h"
844 .file 6 "/usr/lib/gcc/arm-none-eabi/7.2.0/include/stddef.h"
845 .file 7 "/usr/arm-none-eabi/include/sys/reent.h"
846 .file 8 "/usr/arm-none-eabi/include/sys/_stdint.h"
847 .file 9 "/usr/arm-none-eabi/include/time.h"
848 .file 10 "/usr/arm-none-eabi/include/math.h"
849 .file 11 "Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h"
850 .file 12 "Middlewares/Third_Party/Lora/Utilities/utilities.h"
851 .file 13 "./Middlewares/Third_Party/Lora/Utilities/timeServer.h"
852 .file 14 "Inc/hw_rtc.h"
ARM GAS /tmp/cciA02i6.s page 29
DEFINED SYMBOLS
*ABS*:0000000000000000 timeServer.c
/tmp/cciA02i6.s:16 .text.TimerSetTimeout:0000000000000000 $t
/tmp/cciA02i6.s:22 .text.TimerSetTimeout:0000000000000000 TimerSetTimeout
/tmp/cciA02i6.s:76 .text.TimerInit:0000000000000000 $t
/tmp/cciA02i6.s:83 .text.TimerInit:0000000000000000 TimerInit
/tmp/cciA02i6.s:109 .text.TimerStart:0000000000000000 $t
/tmp/cciA02i6.s:116 .text.TimerStart:0000000000000000 TimerStart
/tmp/cciA02i6.s:336 .text.TimerStart:00000000000000a8 $d
/tmp/cciA02i6.s:343 .text.TimerIrqHandler:0000000000000000 $t
/tmp/cciA02i6.s:350 .text.TimerIrqHandler:0000000000000000 TimerIrqHandler
/tmp/cciA02i6.s:476 .text.TimerIrqHandler:0000000000000080 $d
/tmp/cciA02i6.s:481 .text.TimerStop:0000000000000000 $t
/tmp/cciA02i6.s:488 .text.TimerStop:0000000000000000 TimerStop
/tmp/cciA02i6.s:655 .text.TimerStop:000000000000007c $d
/tmp/cciA02i6.s:660 .text.TimerReset:0000000000000000 $t
/tmp/cciA02i6.s:667 .text.TimerReset:0000000000000000 TimerReset
/tmp/cciA02i6.s:695 .text.TimerSetValue:0000000000000000 $t
/tmp/cciA02i6.s:702 .text.TimerSetValue:0000000000000000 TimerSetValue
/tmp/cciA02i6.s:756 .text.TimerGetCurrentTime:0000000000000000 $t
/tmp/cciA02i6.s:763 .text.TimerGetCurrentTime:0000000000000000 TimerGetCurrentTime
/tmp/cciA02i6.s:787 .text.TimerGetElapsedTime:0000000000000000 $t
/tmp/cciA02i6.s:794 .text.TimerGetElapsedTime:0000000000000000 TimerGetElapsedTime
/tmp/cciA02i6.s:833 .bss.TimerListHead:0000000000000000 $d
/tmp/cciA02i6.s:837 .bss.TimerListHead:0000000000000000 TimerListHead
.debug_frame:0000000000000010 $d
UNDEFINED SYMBOLS
HW_RTC_GetMinimumTimeout
HW_RTC_GetTimerElapsedTime
HW_RTC_SetAlarm
HW_RTC_SetTimerContext
HW_RTC_GetTimerContext
HW_RTC_StopAlarm
HW_RTC_ms2Tick
HW_RTC_GetTimerValue
HW_RTC_Tick2ms