not finished RFM12 Libary

Committer:
dominik
Date:
Fri Feb 18 20:07:12 2011 +0000
Revision:
0:a634c7e3ea44
not finished

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dominik 0:a634c7e3ea44 1 #include "rfm12.h"
dominik 0:a634c7e3ea44 2
dominik 0:a634c7e3ea44 3 char HammiEncode[16] = {0x15,0x02,0x49,0x5E,0x64,0x73,0x38,0x2F,0xD0,0xC7,0x8C,0x9B,0xA1,0xB6,0xFD,0xEA};
dominik 0:a634c7e3ea44 4 char HammiDecode[256] =
dominik 0:a634c7e3ea44 5 {
dominik 0:a634c7e3ea44 6 0x01,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x02,0x02,0x01,0x03,0x0A,0x02,0x03,0x07,
dominik 0:a634c7e3ea44 7 0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x00,0x06,0x02,0x03,0x0B,0x02,0x00,0x03,0x03,
dominik 0:a634c7e3ea44 8 0x04,0x0C,0x01,0x05,0x04,0x04,0x05,0x07,0x06,0x06,0x07,0x07,0x06,0x07,0x07,0x07,
dominik 0:a634c7e3ea44 9 0x06,0x04,0x05,0x05,0x04,0x00,0x0D,0x05,0x06,0x06,0x06,0x07,0x06,0x06,0x07,0x07,
dominik 0:a634c7e3ea44 10 0x00,0x02,0x01,0x01,0x04,0x00,0x01,0x09,0x02,0x02,0x03,0x02,0x02,0x02,0x03,0x03,
dominik 0:a634c7e3ea44 11 0x08,0x00,0x01,0x05,0x00,0x00,0x03,0x01,0x02,0x02,0x03,0x03,0x03,0x02,0x03,0x03,
dominik 0:a634c7e3ea44 12 0x04,0x04,0x05,0x05,0x04,0x04,0x04,0x05,0x06,0x02,0x0F,0x07,0x04,0x06,0x07,0x07,
dominik 0:a634c7e3ea44 13 0x04,0x05,0x05,0x05,0x04,0x04,0x05,0x05,0x06,0x06,0x07,0x05,0x06,0x0E,0x03,0x07,
dominik 0:a634c7e3ea44 14 0x08,0x0C,0x01,0x09,0x0A,0x08,0x09,0x09,0x0A,0x0A,0x0B,0x0B,0x0A,0x0A,0x0A,0x0B,
dominik 0:a634c7e3ea44 15 0x08,0x08,0x09,0x0B,0x08,0x00,0x0D,0x09,0x0A,0x0B,0x0B,0x0B,0x0A,0x0A,0x0B,0x0B,
dominik 0:a634c7e3ea44 16 0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0D,0x0E,0x0C,0x0F,0x0F,0x0A,0x0E,0x0F,0x07,
dominik 0:a634c7e3ea44 17 0x0C,0x0C,0x0D,0x0D,0x0D,0x0C,0x0D,0x0D,0x06,0x0E,0x0F,0x0B,0x0E,0x0E,0x0D,0x0F,
dominik 0:a634c7e3ea44 18 0x08,0x08,0x09,0x09,0x08,0x09,0x09,0x09,0x0A,0x02,0x0F,0x0B,0x0A,0x0A,0x0B,0x09,
dominik 0:a634c7e3ea44 19 0x08,0x08,0x08,0x09,0x08,0x08,0x09,0x09,0x08,0x0A,0x0B,0x0B,0x0A,0x0E,0x03,0x0B,
dominik 0:a634c7e3ea44 20 0x0C,0x0C,0x0F,0x0D,0x04,0x0C,0x0D,0x09,0x0F,0x0E,0x0F,0x0F,0x0E,0x0E,0x0F,0x0F,
dominik 0:a634c7e3ea44 21 0x08,0x0C,0x0D,0x05,0x0C,0x0E,0x0D,0x0D,0x0E,0x0E,0x0F,0x0F,0x0E,0x0E,0x0F,0x0E
dominik 0:a634c7e3ea44 22 };
dominik 0:a634c7e3ea44 23
dominik 0:a634c7e3ea44 24 RFM12::RFM12(PinName irq, PinName sel, PinName sdi, PinName sdo, PinName sck) : _irq(irq), _sel(sel), _sdi(sdi), _sdo(sdo), _sck(sck)
dominik 0:a634c7e3ea44 25 {
dominik 0:a634c7e3ea44 26 _irq.mode(PullNone);
dominik 0:a634c7e3ea44 27 _irq.fall(this, &RFM12::RF_PHY_Interrupt);
dominik 0:a634c7e3ea44 28
dominik 0:a634c7e3ea44 29 _sel = 1;
dominik 0:a634c7e3ea44 30 _sdi = 1;
dominik 0:a634c7e3ea44 31 _sck = 0;
dominik 0:a634c7e3ea44 32
dominik 0:a634c7e3ea44 33 //Initialisierung des Modules
dominik 0:a634c7e3ea44 34 RF_PHY_Write(0x80D8);
dominik 0:a634c7e3ea44 35 RF_PHY_Write(0x8201);
dominik 0:a634c7e3ea44 36 RF_PHY_Write(0xA640);
dominik 0:a634c7e3ea44 37 RF_PHY_Write(0xC647);
dominik 0:a634c7e3ea44 38 RF_PHY_Write(0x94A0);
dominik 0:a634c7e3ea44 39 RF_PHY_Write(0xC2AC);
dominik 0:a634c7e3ea44 40 RF_PHY_Write(0xCA81);
dominik 0:a634c7e3ea44 41 RF_PHY_Write(0xC483);
dominik 0:a634c7e3ea44 42 RF_PHY_Write(0x9850);
dominik 0:a634c7e3ea44 43 RF_PHY_Write(0xE000);
dominik 0:a634c7e3ea44 44 RF_PHY_Write(0xC800);
dominik 0:a634c7e3ea44 45 RF_PHY_Write(0xC040);
dominik 0:a634c7e3ea44 46
dominik 0:a634c7e3ea44 47 //Auf Listen Modus schalten
dominik 0:a634c7e3ea44 48 RF_PHY_Write(0x82C8);
dominik 0:a634c7e3ea44 49 RF_PHY_Write(0xCA81);
dominik 0:a634c7e3ea44 50 RF_PHY_Write(0xCA83);
dominik 0:a634c7e3ea44 51 RF_PHY_Write(0x0000);
dominik 0:a634c7e3ea44 52 RF_PHY_Write(0xB000);
dominik 0:a634c7e3ea44 53
dominik 0:a634c7e3ea44 54 wait(0.001);
dominik 0:a634c7e3ea44 55
dominik 0:a634c7e3ea44 56 status = LISTEN;
dominik 0:a634c7e3ea44 57 }
dominik 0:a634c7e3ea44 58
dominik 0:a634c7e3ea44 59 short RFM12::RF_PHY_Write(short b)
dominik 0:a634c7e3ea44 60 {
dominik 0:a634c7e3ea44 61 char i;
dominik 0:a634c7e3ea44 62 short temp = 0;
dominik 0:a634c7e3ea44 63
dominik 0:a634c7e3ea44 64 _sck = 0;
dominik 0:a634c7e3ea44 65 _sel = 0;
dominik 0:a634c7e3ea44 66
dominik 0:a634c7e3ea44 67 for(i = 0; i < 16; i++)
dominik 0:a634c7e3ea44 68 {
dominik 0:a634c7e3ea44 69 if(b & 0x8000)
dominik 0:a634c7e3ea44 70 {
dominik 0:a634c7e3ea44 71 _sdi = 1;
dominik 0:a634c7e3ea44 72 }
dominik 0:a634c7e3ea44 73 else
dominik 0:a634c7e3ea44 74 {
dominik 0:a634c7e3ea44 75 _sdi = 0;
dominik 0:a634c7e3ea44 76 }
dominik 0:a634c7e3ea44 77
dominik 0:a634c7e3ea44 78 _sck = 1;
dominik 0:a634c7e3ea44 79 temp <<= 1;
dominik 0:a634c7e3ea44 80
dominik 0:a634c7e3ea44 81 if(_sdo)
dominik 0:a634c7e3ea44 82 {
dominik 0:a634c7e3ea44 83 temp |= 0x0001;
dominik 0:a634c7e3ea44 84 }
dominik 0:a634c7e3ea44 85
dominik 0:a634c7e3ea44 86 _sck = 0;
dominik 0:a634c7e3ea44 87 b <<= 1;
dominik 0:a634c7e3ea44 88 }
dominik 0:a634c7e3ea44 89
dominik 0:a634c7e3ea44 90 _sel = 1;
dominik 0:a634c7e3ea44 91
dominik 0:a634c7e3ea44 92 return temp;
dominik 0:a634c7e3ea44 93 }
dominik 0:a634c7e3ea44 94
dominik 0:a634c7e3ea44 95 void RFM12::RF_PHY_Interrupt()
dominik 0:a634c7e3ea44 96 {
dominik 0:a634c7e3ea44 97 short stat = RF_PHY_Write(0x0000);
dominik 0:a634c7e3ea44 98 if(stat & RF_STATUS_RGITFFIT)
dominik 0:a634c7e3ea44 99 {
dominik 0:a634c7e3ea44 100 switch(status)
dominik 0:a634c7e3ea44 101 {
dominik 0:a634c7e3ea44 102 case TX:
dominik 0:a634c7e3ea44 103 if(sbufferi < sbufferlength)
dominik 0:a634c7e3ea44 104 {
dominik 0:a634c7e3ea44 105 RF_PHY_Send(sbuffer[sbufferi]);
dominik 0:a634c7e3ea44 106 sbufferi++;
dominik 0:a634c7e3ea44 107 }
dominik 0:a634c7e3ea44 108 else
dominik 0:a634c7e3ea44 109 {
dominik 0:a634c7e3ea44 110 RF_PHY_Write(0x82C8);
dominik 0:a634c7e3ea44 111 RF_PHY_Write(0xCA81);
dominik 0:a634c7e3ea44 112 RF_PHY_Write(0xCA83);
dominik 0:a634c7e3ea44 113 RF_PHY_Write(0x0000);
dominik 0:a634c7e3ea44 114 RF_PHY_Write(0xB000);
dominik 0:a634c7e3ea44 115
dominik 0:a634c7e3ea44 116 status = LISTEN;
dominik 0:a634c7e3ea44 117 sbufferi = 0;
dominik 0:a634c7e3ea44 118 sbufferlength = 0;
dominik 0:a634c7e3ea44 119
dominik 0:a634c7e3ea44 120 delete [] sbuffer;
dominik 0:a634c7e3ea44 121 }
dominik 0:a634c7e3ea44 122 break;
dominik 0:a634c7e3ea44 123
dominik 0:a634c7e3ea44 124 case LISTEN:
dominik 0:a634c7e3ea44 125 short tmp;
dominik 0:a634c7e3ea44 126 tmp = RF_PHY_Receive();
dominik 0:a634c7e3ea44 127 rbuffer = new char[tmp];
dominik 0:a634c7e3ea44 128 rbufferi = 0;
dominik 0:a634c7e3ea44 129 rbufferlength = tmp;
dominik 0:a634c7e3ea44 130 status = RX;
dominik 0:a634c7e3ea44 131 break;
dominik 0:a634c7e3ea44 132
dominik 0:a634c7e3ea44 133 case RX:
dominik 0:a634c7e3ea44 134 if(rbufferi < rbufferlength)
dominik 0:a634c7e3ea44 135 {
dominik 0:a634c7e3ea44 136 rbuffer[rbufferi] = RF_PHY_Receive();
dominik 0:a634c7e3ea44 137 rbufferi++;
dominik 0:a634c7e3ea44 138 }
dominik 0:a634c7e3ea44 139 else
dominik 0:a634c7e3ea44 140 {
dominik 0:a634c7e3ea44 141
dominik 0:a634c7e3ea44 142 //Auf Listen Modus schalten
dominik 0:a634c7e3ea44 143 RF_PHY_Write(0x82C8);
dominik 0:a634c7e3ea44 144 RF_PHY_Write(0xCA81);
dominik 0:a634c7e3ea44 145 RF_PHY_Write(0xCA83);
dominik 0:a634c7e3ea44 146 RF_PHY_Write(0x0000);
dominik 0:a634c7e3ea44 147 RF_PHY_Write(0xB000);
dominik 0:a634c7e3ea44 148
dominik 0:a634c7e3ea44 149 status = LISTEN;
dominik 0:a634c7e3ea44 150
dominik 0:a634c7e3ea44 151 //Weitergabe an Layer 3
dominik 0:a634c7e3ea44 152 RF_L3_Empfangen(rbuffer, rbufferlength);
dominik 0:a634c7e3ea44 153
dominik 0:a634c7e3ea44 154 rbufferi = 0;
dominik 0:a634c7e3ea44 155 rbufferlength = 0;
dominik 0:a634c7e3ea44 156 }
dominik 0:a634c7e3ea44 157 break;
dominik 0:a634c7e3ea44 158 }
dominik 0:a634c7e3ea44 159 }
dominik 0:a634c7e3ea44 160 }
dominik 0:a634c7e3ea44 161
dominik 0:a634c7e3ea44 162 void RFM12::RF_PHY_Send(char b)
dominik 0:a634c7e3ea44 163 {
dominik 0:a634c7e3ea44 164 RF_PHY_Write(0xB800 + b);
dominik 0:a634c7e3ea44 165 }
dominik 0:a634c7e3ea44 166
dominik 0:a634c7e3ea44 167 char RFM12::RF_PHY_Receive()
dominik 0:a634c7e3ea44 168 {
dominik 0:a634c7e3ea44 169 short tmp;
dominik 0:a634c7e3ea44 170 tmp = RF_PHY_Write(0xB000);
dominik 0:a634c7e3ea44 171 return (tmp & 0x00FF);
dominik 0:a634c7e3ea44 172 }
dominik 0:a634c7e3ea44 173
dominik 0:a634c7e3ea44 174 int RFM12::RF_PHY_Senden(char *buff, int length)
dominik 0:a634c7e3ea44 175 {
dominik 0:a634c7e3ea44 176 if(status != LISTEN)
dominik 0:a634c7e3ea44 177 return -1;
dominik 0:a634c7e3ea44 178
dominik 0:a634c7e3ea44 179 sbuffer = new char[length + 9];
dominik 0:a634c7e3ea44 180
dominik 0:a634c7e3ea44 181 sbuffer[0] = 0xAA; //Preamble
dominik 0:a634c7e3ea44 182 sbuffer[1] = 0xAA;
dominik 0:a634c7e3ea44 183 sbuffer[2] = 0xAA;
dominik 0:a634c7e3ea44 184 sbuffer[3] = 0x2D; //Sync HI
dominik 0:a634c7e3ea44 185 sbuffer[4] = 0xD4; //Sync LO
dominik 0:a634c7e3ea44 186
dominik 0:a634c7e3ea44 187 sbuffer[5] = length;
dominik 0:a634c7e3ea44 188
dominik 0:a634c7e3ea44 189 memcpy(sbuffer + 6, buff, length);
dominik 0:a634c7e3ea44 190
dominik 0:a634c7e3ea44 191 delete [] sbufferl3;
dominik 0:a634c7e3ea44 192
dominik 0:a634c7e3ea44 193 sbuffer[length + 6] = 0xAA;
dominik 0:a634c7e3ea44 194 sbuffer[length + 7] = 0xAA;
dominik 0:a634c7e3ea44 195 sbuffer[length + 8] = 0xAA;
dominik 0:a634c7e3ea44 196
dominik 0:a634c7e3ea44 197 sbufferlength = length + 9;
dominik 0:a634c7e3ea44 198 sbufferi = 0;
dominik 0:a634c7e3ea44 199 status = TX;
dominik 0:a634c7e3ea44 200
dominik 0:a634c7e3ea44 201 //In Sendemodus schalten...
dominik 0:a634c7e3ea44 202 RF_PHY_Write(0x0000);
dominik 0:a634c7e3ea44 203 RF_PHY_Write(0x8239);
dominik 0:a634c7e3ea44 204
dominik 0:a634c7e3ea44 205 return 0;
dominik 0:a634c7e3ea44 206 }
dominik 0:a634c7e3ea44 207
dominik 0:a634c7e3ea44 208 int RFM12::RF_L3_Senden(char *buff, char length)
dominik 0:a634c7e3ea44 209 {
dominik 0:a634c7e3ea44 210 int i;
dominik 0:a634c7e3ea44 211 short crc = 0;
dominik 0:a634c7e3ea44 212
dominik 0:a634c7e3ea44 213 sbufferl3 = new char((length + 2)*2);
dominik 0:a634c7e3ea44 214
dominik 0:a634c7e3ea44 215 for(i = 0; i < length; i++)
dominik 0:a634c7e3ea44 216 {
dominik 0:a634c7e3ea44 217 sbufferl3[i*2] = Hammi_EncodeHI(buff[i]);
dominik 0:a634c7e3ea44 218 sbufferl3[i*2 + 1] = Hammi_EncodeLO(buff[i]);
dominik 0:a634c7e3ea44 219 crc = crcadd(crc, buff[i]);
dominik 0:a634c7e3ea44 220 }
dominik 0:a634c7e3ea44 221
dominik 0:a634c7e3ea44 222 delete [] sbufferl4;
dominik 0:a634c7e3ea44 223
dominik 0:a634c7e3ea44 224 sbufferl3[2*length] = Hammi_EncodeHI(crc >> 8);
dominik 0:a634c7e3ea44 225 sbufferl3[2*length + 1] = Hammi_EncodeLO(crc >> 8);
dominik 0:a634c7e3ea44 226 sbufferl3[2*length + 2] = Hammi_EncodeHI(crc & 0x00FF);
dominik 0:a634c7e3ea44 227 sbufferl3[2*length + 3] = Hammi_EncodeLO(crc & 0x00FF);
dominik 0:a634c7e3ea44 228
dominik 0:a634c7e3ea44 229 RF_PHY_Senden(sbufferl3, (length+2)*2);
dominik 0:a634c7e3ea44 230
dominik 0:a634c7e3ea44 231 return 0;
dominik 0:a634c7e3ea44 232 }
dominik 0:a634c7e3ea44 233
dominik 0:a634c7e3ea44 234 int RFM12::RF_L3_Empfangen(char *buff, char length)
dominik 0:a634c7e3ea44 235 {
dominik 0:a634c7e3ea44 236 char i;
dominik 0:a634c7e3ea44 237 short crc = 0;
dominik 0:a634c7e3ea44 238
dominik 0:a634c7e3ea44 239 rbufferl3 = new char(length/2 - 2);
dominik 0:a634c7e3ea44 240
dominik 0:a634c7e3ea44 241 for(i = 0; i < (length/2 - 2); i++)
dominik 0:a634c7e3ea44 242 {
dominik 0:a634c7e3ea44 243 rbufferl3[i] = Hammi_DecodeHILO(buff[i*2], buff[i*2+1]);
dominik 0:a634c7e3ea44 244 crc = crcadd(crc, rbufferl3[i]);
dominik 0:a634c7e3ea44 245 }
dominik 0:a634c7e3ea44 246
dominik 0:a634c7e3ea44 247 crc = crcadd(crc, Hammi_DecodeHILO(buff[length - 4], buff[length - 3]));
dominik 0:a634c7e3ea44 248 crc = crcadd(crc, Hammi_DecodeHILO(buff[length - 2], buff[length - 1]));
dominik 0:a634c7e3ea44 249
dominik 0:a634c7e3ea44 250 delete [] rbuffer;
dominik 0:a634c7e3ea44 251
dominik 0:a634c7e3ea44 252 if(crc == 0)
dominik 0:a634c7e3ea44 253 {
dominik 0:a634c7e3ea44 254 RF_L4_Empfangen(rbufferl3, (length/2 - 2));
dominik 0:a634c7e3ea44 255
dominik 0:a634c7e3ea44 256 return 0;
dominik 0:a634c7e3ea44 257 }
dominik 0:a634c7e3ea44 258 else //Paket verwerfen
dominik 0:a634c7e3ea44 259 {
dominik 0:a634c7e3ea44 260 delete [] rbufferl3;
dominik 0:a634c7e3ea44 261 return -1;
dominik 0:a634c7e3ea44 262 }
dominik 0:a634c7e3ea44 263 }
dominik 0:a634c7e3ea44 264
dominik 0:a634c7e3ea44 265 int RFM12::RF_L4_Senden(char *buff, header h, char length)
dominik 0:a634c7e3ea44 266 {
dominik 0:a634c7e3ea44 267 char i;
dominik 0:a634c7e3ea44 268
dominik 0:a634c7e3ea44 269 sbufferl4 = new char(length + 2);
dominik 0:a634c7e3ea44 270
dominik 0:a634c7e3ea44 271 sbufferl4[0] = h.Byte.HI;
dominik 0:a634c7e3ea44 272 sbufferl4[1] = h.Byte.LO;
dominik 0:a634c7e3ea44 273
dominik 0:a634c7e3ea44 274 for(i = 0; i < length; i++)
dominik 0:a634c7e3ea44 275 {
dominik 0:a634c7e3ea44 276 sbufferl4[i+2] = buff[i];
dominik 0:a634c7e3ea44 277 }
dominik 0:a634c7e3ea44 278
dominik 0:a634c7e3ea44 279 RF_L3_Senden(sbufferl4, length + 2);
dominik 0:a634c7e3ea44 280
dominik 0:a634c7e3ea44 281 return 0;
dominik 0:a634c7e3ea44 282 }
dominik 0:a634c7e3ea44 283
dominik 0:a634c7e3ea44 284 int RFM12::RF_L4_Empfangen(char *buff, char length)
dominik 0:a634c7e3ea44 285 {
dominik 0:a634c7e3ea44 286 uint8_t i;
dominik 0:a634c7e3ea44 287 uint8_t valid = 0;
dominik 0:a634c7e3ea44 288 header h;
dominik 0:a634c7e3ea44 289
dominik 0:a634c7e3ea44 290 rbufferl4 = new char(length - 2);
dominik 0:a634c7e3ea44 291
dominik 0:a634c7e3ea44 292 for(i = 0; i < length - 2; i++)
dominik 0:a634c7e3ea44 293 {
dominik 0:a634c7e3ea44 294 rbufferl4[i] = buff[i+2];
dominik 0:a634c7e3ea44 295 }
dominik 0:a634c7e3ea44 296
dominik 0:a634c7e3ea44 297 h.Byte.HI = buff[0];
dominik 0:a634c7e3ea44 298 h.Byte.LO = buff[1];
dominik 0:a634c7e3ea44 299
dominik 0:a634c7e3ea44 300 delete [] rbufferl3;
dominik 0:a634c7e3ea44 301
dominik 0:a634c7e3ea44 302 //Broadcast
dominik 0:a634c7e3ea44 303 if(h.Bit.DestType == 0)
dominik 0:a634c7e3ea44 304 {
dominik 0:a634c7e3ea44 305 valid = 1;
dominik 0:a634c7e3ea44 306 }
dominik 0:a634c7e3ea44 307 if(h.Bit.DestType == 1)
dominik 0:a634c7e3ea44 308 {
dominik 0:a634c7e3ea44 309 if(h.Bit.Addresse == ADDR)
dominik 0:a634c7e3ea44 310 {
dominik 0:a634c7e3ea44 311 valid = 1;
dominik 0:a634c7e3ea44 312 }
dominik 0:a634c7e3ea44 313 }
dominik 0:a634c7e3ea44 314 if(h.Bit.DestType == 2)
dominik 0:a634c7e3ea44 315 {
dominik 0:a634c7e3ea44 316 //TODO: Gruppennummern durchlaufen...
dominik 0:a634c7e3ea44 317 //if(h.Bit.Addresse == 0x01) valid = 1;
dominik 0:a634c7e3ea44 318 //if(h.Bit.Addresse == 0x02) valid = 1;
dominik 0:a634c7e3ea44 319 }
dominik 0:a634c7e3ea44 320 if(h.Bit.DestType == 3)
dominik 0:a634c7e3ea44 321 {
dominik 0:a634c7e3ea44 322 //TODO: Typen durchlaufen...
dominik 0:a634c7e3ea44 323 }
dominik 0:a634c7e3ea44 324
dominik 0:a634c7e3ea44 325 //Je nach Port richtige "Anwendung" aufrufen...
dominik 0:a634c7e3ea44 326 if(valid)
dominik 0:a634c7e3ea44 327 {
dominik 0:a634c7e3ea44 328 if(h.Bit.Port == 1)
dominik 0:a634c7e3ea44 329 {
dominik 0:a634c7e3ea44 330 RF_P1_Empfangen(rbufferl4, length - 2);
dominik 0:a634c7e3ea44 331 }
dominik 0:a634c7e3ea44 332 }
dominik 0:a634c7e3ea44 333 else //Paket verwerfen
dominik 0:a634c7e3ea44 334 {
dominik 0:a634c7e3ea44 335 delete [] rbufferl4;
dominik 0:a634c7e3ea44 336 return -1;
dominik 0:a634c7e3ea44 337 }
dominik 0:a634c7e3ea44 338
dominik 0:a634c7e3ea44 339 return 0;
dominik 0:a634c7e3ea44 340 }
dominik 0:a634c7e3ea44 341
dominik 0:a634c7e3ea44 342 int RFM12::RF_P1_Empfangen(char *buff, char length)
dominik 0:a634c7e3ea44 343 {
dominik 0:a634c7e3ea44 344 delete [] rbufferl4;
dominik 0:a634c7e3ea44 345
dominik 0:a634c7e3ea44 346 return 0;
dominik 0:a634c7e3ea44 347 }
dominik 0:a634c7e3ea44 348
dominik 0:a634c7e3ea44 349 short RFM12::crcadd(short crc, char b)
dominik 0:a634c7e3ea44 350 {
dominik 0:a634c7e3ea44 351
dominik 0:a634c7e3ea44 352 return update_crc16_1021(crc, b);
dominik 0:a634c7e3ea44 353 }
dominik 0:a634c7e3ea44 354
dominik 0:a634c7e3ea44 355 char RFM12::Hammi_EncodeHI(char b)
dominik 0:a634c7e3ea44 356 {
dominik 0:a634c7e3ea44 357 return HammiEncode[b>>4];
dominik 0:a634c7e3ea44 358 }
dominik 0:a634c7e3ea44 359
dominik 0:a634c7e3ea44 360 char RFM12::Hammi_EncodeLO(char b)
dominik 0:a634c7e3ea44 361 {
dominik 0:a634c7e3ea44 362 return HammiEncode[b & 0x0F];
dominik 0:a634c7e3ea44 363 }
dominik 0:a634c7e3ea44 364
dominik 0:a634c7e3ea44 365 char RFM12::Hammi_DecodeHILO(char hi, char lo)
dominik 0:a634c7e3ea44 366 {
dominik 0:a634c7e3ea44 367 char b;
dominik 0:a634c7e3ea44 368
dominik 0:a634c7e3ea44 369 b = (HammiDecode[hi] << 4);
dominik 0:a634c7e3ea44 370 b+= HammiDecode[lo];
dominik 0:a634c7e3ea44 371
dominik 0:a634c7e3ea44 372 return b;
dominik 0:a634c7e3ea44 373 }
dominik 0:a634c7e3ea44 374
dominik 0:a634c7e3ea44 375 /*
dominik 0:a634c7e3ea44 376 int RFM12::RF_PHY_Senden(string str)
dominik 0:a634c7e3ea44 377 {
dominik 0:a634c7e3ea44 378 if(status != LISTEN)
dominik 0:a634c7e3ea44 379 return -1;
dominik 0:a634c7e3ea44 380
dominik 0:a634c7e3ea44 381 char *s;
dominik 0:a634c7e3ea44 382 s = new char[str.size() + 1];
dominik 0:a634c7e3ea44 383
dominik 0:a634c7e3ea44 384 strcpy(s, str.c_str());
dominik 0:a634c7e3ea44 385
dominik 0:a634c7e3ea44 386 RF_PHY_Senden(s, (int)str.size());
dominik 0:a634c7e3ea44 387
dominik 0:a634c7e3ea44 388 delete [] s;
dominik 0:a634c7e3ea44 389
dominik 0:a634c7e3ea44 390 return 0;
dominik 0:a634c7e3ea44 391 }
dominik 0:a634c7e3ea44 392 */