#define cbi(port,bit)   port&=~(1<<bit);
#define sbi(port,bit)   port|=(1<<bit);
#define uchar           unsigned char
#include <mega128.h>
#include <delay.h>
#include <stdio.h> 
#include "n3310lcd.c"
#include "rf22.c"

void main(void)
{
unsigned char cnt,i,tmp;
unsigned char rx_tmp[20];

LcdInit();

sprintf (lcd_buf, "build [%u]",__BUILD__); 
LcdString(1,1);
sprintf (lcd_buf, "загрузка..."); 
LcdString(1,6);
LcdUpdate();
delay_ms(1000);

sprintf (lcd_buf, "активация РМ..."); 
LcdString(1,6);
LcdUpdate();
delay_ms(100);
i=0;
while(1)
    {
    rf22_init();
    delay_ms(250);
    if (++i > 128)
        {
        LcdClear();
        sprintf (lcd_buf, "ОШИБКА"); 
        LcdString(1,1);
        sprintf (lcd_buf, "Активации РМ"); 
        LcdString(1,2);
        LcdUpdate();
        while(1){}
        }
    tmp     = rf22_read(REGISTER_DEVICE_VERSION);
    sprintf (lcd_buf, "попытка[%u]",i); 
    LcdString(1,3);
    sprintf (lcd_buf, "read[%u]",tmp); 
    LcdString(1,5);
    sprintf (lcd_buf, "активация РМ..."); 
    LcdString(1,6);
    LcdUpdate();
    if (tmp == 0x06)
        break;
    }
sprintf (lcd_buf, "частота"); 
LcdString(1,6);
LcdUpdate();
//rf22_setfreq(RF22FREQ(869.545));
//rf22_setfreq(RF22FREQ(868+1.545));
rf22_setfreq(RF22FREQ(434+1.545));
delay_ms(100);
sprintf (lcd_buf, "rx mode     "); 
LcdString(1,6);
LcdUpdate();
rf22_rxmode();
delay_ms(100);
i=0;
LcdClear();

/*
//TX->
while(1)
    {
    sprintf (lcd_buf, "ver[%u]nIRQ[%u]",rf22_read(REGISTER_DEVICE_VERSION),nIRQ); 
    LcdString(1,3);
    sprintf (lcd_buf, "stat[%u]",rf22_read(REGISTER_DEVICE_STATUS)); 
    LcdString(1,4);
    sprintf (lcd_buf, "txP[%u]",rf22_read(REGISTER_TX_POWER)); 
    LcdString(1,5);
    sprintf (lcd_buf, "отпр[%u]",++i); 
    LcdString(1,6);

    delay_ms(200);

    LcdUpdate();

    rf22_sendpacket((unsigned char*)"HALLO",5);
    delay_ms(500);
    }
//<-TX
*/

//->RX
while(1)
    {
    cnt = rf22_getpacket(rx_tmp);

    sprintf (lcd_buf, "cnt[%u]nIRQ[%u]",cnt,nIRQ); 
    LcdString(1,2);
    sprintf (lcd_buf, "ver[%u]len[%u]",rf22_read(REGISTER_DEVICE_VERSION),rf22_read(REGISTER_RECEIVER_PACKET_LENGTH)); 
    LcdString(1,3);
    sprintf (lcd_buf, "stat[%u]",rf22_read(REGISTER_DEVICE_STATUS)); 
    LcdString(1,4);
    sprintf (lcd_buf, "P[%u]rssi[%u]",rf22_read(REGISTER_TX_POWER),rf22_read(REGISTER_RSSI)); 
    LcdString(1,5);
    sprintf (lcd_buf, "try[%u]",++i); 
    LcdString(1,6);

    LcdUpdate();
    delay_ms(500);
    if (cnt != 0)
        {
        sprintf (lcd_buf, "rcv:%u",rx_tmp); 
        LcdString(1,6);
        LcdUpdate();
        delay_ms(5000);
        }
    }
//<-RX

}
