not finished RFM12 Libary

rfm12.h

Committer:
dominik
Date:
2011-02-18
Revision:
0:a634c7e3ea44

File content as of revision 0:a634c7e3ea44:

#ifndef MBED_RFM12_C_H
#define MBED_RFM12_C_H

#include "string"
#include "lib_crc.h"
#include "mbed.h"

#define ADDR 0x00

//Defines der Statusregister und Interruptflags
#define RF_STATUS_RGITFFIT     (1<<15)
#define RF_STATUS_POR          (1<<14)
#define RF_STATUS_RGURFFOV     (1<<13)
#define RF_STATUS_WKUP         (1<<12)
#define RF_STATUS_EXT          (1<<11)
#define RF_STATUS_LBD          (1<<10)

enum status_t
{
    RX,
    TX,
    LISTEN
};

typedef union
{
    struct
    {
        uint8_t HI;
        uint8_t LO;
    }Byte;
    struct
    {
        uint16_t Port        : 6;
        uint16_t DestType    : 2;
        uint16_t Addresse    : 8;
    }Bit;
}header;

class RFM12
{
    public:
        RFM12(PinName irq, PinName sel, PinName sdi, PinName sdo, PinName sck);
        int RF_L4_Senden(char *buff, header h, char length);
        
    private:
        //Ports
        InterruptIn _irq;
        DigitalOut  _sel;
        DigitalOut  _sdi;
        DigitalIn   _sdo;
        DigitalOut  _sck;
     
        //Status des PHY Layers
        status_t status;
       
        //SendBuffer
        char *sbuffer;
        int sbufferlength;
        int sbufferi;
        //ReceiveBuffer
        char *rbuffer;
        int rbufferlength;
        int rbufferi;
        
        char *sbufferl3;
        char *rbufferl3;
        
        char *sbufferl4;
        char *rbufferl4;
               
        short RF_PHY_Write(short b);        
        void  RF_PHY_Send(char b);
        char  RF_PHY_Receive();
        
        void  RF_PHY_Interrupt();       
        
        int RF_PHY_Senden(char *buff, int length);
        int RF_PHY_Senden(string str);
        
        int RF_L3_Senden(char *buff, char length);
        int RF_L3_Empfangen(char *buff, char length);
        
        int RF_L4_Empfangen(char *buff, char length);
        
        int RF_P1_Empfangen(char *buff, char length);
        
        short crcadd(short crc, char b);
        
        char Hammi_EncodeHI(char b);
        char Hammi_EncodeLO(char b);
        
        char Hammi_DecodeHILO(char hi, char lo);
};

#endif