#ifndef _RFM12_H_
#define _RFM12_H_

/* Includes ------------------------------------------------------------------*/
#include "stm32f10x.h"
extern unsigned char rxbuf[];    // Puffer für empfangene Daten
extern unsigned char txbuf[];    // Puffer für zu sendende Daten
/* Private typedef -----------------------------------------------------------*/
typedef union conver_ {
	unsigned long dw;
	unsigned int w[2];
	unsigned char b[4];
} CONVERTDW;

typedef union conver2_ {
	unsigned int w;
	unsigned char b[2];
} CONVERTW;


/* Private define ------------------------------------------------------------*/
extern unsigned short rf12_trans(unsigned short wert);					// transfer 1 word to/from module
extern void rf12_init(void);											// initialize module
extern void rf12_setfreq(unsigned short freq);							// set center frequency
extern void rf12_setbaud(unsigned short baud);							// set baudrate
extern void rf12_setpower(unsigned char power, unsigned char mod);		// set transmission settings
extern void rf12_setbandwidth(unsigned char bandwidth, unsigned char gain, unsigned char drssi);	// set receiver settings
extern void rf12_txdata(unsigned char *data, unsigned char number, unsigned char status, unsigned char id);		// transmit number of bytes from array
extern unsigned char rf12_rxdata(unsigned char *data, unsigned char *status, unsigned char *id);	// receive number of bytes into array
extern void rf12_rxmode(void);
extern unsigned rf12_data(void);
extern void rf12_stoprx(void);
extern void rf12_txbyte(unsigned char val);
extern unsigned char rf12_rxbyte(void);
extern void rf12_config(unsigned short baudrate, unsigned char channel, unsigned char power, unsigned char environment);	// config module

extern void rf12_txdata_TEST(unsigned char *data, unsigned char number);
extern void rf12_rxdata_test(unsigned char *data, unsigned char number);


#define RF12FREQ(freq)	((unsigned short)((freq-430.0)/0.0025))			// macro for calculating frequency value out of frequency in MHz
#define RF12FREQ868(freq)	((unsigned short)((freq-860.0)/0.005))			// macro for calculating frequency value out of frequency in MHz for 868MHz Band

#define QUIET		1
#define NORMAL		2
#define NOISY		3

#define MAX_BUF			64
#define CHANNEL			2			// Sende/Empfangskanal (0-3)
#define RF_BAUDRATE		20000		// Baudrate des RFM12
#define TX_TIMEOUT		150			// Maximale Wartezeit auf Daten in ms (max 500)
#define ANSWER_TIMEOUT	150			// Maximale Wartezeit auf die Bestätigung der Daten in ms (max 500)
#define RETRY			15			// Maximale Anzahl an Sendeversuchen

#define RECEIVED_OK			1		// Daten erfolgreich empfangen
#define RECEIVED_FAIL		2		// Daten fehlerhaft empfangen -> bitte nochmal senden
#define DATAINBUFFER		4		// Empfänger möchte Daten senden

#define RFM12_CS(a)	if (a)	\
					GPIOC->BSRR = GPIO_Pin_4;\
					else	\
					GPIOC->BRR = GPIO_Pin_4;



#endif

/*********************************************************************************************************
      END FILE
*********************************************************************************************************/
