//
void RFM22B_config_for_PacketHandlerMode(void)
{
	// alle default Werte einlesen nach Restet
 	RFM22B_burst_read (0x00, (byte*)&RFM22B_Register, RFM22B_Register_count);

// meine Werte modifizieren
	RFM22B_Register._0x05_Interrupt_Enablel1._byte = 0x00;	// clear the complete byte
	RFM22B_Register._0x05_Interrupt_Enablel1.CRC_Error = 1;
	RFM22B_Register._0x05_Interrupt_Enablel1.Valid_Packet_Received = 1;
	RFM22B_Register._0x05_Interrupt_Enablel1.Packet_Sent = 1;
	//
	RFM22B_Register._0x06_Interrupt_Enablel2._byte = 0x00;
	RFM22B_Register._0x06_Interrupt_Enablel2.Valid_Preamble_Detected = 1; // read RSSI now
	//
	RFM22B_Register._0x07_Op_Mode_Funct_Ctrl1._byte = 0x00;
	RFM22B_Register._0x07_Op_Mode_Funct_Ctrl1.TuneMode_PLL_on = yes;

	RFM22B_Register._0x08_Op_Mode_Funct_Ctrl2.Automatic_Transmission = yes;
	RFM22B_Register._0x08_Op_Mode_Funct_Ctrl2.RX_Multi_Packet = no;
	RFM22B_Register._0x0A_Microcontroller_Outp_Clock.Clock = _4MHz; // für USB Transmitter
	//
	//RFM22B_Register._0x0B_GPIO_Config0.Pin_Fct_Select = TX_State_output;
	//RFM22B_Register._0x0C_GPIO_Config1.Pin_Fct_Select = RX_State_output;
	RFM22B_Register._0x0D_GPIO_Config2.Pin_Fct_Select = MC_Clock_output;
	// 0x0E def.
	// 0x10 def. // 0x11 read ADC8
	//RFM22B_Register._0x12_Temperature_Sensor_Calibr = 0x20;
	//RFM22B_Register._0x13_Temperature_Value_Offs = 0xF6; // 0xF6 = -10
	// 0x14 // 0x15 // 0x16 // 0x17r // 0x18r // 0x19 // 0x1A // 0x1B

	RFM22B_Register._0x1E_AFC_Timing_Ctrl._byte = 0x0A;
	//RFM22B_Register._0x1F_Clock_Recovery_Gearshift_Overr = 0x03; // 3 is the default after POR
	// 0x26 // 0x27 // 0x28 // 0x29 // 0x2A - 0x2F

// test
	//RFM22B_Register._0x27_RSSI_Threshold_for_Clear_Channel_Indicator = 100; // ist ca -73dBm

	RFM22B_Register._0x30_Data_Access_Ctrl._byte = 0x00;
	RFM22B_Register._0x30_Data_Access_Ctrl.CRC_Enable = yes;
	RFM22B_Register._0x30_Data_Access_Ctrl.CRC_Polynomial_Sel = CRC_16_IBM;
	RFM22B_Register._0x30_Data_Access_Ctrl.Enable_Packet_TX_Handling = yes;
	RFM22B_Register._0x30_Data_Access_Ctrl.Enable_Packet_RX_Handling = yes;
	// 0x31
	RFM22B_Register._0x32_Header_Ctrl1.Broadcast_Addr_Check_Enable_for = no_Broadcast; // 0b0000
	RFM22B_Register._0x32_Header_Ctrl1.Header_check_for = Check_Header_32; //

	RFM22B_Register._0x33_Header_Ctrl2._byte = 0x00;
        //TODO we can use fixed packet lenght - dann wird die Packetlänge nicht mit übertragen
	RFM22B_Register._0x33_Header_Ctrl2.Fix_Packet_Length = no;
	RFM22B_Register._0x33_Header_Ctrl2.Header_Length = Header_32; // 0b010;
	RFM22B_Register._0x33_Header_Ctrl2.Sync_Word_Length = Sync_Word_32; // 0b01;

	RFM22B_Register._0x34_Preamble_Length = 32/nibble; // 32 bit
	RFM22B_Register._0x35_Preamble_Detect_Ctrl.Detection_Threshold = 16/nibble;  // 16 bit
	RFM22B_Register._0x36_Sync_Word3 = 0x2B;
	RFM22B_Register._0x37_Sync_Word2 = 0xB4;

	RFM22B_Register._0x3A_Transmit_Header3 = 'H'; // Houston
	RFM22B_Register._0x3B_Transmit_Header2 = 'O'; 
	//RFM22B_Register._0x3C_Transmit_Header1 = 'U';
	//RFM22B_Register._0x3D_Transmit_Header0 = 'S';

        // packet lenght
        RFM22B_Register._0x3E_transmit_Packet_Length = Out_Command_Size_for_Kopter;

        RFM22B_Register._0x3F_Check_Header3 = 'D'; // to Kopter
	RFM22B_Register._0x40_Check_Header2 = 'R'; //
	//RFM22B_Register._0x41_Check_Header1 = 'O'; //
	//RFM22B_Register._0x42_Check_Header0 = 'N'; //


	//0x43 // 0x44 //0x45 //0x46 // 0x47r // 0x48r // 0x49r // 0x4Ar
	// 0x4Br recieved packet length
	// 0x4C reserved // 0x4D reserved // 0x4E reserved // 0x4F reserved

	RFM22B_Register._0x6D_TX_Power._byte = 0x00;
	RFM22B_Register._0x6D_TX_Power.TX_Power = _5dBm;
        //OPTION we can set a higer datarate if needed
	RFM22B_Register._0x6E_TX_Data_Rate1 = 0x19;	//
	RFM22B_Register._0x6F_TX_Data_Rate0 = 0x9A;	// 100 kbps

// test
	RFM22B_Register._0x09_30MHz_Crystal_Osci_LoadCap.XLC = 0x4D; //=0x48; // 7bit wide - 127 steps
	RFM22B_Register._0x09_30MHz_Crystal_Osci_LoadCap.XTALshift = 1; // 0
        // 100 kbps
	RFM22B_Register._0x1C_IF_Filter_Bandwidth._byte = 0x8A;
	RFM22B_Register._0x1D_AFC_Loop_Gearshift_Overr._byte = 0x40;
	RFM22B_Register._0x20_Clock_Recovery_Oversampling_Rate = 0x3C;
	RFM22B_Register._0x21_Clock_Recovery_Offset2 = 0x01;
	RFM22B_Register._0x22_Clock_Recovery_Offset1 = 0x11;
	RFM22B_Register._0x23_Clock_Recovery_Offset0 = 0x11;
	RFM22B_Register._0x24_Clock_Recovery_Timing_Loop_Gain1 = 0x07;
	RFM22B_Register._0x25_Clock_Recovery_Timing_Loop_Gain0 = 0xFF;
	RFM22B_Register._0x2A_AFC_Limiter = 0x50;
// in question

	RFM22B_Register._0x1F_Clock_Recovery_Gearshift_Overr = 0x03;
	RFM22B_Register._0x70_Modulation_Mode_Ctrl1._byte = 0x00;
	//RFM22B_Register._0x70_Modulation_Mode_Ctrl1.Data_Whitening_on = yes;
	RFM22B_Register._0x70_Modulation_Mode_Ctrl1.Manchester_Coding_on = yes;
	RFM22B_Register._0x70_Modulation_Mode_Ctrl1.Manchester_Data_Inversion_on = yes;
  	RFM22B_Register._0x70_Modulation_Mode_Ctrl1.Manchester_Preamble_Polarity = yes;	// 0x0F
	//RFM22B_Register._0x70_Modulation_Mode_Ctrl1.Data_Rates_below_30kbps = yes;

	RFM22B_Register._0x71_Modulation_Mode_Ctrl2._byte = 0x00; //0x2B;
	RFM22B_Register._0x71_Modulation_Mode_Ctrl2.Modulation_Type = GFSK;
	RFM22B_Register._0x71_Modulation_Mode_Ctrl2.Invert_TX_and_RX_Data = 1; // no idea
	RFM22B_Register._0x71_Modulation_Mode_Ctrl2.Modulation_Source = FIFO_mode; //
	//
	RFM22B_Register._0x72_Frequency_Deviation = 0xA0;
	// 0x73 // 0x74
	// 860 - 880 MHz Frequency Band
	// Setting hbsel = 1 will choose the frequency range from 480?930 MHz (high bands).
	RFM22B_Register._0x75_Frequency_Band_Select.High_Band_Select = 1;
	// Every increment of Frequency_Band_Select corresponds to a 20 MHz Band for the High Bands
	RFM22B_Register._0x75_Frequency_Band_Select.Frequency_Band_Select = 19;
	RFM22B_Register._0x75_Frequency_Band_Select.Side_Band_Select = 1;	// 0x73
	// 868 MHz
	RFM22B_Register._0x76_Nominal_Carrier_Frequ1 = 0x64; //
	RFM22B_Register._0x77_Nominal_Carrier_Frequ2 = 0x00; //

	// step size should be set first, and then the hopping channel, because the
    // frequency change occurs when the channel number is set
    // this is why we write Register _0x79 again after the burst write
	RFM22B_Register._0x79_Frequ_Hopping_Channel_Select = 13;	// 80 Kanäle
	RFM22B_Register._0x7A_Frequ_Hopping_Step_Size = 100/10;	// 100 kHz // is set in increments of 10 kHz
	// 0x7B // automatisch senden, wenn almost full
	RFM22B_Register._0x7C_TX_FIFO_Almost_Full_Threshold = Out_Command_Size_for_Kopter -1;
	//RFM22B_Register._0x7D_TX_FIFO_Almost_Empty_Threshold = 4;
	//RFM22B_Register._0x7E_RX_FIFO_Almost_Full_Threshold = RFM22B_Register._0x3E_Packet_Length -2;
	
        // alles wieder zurückschreiben
	RFM22B_burst_write (0x05, (byte*)&RFM22B_Register._0x05_Interrupt_Enablel1, RFM22B_Register_count -5);
	// channel number (see above)
	RFM22B_write(0x79, RFM22B_Register._0x79_Frequ_Hopping_Channel_Select);

} // RFM22B_config_for_PacketHandlerMode