added signal strength and output power (non-core) functions

+ bug fix
This commit is contained in:
fros4943 2006-10-05 14:44:43 +00:00
parent 2892edc2fa
commit f2dd0a96cd
2 changed files with 43 additions and 6 deletions

View File

@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: radio-arch.c,v 1.4 2006/10/05 12:09:40 fros4943 Exp $
* $Id: radio-arch.c,v 1.5 2006/10/05 14:44:43 fros4943 Exp $
*/
#include "dev/radio-arch.h"
@ -56,8 +56,20 @@ char simOutDataBuffer[UIP_BUFSIZE];
int simOutSize;
char simRadioHWOn = 1;
int simSignalStrength;
int simSignalStrength = 0;
char simPower = 100;
/*-----------------------------------------------------------------------------------*/
int
radio_sstrength(void)
{
return simSignalStrength;
}
/*-----------------------------------------------------------------------------------*/
void radio_set_txpower(unsigned char power) {
// 1 - 100: Number indicating output power
simPower = power;
}
/*-----------------------------------------------------------------------------------*/
static void
doInterfaceActionsBeforeTick(void)
@ -85,6 +97,8 @@ doInterfaceActionsBeforeTick(void)
return;
}
// ** Good place to add explicit manchester/gcr-encoding
// Hand over new packet to uIP
uip_len = simInSize;
memcpy(&uip_buf[UIP_LLH_LEN], &simInDataBuffer[0], simInSize);
@ -120,8 +134,7 @@ simDoSend(void)
return UIP_FW_ZEROLEN;
}
// - Initiate transmission -
simTransmitting = 1;
// ** Good place to add explicit manchester/gcr-decoding
// Copy packet data to temporary storage
memcpy(&simOutDataBuffer[0], &uip_buf[UIP_LLH_LEN], uip_len);
@ -131,7 +144,7 @@ simDoSend(void)
while (simReceiving) {
cooja_mt_yield();
}
// Busy-wait until ether is ready, or die (MAC imitation)
int retries=0;
/* while (retries < 5 && simSignalStrength > -80) {
@ -144,6 +157,10 @@ simDoSend(void)
return UIP_FW_DROPPED;
}
*/
// - Initiate transmission -
simTransmitting = 1;
// Busy-wait while transmitting
while (simTransmitting) {
cooja_mt_yield();

View File

@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: ContikiRadio.java,v 1.6 2006/10/05 12:27:30 fros4943 Exp $
* $Id: ContikiRadio.java,v 1.7 2006/10/05 14:46:16 fros4943 Exp $
*/
package se.sics.cooja.contikimote.interfaces;
@ -62,6 +62,7 @@ import se.sics.cooja.interfaces.Radio;
* <p>
* <li>char simRadioHWOn (radio hardware status (on/off))
* <li>int simSignalStrength (heard radio signal strength)
* <li>char simPower (number indicating power output)
* </ul>
* <p>
* Dependency core interfaces are:
@ -103,6 +104,8 @@ public class ContikiRadio extends Radio implements ContikiMoteInterface {
private RadioEvent lastEvent = RadioEvent.UNKNOWN;
private int lastEventTime = 0;
private int oldOutputPowerIndicator = -1;
/**
* Creates an interface to the radio at mote.
@ -261,6 +264,16 @@ public class ContikiRadio extends Radio implements ContikiMoteInterface {
return interferenceEndTime >= myMote.getSimulation().getSimulationTime();
}
public double getCurrentOutputPower() {
// TODO Implement method
logger.warn("Not implemeted, always returning 1.5 dBm");
return 1.5;
}
public int getCurrentOutputPowerIndicator() {
return (int) myMoteMemory.getByteValueOf("simPower");
}
public double getCurrentSignalStrength() {
return myMoteMemory.getIntValueOf("simSignalStrength");
}
@ -303,6 +316,13 @@ public class ContikiRadio extends Radio implements ContikiMoteInterface {
}
myEnergyConsumption = energyListeningRadioPerTick;
// Check if radio output power changed
if (myMoteMemory.getByteValueOf("simPower") != oldOutputPowerIndicator) {
oldOutputPowerIndicator = myMoteMemory.getByteValueOf("simPower");
this.setChanged();
this.notifyObservers();
}
// Are we transmitting but should stop?
if (transmitting && myMote.getSimulation().getSimulationTime() >= transmissionEndTime) {
myMoteMemory.setByteValueOf("simTransmitting", (byte) 0);