#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <uart_lib.h>
#include <stdio.h>
static unsigned char c;
static char line=0, status = 0,index = 0,mob[10] = " ", A[20]="asdfghjk";
ISR(USART_RXC_vect)
{
c = UDR;
if(index<16)
A[index]=c;
index++;
if (c==0x0A)
{
status|=1;
index = 0;
line=0;
}
else if(index == 5)
{
if((strncmp(A,"+CMTI",5) == 0))
{
status|=4;
line=1;
}
else if((strncmp(A,"+CLIP",5) == 0))
{
status|=2;
line=1;
}
else if((strncmp(A,"NO CA",5) == 0))
{
status&=~2;
line=1;
}
}
else if(index>11&index<22&(status>>1))mob[index-12]=c;
}
int main(void) {
DDRA|=(1<<0);
set_uartbaud(9600);
enable_uart_rxcint();
sei();
_delay_ms(2000);
sendstring_uart("AT\r");
sendstring_uart("at+clip=1\r");
_delay_ms(2000);
while (1)
{
if(status==3)
{
_delay_ms(100);
if(status>>1&(strncmp(mob,"9694324852",10) == 0))
{
sendstring_uart("ath\r");
PORTA^=(1<<0);
status=1;
}
}
}
}