void rfm70_setRSSI( unsigned char val, unsigned char enabled ){
unsigned char j;
unsigned char WriteArr[ 12 ];
unsigned long mask=0xA67F0600;
if (enabled>0)
mask=0xA67F0200;
if (val>15)
val=15;
mask+=(val<<2);
rfm70_bank(1);
for( j = 0; j < 4; j++ ){
WriteArr[ j ]=( mask>>(8*(j) ) )&0xff;
}
rfm70_buffer_write( 5 ,WriteArr, 4 );
rfm70_bank(0);
}
val = RSSI Treshold for CD detect [0-15]
enabled = RSSI measurment [0-1]
Uses these 2 functions
void rfm70_bank( unsigned char b ){
unsigned char st = 0x80 & rfm70_register_read( RFM70_REG_STATUS );
if(( st &&( b == 0 )) || (( st == 0 ) && b )){
rfm70_register_write( RFM70_CMD_ACTIVATE, 0x53 );
}
}
void rfm70_buffer_write(
char reg,
const unsigned char *pBuf,
unsigned char length
){
unsigned char i;
if( reg < RFM70_CMD_WRITE_REG ){
reg |= RFM70_CMD_WRITE_REG;
}
RFM70_CSN( 0 ); // Set CSN low, init SPI tranaction
(void)rfm70_SPI_RW( reg ); // Select register to write tio write
for( i = 0; i < length; i++ ){ // write all bytes in buffer(*pBuf)
(void)rfm70_SPI_RW( *pBuf++ ); // write one byte
}
RFM70_CSN( 1 ); // Set CSN high again
}
Cheers
