📄 avrsms_api.lst
字号:
\ 00000026 ........ CALL COM_rx_on
102
103 if( API_check_acknowledge() > 0 ) //Delete = OK
\ 0000002A .... RCALL API_check_acknowledge
\ 0000002C 3001 CPI R16, 1
\ 0000002E 4010 SBCI R17, 0
\ 00000030 F01C BRLT ??API_deletemsg_0
104 {
105 return 1;
\ 00000032 E001 LDI R16, 1
\ 00000034 E010 LDI R17, 0
\ 00000036 C002 RJMP ??API_deletemsg_1
106 }
107
108 else
109 {
110 return 0; //Not successful delete
\ ??API_deletemsg_0:
\ 00000038 E000 LDI R16, 0
\ 0000003A E010 LDI R17, 0
\ ??API_deletemsg_1:
\ 0000003C 9189 LD R24, Y+
\ 0000003E 9199 LD R25, Y+
\ 00000040 9508 RET
111 }
112 }
113
114
\ In segment CODE, align 2, keep-with-next
115 int API_sendmsg( unsigned char *msg )
\ API_sendmsg:
116 {
\ 00000000 ........ CALL ?PROLOGUE4_L09
\ 00000004 9724 SBIW R29:R28, 4
117 //Local variables
118 int payload_len, len; //<! Total length of message, and length of user text
119 unsigned char payload_len_c[3], jump;
120
121 //Init
122 payload_len = len = 0;
123 payload_len_c[0] = jump = '\0';
\ 00000006 E020 LDI R18, 0
\ 00000008 8328 ST Y, R18
\ 0000000A 8329 STD Y+1, R18
124
125 //If necessary turn interrupts off
126 if( ( payload_len = ZIP_compress( msg, &jump, msgbuff) ) == 0 ) //<! Convert user text to pdu format
\ 0000000C .... LDI R20, LOW(msgbuff)
\ 0000000E .... LDI R21, (msgbuff) >> 8
\ 00000010 019E MOVW R19:R18, R29:R28
\ 00000012 ........ CALL ZIP_compress
\ 00000016 01C8 MOVW R25:R24, R17:R16
\ 00000018 2B01 OR R16, R17
\ 0000001A F419 BRNE ??API_sendmsg_0
127 {
128 return 0; //Something wrong happend during compression
\ 0000001C E000 LDI R16, 0
\ 0000001E E010 LDI R17, 0
\ 00000020 C045 RJMP ??API_sendmsg_1
129 }
130
131 //Compression ok
132 else
133 {
134 ZIP_itoh(payload_len, &payload_len_c[0]); //Convert Integer payload to hex in string format
\ ??API_sendmsg_0:
\ 00000022 019E MOVW R19:R18, R29:R28
\ 00000024 5F2F SUBI R18, 255
\ 00000026 4F3F SBCI R19, 255
\ 00000028 018C MOVW R17:R16, R25:R24
\ 0000002A ........ CALL ZIP_itoh
135 len = HEADER_LEN + payload_len - jump; //Calculate overall length
\ 0000002E 960C ADIW R25:R24, 12
\ 00000030 8108 LD R16, Y
\ 00000032 E010 LDI R17, 0
\ 00000034 1B80 SUB R24, R16
\ 00000036 0B91 SBC R25, R17
\ 00000038 01DC MOVW R27:R26, R25:R24
136
137 COM_rx_reset( ); //Reset system
\ 0000003A ........ CALL COM_rx_reset
138 COM_setSearchString( 2 ); //Set "> " to be search string
\ 0000003E E002 LDI R16, 2
\ 00000040 ........ CALL COM_setSearchString
139 COM_putsf( AT_CMGS ); //Send message
\ 00000044 .... LDI R16, LOW(AT_CMGS)
\ 00000046 .... LDI R17, (AT_CMGS) >> 8
\ 00000048 ........ CALL COM_putsf
140 COM_put_integer( len ); //with length
\ 0000004C 018D MOVW R17:R16, R27:R26
\ 0000004E ........ CALL COM_put_integer
141 COM_putsf( CRLF ); //CR+LF
\ 00000052 .... LDI R16, LOW(CRLF)
\ 00000054 .... LDI R17, (CRLF) >> 8
\ 00000056 ........ CALL COM_putsf
142 COM_rx_on( ); //Receiver on
\ 0000005A ........ CALL COM_rx_on
143
144 //Append payload
145 if( API_check_acknowledge() > 0 ) //Acknowledge = "> "
\ 0000005E .... RCALL API_check_acknowledge
\ 00000060 3001 CPI R16, 1
\ 00000062 4010 SBCI R17, 0
\ 00000064 F10C BRLT ??API_sendmsg_2
146 {
147 COM_rx_reset( ); //Reset system
\ 00000066 ........ CALL COM_rx_reset
148 COM_setSearchString( 0 ); //Set "OK" to be search string
\ 0000006A E000 LDI R16, 0
\ 0000006C ........ CALL COM_setSearchString
149 COM_putsf( PDU_HEADER );
\ 00000070 .... LDI R16, LOW(PDU_HEADER)
\ 00000072 .... LDI R17, (PDU_HEADER) >> 8
\ 00000074 ........ CALL COM_putsf
150 COM_puts( payload_len_c );
\ 00000078 018E MOVW R17:R16, R29:R28
\ 0000007A 5F0F SUBI R16, 255
\ 0000007C 4F1F SBCI R17, 255
\ 0000007E ........ CALL COM_puts
151 COM_puts( msgbuff );
\ 00000082 .... LDI R16, LOW(msgbuff)
\ 00000084 .... LDI R17, (msgbuff) >> 8
\ 00000086 ........ CALL COM_puts
152 COM_putchar( 26 );
\ 0000008A E10A LDI R16, 26
\ 0000008C ........ CALL COM_putchar
153 COM_rx_on( ); //Receiver on
\ 00000090 ........ CALL COM_rx_on
154
155 if( API_check_acknowledge() > 0 ) //Acknowledge = OK
\ 00000094 .... RCALL API_check_acknowledge
\ 00000096 3001 CPI R16, 1
\ 00000098 4010 SBCI R17, 0
\ 0000009A F01C BRLT ??API_sendmsg_3
156 {
157 return 1;
\ 0000009C E001 LDI R16, 1
\ 0000009E E010 LDI R17, 0
\ 000000A0 C005 RJMP ??API_sendmsg_1
158 }
159
160 else
161 {
162 return -2; //Acknowledge != OK
\ ??API_sendmsg_3:
\ 000000A2 EF0E LDI R16, 254
\ 000000A4 EF1F LDI R17, 255
\ 000000A6 C002 RJMP ??API_sendmsg_1
163 }
164
165 }
166
167 //Abort
168 else
169 {
170 return -1; //Acknowledge != "> "
\ ??API_sendmsg_2:
\ 000000A8 EF0F LDI R16, 255
\ 000000AA EF1F LDI R17, 255
\ ??API_sendmsg_1:
\ 000000AC 9624 ADIW R29:R28, 4
\ 000000AE E0E4 LDI R30, 4
\ 000000B0 ........ JMP ?EPILOGUE_B4_L09
171 }
172 }
173 }
174
175
\ In segment CODE, align 2, keep-with-next
176 int API_readmsg( int ind )
\ API_readmsg:
177 {
\ 00000000 ........ CALL ?PROLOGUE4_L09
\ 00000004 01D8 MOVW R27:R26, R17:R16
178 //Local variables
179 unsigned char *encodedmsg;
180 int i;
181
182 //Init
183 //encodedmsg = '\0';
184 i = 0;
185
186 COM_rx_reset( ); //Reset system
\ 00000006 ........ CALL COM_rx_reset
187 COM_setSearchString( 0 ); //Set OK to be search string
\ 0000000A E000 LDI R16, 0
\ 0000000C ........ CALL COM_setSearchString
188 COM_putsf( AT_CMGR ); //Delete message
\ 00000010 .... LDI R16, LOW(AT_CMGR)
\ 00000012 .... LDI R17, (AT_CMGR) >> 8
\ 00000014 ........ CALL COM_putsf
189 COM_put_integer( ind ); //@index
\ 00000018 018D MOVW R17:R16, R27:R26
\ 0000001A ........ CALL COM_put_integer
190 COM_putsf( CRLF ); //CR+LF
\ 0000001E .... LDI R16, LOW(CRLF)
\ 00000020 .... LDI R17, (CRLF) >> 8
\ 00000022 ........ CALL COM_putsf
191 COM_rx_on( ); //Receiver on
\ 00000026 ........ CALL COM_rx_on
192
193 if( API_check_acknowledge() > 0 ) //Delete = OK
\ 0000002A .... RCALL API_check_acknowledge
\ 0000002C 3001 CPI R16, 1
\ 0000002E 4010 SBCI R17, 0
\ 00000030 F054 BRLT ??API_readmsg_0
194 {
195 encodedmsg = TOOLS__decodeCMGR( ind );
\ 00000032 018D MOVW R17:R16, R27:R26
\ 00000034 ........ CALL TOOLS__decodeCMGR
196 i = ZIP_decompress( encodedmsg, msgbuff );
\ 00000038 .... LDI R18, LOW(msgbuff)
\ 0000003A .... LDI R19, (msgbuff) >> 8
\ 0000003C ........ CALL ZIP_decompress
197
198 //COM_puts( msgbuff );
199
200 return 1;
\ 00000040 E001 LDI R16, 1
\ 00000042 E010 LDI R17, 0
\ 00000044 C002 RJMP ??API_readmsg_1
201 }
202
203 else
204 {
205 return 0; //Not successful delete
\ ??API_readmsg_0:
\ 00000046 E000 LDI R16, 0
\ 00000048 E010 LDI R17, 0
\ ??API_readmsg_1:
\ 0000004A E0E4 LDI R30, 4
\ 0000004C ........ JMP ?EPILOGUE_B4_L09
206 }
207 }
208
209
210 //Will check response from phone...if\r\nOK\r\n is received...everything is fine...else an error har occured
\ In segment CODE, align 2, keep-with-next
211 int API_check_acknowledge( void )
\ API_check_acknowledge:
212 {
\ 00000000 93BA ST -Y, R27
\ 00000002 93AA ST -Y, R26
213 static unsigned int i, ii; //Loal variables
214
215 for( i = 0; ( rx_ack == 0 ) && ( i < 65535 ); i++ ) //Wait loop
\ 00000004 E000 LDI R16, 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -