📄 avrsms_api.s90
字号:
// 65 if( API_check_acknowledge() > 0 ) //Preferred storage = OK
RCALL API_check_acknowledge
CPI R16, 1
SBCI R17, 0
BRLT ??API_phoneinit_1
// 66 {
// 67 COM_putsf(AT_CNMI); //Send preferred indication of new messages
LDI R16, LOW(AT_CNMI)
LDI R17, (AT_CNMI) >> 8
CALL COM_putsf
// 68 COM_rx_on( ); //Receiver on
CALL COM_rx_on
// 69
// 70 if( API_check_acknowledge() > 0 ) //Preferred indication = OK
RCALL API_check_acknowledge
CPI R16, 1
SBCI R17, 0
BRLT ??API_phoneinit_2
// 71 {
// 72 return 1;
LDI R16, 1
LDI R17, 0
RET
// 73 }
// 74
// 75 else //Preferred indication != OK
// 76 {
// 77 return -2;
??API_phoneinit_2:
LDI R16, 254
LDI R17, 255
RET
// 78 }
// 79 }
// 80
// 81 else //Preferred storage != OK
// 82 {
// 83 return -1;
??API_phoneinit_1:
LDI R16, 255
LDI R17, 255
RET
// 84 }
// 85 }
// 86
// 87 else //Echo off != OK
// 88 {
// 89 return 0;
??API_phoneinit_0:
LDI R16, 0
LDI R17, 0
RET
CFI EndBlock cfiBlock0
// 90 }
// 91 }
// 92
// 93
RSEG CODE:CODE:NOROOT(1)
// 94 int API_deletemsg( int index ) //Delete message from index
API_deletemsg:
CFI Block cfiBlock1 Using cfiCommon0
CFI Function API_deletemsg
// 95 {
FUNCALL API_deletemsg, COM_rx_reset
LOCFRAME CSTACK, 2, STACK
LOCFRAME RSTACK, 2, STACK
FUNCALL API_deletemsg, COM_setSearchString
LOCFRAME CSTACK, 2, STACK
LOCFRAME RSTACK, 2, STACK
FUNCALL API_deletemsg, COM_putsf
LOCFRAME CSTACK, 2, STACK
LOCFRAME RSTACK, 2, STACK
FUNCALL API_deletemsg, COM_put_integer
LOCFRAME CSTACK, 2, STACK
LOCFRAME RSTACK, 2, STACK
FUNCALL API_deletemsg, COM_putsf
LOCFRAME CSTACK, 2, STACK
LOCFRAME RSTACK, 2, STACK
FUNCALL API_deletemsg, COM_rx_on
LOCFRAME CSTACK, 2, STACK
LOCFRAME RSTACK, 2, STACK
FUNCALL API_deletemsg, API_check_acknowledge
LOCFRAME CSTACK, 2, STACK
LOCFRAME RSTACK, 2, STACK
ST -Y, R25
CFI R25 Frame(CFA_Y, -1)
CFI CFA_Y Y+1
ST -Y, R24
CFI R24 Frame(CFA_Y, -2)
CFI CFA_Y Y+2
MOVW R25:R24, R17:R16
// 96 COM_rx_reset( ); //Reset system
CALL COM_rx_reset
// 97 COM_setSearchString( 0 ); //Set OK to be search string
LDI R16, 0
CALL COM_setSearchString
// 98 COM_putsf( AT_CMGD ); //Delete message
LDI R16, LOW(AT_CMGD)
LDI R17, (AT_CMGD) >> 8
CALL COM_putsf
// 99 COM_put_integer( index ); //@index
MOVW R17:R16, R25:R24
CALL COM_put_integer
// 100 COM_putsf( CRLF ); //CR+LF
LDI R16, LOW(CRLF)
LDI R17, (CRLF) >> 8
CALL COM_putsf
// 101 COM_rx_on( ); //Receiver on
CALL COM_rx_on
// 102
// 103 if( API_check_acknowledge() > 0 ) //Delete = OK
RCALL API_check_acknowledge
CPI R16, 1
SBCI R17, 0
BRLT ??API_deletemsg_0
// 104 {
// 105 return 1;
LDI R16, 1
LDI R17, 0
RJMP ??API_deletemsg_1
// 106 }
// 107
// 108 else
// 109 {
// 110 return 0; //Not successful delete
??API_deletemsg_0:
LDI R16, 0
LDI R17, 0
??API_deletemsg_1:
LD R24, Y+
CFI R24 SameValue
CFI CFA_Y Y+1
LD R25, Y+
CFI R25 SameValue
CFI CFA_Y Y+0
RET
CFI EndBlock cfiBlock1
// 111 }
// 112 }
// 113
// 114
RSEG CODE:CODE:NOROOT(1)
// 115 int API_sendmsg( unsigned char *msg )
API_sendmsg:
CFI Block cfiBlock2 Using cfiCommon0
CFI Function API_sendmsg
// 116 {
FUNCALL API_sendmsg, ZIP_compress
LOCFRAME CSTACK, 8, STACK
LOCFRAME RSTACK, 2, STACK
FUNCALL API_sendmsg, ZIP_itoh
LOCFRAME CSTACK, 8, STACK
LOCFRAME RSTACK, 2, STACK
FUNCALL API_sendmsg, COM_rx_reset
LOCFRAME CSTACK, 8, STACK
LOCFRAME RSTACK, 2, STACK
FUNCALL API_sendmsg, COM_setSearchString
LOCFRAME CSTACK, 8, STACK
LOCFRAME RSTACK, 2, STACK
FUNCALL API_sendmsg, COM_putsf
LOCFRAME CSTACK, 8, STACK
LOCFRAME RSTACK, 2, STACK
FUNCALL API_sendmsg, COM_put_integer
LOCFRAME CSTACK, 8, STACK
LOCFRAME RSTACK, 2, STACK
FUNCALL API_sendmsg, COM_putsf
LOCFRAME CSTACK, 8, STACK
LOCFRAME RSTACK, 2, STACK
FUNCALL API_sendmsg, COM_rx_on
LOCFRAME CSTACK, 8, STACK
LOCFRAME RSTACK, 2, STACK
FUNCALL API_sendmsg, API_check_acknowledge
LOCFRAME CSTACK, 8, STACK
LOCFRAME RSTACK, 2, STACK
FUNCALL API_sendmsg, COM_rx_reset
LOCFRAME CSTACK, 8, STACK
LOCFRAME RSTACK, 2, STACK
FUNCALL API_sendmsg, COM_setSearchString
LOCFRAME CSTACK, 8, STACK
LOCFRAME RSTACK, 2, STACK
FUNCALL API_sendmsg, COM_putsf
LOCFRAME CSTACK, 8, STACK
LOCFRAME RSTACK, 2, STACK
FUNCALL API_sendmsg, COM_puts
LOCFRAME CSTACK, 8, STACK
LOCFRAME RSTACK, 2, STACK
FUNCALL API_sendmsg, COM_puts
LOCFRAME CSTACK, 8, STACK
LOCFRAME RSTACK, 2, STACK
FUNCALL API_sendmsg, COM_putchar
LOCFRAME CSTACK, 8, STACK
LOCFRAME RSTACK, 2, STACK
FUNCALL API_sendmsg, COM_rx_on
LOCFRAME CSTACK, 8, STACK
LOCFRAME RSTACK, 2, STACK
FUNCALL API_sendmsg, API_check_acknowledge
LOCFRAME CSTACK, 8, STACK
LOCFRAME RSTACK, 2, STACK
CALL ?PROLOGUE4_L09
CFI R27 Frame(CFA_Y, -1)
CFI R26 Frame(CFA_Y, -2)
CFI R25 Frame(CFA_Y, -3)
CFI R24 Frame(CFA_Y, -4)
CFI CFA_Y Y+4
SBIW R29:R28, 4
CFI CFA_Y Y+8
// 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';
LDI R18, 0
ST Y, R18
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
LDI R20, LOW(msgbuff)
LDI R21, (msgbuff) >> 8
MOVW R19:R18, R29:R28
CALL ZIP_compress
MOVW R25:R24, R17:R16
OR R16, R17
BRNE ??API_sendmsg_0
// 127 {
// 128 return 0; //Something wrong happend during compression
LDI R16, 0
LDI R17, 0
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:
MOVW R19:R18, R29:R28
SUBI R18, 255
SBCI R19, 255
MOVW R17:R16, R25:R24
CALL ZIP_itoh
// 135 len = HEADER_LEN + payload_len - jump; //Calculate overall length
ADIW R25:R24, 12
LD R16, Y
LDI R17, 0
SUB R24, R16
SBC R25, R17
MOVW R27:R26, R25:R24
// 136
// 137 COM_rx_reset( ); //Reset system
CALL COM_rx_reset
// 138 COM_setSearchString( 2 ); //Set "> " to be search string
LDI R16, 2
CALL COM_setSearchString
// 139 COM_putsf( AT_CMGS ); //Send message
LDI R16, LOW(AT_CMGS)
LDI R17, (AT_CMGS) >> 8
CALL COM_putsf
// 140 COM_put_integer( len ); //with length
MOVW R17:R16, R27:R26
CALL COM_put_integer
// 141 COM_putsf( CRLF ); //CR+LF
LDI R16, LOW(CRLF)
LDI R17, (CRLF) >> 8
CALL COM_putsf
// 142 COM_rx_on( ); //Receiver on
CALL COM_rx_on
// 143
// 144 //Append payload
// 145 if( API_check_acknowledge() > 0 ) //Acknowledge = "> "
RCALL API_check_acknowledge
CPI R16, 1
SBCI R17, 0
BRLT ??API_sendmsg_2
// 146 {
// 147 COM_rx_reset( ); //Reset system
CALL COM_rx_reset
// 148 COM_setSearchString( 0 ); //Set "OK" to be search string
LDI R16, 0
CALL COM_setSearchString
// 149 COM_putsf( PDU_HEADER );
LDI R16, LOW(PDU_HEADER)
LDI R17, (PDU_HEADER) >> 8
CALL COM_putsf
// 150 COM_puts( payload_len_c );
MOVW R17:R16, R29:R28
SUBI R16, 255
SBCI R17, 255
CALL COM_puts
// 151 COM_puts( msgbuff );
LDI R16, LOW(msgbuff)
LDI R17, (msgbuff) >> 8
CALL COM_puts
// 152 COM_putchar( 26 );
LDI R16, 26
CALL COM_putchar
// 153 COM_rx_on( ); //Receiver on
CALL COM_rx_on
// 154
// 155 if( API_check_acknowledge() > 0 ) //Acknowledge = OK
RCALL API_check_acknowledge
CPI R16, 1
SBCI R17, 0
BRLT ??API_sendmsg_3
// 156 {
// 157 return 1;
LDI R16, 1
LDI R17, 0
RJMP ??API_sendmsg_1
// 158 }
// 159
// 160 else
// 161 {
// 162 return -2; //Acknowledge != OK
??API_sendmsg_3:
LDI R16, 254
LDI R17, 255
RJMP ??API_sendmsg_1
// 163 }
// 164
// 165 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -