📄 sampleapp.lst
字号:
\ 000000 REQUIRE __INIT_XDATA_Z
109 devStates_t SampleApp_NwkState;
\ SampleApp_NwkState:
\ 000000 DS 1
110
\ In segment XDATA_Z, align 1, keep-with-next
\ 000000 REQUIRE __INIT_XDATA_Z
111 uint8 SampleApp_TransID; // This is the unique message ID (counter)
\ SampleApp_TransID:
\ 000000 DS 1
112
\ In segment XDATA_Z, align 1, keep-with-next
\ 000000 REQUIRE __INIT_XDATA_Z
113 afAddrType_t SampleApp_Periodic_DstAddr;
\ SampleApp_Periodic_DstAddr:
\ 000000 DS 4
\ In segment XDATA_Z, align 1, keep-with-next
\ 000000 REQUIRE __INIT_XDATA_Z
114 afAddrType_t SampleApp_Flash_DstAddr;
\ SampleApp_Flash_DstAddr:
\ 000000 DS 4
115
\ In segment XDATA_Z, align 1, keep-with-next
\ 000000 REQUIRE __INIT_XDATA_Z
116 aps_Group_t SampleApp_Group;
\ SampleApp_Group:
\ 000000 DS 18
117
\ In segment XDATA_Z, align 1, keep-with-next
\ 000000 REQUIRE __INIT_XDATA_Z
118 uint8 SampleAppPeriodicCounter = 0;
\ SampleAppPeriodicCounter:
\ 000000 DS 1
\ In segment XDATA_Z, align 1, keep-with-next
\ 000000 REQUIRE __INIT_XDATA_Z
119 uint8 SampleAppFlashCounter = 0;
\ SampleAppFlashCounter:
\ 000000 DS 1
120
121 /*********************************************************************
122 * LOCAL FUNCTIONS
123 */
124 void SampleApp_HandleKeys( uint8 shift, uint8 keys );
125 void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pckt );
126 void SampleApp_SendPeriodicMessage( void );
127 void SampleApp_SendFlashMessage( uint16 flashTime );
128
129 /*********************************************************************
130 * NETWORK LAYER CALLBACKS
131 */
132
133 /*********************************************************************
134 * PUBLIC FUNCTIONS
135 */
136
137 /*********************************************************************
138 * @fn SampleApp_Init
139 *
140 * @brief Initialization function for the Generic App Task.
141 * This is called during initialization and should contain
142 * any application specific initialization (ie. hardware
143 * initialization/setup, table initialization, power up
144 * notificaiton ... ).
145 *
146 * @param task_id - the ID assigned by OSAL. This ID should be
147 * used to send messages and set timers.
148 *
149 * @return none
150 */
\ In segment BANKED_CODE, align 1, keep-with-next
151 void SampleApp_Init( uint8 task_id )
\ SampleApp_Init:
152 {
\ 000000 74F5 MOV A,#-0xb
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 11
\ 000005 ; Auto size: 0
153 SampleApp_TaskID = task_id;
\ 000005 E9 MOV A,R1
\ 000006 90.... MOV DPTR,#SampleApp_TaskID
\ 000009 F0 MOVX @DPTR,A
154 SampleApp_NwkState = DEV_INIT;
\ 00000A 7401 MOV A,#0x1
\ 00000C 90.... MOV DPTR,#SampleApp_NwkState
\ 00000F F0 MOVX @DPTR,A
155 SampleApp_TransID = 0;
\ 000010 E4 CLR A
\ 000011 90.... MOV DPTR,#SampleApp_TransID
\ 000014 F0 MOVX @DPTR,A
156
157 // Device hardware initialization can be added here or in main() (Zmain.c).
158 // If the hardware is application specific - add it here.
159 // If the hardware is other parts of the device add it in main().
160
161 #if defined ( SOFT_START )
162 // The "Demo" target is setup to have SOFT_START and HOLD_AUTO_START
163 // SOFT_START is a compile option that allows the device to start
164 // as a coordinator if one isn't found.
165 // We are looking at a jumper (defined in SampleAppHw.c) to be jumpered
166 // together - if they are - we will start up a coordinator. Otherwise,
167 // the device will start as a router.
168 if ( readCoordinatorJumper() )
169 zgDeviceLogicalType = ZG_DEVICETYPE_COORDINATOR;
170 else
171 zgDeviceLogicalType = ZG_DEVICETYPE_ROUTER;
172 #endif // SOFT_START
173
174 #if defined ( HOLD_AUTO_START )
175 // HOLD_AUTO_START is a compile option that will surpress ZDApp
176 // from starting the device and wait for the application to
177 // start the device.
178 ZDOInitDevice(0);
179 #endif
180
181 // Setup for the periodic message's destination address
182 // Broadcast to everyone
183 SampleApp_Periodic_DstAddr.addrMode = (afAddrMode_t)AddrBroadcast;
\ 000015 740F MOV A,#0xf
\ 000017 90.... MOV DPTR,#(SampleApp_Periodic_DstAddr + 2)
\ 00001A F0 MOVX @DPTR,A
184 SampleApp_Periodic_DstAddr.endPoint = SAMPLEAPP_ENDPOINT;
\ 00001B 7414 MOV A,#0x14
\ 00001D 90.... MOV DPTR,#(SampleApp_Periodic_DstAddr + 3)
\ 000020 F0 MOVX @DPTR,A
185 SampleApp_Periodic_DstAddr.addr.shortAddr = 0xFFFF;
\ 000021 90.... MOV DPTR,#SampleApp_Periodic_DstAddr
\ 000024 74FF MOV A,#-0x1
\ 000026 F0 MOVX @DPTR,A
\ 000027 A3 INC DPTR
\ 000028 F0 MOVX @DPTR,A
186
187 // Setup for the flash command's destination address - Group 1
188 SampleApp_Flash_DstAddr.addrMode = (afAddrMode_t)afAddrGroup;
\ 000029 7401 MOV A,#0x1
\ 00002B 90.... MOV DPTR,#(SampleApp_Flash_DstAddr + 2)
\ 00002E F0 MOVX @DPTR,A
189 SampleApp_Flash_DstAddr.endPoint = SAMPLEAPP_ENDPOINT;
\ 00002F 7414 MOV A,#0x14
\ 000031 90.... MOV DPTR,#(SampleApp_Flash_DstAddr + 3)
\ 000034 F0 MOVX @DPTR,A
190 SampleApp_Flash_DstAddr.addr.shortAddr = SAMPLEAPP_FLASH_GROUP;
\ 000035 90.... MOV DPTR,#SampleApp_Flash_DstAddr
\ 000038 7401 MOV A,#0x1
\ 00003A F0 MOVX @DPTR,A
\ 00003B A3 INC DPTR
\ 00003C E4 CLR A
\ 00003D F0 MOVX @DPTR,A
191
192 // Fill out the endpoint description.
193 SampleApp_epDesc.endPoint = SAMPLEAPP_ENDPOINT;
\ 00003E 7414 MOV A,#0x14
\ 000040 90.... MOV DPTR,#SampleApp_epDesc
\ 000043 F0 MOVX @DPTR,A
194 SampleApp_epDesc.task_id = &SampleApp_TaskID;
\ 000044 90.... MOV DPTR,#(SampleApp_epDesc + 1)
\ 000047 74.. MOV A,#(SampleApp_TaskID & 0xff)
\ 000049 F0 MOVX @DPTR,A
\ 00004A A3 INC DPTR
\ 00004B 74.. MOV A,#((SampleApp_TaskID >> 8) & 0xff)
\ 00004D F0 MOVX @DPTR,A
195 SampleApp_epDesc.simpleDesc
196 = (SimpleDescriptionFormat_t *)&SampleApp_SimpleDesc;
\ 00004E 90.... MOV DPTR,#(SampleApp_epDesc + 3)
\ 000051 74.. MOV A,#(SampleApp_SimpleDesc & 0xff)
\ 000053 F0 MOVX @DPTR,A
\ 000054 A3 INC DPTR
\ 000055 74.. MOV A,#((SampleApp_SimpleDesc >> 8) & 0xff)
\ 000057 F0 MOVX @DPTR,A
197 SampleApp_epDesc.latencyReq = noLatencyReqs;
\ 000058 E4 CLR A
\ 000059 90.... MOV DPTR,#(SampleApp_epDesc + 5)
\ 00005C F0 MOVX @DPTR,A
198
199 // Register the endpoint description with the AF
200 afRegister( &SampleApp_epDesc );
\ 00005D ; Setup parameters for call to function afRegister
\ 00005D 7A.. MOV R2,#(SampleApp_epDesc & 0xff)
\ 00005F 7B.. MOV R3,#((SampleApp_epDesc >> 8) & 0xff)
\ 000061 90.... MOV DPTR,#(afRegister & 0xffff)
\ 000064 74.. MOV A,#((afRegister >> 16) & 0xff)
\ 000066 12.... LCALL ?BCALL ; Banked call to: DPTR()
201
202 // Register for all key events - This app will handle all key events
203 RegisterForKeys( SampleApp_TaskID );
\ 000069 ; Setup parameters for call to function RegisterForKeys
\ 000069 90.... MOV DPTR,#SampleApp_TaskID
\ 00006C E0 MOVX A,@DPTR
\ 00006D F9 MOV R1,A
\ 00006E 90.... MOV DPTR,#(RegisterForKeys & 0xffff)
\ 000071 74.. MOV A,#((RegisterForKeys >> 16) & 0xff)
\ 000073 12.... LCALL ?BCALL ; Banked call to: DPTR()
204
205 // By default, all devices start out in Group 1
206 SampleApp_Group.ID = 0x0001;
\ 000076 90.... MOV DPTR,#SampleApp_Group
\ 000079 7401 MOV A,#0x1
\ 00007B F0 MOVX @DPTR,A
\ 00007C A3 INC DPTR
\ 00007D E4 CLR A
\ 00007E F0 MOVX @DPTR,A
207 osal_memcpy( SampleApp_Group.name, "Group 1", 7 );
\ 00007F ; Setup parameters for call to function osal_memcpy
\ 00007F 75.... MOV ?V0 + 0,#(`?<Constant "Group 1">` & 0xff)
\ 000082 75.... MOV ?V0 + 1,#((`?<Constant "Group 1">` >> 8) & 0xff)
\ 000085 F5.. MOV ?V0 + 2,A
\ 000087 78.. MOV R0,#?V0 + 0
\ 000089 12.... LCALL ?PUSH_XSTACK_I_THREE
\ 00008C 7C07 MOV R4,#0x7
\ 00008E 7D00 MOV R5,#0x0
\ 000090 7A.. MOV R2,#((SampleApp_Group + 2) & 0xff)
\ 000092 7B.. MOV R3,#(((SampleApp_Group + 2) >> 8) & 0xff)
\ 000094 90.... MOV DPTR,#(osal_memcpy & 0xffff)
\ 000097 74.. MOV A,#((osal_memcpy >> 16) & 0xff)
\ 000099 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 00009C 7403 MOV A,#0x3
\ 00009E 12.... LCALL ?DEALLOC_XSTACK8
208 aps_AddGroup( SAMPLEAPP_ENDPOINT, &SampleApp_Group );
\ 0000A1 ; Setup parameters for call to function aps_AddGroup
\ 0000A1 7A.. MOV R2,#(SampleApp_Group & 0xff)
\ 0000A3 7B.. MOV R3,#((SampleApp_Group >> 8) & 0xff)
\ 0000A5 7914 MOV R1,#0x14
\ 0000A7 90.... MOV DPTR,#(aps_AddGroup & 0xffff)
\ 0000AA 74.. MOV A,#((aps_AddGroup >> 16) & 0xff)
\ 0000AC 12.... LCALL ?BCALL ; Banked call to: DPTR()
209
210 #if defined ( LCD_SUPPORTED )
211 HalLcdWriteString( "SampleApp", HAL_LCD_LINE_1 );
212 #endif
213 }
\ 0000AF 7F03 MOV R7,#0x3
\ 0000B1 02.... LJMP ?BANKED_LEAVE_XDATA
214
215 /*********************************************************************
216 * @fn SampleApp_ProcessEvent
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -